From abccdf8cf4489c210fc2dd76f13e20ae85cdb33c Mon Sep 17 00:00:00 2001 From: Tom Wambsgans Date: Fri, 27 Mar 2026 23:33:42 +0100 Subject: [PATCH 1/6] poseidon2 -> poseidon1 --- Cargo.lock | 66 +- Cargo.toml | 18 +- crates/backend/fiat-shamir/src/verifier.rs | 4 +- crates/backend/fiat-shamir/tests/grinding.rs | 20 +- crates/backend/field/src/field.rs | 2 +- .../koala-bear/src/aarch64_neon/mod.rs | 1 - .../koala-bear/src/aarch64_neon/poseidon2.rs | 99 -- .../koala-bear/src/benchmark_poseidons.rs | 39 + crates/backend/koala-bear/src/lib.rs | 26 +- .../src/monty_31/aarch64_neon/mod.rs | 4 +- .../src/monty_31/aarch64_neon/packing.rs | 14 +- .../src/monty_31/aarch64_neon/poseidon2.rs | 520 --------- .../monty_31/aarch64_neon/poseidon_helpers.rs | 58 + .../src/monty_31/aarch64_neon/utils.rs | 17 +- crates/backend/koala-bear/src/monty_31/mod.rs | 2 - .../koala-bear/src/monty_31/no_packing/mod.rs | 4 - .../src/monty_31/no_packing/poseidon2.rs | 48 - .../src/monty_31/poseidon2_monty.rs | 127 -- .../src/monty_31/x86_64_avx2/mod.rs | 4 +- .../src/monty_31/x86_64_avx2/packing.rs | 2 +- .../src/monty_31/x86_64_avx2/poseidon2.rs | 463 -------- .../monty_31/x86_64_avx2/poseidon_helpers.rs | 96 ++ .../src/monty_31/x86_64_avx512/mod.rs | 4 +- .../src/monty_31/x86_64_avx512/packing.rs | 2 +- .../src/monty_31/x86_64_avx512/poseidon2.rs | 470 -------- .../x86_64_avx512/poseidon_helpers.rs | 96 ++ .../koala-bear/src/poseidon1_koalabear_16.rs | 1037 +++++++++++++++++ .../koala-bear/src/poseidon2/external.rs | 329 ------ .../koala-bear/src/poseidon2/generic.rs | 42 - .../koala-bear/src/poseidon2/internal.rs | 81 -- .../backend/koala-bear/src/poseidon2/mod.rs | 105 -- .../koala-bear/src/poseidon2/round_numbers.rs | 82 -- .../koala-bear/src/poseidon2_koalabear.rs | 292 ----- .../src/quintic_extension/packed_extension.rs | 66 +- .../backend/koala-bear/src/x86_64_avx2/mod.rs | 1 - .../koala-bear/src/x86_64_avx2/poseidon2.rs | 198 ---- .../koala-bear/src/x86_64_avx512/mod.rs | 1 - .../koala-bear/src/x86_64_avx512/poseidon2.rs | 128 -- crates/backend/symetric/src/permutation.rs | 13 +- crates/backend/utils/src/lib.rs | 16 + crates/lean_compiler/Cargo.toml | 3 - crates/lean_compiler/snark_lib.py | 11 +- crates/lean_compiler/src/grammar.pest | 2 + crates/lean_compiler/src/lang.rs | 7 +- .../src/parser/parsers/expression.rs | 1 + crates/lean_compiler/zkDSL.md | 11 +- crates/lean_prover/src/lib.rs | 5 +- crates/lean_prover/src/trace_gen.rs | 11 +- crates/lean_vm/Cargo.toml | 6 +- crates/lean_vm/src/core/constants.rs | 2 +- crates/lean_vm/src/diagnostics/exec_result.rs | 5 +- crates/lean_vm/src/diagnostics/profiler.rs | 3 +- crates/lean_vm/src/isa/hint.rs | 36 +- crates/lean_vm/src/tables/extension_op/air.rs | 11 +- .../lean_vm/src/tables/extension_op/exec.rs | 11 +- crates/lean_vm/src/tables/extension_op/mod.rs | 23 +- crates/lean_vm/src/tables/poseidon_16/mod.rs | 224 ++-- .../src/tables/poseidon_16/trace_gen.rs | 88 +- crates/lean_vm/src/tables/table_trait.rs | 4 - crates/rec_aggregation/recursion.py | 2 +- crates/rec_aggregation/src/benchmark.rs | 58 +- crates/rec_aggregation/src/compilation.rs | 2 +- crates/rec_aggregation/src/lib.rs | 52 +- crates/rec_aggregation/utils.py | 27 +- crates/sub_protocols/src/stacked_pcs.rs | 6 +- crates/utils/src/display.rs | 15 - crates/utils/src/lib.rs | 7 +- .../utils/src/{poseidon2.rs => poseidon.rs} | 17 +- crates/whir/src/merkle.rs | 6 +- crates/whir/tests/run_whir.rs | 4 +- crates/xmss/Cargo.toml | 2 + crates/xmss/src/signers_cache.rs | 186 +-- crates/xmss/src/xmss.rs | 14 +- crates/xmss/test_data/benchmark_signers.json | 1 - crates/xmss/tests/xmss_tests.rs | 17 +- misc/bibliography.bib | 9 + misc/minimal_zkVM.tex | 10 +- src/lib.rs | 59 - src/main.rs | 4 +- src/prove_poseidons.rs | 11 +- tests/test_lean_multisig.rs | 47 + 81 files changed, 2058 insertions(+), 3559 deletions(-) delete mode 100644 crates/backend/koala-bear/src/aarch64_neon/poseidon2.rs create mode 100644 crates/backend/koala-bear/src/benchmark_poseidons.rs delete mode 100644 crates/backend/koala-bear/src/monty_31/aarch64_neon/poseidon2.rs create mode 100644 crates/backend/koala-bear/src/monty_31/aarch64_neon/poseidon_helpers.rs delete mode 100644 crates/backend/koala-bear/src/monty_31/no_packing/poseidon2.rs delete mode 100644 crates/backend/koala-bear/src/monty_31/poseidon2_monty.rs delete mode 100644 crates/backend/koala-bear/src/monty_31/x86_64_avx2/poseidon2.rs create mode 100644 crates/backend/koala-bear/src/monty_31/x86_64_avx2/poseidon_helpers.rs delete mode 100644 crates/backend/koala-bear/src/monty_31/x86_64_avx512/poseidon2.rs create mode 100644 crates/backend/koala-bear/src/monty_31/x86_64_avx512/poseidon_helpers.rs create mode 100644 crates/backend/koala-bear/src/poseidon1_koalabear_16.rs delete mode 100644 crates/backend/koala-bear/src/poseidon2/external.rs delete mode 100644 crates/backend/koala-bear/src/poseidon2/generic.rs delete mode 100644 crates/backend/koala-bear/src/poseidon2/internal.rs delete mode 100644 crates/backend/koala-bear/src/poseidon2/mod.rs delete mode 100644 crates/backend/koala-bear/src/poseidon2/round_numbers.rs delete mode 100644 crates/backend/koala-bear/src/poseidon2_koalabear.rs delete mode 100644 crates/backend/koala-bear/src/x86_64_avx2/poseidon2.rs delete mode 100644 crates/backend/koala-bear/src/x86_64_avx512/poseidon2.rs delete mode 100644 crates/utils/src/display.rs rename crates/utils/src/{poseidon2.rs => poseidon.rs} (78%) delete mode 100644 crates/xmss/test_data/benchmark_signers.json create mode 100644 tests/test_lean_multisig.rs diff --git a/Cargo.lock b/Cargo.lock index 40b84807..cc523c9e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -32,9 +32,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -47,15 +47,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -158,9 +158,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.59" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5caf74d17c3aec5495110c34cc3f78644bfa89af6c8993ed4de2790e49b6499" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" dependencies = [ "clap_builder", "clap_derive", @@ -168,9 +168,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.59" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370daa45065b80218950227371916a1633217ae42b2715b2287b606dcd618e24" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", @@ -180,9 +180,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.55" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" +checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" dependencies = [ "heck", "proc-macro2", @@ -192,9 +192,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "cobs" @@ -207,9 +207,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "cpufeatures" @@ -433,6 +433,7 @@ dependencies = [ "lean_vm", "rand", "rec_aggregation", + "serde_json", "sub_protocols", "utils", "xmss", @@ -496,9 +497,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "lock_api" @@ -517,9 +518,9 @@ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lz4_flex" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab6473172471198271ff72e9379150e9dfd70d8e533e0752a27e515b48dd375e" +checksum = "db9a0d582c2874f68138a16ce1867e0ffde6c0bb0a0df85e1f36d04146db488a" dependencies = [ "twox-hash", ] @@ -688,9 +689,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" @@ -749,9 +750,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "postcard" @@ -787,9 +788,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.44" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -869,9 +870,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "rustc_version" @@ -997,9 +998,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.116" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df424c70518695237746f84cede799c9c58fcb37450d7b23716568cc8bc69cb" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -1093,9 +1094,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -1350,6 +1351,7 @@ name = "xmss" version = "0.1.0" dependencies = [ "backend", + "lz4_flex", "postcard", "rand", "serde", diff --git a/Cargo.toml b/Cargo.toml index 05b4631f..cd82d84a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,6 @@ members = [ "crates/backend/air", "crates/backend/fiat-shamir", "crates/backend/sumcheck", - "crates/whir", ] [workspace.lints] @@ -60,10 +59,11 @@ sub_protocols = { path = "crates/sub_protocols" } lean_compiler = { path = "crates/lean_compiler" } lean_prover = { path = "crates/lean_prover" } rec_aggregation = { path = "crates/rec_aggregation" } +backend = { path = "crates/backend" } # External clap = { version = "4.5.59", features = ["derive"] } -rand = "0.10" +rand = "0.10.0" rayon = "1.11.0" pest = "2.7" pest_derive = "2.7" @@ -71,12 +71,12 @@ itertools = "0.14.0" tracing = "0.1.26" serde_json = "1.0.145" serde = { version = "1.0.228", features = ["derive"] } -tracing-subscriber = { version = "0.3.19", features = ["std", "env-filter"] } +tracing-subscriber = { version = "0.3.23", features = ["std", "env-filter"] } tracing-forest = { version = "0.3.0", features = ["ansi", "smallvec"] } postcard = { version = "1.1.3", features = ["alloc"] } -lz4_flex = "0.12.0" - -backend = { path = "crates/backend" } +lz4_flex = "0.13.0" +leansig = { git = "https://github.com/leanEthereum/leanSig", branch = "devnet4" } +leansig_fast_keygen = { git = "https://github.com/TomWambsgans/leanSig", branch = "devnet4-fast-keygen" } [features] prox-gaps-conjecture = ["rec_aggregation/prox-gaps-conjecture"] @@ -84,15 +84,17 @@ prox-gaps-conjecture = ["rec_aggregation/prox-gaps-conjecture"] [dependencies] clap.workspace = true rec_aggregation.workspace = true -xmss.workspace = true air.workspace = true rand.workspace = true sub_protocols.workspace = true utils.workspace = true - lean_vm.workspace = true +xmss.workspace = true backend.workspace = true +[dev-dependencies] +serde_json.workspace = true + [profile.release] lto = "thin" diff --git a/crates/backend/fiat-shamir/src/verifier.rs b/crates/backend/fiat-shamir/src/verifier.rs index 8d00966f..9bbc26bd 100644 --- a/crates/backend/fiat-shamir/src/verifier.rs +++ b/crates/backend/fiat-shamir/src/verifier.rs @@ -9,7 +9,7 @@ use crate::{ }; use field::PrimeCharacteristicRing; use field::{ExtensionField, PrimeField64}; -use koala_bear::{KoalaBear, default_koalabear_poseidon2_16}; +use koala_bear::{KoalaBear, default_koalabear_poseidon1_16}; use symetric::Compression; pub struct VerifierState>, P> { @@ -71,7 +71,7 @@ where assert_eq!(TypeId::of::>(), TypeId::of::()); // SAFETY: We've confirmed PF == KoalaBear let paths: PrunedMerklePaths = unsafe { std::mem::transmute(paths) }; - let perm = default_koalabear_poseidon2_16(); + let perm = default_koalabear_poseidon1_16(); let hash_fn = |data: &[KoalaBear]| symetric::hash_slice::<_, _, 16, 8, DIGEST_LEN_FE>(&perm, data); let combine_fn = |left: &[KoalaBear; DIGEST_LEN_FE], right: &[KoalaBear; DIGEST_LEN_FE]| { symetric::compress(&perm, [*left, *right]) diff --git a/crates/backend/fiat-shamir/tests/grinding.rs b/crates/backend/fiat-shamir/tests/grinding.rs index 36622538..b45d336c 100644 --- a/crates/backend/fiat-shamir/tests/grinding.rs +++ b/crates/backend/fiat-shamir/tests/grinding.rs @@ -1,7 +1,4 @@ -use koala_bear::{ - ExternalLayerConstants, KOALABEAR_RC16_EXTERNAL_FINAL, KOALABEAR_RC16_EXTERNAL_INITIAL, KOALABEAR_RC16_INTERNAL, - Poseidon2KoalaBear, QuinticExtensionFieldKB, -}; +use koala_bear::{QuinticExtensionFieldKB, default_koalabear_poseidon1_16}; use mt_fiat_shamir::{FSProver, FSVerifier, ProverState, VerifierState}; use std::time::Instant; @@ -11,25 +8,18 @@ type EF = QuinticExtensionFieldKB; #[ignore] fn bench_grinding() { let n_reps = 100; - for grinding_bits in 10..=20 { - let mut prover_state = ProverState::::new(get_poseidon16()); + for grinding_bits in 20..=20 { + let mut prover_state = ProverState::::new(default_koalabear_poseidon1_16()); let time = Instant::now(); for _ in 0..n_reps { prover_state.pow_grinding(grinding_bits); } let elapsed = time.elapsed(); - let mut verifier_state = VerifierState::::new(prover_state.into_proof(), get_poseidon16()).unwrap(); + let mut verifier_state = + VerifierState::::new(prover_state.into_proof(), default_koalabear_poseidon1_16()).unwrap(); for _ in 0..n_reps { verifier_state.check_pow_grinding(grinding_bits).unwrap() } println!("Grinding {grinding_bits} bits: {:?}", elapsed / n_reps); } } - -pub fn get_poseidon16() -> Poseidon2KoalaBear<16> { - let external_constants = ExternalLayerConstants::new( - KOALABEAR_RC16_EXTERNAL_INITIAL.to_vec(), - KOALABEAR_RC16_EXTERNAL_FINAL.to_vec(), - ); - Poseidon2KoalaBear::new(external_constants, KOALABEAR_RC16_INTERNAL.to_vec()) -} diff --git a/crates/backend/field/src/field.rs b/crates/backend/field/src/field.rs index f046339a..34dd66c3 100644 --- a/crates/backend/field/src/field.rs +++ b/crates/backend/field/src/field.rs @@ -337,7 +337,7 @@ pub trait PrimeCharacteristicRing: // For `N <= 8` we implement a tree sum structure and for `N > 8` we break the input into // chunks of `8`, perform a tree sum on each chunk and sum the results. The parameter `8` - // was determined experimentally by testing the speed of the poseidon2 internal layer computations. + // was determined experimentally by testing the speed of the poseidon internal layer computations. // This is a useful benchmark as we have a mix of summations of size 15, 23 with other work in between. // I only tested this on `AVX2` though so there might be a better value for other architectures. match N { diff --git a/crates/backend/koala-bear/src/aarch64_neon/mod.rs b/crates/backend/koala-bear/src/aarch64_neon/mod.rs index 88f8fcf8..730a8675 100644 --- a/crates/backend/koala-bear/src/aarch64_neon/mod.rs +++ b/crates/backend/koala-bear/src/aarch64_neon/mod.rs @@ -1,6 +1,5 @@ // Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). mod packing; -mod poseidon2; pub use packing::*; diff --git a/crates/backend/koala-bear/src/aarch64_neon/poseidon2.rs b/crates/backend/koala-bear/src/aarch64_neon/poseidon2.rs deleted file mode 100644 index 2a9cde4d..00000000 --- a/crates/backend/koala-bear/src/aarch64_neon/poseidon2.rs +++ /dev/null @@ -1,99 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -use core::arch::aarch64::uint32x4_t; - -use crate::{InternalLayerParametersNeon, mul_2exp_neg_n_neon, mul_2exp_neg_two_adicity_neon}; - -use crate::{KoalaBearInternalLayerParameters, KoalaBearParameters}; - -impl InternalLayerParametersNeon for KoalaBearInternalLayerParameters { - type ArrayLike = [uint32x4_t; 15]; - - /// For the KoalaBear field and width 16 we multiply by the diagonal matrix: - /// D = [-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4, 1/2^8, 1/8, 1/2^24, -1/2^8, -1/8, -1/16, -1/2^24]. - /// - /// The inputs must be in canonical form, otherwise the result is undefined. - /// - /// Even when the inputs are in canonical form, we make no guarantees on the output except that, provided - /// the output is piped directly into add_sum the vector will be modified such that x[i] = D[i]*x[i] + sum. - #[inline(always)] - unsafe fn diagonal_mul_remainder(input: &mut [uint32x4_t; 15]) { - unsafe { - // These multiplications are for positive coefficients. The results are added to the - // sum in the `add_sum` function. - // input[8] -> input[8] / 2^8 - input[8] = mul_2exp_neg_n_neon::(input[8]); - // input[9] -> input[9] / 8 - input[9] = mul_2exp_neg_n_neon::(input[9]); - // input[10] -> input[10] / 2^24 - input[10] = mul_2exp_neg_two_adicity_neon::(input[10]); - - // These multiplications are for negative coefficients. We compute the multiplication - // by the positive value, and the result is later subtracted from the sum in `add_sum`. - // input[11] -> input[11] / 2^8 - input[11] = mul_2exp_neg_n_neon::(input[11]); - // input[12] -> input[12] / 8 - input[12] = mul_2exp_neg_n_neon::(input[12]); - // input[13] -> input[13] / 16 - input[13] = mul_2exp_neg_n_neon::(input[13]); - // input[14] -> input[14] / 2^24 - input[14] = mul_2exp_neg_two_adicity_neon::(input[14]); - } - } - - /// There are 3 positive inverse powers of two after the -4: 1/2^8, 1/8, 1/2^24, - const NUM_POS: usize = 3; -} - -impl InternalLayerParametersNeon for KoalaBearInternalLayerParameters { - type ArrayLike = [uint32x4_t; 23]; - - /// For the KoalaBear field and width 24 we multiply by the diagonal matrix: - /// D = [-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4, 1/2^8, 1/4, 1/8, 1/16, 1/32, 1/64, 1/2^24, -1/2^8, -1/8, -1/16, -1/32, -1/64, -1/2^7, -1/2^9, -1/2^24] - /// - /// The inputs must be in canonical form, otherwise the result is undefined. - /// - /// Even when the inputs are in canonical form, we make no guarantees on the output except that, provided - /// the output is piped directly into add_sum, the vector will be modified such that x[i] = D[i]*x[i] + sum. - #[inline(always)] - unsafe fn diagonal_mul_remainder(input: &mut [uint32x4_t; 23]) { - unsafe { - // Positive coefficients - // input[8] -> sum + input[8]/2**8 - input[8] = mul_2exp_neg_n_neon::(input[8]); - // input[9] -> sum + input[9]/2**2 - input[9] = mul_2exp_neg_n_neon::(input[9]); - // input[10] -> sum + input[10]/2**3 - input[10] = mul_2exp_neg_n_neon::(input[10]); - // input[11] -> sum + input[11]/2**4 - input[11] = mul_2exp_neg_n_neon::(input[11]); - // input[12] -> sum + input[12]/2**5 - input[12] = mul_2exp_neg_n_neon::(input[12]); - // input[13] -> sum + input[13]/2**6 - input[13] = mul_2exp_neg_n_neon::(input[13]); - // input[14] -> sum + input[14]/2**24 - input[14] = mul_2exp_neg_two_adicity_neon::(input[14]); - - // Negative coefficients - // input[15] -> sum - input[15]/2**8 - input[15] = mul_2exp_neg_n_neon::(input[15]); - // input[16] -> sum - input[16]/2**3 - input[16] = mul_2exp_neg_n_neon::(input[16]); - // input[17] -> sum - input[17]/2**4 - input[17] = mul_2exp_neg_n_neon::(input[17]); - // input[18] -> sum - input[18]/2**5 - input[18] = mul_2exp_neg_n_neon::(input[18]); - // input[19] -> sum - input[19]/2**6 - input[19] = mul_2exp_neg_n_neon::(input[19]); - // input[20] -> sum - input[20]/2**7 - input[20] = mul_2exp_neg_n_neon::(input[20]); - // input[21] -> sum - input[21]/2**9 - input[21] = mul_2exp_neg_n_neon::(input[21]); - // input[22] -> sum - input[22]/2**24 - input[22] = mul_2exp_neg_two_adicity_neon::(input[22]); - } - } - - /// There are 7 positive inverse powers of two after the -4: 1/2^8, 1/4, 1/8, 1/16, 1/32, 1/64, 1/2^24; - const NUM_POS: usize = 7; -} diff --git a/crates/backend/koala-bear/src/benchmark_poseidons.rs b/crates/backend/koala-bear/src/benchmark_poseidons.rs new file mode 100644 index 00000000..74a05078 --- /dev/null +++ b/crates/backend/koala-bear/src/benchmark_poseidons.rs @@ -0,0 +1,39 @@ +use std::hint::black_box; +use std::time::Instant; + +use field::Field; +use field::PackedValue; +use field::PrimeCharacteristicRing; + +use crate::{KoalaBear, default_koalabear_poseidon1_16}; + +type FPacking = ::Packing; +const PACKING_WIDTH: usize = ::WIDTH; + +#[test] +#[ignore] +fn bench_poseidon() { + // cargo test --release --package mt-koala-bear --lib -- benchmark_poseidons::bench_poseidon --exact --nocapture --ignored + + let n = 1 << 23; + let poseidon1_16 = default_koalabear_poseidon1_16(); + + // warming + let mut state_16: [crate::PackedMontyField31Neon; 16] = [FPacking::ZERO; 16]; + for _ in 0..1 << 15 { + poseidon1_16.compress_in_place(&mut state_16); + } + let _ = black_box(state_16); + + let time = Instant::now(); + for _ in 0..n / PACKING_WIDTH { + poseidon1_16.compress_in_place(&mut state_16); + } + let _ = black_box(state_16); + let time_p1_simd = time.elapsed(); + println!( + "Poseidon1 16 SIMD (width {}): {:.2}M hashes/s", + PACKING_WIDTH, + (n as f64 / time_p1_simd.as_secs_f64() / 1_000_000.0) + ); +} diff --git a/crates/backend/koala-bear/src/lib.rs b/crates/backend/koala-bear/src/lib.rs index 29914724..959ed3ad 100644 --- a/crates/backend/koala-bear/src/lib.rs +++ b/crates/backend/koala-bear/src/lib.rs @@ -6,11 +6,13 @@ extern crate alloc; mod koala_bear; pub mod monty_31; -pub mod poseidon2; -mod poseidon2_koalabear; +mod poseidon1_koalabear_16; pub mod quintic_extension; pub mod symmetric; +#[cfg(test)] +mod benchmark_poseidons; + #[cfg(all(target_arch = "aarch64", target_feature = "neon"))] mod aarch64_neon; @@ -20,27 +22,11 @@ mod x86_64_avx2; #[cfg(all(target_arch = "x86_64", target_feature = "avx512f"))] mod x86_64_avx512; -// Re-export everything from monty_31 -pub use monty_31::*; - -// Re-export koala bear specific types pub use koala_bear::*; - -// Re-export koala bear poseidon2 constants and types -pub use poseidon2_koalabear::*; - -// Re-export key poseidon2 types -pub use poseidon2::{ - ExternalLayer, ExternalLayerConstants, ExternalLayerConstructor, GenericPoseidon2LinearLayers, HLMDSMat4, - InternalLayer, InternalLayerConstructor, MDSMat4, Poseidon2, add_rc_and_sbox_generic, - external_initial_permute_state, external_terminal_permute_state, mds_light_permutation, - poseidon2_round_numbers_128, -}; - -// Re-export quintic extension types +pub use monty_31::*; +pub use poseidon1_koalabear_16::*; pub use quintic_extension::*; -// Re-export arch-specific types #[cfg(all(target_arch = "aarch64", target_feature = "neon"))] pub use aarch64_neon::*; diff --git a/crates/backend/koala-bear/src/monty_31/aarch64_neon/mod.rs b/crates/backend/koala-bear/src/monty_31/aarch64_neon/mod.rs index 23251862..993e232b 100644 --- a/crates/backend/koala-bear/src/monty_31/aarch64_neon/mod.rs +++ b/crates/backend/koala-bear/src/monty_31/aarch64_neon/mod.rs @@ -1,9 +1,9 @@ // Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). mod packing; -mod poseidon2; +pub(crate) mod poseidon_helpers; mod utils; pub use packing::*; -pub use poseidon2::*; +pub(crate) use poseidon_helpers::*; pub use utils::*; diff --git a/crates/backend/koala-bear/src/monty_31/aarch64_neon/packing.rs b/crates/backend/koala-bear/src/monty_31/aarch64_neon/packing.rs index 50393798..f235f902 100644 --- a/crates/backend/koala-bear/src/monty_31/aarch64_neon/packing.rs +++ b/crates/backend/koala-bear/src/monty_31/aarch64_neon/packing.rs @@ -108,7 +108,7 @@ impl PackedMontyField31Neon { /// Copy `value` to all positions in a packed vector. This is the same as /// `From::from`, but `const`. #[inline] - const fn broadcast(value: MontyField31) -> Self { + pub(crate) const fn broadcast(value: MontyField31) -> Self { Self([value; WIDTH]) } } @@ -265,6 +265,18 @@ impl_sum_prod_base_field!(PackedMontyField31Neon, MontyField31, (FieldParameters impl Algebra> for PackedMontyField31Neon {} +impl PackedMontyField31Neon { + /// Compute the dot product of a packed vector with a scalar vector. + /// + /// This is more efficient than broadcasting the scalars first, because the + /// Karatsuba recursion can keep the constant (rhs) side as cheap scalar + /// operations while only the lhs/output side uses SIMD. + #[inline(always)] + pub fn mixed_dot_product(lhs: &[Self; N], rhs: &[MontyField31; N]) -> Self { + general_dot_product::<_, _, _, N>(lhs, rhs) + } +} + impl, const D: u64> InjectiveMonomial for PackedMontyField31Neon {} impl, const D: u64> PermutationMonomial diff --git a/crates/backend/koala-bear/src/monty_31/aarch64_neon/poseidon2.rs b/crates/backend/koala-bear/src/monty_31/aarch64_neon/poseidon2.rs deleted file mode 100644 index 879931b9..00000000 --- a/crates/backend/koala-bear/src/monty_31/aarch64_neon/poseidon2.rs +++ /dev/null @@ -1,520 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -//! Vectorized Neon implementation of Poseidon2 for MontyField31 - -use alloc::vec::Vec; -use core::arch::aarch64::{self, int32x4_t, uint32x4_t}; -use core::marker::PhantomData; -use core::mem::transmute; - -use crate::poseidon2::{ - ExternalLayer, ExternalLayerConstants, ExternalLayerConstructor, InternalLayer, InternalLayerConstructor, MDSMat4, - external_initial_permute_state, external_terminal_permute_state, -}; -use field::{PrimeCharacteristicRing, uint32x4_mod_add, uint32x4_mod_sub}; - -use super::exp_small; -use super::utils::halve_neon; -use crate::{ - FieldParameters, MontyField31, MontyParameters, PackedMontyField31Neon, PackedMontyParameters, RelativelyPrimePower, -}; - -/// A specialized representation of the Poseidon2 state for a width of 16. -/// -/// The primary purpose of this struct is to optimize the internal rounds by separating the state -/// into two distinct parts: -/// -/// 1. `s0`: The first element, which is the only one to undergo the S-box operation. -/// 2. `s_hi`: The remaining 15 elements, which only undergo the linear layer transformation. -/// -/// By splitting the state in this way, we provide a strong hint to the compiler that the S-box -/// on `s0` and the linear operations on `s_hi` are independent data paths. This allows the CPU's -/// out-of-order execution engine to run these operations in parallel, effectively hiding the S-box latency -/// and significantly improving performance. -#[derive(Clone, Copy)] -#[repr(C)] // This is needed to make `transmute`s safe. -pub struct InternalLayer16 { - /// The first element of the state, which undergoes the S-box transformation. - s0: PackedMontyField31Neon, - /// The remaining 15 elements of the state, which undergo the linear layer transformation. - s_hi: [uint32x4_t; 15], -} - -impl InternalLayer16 { - /// Converts the specialized `InternalLayer16` representation into a standard array `[PackedMontyField31Neon; 16]`. - /// - /// This is a zero-cost conversion that leverages the `#[repr(C)]` layout of the struct. - /// - /// # Safety - /// The caller *must* ensure that every raw `uint32x4_t` vector within `self.s_hi` contains - /// valid `MontyField31` elements in canonical form `[0, P)`. - #[inline] - unsafe fn to_packed_field_array(self) -> [PackedMontyField31Neon; 16] { - unsafe { - // This `transmute` is safe because `InternalLayer16` is `#[repr(C)]` and is guaranteed - // to have the exact same memory layout as the target array `[PackedMontyField31Neon; 16]`. - transmute(self) - } - } - - /// Converts a standard array `[PackedMontyField31Neon; 16]` into the specialized `InternalLayer16` representation. - /// - /// This is a zero-cost conversion that leverages the `#[repr(C)]` layout of the struct. - #[inline] - #[must_use] - fn from_packed_field_array(vector: [PackedMontyField31Neon; 16]) -> Self { - unsafe { - // This `transmute` is safe because `InternalLayer16` is `#[repr(C)]` and so is guaranteed - // to have the exact same memory layout as `[PackedMontyField31Neon; 16]`. - transmute(vector) - } - } -} - -/// A specialized representation of the Poseidon2 state for a width of 24. -/// -/// The primary purpose of this struct is to optimize the internal rounds by separating the state -/// into two distinct parts: -/// -/// 1. `s0`: The first element, which is the only one to undergo the S-box operation. -/// 2. `s_hi`: The remaining 23 elements, which only undergo the linear layer transformation. -/// -/// By splitting the state in this way, we provide a strong hint to the compiler that the S-box -/// on `s0` and the linear operations on `s_hi` are independent data paths. This allows the CPU's -/// out-of-order execution engine to run these operations in parallel, effectively hiding the S-box latency -/// and significantly improving performance. -#[derive(Clone, Copy)] -#[repr(C)] // This is needed to make `transmute`s safe. -pub struct InternalLayer24 { - /// The first element of the state, which undergoes the S-box transformation. - s0: PackedMontyField31Neon, - /// The remaining 23 elements of the state, which undergo the linear layer transformation. - s_hi: [uint32x4_t; 23], -} - -impl InternalLayer24 { - /// Converts the specialized `InternalLayer24` representation into a standard array `[PackedMontyField31Neon; 24]`. - /// - /// This is a zero-cost conversion that leverages the `#[repr(C)]` layout of the struct. - /// - /// # Safety - /// The caller *must* ensure that every raw `uint32x4_t` vector within `self.s_hi` contains - /// valid `MontyField31` elements in canonical form `[0, P)`. - #[inline] - unsafe fn to_packed_field_array(self) -> [PackedMontyField31Neon; 24] { - unsafe { - // This `transmute` is safe because `InternalLayer24` is `#[repr(C)]` and is guaranteed - // to have the exact same memory layout as the target array `[PackedMontyField31Neon; 24]`. - transmute(self) - } - } - - /// Converts a standard array `[PackedMontyField31Neon; 24]` into the specialized `InternalLayer24` representation. - /// - /// This is a zero-cost conversion that leverages the `#[repr(C)]` layout of the struct. - #[inline] - #[must_use] - fn from_packed_field_array(vector: [PackedMontyField31Neon; 24]) -> Self { - unsafe { - // This `transmute` is safe because `InternalLayer24` is `#[repr(C)]` and so is guaranteed - // to have the exact same memory layout as `[PackedMontyField31Neon; 24]`. - transmute(vector) - } - } -} - -/// Represents the internal layers of the Poseidon2 permutation for NEON-accelerated operations. -#[derive(Debug, Clone)] -pub struct Poseidon2InternalLayerMonty31< - PMP: PackedMontyParameters, - const WIDTH: usize, - ILP: InternalLayerParametersNeon, -> { - /// The original, scalar round constants for each internal round. - pub(crate) internal_constants: Vec>, - /// The pre-processed round constants, packed into NEON vectors in negative form (`c - P`). - /// - /// This format is optimized for the vectorized permutation loop. - packed_internal_constants: Vec, - _phantom: PhantomData, -} - -impl> - InternalLayerConstructor> for Poseidon2InternalLayerMonty31 -{ - fn new_from_constants(internal_constants: Vec>) -> Self { - let packed_internal_constants = internal_constants - .iter() - .map(|c| convert_to_vec_neg_form_neon::(c.value as i32)) - .collect(); - Self { - internal_constants, - packed_internal_constants, - _phantom: PhantomData, - } - } -} - -impl InternalLayer, 16, D> - for Poseidon2InternalLayerMonty31 -where - FP: FieldParameters + RelativelyPrimePower, - ILP: InternalLayerParametersNeon, -{ - fn permute_state(&self, state: &mut [PackedMontyField31Neon; 16]) { - unsafe { - // Safety: This returns values in canonical form when given values in canonical form. - /* - Fix a vector v and let Diag(v) denote the diagonal matrix with diagonal given by v. - Additionally, let 1 denote the matrix with all elements equal to 1. - The internal layer consists of an sbox operation then a matrix multiplication by 1 + Diag(v). - Explicitly the internal layer consists of the following 2 operations: - - s0 -> (s0 + rc)^d - s -> (1 + Diag(v))s - - Note that this matrix multiplication can be implemented as: - sum = sum_i s_i - s_i -> sum + s_iv_i - - which is essentially how we implement it. - */ - - // Convert the state array into the specialized `InternalLayer16` representation - // for optimized processing. - let mut internal_state = InternalLayer16::from_packed_field_array(*state); - - self.packed_internal_constants.iter().for_each(|&rc| { - // Apply AddRoundConstant and the S-Box to the first state element (`s0`). - add_rc_and_sbox::(&mut internal_state.s0, rc); - - // Compute the sum of all other state elements (`s_hi`). - // - // This can execute in parallel with the S-box operation on `s0`. - let s_hi_transmuted: &[PackedMontyField31Neon; 15] = transmute(&internal_state.s_hi); - let sum_tail = PackedMontyField31Neon::::sum_array::<15>(s_hi_transmuted); - - // Perform the diagonal multiplication on `s_hi`. - // - // This can also execute in parallel with the S-box. - ILP::diagonal_mul(&mut internal_state.s_hi); - - // Compute the total sum of the entire state (`s0` + `sum_tail`) - // after the S-box on `s0` is complete. - let sum = sum_tail + internal_state.s0; - - // Update `s0`. The transformation is `s0_new = sum + v_0*s0`. - // - // Since the diagonal element `v_0` is always -2, this becomes `sum - 2*s0`. - // - // For efficiency, this is calculated as `(sum - s0) - s0`, which is `sum_tail - s0`. - internal_state.s0 = sum_tail - internal_state.s0; - - // Update the rest of the state. For each `s_i` (where `i > 0`), the - // transformation is `s_i_new = (v_i * s_i) + sum`. The `v_i * s_i` part - // was already computed in `diagonal_mul`. - ILP::add_sum( - &mut internal_state.s_hi, - transmute::, uint32x4_t>(sum), - ); - }); - - // Convert the specialized state representation back to a standard array before returning. - *state = InternalLayer16::to_packed_field_array(internal_state); - } - } -} - -impl InternalLayer, 24, D> - for Poseidon2InternalLayerMonty31 -where - FP: FieldParameters + RelativelyPrimePower, - ILP: InternalLayerParametersNeon, -{ - fn permute_state(&self, state: &mut [PackedMontyField31Neon; 24]) { - unsafe { - // Safety: This returns values in canonical form when given values in canonical form. - - /* - Fix a vector v and let Diag(v) denote the diagonal matrix with diagonal given by v. - Additionally, let 1 denote the matrix with all elements equal to 1. - The internal layer consists of an sbox operation then a matrix multiplication by 1 + Diag(v). - Explicitly the internal layer consists of the following 2 operations: - - s0 -> (s0 + rc)^d - s -> (1 + Diag(v))s - - Note that this matrix multiplication is implemented as: - sum = sum_i s_i - s_i -> sum + s_iv_i. - */ - - // Convert the state array into the specialized `InternalLayer24` representation - // for optimized processing. - let mut internal_state = InternalLayer24::from_packed_field_array(*state); - - self.packed_internal_constants.iter().for_each(|&rc| { - // Apply AddRoundConstant and the S-Box to the first state element (`s0`). - add_rc_and_sbox::(&mut internal_state.s0, rc); - - // Compute the sum of all other state elements (`s_hi`). - // - // This can execute in parallel with the S-box operation on `s0`. - let s_hi_transmuted: &[PackedMontyField31Neon; 23] = transmute(&internal_state.s_hi); - let sum_tail = PackedMontyField31Neon::::sum_array::<23>(s_hi_transmuted); - - // Perform the diagonal multiplication on `s_hi`. - // - // This can also execute in parallel with the S-box. - ILP::diagonal_mul(&mut internal_state.s_hi); - - // Compute the total sum of the entire state (`s0` + `sum_tail`) - // after the S-box on `s0` is complete. - let sum = sum_tail + internal_state.s0; - - // Update `s0`. The transformation is `s0_new = sum + v_0*s0`. - // - // Since the diagonal element `v_0` is always -2, this becomes `sum - 2*s0`. - // - // For efficiency, this is calculated as `(sum - s0) - s0`, which is `sum_tail - s0`. - internal_state.s0 = sum_tail - internal_state.s0; - - // Update the rest of the state. For each `s_i` (where `i > 0`), the - // transformation is `s_i_new = (v_i * s_i) + sum`. The `v_i * s_i` part - // was already computed in `diagonal_mul`. - ILP::add_sum( - &mut internal_state.s_hi, - transmute::, uint32x4_t>(sum), - ); - }); - - // Convert the specialized state representation back to a standard array before returning. - *state = InternalLayer24::to_packed_field_array(internal_state); - } - } -} - -/// Represents the external layers (initial and terminal) of the Poseidon2 permutation for NEON-accelerated operations. -#[derive(Debug, Clone)] -pub struct Poseidon2ExternalLayerMonty31 { - /// The original, scalar round constants for both initial and terminal external rounds. - pub(crate) external_constants: ExternalLayerConstants, WIDTH>, - /// Pre-processed constants for the initial external rounds, packed into NEON vectors in negative form (`c - P`). - packed_initial_external_constants: Vec<[int32x4_t; WIDTH]>, - /// Pre-processed constants for the terminal external rounds, packed into NEON vectors in negative form (`c - P`). - packed_terminal_external_constants: Vec<[int32x4_t; WIDTH]>, -} - -impl ExternalLayerConstructor, WIDTH> - for Poseidon2ExternalLayerMonty31 -{ - fn new_from_constants(external_constants: ExternalLayerConstants, WIDTH>) -> Self { - let packed_initial_external_constants = external_constants - .get_initial_constants() - .iter() - .map(|arr| arr.map(|c| convert_to_vec_neg_form_neon::(c.value as i32))) - .collect(); - let packed_terminal_external_constants = external_constants - .get_terminal_constants() - .iter() - .map(|arr| arr.map(|c| convert_to_vec_neg_form_neon::(c.value as i32))) - .collect(); - Self { - external_constants, - packed_initial_external_constants, - packed_terminal_external_constants, - } - } -} - -impl ExternalLayer, WIDTH, D> - for Poseidon2ExternalLayerMonty31 -where - FP: FieldParameters + RelativelyPrimePower, -{ - /// Perform the initial external layers of the Poseidon2 permutation on the given state. - fn permute_state_initial(&self, state: &mut [PackedMontyField31Neon; WIDTH]) { - external_initial_permute_state( - state, - &self.packed_initial_external_constants, - add_rc_and_sbox::, - &MDSMat4, - ); - } - - /// Perform the terminal external layers of the Poseidon2 permutation on the given state. - fn permute_state_terminal(&self, state: &mut [PackedMontyField31Neon; WIDTH]) { - external_terminal_permute_state( - state, - &self.packed_terminal_external_constants, - add_rc_and_sbox::, - &MDSMat4, - ); - } -} - -/// Converts a scalar constant into a packed NEON vector in "negative form". -/// -/// Instead of storing a constant `c`, we pre-compute `c' = c - P` and store it as a packed vector. -#[inline(always)] -fn convert_to_vec_neg_form_neon(input: i32) -> int32x4_t { - unsafe { - let input_sub_p = input - (MP::PRIME as i32); - - // Broadcast (duplicate) the scalar result into all four lanes of a 128-bit NEON vector. - aarch64::vdupq_n_s32(input_sub_p) - } -} - -/// Performs the fused AddRoundConstant and S-Box operation `x -> (x + c)^D`. -/// -/// # Safety -/// - `val` must contain elements in canonical form `[0, P)`. -/// - `rc` must contain round constants saved in negative form, i.e. as elements in `[-P, 0)`. -fn add_rc_and_sbox(val: &mut PackedMontyField31Neon, rc: int32x4_t) -where - PMP: PackedMontyParameters + FieldParameters, -{ - unsafe { - // Convert the field element vector to its raw signed i32 representation. - let vec_val_s = val.to_signed_vector(); - - // Add the round constant. As it is saved in negative form the result is - // guaranteed to be in the range `[-P, P)`. - let val_plus_rc = aarch64::vaddq_s32(vec_val_s, rc); - - // Apply the power S-box `x -> x^D`. - // - // The `exp_small` function: - // - accepts inputs in `[-P, P]`, - // - returns a canonical result in `[0, P)`. - let output = exp_small::(val_plus_rc); - - *val = PackedMontyField31Neon::::from_vector(output); - } -} - -/// Trait for NEON-specific parameters and operations for the Poseidon2 internal layer. -pub trait InternalLayerParametersNeon: Clone + Sync { - /// The state array type used in this implementation, which holds NEON vectors. - type ArrayLike: AsMut<[uint32x4_t]>; - - // The internal layer linear transformation is `M = I + Diag(V)`, where `I` is the all-ones matrix. - // The operation `x -> M * x` can be split into two parts: - // 1. `diagonal_mul`: A cheap, element-wise multiplication `x_i -> v_i * x_i`. - // 2. `add_sum`: An expensive sum of all elements, added back to each element. - // - // This split is a key performance optimization. The S-box `(s0 + rc)^D` has high latency. - // By splitting the linear layer, we can execute the cheap `diagonal_mul` operation on the rest - // of the state `s_hi` in parallel with the S-box operation on `s0`, effectively hiding its latency. - // Only after both are complete do we compute the sum and perform the final additions. - // - // For these reasons, `diagonal_mul` and `add_sum` are marked `unsafe` as they are only - // guaranteed to be correct when used together in the permutation's internal loop. - - /// Performs the element-wise multiplication part of the internal layer's linear transformation. - /// - /// The diagonal matrix used in Poseidon2 has a common structure for the first 9 elements: - /// `V = [-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4, ...]`. - /// This function is composed of two sub-routines that handle different parts of this multiplication. - /// - /// # Safety - /// This function is only safe to call as part of the internal layer permutation. - /// Its output is not guaranteed to be in canonical form and must be passed directly to `add_sum`. - #[inline(always)] - unsafe fn diagonal_mul(input: &mut Self::ArrayLike) { - // The `unsafe` block is for clarity, as both sub-functions are unsafe. - unsafe { - Self::diagonal_mul_first_eight(input); - Self::diagonal_mul_remainder(input); - } - } - - /// Multiplies the first 8 elements of `input` (from index 1 to 8 of the state) by the diagonal vector. - /// - /// This default implementation handles the common prefix of the diagonal matrix `[1, 2, 1/2, 3, 4, -1/2, -3, -4]`. - /// - /// Note that for negative coefficients (e.g., -1/2), this function computes the positive equivalent (1/2). - /// This irregularity is cheaper to compute and is corrected later in the `add_sum` function, which - /// will perform a subtraction instead of an addition for these elements. - /// - /// # Safety - /// This function's output must be passed directly to `add_sum` for the result to be correct. - #[inline(always)] - unsafe fn diagonal_mul_first_eight(input: &mut Self::ArrayLike) { - let input = input.as_mut(); - - // The first element `input[0]` (state `s_1`) is multiplied by 1, which is a no-op. - - // Multiply `input[1]` (state `s_2`) by 2. - input[1] = uint32x4_mod_add(input[1], input[1], PMP::PACKED_P); - // Multiply `input[2]` (state `s_3`) by 1/2. - input[2] = halve_neon::(input[2]); - - // Multiply `input[3]` (state `s_4`) by 3. - let acc3 = uint32x4_mod_add(input[3], input[3], PMP::PACKED_P); - input[3] = uint32x4_mod_add(acc3, input[3], PMP::PACKED_P); - - // Multiply `input[4]` (state `s_5`) by 4. - let acc4 = uint32x4_mod_add(input[4], input[4], PMP::PACKED_P); - input[4] = uint32x4_mod_add(acc4, acc4, PMP::PACKED_P); - - // For the next 3 elements, we multiply by the positive value (e.g., 1/2 instead of -1/2). - // `add_sum` will correct this by subtracting the result instead of adding. - - // Multiply `input[5]` (state `s_6`) by 1/2. - input[5] = halve_neon::(input[5]); - // Multiply `input[6]` (state `s_7`) by 3. - let acc6 = uint32x4_mod_add(input[6], input[6], PMP::PACKED_P); - input[6] = uint32x4_mod_add(acc6, input[6], PMP::PACKED_P); - // Multiply `input[7]` (state `s_8`) by 4. - let acc7 = uint32x4_mod_add(input[7], input[7], PMP::PACKED_P); - input[7] = uint32x4_mod_add(acc7, acc7, PMP::PACKED_P); - } - - /// Multiplies the remaining elements of the state by the rest of the diagonal matrix. - /// - /// This function is implemented by each concrete field. - /// - /// # Safety - /// This function must not touch the first 8 elements of `input`. - unsafe fn diagonal_mul_remainder(input: &mut Self::ArrayLike); - - /// The number of *positive* inverse powers of two in the diagonal matrix after the first 8 elements. - /// - /// This constant is used by `add_sum` to know how many elements require correction (subtraction). - const NUM_POS: usize; - - /// Adds the state sum to each element, completing the linear layer transformation. - /// - /// Morally, this function computes `x_i -> x_i + sum`. However, it also corrects for the - /// irregularities introduced in `diagonal_mul` for efficiency. Where `diagonal_mul` computed `k*x` - /// instead of `-k*x`, this function computes `sum - (k*x)` to get the correct result. - /// - /// # Safety - /// `sum` must be in canonical form, and `input` must be the immediate output of `diagonal_mul`. - #[inline(always)] - unsafe fn add_sum(input: &mut Self::ArrayLike, sum: uint32x4_t) { - // For the first 5 elements (s_1 to s_5), the diagonal coefficients are positive, so we add the sum. - input.as_mut()[..5] - .iter_mut() - .for_each(|x| *x = uint32x4_mod_add(sum, *x, PMP::PACKED_P)); - - // For the next 3 elements (s_6 to s_8), the diagonal coefficients are negative, so we - // subtract the result from the sum. - input.as_mut()[5..8] - .iter_mut() - .for_each(|x| *x = uint32x4_mod_sub(sum, *x, PMP::PACKED_P)); - - // For the next block of elements, the diagonal coefficients are positive, so we add the sum. - input.as_mut()[8..(8 + Self::NUM_POS)] - .iter_mut() - .for_each(|x| *x = uint32x4_mod_add(sum, *x, PMP::PACKED_P)); - - // For the final block of elements, the diagonal coefficients are negative, so we - // subtract the result from the sum. - input.as_mut()[8 + Self::NUM_POS..] - .iter_mut() - .for_each(|x| *x = uint32x4_mod_sub(sum, *x, PMP::PACKED_P)); - } -} diff --git a/crates/backend/koala-bear/src/monty_31/aarch64_neon/poseidon_helpers.rs b/crates/backend/koala-bear/src/monty_31/aarch64_neon/poseidon_helpers.rs new file mode 100644 index 00000000..1a92e9d9 --- /dev/null +++ b/crates/backend/koala-bear/src/monty_31/aarch64_neon/poseidon_helpers.rs @@ -0,0 +1,58 @@ +// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). + +//! NEON helpers shared by Poseidon1 permutations. + +use core::arch::aarch64::{self, int32x4_t, uint32x4_t}; +use core::mem::transmute; + +use super::exp_small; +use crate::{FieldParameters, MontyParameters, PackedMontyField31Neon, PackedMontyParameters, RelativelyPrimePower}; + +/// A specialized representation of the Poseidon state for a width of 16. +/// +/// Splits the state into `s0` (undergoes S-box) and `s_hi` (undergoes only linear transforms), +/// enabling instruction-level parallelism between the two independent data paths. +#[derive(Clone, Copy)] +#[repr(C)] +pub struct InternalLayer16 { + pub(crate) s0: PackedMontyField31Neon, + pub(crate) s_hi: [uint32x4_t; 15], +} + +impl InternalLayer16 { + #[inline] + pub(crate) unsafe fn to_packed_field_array(self) -> [PackedMontyField31Neon; 16] { + unsafe { transmute(self) } + } + + #[inline] + #[must_use] + pub(crate) fn from_packed_field_array(vector: [PackedMontyField31Neon; 16]) -> Self { + unsafe { transmute(vector) } + } +} + +/// Converts a scalar constant into a packed NEON vector in "negative form" (`c - P`). +#[inline(always)] +pub(crate) fn convert_to_vec_neg_form_neon(input: i32) -> int32x4_t { + unsafe { + let input_sub_p = input - (MP::PRIME as i32); + aarch64::vdupq_n_s32(input_sub_p) + } +} + +/// Performs the fused AddRoundConstant and S-Box operation `x -> (x + c)^D`. +/// +/// `val` must contain elements in canonical form `[0, P)`. +/// `rc` must contain round constants in negative form `[-P, 0)`. +pub(crate) fn add_rc_and_sbox(val: &mut PackedMontyField31Neon, rc: int32x4_t) +where + PMP: PackedMontyParameters + FieldParameters + RelativelyPrimePower, +{ + unsafe { + let vec_val_s = val.to_signed_vector(); + let val_plus_rc = aarch64::vaddq_s32(vec_val_s, rc); + let output = exp_small::(val_plus_rc); + *val = PackedMontyField31Neon::::from_vector(output); + } +} diff --git a/crates/backend/koala-bear/src/monty_31/aarch64_neon/utils.rs b/crates/backend/koala-bear/src/monty_31/aarch64_neon/utils.rs index 7c9b9e64..5a3ceb33 100644 --- a/crates/backend/koala-bear/src/monty_31/aarch64_neon/utils.rs +++ b/crates/backend/koala-bear/src/monty_31/aarch64_neon/utils.rs @@ -1,8 +1,6 @@ // Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). -use core::arch::aarch64::{ - self, uint32x4_t, vaddq_u32, vandq_u32, vdupq_n_u32, vhaddq_u32, vminq_u32, vmlsq_n_u32, vtstq_u32, -}; +use core::arch::aarch64::{self, uint32x4_t, vaddq_u32, vandq_u32, vdupq_n_u32, vhaddq_u32, vminq_u32, vmlsq_n_u32}; use crate::{PackedMontyParameters, TwoAdicData}; @@ -16,9 +14,18 @@ pub(crate) fn halve_neon(input: uint32x4_t) -> uint3 let one = vdupq_n_u32(1); // Check if the least significant bit is set (i.e., if the number is odd). + // CMTST returns a mask of all 1s if (input AND one) != 0, all 0s otherwise. // - // vtstq_u32 returns a mask of all 1s if the bit is set, and all 0s otherwise. - let is_odd_mask = vtstq_u32(input, one); + // We use inline asm because LLVM decomposes vtstq_u32 into AND+CMEQ#0 + // (2 instructions) instead of emitting the single CMTST instruction. + let is_odd_mask: uint32x4_t; + core::arch::asm!( + "cmtst {0:v}.4s, {1:v}.4s, {2:v}.4s", + out(vreg) is_odd_mask, + in(vreg) input, + in(vreg) one, + options(pure, nomem, nostack, preserves_flags), + ); // Select `P` if the corresponding input is odd, or `0` if it's even. let to_add = vandq_u32(PMP::PACKED_P, is_odd_mask); diff --git a/crates/backend/koala-bear/src/monty_31/mod.rs b/crates/backend/koala-bear/src/monty_31/mod.rs index 9f3f6daf..d7d917f4 100644 --- a/crates/backend/koala-bear/src/monty_31/mod.rs +++ b/crates/backend/koala-bear/src/monty_31/mod.rs @@ -5,7 +5,6 @@ mod data_traits; #[allow(clippy::module_inception)] mod monty_31; -pub(crate) mod poseidon2_monty; pub(crate) mod utils; // Skip mds.rs for now - requires karatsuba_convolution dependency @@ -39,5 +38,4 @@ pub use x86_64_avx512::*; pub use data_traits::*; pub use monty_31::*; -pub use poseidon2_monty::*; pub use utils::{monty_add, monty_sub}; diff --git a/crates/backend/koala-bear/src/monty_31/no_packing/mod.rs b/crates/backend/koala-bear/src/monty_31/no_packing/mod.rs index d6edb829..c7ba9668 100644 --- a/crates/backend/koala-bear/src/monty_31/no_packing/mod.rs +++ b/crates/backend/koala-bear/src/monty_31/no_packing/mod.rs @@ -2,10 +2,6 @@ //! A couple of simple functions needed in the case that this is compiled without architecture optimizations available. -mod poseidon2; - -pub use poseidon2::*; - use crate::{FieldParameters, MontyField31}; /// Multiplication by a base field element in a binomial extension field. diff --git a/crates/backend/koala-bear/src/monty_31/no_packing/poseidon2.rs b/crates/backend/koala-bear/src/monty_31/no_packing/poseidon2.rs deleted file mode 100644 index ad6bedb1..00000000 --- a/crates/backend/koala-bear/src/monty_31/no_packing/poseidon2.rs +++ /dev/null @@ -1,48 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -//! These are just simple wrapper structs allowing us to implement Poseidon2 Internal/ExternalLayer on top of them. -//! -//! They are used only in the case that none of the vectorization architectures (AVX2/AVX512/NEON) are available. - -use alloc::vec::Vec; -use core::marker::PhantomData; - -use crate::poseidon2::{ExternalLayerConstants, ExternalLayerConstructor, InternalLayerConstructor}; - -use crate::{FieldParameters, InternalLayerBaseParameters, MontyField31, MontyParameters}; - -/// The internal layers of the Poseidon2 permutation for Monty31 fields. -#[derive(Debug, Clone)] -pub struct Poseidon2InternalLayerMonty31< - MP: MontyParameters, - const WIDTH: usize, - ILP: InternalLayerBaseParameters, -> { - pub(crate) internal_constants: Vec>, - _phantom: PhantomData, -} - -/// The external layers of the Poseidon2 permutation for Monty31 fields. -#[derive(Debug, Clone)] -pub struct Poseidon2ExternalLayerMonty31 { - pub(crate) external_constants: ExternalLayerConstants, WIDTH>, -} - -impl> - InternalLayerConstructor> for Poseidon2InternalLayerMonty31 -{ - fn new_from_constants(internal_constants: Vec>) -> Self { - Self { - internal_constants, - _phantom: PhantomData, - } - } -} - -impl ExternalLayerConstructor, WIDTH> - for Poseidon2ExternalLayerMonty31 -{ - fn new_from_constants(external_constants: ExternalLayerConstants, WIDTH>) -> Self { - Self { external_constants } - } -} diff --git a/crates/backend/koala-bear/src/monty_31/poseidon2_monty.rs b/crates/backend/koala-bear/src/monty_31/poseidon2_monty.rs deleted file mode 100644 index 4e7839da..00000000 --- a/crates/backend/koala-bear/src/monty_31/poseidon2_monty.rs +++ /dev/null @@ -1,127 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -use core::marker::PhantomData; - -use crate::poseidon2::{ - ExternalLayer, GenericPoseidon2LinearLayers, InternalLayer, MDSMat4, add_rc_and_sbox_generic, - external_initial_permute_state, external_terminal_permute_state, -}; -use field::{InjectiveMonomial, PrimeCharacteristicRing}; - -use crate::{ - FieldParameters, MontyField31, MontyParameters, Poseidon2ExternalLayerMonty31, Poseidon2InternalLayerMonty31, - RelativelyPrimePower, -}; - -/// Trait which handles the Poseidon2 internal layers. -/// -/// Everything needed to compute multiplication by a `WIDTH x WIDTH` diffusion matrix whose monty form is `1 + Diag(vec)`. -/// vec is assumed to be of the form `[-2, ...]` with all entries after the first being small powers of `2`. -pub trait InternalLayerBaseParameters: Clone + Sync { - /// Perform the internal matrix multiplication: s -> (1 + Diag(V))s. - /// We ignore `state[0]` as it is handled separately. - fn internal_layer_mat_mul(state: &mut [R; WIDTH], sum: R); - - /// Perform the matrix multiplication corresponding to the internal linear - /// layer. - #[inline(always)] - fn generic_internal_linear_layer(state: &mut [R; WIDTH]) { - // We mostly delegate to internal_layer_mat_mul but have to handle state[0] separately. - let part_sum: R = state[1..].iter().copied().sum(); - let full_sum = part_sum + state[0]; - state[0] = part_sum - state[0]; - Self::internal_layer_mat_mul(state, full_sum); - } -} - -#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] -pub trait InternalLayerParameters: - InternalLayerBaseParameters + crate::InternalLayerParametersNeon -{ -} -#[cfg(all(target_arch = "x86_64", target_feature = "avx2", not(target_feature = "avx512f")))] -pub trait InternalLayerParameters: - InternalLayerBaseParameters + crate::InternalLayerParametersAVX2 -{ -} -#[cfg(all(target_arch = "x86_64", target_feature = "avx512f"))] -pub trait InternalLayerParameters: - InternalLayerBaseParameters + crate::InternalLayerParametersAVX512 -{ -} -#[cfg(not(any( - all(target_arch = "aarch64", target_feature = "neon"), - all(target_arch = "x86_64", target_feature = "avx2", not(target_feature = "avx512f")), - all(target_arch = "x86_64", target_feature = "avx512f"), -)))] -pub trait InternalLayerParameters: - InternalLayerBaseParameters -{ -} - -impl InternalLayer, WIDTH, D> - for Poseidon2InternalLayerMonty31 -where - FP: FieldParameters + RelativelyPrimePower, - P2P: InternalLayerParameters, -{ - /// Perform the internal layers of the Poseidon2 permutation on the given state. - fn permute_state(&self, state: &mut [MontyField31; WIDTH]) { - self.internal_constants.iter().for_each(|rc| { - state[0] += *rc; - state[0] = state[0].injective_exp_n(); - let part_sum: MontyField31 = state[1..].iter().copied().sum(); - let full_sum = part_sum + state[0]; - state[0] = part_sum - state[0]; - P2P::internal_layer_mat_mul(state, full_sum); - }) - } -} - -impl ExternalLayer, WIDTH, D> - for Poseidon2ExternalLayerMonty31 -where - FP: FieldParameters + RelativelyPrimePower, -{ - /// Perform the initial external layers of the Poseidon2 permutation on the given state. - fn permute_state_initial(&self, state: &mut [MontyField31; WIDTH]) { - external_initial_permute_state( - state, - self.external_constants.get_initial_constants(), - add_rc_and_sbox_generic, - &MDSMat4, - ); - } - - /// Perform the terminal external layers of the Poseidon2 permutation on the given state. - fn permute_state_terminal(&self, state: &mut [MontyField31; WIDTH]) { - external_terminal_permute_state( - state, - self.external_constants.get_terminal_constants(), - add_rc_and_sbox_generic, - &MDSMat4, - ); - } -} - -/// An implementation of the matrix multiplications in the internal and external layers of Poseidon2. -/// -/// This can act on `[A; WIDTH]` for any ring implementing `Algebra>`. -/// This will usually be slower than the Poseidon2 permutation built from `Poseidon2InternalLayerMonty31` and -/// `Poseidon2ExternalLayerMonty31` but it does work in more cases. -#[derive(Clone)] -pub struct GenericPoseidon2LinearLayersMonty31 { - _phantom1: PhantomData, - _phantom2: PhantomData, -} - -impl GenericPoseidon2LinearLayers for GenericPoseidon2LinearLayersMonty31 -where - FP: FieldParameters, - ILBP: InternalLayerBaseParameters, -{ - #[inline(always)] - fn internal_linear_layer(state: &mut [R; WIDTH]) { - ILBP::generic_internal_linear_layer(state); - } -} diff --git a/crates/backend/koala-bear/src/monty_31/x86_64_avx2/mod.rs b/crates/backend/koala-bear/src/monty_31/x86_64_avx2/mod.rs index 23251862..993e232b 100644 --- a/crates/backend/koala-bear/src/monty_31/x86_64_avx2/mod.rs +++ b/crates/backend/koala-bear/src/monty_31/x86_64_avx2/mod.rs @@ -1,9 +1,9 @@ // Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). mod packing; -mod poseidon2; +pub(crate) mod poseidon_helpers; mod utils; pub use packing::*; -pub use poseidon2::*; +pub(crate) use poseidon_helpers::*; pub use utils::*; diff --git a/crates/backend/koala-bear/src/monty_31/x86_64_avx2/packing.rs b/crates/backend/koala-bear/src/monty_31/x86_64_avx2/packing.rs index f86cdfb3..7eff533e 100644 --- a/crates/backend/koala-bear/src/monty_31/x86_64_avx2/packing.rs +++ b/crates/backend/koala-bear/src/monty_31/x86_64_avx2/packing.rs @@ -70,7 +70,7 @@ impl PackedMontyField31AVX2 { /// Copy `value` to all positions in a packed vector. This is the same as /// `From>::from`, but `const`. #[inline] - const fn broadcast(value: MontyField31) -> Self { + pub(crate) const fn broadcast(value: MontyField31) -> Self { Self([value; WIDTH]) } } diff --git a/crates/backend/koala-bear/src/monty_31/x86_64_avx2/poseidon2.rs b/crates/backend/koala-bear/src/monty_31/x86_64_avx2/poseidon2.rs deleted file mode 100644 index 30f4b650..00000000 --- a/crates/backend/koala-bear/src/monty_31/x86_64_avx2/poseidon2.rs +++ /dev/null @@ -1,463 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -//! Vectorized AVX2 implementation of Poseidon2 for MontyField31 - -use alloc::vec::Vec; -use core::arch::x86_64::{self, __m256i}; -use core::marker::PhantomData; -use core::mem::transmute; - -use crate::poseidon2::{ - ExternalLayer, ExternalLayerConstants, ExternalLayerConstructor, InternalLayer, InternalLayerConstructor, MDSMat4, - external_initial_permute_state, external_terminal_permute_state, -}; -use field::{PrimeCharacteristicRing, mm256_mod_add, mm256_mod_sub}; - -use crate::{ - FieldParameters, InternalLayerBaseParameters, MontyField31, MontyParameters, PackedMontyField31AVX2, - PackedMontyParameters, RelativelyPrimePower, apply_func_to_even_odd, halve_avx2, packed_exp_3, packed_exp_5, - packed_exp_7, signed_add_avx2, -}; - -// In the internal layers, it is valuable to treat the first entry of the state differently -// as it is the only entry to which we apply s-box. -// It seems to help the compiler if we introduce a different data structure for these layers. -// Note that we use this structure instead of a tuple so we can force the memory layout to align for transmutes. -#[derive(Clone, Copy)] -#[repr(C)] // This is needed to make `transmute`s safe. -pub struct InternalLayer16 { - s0: PackedMontyField31AVX2, - s_hi: [__m256i; 15], -} - -impl InternalLayer16 { - #[inline] - /// Convert from `InternalLayer16` to `[PackedMontyField31AVX2; 16]` - /// - /// SAFETY: The caller must ensure that each element of `s_hi` represents a valid `MontyField31`. - /// In particular, each element of each vector must be in `[0, P)` (canonical form). - unsafe fn to_packed_field_array(self) -> [PackedMontyField31AVX2; 16] { - unsafe { - // Safety: It is up to the user to ensure that elements of `s_hi` represent valid - // `MontyField31` values. We must only reason about memory representations. - // As described in packing.rs, PackedMontyField31AVX2 can be transmuted to and from `__m256i`. - - // `InternalLayer16` is `repr(C)` so its memory layout looks like: - // `[PackedMontyField31AVX2, __m256i, ..., __m256i]` - // Thus as `__m256i` can be can be transmuted to `PackedMontyField31AVX2`, - // `InternalLayer16` can be transmuted to `[PackedMontyField31AVX2; 16]`. - transmute(self) - } - } - - #[inline] - #[must_use] - /// Convert from `[PackedMontyField31AVX2; 16]` to `InternalLayer16` - fn from_packed_field_array(vector: [PackedMontyField31AVX2; 16]) -> Self { - unsafe { - // Safety: As described in packing.rs, PackedMontyField31AVX2 can be transmuted to and from `__m256i`. - - // `InternalLayer16` is `repr(C)` so its memory layout looks like: - // `[PackedMontyField31AVX2, __m256i, ..., __m256i]` - // Thus as `PackedMontyField31AVX2` can be can be transmuted to `__m256i`, - // `[PackedMontyField31AVX2; 16]` can be transmuted to `InternalLayer16`. - transmute(vector) - } - } -} - -#[derive(Clone, Copy)] -#[repr(C)] // This is needed to make `transmute`s safe. -pub struct InternalLayer24 { - s0: PackedMontyField31AVX2, - s_hi: [__m256i; 23], -} - -impl InternalLayer24 { - #[inline] - /// Convert from `InternalLayer24` to `[PackedMontyField31AVX2; 24]` - /// - /// SAFETY: The caller must ensure that each element of `s_hi` represents a valid `MontyField31`. - /// In particular, each element of each vector must be in `[0, P)` (canonical form). - unsafe fn to_packed_field_array(self) -> [PackedMontyField31AVX2; 24] { - unsafe { - // Safety: As described in packing.rs, PackedMontyField31AVX2 can be transmuted to and from `__m256i`. - - // `InternalLayer24` is `repr(C)` so its memory layout looks like: - // `[PackedMontyField31AVX2, __m256i, ..., __m256i]` - // Thus as `__m256i` can be can be transmuted to `PackedMontyField31AVX2`, - // `InternalLayer24` can be transmuted to `[PackedMontyField31AVX2; 24]`. - transmute(self) - } - } - - #[inline] - #[must_use] - /// Convert from `[PackedMontyField31AVX2; 24]` to `InternalLayer24` - fn from_packed_field_array(vector: [PackedMontyField31AVX2; 24]) -> Self { - unsafe { - // Safety: As described in packing.rs, PackedMontyField31AVX2 can be transmuted to and from `__m256i`. - - // `InternalLayer24` is `repr(C)` so its memory layout looks like: - // `[PackedMontyField31AVX2, __m256i, ..., __m256i]` - // Thus as `PackedMontyField31AVX2` can be can be transmuted to `__m256i`, - // `[PackedMontyField31AVX2; 24]` can be transmuted to `InternalLayer24`. - transmute(vector) - } - } -} - -/// The internal layers of the Poseidon2 permutation for Monty31 fields. -/// -/// The packed constants are stored in negative form as this allows some optimizations. -/// This means given a constant `x`, we treat it as an `i32` and -/// pack 8 copies of `x - P` into the corresponding `__m256i` packed constant. -#[derive(Debug, Clone)] -pub struct Poseidon2InternalLayerMonty31< - PMP: PackedMontyParameters, - const WIDTH: usize, - ILP: InternalLayerParametersAVX2, -> { - pub(crate) internal_constants: Vec>, - packed_internal_constants: Vec<__m256i>, - _phantom: PhantomData, -} - -impl> - InternalLayerConstructor> for Poseidon2InternalLayerMonty31 -{ - /// Construct an instance of Poseidon2InternalLayerMersenne31AVX2 from a vector containing - /// the constants for each round. Internally, the constants are transformed into the - /// {-P, ..., 0} representation instead of the standard {0, ..., P} one. - fn new_from_constants(internal_constants: Vec>) -> Self { - let packed_internal_constants = internal_constants - .iter() - .map(|constant| convert_to_vec_neg_form::(constant.value as i32)) - .collect(); - Self { - internal_constants, - packed_internal_constants, - _phantom: PhantomData, - } - } -} - -/// The external layers of the Poseidon2 permutation for Monty31 fields. -/// -/// The packed constants are stored in negative form as this allows some optimizations. -/// This means given a constant `x`, we treat it as an `i32` and -/// pack 8 copies of `x - P` into the corresponding `__m256i` packed constant. -#[derive(Debug, Clone)] -pub struct Poseidon2ExternalLayerMonty31 { - pub(crate) external_constants: ExternalLayerConstants, WIDTH>, - packed_initial_external_constants: Vec<[__m256i; WIDTH]>, - packed_terminal_external_constants: Vec<[__m256i; WIDTH]>, -} - -impl ExternalLayerConstructor, WIDTH> - for Poseidon2ExternalLayerMonty31 -{ - /// Construct an instance of Poseidon2ExternalLayerMersenne31AVX2 from an array of - /// vectors containing the constants for each round. Internally, the constants - /// are transformed into the {-P, ..., 0} representation instead of the standard {0, ..., P} one. - fn new_from_constants(external_constants: ExternalLayerConstants, WIDTH>) -> Self { - let packed_initial_external_constants = external_constants - .get_initial_constants() - .iter() - .map(|array| array.map(|constant| convert_to_vec_neg_form::(constant.value as i32))) - .collect(); - let packed_terminal_external_constants = external_constants - .get_terminal_constants() - .iter() - .map(|array| array.map(|constant| convert_to_vec_neg_form::(constant.value as i32))) - .collect(); - Self { - external_constants, - packed_initial_external_constants, - packed_terminal_external_constants, - } - } -} - -/// Use hard coded methods to compute `x -> x^D` for the even index entries and small `D`. -/// Inputs should be signed 32-bit integers in `[-P, ..., P]`. -/// Outputs will also be signed integers in `(-P, ..., P)` stored in the odd indices. -/// -/// # Panics -/// This function will panic if `D` is not `3, 5` or `7`. -#[inline(always)] -#[must_use] -fn exp_small(val: __m256i) -> __m256i { - match D { - 3 => packed_exp_3::(val), - 5 => packed_exp_5::(val), - 7 => packed_exp_7::(val), - _ => panic!("No exp function for given D"), - } -} - -/// Compute val -> (val + rc)^D. Each entry of val should be represented in canonical form. -/// Each entry of rc should be represented by an element in [-P, 0]. -/// Each entry of the output will be represented by an element in canonical form. -/// If the inputs do not conform to this representation, the result is undefined. -#[inline(always)] -fn add_rc_and_sbox(val: &mut PackedMontyField31AVX2, rc: __m256i) { - unsafe { - // As our exponential functions simply assume that - // the input lies in [-P, P] we do not need to perform a reduction provided - // rc is represented by an element in [-P, 0] - let vec_val = val.to_vector(); - let val_plus_rc = x86_64::_mm256_add_epi32(vec_val, rc); - let output = apply_func_to_even_odd::(val_plus_rc, exp_small::); - - *val = PackedMontyField31AVX2::::from_vector(output) - } -} - -/// A trait containing the specific information needed to -/// implement the Poseidon2 Permutation for Monty31 Fields. -pub trait InternalLayerParametersAVX2: Clone + Sync { - type ArrayLike: AsMut<[__m256i]>; - - // diagonal_mul and add_sum morally should be one function but are split because diagonal_mul can happen simultaneously to - // the sbox being applied to the first element of the state which is advantageous as this s-box has very high latency. - // However these functions should only ever be used together and we only make safety guarantees about the output - // of the combined function add_sum(diagonal_mul(state), sum) which will output field elements - // in canonical form provided inputs are in canonical form. - - // For these reason we mark both functions as unsafe. - - // All 4 implementation of this trait (Field = BabyBear/KoalaBear, WIDTH = 16/24) have a similarly structured - // diagonal matrix. The first 9 elements of this matrix are always: [-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4] and the remainder - // are all positive or negative inverse powers of two. This common structure lets us write some default implementations. - - /// # Safety - /// - /// This function assumes its output is piped directly into `add_sum`. - /// - /// It might not output field elements in canonical form and indeed may even - /// output incorrect values in places where it is efficient to correct for - /// the computation in `add_sum`. For example it might output `3*x` instead of `-3*x` - /// and have `add_sum` compute `sum - x` instead of `x + sum`. - #[inline(always)] - unsafe fn diagonal_mul(input: &mut Self::ArrayLike) { - unsafe { - Self::diagonal_mul_first_eight(input); // This only affects the first 8 elements. - - Self::diagonal_mul_remainder(input); // This leaves the first 8 elements unchanged. - } - } - - /// # Safety - /// - /// Multiply the first 8 elements of input by the vector `[1, 2, 1/2, 3, 4, 1/2, 3, 4]`. - /// - /// In all implementations of this trait, the first 9 elements of the diagonal matrix are - /// `[-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4]`. The -2 is handled separately and this function handles - /// the remainder. Note that for the last three elements we multiply by `1/2, 3, 4` and not - /// `-1/2, -3, -4`. Hence the value in this location will be the negative of what is desired. - /// This will be handled by `add_sum` and so it is important these elements are not touched - /// before input is passed into `add_sum`. - #[inline(always)] - unsafe fn diagonal_mul_first_eight(input: &mut Self::ArrayLike) { - let input = input.as_mut(); - // The first 5 elements should be multiplied by: 1, 2, 1/2, 3, 4 - - // input[0] is being multiplied by 1 so we ignore it. - - input[1] = mm256_mod_add(input[1], input[1], PMP::PACKED_P); - input[2] = halve_avx2::(input[2]); - - let acc3 = mm256_mod_add(input[3], input[3], PMP::PACKED_P); - input[3] = mm256_mod_add(acc3, input[3], PMP::PACKED_P); - - let acc4 = mm256_mod_add(input[4], input[4], PMP::PACKED_P); - input[4] = mm256_mod_add(acc4, acc4, PMP::PACKED_P); - - // For the final 3 elements we multiply by 1/2, 3, 4. - // This gives the negative of the correct answer which - // will be handled by add_sum(). - - input[5] = halve_avx2::(input[5]); - - let acc6 = mm256_mod_add(input[6], input[6], PMP::PACKED_P); - input[6] = mm256_mod_add(acc6, input[6], PMP::PACKED_P); - - let acc7 = mm256_mod_add(input[7], input[7], PMP::PACKED_P); - input[7] = mm256_mod_add(acc7, acc7, PMP::PACKED_P); - } - - /// # Safety - /// - /// This function must not touch the first 8 elements of input. - /// It may output values which might not be in canonical form or - /// will be the negative of the expected value. This will be - /// handled by `add_sum` so it is important these elements are - /// not touched before input is passed into `add_sum`. - unsafe fn diagonal_mul_remainder(input: &mut Self::ArrayLike); - - /// # Safety - /// - /// Sum must be in canonical form and input must be exactly the output of `diagonal_mul`. - /// If either of these does not hold, the result is undefined. - /// - /// Morally this function is computing `x -> x + sum` however there are some places where - /// the output of `diagonal_mul` is the negative of the expected value or not canonical. - /// It is the job of add_sum to correct for these irregularities. Where the output is negative - /// we compute `x -> sum - x` instead and when not in canonical form we use `signed_add_avx2` - /// where acts as add where one input is allowed to lie in `(-P, P)`. - #[inline(always)] - unsafe fn add_sum(input: &mut Self::ArrayLike, sum: __m256i) { - unsafe { - // Diagonal mul multiplied these by 1, 2, 1/2, 3, 4 so we simply need to add the sum. - input.as_mut()[..5] - .iter_mut() - .for_each(|x| *x = mm256_mod_add(sum, *x, PMP::PACKED_P)); - - // Diagonal mul multiplied these by 1/2, 3, 4 instead of -1/2, -3, -4 so we need to subtract instead of adding. - input.as_mut()[5..8] - .iter_mut() - .for_each(|x| *x = mm256_mod_sub(sum, *x, PMP::PACKED_P)); - - // Diagonal mul output a signed value in (-P, P) so we need to do a signed add. - // Note that signed add's parameters are not interchangeable. The first parameter must be positive. - input.as_mut()[8..] - .iter_mut() - .for_each(|x| *x = signed_add_avx2::(sum, *x)); - } - } -} - -/// Convert elements from canonical form [0, P) to a negative form in [-P, ..., 0) and copy into a vector. -#[inline(always)] -fn convert_to_vec_neg_form(input: i32) -> __m256i { - let input_sub_p = input - (MP::PRIME as i32); - unsafe { - // Safety: If this code got compiled then AVX2 intrinsics are available. - x86_64::_mm256_set1_epi32(input_sub_p) - } -} - -impl InternalLayer, 16, D> - for Poseidon2InternalLayerMonty31 -where - FP: FieldParameters, - ILP: InternalLayerParametersAVX2 + InternalLayerBaseParameters, -{ - /// Perform the internal layers of the Poseidon2 permutation on the given state. - fn permute_state(&self, state: &mut [PackedMontyField31AVX2; 16]) { - unsafe { - // Safety: This return values in canonical form when given values in canonical form. - - /* - Fix a vector v and let Diag(v) denote the diagonal matrix with diagonal given by v. - Additionally, let 1 denote the matrix with all elements equal to 1. - The internal layer consists of an sbox operation then a matrix multiplication by 1 + Diag(v). - Explicitly the internal layer consists of the following 2 operations: - - s0 -> (s0 + rc)^d - s -> (1 + Diag(v))s - - Note that this matrix multiplication is implemented as: - sum = sum_i s_i - s_i -> sum + s_iv_i. - */ - - let mut internal_state = InternalLayer16::from_packed_field_array(*state); - - self.packed_internal_constants.iter().for_each(|&rc| { - add_rc_and_sbox::(&mut internal_state.s0, rc); // s0 -> (s0 + rc)^D - let sum_tail = PackedMontyField31AVX2::::sum_array::<15>(&transmute::< - [__m256i; 15], - [PackedMontyField31AVX2; 15], - >(internal_state.s_hi)); // Get the sum of all elements other than s0. - ILP::diagonal_mul(&mut internal_state.s_hi); // si -> vi * si for all i > 0. - let sum = sum_tail + internal_state.s0; // Get the full sum. - internal_state.s0 = sum_tail - internal_state.s0; // s0 -> sum - 2*s0 = sum_tail - s0. - ILP::add_sum( - &mut internal_state.s_hi, - transmute::, __m256i>(sum), - ); // si -> si + sum for all i > 0. - }); - - // This transformation is safe as the above function returns elements - // in canonical form when given elements in canonical form. - *state = InternalLayer16::to_packed_field_array(internal_state); - } - } -} - -impl InternalLayer, 24, D> - for Poseidon2InternalLayerMonty31 -where - FP: FieldParameters + RelativelyPrimePower, - ILP: InternalLayerParametersAVX2 + InternalLayerBaseParameters, -{ - /// Perform the internal layers of the Poseidon2 permutation on the given state. - fn permute_state(&self, state: &mut [PackedMontyField31AVX2; 24]) { - unsafe { - // Safety: This return values in canonical form when given values in canonical form. - - /* - Fix a vector v and let Diag(v) denote the diagonal matrix with diagonal given by v. - Additionally, let 1 denote the matrix with all elements equal to 1. - The internal layer consists of an sbox operation then a matrix multiplication by 1 + Diag(v). - Explicitly the internal layer consists of the following 2 operations: - - s0 -> (s0 + rc)^d - s -> (1 + Diag(v))s - - Note that this matrix multiplication is implemented as: - sum = sum_i s_i - s_i -> sum + s_iv_i. - */ - - let mut internal_state = InternalLayer24::from_packed_field_array(*state); - - self.packed_internal_constants.iter().for_each(|&rc| { - add_rc_and_sbox::(&mut internal_state.s0, rc); // s0 -> (s0 + rc)^D - let sum_tail = PackedMontyField31AVX2::::sum_array::<23>(&transmute::< - [__m256i; 23], - [PackedMontyField31AVX2; 23], - >(internal_state.s_hi)); // Get the sum of all elements other than s0. - ILP::diagonal_mul(&mut internal_state.s_hi); // si -> vi * si for all i > 0. - let sum = sum_tail + internal_state.s0; // Get the full sum. - internal_state.s0 = sum_tail - internal_state.s0; // s0 -> sum - 2*s0 = sum_tail - s0. - ILP::add_sum( - &mut internal_state.s_hi, - transmute::, __m256i>(sum), - ); // si -> si + sum for all i > 0. - }); - - // This transformation is safe as the above function returns elements - // in canonical form when given elements in canonical form. - *state = InternalLayer24::to_packed_field_array(internal_state); - } - } -} - -impl ExternalLayer, WIDTH, D> - for Poseidon2ExternalLayerMonty31 -where - FP: FieldParameters + RelativelyPrimePower, -{ - /// Perform the initial external layers of the Poseidon2 permutation on the given state. - fn permute_state_initial(&self, state: &mut [PackedMontyField31AVX2; WIDTH]) { - external_initial_permute_state( - state, - &self.packed_initial_external_constants, - add_rc_and_sbox::, - &MDSMat4, - ); - } - - /// Perform the terminal external layers of the Poseidon2 permutation on the given state. - fn permute_state_terminal(&self, state: &mut [PackedMontyField31AVX2; WIDTH]) { - external_terminal_permute_state( - state, - &self.packed_terminal_external_constants, - add_rc_and_sbox::, - &MDSMat4, - ); - } -} diff --git a/crates/backend/koala-bear/src/monty_31/x86_64_avx2/poseidon_helpers.rs b/crates/backend/koala-bear/src/monty_31/x86_64_avx2/poseidon_helpers.rs new file mode 100644 index 00000000..526a4793 --- /dev/null +++ b/crates/backend/koala-bear/src/monty_31/x86_64_avx2/poseidon_helpers.rs @@ -0,0 +1,96 @@ +// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). + +//! AVX2 helpers shared by Poseidon1 permutations. + +use core::arch::x86_64::{self, __m256i}; +use core::mem::transmute; + +use crate::{ + MontyParameters, PackedMontyField31AVX2, PackedMontyParameters, apply_func_to_even_odd, packed_exp_3, packed_exp_5, + packed_exp_7, +}; + +/// A specialized representation of the Poseidon state for a width of 16. +/// +/// Splits the state into `s0` (undergoes S-box) and `s_hi` (undergoes only linear transforms), +/// enabling instruction-level parallelism between the two independent data paths. +#[derive(Clone, Copy)] +#[repr(C)] +pub struct InternalLayer16 { + pub(crate) s0: PackedMontyField31AVX2, + pub(crate) s_hi: [__m256i; 15], +} + +impl InternalLayer16 { + #[inline] + pub(crate) unsafe fn to_packed_field_array(self) -> [PackedMontyField31AVX2; 16] { + unsafe { transmute(self) } + } + + #[inline] + #[must_use] + pub(crate) fn from_packed_field_array(vector: [PackedMontyField31AVX2; 16]) -> Self { + unsafe { transmute(vector) } + } +} + +/// A specialized representation of the Poseidon state for a width of 24. +/// +/// Same split as `InternalLayer16` but for width 24. +#[derive(Clone, Copy)] +#[repr(C)] +pub struct InternalLayer24 { + pub(crate) s0: PackedMontyField31AVX2, + pub(crate) s_hi: [__m256i; 23], +} + +impl InternalLayer24 { + #[inline] + pub(crate) unsafe fn to_packed_field_array(self) -> [PackedMontyField31AVX2; 24] { + unsafe { transmute(self) } + } + + #[inline] + #[must_use] + pub(crate) fn from_packed_field_array(vector: [PackedMontyField31AVX2; 24]) -> Self { + unsafe { transmute(vector) } + } +} + +/// Use hard coded methods to compute `x -> x^D` for the even index entries and small `D`. +/// Inputs should be signed 32-bit integers in `[-P, ..., P]`. +/// Outputs will also be signed integers in `(-P, ..., P)` stored in the odd indices. +#[inline(always)] +#[must_use] +pub(crate) fn exp_small(val: __m256i) -> __m256i { + match D { + 3 => packed_exp_3::(val), + 5 => packed_exp_5::(val), + 7 => packed_exp_7::(val), + _ => panic!("No exp function for given D"), + } +} + +/// Converts a scalar constant into a packed AVX2 vector in "negative form" (`c - P`). +#[inline(always)] +pub(crate) fn convert_to_vec_neg_form(input: i32) -> __m256i { + let input_sub_p = input - (MP::PRIME as i32); + unsafe { x86_64::_mm256_set1_epi32(input_sub_p) } +} + +/// Performs the fused AddRoundConstant and S-Box operation `x -> (x + c)^D`. +/// +/// `val` must contain elements in canonical form `[0, P)`. +/// `rc` must contain round constants in negative form `[-P, 0)`. +#[inline(always)] +pub(crate) fn add_rc_and_sbox( + val: &mut PackedMontyField31AVX2, + rc: __m256i, +) { + unsafe { + let vec_val = val.to_vector(); + let val_plus_rc = x86_64::_mm256_add_epi32(vec_val, rc); + let output = apply_func_to_even_odd::(val_plus_rc, exp_small::); + *val = PackedMontyField31AVX2::::from_vector(output); + } +} diff --git a/crates/backend/koala-bear/src/monty_31/x86_64_avx512/mod.rs b/crates/backend/koala-bear/src/monty_31/x86_64_avx512/mod.rs index 23251862..993e232b 100644 --- a/crates/backend/koala-bear/src/monty_31/x86_64_avx512/mod.rs +++ b/crates/backend/koala-bear/src/monty_31/x86_64_avx512/mod.rs @@ -1,9 +1,9 @@ // Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). mod packing; -mod poseidon2; +pub(crate) mod poseidon_helpers; mod utils; pub use packing::*; -pub use poseidon2::*; +pub(crate) use poseidon_helpers::*; pub use utils::*; diff --git a/crates/backend/koala-bear/src/monty_31/x86_64_avx512/packing.rs b/crates/backend/koala-bear/src/monty_31/x86_64_avx512/packing.rs index 5fe33629..76683350 100644 --- a/crates/backend/koala-bear/src/monty_31/x86_64_avx512/packing.rs +++ b/crates/backend/koala-bear/src/monty_31/x86_64_avx512/packing.rs @@ -79,7 +79,7 @@ impl PackedMontyField31AVX512 { /// Copy `value` to all positions in a packed vector. This is the same as /// `From::from`, but `const`. #[inline] - const fn broadcast(value: MontyField31) -> Self { + pub(crate) const fn broadcast(value: MontyField31) -> Self { Self([value; WIDTH]) } diff --git a/crates/backend/koala-bear/src/monty_31/x86_64_avx512/poseidon2.rs b/crates/backend/koala-bear/src/monty_31/x86_64_avx512/poseidon2.rs deleted file mode 100644 index 2778d9cf..00000000 --- a/crates/backend/koala-bear/src/monty_31/x86_64_avx512/poseidon2.rs +++ /dev/null @@ -1,470 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -//! Vectorized AVX512 implementation of Poseidon2 for MontyField31 - -use alloc::vec::Vec; -use core::arch::x86_64::{self, __m512i}; -use core::marker::PhantomData; -use core::mem::transmute; - -use crate::poseidon2::{ - ExternalLayer, ExternalLayerConstants, ExternalLayerConstructor, InternalLayer, InternalLayerConstructor, MDSMat4, - external_initial_permute_state, external_terminal_permute_state, -}; -use field::{PrimeCharacteristicRing, mm512_mod_add, mm512_mod_sub}; - -use super::halve_avx512; -use crate::{ - FieldParameters, MontyField31, MontyParameters, PackedMontyField31AVX512, PackedMontyParameters, - RelativelyPrimePower, apply_func_to_even_odd, packed_exp_3, packed_exp_5, packed_exp_7, -}; - -// In the internal layers, it is valuable to treat the first entry of the state differently -// as it is the only entry to which we apply s-box. -// It seems to help the compiler if we introduce a different data structure for these layers. -// Note that we use this structure instead of a tuple so we can force the memory layout to align for transmutes. -#[derive(Clone, Copy)] -#[repr(C)] // This is needed to make `transmute`s safe. -pub struct InternalLayer16 { - s0: PackedMontyField31AVX512, - s_hi: [__m512i; 15], -} - -impl InternalLayer16 { - #[inline] - /// Convert from `InternalLayer16` to `[PackedMontyField31AVX512; 16]` - /// - /// SAFETY: The caller must ensure that each element of `s_hi` represents a valid `MontyField31`. - /// In particular, each element of each vector must be in `[0, P)` (canonical form). - unsafe fn to_packed_field_array(self) -> [PackedMontyField31AVX512; 16] { - unsafe { - // Safety: It is up to the user to ensure that elements of `s_hi` represent valid - // `MontyField31` values. We must only reason about memory representations. - // As described in packing.rs, PackedMontyField31AVX512 can be transmuted to and from `__m512i`. - - // `InternalLayer16` is `repr(C)` so its memory layout looks like: - // `[PackedMontyField31AVX512, __m512i, ..., __m512i]` - // Thus as `__m512i` can be can be transmuted to `PackedMontyField31AVX512`, - // `InternalLayer16` can be transmuted to `[PackedMontyField31AVX512; 16]`. - transmute(self) - } - } - - #[inline] - #[must_use] - /// Convert from `[PackedMontyField31AVX512; 16]` to `InternalLayer16` - fn from_packed_field_array(vector: [PackedMontyField31AVX512; 16]) -> Self { - unsafe { - // Safety: As described in packing.rs, PackedMontyField31AVX512 can be transmuted to and from `__m512i`. - - // `InternalLayer16` is `repr(C)` so its memory layout looks like: - // `[PackedMontyField31AVX512, __m512i, ..., __m512i]` - // Thus as `PackedMontyField31AVX512` can be can be transmuted to `__m512i`, - // `[PackedMontyField31AVX512; 16]` can be transmuted to `InternalLayer16`. - transmute(vector) - } - } -} - -#[derive(Clone, Copy)] -#[repr(C)] // This is needed to make `transmute`s safe. -pub struct InternalLayer24 { - s0: PackedMontyField31AVX512, - s_hi: [__m512i; 23], -} - -impl InternalLayer24 { - #[inline] - /// Convert from `InternalLayer24` to `[PackedMontyField31AVX512; 24]` - /// - /// SAFETY: The caller must ensure that each element of `s_hi` represents a valid `MontyField31`. - /// In particular, each element of each vector must be in `[0, P)` (canonical form). - unsafe fn to_packed_field_array(self) -> [PackedMontyField31AVX512; 24] { - unsafe { - // Safety: As described in packing.rs, PackedMontyField31AVX512 can be transmuted to and from `__m512i`. - - // `InternalLayer24` is `repr(C)` so its memory layout looks like: - // `[PackedMontyField31AVX512, __m512i, ..., __m512i]` - // Thus as `__m512i` can be can be transmuted to `PackedMontyField31AVX512`, - // `InternalLayer24` can be transmuted to `[PackedMontyField31AVX512; 24]`. - transmute(self) - } - } - - #[inline] - #[must_use] - /// Convert from `[PackedMontyField31AVX512; 24]` to `InternalLayer24` - fn from_packed_field_array(vector: [PackedMontyField31AVX512; 24]) -> Self { - unsafe { - // Safety: As described in packing.rs, PackedMontyField31AVX512 can be transmuted to and from `__m512i`. - - // `InternalLayer24` is `repr(C)` so its memory layout looks like: - // `[PackedMontyField31AVX512, __m512i, ..., __m512i]` - // Thus as `PackedMontyField31AVX512` can be can be transmuted to `__m512i`, - // `[PackedMontyField31AVX512; 24]` can be transmuted to `InternalLayer24`. - transmute(vector) - } - } -} - -/// The internal layers of the Poseidon2 permutation for Monty31 fields. -/// -/// The packed constants are stored in negative form as this allows some optimizations. -/// This means given a constant `x`, we treat it as an `i32` and -/// pack 16 copies of `x - P` into the corresponding `__m512i` packed constant. -#[derive(Debug, Clone)] -pub struct Poseidon2InternalLayerMonty31< - PMP: PackedMontyParameters, - const WIDTH: usize, - ILP: InternalLayerParametersAVX512, -> { - pub(crate) internal_constants: Vec>, - packed_internal_constants: Vec<__m512i>, - _phantom: PhantomData, -} - -impl> - InternalLayerConstructor> for Poseidon2InternalLayerMonty31 -{ - /// Construct an instance of Poseidon2InternalLayerMersenne31AVX2 from a vector containing - /// the constants for each round. Internally, the constants are transformed into the - /// {-P, ..., 0} representation instead of the standard {0, ..., P} one. - fn new_from_constants(internal_constants: Vec>) -> Self { - let packed_internal_constants = internal_constants - .iter() - .map(|constant| convert_to_vec_neg_form::(constant.value as i32)) - .collect(); - Self { - internal_constants, - packed_internal_constants, - _phantom: PhantomData, - } - } -} - -/// The external layers of the Poseidon2 permutation for Monty31 fields. -/// -/// The packed constants are stored in negative form as this allows some optimizations. -/// This means given a constant `x`, we treat it as an `i32` and -/// pack 16 copies of `x - P` into the corresponding `__m512i` packed constant. -#[derive(Debug, Clone)] -pub struct Poseidon2ExternalLayerMonty31 { - pub(crate) external_constants: ExternalLayerConstants, WIDTH>, - packed_initial_external_constants: Vec<[__m512i; WIDTH]>, - packed_terminal_external_constants: Vec<[__m512i; WIDTH]>, -} - -impl ExternalLayerConstructor, WIDTH> - for Poseidon2ExternalLayerMonty31 -{ - /// Construct an instance of Poseidon2ExternalLayerMersenne31AVX2 from an array of - /// vectors containing the constants for each round. Internally, the constants - /// are transformed into the {-P, ..., 0} representation instead of the standard {0, ..., P} one. - fn new_from_constants(external_constants: ExternalLayerConstants, WIDTH>) -> Self { - let packed_initial_external_constants = external_constants - .get_initial_constants() - .iter() - .map(|array| array.map(|constant| convert_to_vec_neg_form::(constant.value as i32))) - .collect(); - let packed_terminal_external_constants = external_constants - .get_terminal_constants() - .iter() - .map(|array| array.map(|constant| convert_to_vec_neg_form::(constant.value as i32))) - .collect(); - Self { - external_constants, - packed_initial_external_constants, - packed_terminal_external_constants, - } - } -} - -/// Use hard coded methods to compute `x -> x^D` for the even index entries and small `D`. -/// Inputs should be signed 32-bit integers in `[-P, ..., P]`. -/// Outputs will also be signed integers in `(-P, ..., P)` stored in the odd indices. -/// -/// # Panics -/// This function will panic if `D` is not `3, 5` or `7`. -#[inline(always)] -#[must_use] -fn exp_small(val: __m512i) -> __m512i { - match D { - 3 => packed_exp_3::(val), - 5 => packed_exp_5::(val), - 7 => packed_exp_7::(val), - _ => panic!("No exp function for given D"), - } -} - -/// Compute val -> (val + rc)^D. Each entry of val should be represented in canonical form. -/// Each entry of rc should be represented by an element in [-P, 0]. -/// Each entry of the output will be represented by an element in canonical form. -/// If the inputs do not conform to this representation, the result is undefined. -#[inline(always)] -fn add_rc_and_sbox(val: &mut PackedMontyField31AVX512, rc: __m512i) { - unsafe { - // As our exponential functions simply assume that - // the input lies in [-P, P] we do not need to perform a reduction provided - // rc is represented by an element in [-P, 0] - let vec_val = val.to_vector(); - let val_plus_rc = x86_64::_mm512_add_epi32(vec_val, rc); - let output = apply_func_to_even_odd::(val_plus_rc, exp_small::); - - *val = PackedMontyField31AVX512::::from_vector(output); - } -} - -/// A trait containing the specific information needed to -/// implement the Poseidon2 Permutation for Monty31 Fields. -pub trait InternalLayerParametersAVX512: Clone + Sync { - type ArrayLike: AsMut<[__m512i]>; - - // diagonal_mul and add_sum morally should be one function but are split because diagonal_mul can happen simultaneously to - // the sbox being applied to the first element of the state which is advantageous as this s-box has very high latency. - // However these functions should only ever be used together and we only make safety guarantees about the output - // of the combined function add_sum(diagonal_mul(state), sum) which will output field elements - // in canonical form provided inputs are in canonical form. - - // For these reason we mark both functions as unsafe. - - // All 4 implementation of this trait (Field = BabyBear/KoalaBear, WIDTH = 16/24) have a similarly structured - // diagonal matrix. The first 9 elements of this matrix are: [-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4] and the remainder - // are all positive or negative inverse powers of two. This common structure lets us write some default implementations. - - /// # Safety - /// - /// This function assumes its output is piped directly into `add_sum`. - /// - /// It might not output field elements in canonical form and indeed may even - /// output incorrect values in places where it is efficient to correct for - /// the computation in `add_sum`. For example it might output `3*x` instead of `-3*x` - /// and have `add_sum` compute `sum - x` instead of `x + sum`. - #[inline(always)] - unsafe fn diagonal_mul(input: &mut Self::ArrayLike) { - unsafe { - Self::diagonal_mul_first_eight(input); - Self::diagonal_mul_remainder(input); - } - } - - /// # Safety - /// - /// Multiply the first 8 elements of input by the vector `[1, 2, 1/2, 3, 4, 1/2, 3, 4]`. - /// - /// In all implementations of this trait, the first 9 elements of the diagonal matrix are - /// `[-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4]`. The -2 is handled separately and this function handles - /// the remainder. Note that for the last three elements we multiply by `1/2, 3, 4` and not - /// `-1/2, -3, -4`. Hence the value in this location will be the negative of what is desired. - /// This will be handled by `add_sum` and so it is important these elements are not touched - /// before input is passed into `add_sum`. - #[inline(always)] - unsafe fn diagonal_mul_first_eight(input: &mut Self::ArrayLike) { - let input = input.as_mut(); - // The first 5 elements should be multiplied by: 1, 2, 1/2, 3, 4 - - // input[0] is being multiplied by 1 so we ignore it. - - input[1] = mm512_mod_add(input[1], input[1], PMP::PACKED_P); - input[2] = halve_avx512::(input[2]); - - let acc3 = mm512_mod_add(input[3], input[3], PMP::PACKED_P); - input[3] = mm512_mod_add(acc3, input[3], PMP::PACKED_P); - - let acc4 = mm512_mod_add(input[4], input[4], PMP::PACKED_P); - input[4] = mm512_mod_add(acc4, acc4, PMP::PACKED_P); - - // For the final 3 elements we multiply by 1/2, 3, 4. - // This gives the negative of the correct answer which - // will be handled by add_sum(). - - input[5] = halve_avx512::(input[5]); - - let acc6 = mm512_mod_add(input[6], input[6], PMP::PACKED_P); - input[6] = mm512_mod_add(acc6, input[6], PMP::PACKED_P); - - let acc7 = mm512_mod_add(input[7], input[7], PMP::PACKED_P); - input[7] = mm512_mod_add(acc7, acc7, PMP::PACKED_P); - } - - /// # Safety - /// - /// This function must not touch the first 8 elements of input. - /// It may output values which are the negative of the expected - /// value in some places. This will be handled by `add_sum` so - /// it is important these elements are not touched - /// before input is passed into `add_sum`. - unsafe fn diagonal_mul_remainder(input: &mut Self::ArrayLike); - - /// The number of positive inverse powers of two in the diagonal matrix after the 4. - const NUM_POS: usize; - - /// # Safety - /// - /// Sum must be in canonical form and input must be exactly the output of `diagonal_mul`. - /// If either of these does not hold, the result is undefined. - /// - /// Morally this function is computing `x -> x + sum` however there are some places where - /// the output of `diagonal_mul` is the negative of the expected value and might lie - /// in [0, P] instead of being in canonical form. - /// - /// It is the job of add_sum to correct for these irregularities. Where the output is negative - /// we compute `x -> sum - x` instead. - #[inline(always)] - unsafe fn add_sum(input: &mut Self::ArrayLike, sum: __m512i) { - // Both mm512_mod_add and mm512_mod_sub will return correct values in [0, P) when one - // input is in [0, P) and the other is in [0, P]. - - // Diagonal mul multiplied these by 1, 2, 1/2, 3, 4 so we simply need to add the sum. - input.as_mut()[..5] - .iter_mut() - .for_each(|x| *x = mm512_mod_add(sum, *x, PMP::PACKED_P)); - - // Diagonal mul multiplied these by 1/2, 3, 4 instead of -1/2, -3, -4 so we need to subtract instead of adding. - // Similarly we can only cheaply multiply by negative inverse powers of two so we also need to subtract for all - // the positive powers of two. - input.as_mut()[5..(8 + Self::NUM_POS)] - .iter_mut() - .for_each(|x| *x = mm512_mod_sub(sum, *x, PMP::PACKED_P)); - - // The remainder are all correctly multiplied by negative inverse powers of two so - // we just need to add the sum. - input.as_mut()[8 + Self::NUM_POS..] - .iter_mut() - .for_each(|x| *x = mm512_mod_add(sum, *x, PMP::PACKED_P)); - } -} - -/// Convert elements from canonical form [0, P) to a negative form in [-P, ..., 0) and copy into a vector. -#[inline(always)] -fn convert_to_vec_neg_form(input: i32) -> __m512i { - let input_sub_p = input - (MP::PRIME as i32); - unsafe { - // Safety: If this code got compiled then AVX512-F intrinsics are available. - x86_64::_mm512_set1_epi32(input_sub_p) - } -} - -impl InternalLayer, 16, D> - for Poseidon2InternalLayerMonty31 -where - FP: FieldParameters + RelativelyPrimePower, - ILP: InternalLayerParametersAVX512, -{ - /// Perform the internal layers of the Poseidon2 permutation on the given state. - fn permute_state(&self, state: &mut [PackedMontyField31AVX512; 16]) { - unsafe { - // Safety: This return values in canonical form when given values in canonical form. - /* - Fix a vector v and let Diag(v) denote the diagonal matrix with diagonal given by v. - Additionally, let 1 denote the matrix with all elements equal to 1. - The internal layer consists of an sbox operation then a matrix multiplication by 1 + Diag(v). - Explicitly the internal layer consists of the following 2 operations: - - s0 -> (s0 + rc)^d - s -> (1 + Diag(v))s - - Note that this matrix multiplication can be implemented as: - sum = sum_i s_i - s_i -> sum + s_iv_i - - which is essentially how we implement it. - */ - - let mut internal_state = InternalLayer16::from_packed_field_array(*state); - - self.packed_internal_constants.iter().for_each(|&rc| { - add_rc_and_sbox::(&mut internal_state.s0, rc); // s0 -> (s0 + rc)^D - let sum_tail = PackedMontyField31AVX512::::sum_array::<15>(&transmute::< - [__m512i; 15], - [PackedMontyField31AVX512; 15], - >(internal_state.s_hi)); // Get the sum of all elements other than s0. - ILP::diagonal_mul(&mut internal_state.s_hi); // si -> vi * si for all i > 0. - let sum = sum_tail + internal_state.s0; // Get the full sum. - internal_state.s0 = sum_tail - internal_state.s0; // s0 -> sum - 2*s0 = sum_tail - s0. - ILP::add_sum( - &mut internal_state.s_hi, - transmute::, __m512i>(sum), - ); // si -> si + sum for all i > 0. - }); - - // This transformation is safe as the above function returns elements - // in canonical form when given elements in canonical form. - *state = InternalLayer16::to_packed_field_array(internal_state); - } - } -} - -impl InternalLayer, 24, D> - for Poseidon2InternalLayerMonty31 -where - FP: FieldParameters, - ILP: InternalLayerParametersAVX512, -{ - /// Perform the internal layers of the Poseidon2 permutation on the given state. - fn permute_state(&self, state: &mut [PackedMontyField31AVX512; 24]) { - unsafe { - // Safety: This return values in canonical form when given values in canonical form. - - /* - Fix a vector v and let Diag(v) denote the diagonal matrix with diagonal given by v. - Additionally, let 1 denote the matrix with all elements equal to 1. - The internal layer consists of an sbox operation then a matrix multiplication by 1 + Diag(v). - Explicitly the internal layer consists of the following 2 operations: - - s0 -> (s0 + rc)^d - s -> (1 + Diag(v))s - - Note that this matrix multiplication is implemented as: - sum = sum_i s_i - s_i -> sum + s_iv_i. - */ - - let mut internal_state = InternalLayer24::from_packed_field_array(*state); - - self.packed_internal_constants.iter().for_each(|&rc| { - add_rc_and_sbox::(&mut internal_state.s0, rc); // s0 -> (s0 + rc)^D - let sum_tail = PackedMontyField31AVX512::::sum_array::<23>(&transmute::< - [__m512i; 23], - [PackedMontyField31AVX512; 23], - >(internal_state.s_hi)); // Get the sum of all elements other than s0. - ILP::diagonal_mul(&mut internal_state.s_hi); // si -> vi * si for all i > 0. - let sum = sum_tail + internal_state.s0; // Get the full sum. - internal_state.s0 = sum_tail - internal_state.s0; // s0 -> sum - 2*s0 = sum_tail - s0. - ILP::add_sum( - &mut internal_state.s_hi, - transmute::, __m512i>(sum), - ); // si -> si + sum for all i > 0. - }); - - // This transformation is safe as the above function returns elements - // in canonical form when given elements in canonical form. - *state = InternalLayer24::to_packed_field_array(internal_state); - } - } -} - -impl ExternalLayer, WIDTH, D> - for Poseidon2ExternalLayerMonty31 -where - FP: FieldParameters + RelativelyPrimePower, -{ - /// Perform the initial external layers of the Poseidon2 permutation on the given state. - fn permute_state_initial(&self, state: &mut [PackedMontyField31AVX512; WIDTH]) { - external_initial_permute_state( - state, - &self.packed_initial_external_constants, - add_rc_and_sbox::, - &MDSMat4, - ); - } - - /// Perform the terminal external layers of the Poseidon2 permutation on the given state. - fn permute_state_terminal(&self, state: &mut [PackedMontyField31AVX512; WIDTH]) { - external_terminal_permute_state( - state, - &self.packed_terminal_external_constants, - add_rc_and_sbox::, - &MDSMat4, - ); - } -} diff --git a/crates/backend/koala-bear/src/monty_31/x86_64_avx512/poseidon_helpers.rs b/crates/backend/koala-bear/src/monty_31/x86_64_avx512/poseidon_helpers.rs new file mode 100644 index 00000000..3c590e6e --- /dev/null +++ b/crates/backend/koala-bear/src/monty_31/x86_64_avx512/poseidon_helpers.rs @@ -0,0 +1,96 @@ +// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). + +//! AVX512 helpers shared by Poseidon1 permutations. + +use core::arch::x86_64::{self, __m512i}; +use core::mem::transmute; + +use crate::{ + MontyParameters, PackedMontyField31AVX512, PackedMontyParameters, apply_func_to_even_odd, packed_exp_3, + packed_exp_5, packed_exp_7, +}; + +/// A specialized representation of the Poseidon state for a width of 16. +/// +/// Splits the state into `s0` (undergoes S-box) and `s_hi` (undergoes only linear transforms), +/// enabling instruction-level parallelism between the two independent data paths. +#[derive(Clone, Copy)] +#[repr(C)] +pub struct InternalLayer16 { + pub(crate) s0: PackedMontyField31AVX512, + pub(crate) s_hi: [__m512i; 15], +} + +impl InternalLayer16 { + #[inline] + pub(crate) unsafe fn to_packed_field_array(self) -> [PackedMontyField31AVX512; 16] { + unsafe { transmute(self) } + } + + #[inline] + #[must_use] + pub(crate) fn from_packed_field_array(vector: [PackedMontyField31AVX512; 16]) -> Self { + unsafe { transmute(vector) } + } +} + +/// A specialized representation of the Poseidon state for a width of 24. +/// +/// Same split as `InternalLayer16` but for width 24. +#[derive(Clone, Copy)] +#[repr(C)] +pub struct InternalLayer24 { + pub(crate) s0: PackedMontyField31AVX512, + pub(crate) s_hi: [__m512i; 23], +} + +impl InternalLayer24 { + #[inline] + pub(crate) unsafe fn to_packed_field_array(self) -> [PackedMontyField31AVX512; 24] { + unsafe { transmute(self) } + } + + #[inline] + #[must_use] + pub(crate) fn from_packed_field_array(vector: [PackedMontyField31AVX512; 24]) -> Self { + unsafe { transmute(vector) } + } +} + +/// Use hard coded methods to compute `x -> x^D` for the even index entries and small `D`. +/// Inputs should be signed 32-bit integers in `[-P, ..., P]`. +/// Outputs will also be signed integers in `(-P, ..., P)` stored in the odd indices. +#[inline(always)] +#[must_use] +pub(crate) fn exp_small(val: __m512i) -> __m512i { + match D { + 3 => packed_exp_3::(val), + 5 => packed_exp_5::(val), + 7 => packed_exp_7::(val), + _ => panic!("No exp function for given D"), + } +} + +/// Converts a scalar constant into a packed AVX512 vector in "negative form" (`c - P`). +#[inline(always)] +pub(crate) fn convert_to_vec_neg_form(input: i32) -> __m512i { + let input_sub_p = input - (MP::PRIME as i32); + unsafe { x86_64::_mm512_set1_epi32(input_sub_p) } +} + +/// Performs the fused AddRoundConstant and S-Box operation `x -> (x + c)^D`. +/// +/// `val` must contain elements in canonical form `[0, P)`. +/// `rc` must contain round constants in negative form `[-P, 0)`. +#[inline(always)] +pub(crate) fn add_rc_and_sbox( + val: &mut PackedMontyField31AVX512, + rc: __m512i, +) { + unsafe { + let vec_val = val.to_vector(); + let val_plus_rc = x86_64::_mm512_add_epi32(vec_val, rc); + let output = apply_func_to_even_odd::(val_plus_rc, exp_small::); + *val = PackedMontyField31AVX512::::from_vector(output); + } +} diff --git a/crates/backend/koala-bear/src/poseidon1_koalabear_16.rs b/crates/backend/koala-bear/src/poseidon1_koalabear_16.rs new file mode 100644 index 00000000..df2c8158 --- /dev/null +++ b/crates/backend/koala-bear/src/poseidon1_koalabear_16.rs @@ -0,0 +1,1037 @@ +// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). + +use std::sync::OnceLock; + +use core::ops::Mul; + +use crate::KoalaBear; +use crate::symmetric::Permutation; +use field::{Algebra, Field, InjectiveMonomial, PrimeCharacteristicRing}; + +pub const POSEIDON1_WIDTH: usize = 16; +pub const POSEIDON1_HALF_FULL_ROUNDS: usize = 4; +pub const POSEIDON1_PARTIAL_ROUNDS: usize = 20; +pub const POSEIDON1_SBOX_DEGREE: u64 = 3; +const POSEIDON1_N_ROUNDS: usize = 2 * POSEIDON1_HALF_FULL_ROUNDS + POSEIDON1_PARTIAL_ROUNDS; + +// ========================================================================= +// MDS circulant matrix +// ========================================================================= + +/// First column of the circulant MDS matrix. +const MDS_CIRC_COL: [KoalaBear; 16] = KoalaBear::new_array([1, 3, 13, 22, 67, 2, 15, 63, 101, 1, 2, 17, 11, 1, 51, 1]); + +// ========================================================================= +// Forward twiddles for 16-point FFT: W_k = omega^k +// ========================================================================= + +const W1: KoalaBear = KoalaBear::new(0x08dbd69c); +const W2: KoalaBear = KoalaBear::new(0x6832fe4a); +const W3: KoalaBear = KoalaBear::new(0x27ae21e2); +const W4: KoalaBear = KoalaBear::new(0x7e010002); +const W5: KoalaBear = KoalaBear::new(0x3a89a025); +const W6: KoalaBear = KoalaBear::new(0x174e3650); +const W7: KoalaBear = KoalaBear::new(0x27dfce22); + +// ========================================================================= +// 16-point FFT / IFFT (radix-2, fully unrolled, in-place) +// ========================================================================= + +#[inline(always)] +fn bt>(v: &mut [R; 16], lo: usize, hi: usize) { + let (a, b) = (v[lo], v[hi]); + v[lo] = a + b; + v[hi] = a - b; +} + +#[inline(always)] +fn dit>(v: &mut [R; 16], lo: usize, hi: usize, t: KoalaBear) { + let a = v[lo]; + let tb = v[hi] * t; + v[lo] = a + tb; + v[hi] = a - tb; +} + +#[inline(always)] +fn neg_dif>(v: &mut [R; 16], lo: usize, hi: usize, t: KoalaBear) { + let (a, b) = (v[lo], v[hi]); + v[lo] = a + b; + v[hi] = (b - a) * t; +} + +#[inline(always)] +fn dif_ifft_16_mut>(f: &mut [R; 16]) { + bt(f, 0, 8); + neg_dif(f, 1, 9, W7); + neg_dif(f, 2, 10, W6); + neg_dif(f, 3, 11, W5); + neg_dif(f, 4, 12, W4); + neg_dif(f, 5, 13, W3); + neg_dif(f, 6, 14, W2); + neg_dif(f, 7, 15, W1); + bt(f, 0, 4); + neg_dif(f, 1, 5, W6); + neg_dif(f, 2, 6, W4); + neg_dif(f, 3, 7, W2); + bt(f, 8, 12); + neg_dif(f, 9, 13, W6); + neg_dif(f, 10, 14, W4); + neg_dif(f, 11, 15, W2); + bt(f, 0, 2); + neg_dif(f, 1, 3, W4); + bt(f, 4, 6); + neg_dif(f, 5, 7, W4); + bt(f, 8, 10); + neg_dif(f, 9, 11, W4); + bt(f, 12, 14); + neg_dif(f, 13, 15, W4); + bt(f, 0, 1); + bt(f, 2, 3); + bt(f, 4, 5); + bt(f, 6, 7); + bt(f, 8, 9); + bt(f, 10, 11); + bt(f, 12, 13); + bt(f, 14, 15); +} + +#[inline(always)] +fn dit_fft_16_mut>(f: &mut [R; 16]) { + bt(f, 0, 1); + bt(f, 2, 3); + bt(f, 4, 5); + bt(f, 6, 7); + bt(f, 8, 9); + bt(f, 10, 11); + bt(f, 12, 13); + bt(f, 14, 15); + bt(f, 0, 2); + dit(f, 1, 3, W4); + bt(f, 4, 6); + dit(f, 5, 7, W4); + bt(f, 8, 10); + dit(f, 9, 11, W4); + bt(f, 12, 14); + dit(f, 13, 15, W4); + bt(f, 0, 4); + dit(f, 1, 5, W2); + dit(f, 2, 6, W4); + dit(f, 3, 7, W6); + bt(f, 8, 12); + dit(f, 9, 13, W2); + dit(f, 10, 14, W4); + dit(f, 11, 15, W6); + bt(f, 0, 8); + dit(f, 1, 9, W1); + dit(f, 2, 10, W2); + dit(f, 3, 11, W3); + dit(f, 4, 12, W4); + dit(f, 5, 13, W5); + dit(f, 6, 14, W6); + dit(f, 7, 15, W7); +} + +// ========================================================================= +// Circulant MDS via Karatsuba convolution (used for full rounds) +// +// Ported from Plonky3 mds/src/karatsuba_convolution.rs. +// Uses field arithmetic (halve + mixed dot product). +// Exploits small MDS column entries (1, 2, 3 = cheap muls). +// ========================================================================= + +#[inline(always)] +fn parity_dot, const N: usize>( + lhs: [R; N], + rhs: [KoalaBear; N], +) -> R { + let mut acc = lhs[0] * rhs[0]; + for i in 1..N { + acc += lhs[i] * rhs[i]; + } + acc +} + +#[inline(always)] +fn conv4>(lhs: [R; 4], rhs: [KoalaBear; 4], output: &mut [R]) { + let u_p = [lhs[0] + lhs[2], lhs[1] + lhs[3]]; + let u_m = [lhs[0] - lhs[2], lhs[1] - lhs[3]]; + let v_p = [rhs[0] + rhs[2], rhs[1] + rhs[3]]; + let v_m = [rhs[0] - rhs[2], rhs[1] - rhs[3]]; + output[0] = parity_dot(u_m, [v_m[0], -v_m[1]]); + output[1] = parity_dot(u_m, [v_m[1], v_m[0]]); + output[2] = parity_dot(u_p, v_p); + output[3] = parity_dot(u_p, [v_p[1], v_p[0]]); + output[0] += output[2]; + output[1] += output[3]; + output[0] = output[0].halve(); + output[1] = output[1].halve(); + output[2] -= output[0]; + output[3] -= output[1]; +} + +#[inline(always)] +fn negacyclic_conv4>( + lhs: [R; 4], + rhs: [KoalaBear; 4], + output: &mut [R], +) { + output[0] = parity_dot(lhs, [rhs[0], -rhs[3], -rhs[2], -rhs[1]]); + output[1] = parity_dot(lhs, [rhs[1], rhs[0], -rhs[3], -rhs[2]]); + output[2] = parity_dot(lhs, [rhs[2], rhs[1], rhs[0], -rhs[3]]); + output[3] = parity_dot(lhs, [rhs[3], rhs[2], rhs[1], rhs[0]]); +} + +#[inline(always)] +fn conv_n_recursive, const N: usize, const H: usize>( + lhs: [R; N], + rhs: [KoalaBear; N], + output: &mut [R], + inner_conv: fn([R; H], [KoalaBear; H], &mut [R]), + inner_neg: fn([R; H], [KoalaBear; H], &mut [R]), +) { + let mut lp = [R::ZERO; H]; + let mut ln = [R::ZERO; H]; + let mut rp = [KoalaBear::ZERO; H]; + let mut rn = [KoalaBear::ZERO; H]; + for i in 0..H { + lp[i] = lhs[i] + lhs[i + H]; + ln[i] = lhs[i] - lhs[i + H]; + rp[i] = rhs[i] + rhs[i + H]; + rn[i] = rhs[i] - rhs[i + H]; + } + let (left, right) = output.split_at_mut(H); + inner_neg(ln, rn, left); + inner_conv(lp, rp, right); + for i in 0..H { + left[i] += right[i]; + left[i] = left[i].halve(); + right[i] -= left[i]; + } +} + +#[inline(always)] +fn negacyclic_conv_n_recursive< + R: PrimeCharacteristicRing + Mul, + const N: usize, + const H: usize, +>( + lhs: [R; N], + rhs: [KoalaBear; N], + output: &mut [R], + inner_neg: fn([R; H], [KoalaBear; H], &mut [R]), +) { + let mut le = [R::ZERO; H]; + let mut lo = [R::ZERO; H]; + let mut ls = [R::ZERO; H]; + let mut re = [KoalaBear::ZERO; H]; + let mut ro = [KoalaBear::ZERO; H]; + let mut rs = [KoalaBear::ZERO; H]; + for i in 0..H { + le[i] = lhs[2 * i]; + lo[i] = lhs[2 * i + 1]; + ls[i] = le[i] + lo[i]; + re[i] = rhs[2 * i]; + ro[i] = rhs[2 * i + 1]; + rs[i] = re[i] + ro[i]; + } + let mut es = [R::ZERO; H]; + let (left, right) = output.split_at_mut(H); + inner_neg(le, re, &mut es); + inner_neg(lo, ro, left); + inner_neg(ls, rs, right); + right[0] -= es[0] + left[0]; + es[0] -= left[H - 1]; + for i in 1..H { + right[i] -= es[i] + left[i]; + es[i] += left[i - 1]; + } + for i in 0..H { + output[2 * i] = es[i]; + output[2 * i + 1] = output[i + H]; + } +} + +#[inline(always)] +fn conv8>(lhs: [R; 8], rhs: [KoalaBear; 8], output: &mut [R]) { + conv_n_recursive(lhs, rhs, output, conv4::, negacyclic_conv4::); +} + +#[inline(always)] +fn negacyclic_conv8>( + lhs: [R; 8], + rhs: [KoalaBear; 8], + output: &mut [R], +) { + negacyclic_conv_n_recursive(lhs, rhs, output, negacyclic_conv4::); +} + +/// Circulant MDS multiply via Karatsuba convolution: state = C * state. +#[inline(always)] +fn mds_karatsuba_16>(state: &mut [R; 16]) { + let input = *state; + conv_n_recursive( + input, + MDS_CIRC_COL, + state.as_mut_slice(), + conv8::, + negacyclic_conv8::, + ); +} + +/// Public circulant MDS multiply. +#[inline(always)] +pub fn mds_circ_16>(state: &mut [R; 16]) { + mds_karatsuba_16(state); +} + +// ========================================================================= +// Sparse matrix decomposition helpers (for NEON partial rounds) +// ========================================================================= + +/// Dense NxN matrix multiplication: C = A * B. +fn matrix_mul_16(a: &[[KoalaBear; 16]; 16], b: &[[KoalaBear; 16]; 16]) -> [[KoalaBear; 16]; 16] { + core::array::from_fn(|i| { + core::array::from_fn(|j| { + let mut s = KoalaBear::ZERO; + for k in 0..16 { + s += a[i][k] * b[k][j]; + } + s + }) + }) +} + +/// Matrix-vector multiplication: result = M * v. +fn matrix_vec_mul_16(m: &[[KoalaBear; 16]; 16], v: &[KoalaBear; 16]) -> [KoalaBear; 16] { + core::array::from_fn(|i| { + let mut s = KoalaBear::ZERO; + for j in 0..16 { + s += m[i][j] * v[j]; + } + s + }) +} + +/// Matrix transpose. +fn matrix_transpose_16(m: &[[KoalaBear; 16]; 16]) -> [[KoalaBear; 16]; 16] { + core::array::from_fn(|i| core::array::from_fn(|j| m[j][i])) +} + +/// NxN matrix inverse via Gauss-Jordan elimination. +fn matrix_inverse_16(m: &[[KoalaBear; 16]; 16]) -> [[KoalaBear; 16]; 16] { + let mut aug: [[KoalaBear; 16]; 16] = *m; + let mut inv: [[KoalaBear; 16]; 16] = + core::array::from_fn(|i| core::array::from_fn(|j| if i == j { KoalaBear::ONE } else { KoalaBear::ZERO })); + + for col in 0..16 { + let pivot_row = (col..16) + .find(|&r| aug[r][col] != KoalaBear::ZERO) + .expect("Matrix is singular"); + if pivot_row != col { + aug.swap(col, pivot_row); + inv.swap(col, pivot_row); + } + let pivot_inv = aug[col][col].inverse(); + for j in 0..16 { + aug[col][j] *= pivot_inv; + inv[col][j] *= pivot_inv; + } + for i in 0..16 { + if i == col { + continue; + } + let factor = aug[i][col]; + if factor == KoalaBear::ZERO { + continue; + } + let aug_col_row = aug[col]; + let inv_col_row = inv[col]; + for j in 0..16 { + aug[i][j] -= factor * aug_col_row[j]; + inv[i][j] -= factor * inv_col_row[j]; + } + } + } + inv +} + +/// Inverse of the 15x15 bottom-right submatrix of m. +fn submatrix_inverse_15(m: &[[KoalaBear; 16]; 16]) -> [[KoalaBear; 15]; 15] { + let mut sub: [[KoalaBear; 15]; 15] = core::array::from_fn(|i| core::array::from_fn(|j| m[i + 1][j + 1])); + let mut inv: [[KoalaBear; 15]; 15] = + core::array::from_fn(|i| core::array::from_fn(|j| if i == j { KoalaBear::ONE } else { KoalaBear::ZERO })); + + for col in 0..15 { + let pivot_row = (col..15) + .find(|&r| sub[r][col] != KoalaBear::ZERO) + .expect("Submatrix is singular"); + if pivot_row != col { + sub.swap(col, pivot_row); + inv.swap(col, pivot_row); + } + let pivot_inv = sub[col][col].inverse(); + for j in 0..15 { + sub[col][j] *= pivot_inv; + inv[col][j] *= pivot_inv; + } + for i in 0..15 { + if i == col { + continue; + } + let factor = sub[i][col]; + if factor == KoalaBear::ZERO { + continue; + } + let sub_col_row = sub[col]; + let inv_col_row = inv[col]; + for j in 0..15 { + sub[i][j] -= factor * sub_col_row[j]; + inv[i][j] -= factor * inv_col_row[j]; + } + } + } + inv +} + +type SparseMatrices = ([[KoalaBear; 16]; 16], Vec<[KoalaBear; 16]>, Vec<[KoalaBear; 16]>); + +/// Factor the dense MDS matrix into POSEIDON1_PARTIAL_ROUNDS sparse matrices. +/// Returns (m_i, v_collection, w_hat_collection) in forward application order. +fn compute_equivalent_matrices(mds: &[[KoalaBear; 16]; 16]) -> SparseMatrices { + let rounds_p = POSEIDON1_PARTIAL_ROUNDS; + let mut w_hat_collection: Vec<[KoalaBear; 16]> = Vec::with_capacity(rounds_p); + let mut v_collection: Vec<[KoalaBear; 16]> = Vec::with_capacity(rounds_p); + + let mds_t = matrix_transpose_16(mds); + let mut m_mul = mds_t; + let mut m_i = [[KoalaBear::ZERO; 16]; 16]; + + for _ in 0..rounds_p { + // v = first row of m_mul (excluding [0,0]), padded with 0 at end. + let v_arr: [KoalaBear; 16] = core::array::from_fn(|j| if j < 15 { m_mul[0][j + 1] } else { KoalaBear::ZERO }); + + // w = first column of m_mul (excluding [0,0]). + let w: [KoalaBear; 15] = core::array::from_fn(|i| m_mul[i + 1][0]); + + // MÌ‚^{-1} (inverse of bottom-right 15x15 submatrix). + let m_hat_inv = submatrix_inverse_15(&m_mul); + + // ŵ = MÌ‚^{-1} * w, padded with 0 at end. + let w_hat_arr: [KoalaBear; 16] = core::array::from_fn(|i| { + if i < 15 { + let mut s = KoalaBear::ZERO; + for k in 0..15 { + s += m_hat_inv[i][k] * w[k]; + } + s + } else { + KoalaBear::ZERO + } + }); + + v_collection.push(v_arr); + w_hat_collection.push(w_hat_arr); + + // Build m_i: keep m_mul but zero first row/col, set [0,0]=1. + m_i = m_mul; + m_i[0][0] = KoalaBear::ONE; + for row in m_i.iter_mut().skip(1) { + row[0] = KoalaBear::ZERO; + } + for elem in m_i[0].iter_mut().skip(1) { + *elem = KoalaBear::ZERO; + } + + // m_mul = M^T * m_i. + m_mul = matrix_mul_16(&mds_t, &m_i); + } + + // Transpose m_i back. + let m_i_returned = matrix_transpose_16(&m_i); + + // Reverse: HorizenLabs computes in reverse order. + v_collection.reverse(); + w_hat_collection.reverse(); + + (m_i_returned, v_collection, w_hat_collection) +} + +/// Compress round constants via backward substitution through MDS^{-1}. +/// Returns (first_round_constants, scalar_round_constants). +fn equivalent_round_constants( + partial_rc: &[[KoalaBear; 16]], + mds_inv: &[[KoalaBear; 16]; 16], +) -> ([KoalaBear; 16], Vec) { + let rounds_p = partial_rc.len(); + let mut opt_partial_rc = vec![KoalaBear::ZERO; rounds_p]; + + let mut tmp = partial_rc[rounds_p - 1]; + for i in (0..rounds_p - 1).rev() { + let inv_cip = matrix_vec_mul_16(mds_inv, &tmp); + opt_partial_rc[i + 1] = inv_cip[0]; + tmp = partial_rc[i]; + for j in 1..16 { + tmp[j] += inv_cip[j]; + } + } + + let first_round_constants = tmp; + let scalar_constants = opt_partial_rc[1..].to_vec(); + (first_round_constants, scalar_constants) +} + +// ========================================================================= +// Precomputed constants (stored in struct, OnceLock only at construction) +// ========================================================================= + +#[derive(Debug)] +struct Precomputed { + // --- Sparse matrix decomposition --- + /// First round constant vector (full width), added once before m_i multiply. + sparse_first_round_constants: [KoalaBear; 16], + /// Dense transition matrix m_i, applied once before the partial round loop. + sparse_m_i: [[KoalaBear; 16]; 16], + /// Per-round full first row: [mds_0_0, ŵ[0], ..., ŵ[14]]. + /// Length = POSEIDON1_PARTIAL_ROUNDS. + sparse_first_row: Vec<[KoalaBear; 16]>, + /// Per-round first-column vectors (excluding [0,0]). + /// `v[r]` = [v[0], ..., v[14], 0]. Length = POSEIDON1_PARTIAL_ROUNDS. + sparse_v: Vec<[KoalaBear; 16]>, + /// Scalar constants for partial rounds 0..RP-2. + /// Length = POSEIDON1_PARTIAL_ROUNDS - 1. + sparse_round_constants: Vec, + + // --- NEON pre-packed constants --- + #[cfg(all(target_arch = "aarch64", target_feature = "neon"))] + neon: NeonPrecomputed, +} + +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] +struct NeonPrecomputed { + /// Initial full round constants in negative NEON form (only first 3 rounds; + /// the 4th is fused with the partial round entry). + packed_initial_rc: [[core::arch::aarch64::int32x4_t; 16]; POSEIDON1_HALF_FULL_ROUNDS - 1], + /// Terminal full round constants in negative NEON form. + packed_terminal_rc: [[core::arch::aarch64::int32x4_t; 16]; POSEIDON1_HALF_FULL_ROUNDS], + /// Pre-packed sparse first rows as PackedKoalaBearNeon. + packed_sparse_first_row: [[PackedKB; 16]; POSEIDON1_PARTIAL_ROUNDS], + /// Pre-packed v vectors as PackedKoalaBearNeon. + packed_sparse_v: [[PackedKB; 16]; POSEIDON1_PARTIAL_ROUNDS], + /// Pre-packed scalar round constants for partial rounds 0..RP-2. + packed_round_constants: [PackedKB; POSEIDON1_PARTIAL_ROUNDS - 1], + /// Fused matrix: m_i * MDS * state_after_last_initial_sbox + m_i * first_rc. + /// Replaces: FFT MDS + add first_rc + dense m_i → single dense multiply. + packed_fused_mi_mds: [[PackedKB; 16]; 16], + /// Fused bias: m_i * first_round_constants. + packed_fused_bias: [PackedKB; 16], + /// Last initial round constant in negative NEON form (for fused add_rc_and_sbox). + packed_last_initial_rc: [core::arch::aarch64::int32x4_t; 16], + /// Pre-packed eigenvalues * INV16 for FFT MDS (absorbs /16 normalization). + packed_lambda_over_16: [PackedKB; 16], +} + +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] +impl std::fmt::Debug for NeonPrecomputed { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("NeonPrecomputed").finish_non_exhaustive() + } +} + +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] +type FP = crate::KoalaBearParameters; +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] +type PackedKB = crate::PackedKoalaBearNeon; + +static PRECOMPUTED: OnceLock = OnceLock::new(); + +fn precomputed() -> &'static Precomputed { + PRECOMPUTED.get_or_init(|| { + // Dense MDS for sparse decomposition. + let mds: [[KoalaBear; 16]; 16] = + core::array::from_fn(|i| core::array::from_fn(|j| MDS_CIRC_COL[(16 + i - j) % 16])); + + let partial_rc = + &POSEIDON1_RC[POSEIDON1_HALF_FULL_ROUNDS..POSEIDON1_HALF_FULL_ROUNDS + POSEIDON1_PARTIAL_ROUNDS]; + + // --- Sparse matrix decomposition constants --- + let mds_inv = matrix_inverse_16(&mds); + let (first_round_constants, scalar_round_constants) = equivalent_round_constants(partial_rc, &mds_inv); + let (m_i, sparse_v, sparse_w_hat) = compute_equivalent_matrices(&mds); + + // Pre-assemble full first rows: [mds_0_0, ŵ[0], ..., ŵ[14]]. + let mds_0_0 = mds[0][0]; + let sparse_first_row: Vec<[KoalaBear; 16]> = sparse_w_hat + .iter() + .map(|w| core::array::from_fn(|i| if i == 0 { mds_0_0 } else { w[i - 1] })) + .collect(); + + // --- NEON pre-packed constants --- + #[cfg(all(target_arch = "aarch64", target_feature = "neon"))] + let neon = { + use crate::PackedMontyField31Neon; + use crate::convert_to_vec_neg_form_neon; + + let pack = |c: KoalaBear| PackedMontyField31Neon::::from(c); + let neg_form = |c: KoalaBear| convert_to_vec_neg_form_neon::(c.value as i32); + + // Initial full round constants (only first 3; 4th is fused). + let init_rc = poseidon1_initial_constants(); + let packed_initial_rc: [[core::arch::aarch64::int32x4_t; 16]; POSEIDON1_HALF_FULL_ROUNDS - 1] = + core::array::from_fn(|r| init_rc[r].map(neg_form)); + + // Last initial round constant (for fused add_rc_and_sbox before partial rounds). + let packed_last_initial_rc = init_rc[POSEIDON1_HALF_FULL_ROUNDS - 1].map(neg_form); + + // Terminal full round constants. + let term_rc = poseidon1_final_constants(); + let packed_terminal_rc: [[core::arch::aarch64::int32x4_t; 16]; POSEIDON1_HALF_FULL_ROUNDS] = + core::array::from_fn(|r| term_rc[r].map(neg_form)); + + // Pre-packed sparse constants (fixed-size arrays). + let packed_sparse_first_row: [[PackedKB; 16]; POSEIDON1_PARTIAL_ROUNDS] = + core::array::from_fn(|r| sparse_first_row[r].map(pack)); + let packed_sparse_v: [[PackedKB; 16]; POSEIDON1_PARTIAL_ROUNDS] = + core::array::from_fn(|r| sparse_v[r].map(pack)); + let packed_round_constants: [PackedKB; POSEIDON1_PARTIAL_ROUNDS - 1] = + core::array::from_fn(|r| pack(scalar_round_constants[r])); + + // Fused matrix: (m_i * MDS), replaces last initial FFT MDS + add first_rc + m_i. + let fused_mi_mds = matrix_mul_16(&m_i, &mds); + let packed_fused_mi_mds: [[PackedKB; 16]; 16] = core::array::from_fn(|i| fused_mi_mds[i].map(pack)); + + // Fused bias: m_i * first_round_constants. + let fused_bias = matrix_vec_mul_16(&m_i, &first_round_constants); + let packed_fused_bias: [PackedKB; 16] = fused_bias.map(pack); + + // Pre-packed eigenvalues * INV16 (absorbs /16 into eigenvalues). + let mut lambda_br = MDS_CIRC_COL; + dif_ifft_16_mut(&mut lambda_br); + let inv16 = KoalaBear::new(1997537281); // 16^{-1} mod p + let packed_lambda_over_16: [PackedKB; 16] = core::array::from_fn(|i| pack(lambda_br[i] * inv16)); + + NeonPrecomputed { + packed_initial_rc, + packed_terminal_rc, + packed_sparse_first_row, + packed_sparse_v, + packed_round_constants, + packed_fused_mi_mds, + packed_fused_bias, + packed_last_initial_rc, + packed_lambda_over_16, + } + }; + + Precomputed { + sparse_first_round_constants: first_round_constants, + sparse_m_i: m_i, + sparse_first_row, + sparse_v, + sparse_round_constants: scalar_round_constants, + #[cfg(all(target_arch = "aarch64", target_feature = "neon"))] + neon, + } + }) +} + +// ========================================================================= +// Round constants (Grain LFSR, matching Plonky3) +// ========================================================================= + +const POSEIDON1_RC: [[KoalaBear; 16]; POSEIDON1_N_ROUNDS] = KoalaBear::new_2d_array([ + // Initial full rounds (4) + [ + 0x7ee56a48, 0x11367045, 0x12e41941, 0x7ebbc12b, 0x1970b7d5, 0x662b60e8, 0x3e4990c6, 0x679f91f5, 0x350813bb, + 0x00874ad4, 0x28a0081a, 0x18fa5872, 0x5f25b071, 0x5e5d5998, 0x5e6fd3e7, 0x5b2e2660, + ], + [ + 0x6f1837bf, 0x3fe6182b, 0x1edd7ac5, 0x57470d00, 0x43d486d5, 0x1982c70f, 0x0ea53af9, 0x61d6165b, 0x51639c00, + 0x2dec352c, 0x2950e531, 0x2d2cb947, 0x08256cef, 0x1a0109f6, 0x1f51faf3, 0x5cef1c62, + ], + [ + 0x3d65e50e, 0x33d91626, 0x133d5a1e, 0x0ff49b0d, 0x38900cd1, 0x2c22cc3f, 0x28852bb2, 0x06c65a02, 0x7b2cf7bc, + 0x68016e1a, 0x15e16bc0, 0x5248149a, 0x6dd212a0, 0x18d6830a, 0x5001be82, 0x64dac34e, + ], + [ + 0x5902b287, 0x426583a0, 0x0c921632, 0x3fe028a5, 0x245f8e49, 0x43bb297e, 0x7873dbd9, 0x3cc987df, 0x286bb4ce, + 0x640a8dcd, 0x512a8e36, 0x03a4cf55, 0x481837a2, 0x03d6da84, 0x73726ac7, 0x760e7fdf, + ], + // Partial rounds (20) + [ + 0x54dfeb5d, 0x7d40afd6, 0x722cb316, 0x106a4573, 0x45a7ccdb, 0x44061375, 0x154077a5, 0x45744faa, 0x4eb5e5ee, + 0x3794e83f, 0x47c7093c, 0x5694903c, 0x69cb6299, 0x373df84c, 0x46a0df58, 0x46b8758a, + ], + [ + 0x3241ebcb, 0x0b09d233, 0x1af42357, 0x1e66cec2, 0x43e7dc24, 0x259a5d61, 0x27e85a3b, 0x1b9133fa, 0x343e5628, + 0x485cd4c2, 0x16e269f5, 0x165b60c6, 0x25f683d9, 0x124f81f9, 0x174331f9, 0x77344dc5, + ], + [ + 0x5a821dba, 0x5fc4177f, 0x54153bf5, 0x5e3f1194, 0x3bdbf191, 0x088c84a3, 0x68256c9b, 0x3c90bbc6, 0x6846166a, + 0x03f4238d, 0x463335fb, 0x5e3d3551, 0x6e59ae6f, 0x32d06cc0, 0x596293f3, 0x6c87edb2, + ], + [ + 0x08fc60b5, 0x34bcca80, 0x24f007f3, 0x62731c6f, 0x1e1db6c6, 0x0ca409bb, 0x585c1e78, 0x56e94edc, 0x16d22734, + 0x18e11467, 0x7b2c3730, 0x770075e4, 0x35d1b18c, 0x22be3db5, 0x4fb1fbb7, 0x477cb3ed, + ], + [ + 0x7d5311c6, 0x5b62ae7d, 0x559c5fa8, 0x77f15048, 0x3211570b, 0x490fef6a, 0x77ec311f, 0x2247171b, 0x4e0ac711, + 0x2edf69c9, 0x3b5a8850, 0x65809421, 0x5619b4aa, 0x362019a7, 0x6bf9d4ed, 0x5b413dff, + ], + [ + 0x617e181e, 0x5e7ab57b, 0x33ad7833, 0x3466c7ca, 0x6488dff4, 0x71f068f4, 0x056e891f, 0x04f1eccc, 0x663257d5, + 0x671e31b9, 0x5871987c, 0x280c109e, 0x2a227761, 0x350a25e9, 0x5b91b1c4, 0x7a073546, + ], + [ + 0x01826270, 0x53a67720, 0x0ed4b074, 0x34cf0c4e, 0x6e751e88, 0x29bd5f59, 0x49ec32df, 0x7693452b, 0x3cf09e58, + 0x6ba0e2bf, 0x7ab93acf, 0x3ce597df, 0x536e3d42, 0x147a808d, 0x5e32eb56, 0x5a203323, + ], + [ + 0x50965766, 0x6d44b7c5, 0x6698636a, 0x57b84f9f, 0x554b61b9, 0x6da0ab28, 0x1585b6ac, 0x6705a2b4, 0x152872f6, + 0x0f4409fd, 0x23a9dd60, 0x6f2b18d4, 0x65ac9fd4, 0x2f0efbea, 0x591e67fd, 0x217ca19b, + ], + [ + 0x469c90ca, 0x03d60ef5, 0x4ea7857e, 0x07c86a4f, 0x288ed461, 0x2fe51b22, 0x7e293614, 0x2c4beb85, 0x5b0b7d11, + 0x1e17dff6, 0x089beae1, 0x0a5acf1a, 0x2fc33d8f, 0x60422dc6, 0x6e1dc939, 0x635351b9, + ], + [ + 0x55522fc0, 0x3eb94ef7, 0x2a24a65c, 0x2e139c76, 0x51391144, 0x78cc0742, 0x579538f9, 0x44de9aae, 0x3c2f1e2e, + 0x195747be, 0x2496339c, 0x650b2e39, 0x52899665, 0x6cb35558, 0x0f461c1c, 0x70f6b270, + ], + [ + 0x3faaa36f, 0x62e3348a, 0x672167cb, 0x394c880b, 0x2a46ba82, 0x63ffb74a, 0x1cf875d6, 0x53d12772, 0x036a4552, + 0x3bdd9f2b, 0x02f72c24, 0x02b6006c, 0x077fe158, 0x1f9d6ea4, 0x20904d6f, 0x5d6534fa, + ], + [ + 0x066d8974, 0x6198f1f4, 0x26301ab4, 0x41f274c2, 0x00eac15c, 0x28b54b47, 0x2339739d, 0x48c6281c, 0x4ed935fc, + 0x3f9187fa, 0x4a1930a6, 0x3ad4d736, 0x0f3f1889, 0x635a388f, 0x2862c145, 0x277ed1e8, + ], + [ + 0x4db23cad, 0x1f1b11f5, 0x1f3dba2b, 0x1c26eb4e, 0x0f7f5546, 0x6cd024b0, 0x67c47902, 0x793b8900, 0x0e8a283c, + 0x4590b7ea, 0x6f567a2b, 0x5dc97300, 0x15247bc6, 0x50567fcb, 0x133eff84, 0x547dc2ef, + ], + [ + 0x34eb3dbb, 0x12402317, 0x66c6ae49, 0x174338b6, 0x24251008, 0x1b514927, 0x062d98d6, 0x7af30bbc, 0x26af15e8, + 0x70d907a3, 0x5dfc5cac, 0x731f27ec, 0x53aa7d3f, 0x63ab0ec6, 0x216053f4, 0x18796b39, + ], + [ + 0x19156afd, 0x5eea6973, 0x6704c6a9, 0x0dce002b, 0x331169c0, 0x714d7178, 0x3ddaffaf, 0x7e464957, 0x20ca59ea, + 0x679820c9, 0x42ef21a1, 0x798ea089, 0x14a74fa3, 0x0c06cf18, 0x6a4c8d52, 0x620f6d81, + ], + [ + 0x2220901a, 0x5277bb90, 0x230bf95e, 0x0ad8847a, 0x5e96e8b6, 0x77b4056e, 0x70a50d2c, 0x5f0eed59, 0x3646c4df, + 0x10eb9a87, 0x21eed6b7, 0x534add36, 0x6e3e7421, 0x2b25810e, 0x1d8f707b, 0x45318a1a, + ], + [ + 0x677f8ff2, 0x0258c9e0, 0x4cd02a00, 0x2e24ff15, 0x634a715d, 0x4ac01e59, 0x601511e1, 0x26e9c01a, 0x4c165c6e, + 0x57cd1140, 0x3ac6543b, 0x6787d847, 0x037dfbf9, 0x6dd9d079, 0x4d24b281, 0x2a6f407d, + ], + [ + 0x0131df8e, 0x4b8a7896, 0x23700858, 0x2cf5e534, 0x12aafc3f, 0x54568d03, 0x1a250735, 0x5331686d, 0x4ce76d91, + 0x799c1a8c, 0x2b7a8ac9, 0x60aee672, 0x74f7421c, 0x3c42146d, 0x26d369c5, 0x4ae54a12, + ], + [ + 0x7eea16d1, 0x5ce3eae8, 0x69f28994, 0x262b8642, 0x610d4cc4, 0x5e1af21c, 0x1a8526d0, 0x316b127b, 0x3576fe5d, + 0x02d968a0, 0x4ba00f51, 0x40bed993, 0x377fb907, 0x7859216e, 0x1931d9d1, 0x53b0934e, + ], + [ + 0x71914ff7, 0x4eabae6c, 0x7196468e, 0x164b3cc2, 0x58cb66c0, 0x4c147307, 0x6b3afccd, 0x4236518b, 0x4ad85605, + 0x291382e1, 0x1e89b6cf, 0x5e16c3a8, 0x2e675921, 0x24300954, 0x05e555c3, 0x78880a24, + ], + // Terminal full rounds (4) + [ + 0x763a3125, 0x4f53b240, 0x18b7fa43, 0x2bbe8a73, 0x1c9a12f2, 0x3f6fd40d, 0x0e1d4ec4, 0x1361c64d, 0x09a8f470, + 0x03d23a40, 0x109ad290, 0x28c2fb88, 0x3b6498f2, 0x74d8be57, 0x6a4277d2, 0x18c2b3d4, + ], + [ + 0x6252c30c, 0x07cc2560, 0x209fe15b, 0x52a55fac, 0x4df19eb7, 0x02521116, 0x5e414ff1, 0x3cd9a1f4, 0x005aad15, + 0x27a53f00, 0x72bbe9cb, 0x71d8bd7d, 0x4194b79a, 0x48e87a72, 0x3341553c, 0x63d34faa, + ], + [ + 0x132a01e3, 0x3833e2d9, 0x49726e04, 0x054957f8, 0x7b71bce4, 0x73eec57d, 0x556e5533, 0x1fa93fde, 0x346a8ca8, + 0x1162dfde, 0x5c30d028, 0x094a4294, 0x3052dcda, 0x37988498, 0x51f06b97, 0x65848779, + ], + [ + 0x7599b0d4, 0x436fdabc, 0x66c5b77d, 0x40c86a9e, 0x27e7055b, 0x6d0dd9d8, 0x7e5598b5, 0x1a4d04f3, 0x5e3b2bc7, + 0x533b5b2f, 0x3e33a125, 0x664d71ce, 0x382e6c2a, 0x24c4eb6e, 0x13f246f7, 0x07e2d7ef, + ], +]); + +// ========================================================================= +// Accessors +// ========================================================================= + +pub fn poseidon1_round_constants() -> &'static [[KoalaBear; 16]; POSEIDON1_N_ROUNDS] { + &POSEIDON1_RC +} + +#[inline(always)] +pub fn poseidon1_initial_constants() -> &'static [[KoalaBear; 16]] { + &POSEIDON1_RC[..POSEIDON1_HALF_FULL_ROUNDS] +} + +#[inline(always)] +pub fn poseidon1_partial_constants() -> &'static [[KoalaBear; 16]] { + &POSEIDON1_RC[POSEIDON1_HALF_FULL_ROUNDS..POSEIDON1_HALF_FULL_ROUNDS + POSEIDON1_PARTIAL_ROUNDS] +} + +#[inline(always)] +pub fn poseidon1_final_constants() -> &'static [[KoalaBear; 16]] { + &POSEIDON1_RC[POSEIDON1_HALF_FULL_ROUNDS + POSEIDON1_PARTIAL_ROUNDS..] +} + +pub fn poseidon1_sparse_m_i() -> &'static [[KoalaBear; 16]; 16] { + &precomputed().sparse_m_i +} + +/// Per-round first row: `[mds_0_0, ŵ[0], ..., ŵ[14]]`. Length = PARTIAL_ROUNDS. +pub fn poseidon1_sparse_first_row() -> &'static Vec<[KoalaBear; 16]> { + &precomputed().sparse_first_row +} + +/// Per-round rank-1 update vectors `v[r]`. `v[r][0..14]` are the 15 update coefficients +/// (index 15 is always zero). Length = PARTIAL_ROUNDS. +pub fn poseidon1_sparse_v() -> &'static Vec<[KoalaBear; 16]> { + &precomputed().sparse_v +} + +/// Full-width constant vector added once before the `m_i` multiply. +pub fn poseidon1_sparse_first_round_constants() -> &'static [KoalaBear; 16] { + &precomputed().sparse_first_round_constants +} + +/// Scalar constants added to `state[0]` in partial rounds 0..RP-2. Length = RP-1. +pub fn poseidon1_sparse_scalar_round_constants() -> &'static Vec { + &precomputed().sparse_round_constants +} + +#[derive(Clone, Debug)] +pub struct Poseidon1KoalaBear16 { + pre: &'static Precomputed, +} + +impl Poseidon1KoalaBear16 { + #[inline(always)] + #[allow(clippy::needless_range_loop)] + fn permute_generic + InjectiveMonomial<3>>(&self, state: &mut [R; 16]) { + // Initial full rounds. + for rc in poseidon1_initial_constants() { + Self::full_round(state, rc); + } + + // --- Partial rounds via sparse matrix decomposition --- + // Add first-round constants. + for (s, &c) in state.iter_mut().zip(self.pre.sparse_first_round_constants.iter()) { + *s += c; + } + // Apply dense transition matrix m_i (once). + { + let input = *state; + for i in 0..16 { + state[i] = R::ZERO; + for j in 0..16 { + state[i] += input[j] * self.pre.sparse_m_i[i][j]; + } + } + } + // Loop over partial rounds: S-box + scalar constant + sparse matmul. + for r in 0..POSEIDON1_PARTIAL_ROUNDS { + state[0] = state[0].injective_exp_n(); + if r < POSEIDON1_PARTIAL_ROUNDS - 1 { + state[0] += self.pre.sparse_round_constants[r]; + } + // Sparse matrix multiply: O(16) per round. + let old_s0 = state[0]; + state[0] = parity_dot(*state, self.pre.sparse_first_row[r]); + for i in 1..16 { + state[i] += old_s0 * self.pre.sparse_v[r][i - 1]; + } + } + + // Terminal full rounds. + for rc in poseidon1_final_constants() { + Self::full_round(state, rc); + } + } + + #[inline(always)] + fn full_round + InjectiveMonomial<3>>(state: &mut [R; 16], rc: &[KoalaBear; 16]) { + for (s, &c) in state.iter_mut().zip(rc.iter()) { + *s += c; + } + for s in state.iter_mut() { + *s = s.injective_exp_n(); + } + mds_karatsuba_16(state); + } + + /// NEON-specific fast path using: + /// - Fused AddRC+S-box (`add_rc_and_sbox`) for full rounds + /// - `InternalLayer16` split for ILP between S-box and dot product in partial rounds + /// - Pre-packed sparse matrix constants + #[cfg(all(target_arch = "aarch64", target_feature = "neon"))] + #[inline(always)] + fn permute_neon(&self, state: &mut [PackedKB; 16]) { + use crate::PackedMontyField31Neon; + use crate::exp_small; + use crate::{InternalLayer16, add_rc_and_sbox}; + use core::mem::transmute; + + let neon = &self.pre.neon; + let lambda16 = &neon.packed_lambda_over_16; + + /// FFT MDS: state = C * state. + /// Uses lambda/16 eigenvalues so no separate /16 step needed. + /// C * x = DIT_FFT((lambda/16) ⊙ DIF_IFFT(x)) + #[inline(always)] + fn mds_fft_neon(state: &mut [PackedKB; 16], lambda16: &[PackedKB; 16]) { + dif_ifft_16_mut(state); + for i in 0..16 { + state[i] *= lambda16[i]; + } + dit_fft_16_mut(state); + } + + // --- Initial full rounds (first 3 of 4) --- + for round_constants in &neon.packed_initial_rc { + for (s, &rc) in state.iter_mut().zip(round_constants.iter()) { + add_rc_and_sbox::(s, rc); + } + mds_fft_neon(state, lambda16); + } + + // --- Last initial full round: AddRC + S-box, then fused (m_i * MDS) --- + // Fuses: MDS(state) + first_rc → m_i * (MDS(state) + first_rc) + // = (m_i * MDS) * state + m_i * first_rc + // Saves one full FFT MDS call. + { + for (s, &rc) in state.iter_mut().zip(neon.packed_last_initial_rc.iter()) { + add_rc_and_sbox::(s, rc); + } + let input = *state; + for (i, state_i) in state.iter_mut().enumerate() { + *state_i = PackedMontyField31Neon::::dot_product(&input, &neon.packed_fused_mi_mds[i]) + + neon.packed_fused_bias[i]; + } + } + + // --- Partial rounds loop with latency hiding via InternalLayer16 split --- + { + let mut split = InternalLayer16::from_packed_field_array(*state); + + for r in 0..POSEIDON1_PARTIAL_ROUNDS { + // PATH A (high latency): S-box on s0 only. + unsafe { + let s0_signed = split.s0.to_signed_vector(); + let s0_sboxed = exp_small::(s0_signed); + split.s0 = PackedMontyField31Neon::from_vector(s0_sboxed); + } + + // Add scalar round constant (except last round). + if r < POSEIDON1_PARTIAL_ROUNDS - 1 { + split.s0 += neon.packed_round_constants[r]; + } + + // PATH B (can overlap with S-box): partial dot product on s_hi. + let s_hi: &[PackedKB; 15] = unsafe { transmute(&split.s_hi) }; + let first_row = &neon.packed_sparse_first_row[r]; + let first_row_hi: &[PackedKB; 15] = first_row[1..].try_into().unwrap(); + let partial_dot = PackedMontyField31Neon::::dot_product(s_hi, first_row_hi); + + // SERIAL: complete s0 = first_row[0] * s0 + partial_dot. + let s0_val = split.s0; + split.s0 = s0_val * first_row[0] + partial_dot; + + // Rank-1 update: s_hi[j] += s0_old * v[j]. + let v = &neon.packed_sparse_v[r]; + let s_hi_mut: &mut [PackedKB; 15] = unsafe { transmute(&mut split.s_hi) }; + for j in 0..15 { + s_hi_mut[j] += s0_val * v[j]; + } + } + + *state = unsafe { split.to_packed_field_array() }; + } + + // --- Terminal full rounds --- + for round_constants in &neon.packed_terminal_rc { + for (s, &rc) in state.iter_mut().zip(round_constants.iter()) { + add_rc_and_sbox::(s, rc); + } + mds_fft_neon(state, lambda16); + } + } + + /// Compression mode: output = permute(input) + input. + #[inline(always)] + pub fn compress_in_place + InjectiveMonomial<3> + Send + Sync + 'static>( + &self, + state: &mut [R; 16], + ) { + let initial = *state; + // Use permute_mut for NEON dispatch. + Permutation::permute_mut(self, state); + for (s, init) in state.iter_mut().zip(initial) { + *s += init; + } + } +} + +impl + InjectiveMonomial<3> + Send + Sync + 'static> Permutation<[R; 16]> + for Poseidon1KoalaBear16 +{ + fn permute_mut(&self, input: &mut [R; 16]) { + // On aarch64+neon, dispatch to the NEON fast path when R is PackedKoalaBearNeon. + #[cfg(all(target_arch = "aarch64", target_feature = "neon"))] + { + if std::any::TypeId::of::() == std::any::TypeId::of::() { + // SAFETY: We have just confirmed via TypeId that R == PackedKB. + // Both types have the same size and alignment (PackedKB is repr(transparent)). + let neon_state: &mut [PackedKB; 16] = unsafe { &mut *(input as *mut [R; 16] as *mut [PackedKB; 16]) }; + self.permute_neon(neon_state); + return; + } + } + self.permute_generic(input); + } +} + +pub fn default_koalabear_poseidon1_16() -> Poseidon1KoalaBear16 { + Poseidon1KoalaBear16 { pre: precomputed() } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::KoalaBear; + use field::PrimeField32; + + #[test] + fn test_plonky3_compatibility() { + /* + use p3_symmetric::Permutation; + + use crate::{KoalaBear, default_koalabear_poseidon1_16}; + + #[test] + fn plonky3_test() { + let poseidon1 = default_koalabear_poseidon1_16(); + let mut input: [KoalaBear; 16] = + KoalaBear::new_array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]); + poseidon1.permute_mut(&mut input); + dbg!(&input); + } + + */ + let p1 = default_koalabear_poseidon1_16(); + let mut input: [KoalaBear; 16] = KoalaBear::new_array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]); + p1.permute_mut(&mut input); + let vals: Vec = input.iter().map(|x| x.as_canonical_u32()).collect(); + assert_eq!( + vals, + vec![ + 610090613, 935319874, 1893335292, 796792199, 356405232, 552237741, 55134556, 1215104204, 1823723405, + 1133298033, 1780633798, 1453946561, 710069176, 1128629550, 1917333254, 1175481618, + ] + ); + } +} diff --git a/crates/backend/koala-bear/src/poseidon2/external.rs b/crates/backend/koala-bear/src/poseidon2/external.rs deleted file mode 100644 index 0f1a4a88..00000000 --- a/crates/backend/koala-bear/src/poseidon2/external.rs +++ /dev/null @@ -1,329 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -//! External layers for the Poseidon2 permutation. -//! -//! Poseidon2 applies *external layers* at both the beginning and end of the permutation. -//! These layers are critical for ensuring proper diffusion and enhancing security, -//! particularly against structural and algebraic attacks. -//! -//! An external round consists of: -//! 1. Addition of round constants, -//! 2. Application of a nonlinear S-box, -//! 3. A lightweight matrix multiplication (external linear layer). -//! -//! The constants and linear transformations used in these rounds are designed -//! to complement the internal structure of Poseidon2. -//! -//! Main purpose of these constants: -//! - Inject randomness between rounds. - -use alloc::vec::Vec; - -use crate::symmetric::{MdsPermutation, Permutation}; -use field::{Field, PrimeCharacteristicRing}; -use rand::distr::{Distribution, StandardUniform}; -use rand::{Rng, RngExt}; - -/// Multiply a 4-element vector x by -/// [ 5 7 1 3 ] -/// [ 4 6 1 1 ] -/// [ 1 3 5 7 ] -/// [ 1 1 4 6 ]. -/// This uses the formula from the start of Appendix B in the Poseidon2 paper, with multiplications unrolled into additions. -/// It is also the matrix used by the Horizon Labs implementation. -#[inline(always)] -fn apply_hl_mat4(x: &mut [R; 4]) -where - R: PrimeCharacteristicRing, -{ - let t0 = x[0] + x[1]; - let t1 = x[2] + x[3]; - let t2 = x[1].double() + t1; - let t3 = x[3].double() + t0; - let t4 = t1.double().double() + t3; - let t5 = t0.double().double() + t2; - let t6 = t3 + t5; - let t7 = t2 + t4; - x[0] = t6; - x[1] = t5; - x[2] = t7; - x[3] = t4; -} - -// It turns out we can find a 4x4 matrix which is more efficient than the above. - -/// Multiply a 4-element vector x by: -/// [ 2 3 1 1 ] -/// [ 1 2 3 1 ] -/// [ 1 1 2 3 ] -/// [ 3 1 1 2 ]. -#[inline(always)] -fn apply_mat4(x: &mut [R; 4]) -where - R: PrimeCharacteristicRing, -{ - let t01 = x[0] + x[1]; - let t23 = x[2] + x[3]; - let t0123 = t01 + t23; - let t01123 = t0123 + x[1]; - let t01233 = t0123 + x[3]; - // The order here is important. Need to overwrite x[0] and x[2] after x[1] and x[3]. - x[3] = t01233 + x[0].double(); // 3*x[0] + x[1] + x[2] + 2*x[3] - x[1] = t01123 + x[2].double(); // x[0] + 2*x[1] + 3*x[2] + x[3] - x[0] = t01123 + t01; // 2*x[0] + 3*x[1] + x[2] + x[3] - x[2] = t01233 + t23; // x[0] + x[1] + 2*x[2] + 3*x[3] -} - -/// The 4x4 MDS matrix used by the Horizon Labs implementation of Poseidon2. -/// -/// This requires 10 additions and 4 doubles to compute. -#[derive(Clone, Default)] -pub struct HLMDSMat4; - -impl Permutation<[R; 4]> for HLMDSMat4 { - #[inline(always)] - fn permute_mut(&self, input: &mut [R; 4]) { - apply_hl_mat4(input) - } -} -impl MdsPermutation for HLMDSMat4 {} - -/// The fastest 4x4 MDS matrix. -/// -/// This requires 7 additions and 2 doubles to compute. -#[derive(Clone, Default)] -pub struct MDSMat4; - -impl Permutation<[R; 4]> for MDSMat4 { - #[inline(always)] - fn permute_mut(&self, input: &mut [R; 4]) { - apply_mat4(input) - } -} -impl MdsPermutation for MDSMat4 {} - -/// Implement the matrix multiplication used by the external layer. -/// -/// Given a 4x4 MDS matrix M, we multiply by the `4N x 4N` matrix -/// `[[2M M ... M], [M 2M ... M], ..., [M M ... 2M]]`. -/// -/// # Panics -/// This will panic if `WIDTH` is not supported. Currently, the -/// supported `WIDTH` values are 2, 3, 4, 8, 12, 16, 20, 24.` -#[inline(always)] -pub fn mds_light_permutation, const WIDTH: usize>( - state: &mut [R; WIDTH], - mdsmat: &MdsPerm4, -) { - match WIDTH { - 2 => { - let sum = state[0] + state[1]; - state[0] += sum; - state[1] += sum; - } - - 3 => { - let sum = state[0] + state[1] + state[2]; - state[0] += sum; - state[1] += sum; - state[2] += sum; - } - - 4 | 8 | 12 | 16 | 20 | 24 => { - // First, we apply M_4 to each consecutive four elements of the state. - // In Appendix B's terminology, this replaces each x_i with x_i'. - for chunk in state.chunks_exact_mut(4) { - mdsmat.permute_mut(chunk.try_into().unwrap()); - } - // Now, we apply the outer circulant matrix (to compute the y_i values). - - // We first precompute the four sums of every four elements. - let sums: [R; 4] = core::array::from_fn(|k| (0..WIDTH).step_by(4).map(|j| state[j + k]).sum()); - - // The formula for each y_i involves 2x_i' term and x_j' terms for each j that equals i mod 4. - // In other words, we can add a single copy of x_i' to the appropriate one of our precomputed sums - state.iter_mut().enumerate().for_each(|(i, elem)| *elem += sums[i % 4]); - } - - _ => { - panic!("Unsupported width"); - } - } -} - -/// A struct which stores round-specific constants for both initial and terminal external layers. -#[derive(Debug, Clone)] -pub struct ExternalLayerConstants { - /// Constants applied during each initial external round. - /// - /// Used in `permute_state_initial`. Each `[T; WIDTH]` is a full-width vector of constants. - initial: Vec<[T; WIDTH]>, - - /// Constants applied during each terminal external round. - /// - /// Used in `permute_state_terminal`. The term "terminal" avoids using Rust’s reserved word `final`. - terminal: Vec<[T; WIDTH]>, -} - -impl ExternalLayerConstants { - /// Create a new instance of external layer constants. - /// - /// # Panics - /// Panics if `initial.len() != terminal.len()` since the Poseidon2 spec requires - /// the same number of initial and terminal rounds to maintain symmetry. - pub const fn new(initial: Vec<[T; WIDTH]>, terminal: Vec<[T; WIDTH]>) -> Self { - assert!( - initial.len() == terminal.len(), - "The number of initial and terminal external rounds should be equal." - ); - Self { initial, terminal } - } - - /// Randomly generate a new set of external constants using a provided RNG. - /// - /// # Arguments - /// - `external_round_number`: Total number of external rounds (must be even). - /// - `rng`: A random number generator that supports uniform sampling. - /// - /// The constants are split equally between the initial and terminal rounds. - /// - /// # Panics - /// Panics if `external_round_number` is not even. - pub fn new_from_rng(external_round_number: usize, rng: &mut R) -> Self - where - StandardUniform: Distribution<[T; WIDTH]>, - { - let half = external_round_number / 2; - assert_eq!( - 2 * half, - external_round_number, - "The total number of external rounds should be even" - ); - let initial_constants = rng.sample_iter(StandardUniform).take(half).collect(); - let terminal_constants = rng.sample_iter(StandardUniform).take(half).collect(); - - Self::new(initial_constants, terminal_constants) - } - - /// Construct constants from statically stored arrays, using a conversion function. - /// - /// This is useful when deserializing precomputed constants or embedding - /// them directly in the codebase (e.g., from `[[[u32; WIDTH]; N]; 2]` arrays). - /// - /// # Arguments - /// - `initial`, `terminal`: Two fixed-size arrays of size `N` containing round constants. - /// - `conversion_fn`: A function to convert from the source type `U` to `T`. - pub fn new_from_saved_array( - [initial, terminal]: [[[U; WIDTH]; N]; 2], - conversion_fn: fn([U; WIDTH]) -> [T; WIDTH], - ) -> Self - where - T: Clone, - { - let initial_consts = initial.map(conversion_fn).to_vec(); - let terminal_consts = terminal.map(conversion_fn).to_vec(); - Self::new(initial_consts, terminal_consts) - } - - /// Get a reference to the list of initial round constants. - /// - /// These are used in the first half of the external rounds. - pub const fn get_initial_constants(&self) -> &Vec<[T; WIDTH]> { - &self.initial - } - - /// Get a reference to the list of terminal round constants. - /// - /// These are used in the second half (terminal rounds) of the external layer. - pub const fn get_terminal_constants(&self) -> &Vec<[T; WIDTH]> { - &self.terminal - } -} - -/// Initialize an external layer from a set of constants. -pub trait ExternalLayerConstructor -where - F: Field, -{ - /// A constructor which internally will convert the supplied - /// constants into the appropriate form for the implementation. - fn new_from_constants(external_constants: ExternalLayerConstants) -> Self; -} - -/// A trait containing all data needed to implement the external layers of Poseidon2. -pub trait ExternalLayer: Sync + Clone -where - R: PrimeCharacteristicRing, -{ - // permute_state_initial, permute_state_terminal are split as the Poseidon2 specifications are slightly different - // with the initial rounds involving an extra matrix multiplication. - - /// Perform the initial external layers of the Poseidon2 permutation on the given state. - fn permute_state_initial(&self, state: &mut [R; WIDTH]); - - /// Perform the terminal external layers of the Poseidon2 permutation on the given state. - fn permute_state_terminal(&self, state: &mut [R; WIDTH]); -} - -/// Applies the terminal external rounds of the Poseidon2 permutation. -/// -/// Each external round consists of three steps: -/// 1. Adding round constants to each element of the state. -/// 2. Apply the S-box to each element of the state. -/// 3. Applying an external linear layer (based on a `4x4` MDS matrix). -/// -/// # Parameters -/// - `state`: The current state of the permutation (size `WIDTH`). -/// - `terminal_external_constants`: Per-round constants which are added to each state element. -/// - `add_rc_and_sbox`: A function that adds the round constant and applies the S-box to a given element. -/// - `mat4`: The 4x4 MDS matrix used in the external linear layer. -#[inline] -pub fn external_terminal_permute_state< - R: PrimeCharacteristicRing, - CT: Copy, // Whatever type the constants are stored as. - MdsPerm4: MdsPermutation, - const WIDTH: usize, ->( - state: &mut [R; WIDTH], - terminal_external_constants: &[[CT; WIDTH]], - add_rc_and_sbox: fn(&mut R, CT), - mat4: &MdsPerm4, -) { - for elem in terminal_external_constants { - state - .iter_mut() - .zip(elem.iter()) - .for_each(|(s, &rc)| add_rc_and_sbox(s, rc)); - mds_light_permutation(state, mat4); - } -} - -/// Applies the initial external rounds of the Poseidon2 permutation. -/// -/// Apply the external linear layer and run a sequence of standard external rounds consisting of -/// 1. Adding round constants to each element of the state. -/// 2. Apply the S-box to each element of the state. -/// 3. Applying an external linear layer (based on a `4x4` MDS matrix). -/// -/// # Parameters -/// - `state`: The state array at the start of the permutation. -/// - `initial_external_constants`: Per-round constants which are added to each state element. -/// - `add_rc_and_sbox`: A function that adds the round constant and applies the S-box to a given element. -/// - `mat4`: The 4x4 MDS matrix used in the external linear layer. -#[inline] -pub fn external_initial_permute_state< - R: PrimeCharacteristicRing, - CT: Copy, // Whatever type the constants are stored as. - MdsPerm4: MdsPermutation, - const WIDTH: usize, ->( - state: &mut [R; WIDTH], - initial_external_constants: &[[CT; WIDTH]], - add_rc_and_sbox: fn(&mut R, CT), - mat4: &MdsPerm4, -) { - mds_light_permutation(state, mat4); - // After the initial mds_light_permutation, the remaining layers are identical - // to the terminal permutation simply with different constants. - external_terminal_permute_state(state, initial_external_constants, add_rc_and_sbox, mat4) -} diff --git a/crates/backend/koala-bear/src/poseidon2/generic.rs b/crates/backend/koala-bear/src/poseidon2/generic.rs deleted file mode 100644 index cbe21775..00000000 --- a/crates/backend/koala-bear/src/poseidon2/generic.rs +++ /dev/null @@ -1,42 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -//! Whilst high speed implementations of Poseidon2 rely on a detailed understanding of the underlying field structure -//! it is also useful to have a generic constructor which works for a much larger range of rings. -//! -//! Indeed, for a fixed field F, the Poseidon2 permutation consists of three basic operations: -//! - Addition by elements in F. -//! - A power map x -> x^n. -//! - Multiplication by an F valued matrix. -//! -//! This means that it is possible to define a Poseidon2 over any ring implementing `Algebra`. -//! -//! This file implements the generic methods from which Poseidon2 can be built. - -use field::{Algebra, Field, InjectiveMonomial, PrimeCharacteristicRing}; - -use crate::{MDSMat4, mds_light_permutation}; - -/// A generic method performing the transformation: -/// -/// `s -> (s + rc)^D` -/// -/// This is a little slower than field specific implementations (particularly for packed fields) so should -/// only be used in non performance critical places. -#[inline(always)] -pub fn add_rc_and_sbox_generic + InjectiveMonomial, const D: u64>(val: &mut A, rc: F) { - *val += rc; - *val = val.injective_exp_n(); -} - -pub trait GenericPoseidon2LinearLayers: Sync { - /// A generic implementation of the matrix multiplication - /// corresponding to the internal linear layer. - fn internal_linear_layer(state: &mut [R; WIDTH]); - - /// A generic implementation of the matrix multiplication - /// corresponding to the external linear layer. - #[inline(always)] - fn external_linear_layer(state: &mut [R; WIDTH]) { - mds_light_permutation(state, &MDSMat4); - } -} diff --git a/crates/backend/koala-bear/src/poseidon2/internal.rs b/crates/backend/koala-bear/src/poseidon2/internal.rs deleted file mode 100644 index a937c592..00000000 --- a/crates/backend/koala-bear/src/poseidon2/internal.rs +++ /dev/null @@ -1,81 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -//! Inside the Poseidon2 paper, they describe that the internal layers of the hash -//! function do not require the full properties of MDS matrices. -//! -//! > For the partial rounds, the MDS property is not required anymore, and -//! > we can set up the matrix MI focusing only on providing full diffusion, breaking -//! > arbitrarily long subspace trails, and ensuring that the polynomial representation -//! > of the scheme is dense. (Section 5.2) -//! -//! This file implements a trait for linear layers that satisfy these three properties. - -// The requirements translate to the following 3 properties: -// 1: All entries are non 0. -// 2: No Subspace Trails. -// 3: For a matrix of the form 1 + D, the diagonal D should also be non 0. -// -// Properties 1 and 3 are essentially immediate to check and a sufficient condition for property 2 -// is that the minimal polynomial of the matrix M and all its powers M^2, ..., M^{2WIDTH} are maximal and irreducible. -// This is equivalent to all the characteristic polynomials being irreducible. -// -// These can be verified by the following sage code (Changing field/vector/length as desired): -// -// field = GF(2^31 - 1); -// length = 16; -// vector = [-2, 1, 2, 4, 8, 16, 32, 64, 128, 256, 1024, 4096, 8192, 16384, 32768, 65536]; -// const_mat = matrix.ones(field, length); -// diag_mat = diagonal_matrix(field, vector); -// for i in range(1, 2 * length + 1) -// assert ((const_mat + diag_mat)^i).characteristic_polynomial().is_irreducible() - -use alloc::vec::Vec; - -use field::{Algebra, Field, InjectiveMonomial, PrimeCharacteristicRing}; - -use crate::add_rc_and_sbox_generic; - -/// Initialize an internal layer from a set of constants. -pub trait InternalLayerConstructor -where - F: Field, -{ - /// A constructor which internally will convert the supplied - /// constants into the appropriate form for the implementation. - fn new_from_constants(internal_constants: Vec) -> Self; -} - -/// Given a vector v compute the matrix vector product (1 + diag(v))state with 1 denoting the constant matrix of ones. -pub fn matmul_internal, const WIDTH: usize>( - state: &mut [A; WIDTH], - mat_internal_diag_m_1: [F; WIDTH], -) { - let sum = A::sum_array::(state); - for i in 0..WIDTH { - state[i] *= mat_internal_diag_m_1[i]; - state[i] += sum; - } -} - -/// A trait containing all data needed to implement the internal layers of Poseidon2. -pub trait InternalLayer: Sync + Clone -where - R: PrimeCharacteristicRing, -{ - /// Perform the internal layers of the Poseidon2 permutation on the given state. - fn permute_state(&self, state: &mut [R; WIDTH]); -} - -/// A helper method which allows any field to easily implement Internal Layer. -/// This should only be used in places where performance is not critical. -#[inline] -pub fn internal_permute_state + InjectiveMonomial, const WIDTH: usize, const D: u64>( - state: &mut [A; WIDTH], - diffusion_mat: fn(&mut [A; WIDTH]), - internal_constants: &[F], -) { - for elem in internal_constants { - add_rc_and_sbox_generic(&mut state[0], *elem); - diffusion_mat(state); - } -} diff --git a/crates/backend/koala-bear/src/poseidon2/mod.rs b/crates/backend/koala-bear/src/poseidon2/mod.rs deleted file mode 100644 index c1edc6fe..00000000 --- a/crates/backend/koala-bear/src/poseidon2/mod.rs +++ /dev/null @@ -1,105 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -//! The Poseidon2 permutation. - -mod external; -mod generic; -mod internal; -mod round_numbers; -use alloc::vec::Vec; -use core::marker::PhantomData; - -pub use external::*; -use field::{Algebra, InjectiveMonomial, PrimeField, PrimeField64}; -pub use generic::*; -pub use internal::*; -use rand::distr::{Distribution, StandardUniform}; -use rand::{Rng, RngExt}; -pub use round_numbers::poseidon2_round_numbers_128; - -const SUPPORTED_WIDTHS: [usize; 8] = [2, 3, 4, 8, 12, 16, 20, 24]; - -/// The Poseidon2 permutation. -#[derive(Clone, Debug)] -pub struct Poseidon2 { - /// The permutations used in External Rounds. - external_layer: ExternalPerm, - - /// The permutation used in Internal Rounds. - internal_layer: InternalPerm, - - _phantom: PhantomData, -} - -impl Poseidon2 -where - F: PrimeField, - ExternalPerm: ExternalLayerConstructor, - InternalPerm: InternalLayerConstructor, -{ - /// Create a new Poseidon2 configuration. - /// This internally converts the given constants to the relevant packed versions. - pub fn new(external_constants: ExternalLayerConstants, internal_constants: Vec) -> Self { - assert!(SUPPORTED_WIDTHS.contains(&WIDTH)); - let external_layer = ExternalPerm::new_from_constants(external_constants); - let internal_layer = InternalPerm::new_from_constants(internal_constants); - - Self { - external_layer, - internal_layer, - _phantom: PhantomData, - } - } - - /// Create a new Poseidon2 configuration with random parameters. - pub fn new_from_rng(rounds_f: usize, rounds_p: usize, rng: &mut R) -> Self - where - StandardUniform: Distribution + Distribution<[F; WIDTH]>, - { - let external_constants = ExternalLayerConstants::new_from_rng(rounds_f, rng); - let internal_constants = rng.sample_iter(StandardUniform).take(rounds_p).collect(); - - Self::new(external_constants, internal_constants) - } -} - -impl Poseidon2 -where - F: PrimeField64, - ExternalPerm: ExternalLayerConstructor, - InternalPerm: InternalLayerConstructor, -{ - /// Create a new Poseidon2 configuration with 128 bit security and random rounds constants. - /// - /// # Panics - /// This will panic if D and F::ORDER_U64 - 1 are not relatively prime. - /// This will panic if the optimal parameters for the given field and width have not been computed. - pub fn new_from_rng_128(rng: &mut R) -> Self - where - StandardUniform: Distribution + Distribution<[F; WIDTH]>, - { - let round_numbers = poseidon2_round_numbers_128::(WIDTH, D); - let (rounds_f, rounds_p) = round_numbers.unwrap_or_else(|e| panic!("{e}")); - Self::new_from_rng(rounds_f, rounds_p, rng) - } -} - -impl, ExternalPerm, InternalPerm, const WIDTH: usize, const D: u64> - Poseidon2 -{ - /// Poseidon2 compression: output = Poseidon2(input) + input - pub fn compress_in_place(&self, state: &mut [A; WIDTH]) - where - A: Algebra + Sync + InjectiveMonomial, - ExternalPerm: ExternalLayer, - InternalPerm: InternalLayer, - { - let initial_state = *state; - self.external_layer.permute_state_initial(state); - self.internal_layer.permute_state(state); - self.external_layer.permute_state_terminal(state); - state.iter_mut().zip(initial_state).for_each(|(s, i)| { - *s += i; - }); - } -} diff --git a/crates/backend/koala-bear/src/poseidon2/round_numbers.rs b/crates/backend/koala-bear/src/poseidon2/round_numbers.rs deleted file mode 100644 index f5bcd20c..00000000 --- a/crates/backend/koala-bear/src/poseidon2/round_numbers.rs +++ /dev/null @@ -1,82 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -//! As the security analysis of Poseidon2 is identical to that of Poseidon, -//! the relevant constraints regarding the number of full/partial rounds required can be found in -//! the original paper: `` and the associated codebase: -//! `` (See generate_params_poseidon.sage) -//! -//! These constraints are broken down into 6 equations: -//! statistical, interpolation, Gröbner 1, 2, 3 and -//! an extra constraint coming from the paper ``. -//! -//! For our parameters (M = 128, p > 2^30, WIDTH = t >= 8, D = alpha < 12), -//! the statistical constraint always simplifies to requiring RF >= 6. -//! Additionally p does not appear in Gröbner 3 or the constraint coming from ``. -//! The remaining 3 constraints all can be rearranged into the form: -//! F(RF, RP) >= G(p) where G is a function which is non-decreasing with respect to p. -//! -//! Thus, if some tuple (M, p, WIDTH, D, RF, RP) satisfies all constraints, then so will -//! the tuple (M, q, WIDTH, D, RF, RP) for any 2^30 < q < p. -//! Moreover if RF, RP are the "optimal" round numbers (Optimal meaning minimising the number of S-box operations we need to perform) -//! for two tuples (M, p, WIDTH, D) and (M, q, WIDTH, D), then -//! they will also be optimal for (M, r, WIDTH, D) for any q < r < p. -//! -//! We compute the optimal required number of external (full) and internal (partial) rounds using: -//! `` -//! Using the above analysis we can conclude that the round numbers are equal -//! for all 31 bit primes and 64 bit primes respectively. - -use field::PrimeField64; -use utils::relatively_prime_u64; - -/// Given a field, a width and an D return the number of full and partial rounds needed to achieve 128 bit security. -/// -/// If d is not a valid permutation of the given field or the optimal parameters for that size of prime -/// have not been computed, an error is returned. -pub const fn poseidon2_round_numbers_128( - width: usize, - d: u64, -) -> Result<(usize, usize), &'static str> { - // Start by checking that d is a valid permutation. - if !relatively_prime_u64(d, F::ORDER_U64 - 1) { - return Err("Invalid permutation: gcd(d, F::ORDER_U64 - 1) must be 1"); - } - - // Next compute the number of bits in p. - let prime_bit_number = F::ORDER_U64.ilog2() + 1; - - match prime_bit_number { - 31 => match (width, d) { - (16, 3) => Ok((8, 20)), - (16, 5) => Ok((8, 14)), - (16, 7) => Ok((8, 13)), - (16, 9) => Ok((8, 13)), - (16, 11) => Ok((8, 13)), - (24, 3) => Ok((8, 23)), - (24, 5) => Ok((8, 22)), - (24, 7) => Ok((8, 21)), - (24, 9) => Ok((8, 21)), - (24, 11) => Ok((8, 21)), - _ => Err("The given pair of width and D has not been checked for these fields"), - }, - 64 => match (width, d) { - (8, 3) => Ok((8, 41)), - (8, 5) => Ok((8, 27)), - (8, 7) => Ok((8, 22)), - (8, 9) => Ok((8, 19)), - (8, 11) => Ok((8, 17)), - (12, 3) => Ok((8, 42)), - (12, 5) => Ok((8, 27)), - (12, 7) => Ok((8, 22)), - (12, 9) => Ok((8, 20)), - (12, 11) => Ok((8, 18)), - (16, 3) => Ok((8, 42)), - (16, 5) => Ok((8, 27)), - (16, 7) => Ok((8, 22)), - (16, 9) => Ok((8, 20)), - (16, 11) => Ok((8, 18)), - _ => Err("The given pair of width and D has not been checked for these fields"), - }, - _ => Err("The optimal parameters for that size of prime have not been computed."), - } -} diff --git a/crates/backend/koala-bear/src/poseidon2_koalabear.rs b/crates/backend/koala-bear/src/poseidon2_koalabear.rs deleted file mode 100644 index 01144859..00000000 --- a/crates/backend/koala-bear/src/poseidon2_koalabear.rs +++ /dev/null @@ -1,292 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -//! Implementation of Poseidon2, see: https://eprint.iacr.org/2023/323 -//! -//! For the diffusion matrix, 1 + Diag(V), we perform a search to find an optimized -//! vector V composed of elements with efficient multiplication algorithms in AVX2/AVX512/NEON. -//! -//! This leads to using small values (e.g. 1, 2, 3, 4) where multiplication is implemented using addition -//! and inverse powers of 2 where it is possible to avoid monty reductions. -//! Additionally, for technical reasons, having the first entry be -2 is useful. -//! -//! Optimized Diagonal for KoalaBear16: -//! [-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4, 1/2^8, 1/8, 1/2^24, -1/2^8, -1/8, -1/16, -1/2^24] -//! Optimized Diagonal for KoalaBear24: -//! [-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4, 1/2^8, 1/4, 1/8, 1/16, 1/32, 1/64, 1/2^24, -1/2^8, -1/8, -1/16, -1/32, -1/64, -1/2^7, -1/2^9, -1/2^24] -//! See poseidon2\src\diffusion.rs for information on how to double check these matrices in Sage. - -use crate::monty_31::poseidon2_monty::{ - GenericPoseidon2LinearLayersMonty31, InternalLayerBaseParameters, InternalLayerParameters, -}; -use crate::poseidon2::{ExternalLayerConstants, Poseidon2}; -use crate::{Poseidon2ExternalLayerMonty31, Poseidon2InternalLayerMonty31}; -use field::PrimeCharacteristicRing; - -use crate::{KoalaBear, KoalaBearParameters}; - -pub type Poseidon2InternalLayerKoalaBear = - Poseidon2InternalLayerMonty31; - -pub type Poseidon2ExternalLayerKoalaBear = - Poseidon2ExternalLayerMonty31; - -/// Degree of the chosen permutation polynomial for KoalaBear, used as the Poseidon2 S-Box. -/// -/// As p - 1 = 127 * 2^{24} we have a lot of choice in degree D satisfying gcd(p - 1, D) = 1. -/// Experimentation suggests that the optimal choice is the smallest available one, namely 3. -const KOALABEAR_S_BOX_DEGREE: u64 = 3; - -/// An implementation of the Poseidon2 hash function specialised to run on the current architecture. -/// -/// It acts on arrays of the form either `[KoalaBear::Packing; WIDTH]` or `[KoalaBear; WIDTH]`. For speed purposes, -/// wherever possible, input arrays should of the form `[KoalaBear::Packing; WIDTH]`. -pub type Poseidon2KoalaBear = Poseidon2< - KoalaBear, - Poseidon2ExternalLayerKoalaBear, - Poseidon2InternalLayerKoalaBear, - WIDTH, - KOALABEAR_S_BOX_DEGREE, ->; - -/// An implementation of the matrix multiplications in the internal and external layers of Poseidon2. -/// -/// This can act on `[A; WIDTH]` for any ring implementing `Algebra`. -/// If you have either `[KoalaBear::Packing; WIDTH]` or `[KoalaBear; WIDTH]` it will be much faster -/// to use `Poseidon2KoalaBear` instead of building a Poseidon2 permutation using this. -pub type GenericPoseidon2LinearLayersKoalaBear = - GenericPoseidon2LinearLayersMonty31; - -/// Initial round constants for the 16-width Poseidon2 external layer on KoalaBear. -/// -/// See Poseidon paper for more details: https://eprint.iacr.org/2019/458 -/// Sage script used to generate these constants: https://github.com/HorizenLabs/poseidon2/blob/main/poseidon2_rust_params.sage -pub const KOALABEAR_RC16_EXTERNAL_INITIAL: [[KoalaBear; 16]; 4] = KoalaBear::new_2d_array([ - [ - 2128964168, 288780357, 316938561, 2126233899, 426817493, 1714118888, 1045008582, 1738510837, 889721787, - 8866516, 681576474, 419059826, 1596305521, 1583176088, 1584387047, 1529751136, - ], - [ - 1863858111, 1072044075, 517831365, 1464274176, 1138001621, 428001039, 245709561, 1641420379, 1365482496, - 770454828, 693167409, 757905735, 136670447, 436275702, 525466355, 1559174242, - ], - [ - 1030087950, 869864998, 322787870, 267688717, 948964561, 740478015, 679816114, 113662466, 2066544572, - 1744924186, 367094720, 1380455578, 1842483872, 416711434, 1342291586, 1692058446, - ], - [ - 1493348999, 1113949088, 210900530, 1071655077, 610242121, 1136339326, 2020858841, 1019840479, 678147278, - 1678413261, 1361743414, 61132629, 1209546658, 64412292, 1936878279, 1980661727, - ], -]); - -/// Final round constants for the 16-width Poseidon2's external layer on KoalaBear. -/// -/// See Poseidon paper for more details: https://eprint.iacr.org/2019/458 -/// Sage script used to generate these constants: https://github.com/HorizenLabs/poseidon2/blob/main/poseidon2_rust_params.sage -pub const KOALABEAR_RC16_EXTERNAL_FINAL: [[KoalaBear; 16]; 4] = KoalaBear::new_2d_array([ - [ - 1423960925, 2101391318, 1915532054, 275400051, 1168624859, 1141248885, 356546469, 1165250474, 1320543726, - 932505663, 1204226364, 1452576828, 1774936729, 926808140, 1184948056, 1186493834, - ], - [ - 843181003, 185193011, 452207447, 510054082, 1139268644, 630873441, 669538875, 462500858, 876500520, 1214043330, - 383937013, 375087302, 636912601, 307200505, 390279673, 1999916485, - ], - [ - 1518476730, 1606686591, 1410677749, 1581191572, 1004269969, 143426723, 1747283099, 1016118214, 1749423722, - 66331533, 1177761275, 1581069649, 1851371119, 852520128, 1499632627, 1820847538, - ], - [ - 150757557, 884787840, 619710451, 1651711087, 505263814, 212076987, 1482432120, 1458130652, 382871348, - 417404007, 2066495280, 1996518884, 902934924, 582892981, 1337064375, 1199354861, - ], -]); - -/// Round constants for the 16-width Poseidon2's internal layer on KoalaBear. -/// -/// See Poseidon paper for more details: https://eprint.iacr.org/2019/458 -/// Sage script used to generate these constants: https://github.com/HorizenLabs/poseidon2/blob/main/poseidon2_rust_params.sage -pub const KOALABEAR_RC16_INTERNAL: [KoalaBear; 20] = KoalaBear::new_array([ - 2102596038, 1533193853, 1436311464, 2012303432, 839997195, 1225781098, 2011967775, 575084315, 1309329169, - 786393545, 995788880, 1702925345, 1444525226, 908073383, 1811535085, 1531002367, 1635653662, 1585100155, 867006515, - 879151050, -]); - -/// A default Poseidon2 for KoalaBear using the round constants from the original specification. -/// -/// See Poseidon paper for more details: https://eprint.iacr.org/2019/458 -/// Sage script used to generate these constants: https://github.com/HorizenLabs/poseidon2/blob/main/poseidon2_rust_params.sage -pub fn default_koalabear_poseidon2_16() -> Poseidon2KoalaBear<16> { - Poseidon2::new( - ExternalLayerConstants::new( - KOALABEAR_RC16_EXTERNAL_INITIAL.to_vec(), - KOALABEAR_RC16_EXTERNAL_FINAL.to_vec(), - ), - KOALABEAR_RC16_INTERNAL.to_vec(), - ) -} - -/// Initial round constants for the 24-width Poseidon2 external layer on KoalaBear. -/// -/// See Poseidon paper for more details: https://eprint.iacr.org/2019/458 -/// Sage script used to generate these constants: https://github.com/HorizenLabs/poseidon2/blob/main/poseidon2_rust_params.sage -pub const KOALABEAR_RC24_EXTERNAL_INITIAL: [[KoalaBear; 24]; 4] = KoalaBear::new_2d_array([ - [ - 487143900, 1829048205, 1652578477, 646002781, 1044144830, 53279448, 1519499836, 22697702, 1768655004, - 230479744, 1484895689, 705130286, 1429811285, 1695785093, 1417332623, 1115801016, 1048199020, 878062617, - 738518649, 249004596, 1601837737, 24601614, 245692625, 364803730, - ], - [ - 1857019234, 1906668230, 1916890890, 835590867, 557228239, 352829675, 515301498, 973918075, 954515249, - 1142063750, 1795549558, 608869266, 1850421928, 2028872854, 1197543771, 1027240055, 1976813168, 963257461, - 652017844, 2113212249, 213459679, 90747280, 1540619478, 324138382, - ], - [ - 1377377119, 294744504, 512472871, 668081958, 907306515, 518526882, 1907091534, 1152942192, 1572881424, - 720020214, 729527057, 1762035789, 86171731, 205890068, 453077400, 1201344594, 986483134, 125174298, 2050269685, - 1895332113, 749706654, 40566555, 742540942, 1735551813, - ], - [ - 162985276, 1943496073, 1469312688, 703013107, 1979485151, 1278193166, 548674995, 2118718736, 749596440, - 1476142294, 1293606474, 918523452, 890353212, 1691895663, 1932240646, 1180911992, 86098300, 1592168978, - 895077289, 724819849, 1697986774, 1608418116, 1083269213, 691256798, - ], -]); - -/// Final round constants for the 24-width Poseidon2's external layer on KoalaBear. -/// -/// See Poseidon paper for more details: https://eprint.iacr.org/2019/458 -/// Sage script used to generate these constants: https://github.com/HorizenLabs/poseidon2/blob/main/poseidon2_rust_params.sage -pub const KOALABEAR_RC24_EXTERNAL_FINAL: [[KoalaBear; 24]; 4] = KoalaBear::new_2d_array([ - [ - 328586442, 1572520009, 1375479591, 322991001, 967600467, 1172861548, 1973891356, 1503625929, 1881993531, - 40601941, 1155570620, 571547775, 1361622243, 1495024047, 1733254248, 964808915, 763558040, 1887228519, - 994888261, 718330940, 213359415, 603124968, 1038411577, 2099454809, - ], - [ - 949846777, 630926956, 1168723439, 222917504, 1527025973, 1009157017, 2029957881, 805977836, 1347511739, - 540019059, 589807745, 440771316, 1530063406, 761076336, 87974206, 1412686751, 1230318064, 514464425, - 1469011754, 1770970737, 1510972858, 965357206, 209398053, 778802532, - ], - [ - 40567006, 1984217577, 1545851069, 879801839, 1611910970, 1215591048, 330802499, 1051639108, 321036, 511927202, - 591603098, 1775897642, 115598532, 278200718, 233743176, 525096211, 1335507608, 830017835, 1380629279, - 560028578, 598425701, 302162385, 567434115, 1859222575, - ], - [ - 958294793, 1582225556, 1781487858, 1570246000, 1067748446, 526608119, 1666453343, 1786918381, 348203640, - 1860035017, 1489902626, 1904576699, 860033965, 1954077639, 1685771567, 971513929, 1877873770, 137113380, - 520695829, 806829080, 1408699405, 1613277964, 793223662, 648443918, - ], -]); - -/// Round constants for the 24-width Poseidon2's internal layer on KoalaBear. -/// -/// See Poseidon paper for more details: https://eprint.iacr.org/2019/458 -/// Sage script used to generate these constants: https://github.com/HorizenLabs/poseidon2/blob/main/poseidon2_rust_params.sage -pub const KOALABEAR_RC24_INTERNAL: [KoalaBear; 23] = KoalaBear::new_array([ - 893435011, 403879071, 1363789863, 1662900517, 2043370, 2109755796, 931751726, 2091644718, 606977583, 185050397, - 946157136, 1350065230, 1625860064, 122045240, 880989921, 145137438, 1059782436, 1477755661, 335465138, 1640704282, - 1757946479, 1551204074, 681266718, -]); - -/// A default Poseidon2 for KoalaBear using the round constants from the original specification. -/// -/// See Poseidon paper for more details: https://eprint.iacr.org/2019/458 -/// Sage script used to generate these constants: https://github.com/HorizenLabs/poseidon2/blob/main/poseidon2_rust_params.sage -pub fn default_koalabear_poseidon2_24() -> Poseidon2KoalaBear<24> { - Poseidon2::new( - ExternalLayerConstants::new( - KOALABEAR_RC24_EXTERNAL_INITIAL.to_vec(), - KOALABEAR_RC24_EXTERNAL_FINAL.to_vec(), - ), - KOALABEAR_RC24_INTERNAL.to_vec(), - ) -} - -/// Contains data needed to define the internal layers of the Poseidon2 permutation. -#[derive(Debug, Clone, Default)] -pub struct KoalaBearInternalLayerParameters; - -impl InternalLayerBaseParameters for KoalaBearInternalLayerParameters { - /// Perform the internal matrix multiplication: s -> (1 + Diag(V))s. - /// We ignore `state[0]` as it is handled separately. - #[inline(always)] - fn internal_layer_mat_mul(state: &mut [R; 16], sum: R) { - // The diagonal matrix is defined by the vector: - // V = [-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4, 1/2^8, 1/8, 1/2^24, -1/2^8, -1/8, -1/16, -1/2^24] - state[1] += sum; - state[2] = state[2].double() + sum; - state[3] = state[3].halve() + sum; - state[4] = sum + state[4].double() + state[4]; - state[5] = sum + state[5].double().double(); - state[6] = sum - state[6].halve(); - state[7] = sum - (state[7].double() + state[7]); - state[8] = sum - state[8].double().double(); - state[9] = state[9].div_2exp_u64(8); - state[9] += sum; - state[10] = state[10].div_2exp_u64(3); - state[10] += sum; - state[11] = state[11].div_2exp_u64(24); - state[11] += sum; - state[12] = state[12].div_2exp_u64(8); - state[12] = sum - state[12]; - state[13] = state[13].div_2exp_u64(3); - state[13] = sum - state[13]; - state[14] = state[14].div_2exp_u64(4); - state[14] = sum - state[14]; - state[15] = state[15].div_2exp_u64(24); - state[15] = sum - state[15]; - } -} - -impl InternalLayerBaseParameters for KoalaBearInternalLayerParameters { - /// Perform the internal matrix multiplication: s -> (1 + Diag(V))s. - /// We ignore `state[0]` as it is handled separately. - #[inline(always)] - fn internal_layer_mat_mul(state: &mut [R; 24], sum: R) { - // The diagonal matrix is defined by the vector: - // V = [-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4, 1/2^8, 1/4, 1/8, 1/16, 1/32, 1/64, 1/2^24, -1/2^8, -1/8, -1/16, -1/32, -1/64, -1/2^7, -1/2^9, -1/2^24] - state[1] += sum; - state[2] = state[2].double() + sum; - state[3] = state[3].halve() + sum; - state[4] = sum + state[4].double() + state[4]; - state[5] = sum + state[5].double().double(); - state[6] = sum - state[6].halve(); - state[7] = sum - (state[7].double() + state[7]); - state[8] = sum - state[8].double().double(); - state[9] = state[9].div_2exp_u64(8); - state[9] += sum; - state[10] = state[10].div_2exp_u64(2); - state[10] += sum; - state[11] = state[11].div_2exp_u64(3); - state[11] += sum; - state[12] = state[12].div_2exp_u64(4); - state[12] += sum; - state[13] = state[13].div_2exp_u64(5); - state[13] += sum; - state[14] = state[14].div_2exp_u64(6); - state[14] += sum; - state[15] = state[15].div_2exp_u64(24); - state[15] += sum; - state[16] = state[16].div_2exp_u64(8); - state[16] = sum - state[16]; - state[17] = state[17].div_2exp_u64(3); - state[17] = sum - state[17]; - state[18] = state[18].div_2exp_u64(4); - state[18] = sum - state[18]; - state[19] = state[19].div_2exp_u64(5); - state[19] = sum - state[19]; - state[20] = state[20].div_2exp_u64(6); - state[20] = sum - state[20]; - state[21] = state[21].div_2exp_u64(7); - state[21] = sum - state[21]; - state[22] = state[22].div_2exp_u64(9); - state[22] = sum - state[22]; - state[23] = state[23].div_2exp_u64(24); - state[23] = sum - state[23]; - } -} - -impl InternalLayerParameters for KoalaBearInternalLayerParameters {} -impl InternalLayerParameters for KoalaBearInternalLayerParameters {} diff --git a/crates/backend/koala-bear/src/quintic_extension/packed_extension.rs b/crates/backend/koala-bear/src/quintic_extension/packed_extension.rs index 916fd112..eca47ab7 100644 --- a/crates/backend/koala-bear/src/quintic_extension/packed_extension.rs +++ b/crates/backend/koala-bear/src/quintic_extension/packed_extension.rs @@ -16,7 +16,7 @@ use serde::{Deserialize, Serialize}; use utils::{flatten_to_base, reconstitute_from_base}; use super::extension::QuinticExtensionField; -use crate::QuinticExtendable; +use crate::{KoalaBear, QuinticExtendable}; #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug, Serialize, Deserialize, PartialOrd, Ord)] #[repr(transparent)] // Needed to make various casts safe. @@ -78,6 +78,70 @@ impl> Algebra> Algebra for PackedQuinticExtensionField {} +macro_rules! impl_packed_ext_scalar_ops { + ($pf:ty) => { + impl Add for PackedQuinticExtensionField { + type Output = Self; + #[inline] + fn add(mut self, rhs: KoalaBear) -> Self { + self.value[0] += rhs; + self + } + } + + impl AddAssign for PackedQuinticExtensionField { + #[inline] + fn add_assign(&mut self, rhs: KoalaBear) { + self.value[0] += rhs; + } + } + + impl Sub for PackedQuinticExtensionField { + type Output = Self; + #[inline] + fn sub(mut self, rhs: KoalaBear) -> Self { + self.value[0] -= rhs; + self + } + } + + impl SubAssign for PackedQuinticExtensionField { + #[inline] + fn sub_assign(&mut self, rhs: KoalaBear) { + self.value[0] -= rhs; + } + } + + impl Mul for PackedQuinticExtensionField { + type Output = Self; + #[inline] + fn mul(self, rhs: KoalaBear) -> Self { + Self { + value: self.value.map(|x| x * rhs), + } + } + } + + impl MulAssign for PackedQuinticExtensionField { + #[inline] + fn mul_assign(&mut self, rhs: KoalaBear) { + for v in &mut self.value { + *v *= rhs; + } + } + } + }; +} + +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] +impl_packed_ext_scalar_ops!(crate::PackedKoalaBearNeon); + +#[cfg(all(target_arch = "x86_64", target_feature = "avx2", not(target_feature = "avx512f")))] +impl_packed_ext_scalar_ops!(crate::PackedKoalaBearAVX2); + +#[cfg(all(target_arch = "x86_64", target_feature = "avx512f"))] +impl_packed_ext_scalar_ops!(crate::PackedKoalaBearAVX512); + impl PrimeCharacteristicRing for PackedQuinticExtensionField where F: QuinticExtendable, diff --git a/crates/backend/koala-bear/src/x86_64_avx2/mod.rs b/crates/backend/koala-bear/src/x86_64_avx2/mod.rs index 88f8fcf8..730a8675 100644 --- a/crates/backend/koala-bear/src/x86_64_avx2/mod.rs +++ b/crates/backend/koala-bear/src/x86_64_avx2/mod.rs @@ -1,6 +1,5 @@ // Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). mod packing; -mod poseidon2; pub use packing::*; diff --git a/crates/backend/koala-bear/src/x86_64_avx2/poseidon2.rs b/crates/backend/koala-bear/src/x86_64_avx2/poseidon2.rs deleted file mode 100644 index 0f4f6bd3..00000000 --- a/crates/backend/koala-bear/src/x86_64_avx2/poseidon2.rs +++ /dev/null @@ -1,198 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -use core::arch::x86_64::{self, __m256i}; -use core::mem::transmute; - -use crate::{ - InternalLayerParametersAVX2, mul_2exp_neg_n_avx2, mul_2exp_neg_two_adicity_avx2, mul_neg_2exp_neg_n_avx2, - mul_neg_2exp_neg_two_adicity_avx2, -}; - -use crate::{KoalaBearInternalLayerParameters, KoalaBearParameters}; - -// Godbolt file showing that these all compile to the expected instructions. (Potentially plus a few memory ops): -// https://godbolt.org/z/xK91MKsdd - -// We reimplement multiplication by +/- 2^{-8} here as there is an extra trick we can do specifically in the KoalaBear case. -// This lets us replace a left shift by _mm256_bslli_epi128 which can be performed on Port 5. This takes a small amount -// of pressure off Ports 0, 1. - -/// Multiply a vector of Monty31 field elements in canonical form by 2**{-8}. -/// This is specialised to the KoalaBear prime which allows us to replace a -/// shifts by a twiddle. -/// # Safety -/// -/// Input must be given in canonical form. -/// Output is not in canonical form, outputs are only guaranteed to lie in (-P, P). -#[inline(always)] -unsafe fn mul_2exp_neg_8(input: __m256i) -> __m256i { - // We want this to compile to: - // vpsrld hi, val, 8 - // vpmaddubsw lo, val, [r; 8] - // vpslldq lo, lo, 2 - // vpsubd t, hi, lo - // throughput: 1.333 - // latency: 7 - unsafe { - const ONE_TWENTY_SEVEN: __m256i = unsafe { transmute([127; 8]) }; // P = r*2^j + 1 = 127 * 2^24 + 1 - let hi = x86_64::_mm256_srli_epi32::<8>(input); - - // Whilst it generically does something else, provided - // each entry of odd_factor is < 2^7, _mm256_maddubs_epi16 - // performs an element wise multiplication of odd_factor with - // the bottom 8 bits of input interpreted as an unsigned integer - // Thus lo contains r*x_lo. - let lo = x86_64::_mm256_maddubs_epi16(input, ONE_TWENTY_SEVEN); - - // As the high 16 bits of each 32 bit word are all 0 - // we don't need to worry about shifting the high bits of one - // word into the low bits of another. Thus we can use - // _mm256_bslli_epi128 which can run on Port 5 as it is classed as - // a swizzle operation. - let lo_shft = x86_64::_mm256_bslli_epi128::<2>(lo); - x86_64::_mm256_sub_epi32(hi, lo_shft) - } -} - -/// Multiply a vector of Monty31 field elements in canonical form by 2**{-8}. -/// This is specialised to the KoalaBear prime which allows us to replace a -/// shift by a twiddle. -/// # Safety -/// -/// Input must be given in canonical form. -/// Output is not in canonical form, outputs are only guaranteed to lie in (-P, P). -#[inline(always)] -unsafe fn mul_neg_2exp_neg_8(input: __m256i) -> __m256i { - // We want this to compile to: - // vpsrld hi, val, 8 - // vpmaddubsw lo, val, [r; 8] - // vpslldq lo, lo, 2 - // vpsubd t, lo, hi - // throughput: 1.333 - // latency: 7 - unsafe { - const ONE_TWENTY_SEVEN: __m256i = unsafe { transmute([127; 8]) }; // P = r*2^j + 1 = 127 * 2^24 + 1 - let hi = x86_64::_mm256_srli_epi32::<8>(input); - - // Whilst it generically does something else, provided - // each entry of odd_factor is < 2^7, _mm256_maddubs_epi16 - // performs an element wise multiplication of odd_factor with - // the bottom 8 bits of input interpreted as an unsigned integer - // Thus lo contains r*x_lo. - let lo = x86_64::_mm256_maddubs_epi16(input, ONE_TWENTY_SEVEN); - - // As the high 16 bits of each 32 bit word are all 0 - // we don't need to worry about shifting the high bits of one - // word into the low bits of another. Thus we can use - // _mm256_bslli_epi128 which can run on Port 5 as it is classed as - // a swizzle operation. - let lo_shft = x86_64::_mm256_bslli_epi128::<2>(lo); - x86_64::_mm256_sub_epi32(lo_shft, hi) - } -} - -impl InternalLayerParametersAVX2 for KoalaBearInternalLayerParameters { - type ArrayLike = [__m256i; 15]; - - /// For the KoalaBear field and width 16 we multiply by the diagonal matrix: - /// - /// D = [-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4, 1/2^8, 1/8, 1/2^24, -1/2^8, -1/8, -1/16, -1/2^24] - /// The first 9 entries are handled elsewhere, this function handles all the positive/negative inverse powers of two. - /// The inputs must be in canonical form, otherwise the result is undefined. - /// Even when the inputs are in canonical form, we make no guarantees on the output except that, provided - /// the output is piped directly into add_sum the vector will be modified such that x[i] = D[i]*x[i] + sum. - #[inline(always)] - unsafe fn diagonal_mul_remainder(input: &mut [__m256i; 15]) { - unsafe { - // As far as we know this is optimal in that it need the fewest instructions to perform all of these - // multiplications. (Note that -1, 0 are not allowed on the diagonal for technical reasons). - // If there exist other number b for which x*b mod P can be computed quickly this diagonal can be updated. - - // input[8]-> sum + input[8]/2^8 - input[8] = mul_2exp_neg_8(input[8]); - - // input[9] -> sum + input[9]/2^3 - input[9] = mul_2exp_neg_n_avx2::(input[9]); - - // input[10] -> sum + input[10]/2^24 - input[10] = mul_2exp_neg_two_adicity_avx2::(input[10]); - - // input[11] -> sum - input[11]/2^8 - input[11] = mul_neg_2exp_neg_8(input[11]); - - // input[12] -> sum - input[12]/2^3 - input[12] = mul_neg_2exp_neg_n_avx2::(input[12]); - - // input[13] -> sum - input[13]/2^4 - input[13] = mul_neg_2exp_neg_n_avx2::(input[13]); - - // input[14] -> sum - input[14]/2^24 - input[14] = mul_neg_2exp_neg_two_adicity_avx2::(input[14]); - } - } -} - -impl InternalLayerParametersAVX2 for KoalaBearInternalLayerParameters { - type ArrayLike = [__m256i; 23]; - - /// For the KoalaBear field and width 1246 we multiply by the diagonal matrix: - /// - /// D = [-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4, 1/2^8, 1/4, 1/8, 1/16, 1/32, 1/64, 1/2^24, -1/2^8, -1/8, -1/16, -1/32, -1/64, -1/2^7, -1/2^9, -1/2^24] - /// The first 9 entries are handled elsewhere, this function handles all the positive/negative inverse powers of two. - /// The inputs must be in canonical form, otherwise the result is undefined. - /// Even when the inputs are in canonical form, we make no guarantees on the output except that, provided - /// the output is piped directly into add_sum, the vector will be modified such that x[i] = D[i]*x[i] + sum. - #[inline(always)] - unsafe fn diagonal_mul_remainder(input: &mut [__m256i; 23]) { - unsafe { - // As far as we know this is optimal in that it need the fewest instructions to perform all of these - // multiplications. (Note that -1, 0 are not allowed on the diagonal for technical reasons). - // If there exist other number b for which x*b mod P can be computed quickly this diagonal can be updated. - - // input[8] -> sum + input[8]/2^8 - input[8] = mul_2exp_neg_8(input[8]); - - // input[9] -> sum + input[9]/2^2 - input[9] = mul_2exp_neg_n_avx2::(input[9]); - - // input[10] -> sum + input[10]/2^3 - input[10] = mul_2exp_neg_n_avx2::(input[10]); - - // input[11] -> sum + input[11]/2^4 - input[11] = mul_2exp_neg_n_avx2::(input[11]); - - // input[12] -> sum + input[12]/2^5 - input[12] = mul_2exp_neg_n_avx2::(input[12]); - - // input[13] -> sum + input[13]/2^6 - input[13] = mul_2exp_neg_n_avx2::(input[13]); - - // input[14] -> sum + input[14]/2^24 - input[14] = mul_2exp_neg_two_adicity_avx2::(input[14]); - - // input[15] -> sum - input[15]/2^8 - input[15] = mul_neg_2exp_neg_8(input[15]); - - // input[16] -> sum - input[16]/2^3 - input[16] = mul_neg_2exp_neg_n_avx2::(input[16]); - - // input[17] -> sum - input[17]/2^4 - input[17] = mul_neg_2exp_neg_n_avx2::(input[17]); - - // input[18] -> sum - input[18]/2^5 - input[18] = mul_neg_2exp_neg_n_avx2::(input[18]); - - // input[19] -> sum - input[19]/2^6 - input[19] = mul_neg_2exp_neg_n_avx2::(input[19]); - - // input[20] -> sum - input[20]/2^7 - input[20] = mul_neg_2exp_neg_n_avx2::(input[20]); - - // input[21] -> sum - input[21]/2^9 - input[21] = mul_neg_2exp_neg_n_avx2::(input[21]); - - // input[22] -> sum - input[22]/2^24 - input[22] = mul_neg_2exp_neg_two_adicity_avx2::(input[22]); - } - } -} diff --git a/crates/backend/koala-bear/src/x86_64_avx512/mod.rs b/crates/backend/koala-bear/src/x86_64_avx512/mod.rs index 88f8fcf8..730a8675 100644 --- a/crates/backend/koala-bear/src/x86_64_avx512/mod.rs +++ b/crates/backend/koala-bear/src/x86_64_avx512/mod.rs @@ -1,6 +1,5 @@ // Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). mod packing; -mod poseidon2; pub use packing::*; diff --git a/crates/backend/koala-bear/src/x86_64_avx512/poseidon2.rs b/crates/backend/koala-bear/src/x86_64_avx512/poseidon2.rs deleted file mode 100644 index 30945bfc..00000000 --- a/crates/backend/koala-bear/src/x86_64_avx512/poseidon2.rs +++ /dev/null @@ -1,128 +0,0 @@ -// Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). - -use core::arch::x86_64::__m512i; - -use crate::{ - InternalLayerParametersAVX512, mul_neg_2exp_neg_8_avx512, mul_neg_2exp_neg_n_avx512, - mul_neg_2exp_neg_two_adicity_avx512, -}; - -use crate::{KoalaBearInternalLayerParameters, KoalaBearParameters}; - -impl InternalLayerParametersAVX512 for KoalaBearInternalLayerParameters { - type ArrayLike = [__m512i; 15]; - - /// For the KoalaBear field and width 16 we multiply by the diagonal matrix: - /// D = [-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4, 1/2^8, 1/8, 1/2^24, -1/2^8, -1/8, -1/16, -1/2^24]. - /// The inputs must be in canonical form, otherwise the result is undefined. - /// Even when the inputs are in canonical form, we make no guarantees on the output except that, provided - /// the output is piped directly into add_sum the vector will be modified such that x[i] = D[i]*x[i] + sum. - #[inline(always)] - unsafe fn diagonal_mul_remainder(input: &mut [__m512i; 15]) { - unsafe { - // As far as we know this is optimal in that it need the fewest instructions to perform all of these - // multiplications. (Note that -1, 0 are not allowed on the diagonal for technical reasons). - // If there exist other number b for which x*b mod P can be computed quickly this diagonal can be updated. - - // This following 3 muls (from input[8] to input[10]) output the negative of what we want. - // This will be handled in add_sum. - - // input[8]-> sum + input[8]/2^8 - input[8] = mul_neg_2exp_neg_8_avx512::(input[8]); - - // input[9] -> sum + input[9]/2^3 - input[9] = mul_neg_2exp_neg_n_avx512::(input[9]); - - // input[10] -> sum + input[10]/2^24 - input[10] = mul_neg_2exp_neg_two_adicity_avx512::(input[10]); - - // The remaining muls output the correct value again. - - // input[11] -> sum - input[11]/2^8 - input[11] = mul_neg_2exp_neg_8_avx512::(input[11]); - - // input[12] -> sum - input[12]/2^3 - input[12] = mul_neg_2exp_neg_n_avx512::(input[12]); - - // input[13] -> sum - input[13]/2^4 - input[13] = mul_neg_2exp_neg_n_avx512::(input[13]); - - // input[14] -> sum - input[14]/2^24 - input[14] = mul_neg_2exp_neg_two_adicity_avx512::(input[14]); - } - } - - /// There are 3 positive inverse powers of two after the 4: 1/2^8, 1/8, 1/2^24, - const NUM_POS: usize = 3; -} - -impl InternalLayerParametersAVX512 for KoalaBearInternalLayerParameters { - type ArrayLike = [__m512i; 23]; - - /// For the KoalaBear field and width 24 we multiply by the diagonal matrix: - /// D = [-2, 1, 2, 1/2, 3, 4, -1/2, -3, -4, 1/2^8, 1/4, 1/8, 1/16, 1/32, 1/64, 1/2^24, -1/2^8, -1/8, -1/16, -1/32, -1/64, -1/2^7, -1/2^9, -1/2^24] - /// The inputs must be in canonical form, otherwise the result is undefined. - /// Even when the inputs are in canonical form, we make no guarantees on the output except that, provided - /// the output is piped directly into add_sum, the vector will be modified such that x[i] = D[i]*x[i] + sum. - #[inline(always)] - unsafe fn diagonal_mul_remainder(input: &mut [__m512i; 23]) { - unsafe { - // As far as we know this is optimal in that it need the fewest instructions to perform all of these - // multiplications. (Note that -1, 0 are not allowed on the diagonal for technical reasons). - // If there exist other number b for which x*b mod P can be computed quickly this diagonal can be updated. - - // This following 7 muls (from input[8] to input[14]) output the negative of what we want. - // This will be handled in add_sum. - - // input[8] -> sum + input[8]/2^8 - input[8] = mul_neg_2exp_neg_8_avx512::(input[8]); - - // input[9] -> sum + input[9]/2^2 - input[9] = mul_neg_2exp_neg_n_avx512::(input[9]); - - // input[10] -> sum + input[10]/2^3 - input[10] = mul_neg_2exp_neg_n_avx512::(input[10]); - - // input[11] -> sum + input[11]/2^4 - input[11] = mul_neg_2exp_neg_n_avx512::(input[11]); - - // input[12] -> sum + input[12]/2^5 - input[12] = mul_neg_2exp_neg_n_avx512::(input[12]); - - // input[13] -> sum + input[13]/2^6 - input[13] = mul_neg_2exp_neg_n_avx512::(input[13]); - - // input[14] -> sum + input[14]/2^24 - input[14] = mul_neg_2exp_neg_two_adicity_avx512::(input[14]); - - // The remaining muls output the correct value again. - - // input[15] -> sum - input[15]/2^8 - input[15] = mul_neg_2exp_neg_8_avx512::(input[15]); - - // input[16] -> sum - input[16]/2^3 - input[16] = mul_neg_2exp_neg_n_avx512::(input[16]); - - // input[17] -> sum - input[17]/2^4 - input[17] = mul_neg_2exp_neg_n_avx512::(input[17]); - - // input[18] -> sum - input[18]/2^5 - input[18] = mul_neg_2exp_neg_n_avx512::(input[18]); - - // input[19] -> sum - input[19]/2^6 - input[19] = mul_neg_2exp_neg_n_avx512::(input[19]); - - // input[20] -> sum - input[20]/2^7 - input[20] = mul_neg_2exp_neg_n_avx512::(input[20]); - - // input[21] -> sum - input[21]/2^9 - input[21] = mul_neg_2exp_neg_n_avx512::(input[21]); - - // input[22] -> sum - input[22]/2^24 - input[22] = mul_neg_2exp_neg_two_adicity_avx512::(input[22]); - } - } - - /// There are 7 positive inverse powers of two after the 4: 1/2^8, 1/4, 1/8, 1/16, 1/32, 1/64, 1/2^24; - const NUM_POS: usize = 7; -} diff --git a/crates/backend/symetric/src/permutation.rs b/crates/backend/symetric/src/permutation.rs index 5631baa5..c129a1dc 100644 --- a/crates/backend/symetric/src/permutation.rs +++ b/crates/backend/symetric/src/permutation.rs @@ -1,10 +1,7 @@ // Credits: Plonky3 (https://github.com/Plonky3/Plonky3) (MIT and Apache-2.0 licenses). use field::{Algebra, InjectiveMonomial}; -use koala_bear::{ - ExternalLayer, InternalLayer, KoalaBear, KoalaBearInternalLayerParameters, KoalaBearParameters, - Poseidon2ExternalLayerMonty31, Poseidon2InternalLayerMonty31, Poseidon2KoalaBear, -}; +use koala_bear::{KoalaBear, Poseidon1KoalaBear16}; pub trait Compression: Clone + Sync { #[inline(always)] @@ -16,12 +13,10 @@ pub trait Compression: Clone + Sync { fn compress_mut(&self, input: &mut T); } -impl + Send + Sync + InjectiveMonomial<3>> Compression<[A; 16]> for Poseidon2KoalaBear<16> -where - Poseidon2ExternalLayerMonty31: ExternalLayer, - Poseidon2InternalLayerMonty31: InternalLayer, +impl + InjectiveMonomial<3> + Send + Sync + 'static> Compression<[R; 16]> + for Poseidon1KoalaBear16 { - fn compress_mut(&self, input: &mut [A; 16]) { + fn compress_mut(&self, input: &mut [R; 16]) { self.compress_in_place(input); } } diff --git a/crates/backend/utils/src/lib.rs b/crates/backend/utils/src/lib.rs index 682962bd..d391cacc 100644 --- a/crates/backend/utils/src/lib.rs +++ b/crates/backend/utils/src/lib.rs @@ -295,3 +295,19 @@ pub const fn log2_ceil_usize(n: usize) -> usize { pub fn log2_ceil_u64(n: u64) -> u64 { (u64::BITS - n.saturating_sub(1).leading_zeros()).into() } + +pub fn pretty_integer(i: usize) -> String { + // ex: 123456789 -> "123,456,789" + let s = i.to_string(); + let chars: Vec = s.chars().collect(); + let mut result = String::new(); + + for (index, ch) in chars.iter().enumerate() { + if index > 0 && (chars.len() - index).is_multiple_of(3) { + result.push(','); + } + result.push(*ch); + } + + result +} diff --git a/crates/lean_compiler/Cargo.toml b/crates/lean_compiler/Cargo.toml index 1eb26f87..1d4b10c5 100644 --- a/crates/lean_compiler/Cargo.toml +++ b/crates/lean_compiler/Cargo.toml @@ -13,9 +13,6 @@ utils.workspace = true xmss.workspace = true rand.workspace = true - - - tracing.workspace = true air.workspace = true sub_protocols.workspace = true diff --git a/crates/lean_compiler/snark_lib.py b/crates/lean_compiler/snark_lib.py index fb398fe9..8eaa1d05 100644 --- a/crates/lean_compiler/snark_lib.py +++ b/crates/lean_compiler/snark_lib.py @@ -108,11 +108,6 @@ def poly_eq_ee(a, b, result, length=None): def hint_decompose_bits(value, bits, n_bits, endian): _ = value, bits, n_bits, endian - -def hint_decompose_16(a, lo, hi): - _ = a, lo, hi - - def hint_less_than(a, b, result_ptr): _ = a, b, result_ptr @@ -125,6 +120,8 @@ def log2_ceil(x: int) -> int: def div_ceil(a: int, b: int) -> int: return (a + b - 1) // b +def div_floor(a: int, b: int) -> int: + return a // b def next_multiple_of(x: int, n: int) -> int: return x + (n - x % n) % n @@ -164,6 +161,10 @@ def hint_decompose_bits_xmss(*args): _ = args +def hint_decompose_bits_merkle_whir(*args): + _ = args + + def hint_log2_ceil(n): return log2_ceil(n) diff --git a/crates/lean_compiler/src/grammar.pest b/crates/lean_compiler/src/grammar.pest index 6c896d2f..7429803b 100644 --- a/crates/lean_compiler/src/grammar.pest +++ b/crates/lean_compiler/src/grammar.pest @@ -122,6 +122,7 @@ primary = { log2_ceil_expr | next_multiple_of_expr | div_ceil_expr | + div_floor_expr | saturating_sub_expr | len_expr | array_access_expr | @@ -139,6 +140,7 @@ function_call_expr = { identifier ~ "(" ~ tuple_expression? ~ ")" } log2_ceil_expr = { "log2_ceil" ~ "(" ~ expression ~ ")" } next_multiple_of_expr = { "next_multiple_of" ~ "(" ~ expression ~ "," ~ expression ~ ")" } div_ceil_expr = { "div_ceil" ~ "(" ~ expression ~ "," ~ expression ~ ")" } +div_floor_expr = { "div_floor" ~ "(" ~ expression ~ "," ~ expression ~ ")" } saturating_sub_expr = { "saturating_sub" ~ "(" ~ expression ~ "," ~ expression ~ ")" } len_expr = { "len" ~ "(" ~ len_argument ~ ")" } len_argument = { identifier ~ ("[" ~ expression ~ "]")* } diff --git a/crates/lean_compiler/src/lang.rs b/crates/lean_compiler/src/lang.rs index 6044f678..9a2297e3 100644 --- a/crates/lean_compiler/src/lang.rs +++ b/crates/lean_compiler/src/lang.rs @@ -306,6 +306,8 @@ pub enum MathOperation { SaturatingSub, /// Integer division with ceiling DivCeil, + /// Integer division with floor + DivFloor, } impl TryFrom for Operation { @@ -333,6 +335,7 @@ impl Display for MathOperation { Self::NextMultipleOf => write!(f, "next_multiple_of"), Self::SaturatingSub => write!(f, "saturating_sub"), Self::DivCeil => write!(f, "div_ceil"), + Self::DivFloor => write!(f, "div_floor"), } } } @@ -352,7 +355,8 @@ impl MathOperation { | Self::Mod | Self::NextMultipleOf | Self::SaturatingSub - | Self::DivCeil => 2, + | Self::DivCeil + | Self::DivFloor => 2, } } pub fn eval(&self, args: &[F]) -> F { @@ -375,6 +379,7 @@ impl MathOperation { } Self::SaturatingSub => F::from_usize(args[0].to_usize().saturating_sub(args[1].to_usize())), Self::DivCeil => F::from_usize(args[0].to_usize().div_ceil(args[1].to_usize())), + Self::DivFloor => F::from_usize(args[0].to_usize() / args[1].to_usize()), } } } diff --git a/crates/lean_compiler/src/parser/parsers/expression.rs b/crates/lean_compiler/src/parser/parsers/expression.rs index 861821a8..923ac994 100644 --- a/crates/lean_compiler/src/parser/parsers/expression.rs +++ b/crates/lean_compiler/src/parser/parsers/expression.rs @@ -30,6 +30,7 @@ impl Parse for ExpressionParser { Rule::log2_ceil_expr => MathOperation::Log2Ceil.parse(pair, ctx), Rule::next_multiple_of_expr => MathOperation::NextMultipleOf.parse(pair, ctx), Rule::div_ceil_expr => MathOperation::DivCeil.parse(pair, ctx), + Rule::div_floor_expr => MathOperation::DivFloor.parse(pair, ctx), Rule::saturating_sub_expr => MathOperation::SaturatingSub.parse(pair, ctx), Rule::var_or_constant => Ok(Expression::Value(VarOrConstantParser.parse(pair, ctx)?)), Rule::array_access_expr => ArrayAccessParser.parse(pair, ctx), diff --git a/crates/lean_compiler/zkDSL.md b/crates/lean_compiler/zkDSL.md index 6619be6f..00a03454 100644 --- a/crates/lean_compiler/zkDSL.md +++ b/crates/lean_compiler/zkDSL.md @@ -431,12 +431,19 @@ Always in "compression" mode ``` poseidon16_compress(left, right, output) ``` -- `left`, `right`: pointers to 8 field elements each -- `output`: pointer to result (8 elements) +- `left`: pointer to 8 field elements +- `right`: pointer to 8 field elements +- `res`: pointer to result (8 elements) + +### poseidon24_compress +Width-24 Poseidon compression: `output = (Poseidon(left || right) + (left || right))` (feedforward). ``` poseidon16_compress(leaf_a, leaf_b, parent_hash) poseidon16_compress(state, data, new_state) ``` +- `left`: pointer to 9 field elements (capacity) +- `right`: pointer to 15 field elements (rate) +- `res`: pointer to result (9 elements) ### Extension Operations diff --git a/crates/lean_prover/src/lib.rs b/crates/lean_prover/src/lib.rs index ce2c8d01..8991343b 100644 --- a/crates/lean_prover/src/lib.rs +++ b/crates/lean_prover/src/lib.rs @@ -46,8 +46,7 @@ pub fn default_whir_config(starting_log_inv_rate: usize) -> WhirConfigBuilder { #[cfg(test)] mod tests { - use backend::default_koalabear_poseidon2_16; - use backend::{PrimeCharacteristicRing, hash_slice}; + use backend::{PrimeCharacteristicRing, default_koalabear_poseidon1_16, hash_slice}; use lean_vm::F; use rec_aggregation::{get_aggregation_bytecode, init_aggregation_bytecode}; use utils::poseidon16_compress_pair; @@ -68,7 +67,7 @@ mod tests { prefix_free_name_fe.push(F::ZERO); } prefix_free_name_fe.push(F::from_u64(len as u64)); - let comp = default_koalabear_poseidon2_16(); + let comp = default_koalabear_poseidon1_16(); let name_hash = hash_slice::<_, _, _, 8, 8>(&comp, &prefix_free_name_fe); // We incorporate the recursion program hash, containing all the verifier logic, into fiat shamir domain separator diff --git a/crates/lean_prover/src/trace_gen.rs b/crates/lean_prover/src/trace_gen.rs index 6f9022f1..5e62313a 100644 --- a/crates/lean_prover/src/trace_gen.rs +++ b/crates/lean_prover/src/trace_gen.rs @@ -1,6 +1,6 @@ use backend::*; use lean_vm::*; -use std::{array, collections::BTreeMap, iter::repeat_n}; +use std::{array, collections::BTreeMap}; use utils::{ToUsize, get_poseidon_16_of_zero, transposed_par_iter_mut}; #[derive(Debug)] @@ -129,7 +129,7 @@ pub fn get_execution_trace(bytecode: &Bytecode, execution_result: ExecutionResul } } -fn pad_table(table: &Table, traces: &mut BTreeMap, null_hash_ptr: usize) { +fn pad_table(table: &Table, traces: &mut BTreeMap, null_poseidon_16_hash_ptr: usize) { let trace = traces.get_mut(table).unwrap(); let h = trace.columns[0].len(); trace @@ -140,13 +140,14 @@ fn pad_table(table: &Table, traces: &mut BTreeMap, null_hash_ trace.non_padded_n_rows = h; trace.log_n_rows = log2_ceil_usize(h + 1).max(MIN_LOG_N_ROWS_PER_TABLE); - let padding_len = (1 << trace.log_n_rows) - h; + let n_rows = 1 << trace.log_n_rows; let padding_row = if *table == Table::poseidon16() { - default_poseidon_row(null_hash_ptr) + default_poseidon_16_row(null_poseidon_16_hash_ptr) } else { table.padding_row() }; trace.columns.par_iter_mut().enumerate().for_each(|(i, col)| { - col.extend(repeat_n(padding_row[i], padding_len)); + assert!(col.len() <= h); // potentially some columns have not been filled (in Poseidon -> we fill it later with SIMD + parallelism), but the first one should always be representative + col.resize(n_rows, padding_row[i]); }); } diff --git a/crates/lean_vm/Cargo.toml b/crates/lean_vm/Cargo.toml index 54ad3b64..fb31a642 100644 --- a/crates/lean_vm/Cargo.toml +++ b/crates/lean_vm/Cargo.toml @@ -12,11 +12,7 @@ pest_derive.workspace = true utils.workspace = true xmss.workspace = true rand.workspace = true - - - - tracing.workspace = true air.workspace = true backend.workspace = true -itertools.workspace = true \ No newline at end of file +itertools.workspace = true diff --git a/crates/lean_vm/src/core/constants.rs b/crates/lean_vm/src/core/constants.rs index f2aff96c..b8764d9e 100644 --- a/crates/lean_vm/src/core/constants.rs +++ b/crates/lean_vm/src/core/constants.rs @@ -102,7 +102,7 @@ mod tests { fn ensure_not_too_big_commitment_surface() { let mut max_surface: u64 = 2 * (1 << MAX_LOG_MEMORY_SIZE) as u64; // memory and acc_memory for (table, max_log_n_rows) in MAX_LOG_N_ROWS_PER_TABLE { - max_surface += (table.n_committed_columns() as u64) << (max_log_n_rows as u64); + max_surface += (table.n_columns() as u64) << (max_log_n_rows as u64); } assert!(max_surface <= 1 << 30); // Maximum data we can commit via WHIR using an initial folding factor of 7, and rate = 1/2 } diff --git a/crates/lean_vm/src/diagnostics/exec_result.rs b/crates/lean_vm/src/diagnostics/exec_result.rs index 88fe3deb..281683bc 100644 --- a/crates/lean_vm/src/diagnostics/exec_result.rs +++ b/crates/lean_vm/src/diagnostics/exec_result.rs @@ -1,8 +1,9 @@ use std::collections::BTreeMap; +use backend::pretty_integer; + use crate::execution::Memory; use crate::{Table, TableTrace}; -use utils::pretty_integer; #[derive(Debug, Default, Clone)] pub struct ExecutionMetadata { @@ -56,7 +57,7 @@ impl ExecutionMetadata { out.push('\n'); if self.n_poseidons > 0 { out.push_str(&format!( - "Poseidon2_16 calls: {} (1 poseidon per {} instructions)\n", + "Poseidon16 calls: {} (1 poseidon per {} instructions)\n", pretty_integer(self.n_poseidons), self.cycles / self.n_poseidons )); diff --git a/crates/lean_vm/src/diagnostics/profiler.rs b/crates/lean_vm/src/diagnostics/profiler.rs index bb1ee29c..0a3c3e6a 100644 --- a/crates/lean_vm/src/diagnostics/profiler.rs +++ b/crates/lean_vm/src/diagnostics/profiler.rs @@ -1,7 +1,6 @@ +use backend::pretty_integer; use std::collections::{BTreeMap, HashMap}; -use utils::pretty_integer; - use crate::ExecutionHistory; use crate::core::{Label, SourceLocation}; use crate::stack_trace::find_function_for_location; diff --git a/crates/lean_vm/src/isa/hint.rs b/crates/lean_vm/src/isa/hint.rs index 90132b80..edd73106 100644 --- a/crates/lean_vm/src/isa/hint.rs +++ b/crates/lean_vm/src/isa/hint.rs @@ -7,7 +7,7 @@ use backend::*; use std::fmt::Debug; use std::fmt::{Display, Formatter}; use std::hash::Hash; -use utils::{ToUsize, pretty_integer, to_big_endian_in_field, to_little_endian_in_field}; +use utils::{ToUsize, to_big_endian_in_field, to_little_endian_in_field}; use xmss::SIG_SIZE_FE; /// VM hints provide execution guidance and debugging information, but does not appear @@ -79,11 +79,8 @@ pub enum CustomHint { /// and ai < 4, b < 2^7 - 1 /// The decomposition is unique, and always exists (except for x = -1) DecomposeBitsXMSS, + DecomposeBitsMerkleWhir, DecomposeBits, - /// Decompose a field element into lo (< 2^16) and hi (< 2^14) parts: - /// a = lo + hi * 2^16 - /// Args: value, lo_ptr, hi_ptr - Decompose16, LessThan, Log2Ceil, PrivateInputStart, @@ -93,8 +90,8 @@ pub enum CustomHint { pub const CUSTOM_HINTS: [CustomHint; 8] = [ CustomHint::DecomposeBitsXMSS, + CustomHint::DecomposeBitsMerkleWhir, CustomHint::DecomposeBits, - CustomHint::Decompose16, CustomHint::LessThan, CustomHint::Log2Ceil, CustomHint::PrivateInputStart, @@ -106,8 +103,8 @@ impl CustomHint { pub fn name(&self) -> &str { match self { Self::DecomposeBitsXMSS => "hint_decompose_bits_xmss", + Self::DecomposeBitsMerkleWhir => "hint_decompose_bits_merkle_whir", Self::DecomposeBits => "hint_decompose_bits", - Self::Decompose16 => "hint_decompose_16", Self::LessThan => "hint_less_than", Self::Log2Ceil => "hint_log2_ceil", Self::PrivateInputStart => "hint_private_input_start", @@ -119,8 +116,8 @@ impl CustomHint { pub fn n_args(&self) -> usize { match self { Self::DecomposeBitsXMSS => 5, + Self::DecomposeBitsMerkleWhir => 4, Self::DecomposeBits => 4, - Self::Decompose16 => 3, Self::LessThan => 3, Self::Log2Ceil => 2, Self::PrivateInputStart => 1, @@ -156,6 +153,20 @@ impl CustomHint { memory_index_remaining += 1; } } + Self::DecomposeBitsMerkleWhir => { + let decomposed_ptr = args[0].read_value(ctx.memory, ctx.fp)?.to_usize(); + let value = args[2].read_value(ctx.memory, ctx.fp)?.to_usize(); + let chunk_size = args[3].read_value(ctx.memory, ctx.fp)?.to_usize(); + assert!(24_usize.is_multiple_of(chunk_size)); + let mut memory_index_decomposed = decomposed_ptr; + for i in 0..24 / chunk_size { + let value = F::from_usize((value >> (chunk_size * i)) & ((1 << chunk_size) - 1)); + ctx.memory.set(memory_index_decomposed, value)?; + memory_index_decomposed += 1; + } + ctx.memory + .set(args[1].memory_address(ctx.fp)?, F::from_usize(value >> 24))?; + } Self::DecomposeBits => { let to_decompose = args[0].read_value(ctx.memory, ctx.fp)?.to_usize(); let memory_index = args[1].read_value(ctx.memory, ctx.fp)?.to_usize(); @@ -176,15 +187,6 @@ impl CustomHint { .set_slice(memory_index, &to_little_endian_in_field::(to_decompose, num_bits))? } } - Self::Decompose16 => { - let value = args[0].read_value(ctx.memory, ctx.fp)?.to_usize(); - let lo_ptr = args[1].memory_address(ctx.fp)?; - let hi_ptr = args[2].memory_address(ctx.fp)?; - let lo = value & 0xFFFF; - let hi = value >> 16; - ctx.memory.set(lo_ptr, F::from_usize(lo))?; - ctx.memory.set(hi_ptr, F::from_usize(hi))?; - } Self::LessThan => { let a = args[0].read_value(ctx.memory, ctx.fp)?; let b = args[1].read_value(ctx.memory, ctx.fp)?; diff --git a/crates/lean_vm/src/tables/extension_op/air.rs b/crates/lean_vm/src/tables/extension_op/air.rs index 02efa550..2f39a668 100644 --- a/crates/lean_vm/src/tables/extension_op/air.rs +++ b/crates/lean_vm/src/tables/extension_op/air.rs @@ -1,5 +1,6 @@ use crate::{ - EF, ExtraDataForBuses, eval_virtual_bus_column, + EF, EXT_OP_FLAG_ADD, EXT_OP_FLAG_IS_BE, EXT_OP_FLAG_MUL, EXT_OP_FLAG_POLY_EQ, ExtraDataForBuses, + eval_virtual_bus_column, tables::extension_op::{EXT_OP_LEN_MULTIPLIER, ExtensionOpPrecompile}, }; use backend::*; @@ -99,10 +100,10 @@ impl Air for ExtensionOpPrecompile { let active = flag_add + flag_mul + flag_poly_eq; let activation_flag = start * active; - let aux = is_be.double() - + flag_add * AB::F::from_usize(4) - + flag_mul * AB::F::from_usize(8) - + flag_poly_eq * AB::F::from_usize(16) + let aux = is_be * AB::F::from_usize(EXT_OP_FLAG_IS_BE) + + flag_add * AB::F::from_usize(EXT_OP_FLAG_ADD) + + flag_mul * AB::F::from_usize(EXT_OP_FLAG_MUL) + + flag_poly_eq * AB::F::from_usize(EXT_OP_FLAG_POLY_EQ) + len * AB::F::from_usize(EXT_OP_LEN_MULTIPLIER); let idx_r = up[COL_IDX_RES]; diff --git a/crates/lean_vm/src/tables/extension_op/exec.rs b/crates/lean_vm/src/tables/extension_op/exec.rs index 7dd93034..33c39808 100644 --- a/crates/lean_vm/src/tables/extension_op/exec.rs +++ b/crates/lean_vm/src/tables/extension_op/exec.rs @@ -1,10 +1,12 @@ use crate::DIMENSION; use crate::EF; use crate::F; +use crate::MemoryAccess; use crate::RunnerError; use crate::TableTrace; -use crate::execution::memory::MemoryAccess; -use crate::tables::extension_op::{EXT_OP_LEN_MULTIPLIER, air::*}; +use crate::tables::extension_op::{ + EXT_OP_FLAG_ADD, EXT_OP_FLAG_IS_BE, EXT_OP_FLAG_MUL, EXT_OP_FLAG_POLY_EQ, EXT_OP_LEN_MULTIPLIER, air::*, +}; use backend::*; use utils::ToUsize; @@ -148,7 +150,10 @@ fn exec_multi_row( let flag_add_f = F::from_bool(flag_add); let flag_mul_f = F::from_bool(flag_mul); let flag_poly_eq_f = F::from_bool(flag_poly_eq); - let mode_bits = 2 * is_be as usize + 4 * flag_add as usize + 8 * flag_mul as usize + 16 * flag_poly_eq as usize; + let mode_bits = EXT_OP_FLAG_IS_BE * is_be as usize + + EXT_OP_FLAG_ADD * flag_add as usize + + EXT_OP_FLAG_MUL * flag_mul as usize + + EXT_OP_FLAG_POLY_EQ * flag_poly_eq as usize; let result_coords = result.as_basis_coefficients_slice(); diff --git a/crates/lean_vm/src/tables/extension_op/mod.rs b/crates/lean_vm/src/tables/extension_op/mod.rs index 027fd6c6..31e88469 100644 --- a/crates/lean_vm/src/tables/extension_op/mod.rs +++ b/crates/lean_vm/src/tables/extension_op/mod.rs @@ -12,16 +12,21 @@ use air::*; mod exec; pub use exec::fill_trace_extension_op; +// domain separation: Poseidon16=1, Poseidon24= 2 or 3 or 4, ExtensionOp>=8 /// Extension op PRECOMPILE_DATA bit-field encoding: -/// aux = 2*is_be + 4*flag_add + 8*flag_mul + 16*flag_poly_eq + 32*len -/// Always even → disjoint from Poseidon (PRECOMPILE_DATA=1). -pub const EXT_OP_ADD_EE: usize = 4; // 0 + 4 -pub const EXT_OP_ADD_BE: usize = 6; // 2 + 4 -pub const EXT_OP_DOT_PRODUCT_EE: usize = 8; // 8 -pub const EXT_OP_DOT_PRODUCT_BE: usize = 10; // 2 + 8 -pub const EXT_OP_POLY_EQ_EE: usize = 16; // 16 -pub const EXT_OP_POLY_EQ_BE: usize = 18; // 2 + 16 -pub const EXT_OP_LEN_MULTIPLIER: usize = 32; +/// aux = 4*is_be + 8*flag_add + 16*flag_mul + 32*flag_poly_eq + 64*len +pub(crate) const EXT_OP_FLAG_IS_BE: usize = 4; +pub(crate) const EXT_OP_FLAG_ADD: usize = 8; +pub(crate) const EXT_OP_FLAG_MUL: usize = 16; +pub(crate) const EXT_OP_FLAG_POLY_EQ: usize = 32; + +pub const EXT_OP_ADD_EE: usize = EXT_OP_FLAG_ADD; // 8 + 0 = 8 +pub const EXT_OP_ADD_BE: usize = EXT_OP_FLAG_IS_BE + EXT_OP_FLAG_ADD; // 8 + 4 = 12 +pub const EXT_OP_DOT_PRODUCT_EE: usize = EXT_OP_FLAG_MUL; // 16 + 0 = 16 +pub const EXT_OP_DOT_PRODUCT_BE: usize = EXT_OP_FLAG_IS_BE + EXT_OP_FLAG_MUL; // 16 + 4 = 20 +pub const EXT_OP_POLY_EQ_EE: usize = EXT_OP_FLAG_POLY_EQ; // 32 + 0 = 32 +pub const EXT_OP_POLY_EQ_BE: usize = EXT_OP_FLAG_IS_BE + EXT_OP_FLAG_POLY_EQ; // 32 + 4 = 36 +pub const EXT_OP_LEN_MULTIPLIER: usize = 64; /// Mapping from zkDSL function names to extension op mode values. pub const EXT_OP_FUNCTIONS: [(&str, usize); 6] = [ diff --git a/crates/lean_vm/src/tables/poseidon_16/mod.rs b/crates/lean_vm/src/tables/poseidon_16/mod.rs index c5908368..9e9b4ce2 100644 --- a/crates/lean_vm/src/tables/poseidon_16/mod.rs +++ b/crates/lean_vm/src/tables/poseidon_16/mod.rs @@ -5,22 +5,81 @@ use crate::*; use backend::*; use utils::{ToUsize, poseidon16_compress}; +/// Dispatch `mds_circ_16` through concrete types. +/// All five AIR types (`F`, `EF`, `FPacking`, `EFPacking`, `SymbolicExpression`) +/// satisfy the `PrimeCharacteristicRing + Mul` bound required by `mds_circ_16`. +#[inline(always)] +fn mds_air_16(state: &mut [A; WIDTH]) { + macro_rules! dispatch { + ($t:ty) => { + if TypeId::of::() == TypeId::of::<$t>() { + mds_circ_16::<$t>(unsafe { &mut *(state as *mut [A; WIDTH] as *mut [$t; WIDTH]) }); + return; + } + }; + } + dispatch!(F); + dispatch!(EF); + dispatch!(FPacking); + dispatch!(EFPacking); + dispatch!(SymbolicExpression); + unreachable!() +} + +/// Add a `KoalaBear` constant to any AIR type. +#[inline(always)] +fn add_kb(a: &mut A, value: F) { + macro_rules! dispatch { + ($t:ty) => { + if TypeId::of::() == TypeId::of::<$t>() { + *unsafe { &mut *(a as *mut A as *mut $t) } += value; + return; + } + }; + } + dispatch!(F); + dispatch!(EF); + dispatch!(FPacking); + dispatch!(EFPacking); + dispatch!(SymbolicExpression); + unreachable!() +} + +/// Multiply any AIR type by a `KoalaBear` constant. +#[inline(always)] +fn mul_kb(a: A, value: F) -> A { + macro_rules! dispatch { + ($t:ty) => { + if TypeId::of::() == TypeId::of::<$t>() { + let r = unsafe { std::ptr::read(&a as *const A as *const $t) } * value; + return unsafe { std::ptr::read(&r as *const $t as *const A) }; + } + }; + } + dispatch!(F); + dispatch!(EF); + dispatch!(FPacking); + dispatch!(EFPacking); + dispatch!(SymbolicExpression); + unreachable!() +} + mod trace_gen; -pub use trace_gen::{default_poseidon_row, fill_trace_poseidon_16}; +pub use trace_gen::{default_poseidon_16_row, fill_trace_poseidon_16}; pub(super) const WIDTH: usize = 16; -const HALF_INITIAL_FULL_ROUNDS: usize = KOALABEAR_RC16_EXTERNAL_INITIAL.len() / 2; -const PARTIAL_ROUNDS: usize = KOALABEAR_RC16_INTERNAL.len(); -const HALF_FINAL_FULL_ROUNDS: usize = KOALABEAR_RC16_EXTERNAL_FINAL.len() / 2; +const HALF_INITIAL_FULL_ROUNDS: usize = POSEIDON1_HALF_FULL_ROUNDS / 2; +const PARTIAL_ROUNDS: usize = POSEIDON1_PARTIAL_ROUNDS; +const HALF_FINAL_FULL_ROUNDS: usize = POSEIDON1_HALF_FULL_ROUNDS / 2; -pub const POSEIDON_PRECOMPILE_DATA: usize = 1; // domain separation between Poseidon / ExtensionOp precompiles +pub const POSEIDON_PRECOMPILE_DATA: usize = 1; // domain separation: Poseidon16=1, Poseidon24=2 or 3 or 4, ExtensionOp>=8 pub const POSEIDON_16_COL_FLAG: ColIndex = 0; -pub const POSEIDON_16_COL_A: ColIndex = 1; -pub const POSEIDON_16_COL_B: ColIndex = 2; -pub const POSEIDON_16_COL_RES: ColIndex = 3; +pub const POSEIDON_16_COL_INDEX_INPUT_LEFT: ColIndex = 1; +pub const POSEIDON_16_COL_INDEX_INPUT_RIGHT: ColIndex = 2; +pub const POSEIDON_16_COL_INDEX_INPUT_RES: ColIndex = 3; pub const POSEIDON_16_COL_INPUT_START: ColIndex = 4; -const POSEIDON_16_COL_OUTPUT_START: ColIndex = num_cols_poseidon_16() - 8; +pub const POSEIDON_16_COL_OUTPUT_START: ColIndex = num_cols_poseidon_16() - 8; #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct Poseidon16Precompile; @@ -37,16 +96,16 @@ impl TableT for Poseidon16Precompile { fn lookups(&self) -> Vec { vec![ LookupIntoMemory { - index: POSEIDON_16_COL_A, + index: POSEIDON_16_COL_INDEX_INPUT_LEFT, values: (POSEIDON_16_COL_INPUT_START..POSEIDON_16_COL_INPUT_START + DIGEST_LEN).collect(), }, LookupIntoMemory { - index: POSEIDON_16_COL_B, + index: POSEIDON_16_COL_INDEX_INPUT_RIGHT, values: (POSEIDON_16_COL_INPUT_START + DIGEST_LEN..POSEIDON_16_COL_INPUT_START + DIGEST_LEN * 2) .collect(), }, LookupIntoMemory { - index: POSEIDON_16_COL_RES, + index: POSEIDON_16_COL_INDEX_INPUT_RES, values: (POSEIDON_16_COL_OUTPUT_START..POSEIDON_16_COL_OUTPUT_START + DIGEST_LEN).collect(), }, ] @@ -58,9 +117,9 @@ impl TableT for Poseidon16Precompile { selector: POSEIDON_16_COL_FLAG, data: vec![ BusData::Constant(POSEIDON_PRECOMPILE_DATA), - BusData::Column(POSEIDON_16_COL_A), - BusData::Column(POSEIDON_16_COL_B), - BusData::Column(POSEIDON_16_COL_RES), + BusData::Column(POSEIDON_16_COL_INDEX_INPUT_LEFT), + BusData::Column(POSEIDON_16_COL_INDEX_INPUT_RIGHT), + BusData::Column(POSEIDON_16_COL_INDEX_INPUT_RES), ], } } @@ -96,9 +155,9 @@ impl TableT for Poseidon16Precompile { ctx.memory.set_slice(index_res_a.to_usize(), &res_a)?; trace.columns[POSEIDON_16_COL_FLAG].push(F::ONE); - trace.columns[POSEIDON_16_COL_A].push(arg_a); - trace.columns[POSEIDON_16_COL_B].push(arg_b); - trace.columns[POSEIDON_16_COL_RES].push(index_res_a); + trace.columns[POSEIDON_16_COL_INDEX_INPUT_LEFT].push(arg_a); + trace.columns[POSEIDON_16_COL_INDEX_INPUT_RIGHT].push(arg_b); + trace.columns[POSEIDON_16_COL_INDEX_INPUT_RES].push(index_res_a); for (i, value) in input.iter().enumerate() { trace.columns[POSEIDON_16_COL_INPUT_START + i].push(*value); } @@ -124,9 +183,9 @@ impl Air for Poseidon16Precompile { BUS as usize + 76 } fn eval(&self, builder: &mut AB, extra_data: &Self::ExtraData) { - let cols: Poseidon2Cols = { + let cols: Poseidon1Cols16 = { let up = builder.up(); - let (prefix, shorts, suffix) = unsafe { up.align_to::>() }; + let (prefix, shorts, suffix) = unsafe { up.align_to::>() }; debug_assert!(prefix.is_empty(), "Alignment should match"); debug_assert!(suffix.is_empty(), "Alignment should match"); debug_assert_eq!(shorts.len(), 1); @@ -157,13 +216,13 @@ impl Air for Poseidon16Precompile { builder.assert_bool(cols.flag); - eval(builder, &cols) + eval_poseidon1_16(builder, &cols) } } #[repr(C)] #[derive(Debug)] -pub(super) struct Poseidon2Cols { +pub(super) struct Poseidon1Cols16 { pub flag: T, pub index_a: T, pub index_b: T, @@ -176,51 +235,71 @@ pub(super) struct Poseidon2Cols { pub outputs: [T; WIDTH / 2], } -fn eval(builder: &mut AB, local: &Poseidon2Cols) { +fn eval_poseidon1_16(builder: &mut AB, local: &Poseidon1Cols16) { let mut state: [_; WIDTH] = local.inputs; - GenericPoseidon2LinearLayersKoalaBear::external_linear_layer(&mut state); - + let initial_constants = poseidon1_initial_constants(); for round in 0..HALF_INITIAL_FULL_ROUNDS { - eval_2_full_rounds( + eval_2_full_rounds_16( &mut state, &local.beginning_full_rounds[round], - &KOALABEAR_RC16_EXTERNAL_INITIAL[2 * round], - &KOALABEAR_RC16_EXTERNAL_INITIAL[2 * round + 1], + &initial_constants[2 * round], + &initial_constants[2 * round + 1], builder, ); } - for (round, cst) in KOALABEAR_RC16_INTERNAL.iter().enumerate().take(PARTIAL_ROUNDS) { - eval_partial_round(&mut state, &local.partial_rounds[round], *cst, builder); + // --- Sparse partial rounds --- + // Transition: add first-round constants, multiply by m_i + let frc = poseidon1_sparse_first_round_constants(); + for (s, &c) in state.iter_mut().zip(frc.iter()) { + add_kb(s, c); + } + dense_mat_vec_air_16(poseidon1_sparse_m_i(), &mut state); + + let first_rows = poseidon1_sparse_first_row(); + let v_vecs = poseidon1_sparse_v(); + let scalar_rc = poseidon1_sparse_scalar_round_constants(); + for round in 0..PARTIAL_ROUNDS { + // S-box on state[0] + state[0] = state[0].cube(); + builder.assert_eq(state[0], local.partial_rounds[round]); + state[0] = local.partial_rounds[round]; + // Scalar round constant (not on last round) + if round < PARTIAL_ROUNDS - 1 { + add_kb(&mut state[0], scalar_rc[round]); + } + // Sparse matrix: new_s0 = dot(first_row, state), state[i] += old_s0 * v[i-1] + sparse_mat_air_16(&mut state, &first_rows[round], &v_vecs[round]); } + let final_constants = poseidon1_final_constants(); for round in 0..HALF_FINAL_FULL_ROUNDS - 1 { - eval_2_full_rounds( + eval_2_full_rounds_16( &mut state, &local.ending_full_rounds[round], - &KOALABEAR_RC16_EXTERNAL_FINAL[2 * round], - &KOALABEAR_RC16_EXTERNAL_FINAL[2 * round + 1], + &final_constants[2 * round], + &final_constants[2 * round + 1], builder, ); } - eval_last_2_full_rounds( + eval_last_2_full_rounds_16( &local.inputs, &mut state, &local.outputs, - &KOALABEAR_RC16_EXTERNAL_FINAL[2 * (HALF_FINAL_FULL_ROUNDS - 1)], - &KOALABEAR_RC16_EXTERNAL_FINAL[2 * (HALF_FINAL_FULL_ROUNDS - 1) + 1], + &final_constants[2 * (HALF_FINAL_FULL_ROUNDS - 1)], + &final_constants[2 * (HALF_FINAL_FULL_ROUNDS - 1) + 1], builder, ); } pub const fn num_cols_poseidon_16() -> usize { - size_of::>() + size_of::>() } #[inline] -fn eval_2_full_rounds( +fn eval_2_full_rounds_16( state: &mut [AB::IF; WIDTH], post_full_round: &[AB::IF; WIDTH], round_constants_1: &[F; WIDTH], @@ -228,15 +307,15 @@ fn eval_2_full_rounds( builder: &mut AB, ) { for (s, r) in state.iter_mut().zip(round_constants_1.iter()) { - add_koala_bear(s, *r); + add_kb(s, *r); *s = s.cube(); } - GenericPoseidon2LinearLayersKoalaBear::external_linear_layer(state); + mds_air_16(state); for (s, r) in state.iter_mut().zip(round_constants_2.iter()) { - add_koala_bear(s, *r); + add_kb(s, *r); *s = s.cube(); } - GenericPoseidon2LinearLayersKoalaBear::external_linear_layer(state); + mds_air_16(state); for (state_i, post_i) in state.iter_mut().zip(post_full_round) { builder.assert_eq(*state_i, *post_i); *state_i = *post_i; @@ -244,7 +323,7 @@ fn eval_2_full_rounds( } #[inline] -fn eval_last_2_full_rounds( +fn eval_last_2_full_rounds_16( initial_state: &[AB::IF; WIDTH], state: &mut [AB::IF; WIDTH], outputs: &[AB::IF; WIDTH / 2], @@ -253,15 +332,15 @@ fn eval_last_2_full_rounds( builder: &mut AB, ) { for (s, r) in state.iter_mut().zip(round_constants_1.iter()) { - add_koala_bear(s, *r); + add_kb(s, *r); *s = s.cube(); } - GenericPoseidon2LinearLayersKoalaBear::external_linear_layer(state); + mds_air_16(state); for (s, r) in state.iter_mut().zip(round_constants_2.iter()) { - add_koala_bear(s, *r); + add_kb(s, *r); *s = s.cube(); } - GenericPoseidon2LinearLayersKoalaBear::external_linear_layer(state); + mds_air_16(state); // add inputs to outputs (for compression) for (state_i, init_state_i) in state.iter_mut().zip(initial_state) { *state_i += *init_state_i; @@ -273,35 +352,30 @@ fn eval_last_2_full_rounds( } #[inline] -fn eval_partial_round( - state: &mut [AB::IF; WIDTH], - post_partial_round: &AB::IF, - round_constant: F, - builder: &mut AB, -) { - add_koala_bear(&mut state[0], round_constant); - state[0] = state[0].cube(); - - builder.assert_eq(state[0], *post_partial_round); - state[0] = *post_partial_round; - - GenericPoseidon2LinearLayersKoalaBear::internal_linear_layer(state); +fn dense_mat_vec_air_16(mat: &[[F; 16]; 16], state: &mut [A; WIDTH]) { + let input = *state; + for i in 0..WIDTH { + let mut acc = A::ZERO; + for j in 0..WIDTH { + acc += mul_kb(input[j], mat[i][j]); + } + state[i] = acc; + } } -#[inline(always)] -fn add_koala_bear(a: &mut A, value: F) { - if TypeId::of::() == TypeId::of::() { - *unsafe { std::mem::transmute::<&mut A, &mut F>(a) } += value; - } else if TypeId::of::() == TypeId::of::() { - *unsafe { std::mem::transmute::<&mut A, &mut EF>(a) } += value; - } else if TypeId::of::() == TypeId::of::>() { - *unsafe { std::mem::transmute::<&mut A, &mut FPacking>(a) } += value; - } else if TypeId::of::() == TypeId::of::>() { - *unsafe { std::mem::transmute::<&mut A, &mut EFPacking>(a) } += FPacking::::from(value); - } else if TypeId::of::() == TypeId::of::>() { - *unsafe { std::mem::transmute::<&mut A, &mut SymbolicExpression>(a) } += value; - } else { - dbg!(std::any::type_name::()); - unreachable!() +#[inline] +fn sparse_mat_air_16( + state: &mut [A; WIDTH], + first_row: &[F; WIDTH], + v: &[F; WIDTH], +) { + let old_s0 = state[0]; + let mut new_s0 = A::ZERO; + for j in 0..WIDTH { + new_s0 += mul_kb(state[j], first_row[j]); + } + state[0] = new_s0; + for i in 1..WIDTH { + state[i] += mul_kb(old_s0, v[i - 1]); } } diff --git a/crates/lean_vm/src/tables/poseidon_16/trace_gen.rs b/crates/lean_vm/src/tables/poseidon_16/trace_gen.rs index 3e2acfd0..04a7455c 100644 --- a/crates/lean_vm/src/tables/poseidon_16/trace_gen.rs +++ b/crates/lean_vm/src/tables/poseidon_16/trace_gen.rs @@ -2,11 +2,11 @@ use tracing::instrument; use crate::{ F, ZERO_VEC_PTR, - tables::{Poseidon2Cols, WIDTH, num_cols_poseidon_16}, + tables::{Poseidon1Cols16, WIDTH, num_cols_poseidon_16}, }; use backend::*; -#[instrument(name = "generate Poseidon2 trace", skip_all)] +#[instrument(name = "generate Poseidon16 AIR trace", skip_all)] pub fn fill_trace_poseidon_16(trace: &mut [Vec]) { let n = trace.iter().map(|col| col.len()).max().unwrap(); for col in trace.iter_mut() { @@ -19,13 +19,13 @@ pub fn fill_trace_poseidon_16(trace: &mut [Vec]) { let trace_packed: Vec<_> = trace.iter().map(|col| FPacking::::pack_slice(&col[..m])).collect(); // fill the packed rows - (0..n / packing_width::()).into_par_iter().for_each(|i| { + (0..m / packing_width::()).into_par_iter().for_each(|i| { let ptrs: Vec<*mut FPacking> = trace_packed .iter() .map(|col| unsafe { (col.as_ptr() as *mut FPacking).add(i) }) .collect(); - let perm: &mut Poseidon2Cols<&mut FPacking> = - unsafe { &mut *(ptrs.as_ptr() as *mut Poseidon2Cols<&mut FPacking>) }; + let perm: &mut Poseidon1Cols16<&mut FPacking> = + unsafe { &mut *(ptrs.as_ptr() as *mut Poseidon1Cols16<&mut FPacking>) }; generate_trace_rows_for_perm(perm); }); @@ -36,16 +36,18 @@ pub fn fill_trace_poseidon_16(trace: &mut [Vec]) { .iter() .map(|col| unsafe { (col.as_ptr() as *mut F).add(i) }) .collect(); - let perm: &mut Poseidon2Cols<&mut F> = unsafe { &mut *(ptrs.as_ptr() as *mut Poseidon2Cols<&mut F>) }; + let perm: &mut Poseidon1Cols16<&mut F> = unsafe { &mut *(ptrs.as_ptr() as *mut Poseidon1Cols16<&mut F>) }; generate_trace_rows_for_perm(perm); } } -pub fn default_poseidon_row(null_hash_ptr: usize) -> Vec { +pub fn default_poseidon_16_row(null_hash_ptr: usize) -> Vec { let mut row = vec![F::ZERO; num_cols_poseidon_16()]; - let ptrs: [*mut F; num_cols_poseidon_16()] = std::array::from_fn(|i| unsafe { row.as_mut_ptr().add(i) }); + let ptrs: Vec<*mut F> = (0..num_cols_poseidon_16()) + .map(|i| unsafe { row.as_mut_ptr().add(i) }) + .collect(); - let perm: &mut Poseidon2Cols<&mut F> = unsafe { &mut *(ptrs.as_ptr() as *mut Poseidon2Cols<&mut F>) }; + let perm: &mut Poseidon1Cols16<&mut F> = unsafe { &mut *(ptrs.as_ptr() as *mut Poseidon1Cols16<&mut F>) }; perm.inputs.iter_mut().for_each(|x| **x = F::ZERO); *perm.flag = F::ZERO; *perm.index_a = F::from_usize(ZERO_VEC_PTR); @@ -56,29 +58,60 @@ pub fn default_poseidon_row(null_hash_ptr: usize) -> Vec { row } -fn generate_trace_rows_for_perm + Copy>(perm: &mut Poseidon2Cols<&mut F>) { +fn generate_trace_rows_for_perm + Copy>(perm: &mut Poseidon1Cols16<&mut F>) { let inputs: [F; WIDTH] = std::array::from_fn(|i| *perm.inputs[i]); let mut state = inputs; - GenericPoseidon2LinearLayersKoalaBear::external_linear_layer(&mut state); + // No initial linear layer for Poseidon1 (unlike Poseidon2) for (full_round, constants) in perm .beginning_full_rounds .iter_mut() - .zip(KOALABEAR_RC16_EXTERNAL_INITIAL.chunks_exact(2)) + .zip(poseidon1_initial_constants().chunks_exact(2)) { generate_2_full_round(&mut state, full_round, &constants[0], &constants[1]); } - for (partial_round, constant) in perm.partial_rounds.iter_mut().zip(&KOALABEAR_RC16_INTERNAL) { - generate_partial_round(&mut state, partial_round, *constant); + // --- Sparse partial rounds --- + // Transition: add first-round constants, multiply by m_i + let frc = poseidon1_sparse_first_round_constants(); + for (s, &c) in state.iter_mut().zip(frc.iter()) { + *s += c; + } + let m_i = poseidon1_sparse_m_i(); + let input_for_mi = state; + for i in 0..WIDTH { + let row: [F; WIDTH] = m_i[i].map(F::from); + state[i] = F::dot_product(&input_for_mi, &row); + } + + let first_rows = poseidon1_sparse_first_row(); + let v_vecs = poseidon1_sparse_v(); + let scalar_rc = poseidon1_sparse_scalar_round_constants(); + let n_partial = perm.partial_rounds.len(); + for round in 0..n_partial { + // S-box on state[0] + state[0] = state[0].cube(); + *perm.partial_rounds[round] = state[0]; + // Scalar round constant (not on last round) + if round < n_partial - 1 { + state[0] += scalar_rc[round]; + } + // Sparse matrix + let old_s0 = state[0]; + let row: [F; WIDTH] = first_rows[round].map(F::from); + let new_s0 = F::dot_product(&state, &row); + state[0] = new_s0; + for i in 1..WIDTH { + state[i] += old_s0 * v_vecs[round][i - 1]; + } } let n_ending_full_rounds = perm.ending_full_rounds.len(); for (full_round, constants) in perm .ending_full_rounds .iter_mut() - .zip(KOALABEAR_RC16_EXTERNAL_FINAL.chunks_exact(2)) + .zip(poseidon1_final_constants().chunks_exact(2)) { generate_2_full_round(&mut state, full_round, &constants[0], &constants[1]); } @@ -88,8 +121,8 @@ fn generate_trace_rows_for_perm + Copy>(perm: &mut Poseido &mut state, &inputs, &mut perm.outputs, - &KOALABEAR_RC16_EXTERNAL_FINAL[2 * n_ending_full_rounds], - &KOALABEAR_RC16_EXTERNAL_FINAL[2 * n_ending_full_rounds + 1], + &poseidon1_final_constants()[2 * n_ending_full_rounds], + &poseidon1_final_constants()[2 * n_ending_full_rounds + 1], ); } @@ -100,18 +133,17 @@ fn generate_2_full_round + Copy>( round_constants_1: &[KoalaBear; WIDTH], round_constants_2: &[KoalaBear; WIDTH], ) { - // Combine addition of round constants and S-box application in a single loop for (state_i, const_i) in state.iter_mut().zip(round_constants_1) { *state_i += *const_i; *state_i = state_i.cube(); } - GenericPoseidon2LinearLayersKoalaBear::external_linear_layer(state); + mds_circ_16(state); for (state_i, const_i) in state.iter_mut().zip(round_constants_2.iter()) { *state_i += *const_i; *state_i = state_i.cube(); } - GenericPoseidon2LinearLayersKoalaBear::external_linear_layer(state); + mds_circ_16(state); post_full_round.iter_mut().zip(*state).for_each(|(post, x)| { **post = x; @@ -130,28 +162,16 @@ fn generate_last_2_full_rounds + Copy>( *state_i += *const_i; *state_i = state_i.cube(); } - GenericPoseidon2LinearLayersKoalaBear::external_linear_layer(state); + mds_circ_16(state); for (state_i, const_i) in state.iter_mut().zip(round_constants_2.iter()) { *state_i += *const_i; *state_i = state_i.cube(); } - GenericPoseidon2LinearLayersKoalaBear::external_linear_layer(state); + mds_circ_16(state); // Add inputs to outputs (compression) for ((output, state_i), &input_i) in outputs.iter_mut().zip(state).zip(inputs) { **output = *state_i + input_i; } } - -#[inline] -fn generate_partial_round + Copy>( - state: &mut [F; WIDTH], - post_partial_round: &mut F, - round_constant: KoalaBear, -) { - state[0] += round_constant; - state[0] = state[0].cube(); - *post_partial_round = state[0]; - GenericPoseidon2LinearLayersKoalaBear::internal_linear_layer(state); -} diff --git a/crates/lean_vm/src/tables/table_trait.rs b/crates/lean_vm/src/tables/table_trait.rs index 4504123d..3300d92c 100644 --- a/crates/lean_vm/src/tables/table_trait.rs +++ b/crates/lean_vm/src/tables/table_trait.rs @@ -132,10 +132,6 @@ pub trait TableT: Air { false } - fn n_committed_columns(&self) -> usize { - self.n_columns() - } - fn lookup_index_columns<'a>(&'a self, trace: &'a TableTrace) -> Vec<&'a [F]> { self.lookups() .iter() diff --git a/crates/rec_aggregation/recursion.py b/crates/rec_aggregation/recursion.py index 4e75196f..57a82d79 100644 --- a/crates/rec_aggregation/recursion.py +++ b/crates/rec_aggregation/recursion.py @@ -719,7 +719,7 @@ def compute_total_gkr_n_vars(log_memory, log_bytecode_padded, tables_heights): def evaluate_air_constraints(table_index, inner_evals, air_alpha_powers, bus_beta, logup_alphas_eq_poly): res: Imu - debug_assert(table_index < 3) + debug_assert(table_index < N_TABLES) match table_index: case 0: res = evaluate_air_constraints_table_0(inner_evals, air_alpha_powers, bus_beta, logup_alphas_eq_poly) diff --git a/crates/rec_aggregation/src/benchmark.rs b/crates/rec_aggregation/src/benchmark.rs index 9bf3ef50..522bef14 100644 --- a/crates/rec_aggregation/src/benchmark.rs +++ b/crates/rec_aggregation/src/benchmark.rs @@ -1,13 +1,10 @@ -use std::io::{self, Write}; -use std::time::Instant; - use backend::*; use lean_vm::*; -use utils::pretty_integer; -use xmss::signers_cache::*; -use xmss::{XmssPublicKey, XmssSignature}; - +use std::io::{self, Write}; +use std::time::Instant; use utils::ansi as s; +use xmss::signers_cache::{BENCHMARK_SLOT, get_benchmark_signatures, message_for_benchmark}; +use xmss::{XmssPublicKey, XmssSignature}; use crate::compilation::{get_aggregation_bytecode, init_aggregation_bytecode}; use crate::{AggregatedXMSS, AggregationTopology, count_signers, xmss_aggregate}; @@ -217,20 +214,19 @@ fn build_aggregation( signatures: &[XmssSignature], overlap: usize, tracing: bool, -) -> (AggregatedXMSS, f64) { - let message = message_for_benchmark(); - let slot = BENCHMARK_SLOT; +) -> (Vec, AggregatedXMSS, f64) { let raw_count = topology.raw_xmss; let raw_xmss: Vec<(XmssPublicKey, XmssSignature)> = (0..raw_count) .map(|i| (pub_keys[i].clone(), signatures[i].clone())) .collect(); - let mut child_results = vec![]; + let mut child_pub_keys_list: Vec> = vec![]; + let mut child_aggs: Vec = vec![]; let mut child_start = raw_count; let mut child_display_index = display_index; for (child_idx, child) in topology.children.iter().enumerate() { let child_count = count_signers(child, overlap); - let (child_agg, _) = build_aggregation( + let (child_pks, child_agg, _) = build_aggregation( child, child_display_index, display, @@ -239,7 +235,8 @@ fn build_aggregation( overlap, tracing, ); - child_results.push(child_agg); + child_pub_keys_list.push(child_pks); + child_aggs.push(child_agg); child_display_index += count_nodes(child); child_start += child_count; if child_idx < topology.children.len() - 1 { @@ -247,8 +244,20 @@ fn build_aggregation( } } + let children: Vec<(&[XmssPublicKey], AggregatedXMSS)> = child_pub_keys_list + .iter() + .zip(child_aggs) + .map(|(pks, agg)| (pks.as_slice(), agg)) + .collect(); + let time = Instant::now(); - let result = xmss_aggregate(&child_results, raw_xmss, &message, slot, topology.log_inv_rate); + let (global_pub_keys, result) = xmss_aggregate( + &children, + raw_xmss, + &message_for_benchmark(), + BENCHMARK_SLOT, + topology.log_inv_rate, + ); let elapsed = time.elapsed(); if tracing { @@ -285,7 +294,7 @@ fn build_aggregation( ); } - (result, elapsed.as_secs_f64()) + (global_pub_keys, result, elapsed.as_secs_f64()) } pub fn run_aggregation_benchmark(topology: &AggregationTopology, overlap: usize, tracing: bool) -> f64 { @@ -296,13 +305,9 @@ pub fn run_aggregation_benchmark(topology: &AggregationTopology, overlap: usize, let n_sigs = count_signers(topology, overlap); - let cache = get_benchmark_signers_cache(); + let cache = get_benchmark_signatures(); assert!(cache.len() >= n_sigs); - let paired: Vec<_> = (0..n_sigs) - .into_par_iter() - .map(|i| reconstruct_signer_for_benchmark(i, cache[i])) - .collect(); - let (pub_keys, signatures): (Vec<_>, Vec<_>) = paired.into_iter().unzip(); + let (pub_keys, signatures): (Vec<_>, Vec<_>) = cache[..n_sigs].iter().cloned().unzip(); init_aggregation_bytecode(); println!( @@ -320,12 +325,17 @@ pub fn run_aggregation_benchmark(topology: &AggregationTopology, overlap: usize, display.print_initial(); } - let (aggregated_sigs, time) = + let (global_pub_keys, aggregated_sigs, time) = build_aggregation(topology, 0, &mut display, &pub_keys, &signatures, overlap, tracing); // Verify root proof - let message = message_for_benchmark(); - crate::xmss_verify_aggregation(&aggregated_sigs, &message, BENCHMARK_SLOT).unwrap(); + crate::xmss_verify_aggregation( + &global_pub_keys, + &aggregated_sigs, + &message_for_benchmark(), + BENCHMARK_SLOT, + ) + .unwrap(); time } diff --git a/crates/rec_aggregation/src/compilation.rs b/crates/rec_aggregation/src/compilation.rs index 04cfa60a..4ebd53b3 100644 --- a/crates/rec_aggregation/src/compilation.rs +++ b/crates/rec_aggregation/src/compilation.rs @@ -53,7 +53,7 @@ fn compile_main_program(inner_program_log_size: usize, bytecode_zero_eval: F) -> #[instrument(skip_all)] fn compile_main_program_self_referential() -> Bytecode { - let mut log_size_guess = 18; + let mut log_size_guess = 19; let bytecode_zero_eval = F::ONE; loop { let bytecode = compile_main_program(log_size_guess, bytecode_zero_eval); diff --git a/crates/rec_aggregation/src/lib.rs b/crates/rec_aggregation/src/lib.rs index a00bed5e..9fc484f9 100644 --- a/crates/rec_aggregation/src/lib.rs +++ b/crates/rec_aggregation/src/lib.rs @@ -92,7 +92,6 @@ fn encode_xmss_signature(sig: &XmssSignature) -> Vec { #[derive(Debug, Serialize, Deserialize, Clone)] pub struct AggregatedXMSS { - pub pub_keys: Vec, pub proof: Proof, pub bytecode_point: Option>, // benchmark / debug purpose @@ -111,7 +110,7 @@ impl AggregatedXMSS { postcard::from_bytes(&decompressed).ok() } - pub fn public_input(&self, message: &[F; MESSAGE_LEN_FE], slot: u32) -> Vec { + pub fn public_input(&self, pub_keys: &[XmssPublicKey], message: &[F; MESSAGE_LEN_FE], slot: u32) -> Vec { let bytecode = get_aggregation_bytecode(); let bytecode_point_n_vars = bytecode.log_size() + log2_ceil_usize(N_INSTRUCTION_COLUMNS); let bytecode_claim_size = (bytecode_point_n_vars + 1) * DIMENSION; @@ -131,10 +130,10 @@ impl AggregatedXMSS { }; assert_eq!(bytecode_claim_output.len(), bytecode_claim_size); - let slice_hash = hash_pubkeys(&self.pub_keys); + let slice_hash = hash_pubkeys(pub_keys); build_non_reserved_public_input( - self.pub_keys.len(), + pub_keys.len(), &slice_hash, message, slot, @@ -145,14 +144,15 @@ impl AggregatedXMSS { } pub fn xmss_verify_aggregation( + pub_keys: &[XmssPublicKey], agg_sig: &AggregatedXMSS, message: &[F; MESSAGE_LEN_FE], slot: u32, ) -> Result { - if !agg_sig.pub_keys.is_sorted() { + if !pub_keys.is_sorted() { return Err(ProofError::InvalidProof); } - let public_input = agg_sig.public_input(message, slot); + let public_input = agg_sig.public_input(pub_keys, message, slot); let bytecode = get_aggregation_bytecode(); verify_execution(bytecode, &public_input, agg_sig.proof.clone()).map(|(details, _)| details) } @@ -160,12 +160,12 @@ pub fn xmss_verify_aggregation( /// panics if one of the sub-proof (children) is invalid #[instrument(skip_all)] pub fn xmss_aggregate( - children: &[AggregatedXMSS], + children: &[(&[XmssPublicKey], AggregatedXMSS)], mut raw_xmss: Vec<(XmssPublicKey, XmssSignature)>, message: &[F; MESSAGE_LEN_FE], slot: u32, log_inv_rate: usize, -) -> AggregatedXMSS { +) -> (Vec, AggregatedXMSS) { raw_xmss.sort_by(|(a, _), (b, _)| a.cmp(b)); raw_xmss.dedup_by(|(a, _), (b, _)| a.merkle_root == b.merkle_root); @@ -179,9 +179,9 @@ pub fn xmss_aggregate( // Build global_pub_keys as sorted deduplicated union let mut global_pub_keys: Vec = raw_xmss.iter().map(|(pk, _)| pk.clone()).collect(); - for child in children.iter() { - assert!(child.pub_keys.is_sorted(), "child pub_keys must be sorted"); - global_pub_keys.extend_from_slice(&child.pub_keys); + for (child_pub_keys, _) in children.iter() { + assert!(child_pub_keys.is_sorted(), "child pub_keys must be sorted"); + global_pub_keys.extend_from_slice(child_pub_keys); } global_pub_keys.sort(); global_pub_keys.dedup(); @@ -191,8 +191,8 @@ pub fn xmss_aggregate( let mut child_pub_inputs = vec![]; let mut child_bytecode_evals = vec![]; let mut child_raw_proofs = vec![]; - for child in children { - let child_pub_input = child.public_input(message, slot); + for (child_pub_keys, child) in children { + let child_pub_input = child.public_input(child_pub_keys, message, slot); let (verif, raw_proof) = verify_execution(bytecode, &child_pub_input, child.proof.clone()).unwrap(); child_bytecode_evals.push(verif.bytecode_evaluation); child_pub_inputs.push(child_pub_input); @@ -308,15 +308,15 @@ pub fn xmss_aggregate( } // Sources 1..n_recursions: recursive children - for (i, child) in children.iter().enumerate() { - let mut block = vec![F::from_usize(child.pub_keys.len())]; - for key in &child.pub_keys { - if claimed.insert(key.clone()) { - let pos = global_pub_keys.binary_search(key).unwrap(); + for (i, (child_pub_keys, _)) in children.iter().enumerate() { + let mut block = vec![F::from_usize(child_pub_keys.len())]; + for pubkey in *child_pub_keys { + if claimed.insert(pubkey.clone()) { + let pos = global_pub_keys.binary_search(pubkey).unwrap(); block.push(F::from_usize(pos)); } else { block.push(F::from_usize(n_sigs + dup_pub_keys.len())); - dup_pub_keys.push(key.clone()); + dup_pub_keys.push(pubkey.clone()); } } @@ -384,12 +384,14 @@ pub fn xmss_aggregate( }; let execution_proof = prove_execution(bytecode, &non_reserved_public_input, &witness, &whir_config, false); - AggregatedXMSS { - pub_keys: global_pub_keys, - proof: execution_proof.proof, - bytecode_point, - metadata: Some(execution_proof.metadata), - } + ( + global_pub_keys, + AggregatedXMSS { + proof: execution_proof.proof, + bytecode_point, + metadata: Some(execution_proof.metadata), + }, + ) } pub fn extract_bytecode_claim_from_public_input(public_input: &[F], bytecode_point_n_vars: usize) -> Evaluation { diff --git a/crates/rec_aggregation/utils.py b/crates/rec_aggregation/utils.py index 4104c6eb..6bb10ac8 100644 --- a/crates/rec_aggregation/utils.py +++ b/crates/rec_aggregation/utils.py @@ -174,21 +174,6 @@ def mle_of_01234567_etc(point, n): return res -def range_check_power_of_2(a, n_bits: Const): - # assert a < 2**n_bits - debug_assert(n_bits < 30) - if n_bits <= 16: - assert a < 2**n_bits - else: - lo: Imu - hi: Imu - hint_decompose_16(a, lo, hi) - assert lo < 2**16 - assert hi < 2 ** (n_bits - 16) - assert a == lo + hi * 2**16 - return - - @inline def checked_less_than(a, b): res: Imu @@ -451,24 +436,22 @@ def checked_decompose_bits(a): def checked_decompose_bits_and_compute_root_pow_const(a, domain_size): # Hint 6 nibbles (4 bits each) + 1 top-7-bit value = 7 hints nibbles = Array(6) - top7 = Array(1) - a_ptr = Array(1) - a_ptr[0] = a - hint_decompose_bits_xmss(nibbles, top7, a_ptr, 1, 4) + top7: Imu + hint_decompose_bits_merkle_whir(nibbles, top7, a, 4) for i in unroll(0, 6): assert nibbles[i] < 16 - assert top7[0] < 2**7 + assert top7 < 2**7 partial_sum: Mut = nibbles[0] for i in unroll(1, 6): partial_sum += nibbles[i] * 16**i - if top7[0] == 2**7 - 1: + if top7 == 2**7 - 1: assert partial_sum == 0 - assert partial_sum + top7[0] * 2**24 == a + assert partial_sum + top7 * 2**24 == a # Compute domain_generator^index prod: Mut = 1 diff --git a/crates/sub_protocols/src/stacked_pcs.rs b/crates/sub_protocols/src/stacked_pcs.rs index 1070d602..d7ba6565 100644 --- a/crates/sub_protocols/src/stacked_pcs.rs +++ b/crates/sub_protocols/src/stacked_pcs.rs @@ -79,7 +79,7 @@ pub fn stacked_pcs_global_statements( .collect(), )); } - offset += table.n_committed_columns() << n_vars; + offset += table.n_columns() << n_vars; } global_statements } @@ -179,7 +179,7 @@ fn compute_stacked_n_vars( + (1 << log_bytecode.max(max_table_log_n_rows)) + tables_log_heights .iter() - .map(|(table, log_n_rows)| table.n_committed_columns() << log_n_rows) + .map(|(table, log_n_rows)| table.n_columns() << log_n_rows) .sum::(); log2_ceil_usize(total_len) } @@ -198,7 +198,7 @@ pub fn total_whir_statements() -> usize { .iter() .map(|table| { // AIR - table.n_committed_columns() + table.n_columns() + table.n_down_columns() // Lookups into memory + table.lookups().iter().map(|lookup| 1 + lookup.values.len()).sum::() diff --git a/crates/utils/src/display.rs b/crates/utils/src/display.rs deleted file mode 100644 index df4451e9..00000000 --- a/crates/utils/src/display.rs +++ /dev/null @@ -1,15 +0,0 @@ -pub fn pretty_integer(i: usize) -> String { - // ex: 123456789 -> "123,456,789" - let s = i.to_string(); - let chars: Vec = s.chars().collect(); - let mut result = String::new(); - - for (index, ch) in chars.iter().enumerate() { - if index > 0 && (chars.len() - index).is_multiple_of(3) { - result.push(','); - } - result.push(*ch); - } - - result -} diff --git a/crates/utils/src/lib.rs b/crates/utils/src/lib.rs index eec86f62..d7e36a8d 100644 --- a/crates/utils/src/lib.rs +++ b/crates/utils/src/lib.rs @@ -11,11 +11,8 @@ pub use multilinear::*; mod wrappers; pub use wrappers::*; -mod display; -pub use display::*; - mod logs; pub use logs::*; -mod poseidon2; -pub use poseidon2::*; +mod poseidon; +pub use poseidon::*; diff --git a/crates/utils/src/poseidon2.rs b/crates/utils/src/poseidon.rs similarity index 78% rename from crates/utils/src/poseidon2.rs rename to crates/utils/src/poseidon.rs index 2fa9907b..bde7db7d 100644 --- a/crates/utils/src/poseidon2.rs +++ b/crates/utils/src/poseidon.rs @@ -1,24 +1,17 @@ use backend::*; use std::sync::OnceLock; -pub type Poseidon16 = Poseidon2KoalaBear<16>; -pub type Poseidon24 = Poseidon2KoalaBear<24>; -pub const QUARTER_FULL_ROUNDS_16: usize = 2; -pub const HALF_FULL_ROUNDS_16: usize = 4; -pub const PARTIAL_ROUNDS_16: usize = 20; +pub type Poseidon16 = Poseidon1KoalaBear16; + +pub const HALF_FULL_ROUNDS_16: usize = POSEIDON1_HALF_FULL_ROUNDS; +pub const PARTIAL_ROUNDS_16: usize = POSEIDON1_PARTIAL_ROUNDS; static POSEIDON_16_INSTANCE: OnceLock = OnceLock::new(); static POSEIDON_16_OF_ZERO: OnceLock<[KoalaBear; 8]> = OnceLock::new(); #[inline(always)] pub fn get_poseidon16() -> &'static Poseidon16 { - POSEIDON_16_INSTANCE.get_or_init(|| { - let external_constants = ExternalLayerConstants::new( - KOALABEAR_RC16_EXTERNAL_INITIAL.to_vec(), - KOALABEAR_RC16_EXTERNAL_FINAL.to_vec(), - ); - Poseidon16::new(external_constants, KOALABEAR_RC16_INTERNAL.to_vec()) - }) + POSEIDON_16_INSTANCE.get_or_init(default_koalabear_poseidon1_16) } #[inline(always)] diff --git a/crates/whir/src/merkle.rs b/crates/whir/src/merkle.rs index 7c644c55..49a94769 100644 --- a/crates/whir/src/merkle.rs +++ b/crates/whir/src/merkle.rs @@ -8,7 +8,7 @@ use field::BasedVectorSpace; use field::ExtensionField; use field::Field; use field::PackedValue; -use koala_bear::{KoalaBear, QuinticExtensionFieldKB, default_koalabear_poseidon2_16}; +use koala_bear::{KoalaBear, QuinticExtensionFieldKB, default_koalabear_poseidon1_16}; use poly::*; use rayon::prelude::*; @@ -31,7 +31,7 @@ pub(crate) fn merkle_commit>( full_n_cols: usize, effective_n_cols: usize, ) -> ([F; DIGEST_ELEMS], RoundMerkleTree) { - let perm = default_koalabear_poseidon2_16(); + let perm = default_koalabear_poseidon1_16(); if TypeId::of::<(F, EF)>() == TypeId::of::<(KoalaBear, QuinticExtensionFieldKB)>() { let matrix = unsafe { std::mem::transmute::<_, DenseMatrix>(matrix) }; let view = FlatMatrixView::new(matrix); @@ -89,7 +89,7 @@ pub(crate) fn merkle_verify>( data: Vec, proof: &Vec<[F; DIGEST_ELEMS]>, ) -> bool { - let perm = default_koalabear_poseidon2_16(); + let perm = default_koalabear_poseidon1_16(); let log_max_height = utils::log2_strict_usize(dimension.height.next_power_of_two()); if TypeId::of::<(F, EF)>() == TypeId::of::<(KoalaBear, QuinticExtensionFieldKB)>() { let merkle_root = unsafe { std::mem::transmute_copy::<_, [KoalaBear; DIGEST_ELEMS]>(&merkle_root) }; diff --git a/crates/whir/tests/run_whir.rs b/crates/whir/tests/run_whir.rs index 4f0063c0..4c6b4cf0 100644 --- a/crates/whir/tests/run_whir.rs +++ b/crates/whir/tests/run_whir.rs @@ -4,7 +4,7 @@ use std::time::Instant; use fiat_shamir::{ProverState, VerifierState}; use field::{Field, TwoAdicField}; -use koala_bear::{KoalaBear, QuinticExtensionFieldKB, default_koalabear_poseidon2_16}; +use koala_bear::{KoalaBear, QuinticExtensionFieldKB, default_koalabear_poseidon1_16}; use mt_whir::*; use poly::*; use rand::{RngExt, SeedableRng, rngs::StdRng}; @@ -30,7 +30,7 @@ fn test_run_whir() { .with(ForestLayer::default()) .try_init(); } - let poseidon16 = default_koalabear_poseidon2_16(); + let poseidon16 = default_koalabear_poseidon1_16(); let num_variables = std::env::var("WHIR_NUM_VARIABLES") .ok() diff --git a/crates/xmss/Cargo.toml b/crates/xmss/Cargo.toml index 16caf4af..6b54442f 100644 --- a/crates/xmss/Cargo.toml +++ b/crates/xmss/Cargo.toml @@ -12,6 +12,8 @@ rand.workspace = true utils.workspace = true backend.workspace = true serde.workspace = true +lz4_flex.workspace = true +postcard.workspace = true [dev-dependencies] postcard.workspace = true \ No newline at end of file diff --git a/crates/xmss/src/signers_cache.rs b/crates/xmss/src/signers_cache.rs index 70dbc10e..f939265e 100644 --- a/crates/xmss/src/signers_cache.rs +++ b/crates/xmss/src/signers_cache.rs @@ -1,124 +1,136 @@ +use std::fs; use std::path::PathBuf; use std::sync::OnceLock; +use std::sync::atomic::{AtomicUsize, Ordering}; +use std::time::Instant; use backend::*; use rand::rngs::StdRng; -use rand::{Rng, RngExt, SeedableRng}; +use rand::{RngExt, SeedableRng}; +use serde::{Deserialize, Serialize}; use crate::*; -static SIGNERS_CACHE: OnceLock> = OnceLock::new(); +static SIGNERS_CACHE: OnceLock> = OnceLock::new(); -pub fn get_benchmark_signers_cache() -> &'static Vec<[F; RANDOMNESS_LEN_FE]> { - SIGNERS_CACHE.get_or_init(read_benchmark_signers_cache) +pub fn get_benchmark_signatures() -> &'static Vec<(XmssPublicKey, XmssSignature)> { + SIGNERS_CACHE.get_or_init(gen_benchmark_signers_cache) } -pub const BENCHMARK_SLOT: u32 = 1111; +pub const BENCHMARK_SLOT: u32 = 111; +pub const NUM_BENCHMARK_SIGNERS: usize = 10000; pub fn message_for_benchmark() -> [F; MESSAGE_LEN_FE] { std::array::from_fn(F::from_usize) } -fn benchmark_keygen(rng: &mut R) -> (XmssSecretKey, XmssPublicKey) { - let key_start = BENCHMARK_SLOT - rng.random_range(0..3); - let key_end = BENCHMARK_SLOT + rng.random_range(1..3); - xmss_key_gen(rng.random(), key_start, key_end).unwrap() +#[derive(Serialize, Deserialize)] +struct SignersCacheFile { + slot: u32, + message: Vec, + signatures: Vec<(XmssPublicKey, XmssSignature)>, } -pub fn find_randomness_for_benchmark(index: usize) -> [F; RANDOMNESS_LEN_FE] { - let message = message_for_benchmark(); - let mut rng = StdRng::seed_from_u64(index as u64); - let (_sk, pk) = benchmark_keygen(&mut rng); - let truncated: [F; TRUNCATED_MERKLE_ROOT_LEN_FE] = - pk.merkle_root[..TRUNCATED_MERKLE_ROOT_LEN_FE].try_into().unwrap(); - let (randomness, _, _) = find_randomness_for_wots_encoding(&message, BENCHMARK_SLOT, &truncated, &mut rng); - randomness +fn cache_path() -> PathBuf { + let file = "benchmark_signers_cache.bin"; + PathBuf::from(env!("CARGO_MANIFEST_DIR")).join(format!("../../target/{file}")) } -/// Reconstruct a benchmark signer's public key and signature from its index -/// and pre-computed WOTS randomness. -pub fn reconstruct_signer_for_benchmark( - index: usize, - randomness: [F; RANDOMNESS_LEN_FE], -) -> (XmssPublicKey, XmssSignature) { - let message = message_for_benchmark(); +fn compute_signer(index: usize) -> (XmssPublicKey, XmssSignature) { let mut rng = StdRng::seed_from_u64(index as u64); - let (sk, pk) = benchmark_keygen(&mut rng); - let sig = xmss_sign_with_randomness(&sk, &message, BENCHMARK_SLOT, randomness).unwrap(); + let key_start = BENCHMARK_SLOT; + let key_end = BENCHMARK_SLOT + 1; + let (sk, pk) = xmss_key_gen(rng.random(), key_start, key_end).unwrap(); + let sig = xmss_sign(&mut rng, &sk, &message_for_benchmark(), BENCHMARK_SLOT).unwrap(); (pk, sig) } -fn cache_file_path() -> PathBuf { - PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("test_data/benchmark_signers.json") -} - -pub fn write_benchmark_signers_cache(randomnesses: &[[F; RANDOMNESS_LEN_FE]]) { - let path = cache_file_path(); - if let Some(parent) = path.parent() { - std::fs::create_dir_all(parent).unwrap(); +fn try_load_cache(path: &PathBuf, first_pubkey: &XmssPublicKey) -> Option> { + let data = fs::read(path).ok()?; + let decompressed = lz4_flex::decompress_size_prepended(&data).ok()?; + let cached: SignersCacheFile = postcard::from_bytes(&decompressed).ok()?; + + if cached.slot != BENCHMARK_SLOT { + println!( + "Cache slot {} does not match benchmark slot {}, recomputing...", + cached.slot, BENCHMARK_SLOT + ); + return None; + } + if cached.message != message_for_benchmark() { + println!("Cache message does not match benchmark message, recomputing..."); + return None; + } + if cached.signatures.len() != NUM_BENCHMARK_SIGNERS { + println!( + "Cache contains {} signatures, expected {}, recomputing...", + cached.signatures.len(), + NUM_BENCHMARK_SIGNERS + ); + return None; + } + if cached.signatures[0].0 != *first_pubkey { + println!("Cache first public key does not match computed first public key, recomputing..."); + return None; } - let json = format!( - "[{}]", - randomnesses - .iter() - .flat_map(|r| r.iter().map(|f| f.to_string())) - .collect::>() - .join(",") - ); - std::fs::write(&path, json).unwrap(); - println!("Wrote {} entries to {}", randomnesses.len(), path.display()); -} -pub fn read_benchmark_signers_cache() -> Vec<[F; RANDOMNESS_LEN_FE]> { - let path = cache_file_path(); - let text = std::fs::read_to_string(&path).unwrap_or_else(|_| { - panic!( - "cache not found at {}, run generate_benchmark_signers_cache", - path.display() - ) - }); - let text = text.trim(); - let inner = text.strip_prefix('[').unwrap().strip_suffix(']').unwrap(); - let values: Vec = inner - .split(',') - .map(|s| s.trim().parse().expect("invalid value in cache")) - .collect(); - assert!(values.len().is_multiple_of(RANDOMNESS_LEN_FE)); - values - .chunks_exact(RANDOMNESS_LEN_FE) - .map(|chunk| std::array::from_fn(|i| F::from_u32(chunk[i]))) - .collect() + Some(cached.signatures) } -#[test] -#[ignore] -fn generate_benchmark_signers_cache() { - use std::time::Instant; - let n_signers = 10_000; - - println!("Finding WOTS randomness for {} signers...", n_signers); - let start = Instant::now(); - let randomnesses: Vec<[F; RANDOMNESS_LEN_FE]> = (0..n_signers) +fn gen_benchmark_signers_cache() -> Vec<(XmssPublicKey, XmssSignature)> { + let path = cache_path(); + + // Compute first signer; its pubkey is used to validate the cache + let first_signer = compute_signer(0); + + if let Some(signers) = try_load_cache(&path, &first_signer.0) { + return signers; + } + + let completed = AtomicUsize::new(1); + let time = Instant::now(); + let rest: Vec<_> = (1..NUM_BENCHMARK_SIGNERS) .into_par_iter() - .map(find_randomness_for_benchmark) + .map(|index| { + let signer = compute_signer(index); + let done = completed.fetch_add(1, Ordering::Relaxed) + 1; + print!( + "\rPrecomputing benchmark signatures (cached after first run): {:.0}%", + 100.0 * done as f64 / NUM_BENCHMARK_SIGNERS as f64 + ); + signer + }) .collect(); - println!("Done in {:.1}s", start.elapsed().as_secs_f64()); - write_benchmark_signers_cache(&randomnesses); + println!( + "\rGenerating signatures for benchmark (one-time operation): 100% - done ({:.2}s)", + time.elapsed().as_secs_f32() + ); - let message = message_for_benchmark(); - for &i in &[0, 1, n_signers / 2, n_signers - 1] { - let (pk, sig) = reconstruct_signer_for_benchmark(i, randomnesses[i]); - xmss_verify(&pk, &message, &sig).unwrap(); + let mut signers = Vec::with_capacity(NUM_BENCHMARK_SIGNERS); + signers.push(first_signer); + signers.extend(rest); + + let cache_file = SignersCacheFile { + slot: BENCHMARK_SLOT, + message: message_for_benchmark().to_vec(), + signatures: signers.clone(), + }; + let encoded = postcard::to_allocvec(&cache_file).expect("serialization failed"); + let compressed = lz4_flex::compress_prepend_size(&encoded); + if let Some(parent) = path.parent() { + let _ = fs::create_dir_all(parent); } + fs::write(&path, &compressed).expect("Failed to save benchmark cache"); + + signers } #[test] -fn test_benchmark_signers_cache() { - let cache = read_benchmark_signers_cache(); - let message = message_for_benchmark(); - for &i in &[0, 1, 2, cache.len() / 2, cache.len() - 1] { - let (pk, sig) = reconstruct_signer_for_benchmark(i, cache[i]); - xmss_verify(&pk, &message, &sig).unwrap(); - } +fn test_signature_cache() { + let signatures = get_benchmark_signatures(); + signatures.par_iter().enumerate().for_each(|(i, (pk, sig))| { + xmss_verify(pk, &message_for_benchmark(), sig, BENCHMARK_SLOT) + .unwrap_or_else(|_| panic!("Signature {} failed to verify", i)); + }); } diff --git a/crates/xmss/src/xmss.rs b/crates/xmss/src/xmss.rs index 6271a36f..88f9e6f2 100644 --- a/crates/xmss/src/xmss.rs +++ b/crates/xmss/src/xmss.rs @@ -17,7 +17,6 @@ pub struct XmssSecretKey { #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash, PartialOrd, Ord)] pub struct XmssSignature { pub wots_signature: WotsSignature, - pub slot: u32, pub merkle_proof: Vec, } @@ -59,7 +58,7 @@ pub fn xmss_key_gen( if slot_start > slot_end { return Err(XmssKeyGenError::InvalidRange); } - let perm = default_koalabear_poseidon2_16(); + let perm = default_koalabear_poseidon1_16(); // Level 0: WOTS leaf hashes for slots in [slot_start, slot_end] let leaves: Vec = (slot_start..=slot_end) .into_par_iter() @@ -158,7 +157,6 @@ pub fn xmss_sign_with_randomness( .collect(); Ok(XmssSignature { wots_signature, - slot, merkle_proof, }) } @@ -181,23 +179,19 @@ pub fn xmss_verify( pub_key: &XmssPublicKey, message: &[F; MESSAGE_LEN_FE], signature: &XmssSignature, + slot: u32, ) -> Result<(), XmssVerifyError> { let truncated_merkle_root = pub_key.merkle_root[0..TRUNCATED_MERKLE_ROOT_LEN_FE].try_into().unwrap(); let wots_public_key = signature .wots_signature - .recover_public_key( - message, - signature.slot, - &truncated_merkle_root, - &signature.wots_signature, - ) + .recover_public_key(message, slot, &truncated_merkle_root, &signature.wots_signature) .ok_or(XmssVerifyError::InvalidWots)?; let mut current_hash = wots_public_key.hash(); if signature.merkle_proof.len() != LOG_LIFETIME { return Err(XmssVerifyError::InvalidMerklePath); } for (level, neighbour) in signature.merkle_proof.iter().enumerate() { - let is_left = ((signature.slot >> level) & 1) == 0; + let is_left = ((slot >> level) & 1) == 0; if is_left { current_hash = poseidon16_compress_pair(¤t_hash, neighbour); } else { diff --git a/crates/xmss/test_data/benchmark_signers.json b/crates/xmss/test_data/benchmark_signers.json deleted file mode 100644 index 1bebaae1..00000000 --- a/crates/xmss/test_data/benchmark_signers.json +++ /dev/null @@ -1 +0,0 @@ -[823599328,883533560,897612802,1025345740,708937170,1353211569,578366465,1491997886,661182865,1274716677,163288798,181554685,1240208380,1211177668,1310589172,64446394,247578063,501609788,1206412004,1762321530,1430914619,1209072639,1227156146,1755153793,1223258652,1612226227,1427047166,450862665,1064051330,1967764915,648840936,1394104307,541435854,796499236,1236491756,527522781,1791893652,1937794340,1193043244,750562050,561858648,1763916602,2094547012,310916854,1147003069,7475647,1006151197,1416902294,1144171836,1367615960,1053158022,228115424,1667613359,1772892214,780570832,943762933,651867997,1569712173,982412596,195130356,900966800,1954088917,155160998,1473108709,298578950,171042020,1081984111,720329238,1748170720,1936320005,1303933813,1286206612,1757930538,615453157,2119688116,1210805711,1024643410,1942270749,1364851914,559432862,263058571,1540298211,448719344,1352530070,1944294092,275664163,787410823,736937873,916856742,290174497,855689976,1776184129,371376516,583714329,1685110164,1841922861,926942670,2053704098,876887118,743941176,1926739196,1630985505,308328609,940676564,1603780715,1077177990,1570028893,1910382947,921323837,1772585706,1293939594,1418564736,716251862,1893471800,77138959,1149817547,1571476320,1317845700,350890704,294398876,940596897,969654378,1653855396,1888578782,1309099319,780685232,65816311,135791504,247549741,1885607578,860778022,453289033,2021544886,564775925,1040635399,942648626,1650721801,1611661664,1776286790,1378298591,1997731396,1121912620,2075720529,1859302039,1720993003,1410774390,1250819849,877992628,1818046276,1082101739,795230020,1811275827,1237535441,954741235,102587716,643671081,1693143378,1675693851,1701533246,1917617385,2077113699,921772420,1501140278,117384338,1151812814,452652362,2257893,115942895,1784179022,304153698,1134895183,672077917,847008797,532240374,926021361,305891187,663161685,1157609108,1616821424,997362031,361997231,1433012692,1593351337,1666990958,201498351,954700624,939236238,811934718,1341250956,733173557,1889049211,1288386529,1358884816,1746795643,1523564441,285547395,177435538,996852588,1798775448,611688534,625841861,192032265,1431163887,179520463,2109416293,1190769067,1163568562,1298682455,1811113249,476584670,1316306984,890865283,691426114,501886641,1868595388,685425124,762405043,1878911821,1041473162,1136720097,1177405850,893682188,1267226910,1425775203,1273015475,1149585348,907115307,882073597,689581379,571477633,771526205,871200663,179994391,1178200497,301404542,153178994,782885838,400500219,357132519,707545568,1265066655,681043598,1115081033,346685592,597773195,1935043329,2122808253,1025580072,1625171795,1699708807,802421170,300424894,90562368,372419216,1786071407,530338555,925185402,1103301095,980164199,2068009106,429633766,117059275,418031682,660801998,862152119,2064184504,1720151528,1583040544,1317534601,272220036,1267331217,332579671,904775872,242543721,630198660,1852969971,2036763829,1025038517,758268944,1959559127,452591832,472154355,1050467614,565288224,756661281,16033423,849155151,1030234657,1280166991,1256666318,1906479873,1527172185,1303113569,1900272240,1566260660,45732613,2041290778,922125740,57598058,1840251901,497136642,370049728,1372066140,891408385,745327895,2063487453,179854651,1463383150,647362626,515328319,1984106968,1960695115,1765895423,921092048,1645966403,1973972003,1423145990,1063855503,1052190529,1200883017,1545823876,1312253210,1355827022,319843154,54080783,1375687173,1067200498,1770531547,1267271780,1245374640,323518265,97541935,373659553,1255632627,19581421,850419216,1683479425,337364234,1561538741,388938469,1210059415,1758927035,1467724788,423073366,2029777926,317340908,672400827,1897261151,1237759509,88978642,1237459380,1022218209,1806448779,29746161,1984026011,1345832283,1969025317,1964019654,297976630,1699969151,49642691,1844538341,1165985416,149140890,1812283958,1309800840,374926505,1885274669,1314370778,30441718,1045976352,2004267036,527772369,1550595371,1717594163,1211593839,1111833181,1668055640,1379256410,1892514147,757326244,1754346146,1223497491,907085878,1611240348,1301695176,1434140990,1551053974,603939671,1077776899,1241157588,488227403,791988533,217566804,1322067367,402267564,1105519631,498872250,168010742,322746074,1464434000,1973260726,1314609150,1776219357,1067700539,1397175856,248570024,1502447828,1614296237,894364809,1722668607,1094286644,1672242204,716726573,62316525,565730816,580907689,347159328,128135753,1299433583,1624617994,1543421668,1823472045,379731870,678443052,1808394000,1898440998,295791718,1169058686,829388359,890792640,2093472779,192740911,2105825485,692747230,787952917,122747297,2004787770,95924920,267051294,1928238016,1740488788,959121172,1697371384,520933949,1604962781,519322293,1839827688,487557874,933533187,836578038,1130710209,217182584,1966296252,660527934,1331806971,992259410,1967315915,647132832,2046892881,1046844523,1906637632,825901513,1498571079,1657980364,448920568,67519710,681327473,1703892939,1897617122,1616614617,342490418,1921533538,152910013,2042057069,1808648968,1822904383,671210520,502467357,1972469939,1389453933,490830494,720680563,2123973863,714460198,530691927,1364939492,1117090064,2064046709,1177473145,1577220060,1918873338,219130677,248912645,315409733,1524547746,508376876,506111371,15736958,1470702526,430173048,1781095980,1754320949,387987694,1480403849,1521466133,1533148059,1129677865,571622704,2107152492,437015571,1906335799,1367980313,218480573,571219017,1523377313,765457273,157471855,992354791,1787328540,889821007,2097512065,1327697056,1881395870,146213873,1457381061,730322915,534160292,891543458,264814188,451984261,943638883,2108612859,908606836,1187149305,521085657,1204522545,1557886667,617697415,1224532351,813917949,1486063428,1578890440,1342654587,988992977,797596612,1184570392,1968637961,949227090,354702365,2074333180,187859727,162102597,1217049467,1905812065,1978983241,238263,304522178,729523440,632814354,374458062,655933434,948790424,1547593461,831402176,922135456,921687143,2111996947,789738340,1393854502,350118123,248279685,1364083809,613883384,1793197919,1193719708,1244755367,1849451244,428207098,650214155,567329681,1065991062,322926878,245922193,845447088,1227293768,1469622353,798701611,761136928,2070525167,2051666096,1888783953,1193655259,1806166654,1449985748,502257239,1261976209,611273091,1070175285,1228721365,1115867165,1556484846,1452866616,275330003,1631959934,974485915,268872085,186190743,1262129986,1303404029,1342422455,1222687250,480280580,454619288,1687392244,697052910,716971476,903250938,2020390389,1434682067,1568235898,1314444004,1102771907,1483122240,610318080,828820595,1631850388,1206149322,1806739723,1615087319,1665140699,392616392,1139049438,1831052369,1260286501,967643598,1113105982,923861933,629669469,12650893,1047146861,2094480066,974695052,895493563,989103767,1186662438,1180194275,1759249755,1532687356,41481405,565518958,1623310966,1630203009,1866752291,183233795,746424937,1752352668,1391347835,617648780,1906012245,317224701,654483206,1116166871,1617844076,2091209587,881567439,728462096,2059441514,1867153900,1500711173,1331994448,793954047,2057822922,621515077,354989615,771975965,1120094164,1585470963,142571558,48876239,87356089,1075151546,117821963,28751234,789834027,828902856,1613174668,1478260080,1632640839,1483380108,48407183,1060595288,505090687,494602297,1224855817,1494138883,1217649253,244040313,694317633,880243552,1450302620,1175257948,948666,1482420816,1812627666,757846088,77127158,435033876,1569485114,2015222915,687833306,390708253,735225031,1812220825,1386382388,1389568363,992288477,1741228658,196349929,1137756675,307458251,1208985244,1916416589,1531807707,335408971,1894800223,1872525117,2017727378,417625560,1094730173,456452617,354523781,28564236,1750036581,205695536,1837834547,808243535,1347063644,1704929484,1463631612,1528718906,431978448,134853174,1954647226,1514991113,448897302,1567620144,640889221,664419068,390833903,1979831205,1883063067,2037943858,1836254286,658618373,1036694044,1780308589,1253349200,2063246216,697073499,1803981490,944640012,850463222,425032792,258504193,1476945422,784936966,2126392770,67565240,1622278096,74903106,1560839570,1493938868,1217597815,516006250,1789436590,392653658,626806223,1325310673,303911810,2072758749,562574184,403376500,1702660410,1018227912,566111462,2028475995,1357002166,399243895,473935262,64643438,802855297,1478366607,1919107029,1746829401,334726141,1227173098,424220319,900752981,718667992,425761810,338280976,1351704641,512855824,111940268,641051940,1500053706,1508434867,295058410,1156606941,870103682,449383773,903832663,1778572797,1255355771,1907836222,21570545,1314323999,663451674,1054812103,1661149137,1148763286,1029267741,2041956843,45681151,547373944,71424539,959819883,468150251,808553518,1104614995,1095254692,454555016,1503356408,208064657,949543605,1702516845,21488431,40946587,190558543,2117421012,1603531095,709179267,746757324,1581097638,1242442375,912892867,1932966342,1485300529,1118559444,1063271059,728279666,1292191794,634468386,1914788658,237731637,1118169403,445722455,793230638,1747501013,595354046,454070138,1997393074,1298298701,1690000943,1485102507,2104060763,1747832553,1883018999,37728793,1855611706,9884895,1475861884,1817283470,1104342817,14364569,1210575631,1668073567,1404873979,334813708,1789607894,767448690,79655193,904560925,85647758,1057912913,1210973330,1060653171,437045482,511746052,632955541,253068468,1078084340,1546620888,696232673,403140891,1442521870,1105211402,1668170663,1138125338,2042388106,347159238,961108365,1468346900,85720110,443809759,440866313,1973928101,742411038,1527157190,1341792663,1082184229,29278286,221797170,1988446345,30432630,1688169681,432753632,1585586487,1060110172,1351956716,1603006203,205026913,1495111107,1831428408,1022263649,1450999424,672810792,976343558,1508397422,1143232061,1851163702,1524792452,268638497,456437248,134870978,1318391649,502331713,1353755383,163017568,344144792,2085813745,754239850,852511856,2034581673,968834346,383584593,1639112311,270998822,1947392413,2022696733,918751546,2055060819,1038046867,1600703679,1886566854,687254071,1721448042,1489618048,923287617,1227268680,1947747853,1022491427,1140394511,1545458169,1620380233,1493722770,1578185068,1955508821,2054094908,550747635,1443706826,1255898781,864706297,900769580,1522358303,912773328,1144272685,778399396,1715016342,319832337,1734286320,1807138656,1572488518,500217450,733952898,1196925218,220587366,1974855963,1903350994,1824753579,1749210515,1975047973,85077730,199659863,1929281725,1626963142,2114477215,1523319011,748870516,1578594749,1636820615,1944480198,860187724,278180222,1954047258,531144804,349186911,1095093267,905111555,6900382,517294852,1008202681,1656854271,156538024,423803340,1057388671,1199572089,1620269860,214825314,669460668,1183454360,1561262689,234529111,266148305,1993646133,100799509,287214981,1857152915,169822374,467596358,2057485957,2086086551,1776281749,1288246017,1353796534,1410057810,248405549,1349905998,263996954,387852984,1854097551,1363881186,1220961649,69973156,1240163383,823496703,1939936444,792108901,2080681007,1231414065,218736069,1389003177,1259047206,1863587156,797322626,1435993027,701068480,1312309917,588207434,1864548798,189970144,910344399,1262207241,1885038094,995071065,1901886217,978801955,585395801,2123877095,1205265851,1188368851,1017687810,1869749967,917367090,908267531,829020442,332772044,2083594833,376598339,660666339,1648704008,1743653583,2021412573,1668972415,1971510128,1405198677,1801559959,1002410332,801751085,95308437,1333756920,1533978393,526141669,696499191,1061238183,1205005757,596745196,1853470153,1662785131,403871978,1314122590,1629192272,1915258273,696201298,907729826,1113350635,1249773349,894323566,272039730,476589508,139186854,399155161,764953184,212395136,63847243,1368214574,694744923,1416883444,122052191,1420536494,1251960818,770454172,730752332,2107433425,1171445305,1563231957,106407757,1325173469,1879217152,614376384,1305428955,216707956,447080053,1983503754,281815564,246023125,167937039,917248124,642745689,1467700762,1581528606,173304197,1619231373,142055294,2076696610,929859768,518517390,1221367746,1813637120,227821774,405350073,1095152036,477146690,1257141904,1865557751,1113395758,374492651,1015501922,322351862,20258014,1302712532,172183018,379054617,1428810032,2049276939,2034112858,1994976375,790109636,532428502,516556334,1404310620,463576549,1497584602,928466653,1212236039,1878121129,449815478,807287382,1416673337,1226431303,275284055,361851800,1430124292,735018451,86924526,2104066427,298399892,2065325681,1917561021,512450551,818830082,1286403172,1265757815,128321412,1925194844,1615304525,1430017482,813659915,1423115328,1982443449,70747167,1044536750,1830986365,2088765082,339086097,955018795,431387709,1328900929,1909023785,1111738493,1275324076,1066505080,1672134826,278453898,1898394362,756257094,334525188,1881779463,351226403,858742721,1580794179,975966430,1844765270,247165627,1850651773,1390453230,405706775,613447480,926221090,2003447356,907312503,495861452,515569555,516350677,2119880967,1578379864,812105458,1282745320,153209863,705872646,856208210,1328071960,258422777,1097247601,269646127,187266109,585183999,690521553,1636118341,1783522682,1289025746,454720383,272379455,1565228067,352241964,641466826,484669629,1797602547,1533814799,2126067428,1732974848,1392919435,283390579,1594151741,1848178527,1687089954,654543240,940706935,236409627,314490414,1620754958,1464777877,941453336,1934834062,2035307062,238223488,960072160,977269766,645452362,914230883,1441786893,2123635928,112300690,1832121951,2041352395,991116705,1330418541,1434221447,2037165219,1740564545,4099179,704654940,1650085077,1670775066,83943258,408427123,407163523,1084268106,1539159670,1737775138,1278358929,148422456,1336236399,1082082600,2001709132,843131011,812266616,651890305,52290734,175678803,1974595600,1306338998,672236351,225851043,1326505608,322446324,1606951002,78712647,42630937,1726345611,1938130452,979269831,1700662560,1245335754,721602311,277266052,1051142683,2046084237,1006657339,55235801,345066538,2070694464,50131476,936958446,1457305278,163069279,1408462049,1559020451,1291364229,1550897167,604479944,1660502282,138200557,484792773,1465610464,1130809896,475725699,1978670148,1650325092,1309377797,1229351240,947252397,88519495,969273396,610852389,2055959816,1708928541,1006341054,1691395874,34045645,1212811860,2054499275,1978226249,906001033,1841245684,819371465,212560058,820502239,1530148624,665905274,1843919166,144345361,534658487,852861242,1633579734,1389971148,611595398,822615232,628287413,2048973200,92049751,401121807,296377999,19261077,1357432642,1226672410,1280701787,1486675163,2191911,926583766,2023173777,1095247829,1500573547,167343791,1264445386,1661650788,1233432431,728873282,915884583,846903130,325917973,1698861532,1573524634,50471731,1964217441,1175102858,1793939341,1364097240,1773666304,1549096420,422297558,691892925,2120726388,561505714,881276929,222908353,1316674988,204045178,1268491772,60817556,1383401373,643681105,329108055,1957564745,37644787,1181927587,1711230573,1452059011,1294369861,592322101,1736532708,1853302151,16795514,1077860549,529452879,1252473668,471731612,1892942702,1108575169,2053670207,398520563,1384765220,311493872,317712489,1340419990,1922315481,1463214346,2002921294,1676643514,257534262,462849223,514341563,239017073,668166950,2037803554,1726746003,1956190853,618458297,1000547227,528571654,1539240785,401767654,132408294,394802651,784803224,1193224179,975734348,1117869466,1164961558,1515204661,258902454,1919585823,1547972927,8820089,472316817,357175351,1539845026,197372225,932525710,997544005,860812197,663523025,1095682855,736132828,864131858,1026746398,1904202113,634014217,1055459015,400479082,1719805662,890770384,287540295,876803805,839019693,999439386,203125400,254215686,1009136026,781617342,1065268193,1380386145,144499616,662593022,1640967825,1296304563,1865155615,1075455740,1909792182,1911335706,1912305442,1850484039,2055021196,564296885,1252476574,2126846684,1655452021,198892473,545048913,1009956482,1443997116,654924708,172098187,807286082,1880991795,440218655,1938460260,1443897640,679610755,1447363166,665042493,1826954205,752097504,713342117,142467892,1374977785,1777649703,163635688,956761598,1115823059,1646557695,1279901223,88417189,1222045058,1970944575,345228486,1137545591,1104797336,114623176,517756930,869812843,1516517157,1305244295,297541926,1161275259,1532050320,219318371,1369417190,913222061,2077356096,1089985507,1104296458,1186751021,809383993,1670129448,158409883,351038877,1336705187,1489323711,118704894,2084766084,1691199099,372643838,675765879,1022269443,525900191,1626624667,906742720,173418782,931880076,455709410,1528756184,1736345261,2111313766,905312443,1652774007,1959538104,828625570,1882708532,1362888918,1997358528,502026427,1795285056,1506829932,1100872694,1647890519,136347046,1595050373,1242881548,876655052,1219655751,1709898607,1118143567,329034548,1594448881,397433353,1736335232,1515719245,604923793,1599489133,960620755,827774322,1335408086,1566928241,1964937078,747625720,1271084013,698424084,113416179,1966816988,1993781349,1940729583,1065304793,1812184177,400669532,1522248989,1095496220,867508108,1983613393,1253741080,1927382287,792596598,1861868829,1206998916,1801623411,159398882,963992114,660913266,1628788178,1154934118,185926230,284542343,1610625664,1696256956,1878033315,962060765,1498230323,1059782658,1295512063,451329980,766296537,805174717,197154765,86016668,1228405934,458206168,969461114,2119504714,224161217,96750576,49355637,495586179,1625770306,915659398,901681702,1685241866,2076509139,1739269648,937468864,1215701442,1075144972,963860488,404777918,1216978570,405405933,2077394196,1673834981,822512153,147542586,1168222805,1993230099,1744226580,1451952611,116780799,1856264278,1863890525,335378881,1332615719,1919846766,488967352,1772882264,1468056542,1860045511,79074120,707718826,368674888,1840968907,212184285,1016745832,2123638013,1267997658,186205879,766997841,283013192,1949390486,192542666,125747080,1052605155,390157626,960441562,1514641191,1005541890,1267741375,5895610,1881161608,886648401,1383031143,1137157414,322022061,637367957,1787688456,1424660145,2111956038,1278115827,575445421,584204763,535515707,65178319,1448420467,567481862,1057258978,536836853,391492786,217753487,569035496,1031256379,1753998242,762629397,1051752037,1661271334,1019929772,99963261,1418183837,1105685320,1030683185,1067636235,1315708455,1067429608,536346673,983485908,462939171,1491921419,273201168,2035243867,1519284745,123843593,1799392224,607366859,1854744569,291554339,71912511,1806802499,633082736,1274982940,841609709,65839382,1492632224,1668478624,1210166282,1162521946,218113839,1173156455,5751505,1729657808,1180164262,2084459742,653361941,1132005098,1806385861,1520352669,819163827,447711911,449008836,539543679,1950753664,1955363841,1361640104,1615574266,705761281,582947153,1688364736,736847470,1825648672,1427756093,122292613,1888336432,1827976189,583353937,1175218051,1698026717,1699610895,880099108,1703164587,2014421252,1609041283,787009598,1420357436,1433705291,1450945823,852134187,506869715,808252482,251369995,1033986131,1632458500,1978678135,1281209688,1961704871,1611852963,147317180,1689814543,1080331621,725899295,1316449518,277581894,2126550530,1285520707,165365482,2104578344,2105342327,712513409,1447950762,589854436,1596850748,1312682532,1119209932,1747023044,18641198,1319816848,1708729477,1728146796,308776820,1185933564,148829476,739985682,1154081684,1858109681,136712340,2083296836,420323620,870965276,94335941,554453291,1012316999,1943772425,972558858,995953740,970534138,1607511243,835712294,660784401,2085424174,1228019322,1352147693,1672893653,117289648,1015296415,1621430238,1794631010,1909189862,534291551,522684105,594693358,1603087622,2073436784,1120470291,1243792877,287262707,1543052622,985472886,501620391,435865369,1349082473,442085961,110129979,1994394058,1706752040,60368401,441517404,1136328967,1740804335,1470171195,705971749,1417611846,516941176,100279327,979018784,358680182,1780638785,1369639115,27705997,89941132,933145068,1546462868,699721315,1484026696,1851209023,143575635,2106265724,27531680,519821355,407612317,917701423,1683635919,166265818,1898854565,1958696612,495397228,402104045,1582304029,1565674575,284016084,1585591656,270588202,734549575,1272016995,1826512350,1260509909,729808444,1506083579,567701133,1510358883,149785281,250366765,919948815,1903821984,1487230301,530498676,747668348,694073207,1921168113,1851506129,174324979,601729487,887017206,814486764,628767113,1073897623,851208193,2129137150,1990742946,1623614205,570965831,599902891,701075450,425324011,1323419452,265889621,1992920620,650509231,301716101,1400168329,986939676,264799319,2129853208,66164075,1061493446,430910426,370406840,262658672,1518350679,634376552,30563708,1405898841,658822999,983026220,685140945,1959127972,946578416,957198777,1597536653,424174858,878536868,1879598645,1176254296,948786989,1532905860,405043138,1223329052,372733360,468554183,1226656433,1352570909,855781500,74149198,2088997915,856910161,32931511,1050599050,667571436,1286594139,226058467,1072542322,1270801598,148610727,1407581751,641958733,1796333192,1231774209,1525762810,1848472877,937737662,828736528,1104611442,570712169,1923745732,1759689049,1128227672,650505672,1809299345,657463642,320292921,1345070498,743062229,749712471,1447580726,764700814,569515835,1210206034,1861609793,652771598,827475337,1772037560,1295188092,1202736443,2097966919,308222205,1045014690,1165813339,1431064478,1215175849,1153068163,1897754564,1338133338,1906622770,1101847836,251257556,830773345,1087808155,578675456,1410146512,1121126739,900760078,992105308,505439804,1400645331,1453971255,1783029242,407570726,954869793,822800602,654825722,1837066799,523353097,682846447,188174061,1248686438,1758117072,1756692754,1824621487,959318207,2071725912,1874445415,1652451227,772939439,733865172,1388811607,319243447,1425718604,268361242,810417358,832161971,1492637045,280171669,1726537198,1569872043,864869184,711371415,293945191,755694837,526154420,931288261,168186446,1832776765,1520817963,378048456,1880007565,1835643849,742687895,1309835014,1295142169,1061277975,1063431149,459255434,1080393776,154631534,670914946,1004167859,1124645332,1343371455,1983590285,2070459505,1426679907,931131017,2003838194,1551401458,536325533,1016065951,39341459,1830763072,60167473,1383026139,2110990912,1887441621,110740858,627952326,1748372712,1692329173,1177783742,757267737,1655433737,2057472300,657618278,1246865825,1432186616,29942504,1582886608,26066956,807173782,1837659126,1536421523,2014415269,196811749,524833045,1204498779,1285093323,1786451413,9630425,1538810323,1128341819,296856975,2129113410,627606847,75300962,900094373,819599844,1783161010,1059850482,1419103375,1600821486,11396883,1161600699,516382337,925234981,919568359,158488404,928954994,1310143172,1654746866,965497818,582567726,2113938351,1149611896,71177691,265588368,239521128,525376447,2088843525,2049254468,613594780,642170824,2063539801,1342979974,1321157034,591025263,1500010103,1678278139,433225934,1350603086,889553072,1282745953,578483247,990189892,1533576744,379361371,258234602,682861203,2092541254,1580686256,1034304592,556791016,1517586244,2036230820,752428598,1339682646,1454287822,511716515,1056762413,1263368254,1173478459,1443652949,1939754071,702404901,27901072,2085297492,605084724,2129403774,711747900,770164824,1260819507,1435022247,1169255776,1662027610,1793682670,172443314,912938350,766632474,644388438,1328393603,673565746,2056668677,1125315011,690723020,1474912374,1223338556,1292868542,1318907035,1217812969,1606498136,1838834658,439235763,351656152,762245048,240477692,889992792,998690933,1250530991,1393938065,739728716,714005229,241748638,316753156,1530749788,567279069,1140190316,1169897776,359098482,557612903,1603951659,452913950,1945107944,1823172465,1783209345,746994866,1199364905,955434966,2063629655,337951664,1022204725,1602052699,459641679,1734785316,2098101025,232867189,1154169505,1845272136,944207731,1519065217,1763152144,1366222296,2080351200,1777200272,1624370714,1238744106,802688739,881366853,701385690,978396631,140958981,1498373149,1844809596,1032152840,666865184,1933868104,881385231,1802782582,2094237695,1535152679,874465857,535902558,1553611135,538630023,2073533451,262640642,1438382144,1818345401,2034885845,1824672706,341895383,1724640254,1573571770,232707231,1415731680,457898698,1915920807,197972765,555894826,1969483861,999111405,538628229,670720559,141840344,1641195966,2106582519,1175147236,555321336,133823376,1031796018,1526398186,1585106931,2066301824,1577432641,1796903801,115253529,1678875857,1269556798,664419208,1198559572,1408863374,261860354,1728657681,757079969,1499528703,1013076403,1055285944,1830463068,1981776160,1513927276,1083916910,1079349291,1201153108,1598846368,1355598658,1684688864,819769729,727025492,383660377,62075724,907365477,1131060313,1770941192,19718126,1546156575,830675643,48935190,1889421416,922616007,339759889,1600133548,1264063928,217883923,429227578,168531703,1926111451,2070543273,1133970524,1665176211,236152674,857801196,1397424089,47129258,147693990,900700781,1174757626,74269533,386933792,1390377717,618672485,901119806,36112204,1207608801,1602908264,366070457,886104393,1533164548,449532419,2124024086,903980051,957915295,949807304,1267430915,1538624407,815355820,1708711795,862883933,888372875,395453708,335011289,2022974721,1063578375,864688849,1600455229,107523413,313195712,1889107607,764384223,2038435198,963613119,1893285332,326487222,217056557,629247740,1688419532,1108574197,1118187925,1091563652,1781499496,126223488,1720193105,1845400086,724306143,1803114141,747902447,1729563254,904084950,544971792,2046593360,1758161470,1963086612,876133953,277203960,101127729,1095414469,602378512,432964761,332863496,1914161525,1892265001,199922378,869967422,1802423510,654020452,139829967,1213744390,2080914107,396268045,1502826594,1543079278,281089581,585031403,1579327798,20477288,704519264,537599894,41777185,435482366,294071639,1904157867,697958815,1049287878,327534879,653928710,989805360,218828380,407206249,572389526,928669541,1681524732,1498829834,1826590273,493660680,1750247876,1819377928,1770720808,291530447,262288988,1885066646,121961123,1713466675,781842129,1315085265,2120991096,965312371,833542152,269725765,2049391693,1140842198,1596766894,273351805,779563089,337692689,1349498374,1343101546,1492111724,999853035,1662710375,1549515608,1193553139,736413065,288097068,1656868166,466079985,369683510,1979971136,1814671771,233655267,1854116909,1159788858,1178477617,1248517404,925381830,323907724,1434103493,602509792,1002318827,1137107446,1053006504,1659328520,1854563430,2090070493,1482571180,677138502,934756652,1397001038,416337916,1236869652,302252368,546426592,1085405341,1813364217,1092819060,744139569,295901748,239407357,836220526,1502687547,1873230029,1624643465,204917080,1025158921,740554520,669354335,707650322,929613795,1303400012,1859665533,354452165,766205999,1196167378,555170986,1069198459,1106723334,1506475145,451920098,1953313508,1759158418,1733770031,91111742,2090594994,617837979,930370647,217990620,1351933810,906885743,470025804,1311425962,90431095,1310572317,631272209,682943912,1047732934,107753184,674382065,1172412364,808931787,993455974,445229330,365938453,967368722,746335350,144052766,1633904194,376330572,495432178,1937464650,40919385,1043305655,893841032,68048270,532074829,1514145493,1767414300,1040506619,442044438,1515774464,2039740402,491854416,498094951,1740845377,214209994,282353079,1038539550,2101347479,851419529,1312965656,888249247,1359906485,1427052113,1351995835,692731912,1130908769,957542364,1335615104,729791749,436178937,826347848,1508343326,1541562578,336609374,1038505680,1425573903,1042423111,1337016546,515118757,1840330591,1112435857,669268754,1437239356,1140551931,431537801,290783156,1670237371,923384840,14323220,2039566222,1683754277,1277667360,129888405,48577769,2112211363,100216714,507205867,285590045,836738272,1560314735,759657049,1705824218,1631350274,1415624920,887628881,1151674923,803879046,1654624133,704414891,598636752,1199415130,967556225,1564045917,1427480446,1287497613,208408781,121259513,1737633007,1461016954,714369779,1001477892,283352589,47525350,834323506,1868132443,376173842,676199276,928407664,1339963669,38852495,286158445,1559033175,1161563076,1708400285,1480941029,1316249387,1457368077,418472707,1731622558,553291436,1591602015,255476338,2085726933,263484877,2012220012,334294292,498960056,1806609180,620345478,402326223,1267054635,1991215001,965457969,1087715992,1098605692,2094437614,2060166961,528404900,941665662,329030267,480745298,103398818,1547347651,2012719180,1387679055,48362698,262326738,959182206,1760293778,7863071,840040552,667794212,283400778,344147300,171215299,1858526761,1555467811,42983873,412099378,1816798820,1825932617,982610327,824996705,1334432713,900551657,1580787684,737660521,1737080530,1669488828,705074882,303609638,1592304362,1475042498,53104217,444811464,243914995,221685645,893093549,910515396,1384766381,657948579,605224138,12284521,1488336987,1177936796,1576474993,862071053,1713978006,1280055949,1614936163,167277023,1582157207,529265686,1861841193,122329381,667848560,2001461399,1717122963,1691616863,972602927,350743726,1424989996,2063618321,1743870217,676909632,2130361729,449786278,169399597,467075607,911159163,691574476,925220213,2089186975,1842943391,905674392,423083496,1270929914,318083124,1649700984,473370809,1930955730,1765316601,1993625810,1788389656,1046824406,550280128,1648827215,916600689,1660600343,1037199364,343195914,1394738516,344167232,741304162,1234175909,354710933,966438015,1844309717,914710439,2039821971,1594754852,662992422,1684475943,418479058,339256858,924979557,1637607169,390394581,1108737159,1427259149,802037854,1006370855,1207323633,1051434710,457338100,1937548692,2082835092,635342551,323469213,1216465937,886463411,674703843,2046997704,756021596,1432503807,376706476,614677466,776452360,1742757683,1594443660,1351651501,1980682889,1639616543,821937927,1222944700,1460808135,1434782281,1951872459,943652739,1268263159,1636088855,462708957,1320893096,629925029,1689513891,770877489,1848711195,288303354,29919591,1885041746,102370454,1012828411,442071479,1194228579,1411090153,979541729,1049428259,484603029,1806488355,333698276,184754610,868473128,700349439,660636253,60888199,1824316591,127781342,200827077,2112933434,1849778687,294500805,54695839,267241598,1281648909,1135519841,259732796,2121390032,37974920,1284638864,336028143,1935374306,39852850,355624240,722099354,1276063063,1104404,770713869,34611967,1980602745,492326310,2072351884,2077289188,690537923,1500506972,1141099405,607321181,1131867734,982712579,1684750114,55394977,1347173165,88301862,508724338,392530365,1684457240,1829103069,1776173656,1686829623,1306311924,482676172,1942763978,1469908961,1671717638,977372481,1398551775,595453722,85760299,545996315,200760724,353892318,502240095,707797142,854994511,972134987,1603319025,851262721,422401554,305851943,1236716862,1792637550,1187696874,1548263739,633343663,205470539,256881481,1998226420,1686520392,993987970,1340946966,1602431111,1161124372,1237156197,1530095683,1286925705,348243854,551069098,728888074,614378780,2009650791,1574490130,226394126,1543818973,1661742177,546838901,1508347987,1368504638,1531113790,545745319,1956774556,2009957161,1733722800,888238778,1555797594,983806247,826181465,614138699,1480115456,1965909970,1314497759,323852763,179823071,2116696932,1830319509,1677728515,1977497830,1918561904,297790444,1830253431,237613752,1711349239,1145670632,1701536450,1378509940,137001446,689192833,1176839298,1555057159,175476120,42497430,1863707395,490260898,55273800,1304832586,2034360357,1610642844,1913816079,523848954,331629216,2017488121,246168664,545780896,149156352,1853616570,708602539,1486143951,1329147312,2130589260,1822916264,473245502,75458256,1252264666,1108122463,2048115766,1573081889,1080883034,712026968,212574367,1552317491,1689645516,745850924,1962311066,1803965908,81573366,918813716,1708851063,1680764471,974815630,862014576,1355884136,179134484,959568269,217974626,668445305,409822840,540533854,1321388326,1623512425,953044918,1352252333,676780624,351879255,1925379066,1432225307,1425604951,551125279,1199798725,1040600016,527609245,1996859689,1847309490,1248401984,1547116618,523574451,1534170640,562971964,1969853332,1087041146,1984785841,2100725148,1128673361,1518518487,1962661445,1916519223,1071497976,1618722027,310675615,1430848059,1747988072,598284820,1676365399,1929265978,101678099,237175396,641870980,301997630,268277796,1464447131,1815005830,1594405027,1655105042,1859780743,364920448,1502981496,874788816,133537918,2065940914,497395006,1394706574,941717187,568367946,754228391,357913628,292924270,1929256758,1032744833,1195173789,2110817113,587105955,1510376627,1547583521,334596325,589700113,734817407,1639092335,1011786256,1904422674,1927222798,913747321,298742062,1610132178,498512304,649362983,704014980,1344367380,78658328,831655944,662257116,178220090,885741078,1018793073,941642619,1220533546,1593369211,423957003,1355095691,2078980328,829954672,225991548,463166655,1101181964,1272246276,719215156,2014583683,1656177585,1801390135,1612881117,870257585,1269355948,1591520863,1321302575,1799528997,1147796079,1349609187,113610846,568676321,1319336685,1035387298,1942461961,1006926440,503140480,1911044656,804169228,1389334892,533517309,1518470253,899781478,1436453126,55684903,1839857434,1884242355,918812663,2045493931,1499931938,1933604106,780939138,1424816087,279298991,1269753745,1243591676,301564041,420128149,1476291293,1246644721,1210808925,50626156,1976252416,1149153122,1549786345,631495990,1422624290,1688030919,515172943,1845933600,830483874,1911132118,549850097,840273380,438395092,949991861,1693366590,1969326752,1256463111,1547584617,1397411729,787332178,1725976118,493558042,1031100101,1275785701,1465272372,765269851,461380333,2118493798,587457873,4418371,1885847697,134330706,1749202575,727503958,91495582,576909251,635674620,600910085,959838978,674470136,1923294639,459544849,273984996,729705057,989174381,1456541069,1581659792,503828349,2404692,1462215108,327773779,1163834824,830360618,420140869,735187202,316043307,1060342651,954807088,472761416,836141613,738638240,2123038535,1141614153,820361212,840388798,655307554,1129656505,1280828366,921700836,8296208,1043009916,1517118592,2076600599,69594533,1903025249,706564669,1293259696,1146383242,1178673641,456583817,1351776030,544573410,558622424,1175529792,1719447469,1848841703,356449662,1781370737,494988556,910260103,731964160,1756700538,1534156463,1135688568,321154036,330795241,1124723452,877920030,419217322,1682910490,873953649,1896329649,1354846523,1743747934,1199244774,1536606888,974263036,513288079,204716662,342514486,512775251,1018500064,401174096,1961462608,1332204665,1067414549,2022471702,2011509794,1899798537,1457053120,210708505,95112192,1821188358,1347103994,1199853570,2033535261,1924564,211437555,1915506407,1433701456,1488374557,1632102221,249646510,515959184,2099436345,1160035408,256903447,1249007333,612379631,1483041551,126478530,759048297,1170290150,2112204372,1708841673,1965251570,806679187,122568748,2067202361,1116135820,973839741,655900527,398670921,453855128,1502403717,1956875434,341058022,1762615705,959764029,28999817,672616310,1259114854,2032216769,1635986335,1933126524,697265851,1647205626,754919799,123320156,66397239,1307468277,119426835,457369768,1283215890,965119981,346331665,585231922,512477168,22229617,1211968832,496027630,925810647,1727381329,147413676,1633068576,212520951,1856049772,1056404874,489077444,1789501744,1910753527,622494367,1668623352,1524843833,954161882,590434166,650649045,642492088,1243011472,1945979701,1243874241,763799298,1381389727,1121587003,313471987,1356448047,1283817943,969952015,780083560,990013472,56255061,1625366551,1154356816,2011727617,440418385,1117918047,1293475711,407291069,1435723811,425030099,229108816,50247656,1001970835,576696938,224411542,1140446540,1318478744,1303632856,385451126,373633156,907762349,376592315,964513457,1131573740,625446764,932843959,1220248513,2125447680,1490899432,79443970,1205470051,1115440523,1373878493,1715217583,356674826,1971487789,1831870735,1982060773,1582999115,1520283940,68777237,1874814410,664007645,1314026913,915915865,1557940139,487919543,392313603,1989510182,428513915,421323154,1585947858,524387980,1497505110,1111484703,71365214,1899547982,952104071,981689635,1941323620,1664931917,1818315665,1923016411,823007067,1360021525,185419706,2085734535,719091478,997231944,1266089314,270635161,1147730987,1075475896,772576879,2057755893,1478585781,174408500,1518702461,1487086909,1365352123,1388744119,257099655,579142850,806579210,150059110,1686788321,699469525,1284758136,1922972639,986620133,280178931,744267267,1698916596,516910100,1925901353,750815915,131573258,1118871803,1089922043,796524012,1721512664,443187504,1084521835,964421182,906248597,1519700291,1219481848,1692075853,187963717,1258872690,26050676,1649687925,356796108,274186067,1848621807,1993278740,1782851079,522643636,292422257,188665945,1796528049,6688807,1386233298,1196876698,346863504,501553798,1097157362,2055162994,1738231176,50157485,367219869,4346122,1662296092,1051226257,1022734836,697014027,547513349,1566831631,751668929,1557246894,1754803605,1268069620,120360628,918874170,1010280757,937225598,20495526,1593613468,760293461,1605038515,1142641444,528291705,1492954318,520887898,528849448,1170489568,1540510900,301913905,1481357536,1000742976,1395290519,1357894745,65687581,347848576,1785272526,28168461,2033147124,412452934,1900970668,599738043,635392153,879235849,1624807557,783476002,1493813631,453973812,1455054525,1454257465,1816207003,153834549,1099304971,1753858455,1567553484,1060862726,608640385,1135990379,1791962695,704613226,513632312,732473057,120105708,823557836,644092465,913895463,365569990,1195361528,1573387671,253670239,2077802028,847540101,575169094,9891371,1063620938,2104622189,1828677372,1758664580,2037287169,305637712,290496860,230122871,745928589,951139185,1252445497,1139682803,1086266742,208514791,862735783,57504147,1238626999,655134748,1767117784,148483261,919529232,1596123021,177598337,535385151,712909005,678785138,1314540992,328627031,1645332504,69370551,335493727,2070686694,2045263336,1062504636,1490610239,1597028328,399363644,858385167,762643010,1095027756,1652014797,1763141353,913022592,1674449762,432136554,725414262,1833166801,1182318667,252715758,498948517,2015859183,603096989,678966688,744977271,869363237,2065718096,512404435,1203573030,1237558949,320740244,1659409398,241849266,740008511,235502801,1453253675,223510145,2017319625,845603056,1484346617,1790170715,1230491884,537707003,188210188,1429975605,564727060,596634635,512130795,1429977430,18828044,1171204321,824941876,1561946956,939463028,1267701028,561376246,1494982337,2127784020,1636301537,151869757,801388658,1191239049,894382417,823787592,2123085555,1720860836,725515943,688658840,2006923266,822047018,1505444452,2121970218,79885943,602120396,695747983,1222585800,1047561764,1742662170,1981109590,173043939,1649822096,159602773,1118294594,1538531863,281302934,1080580793,426821151,340299730,1674561842,1900498900,1062043465,1616416006,1200336720,76417531,495525066,103066257,1595499484,1253144745,112329984,1302001510,635275651,445615318,508885796,2112172808,126511853,1162365342,665385705,1806908100,404059630,1353963086,623914777,373187638,1909395842,329362678,1571279783,305988402,638244469,1311061418,140076086,962150688,1662121199,1290544702,175863520,178743895,1602021838,716907487,1759358796,789036137,486366048,1810357956,822062652,1760183892,1199133478,1135213413,933501240,440077451,2105168265,1971539743,1729419303,117603599,1441479986,699384009,363669258,1090724460,1481674048,2010150715,21412551,472487884,1497939958,584395154,982861067,1992380270,1085188777,1679789874,1864719149,1168237940,1030536409,69763262,1633425021,101798886,655808752,355788781,803162578,200479783,164301960,1234677929,1932015789,462694771,667499583,391820251,1944323307,1802559538,1127577347,1515651113,1493921055,929348222,438974261,209452700,980270785,1268306934,715789620,418888899,1435047328,806718231,1253518582,1959521210,1055886874,2100680113,1150268772,611681893,980584294,1033514671,47197951,1703039699,2049204066,1026033423,753938759,1581039512,1366484417,1646440702,1434276738,1922264344,1820528991,618745085,2084770976,1749027354,221209345,577617621,1603032689,1289764585,1054523990,1320722659,1151727903,1894384377,230462708,2002587709,1844404740,1072066213,2040697899,662673743,1232845804,1561170980,1028308081,1204722321,274846223,1269481986,1870329484,2056651209,1924583882,315227723,1718363181,2121838765,1882261546,2116266660,253515433,72097833,377290135,7269556,1667485826,983615463,821353431,1023957225,1590950591,1696277579,128384977,1309327126,433701633,55746838,1024458195,1361022873,1782068033,557631537,1662819948,1841557897,335357577,1105752526,637601640,1563436108,487065752,1402862262,2049760067,630500677,451134191,1720529582,1219531060,400072479,1059261948,2001824757,630504273,1746757346,1150409452,1150080501,2002690971,854875292,656460421,864430607,1883122638,821851961,1949970422,2068548244,363210480,15811500,358497979,1990358371,1976567504,1912444744,1342032060,25682455,557515083,559990447,1917010918,545125762,835232707,1037818499,371078692,1590520545,1174303463,1271548147,1736961548,196796247,701564853,599376886,532075266,1432387318,1775112811,919209772,1679002885,768666929,456635418,1997860056,1829113646,154733869,1565557443,569961461,1170438843,1865471014,675167306,652948906,1783841473,2080354743,1271777191,568369946,850960139,1856236701,2114442719,985540572,2040553681,1705581500,271847138,2125680868,1329119137,1817292722,1776456607,1578126595,698239038,155606750,654784537,1217467527,202839612,1978272124,770795155,1500326717,1537027049,1946416154,1234841671,1584790201,1022977568,601513104,1231664130,600552697,796747320,426465215,1660869502,1484502840,1823343943,1518065420,715107709,362104545,498732942,1256109105,605722417,1997416621,1293668599,516951929,1297389307,1328390415,1406576477,1250894099,1962515660,829323490,592481248,186012683,1309118757,1563105290,582814101,305485454,777822584,561537140,214647751,1392980676,773731615,1679763810,1137593553,1734147621,491556724,1069108674,1790746847,1871678016,1276623408,1158891916,1602796357,882462487,720632315,614015321,379845048,340183992,1057168371,1166296480,804704896,1060662186,1995210255,544114641,28377471,1045836586,1239795400,239549195,917375744,1585918701,1367062898,1883881211,284551450,2050884000,1866728752,1520146086,1766749544,1968226960,1945820303,629079373,373223143,1921574078,769685737,1461507819,1619100638,761729892,1755764409,1072156690,262825640,1219526400,1602753120,1397549675,1394941451,423694616,1533540738,985519213,925571818,27318566,1908067178,667950170,1290532607,1549620012,1712754629,2087070590,1493617176,281511591,623209512,1510279423,2094797753,951824360,1915473509,1418848355,1710511217,1170677262,1143040282,258061309,1187511384,371680267,241260030,355031238,1222386283,583522963,2045656778,329844073,285251360,1475276185,1386917421,189528026,25496611,1743831341,1650253640,364119528,142943871,1445962436,2052616738,663774456,113366848,858663627,1934950318,1018785003,1308924114,354354534,859884784,162936294,1216149128,732955996,367755940,555037724,247912220,367401027,268878789,2037327583,879894387,225772410,1219101671,1919032919,1713679514,1640575292,1245771543,1832408144,1909912977,977456898,1799120218,705430879,1027309990,1142494178,125891894,597074272,1652413096,1399356506,109859782,1119108474,1579278964,83146214,124623274,236043228,1961619830,1653014846,1737062410,865412178,1761633543,1766230983,1051739073,54970820,1802251218,1462442655,1229938759,326800465,651829205,1918300634,24643827,532517075,1085442416,608228932,675630173,1671017175,766072726,152013008,1251587257,1934503749,671559372,1515472419,1664038073,133742534,1555756884,2074785185,1645585151,1588883760,1189705161,299727658,480588546,941182766,1994853831,1441144526,1546098236,56859245,583672741,345770879,960152273,769272652,1997082481,2114650370,1258242631,2015542666,586161992,2016289414,2046641132,1292825396,1157408293,1731868191,1772193850,1469747564,1222130703,60815475,1533302621,894565027,1932670533,778878182,1516378695,1770326817,220700048,2075901089,756596273,1000265323,1310404110,247428037,540912618,419725253,1753067894,301945461,1192171680,1345260170,669124140,1240815981,693809316,5166757,2031599829,1297978438,1816512108,566310810,1279267182,262554828,57210083,359966340,175795141,679621466,1268395697,1369167998,1678655310,1149842213,1448942510,1838455113,1332306747,1522652883,1585006902,237311381,387870938,174367198,1657466224,825296847,1000574153,452965727,119578428,1075832304,1574577576,160964691,2096556824,1186249736,1435009786,1347639625,669507984,46651245,1441768796,677461897,291325929,1498201534,1271319098,1508412574,1612472836,740528728,67908260,652262712,371955046,337701851,975162038,1921386970,1023895207,225747250,1630386536,38826863,177779182,125208777,633487058,822962123,229776409,1645073321,11794394,1282070004,1574092965,215441244,614962657,197209086,2062728891,1928260050,1483866664,1318532657,1259857410,1560155200,1120335513,263312657,500675485,595242890,1374606865,2077010683,389799990,569278680,1010866913,1939561537,570108575,1685090801,47875505,1514992348,718388900,1846294033,432425659,707399409,720589369,695877954,1795164170,800470082,1279424536,1577062852,879417437,1020724116,1623156629,1083439628,2023825926,383680296,2093382289,288487223,564518566,1709267683,641197183,2077275504,80395081,1247541363,91791859,715605908,410508061,476217420,452566621,1177175162,1371556100,212750428,464816434,1833333879,35934954,959224356,1403949478,120397405,376197366,8141056,886423673,3561352,657319473,1964933354,1371717479,1772054017,1090762439,1817979615,1971863902,936878981,1823543055,1289603591,1560971247,1569174992,719604110,882401900,1961621632,1474952829,1450742314,1855204568,1126631944,1672142359,11156068,190839579,2028078117,923749700,129721925,98470997,347394205,573594484,1238510918,9695245,1913459937,1062532335,1217593149,933332448,1241997572,1217254379,1161639723,1238530229,535435178,909047534,1644813333,2079058618,173768512,598357569,1709586661,1056355559,824983718,2100162081,1250232706,1902812823,1300798751,1003278100,1853761830,301373416,637902514,684919467,1272887390,875464579,1600352879,2103485773,470493849,1429199642,33735536,458514858,967664402,1268352215,28283834,1186713911,179447582,1871503807,825065321,70308242,708805439,589428,1741391690,1416235699,216604906,534728899,1517741558,777358028,293041444,230333653,2094494385,28692174,1524748077,1902889529,623243386,1997921362,2025288550,400930667,463333243,1246493918,934808958,1358449801,2127492912,1269613376,380223059,1034722406,1527671767,1935419493,1414408832,405645995,1222545734,864762619,1222788179,2064516048,1040685485,864416917,428598515,687360164,392856107,437418218,570512185,2116923648,1198391042,735074035,1162479450,1803767324,1907638355,1186947687,273057464,427167459,229822424,1361962340,1296449415,788545336,1086818718,449881145,348510069,1835724544,1827203073,1947990482,400499135,1414538095,1080375826,2103497457,1903577157,882868908,27187030,1638312741,200941523,1562587806,1254429473,808855822,1510515926,1008277699,1067204571,46603329,2075634074,333316936,1383977531,1096678593,599149000,1503188025,614372867,1428086833,1020997443,992354776,1474623775,1803744035,549556016,1574324289,2034898590,1636612052,888934562,387532158,1099736759,1788017778,634823117,346162038,1694365960,961918947,2124012693,1424716574,490715442,1310867854,2092226172,317673650,930961404,1378493893,1231895026,143998941,1266085301,1490375397,992611485,1322173595,562867013,1255885664,2065051148,1191985407,738586918,358190270,340496930,987945555,255067588,1750919894,1783034403,111820223,1826594228,270878707,1339408615,1893867963,115351480,973940055,385167367,1524768903,456358936,1237901329,1866180639,1422590063,2048151613,1335375602,885502024,1585427655,534108691,2098304736,1157657184,1376415354,1250490456,1318437871,1036420491,1589880092,1096505299,159375097,648320890,1007005530,1939237267,1531504556,2127567230,1355430521,1243745280,1315908913,320370130,1082524744,1675628107,1727506604,2056288600,1042778911,1945055603,27265237,1764644339,1294117683,1183045934,1660128215,1257673876,1501006621,1281150522,781328769,1331613699,1294403348,1385541614,2043217209,1666816221,439434069,803781900,231790621,1440771161,1673966036,1672720040,2005419488,558659006,1391785759,1975840005,904756639,1335741834,1081043232,421860520,1601080282,1169448993,716885965,1204750024,1326335101,1937362954,1336192046,630231527,286584405,54935584,1449689905,617085946,1556394462,2009649774,1326602371,1480052883,824288840,1228524663,521635753,1269486896,1319292005,440349874,2020846470,1222808560,771981613,1434271490,744372099,322656165,760730589,1893619435,175818725,474486636,1376642649,1008677899,838343366,1820108522,1757414091,128093939,457839658,487421601,1130163079,1024139474,1426324064,1514345900,1911030521,1868683192,685877567,1759606218,84930584,1950393785,805989667,370652652,917917597,1149699787,1322149425,1239785682,931701578,1675654215,520256856,1771860901,1808772995,65898145,2074230349,4932848,719226956,569434892,311330532,1293456416,883697725,329293654,1235486582,2124239594,1882419973,9532698,1232994648,1293054850,1003877776,1374551950,1213201672,480418077,2044227680,691354460,1434060237,1072178644,1124360786,299907027,494348596,257081771,935541373,1408461561,1204706565,1200830780,320616229,816948275,2096649805,710264168,2068310017,253764260,2021007055,1914660905,1396853307,1444072632,1652690202,2038780802,1439281791,2109565883,1889867978,1180894304,1136571658,1914093029,1991551575,202618830,1303352434,458707509,572531246,595158325,551257362,192632363,511248941,155848082,221766632,633426342,1981457521,1640938004,300228738,166293576,1850850330,1226272355,1382887418,342209037,962009916,419061363,65687367,520599215,1254962077,1025468430,505137367,928390905,482569610,1369749944,1738062878,676284078,803702885,130344950,452822783,1081213188,1371796289,1222015830,98472636,1553824069,2032867146,1585209654,988368803,1112787262,78414685,1846504816,1844472949,1201224635,1317377988,390523121,1678070467,1598215093,970208177,963361562,623371091,1855124953,95368269,1762517471,1624498317,1440624007,394112414,287730979,1483914615,456059784,1781566216,370226281,1565096091,417779539,1207935929,1264874652,1088229828,1955828143,960321014,608670220,235224704,613722064,1983446072,2114064781,1103684371,1988640145,688034449,757763900,920537014,2060741785,999856338,1136558727,833793105,1973270247,1765207862,1299086994,1006312973,230604679,631799556,1023786983,1582355127,1056104923,894338548,745325800,2045478967,1617695084,60100072,1290565017,1095829285,1238203848,909917074,1148921700,1490010396,351940311,1206264525,1012056088,2000682388,1313210744,1685016785,25375157,341609139,1695671813,1347514720,1973985527,1242654441,1933575489,1345535109,405482397,2010788134,952883293,1692230814,764156794,547954831,1910257839,1463614216,513302345,1359668281,1710273862,1195722380,1662444911,1879252448,1706302358,579297503,106331286,1091785816,1316439156,613614187,1159606665,53847664,1010167178,627106952,1214233373,551875729,684941223,1456273459,921527729,702536594,1375012869,1444510585,1961390014,1978824409,945922436,1500115730,483185636,491610320,2017345809,317126462,716242589,1812265837,515226872,2116131207,104226250,1611857200,320047322,371841553,1550225678,1823138454,2107057662,843879389,2046244401,1663736919,331555083,850664690,1831568252,597031562,1699042302,770447688,1656044417,1503898266,1177812534,297435876,1438413499,96438218,400122757,795438193,1872641972,707092915,1049527824,1192936594,2010140122,1269255496,633258150,2055628418,2047006624,1554729718,440987282,94077083,979632482,1445420254,336409627,1952133637,624371955,134512560,1154727208,350450661,1371887299,1302643374,1099376254,1216703575,787964690,619172543,678086189,1820824703,222042509,1763244538,548893026,69031838,247442235,95154942,300250622,840731941,763210196,207234676,727982191,802623795,433246243,1679429201,2125441572,97945160,309311914,1667492169,851671346,1161419562,197275473,638790248,1527130708,1690696767,901311605,1693332024,810279838,656668150,1902189832,1564401812,1714505280,1368382696,580331915,1970284329,1120334641,821614765,2091422435,1316685402,987309588,661286738,216664901,687324284,34540001,1429985904,1560062350,38989854,914131891,2012529956,928407114,1469330785,703328553,835251592,1281065885,502697623,1748788836,1616329946,1539290430,256873008,1671597003,1374774302,138112297,926905587,2066555246,1939675116,752965655,453597857,1830089606,108620785,115852898,218880089,504605391,1955527026,2085383037,1785727901,1668688250,114261801,1110721050,1947261064,187591756,656652779,1944300540,999728179,1729971201,996422315,411454869,243281413,1604934783,921639878,2006374153,1079086963,21560329,647257976,1697651319,1549439655,1998688758,229372710,903740571,631654632,1029153236,440058922,1188870110,934764366,308893574,1825828868,2062166769,2011340672,1044094965,1873284077,367424612,369130945,346731784,1204662469,136382507,665393994,940370011,906827386,1649169891,46621661,1072209812,1463551202,1344543360,901132653,1809787266,761343601,86994008,1515761757,1482613535,1958015590,310082578,56689634,1781061500,1930951862,1745560201,769769636,717362862,1841730907,1314687441,816278277,804184532,1562306768,1878700405,168563033,1212769650,822250799,1006799544,172549640,1520283971,1702615388,668546533,1509641178,1451415608,1300993292,1879751869,1191884130,1102056085,703737731,548978463,1714903492,1704787759,513971745,718761197,311951449,2099575430,1026410261,258235845,336975852,671319372,53796461,1177862753,97220398,69004428,674836033,724204,1279374435,534917343,882343032,771647819,1596228645,901990023,1209015643,1130172042,1896249943,1451811744,1335232548,1578201184,242927759,1190063414,337717296,1210454567,1950220697,742315066,1895635475,874440014,594020562,325936099,1376140719,2039549785,207689691,295631136,232285936,2070753652,414439877,371099182,1914487025,1153631144,1078611949,1188192026,1451737769,2127584231,644116187,1996737644,1907752103,853229340,1272522914,246877517,2079782010,1096117944,1328517844,933071230,1951625469,1817758458,173835693,7156196,556606563,1540095129,1283553642,1085605600,317189275,2020268993,161325769,2013628688,611700914,537958203,1441466454,345556260,1285607394,1065700,2119015042,237131024,172679742,1625144716,624684586,2008560032,2120213010,1593189058,1743112389,1862926909,353125683,438837333,1793064070,1801780308,1841795023,876590884,1516658495,306878184,1241207393,326392373,1170338366,1355393679,145103239,692685067,1207049291,84557611,564770844,677431667,1085327252,653725084,1606851714,1126330052,1955184351,1018623672,1889589664,1401039817,2025707172,1547818907,171637713,967563437,953255398,2057110043,1940190786,255336991,997241097,201009579,285312801,2037364788,1443107891,1951365505,588563883,1185018659,614098718,724138691,1949929116,1303011107,313233298,745354875,587341565,290336024,702081997,58663797,1264023442,10617494,937462210,1673253590,723290637,1574492812,2003412996,706545355,1953901362,920135976,2128165700,1696430903,2099179487,752719805,633148453,706635626,980884318,350123074,1040356871,477681324,1096122530,2005414629,1574728523,2121645044,274689508,1406967220,1145283582,984604890,265540461,424047775,1116918360,1398834812,534225977,1642854745,1043516722,829944653,70599101,586118736,1557098300,885584949,957174530,826384167,1586812802,1712082222,1977301465,1977384278,770101212,1029306966,1156079906,1688478249,706747662,1295645163,941676278,1406022164,1135379516,1420003083,1750166685,1992716918,1389982614,777488530,1615851194,876875494,1236222617,643729808,862045560,1563913991,1874553322,1693173724,1566156908,518928242,1812847084,1863988924,737116678,1328750832,1211064044,1213342482,1990635194,1794528713,111030917,1520247749,1943498489,249554024,126483167,948437577,933019984,334745572,617641410,257530175,924034577,1227906969,9803518,1294084263,274708402,71509946,1602412119,831134367,810050351,857382523,58423386,934348305,708383971,845497332,1987095110,439539625,82309985,667635601,1395481181,1084692946,2091461392,1129105843,132590737,1599179121,1520786698,1431888378,1129905611,1603369675,320516246,2020302917,2093380672,208886840,1169458546,1074467148,182838331,220298431,1288547911,1132447478,1828287956,794781408,1491522532,1730049807,1220864279,39969904,833797182,1492643343,156605746,1440310343,16939239,826660197,1907555134,387315922,600462486,1745626308,1471684930,1520693175,2098135371,1050638151,697441766,1497195807,1456235570,1093330054,205071441,876934809,917324967,1291521296,1394176838,233611921,386928894,1872496192,233479941,1704717299,93605924,195448811,1772393706,2078187868,713237419,347603936,1992413366,395339453,91692049,1822083107,484019248,686531265,365517349,1507341282,2068142260,1801642657,1624581671,896256426,118406063,992019821,553598292,691340750,108934248,1535485911,535244782,1770835608,2049181042,307685214,1376357539,750038216,1736933686,456688592,1105662477,2024578803,2866286,1086675164,1757435605,1014719902,1119086164,1138521794,1732842975,234647104,1118317148,1701684616,1120501396,1032671714,674897960,1414120250,157397242,2075840239,1936274367,1392605134,1243596475,1452184054,1242211759,1710063492,1751246458,792660445,586850458,173917072,1078844731,312372342,27501961,1589782087,652103093,879100505,1299860804,1393383609,220597369,1318830819,1046643856,1085203165,1218142683,920199073,12549051,382902520,1816205902,797354509,2130418394,1374597943,1208081159,800401811,512385163,416092086,2046982866,154354532,893846302,1451010069,844767247,557501432,49139370,2068575621,1370657192,1294836786,763690131,1437622807,1295369840,763602793,1383060550,1126456615,253370717,937058922,517952327,262398250,592621041,833456852,871020575,650574702,1993968146,355966737,1553964823,1130640701,264413646,1981146623,534882775,661977144,1752701889,1781880332,429682008,1450382819,437580913,1681738664,1086813979,1588243212,1976775761,531083303,1657900245,829525394,1130337054,1514924042,954487536,99446868,2104321801,2078170767,829418494,1401177631,1647071911,410601070,642869958,802988637,2102505175,766089276,1426449446,1488185678,1279048572,1995741487,290732747,979294925,443006390,1289301227,1118378036,1723166569,7143242,573601182,1724951808,1412572255,433217803,1350473304,605627218,835141739,626449272,978869968,1910148119,1078937014,1568292723,1455658731,1951166231,1485740358,1213489292,1143250188,493043499,308362,1670292607,94717823,1957265623,1283259144,217993548,186589533,1730381435,680380597,1682274919,2021671252,900055969,715060228,1468055396,656425312,1266644445,129195436,1727671554,617085024,797275450,1270333380,1466343935,152457628,240636885,1837215652,724258091,2012505494,1674001380,926284589,2129019707,221756237,837429415,286610093,651411860,1872903668,1548049547,501758054,1927452093,2012709633,1936341996,1080127335,1846659560,144357801,70726993,747504356,1368200407,1593446216,240532715,496188121,84242364,1557891668,845467604,505601839,1896256014,1898715420,47952803,1915085316,827776280,655366404,509657210,1069803286,1266218857,113706763,1018363801,1445777788,709134024,858605260,263357010,921267339,1323073619,1688326524,1752995122,1840157879,415705183,1936039597,652755487,754584771,340375565,1829595155,1008223594,683433883,218629399,1112807060,86285034,1013662887,1809146663,1325090703,1392234222,1215624269,2079872308,1483494143,232638240,1605437558,1645887764,559013148,1458637130,1919492897,1681236624,1366693748,37591828,1901071090,1932692161,1059676551,1846213633,1541824420,1022383857,1351216663,491228080,1242761879,1996056839,1371911793,528044034,484828564,1859322958,1844834163,1475111171,756003383,722714580,1830284891,25750760,2065301151,2098131535,2031953779,69734052,1677088254,1317610899,1920550626,1640756368,1186059435,1151580410,204213723,1938910910,1891147025,1752305448,2018945626,61687530,1675606711,783717879,835043769,146302251,1634033987,748105855,1194079997,2049356495,641116418,42723406,1457321334,175158258,1968197929,572409732,397304115,482957895,498041345,838333483,2011710276,1888036159,1390520084,1611548393,339737441,1581047625,1332276640,1753692311,1079024887,1363024439,1405467164,386869037,1306235043,98320372,282914740,76195196,994260469,1757453424,795995520,308908499,2004925133,1052944833,2036136312,755652269,1383618622,446932581,858394103,1038665204,209000045,439285933,147330069,1751563947,685784922,1718222794,443903164,1275968463,458404085,1345272504,184707953,1966673471,1877046473,286829687,389534746,203414498,1492507715,1446098052,452987962,192070927,135378621,457912919,764252718,530323823,1589914743,140471630,521270195,1776970996,2126222295,151166402,119979497,172114552,1909229262,1597463639,753079714,585224793,807065372,63433448,1658654670,978470599,1542105469,152656155,107768299,2086299984,1134476881,1886751396,1643361761,469833757,890513954,348118714,775974979,1219087466,2118942874,1886850776,1773911551,80464152,1756475544,393867534,1420503524,836109998,1700220699,1785406137,1418330616,1466157100,478312156,532951799,597238258,639682602,1264684181,1506477132,1377117132,881423571,547541966,1003985527,1445062058,320978856,2095725069,153398403,114849170,2023873561,1327585238,1331735768,1576898166,1795239364,844259584,628620466,1609265752,545611240,143047256,849641227,1066194815,1595834202,333848740,866843107,776206794,1027030907,197171401,135959142,1465925760,840732886,664490964,2053566467,647383944,2063925293,1581636937,1150663824,273502396,1856442736,1439649780,1303426101,107584619,1295273177,533417196,2116972813,1165708844,1594044929,878591726,964228024,521223418,700894174,371657949,2069640977,1821017144,1071588346,846026139,1554644271,260229520,1703782128,395610167,1820938589,89694736,1665583711,225546845,1612923184,1344729615,709420439,1553105579,227921877,1800346770,362911103,294476428,511219795,349728615,1318767839,1938047287,1664312979,418467403,453395370,1442636672,863363285,481374632,162855760,1209456183,1277347110,1688956873,1812481809,931067569,685408876,1732808998,367739912,651337967,966460707,973073111,931340272,1868954899,1112608138,484115524,1433647624,1803968683,1799640093,1576387176,78130841,16780500,1995465406,1042872898,285212299,891449862,1602594147,1770631340,1540486940,672174095,2078343148,748349938,1830727706,1927961871,943453206,1955108649,2017718021,1416993862,818220162,694399584,980027564,1803074862,582013500,953513481,501683028,938753443,889244086,1024092632,1416397048,1151421354,1903967594,1315242706,1879151147,1514115947,1757720247,563325701,1053928536,914894256,1326005472,604472788,1967055867,1044639168,1243769731,578921314,1553213997,862970608,1137612760,1894291760,1511544686,1278875451,2064214741,18601379,949418848,2085453213,1996620074,1156160992,142531962,92693200,1566060472,1991495103,1968246514,1477049662,396913933,987454101,1648965764,594781478,8656742,1417994245,495258453,1676851560,1559244108,1526375484,308828220,1088444840,1675530921,1105745818,63807056,1313339850,1323459939,1537975871,626495581,1136397928,1330778012,285355898,1126384918,1020216648,976267729,1578309095,1694894423,412860753,989710336,1333410096,727051976,1763191370,642581077,2048168590,1819365573,544149703,931706778,1341514064,331730055,1463734823,158465692,334241025,786773331,1855876312,260704050,1240363122,2077556839,1595382201,837657817,1943127329,1824083265,1641143369,1835465729,1247349196,1488686816,1728310957,1847821091,573693423,1295229272,1087463755,2060413402,1278809457,1469334873,937153572,1996951725,1373975813,1071061713,1159564671,1011615851,200763104,1151711050,941069260,982478183,2119042626,1836044273,331301739,954274440,580017003,1124397349,1308218046,2025495343,1919304682,453146397,1910690662,604887686,1939286704,1245360280,1756500792,42825732,1381253108,1253200726,1500984392,533815626,471583196,119455744,78766741,279698327,768498364,503097740,1619764697,1793978234,1502475654,2095501036,618431333,1262564077,552995470,670573839,1510629643,1070067924,580782701,568191786,391855077,1412907377,1287985129,2026111597,568438347,2064431530,594408939,474964604,944260729,572361070,2016628160,953683809,1579913735,1286418899,650577553,1372928797,2117178994,753971895,678864810,1975310486,1366459458,716943195,1632328391,118128087,2095176208,1274454836,1439024253,882534551,1684925834,1467217400,1417197778,561510620,1340111536,632626878,1632421962,1128104834,1643117443,36982592,1982291952,967123518,1816632951,63747038,432413383,473351106,1247127168,178683048,437960154,1877952443,922959807,178546424,1040305745,137073926,1131393335,932037595,512629124,516986947,843769483,102340848,1543603414,71102166,391591592,1059260065,2041059325,199958467,870686230,1802385030,1765137157,1963624293,1553079530,1367116059,2018037382,1514040450,474986182,380382964,731543834,1099711246,1391685462,1139706876,399551473,882732075,1326836304,124813414,999575616,53052419,396788962,1983561626,1266496774,1046142198,577376886,1950575357,545664443,124653400,1435158840,1226173123,1639813147,1214635212,874303816,1623522149,475438025,1683426934,122479371,574053959,13739194,323337061,567182682,1959774901,207851975,647963767,1792531694,2055830582,49509739,358883694,1493074004,1357933014,1261683295,1592397929,1562368866,1136944381,583695549,1380230870,1469311032,967851907,1243662986,1787480423,1714412043,523790293,98123963,621177251,1406169279,193741786,983694975,1760479611,1830363593,985405568,534975322,1979451851,57245666,2085663394,2087838565,1712684944,905814059,227741015,338335250,778061965,1474495097,1075742001,1608666591,1967692515,1364620738,1547048601,2053150971,1301352870,1749725442,1979531350,1775886725,1025227180,1132684563,463306215,1554401014,1894477212,346556868,974220747,1689909991,1112369337,1535280749,1458275636,930031667,1790889197,521822319,1630117611,951290512,701471211,2064844115,673694705,1362962728,1961105193,744816516,2106339387,1612253142,1766073783,1637465761,181615689,1187516270,984286228,1986124958,779846546,1706323890,240490866,713916128,806522403,1156498798,2073685485,163156627,312153351,1548439105,1807981847,1628568423,454400288,528064390,862417313,2084237734,1786020427,1600545446,1217656474,1057460029,278236957,705884857,989245700,2037775529,364834030,61126079,407103294,721305752,1621186775,1447399723,918219120,1806768760,1270098596,165709844,1640057973,1515811178,230937576,1839309438,944431303,1080067805,576597883,1898521758,1931871611,1157871375,500150807,50837000,660659826,115669470,873055072,743470046,1175193132,1644051721,1283237381,710632473,303923583,985810477,705665331,2022359519,1962642119,1616656632,1205372642,401252446,560978408,580896040,986033536,2082893553,1959243660,2024888623,1726332305,1810096483,1468288726,410960779,1823615979,568452203,880119692,891726119,347867000,286071695,2016623870,293271450,911650305,935277753,1768982810,1666301668,530613003,452700040,1689265268,1576216361,1606970531,425979755,259628166,2007035586,916743042,537879852,1256536327,47410738,115728286,567951189,1859144589,1206493296,742991405,415297350,1813515871,1322279905,1147673842,2008292092,787482209,1048430709,627820091,979288347,669204021,1906807244,1813498988,484852177,1627573798,631496411,1502651342,1303590508,607115060,1086606081,464857994,1802130515,1177748868,436521165,1715894833,662984545,1917600009,4805149,1681151125,1058345135,2094107650,1573245490,36998958,428403095,234369892,1133991738,430640409,1994371273,1903499157,1195733970,1941577950,1410218878,804559296,1560783840,1025541578,2125616962,1315404367,102648151,1865166729,1398337942,2098576356,350791552,413797627,1160964590,246368452,1013576756,1602261670,1167092017,588248016,1932102143,1219037570,1478265760,959474204,98723614,419646170,1625277663,1939680372,642221520,1981998729,319584032,1183696998,527976818,589224438,1467510448,1077242566,1304920442,838605991,316107056,384592141,2033197467,1510490819,852230093,263259474,802744921,633840815,1540543359,1552845882,1888243229,1736685395,1742684670,585405708,1339953095,1197160545,768643156,1732992873,1095310771,1050531400,1386092220,341011782,1088251783,2017181633,867249601,1611778678,1988035407,1356093389,2058724501,217061298,962936089,1569296244,506235694,167750239,1721182925,1965029769,1011646607,1087477339,1860298403,999085786,1542479520,290211819,262554684,1454041730,741660845,1002327848,1747245636,1569171042,1479804127,961544130,879789212,292801801,1848736177,1117430523,1943252533,796604370,471632710,1913044233,15516436,749541504,1208370452,1842230905,1275704385,389279024,182304890,1201457901,542897918,163169339,1251189124,902421814,953733906,645529785,832100174,921529310,694464135,1881530404,1964994408,15637563,1024328526,661933911,1218313463,68591698,1370755809,859209782,552444876,1488900121,470407209,112844883,1635467260,1481810602,83625629,1750597537,1654784352,1544624901,1946522156,331239846,1228214344,918736540,275126693,1758352600,1846833148,1518291740,1007222294,1313082380,1422948073,1506868426,1306574075,1035737769,1513430348,2102325665,2116157955,942751345,1898381166,39467188,1825632817,2067543371,1723392055,156662647,679043810,1568424103,905884187,970432945,473725814,1499726135,2011858273,540464925,1670751379,164791207,2084934537,1851328576,2031242080,535375034,1720312128,1121346595,1257105255,567547237,492395121,1089178230,2085308224,1621559657,350335312,1729591117,1315682969,187743861,1454170037,1550676637,833839684,1060561989,1824535475,1015297863,1542950795,1994516457,680136221,1981057803,727244168,1423431793,2010111610,1522615186,1085978029,1203783792,1206248752,1452353961,1582310972,1187080557,139057690,1245559791,1413600733,330185267,1740840052,839351722,2013337789,864461946,1139600204,211808008,73896852,180348873,113763339,1324162617,1292805464,1175062072,1267044598,2105462664,376304759,248297320,11324843,182130454,1334541308,1037960440,1947479730,2064830895,1088265144,1581209557,552534419,817449448,421630182,2047393398,390796681,131515157,1278509366,1822144335,770314312,813401956,1087560419,504073450,1482716161,159641597,976175736,693071759,1325380625,1796959271,666947326,133893024,2094420129,1630742774,1483656904,449745673,1759110364,1442264410,1687488442,378251865,2058109694,1747077744,131391707,1808495051,837865053,489522848,680489917,696845028,1933828311,1342558900,319302731,1547621186,1527306738,668187241,2101895630,1935562081,1484366016,1554148139,1834194300,735647384,1891445683,1824275522,1792237908,1466265823,756039467,208032384,1469047395,1630468651,1689579204,609123460,1667674060,2126199983,1862246472,1173459972,218873947,954600815,995827389,3040582,758989811,408605432,2007360857,806622105,1959033338,57425113,362654610,1939781598,1851056723,817816453,1211559330,1660334435,333557650,2067382661,848424291,1205553124,1434829357,164667921,310112485,1780197457,1813486854,314672311,1496049047,1211962216,637333675,1031843268,523539347,1451436207,273943613,2045777710,363316102,522919593,2096684555,213341309,1826984401,356572210,487913763,69143977,853492728,1326870775,1383730075,1294283401,1968447371,205423893,1309015482,1323170740,1120659421,1212911723,1325861323,1652426030,1165735325,562334942,1077904372,651925475,2115149858,1882478873,927576228,742406776,1588595639,1206269361,1976440955,694069761,1006819046,1017014598,1778992779,1345956266,2061996104,2116854159,205571145,1264171261,302426099,705894247,1645631484,1842971943,448589544,1916356359,1096830760,1892939072,847222441,322962615,1445542761,2061728268,548907629,277776401,227189317,1611925771,1899238182,635721289,1357718235,369109698,61191208,1679015896,1758111219,230830262,723092631,1653722808,31078177,653968482,912582860,249444139,227954814,584826852,1558966046,1826617854,1089749282,1173619038,1229786058,576233561,770404296,250745136,826538263,1822994588,205036425,754631756,56065677,1491504933,2057090631,9506130,1485936480,1473446934,169188094,1612994494,520384718,543237670,316314541,681592073,1587840521,572414593,558586515,1349234151,1793133759,705729940,1906267281,569151412,430960070,1353482346,1350817079,5470757,1002858713,1387959439,210486883,566563287,932948095,949372639,1160181520,1049846751,1376730059,918647359,815671609,500653582,10203609,106027776,1533151978,1426183435,273640730,819081968,1515409375,2024018265,1032438903,1825326379,987569284,1037985611,781294293,392623095,1521903237,1099958847,132376509,1015875313,2020612508,214972342,548926062,595315379,1260170663,100978121,1743087594,2118636824,2032287462,1619135017,145920236,1483259072,1934166028,1038578620,1878275351,92545790,1007029211,1764657911,255347869,1159345198,1818698358,1415545265,438159354,1473668245,115621675,851891243,1945775766,510966325,695443879,850428060,2031448932,1381259388,1075890013,1354690444,1817636108,1000356524,1951291919,11849724,1542072473,1130867057,724469469,1667684238,229035641,257259901,952220059,1270279069,2001510650,537286443,1964418842,1930103394,1492016186,30373630,1945695385,1198986593,1157236461,1703364199,372197743,723004193,503165382,1114987142,1574352210,145966390,161066723,757857066,1739582180,1661384358,1861807047,1990233745,980434547,684612774,1148464162,1813285497,1027867711,737394685,575510409,1463517249,1789186531,845793178,763999277,1205594129,116074670,1097844239,1298649462,1394399219,709944453,1014288110,1038920262,788513203,1672333594,686948337,349336259,649399759,926252785,603055600,1335164094,1498551937,1472292880,1179609794,1794496207,1427312780,695459268,615227350,115823882,898857670,1148220839,87399528,1409573787,523531240,1376587541,2072399130,1692394387,264963698,1484422376,2084798738,156049574,244716404,1903746682,1551788416,2087175254,827700017,2110495751,1606825829,420859007,28137857,1778798383,1812818418,504818659,1824120820,84170348,1184419261,601986270,1396485694,1586324798,2112728188,752729252,1094918764,112574964,326308733,1393859050,837274242,653119677,1424600461,1417064955,1995470468,1064016431,1674011721,2042913241,380228673,62641724,1756748037,180120316,1155998522,27028957,1140713654,1388002862,1152824418,762084474,1297743833,146592133,1447165837,1667073295,964347772,1989640156,1994672646,1463963246,1357234158,1024840177,959536610,557101437,1567987644,1488727678,1979966113,783432823,1192170442,1520366195,1260088902,510342581,1304303508,1202985156,139199947,588571299,432503292,1124286563,780855363,2052095371,2117064275,1015000888,1541958020,654998219,1517543672,1373434539,1100865185,1024084670,1748875171,2197046,1688991267,272212045,1954799104,2038879733,1391088865,1391399077,1079729143,1426399160,400120238,1683665061,2098187175,165863489,718042853,2030329860,2118530976,1607897166,616790293,869289938,381587196,710339200,1337149234,1442557758,516065893,290033338,1676837865,573253966,567463769,523927838,2021899554,1967959329,1711791936,1336285922,309973262,1336609582,557646987,1267455769,425386526,371297113,1040441046,688238845,874304454,1332088192,334687123,793636349,45061863,1298784069,1527748006,291077046,1619672498,2119834168,148055845,330399498,246719815,985454589,1511761165,1313154180,1664280482,607216794,640404593,1025739885,1673834322,1243188298,857916985,1554536530,1323825121,1574604355,1693591187,1013744234,1356883343,137677178,386868706,888896019,121311397,84864857,941134259,2026872606,656256472,747501608,1933489822,1328033320,741204265,1608957424,1159003207,410194491,678951534,31966845,1337217208,71644526,496874398,1504908387,942335363,1255931897,186169539,1599134362,2006352409,1603870653,1426031279,1628224347,2061593184,1095765721,1053690963,1952884282,1341397656,1014204899,1522157598,690904655,842029196,1426031873,393248590,132428406,758317405,652187146,1471079991,1635806892,1390337598,1036657936,1751958772,1745601292,573620498,1096377248,1879714230,338432649,2055826731,160958651,1444222213,98796835,1899958303,977675676,1098213742,1224035159,156469390,80497355,1834417628,2082024145,1869522012,43169015,2025945405,273149271,1658777513,97720096,1528075317,541448001,123817772,380996552,689138458,508885986,545198371,1246838993,611598379,440977984,1469578967,1590488645,1575895964,1294512747,1902184686,1479526019,364945767,1957116382,69851333,1207937843,1326753309,1506304532,527254426,169773630,1636585703,1928147272,1036685110,748475241,507673141,1120860477,277904943,1877028705,789286957,1041729075,2066494411,1670285459,1981975290,1263100007,2092060634,119118337,1044193428,467543133,1184274149,249518664,950989248,593025690,155590774,668823104,934802458,352475264,1056026734,1114889488,822414566,1362422465,641795772,979653003,1595189611,1971628991,2100632777,1264871035,1972594461,2083501476,1065590938,524125436,1190969076,400336188,507977211,1956112573,387685907,1429831324,1976948202,1061308684,1631312612,1114262460,327568594,859105461,257645304,1296689808,152041144,734371623,1490537960,846633511,1599979355,1426808302,148852302,839325258,2126235681,526710466,565504243,915820666,1629762996,181675260,655720705,1795923997,1775170134,1752083544,1561411168,1361640598,822924946,1216923245,1174087343,1127505965,1762584234,1264288172,314104383,1161846627,757386337,855416022,1451216529,1155816789,1268117828,367200052,330418010,1325333415,253098796,779358505,968729411,882310839,1443108821,1473918338,1725260968,1108895949,470375882,1675488481,731315720,2084316941,1522405017,896442902,2014802118,1660157431,1189008806,851772607,981853897,683299904,1477221712,13656285,78422257,1178051743,974322402,1031019615,2012477754,2110644190,155256619,1540512146,1018171276,211505419,1124807863,1373098826,564454435,2084267888,370706303,873511521,841314114,1693119702,1657588616,1770995065,32575403,153056191,1833212270,877346637,831234146,1683053543,298056632,119960984,2072236219,416315434,263618996,1012393864,1718524106,601097531,1271106034,1388827016,903685626,1803988190,1104177965,1874299839,1252809701,938501786,661333767,540971061,1087273637,1203266333,1200355843,1539889538,180965247,940514645,1502462903,633243302,246988740,1755795271,627648406,1341900156,31878417,757919547,1497430688,715014369,210952366,961845898,599944419,1318318552,1003661060,1651013346,1999861250,974002481,1094329746,1094730874,63137373,1458383380,1603414068,1193578004,1341553248,29752085,1589107894,1245562419,1912229549,1037262490,784159661,1033653956,2058131985,945212947,713929087,1909011274,2007634353,1432570297,242703692,5891654,776970907,1417738632,2037497318,551361068,1387204479,1822816503,1481112007,1684130959,826802162,1018095555,1270672860,1141260878,611127221,811751537,499247018,1488987120,644092632,541497996,1527330409,1258480272,678855752,650705043,1531057212,517049014,371802244,520749001,375704543,1401662921,1215918009,1039139895,66690215,1839983921,1866953427,1922884030,446058775,1030378462,706582326,2004543830,247880153,1889410954,115607300,659100680,460051830,553085060,1226086681,1915004230,1075337432,925677802,2063073003,1835201610,1276059979,1878703665,215027408,1042530234,1370714691,1899166015,185459639,367087299,750335780,339279989,1261530490,1721943454,972111547,1974450789,2085093606,413602784,1338875174,492995823,439433999,2089438084,2108646874,1929894215,726851058,548199060,1119502705,1107545715,591543752,1590484341,61565308,1396928706,536865576,1611976789,2005857956,1989396629,1384003677,973905647,230721802,1049404015,88309777,596209652,700845687,754647589,1205962864,1987939423,1840328894,1425064000,1050390901,1074758374,1794411391,1410799512,459131411,1990505075,1323740150,220462297,64237025,818611019,1462752419,35541299,479016668,19916663,754420961,683032776,1833490408,1735603535,957438221,1205394044,1596938879,94299115,1557575202,270430093,1500207429,224566580,1717949443,1421819436,2076806546,1509309652,1258692966,1210347570,1212896693,1415962366,435477538,1493358557,832794539,87588062,1011777126,1302378510,1446989405,1509980735,1273257046,1794971605,1809464495,1881999891,1535130470,1553892119,701007220,99744079,609850174,1891489703,729215109,1985962051,1182722181,1570850720,159502551,1177697602,243613919,1232644281,457964151,1116229857,309013885,1706695132,218563446,2045025354,1301179046,249919341,871047298,1328982576,1173497976,1093232886,1220133819,2027451065,1196514212,1527359092,578631598,1780927233,951443641,1618674282,396898305,212907288,1152350030,1083740870,494817471,2062780533,1111469582,665904152,748749873,1874390949,2013648685,1234396285,1856240094,782094028,338229331,1403079508,2121814737,380814240,378186188,1518687864,1987471345,620891760,1466723681,1024937901,1712650097,260075941,1051646884,124064028,190235306,595775892,1042577391,1430410133,1815082029,988583241,348031200,1562036878,2055092689,891924899,63294719,459976598,825621718,454685512,235637877,775365671,1817831953,2124388843,357070673,1175124502,380596173,403540956,521394483,1683588138,691238692,2040977545,705505481,1861392448,41142760,1438906716,1302110758,182363777,265105299,976866020,1384097568,190934472,126063415,1029633998,635835936,128362753,1239041781,1020953767,756598698,1508715349,392762440,1741576019,1021241045,1781565824,76712195,284738916,1706264080,448226586,196452771,863448316,1706134743,840432665,1440673537,170988280,1830270104,558061643,1036057466,977904336,871797793,11394531,1284238031,701502892,1541550674,317861640,1199576460,1128850071,1622774683,1908698128,864296025,1120831530,771727806,151979405,309006317,171795507,318017314,1942734525,1475670071,19314276,417430671,2091967722,1861658707,678533134,1942950979,1905197020,1014836814,2014595486,516721571,1033018808,6928694,237112053,436950842,1874464699,1745936253,1331479906,1184199201,806919999,1315339895,1344312026,1294401357,30691318,1882215845,329605463,664709494,1954928636,571871802,1154329902,1843513221,405839870,1408875936,904920167,621773136,1429356796,1481088238,1000521860,596092064,130411042,2110707401,1665488166,1004540083,57084742,1690876299,156545652,1551328165,186496952,799095582,1874833664,1786494697,697947654,1063276443,248070937,1033679556,204775588,1580725894,326457178,574826145,1134975318,1754460297,1175940315,1829417155,534309843,1908232718,876228783,984295976,1949171409,854301395,922258309,733723220,993134280,1086898926,445634146,1521923488,983037963,235642264,298705892,737526312,145273054,998025944,474635361,205624945,1289341340,1908649730,220431060,1387748911,1103618920,1864401183,1518056063,486773154,549284812,2043498358,1291547757,1029768935,629013049,689872336,755658589,1773971894,749968530,689511278,2125293768,1261789032,2103143324,941930544,1854334063,1404582119,464361501,1273167291,1269110498,1263978306,1884745534,1648168858,1848847284,1964272742,727587472,1905973929,464456201,2024397747,536103334,1196388855,1370198573,1702544795,419955065,982572671,187385284,1731453250,605463517,1506838495,1186848834,709058336,473310294,211217,1435540145,2045314124,828335634,1890412129,1396711326,358289014,531616721,1243047852,183381504,1835385553,1897586719,2054963282,37117861,1292441439,1775927291,1839993339,616410570,769842189,1451381547,1042756269,441639275,1940765405,1222889885,76559003,360427121,623402609,2087291151,1905677179,562563020,1066332163,784439650,958608828,606871582,1420937577,1639957965,574282350,1498760391,1220536012,254873144,1683008600,1806570197,479114718,1687362496,1954685180,218491026,765390092,934442886,561887091,1754720354,2071259494,86648030,58507907,1720256956,652352891,383625255,209602809,1760031513,735176982,249846207,275392630,764588645,1423799632,1294871271,1375839470,2080548128,1807314525,512765849,1843179549,129006134,1529816398,1760043632,1964009759,1064433349,1621702087,1412137466,1596341277,1581312050,114492129,1636876786,400964085,1163285845,2021524249,761458216,1161574116,1506607774,1802516802,1971276726,91109438,63116465,1916164905,203660648,1841821766,298602572,1139125081,512732524,1740606024,235386624,1462575662,478652101,969549146,619879961,1940108517,1389363900,2114416883,1033542737,1662384679,1607011528,1745782381,933940645,1088706049,728384879,1696177509,1936429702,558086416,1736142444,138119256,199028776,98491941,1994494005,1383919717,809602691,349821545,2103436942,1240054761,1025018870,35621864,1185574176,1676850145,1921691335,1071316581,195056011,1136283148,46501096,654848374,1831017802,1174762221,1692281143,1186585713,485437197,462565423,1829557455,826163397,1340948511,1368935384,1932961092,432311824,1143050851,30144713,1770335496,230571436,1865007123,78951465,223079342,797637011,854045844,1451086099,678833208,154088978,1951388552,1773703246,1265950251,1709828909,1792912419,186723681,1881807853,264736494,108597294,1858931830,1530438175,122767946,1443815854,1166714006,2003524956,1882450448,1219848060,839711049,12848199,1756855181,1762850197,639192604,177701080,776175947,887444249,492431282,19405972,1042308694,871760913,1735349103,232210070,729889024,1742711564,273774209,799811058,1748041449,907326828,2100152755,950068907,1790363943,78482580,562254666,841663800,167466419,1067822732,622247672,1318200384,1985971354,1713127714,399716822,1332546093,1842025906,1312364613,1914554409,1977700438,197549123,1291259715,392655077,1183004892,1370915494,350485856,160608865,1066799245,1293107019,670050982,556982752,30548335,2037740275,798541479,164542902,922239537,680865034,1592110733,298281558,1892608447,2045045611,877649876,1596527456,1104072351,1672374029,1937735071,945218443,1310895907,1884405510,969450940,426839492,1838863918,2002581927,1823740732,248818946,1654854317,475580560,2072413024,917283333,462151332,549341602,880931479,1582418298,578749003,1174157670,272293236,1988703418,1052713114,969281932,2097298755,1784518938,633060675,473766793,1884661314,592371469,1882791218,1920353075,1113328805,1130806175,1389055404,1001865163,622888043,721057936,644219239,964725332,722767312,1905257777,588715092,431860196,1317712875,512837984,1680716933,1533222774,1861810545,119481999,1025374067,2000373722,1873032755,1116650403,1109223444,827076729,46398815,1115137538,1652592301,1349390918,370991941,142314491,858222388,2022250336,1860275280,1290503860,1706070197,1324429531,1993695583,1293401809,1705777580,1697251096,1730179071,713285077,335496380,594897544,878181724,2092868356,619149089,2127717343,195576197,1917292833,1727522873,1819760341,860472942,141433279,730785671,1599214819,725793919,1533954184,451090124,1162657564,214669027,189346611,1751849963,1039368182,269796409,1907741786,1946852973,606926254,1141005381,1999121991,147988521,999763508,1436439255,1047267268,330253128,573877091,993348674,2064297977,199858780,1956553904,1770181946,1769668219,1021335601,379366293,505254324,1196919303,1029028634,391096497,1282065712,1547655731,1703256511,657826297,17458345,1907326257,277073421,129494016,1199382034,165073480,467597777,561064886,114436947,1225945548,263785669,1263225640,227939355,813220482,1458898879,28423249,1119526539,1135916441,1184741795,76570445,1720619783,1347364985,1711068262,2068880970,1817417003,1372181799,1574267592,21403796,1527315044,1256876026,1956326525,1968890488,1734561446,1079378048,1523821109,589952191,994745060,2060720169,225189866,9265223,1884666050,982368728,1534072283,424465696,1928400507,1376770512,1392005719,668587620,1770904261,1811899886,412587372,898758968,1729073106,529548101,175446566,1901482012,1377042919,1176238558,391880994,1348474293,87354085,2037098297,1433931043,497018149,124699596,1184155649,2032690705,289752001,1898418951,2121881239,105463519,581777604,267292934,1863291628,154205315,2096862322,1988489314,78155654,317125428,1570471958,641623908,1120001842,502495236,631690153,551063140,1104899859,1746722774,1196329545,1329427322,1936165202,1090239890,577956821,1706840399,1428919363,1418139423,2105658043,529941659,510675091,135704453,773526295,19130760,330585754,295822169,301703562,19772891,153086535,717071735,1884251632,496239648,1588668853,1797658231,1374171964,1882640377,317560433,1187739222,584250840,1005020494,1565488742,1310506945,459726568,848412492,850166823,1880897381,532465890,283077203,1379246558,1494883801,382927277,465763871,1026384249,1213640608,503755113,465603982,222143423,401006776,836637697,1358597786,837669277,630281190,1832963880,1520762977,312241746,1997017526,884337183,311885665,374360748,1384546509,447410378,1831061821,1325803194,1537987260,310487072,1699974969,1808054766,137884022,521405695,515333426,180517113,2101658286,520764374,803605968,1151653919,1528936069,1392116855,477363543,202570943,56201168,886723994,985526680,535889683,1492934089,1388539156,1972916314,962160134,580032775,621834263,1171054354,1801656327,1741482969,1329858058,1666456503,1202474010,1168437940,48268195,428062724,1346115215,1232849031,960552752,792077481,1288286957,817832003,1385537984,161039985,275221286,987260033,1871220635,1044537222,2073692889,276339500,625650158,1213143204,398036021,507852509,662907283,490544767,1578318129,1308984518,173115274,863138988,841666922,1011681422,738032681,1221449528,651755719,969390128,691946306,1070697781,1033986464,1388884755,1229963763,750666316,1846590384,1755720969,990639584,966341570,563515599,702597813,414807419,1399065124,520583756,130963628,1164004874,1480734617,162387336,2052700600,1307955571,1638453158,1346266257,1518054532,692967026,2047673739,563256992,1817600887,1773663260,1289394006,301760576,1179712728,1809887767,1920337632,700070600,1968533396,1691373723,1377629269,270178655,1297330726,1605005872,1379790605,648510310,784268346,1395989044,263354641,1853251795,4562473,1615279671,697115427,221645494,1880722618,1393712393,927791986,441859991,2116316346,1232439952,1112893687,1985702690,1646035676,556978619,1279182732,1117340492,329559892,656300267,331293832,2069094070,592014002,1952143136,1223819860,532761734,393875794,1207542522,2009723120,1191598698,1720401776,363980123,1908784279,2047442480,152613045,306489990,1879539852,1382505413,969769808,838320229,842966494,936986500,1022512839,2024528375,1382500663,1194369664,994590609,778292422,1325096374,862376892,823360616,1761181279,1710774222,1951346902,1739913311,834339715,1855939622,854429119,413007861,1751618911,1019359260,507700931,1524102127,931963875,546452458,1151489096,1855499565,1293322315,709078994,854854625,111668294,1580820828,1754014433,611605135,1881629543,1985569339,1004794672,1689678705,1479925287,2076228619,1115933720,1847144363,1339868735,1930239223,703630152,936842746,498962615,164590004,1340708496,1466012934,952866271,602414454,1320343004,683233187,17672685,1513188494,1087790153,884101469,380246090,1033067671,1580834022,405920545,1848571390,755967782,26590201,596608870,1360556198,1730859537,781071967,1430683316,1990324578,1407689094,692426216,1066676048,1369277805,1716723717,29228680,1064810109,2130040007,832914489,626290381,276384033,1423387769,411844642,914373741,1780634875,1429050809,627596616,650042014,64279247,1287818088,1126933110,1398810996,277790300,569519652,291183458,1473318659,1232650378,474358372,1223730533,1677566530,155844710,347158985,751723681,1631049502,1733564417,1414574149,813539872,2114050142,691830220,1216787510,574411039,1090306141,1208108691,922596162,472348406,623218736,1003879982,169746839,2084763987,1458957070,1877896575,1198109413,620880349,100890719,40583749,1407888380,1241738289,968094348,2008699237,1173007300,233998894,442867756,196302238,1178602660,677862102,2039425414,710299831,1943052013,1983747326,408314925,1044333749,1252442390,923640295,1219581944,218423226,1885882308,1813529043,335978024,1599866975,2049795498,595829520,1752181346,610086910,1039288446,275730133,1001002185,30546500,796949333,2074521068,578490543,842560056,1691933247,994126827,695651017,1865700490,75194643,890613635,1270807932,1093556618,44108568,1384159718,1803358285,289207240,816027640,1450454755,1312410876,833260126,632981091,620212259,1813163657,1238157014,1303913201,882654929,520811737,1304254440,2000869377,1215529167,1388719305,545438680,110073331,1596478385,426632470,1944643237,288396466,842094932,1129413457,1882725678,879278092,318571139,719179009,126891813,257353310,1279904216,1544635078,172641368,844676776,1654749592,1479301763,40096344,1469816373,1733042694,176978286,959588622,1868806229,924683132,1246178334,85336427,2091230206,705635502,1770044265,1959340487,613826967,390805715,1297061403,1352051283,1224606944,1345193656,1106567725,344197325,2120132596,2055255918,1080163955,1549782887,372710901,1405833644,270934639,1806416770,1696626107,992688709,568253569,160356118,1405640302,2120274158,2043774554,678908643,307466903,1422887174,587794253,1013321563,1966884539,1699453137,1155144528,1034467792,302820723,1772748901,1166669773,1030080371,400821725,2086372813,1406835227,1749760945,1310125197,1801911465,8033755,578322014,761882928,355415010,1058876364,384789209,499933092,620844368,814551447,2051528979,1162877792,1776308841,959829477,56159748,124248024,854838386,1291121408,1023711870,1126785162,96157180,1734926473,719993831,1703278951,103308440,274478674,1344276348,2020318236,1266859066,1347415963,563044823,498172870,1862739379,1492066335,1711359311,1368525205,810503134,618874834,921711550,1729182569,657108950,531290116,1624833150,3727282,2084707692,687155684,1811375615,369520298,544179501,579161038,1194324517,441253293,126359603,1983578472,1339928773,743467110,349631208,466797438,52593204,394144401,490999836,1994673190,1648920199,651060739,532543959,981006545,1726983768,438476740,1780434275,201553182,710707140,796053158,1588952877,917695853,200983589,1754379912,2106015844,1806523180,828738892,1279104560,190173596,1932741306,254823560,1616166750,1264284883,182525910,590676522,1088665678,250214680,1959240878,2063949183,1574134383,978607975,243447228,1552744994,1267063314,1005435002,2087029955,727746352,977323886,851146214,1348856676,1871818170,745285150,1582850725,2026703935,1310959480,1096457103,1446161056,1332883640,2129183014,28492824,2839340,502998497,16380382,139832591,720881771,241265940,637513365,343277001,1256587044,300978158,249126863,1811347704,1378552036,724578438,1721417183,95967779,1350194387,1922117564,297774691,214404387,1361448334,1411710917,1823683709,259386744,1006113771,866259971,452419873,1033789568,649897628,1508912949,740280849,113087357,134440562,43977660,202090491,831691224,1039609247,1988590533,495680737,1993147314,1067565941,2116768976,1785388339,364064827,933396616,867423464,1257375006,1357369729,1117450389,597647841,1337448866,1846981105,780685599,762317980,1430799831,62978887,428736833,1076781514,885241866,1710450801,109884588,931353987,1115286623,516559661,1466385743,1179863479,1998200097,1360050201,236473704,819398632,2094751471,1618274497,628660494,373469760,484608720,673646673,381981778,1050235836,1032414560,896589695,25290271,1240244841,557186502,1386832645,971317842,1256206407,1921668779,1991739093,723596832,1591735922,275894915,1065127963,564503058,769974403,120980300,2037581825,215919351,1529244823,1416054218,1028498146,1992846707,1574103917,167339801,1818597958,1700342238,2045385798,538682789,141539512,245848568,274748959,569767920,549417238,570455644,2062132804,401206342,1036262769,1029641946,704647925,311484018,1794500570,231484109,646980657,847594697,1286557846,1283724138,526994622,24850186,1406877400,967539050,150393014,104802232,171400938,1739813920,296898149,453571178,1075018457,614339215,1804257039,2011376282,609863944,82502059,144272460,1208530897,244825563,345545448,499952650,1446360543,1995523257,1320715992,321493239,882053486,66174613,653257202,995251341,1441286912,362947888,1638836161,742567680,1572227263,1263600286,463641823,1671126384,1887062103,1908644716,1669586957,1291878634,927617988,977363792,1701267112,420849306,55443959,2073636817,1580222385,1897353017,1479406720,644347738,912528095,1029443586,934858994,667831223,802366563,371807056,527399265,1250418059,861085425,600074712,496781640,25699813,1631723352,1873650355,511691345,214386291,2130176381,1260219766,1662509698,249421543,431524616,2010879670,1092985465,830416557,797591903,669854282,460896362,251578592,1278566982,257530831,2111132446,707776982,2081722819,1701975532,1990731630,1721967801,1959501274,1210146746,848501147,785546309,135244252,1638285830,1296951196,990168875,1077655684,1946562849,168250809,1718442910,593948632,515935719,202107759,1403744294,1939706494,906780075,11584818,1658651386,304940233,1073129636,1200587651,1172428540,1113072511,77469041,1683949194,46713646,2113512809,1220704427,996653540,1115271079,1758705466,1594685057,1587372479,1734140388,655427566,1613088662,2075605540,1884065235,788019950,504470239,1068458975,293766228,265985914,863681497,537602654,823909106,309688776,980719679,1331554065,1475204849,1938314709,150641284,1537669316,1425710245,1350713934,677394071,70404903,855390694,388267430,459011392,450975944,59132067,339931615,1332447517,465122612,1564275110,29795407,1354949463,252135887,1209591903,1271333962,1187522956,766259090,1639656229,1333536426,837669483,549491892,390524766,1658805593,1980240586,136315975,1634060618,169609202,483291234,1463704874,655214495,1976410050,1723604674,1833601580,974087342,1582431685,831825111,458414615,483954405,1520545684,478897342,994914198,1235664571,1302581793,651309971,1938790165,1884279680,1543153735,343069270,1307141019,87115934,2070015991,622841275,1214891804,684183777,1704475897,1973570079,1142254461,1834788677,518669137,753450315,658983301,1805763229,1075178321,649218912,567336512,1645825850,2074401585,311289630,3715370,246270235,1372959968,1679895851,2029705396,390022170,1774290189,560499272,504516940,1675761105,1110092049,1148443735,765129769,58676630,1785631612,235730602,1993964855,690588322,1226299585,916093521,1656144649,1935182237,221570372,1834278560,1256743138,1280274107,1486187660,1069079490,1617748998,1123991611,516274946,199163802,1800218009,1575244574,1852687725,540092607,117370121,884215247,1075101436,1013336463,1664430542,1616105229,302705954,238770462,2071316871,1213306399,231172285,406675920,1411131851,1117089954,2059899549,433653493,1948735246,1470695040,839621901,238204012,102379923,1744835917,24642399,671829912,1395012317,1985121140,742823139,1555127764,1819584821,1523673564,2063323129,138777905,1071705275,1327952802,464956125,494648406,1928618930,1077373403,2010694530,978384450,1217190555,120076131,962265409,1806137255,382222893,1144256260,1339837035,521144601,787232300,32406021,102355223,262918992,1968010283,129356133,169576895,1374566753,562814053,1001110466,1520573545,1618608163,1325608607,1264754572,2030526709,728644357,460842397,683277448,946636794,870194140,1967847105,1201258242,1090287802,366295021,1885689249,1004186743,1508989684,589107682,1980112524,602438207,749814782,782420470,1508789811,66767211,319372544,192047557,420714639,1761148037,1629778800,315083041,1288925747,977258085,941992901,81228039,1936665649,1328494740,189490028,116093340,1875799293,1463320285,1631900492,1624355317,608451616,614362216,2078383953,597755218,1197197984,1638889636,478623441,2008365845,241918686,99977039,2031452509,1779396454,188254526,1122038385,314337318,1002161566,1701886525,1589769346,408832716,1241639548,212101515,1869229998,1963921396,670363514,1880338472,620775417,1230200486,1572189705,1777597852,1732070883,671197089,1101417699,1071523053,1245536616,452423503,933252681,1267631065,1229331248,279326955,1423805604,1237606935,1792781357,385482943,39849870,88441364,780871879,702705190,2105681533,974243124,95796814,1267682557,1827157193,1399722141,404542053,1014894181,179704653,1959468662,96974904,1598736482,761864117,1090617394,1949881520,2047918176,30588032,285942194,377269322,763433135,1806137792,460632743,476721938,101382273,327571909,828702550,2115369893,2050525246,1095604938,224515588,142318355,1719003815,1803899774,2118387514,90254595,2065857878,935503475,1508430255,2052825858,1147840791,2045563183,1974175290,1120406417,499017593,476661267,2034573871,1473548636,1348838655,244210394,776076398,1746773156,569763791,1551987543,1772767542,1723366102,530092366,1049949001,1312363600,1349971926,1400114815,135359500,163502522,1685644609,1125987419,1439569677,1648299366,37582804,1000185274,1900751831,433325280,394324147,920905521,1029564055,720746562,272691857,14610677,962665751,2022991706,1697340816,508787316,1977904533,1185038901,162569107,210809481,1426249799,1705009702,1027180840,1334943059,1249446669,1428888155,1864688223,1312140903,618067331,567513539,940885257,1659149329,585167004,1252961982,1907060996,830770682,309218910,1047205099,597289579,1368675476,2006918986,913402302,1626804215,59718113,1545821857,1402088598,113124569,2057533601,253560564,751115522,648884460,89866672,1074999823,1794352698,739410035,1190569353,1717501135,1455145572,999534796,1790864475,1100526561,2109031656,914065793,660774513,750084539,1560064074,248558030,276701610,1066570830,1876050681,286304813,1887785187,663984749,179950356,1182653960,1914640668,1777431838,1540157106,1211603859,1683362821,1751827161,1731010852,1935105315,1183931101,1940018445,1920765872,1457207070,2006280970,1447145100,1052667618,1722436538,2078698479,1952227358,1994475913,402922589,1519446092,1167312553,1502505748,548777689,1641659342,1410580989,1256972739,1153005141,1979052575,1552059961,735806570,2100081502,206828401,1845182573,1461297661,185527808,263166489,282474068,116932109,1707277427,245120026,1488350883,765138186,450785974,1041825210,499439516,92037683,2112943127,633516447,163398169,236741650,541600037,1047686895,1775104190,283797483,773545614,1063703656,206978573,1629497264,2037063145,1048198073,355363356,1817739368,96894992,1439881248,491306781,334488191,761929965,1140725544,984718895,733666664,755261862,206482879,865343308,638693574,742257459,684831329,2125723229,404087428,2047495707,1016099632,1757396481,763534272,1423248376,1858087665,1351960014,722662745,1478479204,850975509,1936273994,1777826438,1389197132,1586797254,1141961598,493002349,306523751,1685097787,1226041448,1716759510,1727863233,1314302135,205284890,481898278,1198124923,965516087,2127742972,1515348485,373524610,687051133,1706800541,950149886,2059824386,69044901,1418043671,646288033,444412322,723136713,385508407,269885229,1669066813,820725546,1344306204,1902455246,893012421,1804461422,1190608628,1578692269,1440144601,1639838496,540184050,2061089351,815671144,1345923061,291268198,60837878,833483814,1140776895,682116241,951938781,1588032705,476905793,657192716,641993404,620481979,325408556,1936686085,2006991642,1381472915,1029786162,98607171,518224927,739695118,1663097550,1585537302,1399355469,422648836,756164927,47625535,17731753,1081975762,1483375658,212764818,1728472068,900617211,2035650894,1384109813,1041321772,466535310,307750633,1124461762,1537375741,165478226,649738795,1126137769,1211842333,1601855988,1444936219,407084107,575225934,420381133,1307396328,272342179,1643996155,531870842,658982843,1329094925,1141467152,1474162114,458781697,128033958,2029870443,900721425,1033468242,415266405,1913494496,1587381577,1792929270,1773510313,1187921385,1590058375,866881368,561109324,1526736536,305749788,86586782,1242375606,35956979,310915351,1032941198,1368912960,1436268178,1948085482,585691817,394376773,997593811,1600103897,1890627055,1959652430,1886038182,801840651,1528324859,397780259,1187110958,1480462537,986699113,2002092505,2024680347,1773336358,623114458,1578174983,209802182,965822718,589240536,1853900138,1435744057,815324512,106954580,1412648777,1778131424,2054994927,668220265,230466509,1640588829,1832848020,615659527,1591214424,688915792,703485446,866905911,450810882,614304325,517479779,652490757,1212970040,543936985,1417737272,1242000959,1161833471,342423622,94536933,1897366648,658757267,239685126,866540990,64849270,955048285,1970816497,1102196704,651389611,1064125552,1631809976,1305144065,431734299,1352123721,350998808,916785412,898109129,736902907,2100677691,780631305,519673120,2005867214,463559805,46062272,1095262884,655064518,1115952417,1987658093,1246264219,107985414,391031264,410889431,272946258,2128486905,1950821835,1120162177,658300669,1184989458,824366154,2052765810,1909503801,88514407,786302723,595402015,139684465,1744377231,272556125,1600695899,1622805371,1213615365,1507153519,1681635432,1897391940,113552157,1411330250,1217251249,916750244,258045591,362065082,1565711304,610068942,136825594,326556342,887925369,474133075,1490935235,1313650964,669478048,175623940,445347849,223012970,493984985,259941978,1986730982,821570326,686416533,840010683,1346216951,1892599009,262303934,1623968988,1239573186,1547676818,1506408032,1232583554,1011075781,641861189,1849288704,1875063899,528075695,1633495827,1305750239,1694054488,2090025438,1424288739,1723402821,1675903584,1151835802,418852856,890088667,1184945787,1280768379,1821310727,546390588,587417013,1481137055,1859512318,721664038,784715172,1707038310,619504835,479280519,856977149,1975560714,1684978693,67265111,931629518,1987517618,1787583131,1733010633,73621153,898654559,620751257,1315550757,1681273476,1578085834,1911348550,43681547,648008014,349577135,788352142,1957442989,1988394220,1589328909,1844138582,1340981252,786270696,325389257,163060094,979676482,1074790573,590597333,1027924850,2064860221,486786551,955428760,317825263,1179826616,1755879078,657071858,548281877,994529573,917126653,1742829971,703068374,370890526,212112816,880291654,630230415,1896731749,1752408579,318606886,88923149,1120278484,2073274615,1988036798,1779106596,314520404,2101083335,767128584,1523189645,848158528,1320729063,209058950,785097547,1414664947,1079881600,445273548,1671040455,27081167,339210592,1194955674,489948537,1621245926,490877814,33840189,571954751,1389862108,1800056005,1320575056,301110815,1298392535,1321774916,914555675,894165516,2120812933,1111722278,728850856,1171754966,1371059317,273170494,281659986,2095949383,700069806,1549088617,1732363617,399423455,927317927,160470244,210538896,547927743,1371719279,1814281721,350767838,472146899,545197114,1806908257,1367158850,1065639077,1899441209,913577365,197129370,803110952,988660963,307867210,452780454,404021650,930619011,1633387431,152982046,1422644615,834208321,1122972270,1069321690,692157068,1988975840,13824231,1181475956,362612884,689610044,676007051,2026825860,1621736568,1308829053,628553775,784313556,1322221803,758343208,1616851558,1069075846,1862618399,1360011173,1077852222,691022562,1895566186,1427634771,125587222,645036261,1157763248,1614644182,1890422472,1530494213,1029038629,1236821604,736909970,253355680,804927453,1925283021,425687140,986131664,86317449,1293836414,1181252650,919377657,1864096163,1914932242,516491882,149778433,1706622596,1428579405,204129439,1358577474,1706898693,115250020,185784470,444391314,779462104,933422578,362114706,754638549,1170743163,1448843749,312736826,631581705,1223140204,410400516,1377225356,1503755160,1399777409,677707824,813019298,168399908,860406789,622546494,853766696,1913245091,366381585,61575427,1151697340,1049492393,1709676786,1365554746,1746465381,1326671906,867750090,863497796,966931160,1233860585,516837834,1702539945,374488432,329628746,1220279387,645920549,1690392524,1508778,741139318,61995791,1526023391,1363285241,715276502,1598668777,535294588,642275777,1446536978,461904322,756797619,328328197,1242335778,745507273,1235964874,585244004,346041016,113474764,1426316109,60992538,702650704,1034719072,975190024,109714902,557064655,714931305,834511174,1264616831,930488206,1041409234,1201740058,1624221304,20541035,319219622,2079564403,326898518,1912120826,824590345,1205848751,1060385403,1994078811,583412485,1303187649,861879369,773812478,1378287292,1112871155,989491545,294136362,1726026350,844595827,272025559,1922622598,1693663480,542089695,1067448145,199880322,1461373698,1659711603,1739975841,387158908,1503856858,1264258910,1719287133,1151000233,1497106234,940310230,1875240338,1626703274,313789013,1966948739,776980791,1072982503,168980845,644540147,2072433087,632758460,563792703,1131359536,1774584111,916363568,1042535714,1060553886,1293072139,2128731033,91680457,1377557809,1589598808,1960489343,209430490,1142685605,445797037,2083671304,188986246,1114778444,1521736537,278284328,38434313,909043546,1801323648,1293818061,818678192,1768980239,480958939,1939117357,1939191166,724238405,897906385,1921407087,1713077870,428934109,459881282,1955671076,1033748762,1860196368,291884395,794634477,1573331649,410564369,1107187661,444665906,2013384967,1302007586,587145435,869055481,943372387,72261402,267092402,79807934,1160475165,254696879,428634575,1987868399,758424367,271415728,90619155,425762995,454695569,1510837334,1045497777,1411630231,483060241,1852601989,1998293622,938342324,545941727,437622021,353850098,1579094939,1968519669,381214969,3059290,128457903,771584350,1680666060,34383860,2041921381,2014335547,100277097,1370908080,830973296,1612193254,1158622787,117307819,1552361660,1780754315,1422924397,367737419,1275738747,868927480,1828630512,614567555,1317154770,1759762104,932722240,918069864,1567252231,2061756222,2058158881,1370584773,35908092,1803691451,881630114,965553793,366699181,227813636,390387158,279869203,217291625,1295509449,611683861,406961765,1455653047,964152195,1511299583,1064717832,170327056,286662736,362755602,1627244995,2100098007,1467966373,735886789,187448918,717985322,1445544881,1495019257,771287232,515163779,364979506,362276274,1196629215,131079752,146914519,492308100,1148733860,1707932606,94986062,2022256012,409859977,821044532,1622302599,1782837538,1435910210,728383032,1214226800,725299160,37574122,451850008,150457034,394836713,1963278497,2099750769,1010910976,365104816,842570303,136284776,154511701,340859520,956013541,909677219,1885797916,1030861608,943613890,1188001270,2074208670,207191710,693964118,973261850,1163236025,2094175732,1575039812,1205381859,534031649,1732135445,1503249743,371050745,1617795960,1781951872,1213389478,1162895591,1339494471,667396766,716783465,1804212353,371194176,1947684849,1409703781,2096978275,1199423200,253838966,1437866361,1345537544,1597753613,899711393,1529088014,1529020810,619562876,1218943426,542163654,872652505,294299011,412307629,686463471,936626064,786006921,2029223679,1070079556,1763922161,688602996,777481613,1925494231,418503738,1683223558,483634704,143463050,364982762,552914288,2052416587,1388554733,454602487,2127640974,134831480,943284269,1075303635,541639183,986823905,13095563,1476942145,187146830,782210982,1157444996,698336446,1126744580,1638362242,1933393337,676072220,305783493,217487822,132620837,275337347,868676323,1740738258,643378550,1212296446,2110879105,708573733,793396726,1622507843,927570458,1511837811,1634347569,1759517332,1361768171,998113928,683338117,276024438,1490933500,1773906187,568057475,1482841945,174009437,990549201,1724518181,1860485972,845517348,614441775,234026957,897570681,905729628,979728472,1864558906,1590792066,1714025895,1731955917,1085228736,1455884558,433396494,1417437533,975198111,1314709092,2113117448,1818783922,1342103444,928519417,279264194,481846315,1697710822,1275654803,618007284,1465664017,2021908088,1497880046,153183583,1477750580,494473080,399818401,320123879,1966779460,685223163,436702828,977718624,78453480,977237481,995450342,1356999363,1128244568,698852950,1117966418,622850117,1411541727,1221207189,757570443,1606010927,1507058763,1058517837,1345651910,1987660152,122578799,309913415,2051397654,1816376762,1301755684,1480077567,1204968363,1629371632,771927498,643378033,1268789580,141259842,1028725605,1203193419,2096893718,276461163,195090005,249149562,632110217,1502421473,970304589,1170009190,887366152,1065099678,1875382699,1262818277,665288112,256827555,1837877333,229897939,2122261872,1761589707,1329611402,1329535705,418235178,383753944,1147837915,961551866,218267375,112712503,1243235782,1461610444,582332184,1608627825,1406300057,395685906,977850511,1515398274,1475978883,1710301036,1224626590,195453640,1578336331,717942602,2022263406,25833932,356301843,504813318,1336270002,637466475,130743225,2096558202,1498666414,941682065,557784717,1807238076,915286091,966676582,1877881370,526840509,1197584967,502469793,1739030929,1897331288,1019647661,930814076,699502583,200239835,215822011,2092683421,1456160351,1927091078,1296361738,895677752,112581353,700034541,993425501,1229467300,1630717544,1587500641,584262611,1892719227,61122901,1633937704,1224390772,1134912521,1131592386,806352493,147434619,1570565358,291249102,1419668015,1564280350,1664383695,1310037102,18113756,1930422993,133582384,1758034528,1506994273,1115893979,1364294345,1000334192,402782331,717404918,946205992,536354102,606292971,1542891730,1366789099,228331803,413210904,1480227695,1486725546,1929166748,1905444137,2035104635,1600011121,2046380599,1128266339,209030330,2089923978,41556455,1091236961,637428953,864729263,797161518,848478065,62160410,137556173,1976181243,826991318,2072021276,672787211,419936919,1056388124,516144093,191950926,220468716,1780345472,1620960320,569015602,758170953,1850579624,1469146049,2055710605,1755232677,1953995572,449898033,29757382,2099272494,1849945088,133640211,1407869216,682889190,1364105465,155918223,2053625751,588915663,1483698597,992185839,784716108,1475400820,171993467,1770050548,1512885910,68018714,2044421193,318320109,457431151,1168129299,690713666,1663914296,1392770637,1466442329,555053259,2027149459,191895116,306883886,749180592,159460994,835984794,2010823791,19696818,904938799,1673374023,1176219048,90269678,1599554167,323157389,2000541773,666324898,493080270,492174772,1635803322,634821667,1874064183,992577101,1769937576,810920940,1833436008,589582354,700377804,2124982002,1763866181,2063922115,220150574,1301259511,657935141,1552370144,588887325,497771620,284237608,1652637525,1461258708,2049719195,1340966801,671235627,220894116,993308260,267817694,390205938,1239467050,1040353949,877238710,402804503,1933785910,1507164867,1772648313,1700911719,1880587158,797275930,1725883825,2070253442,524989982,1105777724,448696577,1490471119,2085502076,16442429,1809578048,128642445,633069248,1630244194,989607098,526667312,808222208,380514812,381635065,395354641,503944523,1864433990,1196025747,574647453,1131672203,471794451,2117148798,1355776426,740111874,1283064403,654260224,603780048,1828307502,88915262,1848338726,263486321,537390821,1356147086,669691545,1613613146,1043003470,1426923485,1012263117,1260442196,1753032521,1262345889,2026457579,1360951696,1524004780,2016308779,1454547708,238344344,1090403889,1093814379,1980026603,1502493738,1508196780,612703769,235264064,2002531546,992507114,452779819,1942065001,341424219,1129061760,2032410081,1936649749,2036230247,1295483672,1782595157,1036846239,675800688,641466576,57359702,273574603,1287868717,1497505759,148268607,1616056767,1168426584,1183001348,862830070,394884872,700846782,1339181592,1790312184,1128832529,127404972,620428996,927170032,1301768473,1577700915,71491986,105816276,892950679,709630840,81249790,1166914552,1184574882,330563542,1680543781,419732081,338026272,205747443,1180662994,568265185,1508383265,754560265,1910782632,1672339783,1609054457,297797502,1060822252,1581188120,1045540957,1117326767,545921900,977823346,551365774,293963893,1861027785,1060135861,1792500213,642739629,2003970090,544935210,655494730,501380960,1913477281,958528711,690336711,1293778482,29683852,1838814683,1366514789,1431705241,1921786583,1399162338,345922210,391983420,1775514686,347234897,1981195746,1308642570,949691985,1053156688,1324709840,379150531,329624799,627657301,1386489197,363171241,1311104883,254209324,543683990,1680068616,1095591253,765020021,1540797371,1763441545,1304987301,920372482,305357965,1547621059,2092158706,1767401230,1337505929,155695492,273054586,1506191716,1603893113,1130906943,1062442799,1800193582,1548586045,1264405537,1619370563,1824209073,1618819486,479849472,49584868,970141008,1430256019,1063190300,834920315,690089127,448887327,1891699367,1317877066,15643830,2091001225,1656353348,485284912,1473228641,187342549,239607287,1733182028,698471473,1316871224,779159859,1120055108,413112146,426718135,1900709872,1037971806,750139673,368673203,1261900581,1141117157,1122231525,200459940,1051592295,1405720825,1481070083,1072862517,1860099033,2073695640,1475184017,1698867629,1701501701,285413093,968456994,1006956599,744747734,1027567949,387123054,594727102,1945911465,660981559,1013678,297353407,1778907133,1933147606,1932484797,1456813079,57481114,8698703,1814312813,1046973118,1257576601,1545640659,735247993,1959487580,1787658460,1978553516,1948399725,1162334730,1985232133,1608291254,1712439269,1229006571,593271094,129459695,582010625,1019992463,1263429274,449159952,1984128782,707377896,1001446083,1097460446,1420925247,66916425,1081866360,594462203,1419780285,1030119635,87143757,779091290,1124681499,338443510,1645884600,229349666,1224014499,1707144914,15722298,69132611,1152394730,1044120099,597010653,356618764,254111550,949988544,2037893753,637625001,1459309729,250226153,1053705814,115878537,684210706,408283232,805861532,717856187,275074483,1845336665,146721568,605249384,1968171460,1545034471,909034537,1563554240,2129325783,649472828,2034427397,305704357,1593203031,1692337601,284462806,2053947076,519105825,333246583,1281030870,524209678,249375628,2007483557,1864095037,2012574865,827936919,859032032,967214264,1064236851,1481683758,1358643514,1573915547,157894441,2080723123,149098744,1098635933,1794841189,1659061601,2103993851,1895519231,1814829725,857709933,1168392467,1094557419,1963955537,1662817672,522038731,1195507718,867100891,1854691564,983037231,40253538,109715886,2024724104,1431037353,2094355415,1725186087,1121216878,2072867291,1539084064,1114316558,1574777872,1000351832,26393510,1030545051,469548484,1519251346,1663793358,599704857,1893478355,1836258546,150266837,1572271586,1380354212,1185123217,242826580,1926573928,1141077085,1827867510,961691877,1445168924,939408243,1523151612,1692569387,1755841376,663946634,1816295300,54078779,937689030,1478307797,247453639,1014303138,551087937,333065939,565508051,1399436706,267069409,89399777,1438117682,1548508132,1074888719,442376910,1621482190,1950896974,2069139858,902859576,1133455959,136467542,1660420342,208619518,1658217443,173133957,625328421,1200503131,264694211,22275618,1293017488,1278876158,1424697485,33497579,1934527681,1486007860,1068966859,836561371,906748129,1645064228,1181915602,1800569000,942272699,1158709261,838934661,789908430,210638585,1063205729,1951662812,1925791712,1768115892,1634544981,1101351347,1014388287,582616555,2031390896,1101025092,1702821350,203178414,271910179,2114016702,495753319,1626350259,506452887,1864138541,647669394,628109311,666568305,763971676,1848604416,914821659,1406254226,1010374774,322617790,1465075201,32543957,1294757184,1153718421,1988821749,572069203,1075101922,1703573141,1153650310,1621147977,1149012820,1261692763,197746711,1719123021,1995511766,1946718745,1877375175,1195704712,92487715,1959745785,1212747096,624525702,1808039782,701155162,1947925788,1263421233,145553378,466773622,662229307,804392366,1642170804,470514722,416204793,421955361,811309045,286024258,970512522,2032073631,2072093028,1977264318,1135750136,1499391694,1050768672,2007550726,166341353,1996207566,994510685,439062241,74987715,1109296279,822724342,1925536873,1283989689,644940535,870652027,1047032234,1687797603,1965924290,186883129,2047127314,555295645,1594650677,54518147,1587164867,1294412729,1504403034,2093951227,790698584,1827781161,1268947523,1161454478,864156950,979580200,533062517,1066130219,1966475090,823649822,1140185655,391026447,1223335624,852518153,2035799613,113960518,988162800,390089018,1794786402,419516075,643661362,676951387,1909142800,904356452,2093096723,2093475516,1247505334,1198007616,1395162446,1947534873,1424071431,91330933,241551965,1605413533,57645669,1798502132,939953694,1145237319,1968039311,2009060612,1178936097,1794090168,1718114025,876817332,199259571,121111990,1780397172,765670047,2110884534,885284619,152205199,538311221,377167208,530105055,255499356,1002661822,1416597988,848728235,604012361,878705033,1184894425,586839496,1812308571,1280730944,659382375,2127473103,2110446249,347644125,662150097,1470523553,1681508705,148336700,450815225,948870226,1324875276,661950477,1584754376,1706131720,1955913384,189332649,172442028,1738705768,1574454710,1308579249,1587270837,370185527,1084426460,1537917724,1896966803,333469765,207885634,1802002832,1590153803,540676643,1778177758,2085315088,1990824331,938267809,638026062,947929063,589235546,179462411,996340338,1725203740,70138448,1678912509,1692282113,1015191306,128969981,679185051,1471859443,496341588,1153948714,1047310561,1049747525,1673933273,1971190409,1066894446,1538124069,581551352,635055234,1026787504,1415910826,1574919532,1310236682,1722860602,1645789001,78568261,290476634,1421674445,990181752,55113997,2048108172,195444758,1946456643,872021348,947656477,1742645679,996783430,804086329,1970677460,2004950081,204612694,1985830023,1533073845,1157040837,664387338,578971160,235137368,937528470,837120808,837162468,100978689,1015907116,1244110863,782266132,2069481449,981172627,581273394,1695222601,2045042859,2089709539,1760485244,1688468158,169908657,1512276080,150957476,2108410948,157671376,210929825,732711724,1975612978,1931279601,1304848005,74364865,45540127,331809634,1856897989,600501238,1988455812,1469719303,487998527,206466408,1942537133,1554460606,1571714579,2049735964,1620230947,1142755780,1477256654,716209729,1652293308,1439345146,868014538,176644657,1316283664,1249482052,1333106500,20052356,1471747203,1893358955,373830353,1011316781,536090010,904550473,1664500774,1683740930,1737853669,1861617437,359120696,1678195414,1100761426,873519562,76639185,725340800,1543778156,1330263052,1889202588,1103705675,549972395,42223287,690716135,1458821579,1318774802,537104564,911801195,664850055,1917381663,461123070,487247224,1532734500,1364533940,2011052636,1467842945,1105981180,1436129577,1870179902,1030181055,1658748705,2121772888,239926390,189117268,2063171745,219074402,1538098273,950044003,1486347591,373628571,1477191824,632744171,100660562,1591629430,1848693883,142957399,1925898902,1162246802,182336517,1311513118,1488750589,1402917091,533177963,1745458243,1286864101,388579510,1329768989,898914952,1388028575,203451374,831211610,855496021,2035077899,198681273,1615673318,557858070,209369546,1744516977,1567027136,405948566,474213106,1323802894,2090698877,968044871,775364875,928963334,1198707193,1162258697,354859618,178172088,1553124715,604085455,1913379918,262722688,1344937871,401837640,1810697182,1728849063,54630381,574388181,1664005127,807504044,1612165494,1457929565,1615291555,895521084,2113700142,1427288756,432771086,646889184,735847620,1515720458,1633781596,393716511,339096396,330257423,828052024,678890390,1551010949,2033266919,76893810,66710163,1085473225,1188819294,41159650,473140789,2089113146,1005811213,1225652686,1804731666,790040126,906942088,1850332248,1860063669,2039801443,2108474910,201068526,1656375346,636094397,1179983904,126983670,1111906806,198666192,1454012941,1147435183,584628899,1917624375,705480398,594623609,1319632932,2006089278,478819449,416894498,553516890,1739017038,131165664,990365015,1714611813,2038877356,928032565,848151643,2036695087,1792575382,833840125,1622385287,603952349,1778379335,1038986543,255693900,1242067998,1662691447,1405786739,1603024012,1453773296,1848005694,1794789770,1085962389,1257913832,1675165983,288949699,2106272557,594706988,251290534,168772725,589182627,1680856547,874406453,652902729,1761038982,1460599461,1387203492,1783492641,2041070223,1040341985,1053067445,434469152,853521265,105984776,835744323,677489350,1019485671,1639466535,1086431509,389687303,656303867,1488662230,999151198,2087998339,959080801,1294605405,2095237931,302539849,397228739,1108929797,1907193943,787390743,402578370,74387638,1245221990,224085227,765025642,68164423,1118999717,821012917,1612564457,564476562,1518603480,1500488845,342836606,580828267,836561718,1541720694,1570956218,1538571612,1530172985,300263502,1063999820,1481102483,1844844678,678378555,1222429409,1813174893,1315926285,1071852461,536556545,574201230,710848683,1740977384,1936588727,987921533,135786395,831405358,1503795500,176080470,829469291,660032276,1935532006,215201588,1058385982,1707751339,379340433,1712023188,962257701,1191469790,893642171,761004026,906789137,1127887419,272374792,675564509,576720222,330919891,1261943351,77866299,862346337,1808224051,2014770017,950344753,17574851,697799981,1679500755,163407254,142472807,1951128630,1653789804,281647141,680783556,374302683,1586359484,1996751933,276941404,412154843,181686900,2079044946,1607735804,1293866499,257651972,1809134083,452021925,2124073130,1005525399,1544245927,962420886,1670820915,1957190931,1171873860,1026526737,1790172193,1758632202,898257391,76564027,2092512462,1691788949,890432755,603026615,833333932,194877898,2002514870,1442621068,1237272868,1951779669,960025097,1526542012,2042583632,46209079,1644500129,352866213,649242626,348748810,182738685,565166495,1908376724,455816055,1306654419,428471000,1899973161,1540773569,936219319,291966341,64037897,1048632582,1705381553,1571314423,687917028,1143682323,1702866750,619791697,1732067141,229018971,478509708,1315820174,6745317,578405480,1536188211,985010493,103458329,59414015,1586463255,1192608656,893522789,1941641790,112066819,1336206427,749625796,122581656,1159946880,874151431,18114103,1214477623,864008151,1453731064,294654233,965231150,6985125,886411089,261293963,1726278328,956824507,1196820845,921853615,1621764588,1499648326,106436313,1675712653,2082969199,714861287,806088388,1870138680,1174966314,1445300869,1991935149,1771826404,254301733,479364443,1321980925,2068010146,434308799,1235473455,921515232,1854859151,1282500100,545500596,917365282,439030753,2051411192,123649504,1761164240,117417011,1712438286,1593929397,1900894325,782651077,1512528509,1629707584,672775572,442614003,106342186,1260878459,629198577,1247855852,861660499,103164344,812761398,995495039,1585498489,329560952,608943353,1857310199,856585093,1571491790,244122780,790424833,1671398942,693090523,635775241,1093872170,1165212521,179783454,1760103274,1145178922,1231138434,2032493461,747381700,1287323216,1971209922,1627127690,1232935376,374556108,1537557232,942341433,2001345755,312418592,166128978,1779210274,708631734,57417741,2017425170,1770319142,2024766617,811509008,622056345,1501864460,1038376717,716741731,628807976,85549304,1053344329,1593589241,2028925450,1060440008,1428891403,1155132818,1159749210,1789410977,101975672,1969009741,1415408468,2050947994,416632636,1239314875,148242481,1235291841,1533638598,1082725283,1487201393,104284235,1331955210,584538748,683923950,1218397768,950787669,1929680216,662692136,465660004,1467899510,2098669336,1123265058,1577222430,1121420364,2050663933,2118098881,1554000040,1821275918,1441367775,2063395887,1381418611,950790750,1400892556,2126543312,1293880936,685043148,1072347503,54926712,119679351,431936171,1434492895,2104699206,993670655,648190836,399330078,1614412952,498524974,428545483,1396132462,1632646782,817419887,572293604,334943425,1867266438,487432634,846474883,674522214,767066012,1178489285,931667561,1790176429,1167080801,383761149,1031551720,30103895,517218097,2030893988,1238143992,454545986,1455347271,974972037,1551392384,1538734934,1391259184,237383101,1455652965,958977274,1966399203,129200645,1101765208,1820214538,879100421,1052182834,2039004170,920998689,175365150,887160358,1729791297,995668479,1023188572,155379119,1567070254,1982652653,1796580120,454956676,1100523607,1506027943,446032451,1509309325,1577082940,1730153376,1787448374,239122484,1179393757,873215258,921083105,1196789415,1408369364,1955404933,1988101078,286071557,934401956,878972764,2067055170,338053466,1301687731,8881329,1107553813,1990403771,537566246,1527741401,793079359,1215047524,424231269,438812864,389818294,1604283857,1230353243,639199185,1933525602,589747125,2018637193,1551248623,1656082247,1259463561,1256600028,826065154,1770766070,1864764156,990506549,103206632,1976788148,1536820583,112063352,2033045245,1303251579,395790442,888537009,1467371514,875203792,751115337,1067488082,2032816940,2054452483,1846157214,304004885,1437621049,514566083,897693098,353829115,408613092,2018134076,1477878267,942738213,2118412460,489665428,438307140,1976193035,1908053471,1997501466,220226866,1935276431,1566441704,993852572,936380178,192238120,519461805,702195439,243223243,1759021130,179368153,64504134,1901401994,269845980,164665764,447626749,603896551,237391526,1975535431,1762932617,794028149,1272995799,517034162,1864611818,1757371875,1837962239,314710749,677504464,1444150637,368994877,1183148777,1634946766,2084171409,1220742726,268890777,923705399,1252869744,1264980140,44834723,1683071693,1968653354,1281719156,820596620,212268085,1008834402,1702525011,1920529012,86461007,840709385,1508249183,1028609593,55041031,1950105489,1714572413,2011982054,2077850179,1098102031,1685528570,713041578,985801405,400581534,129752707,135952653,913275984,1447498029,689275068,1208625171,1624461591,1310562746,1180697127,849829728,960672280,896917155,1089723716,697454483,955638096,883353967,95734198,1759570360,343886305,1545809948,381872208,60422760,1752465110,766139370,686107062,998729006,1292573397,1717828751,1802675273,955240461,696643252,824247962,560976947,1791973259,1109361847,1510632966,1334789155,485749054,1814715667,2105578092,2122441042,184893436,1942512600,466384910,1030867170,1984586494,948431107,1164515803,1653947051,995197516,1460068308,490512849,1832078285,1179146736,1409993782,509200994,1891766069,446150803,690448003,1896069489,275513010,280841434,494208517,460589655,2061380063,561280944,1253799326,1378222613,979620938,198254224,397676017,563517609,1611311513,1644638854,141744074,491363604,912339649,221270604,504304016,1585746884,1087136116,1426403766,1405210038,1087213190,1106224535,1885488892,1780133021,1984702578,1180727466,275393041,1787682733,1156125125,672033616,1018965151,2081344923,1819063491,686283815,692834862,843102998,816011490,753422214,2106946786,1169093847,223666526,51328213,1658436576,943684041,1161672297,150779956,345980567,607285371,259881042,451156343,1783915262,1351260282,1012390413,291368910,1095192743,147545832,1427731327,796395278,1710532306,1682348586,787214681,2100532102,741288767,1537652322,136553292,1661535547,2036108476,786676498,802260009,121205467,1399454475,1603716670,922398520,145325152,925162513,549382018,321781896,1730082664,1359656877,1972172490,1061999604,310152319,624007279,668165304,82933621,1543771461,1861385702,1439161206,1532914623,983622382,1389526433,19356613,1127290674,210311249,165435664,1521926419,1245502982,756790512,549858880,864672085,1188042247,1024280586,1651774679,1632375624,95922912,1113174212,1250158533,1924299302,944405837,1397075596,1547172732,1323444382,2110655876,319942977,1491183346,1710424736,1897052383,1906938085,564542368,1678288961,187676844,1721743950,866575891,1163694402,1845002749,1600460065,930080056,1680436244,1069199803,521018435,1734825570,74105765,605521123,1049518868,1250178925,72064263,430760543,2062720953,1424979296,601882980,697361751,510928484,53064665,879566231,301330934,1498593303,377816321,1121067081,427549398,1749659591,1815706035,444295858,273851782,1141604871,417414168,390118802,565397409,1865070881,530868883,1342337235,873108011,1545466367,310289919,1918326574,705178725,903884180,1588060775,618611154,728061731,105017270,141080033,448976496,874469188,423611326,2076895762,772845406,1305493875,953263860,594670933,1370520640,644498983,489175872,1103128645,28834878,1897894992,1329011986,1977784302,917566282,1382777405,724263300,1047298186,1794033,439990414,468895996,1770374261,1965730511,879365774,979798730,1142409983,794702239,579885302,1940389350,1471490254,1881625045,1555224300,1818338862,437052420,840790747,41481368,669607105,1632126391,1523299758,1642015681,1882875439,1683467495,1014123646,517765085,545871969,965008932,1432571202,454661359,375389422,674786368,1629242368,2067558617,1954456279,56774108,1763747040,705756163,653733896,432257564,1265584797,368107117,226968369,1532455224,1600526402,76301378,1695232312,1230525255,1686976847,1976791154,1966070127,1970917611,1508587415,48669041,90122755,208423674,1739201843,876271344,1641086805,1051216559,1302184695,524023058,1497567482,2090066302,314313559,1322611035,75293946,641038009,6673511,87951983,193674833,1941070935,1536359163,1253244474,1757558133,1599283388,1324582467,413721474,1261062191,121035448,1009414686,311328666,1363291038,299447113,1890745799,1447576701,8340510,769274617,892505102,1458962963,2014006120,244453038,1167675351,1526406258,216423277,1888671002,512282292,612061310,953902664,20884069,72600431,1961359859,567236693,1459797351,1596341554,1104897215,1228130894,738821414,853918928,608281683,962417067,1849028398,1005659841,1189043832,708964851,1026394576,729465237,1997590601,1277736723,682090570,602692646,839910938,375986853,1990724531,298629342,1052777060,1869019439,1475002752,601922044,309296925,1723395754,1165249607,1140169421,581351407,1275303976,246757824,511832751,131876366,611601241,1197218358,2045826240,615972560,1113070087,906820830,806814497,1019189484,2108718213,162848430,133773455,2114521671,1436681757,551036236,951351177,982263900,1774308056,1466537200,495521557,1886771116,1956784114,1414095349,1632130830,1472130750,1437955709,1695246985,1838695764,1847507728,191125742,1421864940,45936172,899312202,710607437,285347033,839215143,715253709,1969298885,899876290,427156946,2108696763,200292254,1506231856,1775087066,1342709715,1048132697,631562049,1965469784,1427374871,599867668,512604315,911736395,2062088483,1400222992,1029145458,2081567956,1238048346,1636516759,1341596359,1629407373,314684961,1366430587,882106137,429041620,628989136,909663888,684737978,1653500001,995860548,1430968991,627940036,1684346459,377993179,249988325,1368014692,582562761,1343947416,1732582422,2069823383,319742596,14076129,1124314603,700512249,1182626240,1656536714,1973682581,593381389,1117083061,1790415314,1598102958,856630999,1902340385,576045477,1419628776,1078261631,2123516043,543724441,1165960078,775179179,1427135999,316406036,2063343714,1978562643,1214187855,1423830798,334043628,1285952313,2035374973,137404155,1613173072,775134338,737693740,135689274,584708037,1914916313,1845886247,1495388074,1364113245,1672203599,1736179718,872656571,235583207,1945878758,385265626,1259345672,296339527,950355968,1792689414,1437401885,1030443378,2120821700,811821277,690494527,981415791,577377935,989145831,384795353,1242550835,1865081034,1174881467,262487012,900030452,1637232726,683754697,1192640656,1039735914,70572233,769220564,3750401,845205552,875943031,1333266515,1093577070,726217938,2015630509,1077008142,598886748,1640383527,1917960874,1564869258,1739281288,1220857841,1786670329,1374266421,1114538942,638437359,571808423,1548010945,945368918,912714769,939707476,1451375873,851440384,2051645984,795117024,1712253924,60561421,1840769906,1777625892,1655337481,1619699787,740192363,1427630990,1261314361,1814639977,1912496144,624297617,1115228985,1288048046,291604053,526114998,1796606411,1242353339,65176106,1132630726,1936658785,198393242,1976950978,1121713460,1937439974,2078695548,1702155611,1896810336,1360525074,513617071,1191166438,1458464991,1454017006,1758668834,2053007041,936549539,676473051,1613086750,829343113,424621176,58848209,1401018933,376090926,61208843,159257163,566691677,826508696,1334876008,1172146907,965607980,297535584,1172538276,704417786,1497113440,600539076,1422423227,1497414148,1797889701,903852783,305989412,1468110526,353683358,960822085,1949107503,892463702,1648838876,526050793,41458779,2121436162,1720256074,1661721408,1632203745,25982144,1550241916,376429670,1979528404,1736602818,1952044366,1718984145,512719805,107770477,472896285,1087892209,511912307,612576246,54787315,816199059,1064530299,2109192534,1114521860,1509316919,1523054417,804311643,1681912867,1763498899,846260079,1996610401,654179637,1971799209,682390573,1944006286,623162764,517065976,231511780,1573543167,75989355,569499046,1071374998,1378872585,1549515530,403177666,1243130231,1393183460,1245624320,128560598,915712184,1918430442,1905762771,869438011,839584114,1094755272,799676066,274881122,1228440332,387048858,1346746570,1432836373,2076185618,737218060,1637940207,345421689,1976922961,1876578826,2083769504,1082689656,1179263509,814142972,150393020,469784704,582200544,2130519739,584281164,1218038262,210832011,1764294025,1517501046,1820983379,1698131600,913830093,378960095,1101026990,1803318340,1507107945,485376711,1716357269,188468020,2048047928,1266471006,1951690960,967679902,1535418209,1848298737,1399746219,1361626714,851102199,1893890438,2105982078,307040785,666688558,2354558,1070298479,706747810,840712208,1741398668,1070926667,523423795,1915163663,1671461167,594507954,144635971,415684261,1105463530,61218420,1907573913,817734376,664975199,1643792323,264258976,1186724832,1584197357,1805031735,1288788866,1412854327,973379841,128716198,1552145768,97497760,1994649530,2053131627,473654831,939587872,201993096,1530912450,1926437537,1420219751,1263096791,1538197243,1729892908,44133520,985187727,1927326810,350177906,49239242,44464560,2083036933,1063708271,1485514612,1164947027,870705595,330911019,2090610031,888362808,1047492287,2061748476,1874707459,1453333791,115414563,758460373,1907318210,839101092,505438743,545526377,2073783766,1375625823,1231031344,1953892002,1955027432,349208344,680100201,2040133548,2061504920,1795931192,532930587,2058405084,1666671859,420735448,1773389868,1790281773,328504486,1785352586,1569746854,252118982,2045857230,861769613,158207423,1874482273,810095828,1480193300,1393332315,7769202,199401678,489172990,858185132,1429989333,1626175716,1021700471,1944199824,2082371875,284472467,1189379795,571225545,84716852,755699927,89151196,1927261548,396304929,623770205,1146984351,202573907,890831478,1165009753,658153799,444499641,704948557,331247136,1821140123,1399104622,1792475492,689466389,710600243,1005113279,152156630,601437222,1044562371,2116575042,1472837759,1923332495,700216039,5102357,758578952,54115816,885604255,963997773,1352258652,948286963,300996565,457187123,82226067,1778888439,682921577,1286214259,283219765,2091404196,889142098,197023678,1543531708,1603931400,944089692,940004643,1759441245,705097571,1825523108,1699516943,1576438076,795004503,1387755288,1913391075,715491473,187545722,827794007,731646190,434226223,1639645063,2076017435,1992763565,1519422151,35912238,389145259,1812806974,919603257,2051205563,481498354,169139806,1527296188,686787295,185352876,1701462640,1178600514,1228062069,1157018360,1069813211,976910602,1705087447,215448810,344257636,1719678093,811181054,1523580478,2080824575,978946694,2061162695,1515687035,136547730,1326928355,62342664,220439134,693047681,628754952,1968764599,1543940216,69274181,863671976,1798808846,63142533,1722701575,191660490,1880294665,3969320,1145482229,531452767,550486047,1198834986,1841696377,1733774021,1440674583,1812364817,261094046,1584032021,491349616,1462140347,1049365421,273628562,925057408,857985188,1172220903,1843970628,229024056,800313869,983688487,1668128042,787140640,1745690563,1457630061,1655571208,1184425040,2091780336,166863481,1362463000,577216757,997775738,568750402,1180344272,1550306018,1872774898,957922607,1378254133,1815846788,406109504,134558042,1692201684,180065060,1718649743,537253610,1490435418,761391359,1902264900,99380583,1792454669,1920596896,1968412605,134774866,179441157,1337304028,1416244691,2096192102,1969255317,1055567961,601788946,7975163,724203274,1185557355,1067833788,637936770,552274255,1801883197,56267280,1268504904,1688334338,1869364395,1421884668,729089597,801891196,1375229549,973514877,1656048557,874145068,1902978338,2086025318,244320870,2127176682,1035197966,2085218463,1624102074,2035993108,1570129695,761474871,1245251944,1754472097,1152398491,656300339,4537016,1954734839,461391132,1262235259,708196340,1492023874,1664010290,1682660736,505383385,1387865323,42393781,1404400942,1660318409,1373596193,1329396557,2127606811,1361093434,1628229228,1922932416,618357642,7945686,1321540256,1942998961,223358831,1633052445,394072903,1036112609,1952110473,268751335,313963133,2089047651,701195590,2100267687,1791672442,1557372850,1691064265,1007386615,620699916,1994163745,978469598,102719390,2103915337,1134738899,1835769254,1887175430,238680022,1685144635,1972493797,458087232,1211710911,1051249860,2043996605,603570476,1021208729,721012313,180408493,271523037,1195371055,61275262,1170857636,755723862,938813196,2050488684,1001636805,1210556680,1106988685,1611197805,392828840,103239770,987136660,797100971,1357788774,814871711,2021446555,2062855773,1368041746,1724284026,1566545187,1353283007,2026647803,879646219,379336928,252894604,1505353,821741223,2049863243,367380028,1149610903,1175087344,1455870186,2004797664,409200228,749865898,265174071,2044765872,393888189,1357856587,2007227471,1502232209,1503036144,1903376562,1399304045,1719173509,1968086066,1867119106,560643892,532012912,1000323831,175440840,671333941,1693744471,1915018598,420657561,1829487177,175263898,853136649,2000623108,1446663102,1927669476,434204847,1842494758,1740371594,239443429,1305390252,311300496,1479473161,1097337221,1243407300,1129024887,1940692562,50365788,1716845451,925416321,146418849,351011479,494195158,621408749,58057335,1907285149,244223250,1618399290,1273662271,1990712582,2113034231,232734189,1744758201,140505424,1289867961,574484101,622214068,537554694,244714469,435613582,304416609,1839886407,1809173940,252133513,1250584107,1491296525,1162790883,2014001156,1102435588,1400971362,1817646593,1151952930,344742888,696225252,1090188815,742813928,363885005,1344003814,1938387292,589511660,1549504391,398937811,882779304,276955533,1577423001,97069670,1960660945,617556560,1937160561,86705714,1399904258,1581605571,2049191111,543352933,104938149,692650433,1703554014,254169911,787049262,576399288,376593961,130934324,1351559096,1962440913,1569603995,415112856,1775472084,150692194,1106541904,569450610,588348373,2028464476,556553040,2045156506,422492481,520688493,497276304,905261975,66733050,608689292,1114685042,158153779,644399888,106067461,1264272178,1871762886,1336787726,377270709,297291977,794458539,78399843,1000582043,1886404089,77065194,396408092,1981644322,869467892,566837179,1251198330,220176110,1759483898,212577157,1379270990,1027078271,1938713351,1524220514,89200001,1144244130,1997611889,1459285681,1526360117,628399780,221504131,1381828251,742444022,1825998811,242424504,489769969,1464919922,1156904418,239230729,328216943,448488345,1127933129,1849647512,1823294961,651920731,319051544,50594966,1821607098,554858187,1097437098,1511496298,1698002214,1175984671,281120984,41939023,1914209449,1457190421,1070844074,1824167097,184869214,1078533290,25650264,1209988304,1896007767,966421401,1117807226,241079128,732474448,71685675,2085593981,1792693413,1231373565,1307839270,2007944664,1062499205,1894416562,1100416425,170083653,1949747741,155946435,197015015,228672702,1337360057,1759264794,132290743,1257195600,525551558,628707363,789411970,2060814931,1148471828,414992727,200089257,538130508,1569911242,1901381714,1016135542,1261681610,237962071,1489674019,144527377,1988882701,848963828,1969109336,1636419768,333481353,260190738,1548330450,335812405,1426083459,62621315,121635646,1132075012,1727287948,1643386268,799363458,1558997887,478674215,1956938313,274810650,1901232936,474835173,2071108061,1216315171,1462038381,1520842705,2039500090,1190688678,1538403425,83828495,226171652,1413867950,1070281267,1940524152,480440004,2011800113,2100371357,1031702064,34982296,1861095452,1435769258,1747268210,1130856229,608385546,1030281591,1920274082,1585737151,1332469684,2112935912,842796685,297909826,270211255,850774677,179252,273348065,1604036535,1001775115,1917454905,122744072,429785400,210978660,1149898420,1845336541,830352498,1434146896,14548808,183282526,1890572313,688397989,116993535,1341251832,1995598587,508705901,1678150632,440000542,1365011673,1203695514,438031451,1502906213,2039608403,2070267082,1541765396,177752695,2127154784,94557076,1985720114,725733465,1559624927,275303757,468670793,611905514,788408565,409092397,1521522217,487095190,908361306,1072803008,868918920,1379763189,1997895536,580865696,1335709286,2022178624,1490853670,1701619801,1517552609,288242300,2023986651,93176059,767322639,612111848,1160446948,1318960651,4986604,2019860191,1321652442,644334210,815291407,149654902,1492709281,1379677607,1676521434,1033775682,1368999221,1660886106,1308201724,449227264,2038549382,1892288234,1922661974,416425205,715447661,547098481,1670665944,1854617187,1225450020,1844411266,965073258,778647503,1307259298,363662724,956908562,2090143325,443854883,685943032,764810186,1523778940,468189308,550627218,937600749,431023469,206995529,1335985256,1596562384,1667942529,1173228736,1814082374,875686862,151764586,41370330,1757301106,127636324,1093901754,520491408,1908905792,1124275415,1256761033,371379767,256724616,2070039569,1699275446,146308332,455776307,2108069334,1631747935,753723152,12045911,916861586,309695665,990462379,24990196,1033599426,2110408372,1111566273,669461179,820317379,586792443,521115351,500027221,965978311,1153687384,297705932,1345399671,392712676,677407055,3567108,510476188,1134453611,514559804,890614707,592396213,2078226286,1027790264,1104904360,660951511,347203660,464003964,29614593,159391800,2120040825,402143984,2099085228,1652504967,714354464,1031640889,408674928,1639351355,1387223192,1784467628,2001876165,512873804,1923403479,826445333,2001403465,1028382857,8669027,1980682685,526870922,1369739539,1327709689,292280039,333683459,2032086055,1621918458,615608119,1610655921,804919883,1223249271,1664256811,2066816856,1714844230,1807820885,1440953233,956481883,7346228,1452669200,1684331561,2123119789,1573591541,72695545,86667599,2120987796,330629460,427240873,1043523953,2027631019,1171801998,1140665991,207129745,1755352544,415848597,876161641,1860257698,1685372595,205993336,1649129105,1724455105,463917855,1502891807,1008410480,192174388,1798336356,2079872358,704435108,697163292,566811801,1641057593,2086624738,1485901576,938169487,1635797290,1272899854,1633346104,1133048995,2083661562,1097887503,352596781,683254358,9622258,2046347907,758874556,1015000969,1742949714,41009245,1817594392,1511656392,1541790947,2075353749,71544992,1225259121,337381946,1383800273,238745542,274053036,851130168,865544244,1684945260,1663516342,1384448811,590146576,377993584,1210934434,405842040,78690177,1263960347,1254240996,1044603721,31951698,1209045247,287147765,29964736,1884994834,2043157497,168543660,1076650925,145592767,612207396,1197913204,71198313,2025157253,1185110978,1715953144,997614775,2112878659,1041358164,297521703,1272453978,2056127743,737911565,461594086,1364437729,1272036305,1593292912,1251110779,1369576617,707392600,867331768,436480575,128429521,369188809,1842178692,1243137942,1536821179,913161690,2000198398,1881687095,547136498,437952856,998363619,426871878,560384748,1879063971,989875686,1199305363,697332144,535887885,988356905,823338496,1408555483,434195239,528406645,1971497719,573897901,961704061,1268459299,1750444950,1866663801,395843602,621771606,1999589970,1562287939,197308819,466727025,1940082699,546695390,1123235339,677472053,1438786337,990107547,1665166600,770643935,2054006078,518784954,778294936,1659707836,374110427,2071634944,523533584,212281974,1686053947,1848523422,1079504708,1400309242,1542833330,1678218164,1976767610,1983482312,2032129725,99412985,208129917,1175292131,1196598053,1671467221,762591295,863348050,1104347032,158037056,1707291733,407157381,1109396030,1379502136,2105604211,821337295,33090179,962950111,625103920,2075600873,2030197773,1015883048,133440413,727363878,1679840296,1409656771,509146060,1293189205,2018605569,1837465164,1744020280,642319582,1042247233,761408151,802888038,1179999222,2040931040,129266504,933347046,477623242,1642390037,433331373,263080559,370344663,268626087,1851648139,832521133,1103631324,460176453,312264788,1476877359,1613932941,1510806951,274771077,225006214,1127874977,736110897,1716916972,937333776,1986525019,484459510,307382413,617901810,501088817,1131516843,1953543721,1724664283,941186531,1811067229,850393547,917371723,905182727,1059121395,1497998913,1916605793,1653772426,887718713,348918955,576425067,307574528,1267710069,1797184899,2122119851,140866937,900232443,698156983,2060009624,2051986305,1469784553,1161112304,733477567,1810461374,1010293816,869100084,1120609061,194143682,929652011,1063545212,208739571,272221474,1668809821,1183836483,572286692,1527146178,1921236522,587644133,383462447,1396100102,624019098,1993118198,199121178,467876964,1078245318,1258741334,1202179463,1378388669,728701473,265721432,109070078,1320203786,1710003482,288798842,1971359432,1052343583,1212888261,1918017809,62849141,1999520790,698774659,1074312515,58295861,1972336791,27765957,133839189,809630649,1026695604,1815491923,1885927277,305366087,1862543456,980064332,1760491145,602544634,86072706,1575707199,152291072,1590748402,243765112,564750614,382179298,806382809,1006928014,841490253,1086534589,2009217037,471711346,918517423,2120761884,1938549779,763402913,534016922,803751881,440804008,44665243,1960365782,1752277130,668237616,1866914518,926860595,1895396275,1332978048,625180369,574831970,1340573916,148510719,82484509,20723519,1648281573,1195146206,1702997088,185198132,1692431834,1949588834,182731976,435721414,953309041,463504389,1317316486,464976820,1722477529,1104434722,1831503596,537497196,2101567964,1646555236,964133306,1749521897,1664293567,453982835,1871082918,1162232490,1800652172,1086609980,1414344614,1547132332,1855703505,1253438970,587020684,714859769,2079175927,1399486267,149206745,1390822602,7925137,138951076,1766308181,323635952,821607112,857632663,1755815827,1719371945,168914022,1221975275,1225859117,340849916,1688880881,790795454,882951305,1048638065,925811725,17591936,1148552761,641151761,1430256927,1282338457,754589340,419090560,773669684,963268792,445219500,1514805583,709067190,1581262815,591096724,369513974,1533576020,512117388,532846516,1828873868,1966498169,1294403683,898028759,523918732,1363760846,518958585,1027787860,1889890379,1138349887,163184778,1472421923,1682470287,223266488,316264353,845176841,436579241,1664452173,1302485137,573458371,2103556699,731963085,2045171660,508629560,1160373843,1438975498,1023584271,1302978476,1079673748,486505089,564242556,1108023027,160203805,969672151,2009214887,885220141,1918049693,1355616727,1840040972,1774928251,1337096564,180029878,692269172,1927703970,784508703,1147878815,1721129562,750997753,1339447821,123593732,1653538545,1969809842,2062122189,1752705651,48144767,1435544233,30874616,1936975266,1516206554,1615832451,707264692,1626209890,1947249649,1475095294,746497631,308940931,1774501530,527735263,1135155299,1211512138,624209371,2055552871,2494927,372945719,1044645510,644227466,544874660,2048589497,115139393,22076124,540917183,1362797101,1611967652,1256855044,676745119,1957592307,1675241233,1357380687,1002005705,1930899866,609216570,1143939865,1930279300,121644125,735882902,716334973,230209964,1808316372,1930151324,1173228854,570576944,366324948,1147900888,1424253734,391215258,1628719655,1686336116,682379137,758120084,252744591,251036795,625126845,1495355890,1774484962,705507746,1869378525,1433762805,1983531383,948790190,1064794546,1208495443,997159335,1212633995,1887533377,77026149,1780076159,1673252568,840503717,473535858,802897201,1868808336,254797035,891559871,1200682743,2096526763,763755940,844076277,323221949,1839439341,1079467073,188318647,1311826097,1988039205,1320353059,1856171504,425396371,1671584557,803501053,1020400823,359523556,1459908948,1594880782,1344085150,1318592177,1311353860,876719952,1612896082,206667280,952976475,1302661626,69069755,1009758303,40650013,1541512311,825921156,996466909,182416928,1134093669,1790495240,1200527347,1182317680,1340483210,1208607251,1670962163,1135818128,264984642,1116671793,1722989167,1597188238,302221626,191186747,2024471689,1993527059,743588480,458253331,1336089269,179925478,1724582295,686257087,1071484004,158033683,100385240,2090374465,1748051448,1402800304,1773137487,1935182126,1941513171,1905727440,1956566286,946844606,2042188799,1954084030,127322237,727126994,1046351962,229889328,791578724,1882408308,1151352106,794459619,73937136,1462239648,1510600590,1846423456,1920857935,1581566169,63429518,2119416937,459040064,439933229,630141825,989996246,515769298,18517029,1100500490,835401023,2100440186,1892025167,541029769,2004973787,1347612057,1042440368,264568150,1319931188,717741154,1587161202,220211639,611657004,826042497,748653295,993836155,1468146013,1621504983,1067254969,450292712,623397950,1648241661,305649509,993221170,1403774814,1063561349,791233768,516167573,1450950596,1925718010,1167605514,1114953392,1025375038,733313203,1344103926,143558890,1885261151,325880212,822818280,1089803810,1340280524,1689352585,809214880,1895026728,155210847,514812657,577756541,1621889320,1705905246,1634459080,559693411,1251862979,846841630,1303010218,776583760,857879441,1180627626,1850315200,842805436,1212266164,968097877,1928839668,1541335655,1840470672,814893648,785219151,295664701,683702075,1029348440,50119514,500538316,1462831349,1771435347,1703383501,849000335,1548441128,98184194,143629917,1009302451,1138031937,622870772,1363784392,1039806978,962605880,499374228,350524476,382255251,427048743,1749507900,1689452818,1518092327,820588313,1455705688,457271959,1617997165,1731198988,1290331939,1534496216,2031308660,550571235,1553928807,2108965102,1531582229,1057195356,970570695,861193100,651260660,1316140514,406507958,1208266123,1502926080,1063012436,2040406637,426410831,1430396557,1155212659,848408937,605319082,1709906005,204158806,331329941,1974900436,1129129098,1532050919,58589635,1550924982,2037891351,1191490055,1693157610,2029214262,59131696,937953509,1670967052,1718144996,1529847645,1564960015,233482450,1612185596,381701275,494431688,150593030,834039829,735419301,1653695789,1746783555,27598075,2093765437,2093210174,1997600202,1613801078,1670076108,321299960,1560869944,1585864223,1288039989,309495412,653538709,263645283,172895892,1074809615,1640882819,211019564,457134191,1945544260,1734588617,927051393,1583690243,1826466900,414155309,1827733743,545370992,381515013,1449406147,1334375608,514557894,819487260,850544750,1219141417,556999052,661142988,2125523918,1194766654,596612090,1093467046,1329112259,565147837,795049898,521705626,1024382510,1433213828,1012435854,680664458,1627852967,716705144,1537923615,1232588063,1150342663,743489697,1325715323,227380367,27155036,22545980,1992330135,1266048415,769182069,1630893307,160662004,1803314816,1583578807,262480012,914716007,120426671,1811264935,802996829,1436472916,1998203627,929180161,1458837144,2078454865,1153216529,1383712925,354973668,1955848169,1702582480,1205254144,421913296,1516478948,413939168,473065243,568354831,13554348,1935476403,244246635,2072678829,584922134,2114200534,1330026670,105293795,95040491,188080826,962972532,395633441,583377085,1269812795,1318500298,1628870394,183837059,1202364981,1962114608,137199927,111741927,455363632,357368770,1273455020,464073907,1364822659,944395213,1246487264,2066835088,1031836151,1215040758,1779423263,1757793874,176345883,740135410,936108517,155355485,1665926287,1367956930,111065950,458515191,2060374341,171624347,791276207,1819891469,1009698221,1269711945,1453949524,943433535,520403804,1856149551,112880510,9015702,1301640669,184731242,1929235616,2038091510,1486298947,437295690,1262976340,1630663592,1472623459,821167514,881748786,955793447,491804358,256133908,1768698999,1829779672,396862883,1485840304,584441700,1510575171,608769233,494969893,1687176356,126164007,427280480,1885587234,482636367,1297869633,4629968,1329797730,1277323555,720080702,2099772486,182071908,139721841,707104141,491897071,557858550,1383936875,780932730,408172781,243286758,598094108,1752738064,159221178,451355416,1450517223,1270434906,1288474893,2025574740,1870670790,303482563,22247010,2037885216,230732898,1343292551,1677616174,493834818,3558219,1020572063,1772177896,1476443637,1769074374,528020260,1604268720,230116025,496803480,1897183364,2003340074,398171346,2098380058,597681987,1444013694,328565915,835201296,1754199395,318123605,1611182555,1118550611,1271650130,204763127,37121094,913907583,1492347431,934905658,1655785442,147804102,691701941,910146744,414639383,56557726,464822944,1576235145,1429986840,578165190,662015742,181991711,1311441764,1746006267,1790397236,880874264,192129006,1993244228,637049312,451003875,1547455085,275242700,1144685601,283234692,974494859,1712781453,1797240592,1685511553,1196791813,1974690339,878259195,447219778,574718599,1653521562,1366667131,157260395,255826026,685486609,2063708284,1530837832,2073653756,1847823180,831949141,1364303171,951589616,1774282223,1694427522,952940500,1099555554,966972979,123894267,1782989515,1396855139,1792928969,246262681,1690017865,1200836046,392157548,188017595,364252219,2057024122,1865686700,1829140612,1153291226,1570477241,728794362,1676655925,523484171,1596784524,73750609,1398182786,127410440,251932814,1673315573,1844426809,1390246895,307524275,2061862188,2126928090,1429936223,1981571554,47650375,315887770,2048025907,513659521,1390116471,579760321,1219771454,1150735670,252476551,696730524,769594122,737438999,1169684163,1023901980,1307179754,1227016119,294016410,1265426994,1744569739,2011666111,1084182639,1510119026,191146619,456758695,1321538321,1749412789,1976891699,337753252,35774303,1431331988,1620592081,12357052,1875592721,1853897659,1621681975,276452031,865343030,699410586,1439240000,107282727,409882159,449079448,1442581316,469843679,375835215,302586618,582519947,1291823557,52311557,569353573,902800825,962756281,1133668109,942322457,310052539,1238402122,959588942,1724919095,499607167,425172666,896777030,611685404,661288912,1773286398,1484892534,1930654017,905715080,337401707,139636052,736346076,820830576,96880145,1211932878,293889264,1823608724,363084985,925604655,842671133,112949039,1686576810,115096995,1443281962,2094196342,909168218,1005347241,1290183002,1679572400,239932279,1200399832,1237134079,985278021,1081071771,1199548391,208500172,1402879838,180661942,1679326747,669160115,386981833,271660313,1373801180,791996280,682910351,919869333,966050391,1825853450,235762207,2117604549,1790333546,540228126,1556742729,267217040,1396324604,1463878318,1306024419,1380025852,1398689104,1333788102,763354220,518948448,1904540450,313524867,2075402809,1928023620,289553100,525267775,439268902,1414737151,1617562947,743451543,1493739482,217273337,747098560,2004262917,101008593,1156612249,1420504835,2013048488,1896240645,1266531535,253120980,1407829839,1375315734,2018330077,819749111,1618291590,757818233,502438823,867361945,937825189,252218608,648688362,1517399495,777349997,868271219,606121088,221597867,171952114,1008149658,1944984170,668420173,135677274,1578746461,1696565791,357379052,1104910188,1220977042,330742127,1936260218,89434154,1142925972,80243137,1776487172,2080006674,873200988,14339765,1106024653,1129005262,1970393273,968190812,1494602171,1469250698,888527828,1510409728,690897558,1140742137,542377141,1875327102,84256408,798382845,729878838,1026312651,1949254418,1475294457,1835219599,1331774604,1861082199,350030805,1012821110,1942894554,677462274,1597379761,825826550,1764801606,134268955,1631807976,305439326,1611732953,437253663,2088441605,2103439817,1717530109,2055331672,1722539820,1402857450,949890011,1006327030,70340910,1566600721,940353064,1800303421,2013080114,20163197,749744546,222792168,1692477865,817583193,806022334,1845968402,936484692,1368740398,1298581807,1189630952,1379761580,318313193,1481281343,912619323,586591269,688130295,1635218316,1022744751,969514041,139672183,321359312,1450445074,408999010,1586147141,1897136548,476404444,1207373363,1341079399,340470473,995158841,1321682065,249761832,135139532,886016724,409530133,1881467961,117336959,1746608266,2044247115,1837614092,1715299654,328055240,1015156634,775900405,308490965,1285519697,1533411226,1745930271,633772403,42084172,1295557089,997296256,554964810,2122320624,711509678,2116538410,1217644508,1538312901,1945994723,1020724516,2125777431,443040792,1056764273,1030758261,1417224981,797495452,779138212,1070389528,216638225,385066204,1285603426,205059440,169128984,2002082686,178319483,1232081349,1268816436,695688103,340726774,902003550,593559029,115555365,1406696876,1395550929,1935082721,697209557,2088748574,1297682117,1538631316,1637737276,1739866059,1213469126,484013101,1476975618,1710695982,1245086360,2128007480,93179501,251945230,952162453,47894334,211201493,27282281,291276562,860208756,64653194,14027983,977227450,2084768531,1305596101,161831053,1640001234,356213998,476911969,1552564156,1866697532,417276817,2114356997,196633709,676321160,634538193,1691399355,1137570118,208072597,799942609,1886360941,1333379937,1004351387,1724341601,999716215,2088657346,1212414755,1539484636,1070928519,1720362052,561082832,1819758463,181070449,1353805106,2039639800,1968455555,596329396,1435116482,1166741449,642048106,1422092173,638449486,793193912,333681330,557458699,346331496,395676780,1358786838,913355147,1165742488,1529848160,257602251,97647048,1558762932,478685656,1808023848,1020346786,516032273,1814101847,334066335,1625143739,1201327973,1112843718,595095945,201569073,2018569786,373155867,661758601,338782439,954969327,1354618158,1208809087,928818061,777101826,1347310293,318824517,1603512231,417056645,199695301,986488182,194397760,1242843111,1916176950,596293854,508251597,1868548663,1027530560,822756452,154585890,2038758891,1766734617,928152740,988790332,1550242389,404978668,1589065632,444476689,64343797,48644478,755777734,1683068052,1914764835,85731262,1644162283,1355805227,994984305,621454155,2020632474,761567368,1549374521,514766301,1892511209,935866761,994733816,1225290305,1300072400,1214800500,988405140,608078619,1035444518,2015646424,1155464635,813397805,311514390,1250244228,202931570,1680796224,443644543,201376598,1334726616,1172991985,1185094855,914788516,421565204,782278535,1143276914,2023254790,1664569878,113606663,631032800,1582598662,837236324,1342618780,190753929,227096881,193428491,1606468162,1082556137,570944537,1449987788,1051336456,1116034925,36303015,1836882818,1866491932,685596846,861673507,1761748104,1637890325,2098292597,1609118345,419618260,1154194724,113514733,1440940924,1353396183,1369316437,2037477917,356300420,829156055,599269113,78518740,76790586,1621748948,178200999,2004271112,73112029,1977088731,1295280376,2111558683,18643532,21111250,676495361,617479612,1712316367,950286434,572144647,1403298048,466268606,732687471,31447926,556408751,941784216,542386345,1582216152,1682696249,348369863,573061970,1444470748,937399676,1865978865,1461801248,1985779088,1815815692,894429648,1090810780,845422555,736190267,835548450,660538776,1471037220,741383232,1713245278,1560560698,594846349,1106660666,536017051,3641195,1913489136,2121443280,1957251641,2114438040,1867025409,330409596,171127213,1246715402,1911889978,1354494468,1324661448,176329455,1459776148,650866521,371152391,863174729,2023569443,170339088,2031685438,614221086,1353188807,1469844208,833444246,592161185,695873964,75636226,347516555,2063777831,794248041,1705153049,298205386,1255130523,302802944,2113610150,1558161695,2108158523,1904524379,50815972,867023287,229575714,1987597490,1909195645,25839798,1107904026,797415394,1660335542,1013931681,816208953,1267585269,1677810767,425902507,126394997,991076703,2008007872,582405772,2053182232,124959035,1361278482,1352725384,584918140,1906750439,130334759,1899143957,673695970,1621992814,1762997848,471113531,960833099,576283919,1589020344,1756699048,883464721,2111982627,2108206223,1192718388,713146724,1821389730,253304002,96595632,1684466808,315225088,416345005,914934165,667494910,468183986,203798173,144175350,597208663,432018782,1791544850,78594353,493232964,1478908716,1702044681,288290867,934805841,1430330574,594596184,930557682,662200740,536283018,278423353,324273607,789299874,1401053973,1479202482,623382391,1802765828,1993321608,636415570,886872532,216027062,1567090265,2112143800,1354511751,1837071598,746493862,1264286332,2042849831,1512585114,230308774,1581550105,747425818,867087890,1986997839,1219629868,704617896,278366660,1854783059,908155341,1135303300,604768883,495506160,2120438626,886862576,2000983894,56770530,1312061168,652190795,1417435526,1225831148,537044201,399353834,1370110308,1021326743,1823849924,642940490,927869911,909053954,1807641669,1042671469,877424544,2100491751,104926170,491017242,1652043602,2049930346,1182481863,1714958812,1710308996,1746347663,1430636103,388277054,1112547571,1558667769,454088075,1381398659,2083018954,799593917,59534807,644626015,285688590,694069872,1968534980,1056388330,835695802,1245095184,1821109000,1204842581,1648936798,888431848,41484600,2048756762,646678989,1223953196,979137597,350056674,740486036,588415237,864283607,1538314379,1939744892,344362492,1888179764,1401576735,1636091277,922918485,1173215598,754829404,1014682575,2083157969,1077893096,1394428046,1317122861,558238358,1437803459,169418656,2021732277,577357533,1201330112,404797527,206674571,1325305247,1303003933,811003059,816373331,2051816729,288932944,2094425111,622357736,1933826422,1610744443,2014630997,345299482,656834132,94223710,1436575524,62086922,634675060,35115122,474013284,1053703879,533245244,673746189,1907155259,1613758384,1920690558,640549238,376211139,1855991810,970722549,1534143180,1627848417,2098483189,1354039886,779760618,1730265140,1088275894,711648693,1188207371,677152255,1262751485,367903735,1269164181,171718252,634519615,2047986187,310033869,36934530,173956909,630150145,821696045,573353835,275661509,1901556175,1972206178,176535869,2028861561,371890305,738678740,716845240,1327686489,485320253,1940575832,2048211270,810234854,1927255039,1131687904,1238676666,448554650,1040736776,726120589,1380888884,873222621,1746443931,163538720,73695761,469086264,278468347,1459037603,1665713923,1131890942,92129078,1051001183,1029247350,1330087046,317875714,2109745020,1698081204,1778598574,1156926351,44880380,1195978440,1065073081,299789293,314455360,920674174,1593779095,1273895973,21854735,1056250015,120754069,2057855132,2013677070,967646339,592823767,543178816,1892372126,1847012866,814857725,1082827651,1462767831,1685746019,662181271,1386653691,1882942490,1563062265,767094480,1227069878,1808944963,2072982059,1871615944,979268361,1316701045,1689099651,1162158108,331016488,1949708589,1641869855,1550660474,1997340139,158308168,793727411,35316070,470074680,345884243,1872588561,621731338,1836750004,650147659,1473509916,1133935541,275526199,1509744764,405129021,350573378,2071766857,1409398135,1472449424,1183413618,1936929258,677562660,1460966217,618818739,274199368,188491041,1528765768,142622017,297766208,1832418572,946413545,931927222,335783578,1864821165,1875154990,245933884,1990001586,1931681769,645389233,1700848696,773627863,702301895,2062823919,335850594,1945384930,1332809122,38583414,1676002205,167490845,1412432249,1957985909,1365057758,1432392927,1168661728,1157573396,678220177,1673535636,19189860,1719699198,1453503811,2021932231,1816474708,1552188327,1483432421,1326005036,140326610,2071081702,2000876604,596533728,1194652350,1114711450,1216045248,1277320270,507073321,167326760,446593913,46644608,1682315120,366288664,1244840080,255654731,965366721,1907542440,831709470,511859096,449187429,1867503427,1089888698,9892506,1809113103,1266274547,825283259,1792050133,977312177,144555276,1022472162,51581640,1056749913,1989080516,1271419206,1168876007,352193188,1468685938,505495716,1023349489,1184980578,954737985,1816429359,2023803406,78379451,728894610,570833974,1994698828,1902478005,1142408340,1522059872,1777317743,1794695376,329061554,1279564465,1892995136,485343688,1213372317,1880165876,489046557,124766507,687539350,600363433,1496191189,2011243343,490709292,2047623931,1360890944,1447837681,1534052216,520693883,557739100,1078754263,1942428803,1156704602,1809998412,1537307465,631717983,1223841205,1467130370,980193747,1413004490,30765601,591161277,1666200429,1153459172,1533974436,1681862056,1977332041,2031183304,998235876,1597277505,33438026,336883702,1422846652,1967809826,1680929753,1234271635,344154799,1678790812,1556283117,343140467,566369334,1066381254,1921778586,97080380,706518825,1991854199,1899194147,882242736,309122382,1910340059,880664247,313086474,825003162,429169740,1231067133,648654073,1903907367,675321122,8969619,1833881548,1011682567,400045619,575419373,326463819,1586532357,161757691,370939891,853100109,697780250,640324075,474177926,703209237,2089836066,1498508913,2072691857,60886536,1385261822,482188596,415757073,253073710,1259957182,1632250242,64575515,1823184550,937935886,793089115,773035263,841606600,109293224,1757326094,308011322,1651617539,1005455407,693955338,968580181,158334567,1422881780,1217391284,1976901036,1740091959,214673492,1738343942,57726799,760726900,1403787061,441902423,1758262715,159833054,1323505804,1425527921,1432457723,521037952,165763392,323575030,1469486582,1087262429,579395944,489135074,1078398668,1678541028,599058035,547464208,1603744101,1534122810,1894902827,1984109475,1162927211,2040489611,656428400,565376520,910628512,1269576006,1749582328,194521779,704757517,1755113245,56213971,820980857,418200741,1204307802,1214121250,133915083,215529084,1029153849,1055707709,1012241927,268669503,301180201,515040314,1395406878,838963121,53961802,1178182609,1313613470,92315914,1086638592,1809980047,1750718883,1572539191,670277304,792046220,1247871808,1786608011,529375741,1918285669,596687480,1068436455,1870384772,841304384,204079727,1679088438,1393546131,833310963,1685949292,354329358,1805687631,1678151063,1115275414,1043553679,1137227328,1120884930,1150897335,1599549879,2040645853,740605656,1058824568,1334094251,1112423071,1749635145,78808102,883691060,1178333832,1978130967,1299461419,753181346,1615560293,1702887969,1484376793,773901286,475928969,338062509,1225906447,90092662,1203295593,1261160879,25915364,1474445737,1851798967,710512806,937097931,110734546,1397311734,2063072654,1807460571,1836415735,901645621,2094779988,1242837115,604806943,1610892010,1341181800,1523935436,1355527659,1688251820,1662651706,1772482164,490741532,1909335371,362182678,111117848,1003682875,1431996702,1295972992,972376119,1369713622,169595513,68016185,2033291452,239178154,1346933,1037003511,1738232128,472020377,886761560,1486904556,1630879382,300937354,1265238987,723305613,889392902,980064858,412621079,1069216646,1805943795,410562882,622830205,1394640959,1633796038,1866401395,735508672,617591068,1338878684,856347609,935371066,1060289481,1802599711,2006414160,404717321,1884293132,2093707789,319431439,143818525,318283259,2080810235,1115768390,109541700,1204008535,28854045,1833903345,1468334508,1183613660,697401618,1633292808,1326075188,1734846243,205854588,119753929,1748028055,159912421,1657924411,1357573450,1806509118,1088174525,1631521201,1212764598,1276930514,513998364,1412650965,2039095487,1589601776,503877036,1764527795,728579658,979521027,1963638802,1454049655,1465241570,250330017,132523271,1989374589,372334218,1090503279,770560460,1247078106,2088480641,1197294639,266275025,209748785,1577413228,2066278481,1476092598,1237355652,1383673018,1805055774,307868480,312694915,1140487683,2012137655,555851577,1486775087,192712630,490079684,1627871526,534187920,864028595,866174329,1633492737,1535260035,270150820,1296475039,1113703926,1898040038,1067604285,550641827,303400221,595610702,98733861,1457460753,1710656082,1676278902,686554242,316987800,1250149338,1551614051,1440425,1552528083,89979917,286625685,654844582,2063700301,1468971522,1933305454,1467429086,1179413918,1851968815,1367027979,1820503587,250354036,795778479,1119557334,804833232,455617096,1878443025,305873679,177975478,905204059,1312377620,106056698,871038620,956500488,162942210,319321002,679612712,2002011720,290386752,159614874,363695669,1406264349,247709911,934731701,1696847120,1743488727,207770901,1416773436,187896880,429414757,1683254667,989736563,495690042,560497833,2003784703,1768323784,779126735,1801518247,877201760,1095778896,640024951,49042367,1941356435,631180329,1025302830,366069110,588965277,1515584276,385504367,1241322847,1468767173,389660768,2099134245,598404330,1007023939,1160827066,14702305,95405179,1760297041,612464681,538781766,1712732780,69898207,742107020,1752226523,603664848,69420931,1837670226,1595726211,21509491,324512083,1849444238,1352681762,870962930,1241254738,337862092,779999251,110380229,519825699,2043107857,1794953854,182842819,1038607046,1132863218,1755647418,1266115665,1582980692,762102069,769558012,1901019298,271673976,1532705544,1309645935,820257111,1700009423,1173414905,192245943,433032359,1280533411,471062838,1422130550,701060555,1779171274,1843477030,907403587,1148752086,1040619327,170611700,1183373389,1353389577,1118513957,1634087721,1592555979,972087821,224211193,665963120,790946432,1117120883,281145596,866797121,1176618166,2024530406,1599904662,1365564432,592289615,547630490,576834204,182877467,1882334275,257368735,331708628,98865728,1183338953,467909341,1390983098,1724279620,1188855634,1690613379,1796651825,235633057,331397505,1676732506,1030322233,1159174657,1615010439,1061703116,513473338,1625681667,1881141678,1729890633,121041264,1595353943,614863419,67112833,1701554269,895413860,366619032,1117666919,1973224460,956681594,3671843,1046728680,1449877043,837956377,1067371878,1029981865,1919837734,1357805282,862192591,206836016,210015852,1764480998,2128766833,1177880054,1115313558,911867108,630995283,470886151,498637003,1469281083,975134916,782525734,1648060933,576719889,796792848,80043476,516026251,1525877597,1331722520,856781469,1176282958,259127288,662291107,404405810,1350620274,455194421,1040247514,1166412946,1375726525,426102711,1490291176,1760463264,2066585025,1015307761,1657910162,2084001709,1149136217,958226345,997420168,1884115822,12169760,837495710,1589819066,271098540,1107529873,1804551581,1555503545,2022675285,1946159723,1861687918,1628426765,553651438,2075617192,204713428,474051495,393677836,1395049617,1101069597,1659165488,158995959,168898577,355784166,1887517379,1310502923,1088274180,758517415,729960853,1480936779,1061557914,1449171673,189018693,1995724489,868303463,7644840,2053087021,528484316,899391054,435175255,1429507573,567847646,2014343749,841349674,1974919098,1234053069,2084767568,838102999,19813218,110422662,285719296,618842454,904522182,2022889278,603949259,1394113943,1081274635,2031706834,773730856,2032121103,952235307,2094558484,1129455729,1559604933,475126059,452974635,1167445904,54112078,1868221825,1072285741,1611802733,948763883,1690627532,393317553,2001736368,2040711360,1728874670,143497928,2061227191,425632646,1888293328,611796088,1138266751,897308103,1276291398,662388364,1853730667,4403802,1510403627,1070603901,691113496,1247559173,145020413,897314462,1687283149,2028767401,648451462,23742667,125511880,823212997,159527876,1334214208,2121205881,996159335,732852773,1285734440,436560262,566774257,1194013582,1494751268,2050176361,738785424,1164644572,1163048190,434393149,1703637996,659844797,172857997,1717904237,1361881071,428537519,1581950797,1336270297,1353628120,780493629,1307510769,608806484,376239080,1511360019,1958848863,392290059,771367252,632632627,1442406020,635951973,1361078938,387171002,1629107569,1161202326,1124261991,97123099,527224816,367300827,1933600451,1493882969,1478693568,244345921,1655008978,41563736,386838057,867323602,1393544620,69703912,574908992,1296255697,529377439,1517013556,1854601984,1151046829,1149647710,520998527,248778520,923806873,1664686963,1214957311,457177837,563835379,685949647,1604755354,1616407257,1036159410,426655186,1499453626,302703134,1394859588,1496603809,940177031,1962165044,1470233816,1898377849,972150259,916392166,724564704,1380716362,1457239529,1157992805,1005404942,770280982,292066903,1376399331,1454219477,1415993126,859297204,630734175,243410927,1111765564,38228865,104928143,1102841337,839893471,1268067056,1782150182,362270686,161936328,1918950335,2053409215,1478947350,367568345,1420266719,35873260,657211231,1293400187,1875991942,682154228,180743399,481207496,1457891935,834478434,1998747585,1576010451,1905496093,2038709537,1221268155,1743510154,225444044,2014463070,1439205902,373744475,137154071,879983984,815094385,1584343622,192242657,2130012974,1264219431,1892765052,831254511,1589780637,1720502885,1075716412,697092595,464966180,1539568981,427950779,1567501662,756472483,1733534884,562609688,1189755978,1255473376,509001855,837509742,260770416,1495384776,744801509,1479562550,1396482136,95103818,1846138766,2068881522,1630623528,1742184586,649080631,1278876411,334445783,725479863,1564069916,134904662,1093772374,1395776761,1319162872,885017917,2006134832,802970494,1612329669,1709103614,1203990906,1230991429,620756845,1495090901,1337570784,312374733,834643584,1326971472,185801388,30534116,1941101839,1440657081,1116700295,2041697481,1764423487,1805359078,1148868877,1229598118,1311106201,993852737,1140214675,951473016,1886978144,1274870154,1518155358,1473243415,936379425,845182395,1031906247,20850201,1676014930,864311218,5482838,1494467350,1534683114,1646536950,721027539,2051768377,759110917,2029001855,484800739,1597352368,736461759,1947165058,619299716,1651108144,581540647,657567356,314734451,17304662,206200853,1305659389,1939454457,752373257,820375247,2086637571,110173715,1475373390,144051997,1753619910,378975523,436517093,778047725,444385068,491611491,112749081,612049986,1383762277,67823032,1853844624,380030405,284544789,635827591,2000712601,2093569836,1955789812,324088871,1961946514,1164927110,1360365761,1368651834,1497721313,2128000707,530332608,1460243320,1472526729,343625506,1178391429,1668417800,305483799,1715261485,1978184563,297748252,668925498,1390746349,1779627254,1875324407,388715347,1103915402,78320070,840162431,102758848,172407173,2039290894,400064820,1943774559,1587241658,1790029437,222625852,1380351326,2014191731,129543080,396080643,1809552851,2128379766,2020729684,1434159368,1555086767,1177929650,746705408,1918625327,642413314,764775445,1416774369,846709742,2051061338,1272753216,532173725,811046245,1965252937,1296399782,1459246132,749068366,813615681,1221138386,1665193013,1906341158,898921991,2089236992,1493986660,1108346972,1915844496,2058938990,876487179,1553281091,249939522,1064320140,2116467062,1240077145,1171636292,697205933,1918741931,627102870,786121050,325566308,1820772670,680556131,1615923333,1977937520,488453225,1209189177,1167662646,313012877,183525687,466428527,752035985,1921437731,44853554,656262659,331310351,827313849,933635339,1475514327,399419722,3368555,729678209,1813982201,441847789,906048153,816882004,1493167062,710229788,866113345,1642071862,1658700715,801109500,1539957046,32607936,582189708,378379605,1881629095,298762774,604486223,1745890187,1164307204,2033170008,382605130,1386225383,83563491,1280713191,1001554108,1132061620,261167175,2081409016,2050087021,613409749,1211909887,772371324,934060790,56137569,983558666,1081711608,484196949,1479416816,306264503,1566396727,167562549,1625140020,849729076,1860543369,929497855,1394124428,259211636,1881858655,103553625,1103331540,1513355006,2130526058,755282705,1848607495,922830984,1660550345,1313854967,517580318,1864599849,391406586,1173836515,204029280,733898145,1812534627,2052327489,1117771575,28400312,1283269237,276335759,1322418937,1689896581,1712998402,648549871,610732265,1709563844,1212923591,255589876,978141727,609613307,1669484931,1243062403,1520724962,132524958,2059562766,1234254804,1081488990,1368900733,150338987,739006101,650225364,838873667,6449418,1776197142,1735967896,1814672161,1115025776,356715603,910306646,818560713,1446399854,224383120,1408008025,2075531031,1113066835,2089858062,755940264,977623451,1535447989,105807751,707947870,1983225087,334989062,908903452,1799576992,1349026670,403119423,598231287,742212155,1082876694,1982002976,139894271,1140373265,84627394,1990333231,2015611658,1714613514,501144741,1329515647,1053324978,1629985454,655057384,370748535,630186018,1043099748,1010216645,2070091499,703279714,1897292062,1458316904,1907785368,1126573801,59035818,1772380255,798112541,1584371483,1359145913,1691315282,1532418698,659732358,551343810,1159946007,2077648271,2029686377,788492593,716279196,1593302437,344447261,458052242,1799096267,535464541,1593941170,1882318155,577014703,283971931,1503939244,1013708552,1741318575,293785346,114661104,32071115,622751962,2021044479,1072235544,1537590492,982728049,470352148,623141803,1644690012,1870324776,1210676803,818901619,1521574651,1937385220,153494694,253716456,1886062554,888636935,80147372,1414108810,2125399840,1402472537,1368487508,1078674572,779094759,1206859716,1606979661,531737404,72230755,1870718367,483201352,1828968409,1631565035,707124216,1387898407,2105659504,902651784,825498561,141843243,60588371,770635696,1395826623,621972218,2022017639,1932274279,1776653635,1570152664,1996620052,1046898998,2045943397,1581712196,657006022,583617734,1042258037,935187284,868971324,1922349618,1761599758,1970355738,1672389922,1940631352,1245420503,822318767,1608991918,1044389628,652654229,1557634639,1163349923,1193403949,199071636,1612575909,1758663451,1959522078,217717984,38533531,844598629,328892168,1203978647,1580369529,1582311037,1114482173,1219692218,2059547986,1774316679,572187052,322341270,502390762,1920007263,805255416,733741170,1223947536,1018170335,39291068,385860662,1008439901,1977258305,1873610236,1950673359,68318766,128861879,1915316618,1347197877,278528889,1700384622,1995111287,1328543302,1593046113,797833589,80069972,1800019237,897251736,629844524,1406525814,1402403331,36095097,1023513500,968735526,662626379,1778918887,1957509403,656340635,473979397,1134470366,1393653360,1309954330,1899258881,572016400,2059105437,1794461922,783981987,1692418979,210719579,1949876558,2078730524,1875508942,1292624344,78638319,1750200125,636038069,2108943411,1955133544,52307291,566559138,1174083974,602027636,1698923955,1520917684,883329228,501519309,2037814053,1239696393,1080873396,1352683215,2084151660,631200159,136524527,407252961,48425625,1542596461,1474011074,1356501925,1904734350,1472816926,1860909955,523398521,138612196,178725922,1217595826,1657365865,326523990,1121840736,584757908,529721953,419682687,2015671781,1146982333,1553051543,907562102,1942159854,1560508905,1142927206,2057393988,372578292,1186933225,475962282,543264409,1681398595,478683156,719589136,733440409,1205864074,2000676233,1310060746,902517476,607043596,763031442,259586796,1708287701,1006899481,1756860773,1040222698,1618882777,60422636,1678256350,620926817,2050228738,824002027,1104108464,2124450246,302297226,1463472951,1430352814,513950563,119855015,526678103,53239492,1024154862,1908744517,954960998,1318769865,1039665084,1959860068,895795505,1509603735,490656955,1517284977,76261652,1167578593,1338576675,628460811,606506047,1428937612,815095981,384123745,999879122,1813506900,1118331369,1566838569,911185956,1913787352,2109038218,1807721351,1303128325,1621958298,459213878,1540917222,1969533858,1489928094,1465877455,227500267,461525271,1919495788,312170110,691548309,921207597,883672573,1321764689,94124757,2112661167,419100516,1428479534,1672256315,1178201969,1802082246,859532466,375406315,2127175395,267759917,1547185421,1945135767,1836107786,70291274,788149297,241856024,741691018,129666044,1554477149,1335846670,2117283679,146652855,82243802,71231390,460608714,1430806995,739803200,1723012293,1021459729,1529038781,569802854,799260815,200509109,1921689458,1930794803,1532963242,2050463273,1273277953,385641018,453999460,1858354340,1399939193,525426919,65536078,950858873,648103893,597234655,83814731,433117741,1935538367,714134919,1702564637,610868286,1356659729,1572708047,1546259776,732544855,1879859714,257097238,1447841873,353390126,2092664014,1618099475,2015217390,545517523,299492723,1843391671,285545501,355355121,241204607,357261010,1871708662,906649629,1907175813,2017784549,1323684513,1578572206,2019088841,212767426,564868831,353741647,2095601020,1352502474,2039629931,1865315595,305579468,691353452,194561308,203134965,1435564030,585869978,804466923,476729711,1464517485,1990945785,1931212691,467446805,1567241705,453195980,1846242904,471569830,1836942875,2107042631,982284524,964481244,1986729206,1896111618,1457011870,129681427,302176767,675200433,2039167215,1412598946,1649298693,785719756,395862558,1712746344,535387404,1843259126,866811501,1924347582,1895344006,1935641174,1236198879,1298755816,741419960,1319391708,1825891065,998663263,1426888391,1567471379,1845773035,234175774,1491135978,19238910,784787740,1161878040,1721270343,491496569,1184482671,523086454,1704429498,1780924959,413552578,1460695357,221527968,1497611805,904527209,369253213,776020975,1356141780,858666196,1232567148,1436716581,1287812581,773120014,74550945,1870530607,542235223,992616493,1822510673,1214909885,1483079923,2020161938,767811059,875206223,332937846,2124803391,1655885759,34690554,1833783674,1580771146,687751185,2118093168,1990248432,1849618537,1233079511,1684377489,281298349,105050002,1042095366,615807155,1288599882,1265787675,1750352798,168964978,1674479207,2039718928,1524913414,391352200,160862426,2126263758,189315859,362225320,682921476,921369647,689732141,505399738,2099448896,1022851559,1385436019,171159405,343199014,575902107,1487809090,373811522,1669811631,1307038582,1208002848,373359952,230944007,1678486867,1198632739,505055710,1204349795,1171987881,1124719877,1061989765,359905242,1187608594,2082081314,278899756,266680649,2083336961,254228157,1428612474,1991667552,1165258255,2105807597,634121796,1659615193,208022067,1994283164,1341094624,241083377,1884174152,839420050,629944998,464038198,2125138901,544319893,199421571,1241241858,674558998,692323282,1995214913,1270684328,1748462147,599424914,707219549,1331235136,1690223375,618231192,151233703,1028721688,1580307181,1738228200,396128071,112118917,1611522617,1548241763,171432019,1605231799,367674528,67628799,1131969377,1537495760,930450041,1736279769,305554575,990457157,1239711024,1606896760,930515444,281591704,1054252838,1469221368,113526725,2099574335,1661043570,1481797663,2102122841,1836036609,1157619149,1443308239,1453950667,336964781,2094845699,1668953453,857986307,194047820,420354716,1608077618,1213919977,241460036,641055215,819320304,1961766311,1811549853,1196093163,268699556,894757434,782481791,421361910,1090965707,771429419,1422438200,1866192197,426664322,1359484540,253632480,1885436913,945399964,1384627177,423702054,2033825656,1329738413,1020036612,1206033470,889464585,678568336,2025742986,705416487,1545846800,1558756090,311173440,1683620385,777800904,723268780,190878228,705901867,1205091005,296149168,848930190,1522128785,1575840109,373934886,1774129516,1130562319,1572393334,677058839,1186871885,269132846,2042207917,699310214,1261338636,1296105223,85814444,125687939,1427536552,1442227808,1280129177,1350825129,114715829,612076316,916356635,640534275,1808903053,1727762714,1923760014,801648270,934321461,1062953959,1643268221,1197468523,1308397825,1493150189,1951234514,1130675531,1557927701,520636291,2038435592,154808968,11484223,1011032769,516768080,2057267124,1242934263,157178105,1234887245,1447508851,1514315858,1996862968,1205183297,1237532371,2043186916,325994110,1272534277,226673378,633114840,2018722341,1438690468,2005956463,1622051306,618629674,224509603,375629566,1795630178,1136469996,1269040228,299060409,155916423,224465527,146622884,775450229,1137800010,689748002,922180167,561785544,123075733,1334108519,2083246414,1217496633,1869267958,2061162500,291063654,874064041,738294987,317892833,1501301986,1239458232,894687879,794564734,781274440,1392940971,1630544452,582515058,1819987322,227350875,104957774,237970686,1714892313,1995881056,1972615436,1661265924,1315225690,680415429,2014073195,1925963493,739048722,2005304437,1262546274,1810934726,2081905760,481760845,718934360,1767790376,1512301109,1860921734,116923938,37343379,762419983,1615961897,236197816,15226596,603371395,2019884481,396176673,1288556379,2017842194,606290,1819770096,673888688,1053496072,1978120342,994273650,196326173,1159705905,2088384996,913766869,956092499,764406205,183632518,1900547895,813924896,1021099818,823506600,1190077827,1985587493,2031296468,1725345915,493827495,117186813,1985059174,1010360268,1291845479,1729756,1659246704,1266535108,811312645,408771314,97410547,2062722448,1358138088,1928950537,1691541768,629926683,472190300,2123330788,1927455227,370956550,1209409672,2017136731,2004596437,933190980,745214336,1609316042,1595135595,1110330010,3569802,243384059,750931543,533038884,1991087299,1851680412,661103217,592220765,879011767,1080071406,1693878148,715126446,705658218,1028474564,822554926,136970908,248050148,786949672,104168294,1837622445,17038222,1797951493,153083124,1399366104,1866799890,345540353,1666912536,1316887461,849648885,1149867742,506854384,201275504,1746739967,1543058102,1740606829,629336510,30640412,1830368556,117837396,1563843052,535273022,1373111252,2030934881,1447958881,2020845097,868290935,1567333281,615872019,858482735,2096843498,587425799,911961851,895980386,1961590856,19324116,202288,763222754,1832873054,1569357288,2025522074,1948948779,274774708,323008943,1957283477,1298863925,745569132,473542274,933163040,1946034485,265068338,1608704475,1294509268,37786495,478281241,381677210,2093711405,600384237,1833053216,1132570141,1383509367,547779100,310945511,303941587,1005685949,2049484348,784214866,99374061,2051923118,855995374,128351101,1256107097,1989184793,1000991684,79503773,612836741,212833346,1152290751,1672620478,1280173209,1650337862,1067521659,1744882534,1743796205,22115840,475475680,2031271581,1035929769,149204551,159600290,538917499,942746626,1280167814,1168107639,95342066,254091161,1498171881,717707052,1995971457,1499879409,698186273,337861687,797273833,1599878019,603729370,1073226841,1719976288,1319188349,1488112416,778684730,1705905268,1087157847,690293481,1980216084,950004353,471975143,2087721878,135043627,460091246,1521380958,641524167,1049848877,1301040254,1569901436,1959136472,312811867,1173752282,516843261,1671539220,323492013,953305293,1479955301,1290858338,393504499,619068114,692337188,1872621005,1245490528,1403615514,257128550,1860520494,92003013,180402251,1892870468,2084195067,1093293820,286190453,885056663,293209971,437084560,368919355,1192711739,66641434,1768711876,1367729796,1974360713,1254260230,2091181843,76151916,448251136,1962664695,1156235568,1148971628,509200259,486811900,732169818,1653972246,1701708893,27339875,582388473,957194502,1325583968,136790878,593528626,56297738,2039240216,403590726,1296647047,1938127723,811219729,1752963831,1759977198,411245972,1809621103,857901550,663364501,619421677,1655917485,157925397,1251552463,1785948338,1528440162,2068408653,745572263,896952640,1114660191,653043628,504847038,729091452,1629001953,2056897401,833547674,1827481920,531319565,2079055455,218302602,386117467,441147383,1722119742,138051097,1846829292,1500063632,2111967152,974376824,1798246921,274415822,2129217506,1410307729,1482294049,1675438168,229137026,103418041,1237504185,654855048,794203840,333637844,558939528,434243168,242672832,1231210160,1352558992,1071003783,360442957,1995988569,2069166199,1765912116,2002413252,296340115,613913209,521885569,2013418327,1814211860,1858266934,2064389471,570627644,278639635,2005407257,1801870116,2062486621,2080005193,1729543651,2124079023,1415170764,1136678717,850423665,459180115,1407746653,1202743939,1501990567,1100787850,2113925983,216543336,1305606009,837365495,984107017,359983387,370915433,1194015302,1187657922,1821995831,1476040165,615436198,2025087977,1432157416,1861892701,1576989324,541156949,1381527598,2103659470,1728588765,559460165,1146009619,2034678100,569326098,93233880,860505374,2033562133,1064805501,761228791,1217211852,2094458990,959164009,9840501,229571423,1802081682,1283114742,1909930326,722542700,265426593,283132396,1385764787,1187741937,328516422,934018806,1121973504,615275625,2118072585,1401594829,1086031239,801273299,1928280089,116884719,186040334,2113590474,1823631682,2098245605,1532404346,1205770161,985418890,945375140,474812760,1773691981,2111919036,1258569060,653039775,1065309077,1796291019,2078432899,241861086,415184955,981115552,216920445,1783235642,530907520,2072704371,1107803498,948310757,337756049,1228813231,711827576,682918033,1027395482,1205982055,928802047,1896752481,1825499784,1161887826,1663070310,310515538,1318941998,1957607162,1111159511,1903548715,1927017521,1387785034,1869143889,653236174,452259308,115247155,864631551,1961525571,1615163318,534370653,1142025750,1080682154,1702615148,1816056378,1930859095,457774711,1592118037,993291450,1092252395,88618148,1367624230,1836475274,1526034531,167520286,1154082858,622190555,1224520183,1870334936,1734994162,633452763,1964002783,2016168622,1436349523,136679643,1108420441,950270311,850248267,706101146,1805929640,1487203547,795243106,1846319851,163220443,2063493783,1823791642,656751420,2009757728,432580719,444050831,96259981,647131983,1568021731,1600525568,2085714808,1555399840,714087830,1461253605,1125090289,1300527769,1348210894,2110308744,671591452,31138779,1024885087,702076805,102703361,243924695,1926349785,2067813666,1917263321,1214254711,1002443750,635183380,2129618121,2081628845,1293676411,1702351141,1776423136,387330082,1787057223,1531795279,59623218,766622202,559314361,1433548252,1925201263,1314346686,1381596131,908403603,1693358191,1001212646,1693221659,1145341659,1746854133,1065715607,1984377554,1703446048,1431579815,1234773456,170364594,1981969014,1474325761,911569670,1765178386,2032123534,1384905451,371179658,45950207,943861285,720206565,1136968615,1776266894,2104096757,1267182253,369157975,1445941225,386148762,320645663,1743105714,1556680874,1613410610,1970834078,886756545,1586666880,1645739826,1540608043,1092340755,1493898684,1371312031,1064730986,1308304333,1243711043,44834646,1110463780,1970695443,418720753,225831128,319270699,67318118,1690177313,1627354122,1057215814,1575554803,173146335,882748901,1233401257,1791918260,504511437,1349358087,84712520,1589903237,559115882,1003842423,1305242402,1738808926,172940685,1185470083,1866424913,1546227583,2056538388,2042200664,112752129,1556855501,256315540,1748866702,1116446079,365281419,808107303,2041121550,1710366396,55443240,2017017101,549465580,1267659206,1230601842,1461420031,747157614,1216927083,1486905971,1879256400,426392633,1943398449,1044619318,776926786,1737707887,609596415,1678305630,479534684,592876973,1075932256,472721410,1414360669,1750157571,1915119866,269250731,458729589,1054116834,1592834379,1471769973,735827337,1081639201,452632585,357542321,2019216293,1133174413,2128146432,793617067,456146875,591489609,70379411,1853086997,1784433310,983022645,1007767306,1495791023,510256350,860500324,1204103800,777010401,840559224,874740642,1359621163,1700089716,1276802004,1635484916,1134291443,1920163807,1662091349,992412039,1820627009,449957619,1120857795,1688764473,682650044,1821783472,813857940,1578553645,1857821570,494680963,380735409,1869127505,363746067,142351577,1358599561,1506565520,1643302546,199039197,775865726,1335766982,1549226361,1670744693,1279430813,1801757386,1636351233,673425304,198470673,812580949,363372545,70893134,2019325332,1839240101,911964003,1127762922,1773311374,128390363,1587578740,1550419742,1571210222,1225317173,907255784,650717888,2092420361,1571008173,850754321,1782908996,1243108022,1282852827,681767576,908839584,442294905,313230477,1050504971,162403549,1753993804,1691507792,564107464,791813241,598850742,1641224876,1650493316,1050575877,18845645,428336326,17389736,1054708682,737391391,842151263,1500787331,635820434,928539900,2130400464,1241987791,1994686891,1375982353,973409877,904528518,1727729154,728219020,1422534388,1753961862,1296855992,967534935,768548803,166065090,211393668,852377484,999311793,1933288090,796033266,1399546007,605218549,1716644294,1454115539,732896040,35916549,776122189,1251397522,1675222945,1007893857,879683081,1536004489,1627270212,187696723,310506081,685836017,1179142257,1740507445,2036457320,169963366,102788132,901606970,2063935275,2031754182,1128966145,1065612770,615508162,1786759389,1008488244,148300614,1735901382,139780548,772628635,1218492711,1977263506,1227062471,1236324386,791760215,1174891561,738113348,367385117,1586397480,599306633,103545344,1426388200,1329825606,1139391114,1539057941,1893878764,814123071,213960195,228825065,1941099756,1155792879,177391932,610433389,990795133,1756659886,717125349,1652110552,520003485,1980867214,1492265079,326809875,1455429562,1317314086,609081324,1322926925,1036785055,1875853885,1837513131,1042759635,1703780653,1648959790,2055044363,1701681319,677459913,1355323111,2026842911,1922408093,529447577,1214249191,935723762,848627066,1586100185,978120858,596265700,641522419,883929464,1251890967,834641037,330733208,1646344137,1366123428,226430691,828801306,1470918785,1692230960,1933806027,1557682868,2060690497,946456726,1048534087,923303651,1026212615,570704312,1360568729,637250771,471969358,903450730,924094095,1455721482,961702429,1190832379,701474510,814064671,622994087,1687654625,1516261271,1035101503,449065936,1518821955,1273933410,494986543,1016612558,1910025866,1087962085,570072476,818143475,555930174,706654067,1193182787,1778368173,540927472,198003846,1428323660,670201404,857148845,1849495640,1575161661,1658118725,1991452142,2079030736,364555919,933042714,1870873999,1427016712,1408576188,1443932011,636793844,1950127334,120257905,1106644073,72868966,1255661250,782567331,1789219010,2096532207,1523600828,659900523,2041792826,553161327,1582834671,1210035474,6822301,2031672494,944622941,286330371,1687666751,593240793,2090842109,1093945231,1141344897,885039499,1510423017,734634734,1811923278,1344516011,423071802,1744362960,697704489,198511994,438396917,284787866,1487722930,196275305,2121557557,1876421390,1272061455,319713142,920418562,1796308797,980670876,1200461941,986080913,1586796275,2011881239,260915681,2102382633,1184245368,994362380,2039441101,1460869756,1577938703,978374932,1970243358,499002653,2049025045,980592867,1538751420,635247307,988978097,736961336,479680374,847896347,1978157800,242573149,640666581,2063736916,926915539,1459079536,657492492,1665556137,1355706513,1933065089,654550110,572520461,1921619181,72861995,72052542,640308120,1134821234,2062182003,605314833,1425809173,1854344859,1608985368,42263710,67267889,632765080,532235796,38961700,1343192632,1699488804,1437943482,1494121710,1693487671,540803983,1648844821,73285650,1146520363,291982189,319794616,1061094342,1667712067,990592526,1231647601,892610093,77894866,1556031191,1435257920,248409387,139394107,1966547999,1482002508,576714371,2082325543,1411924027,511002599,1049754494,1019584095,1644965196,1125429679,881579333,1992961595,2112953292,47350475,920654259,826077612,2076531721,1772699089,1488074601,187718458,1625219411,1950082470,468626603,580206858,1550811039,820783442,2005994348,35124973,351017345,504673643,1721717643,376460988,1977874189,1461992047,465656999,889856422,1924617227,120734239,2064151259,1431611844,1099131810,420161412,1714128192,407532403,1757321027,1641483613,1883758254,888832560,1764438501,1448275459,684799506,527171902,359551784,815713983,1925769596,351194522,467413621,1326164602,344982976,915979184,403786982,599867733,137966154,804809470,1713579979,676849676,1888259403,1877171188,895648282,1380677037,452742086,464680066,694225593,1126006223,1680032256,1075615293,319611742,947657647,1948202128,1313368914,1071050536,1318851645,35133358,1638310438,2126829864,1836959152,640462228,1424656793,879046930,411970358,2036786128,562540408,1764832389,317611755,1099685743,293051231,1772663571,729390435,968020701,1756951235,1647285671,988925246,1708407548,2041052377,163409734,1905407018,847362549,199425925,1508051765,1597064797,2114902909,270063568,1762136445,1226796745,1752343862,1740956248,1226073233,1091401133,1515577193,1718332734,1395565001,548457553,1775097187,605382830,982733137,867271879,1043165514,2025581681,891491772,1763672483,460182313,1277410819,1288860424,684992866,506750244,411931570,57571457,439737987,1293111491,322989554,409479590,1867738419,481657763,732216423,1680594354,1181809964,1568780832,1285720211,692690627,404848922,343694832,754661943,360915358,167958486,1736680781,1509887854,170260159,1062524984,866297069,1487952052,1538269429,1227339453,520949114,1295574367,1934876151,346985982,1988008552,1489071605,1718533715,365280673,929272047,1141787339,1202454303,108286481,1597834592,539414463,1922779674,1739681161,1752902944,899924454,1588086085,1261539734,467235637,1442194515,226218126,871153386,710590407,1424296464,1005210898,1608282564,450907236,487850512,1407943000,264853314,1641750600,2050453830,1366213437,1794229619,289086753,820781378,1752549762,852374551,833834687,784393121,1946692419,1911089297,1390347291,338609055,1121474899,1428199,1035495823,1201275199,1369523646,445074743,741880998,877772191,102042133,2090547458,1987916805,1605428249,1638860249,408479865,246696971,196700587,1333091224,854483829,1678592210,132636175,2095527120,61923794,2048634301,554082968,44781935,506284379,866171110,1929605057,2081408468,902082987,1097955273,283568484,1656931468,186185641,1521765141,2013108116,1193177880,2020181053,1955169682,675477556,860296464,1550154420,1878033925,1665588521,1940060821,1061014492,1468869987,226526657,1351814553,936279182,796578190,1098962406,2002846084,1719241538,1945832614,1021755045,1551269445,1399770530,2124742262,1977381242,928239279,263006606,1624958531,1846795405,914546997,1858809343,1088817832,1680977014,1680329107,741554291,14695238,1099778524,1855640959,1385742903,369617470,529292497,17235983,1166608726,1510052862,1739576284,2078704923,764861826,1631497257,1132536129,788221311,1556800031,48510323,150550698,2130045141,171488633,467732540,1672442543,703915068,1037815795,1804439139,701759216,426623416,502333256,857239608,1568162705,934640620,860376518,267509986,1193510267,313647805,1590507956,1305365570,733475434,1751661496,1799572938,399941572,1312242811,1019718728,1994353680,1970498974,1076861601,59542211,469658600,332866975,186579259,1361317510,925414452,331834065,375698962,46697852,1159799526,497383299,1394626121,1023810439,144608986,122981421,1049368258,283693343,928288010,259777419,964981205,1508827763,679427138,1829702865,42154159,1773957152,175770553,743402539,349006939,1652610024,1210195426,1659713825,227975091,902966669,1986012909,792726242,1979610412,1081626193,647619459,1077570613,1962925168,164134775,1156707971,1383875033,1038400679,1722458889,1165964133,117032737,1359682138,2088577864,1496558266,230906462,2054369815,812282152,1619362519,1714601119,152598135,1909663136,55595169,1288840028,1164998079,985800972,905046105,823479266,1809498404,1413419105,275125438,2009651531,1508904894,858211102,465379081,903816194,841581455,1003931239,1830959517,917367857,1166313444,1494204637,1923644660,138059085,438471374,183049829,1365020682,145014127,881646217,1174428786,1795777603,609802238,1175518344,597454965,1825660369,1914765136,1800049717,2031492938,14426158,362078878,1934964622,1076210920,791494686,467021141,768272877,2005329081,1934811226,1096761522,2103794005,1217477876,1845343358,2024354532,1769999597,1516333738,1192887946,1544658847,1188565955,1016326232,121058074,631349640,88851140,1513700863,1876846888,1654987811,978136128,1405203809,820564520,1630444598,1293117336,1639620153,332389486,2022969858,1029318204,1473434729,1061863167,1281940335,1310551158,2073565491,99427836,57823179,1418872988,1501188184,787701112,1908796311,1367604545,1357575505,141414137,1862997722,2016505479,146703488,1005522496,1109113997,608664242,1495990265,1539875556,427839409,442480607,139512154,631133336,419486615,1289021804,875434525,974835198,1285959046,1772952199,1915018003,113917922,1364821037,615665746,317469372,1686328752,1476195275,2009843938,48080447,308221595,118543457,2063411865,1596090858,713255928,1043159811,2084743729,131972450,192122478,1646643508,1423426266,635691903,920034924,1240102298,636669524,423341719,1452769128,591370740,126023791,1371020228,1865460316,1659264037,1861956748,2053486740,386411843,279818294,234813301,789200874,1055827714,465924478,748373960,995990976,402335882,2006440335,1364325901,408569149,1273861874,722792330,454506899,1149355523,753049829,888700935,1308772748,596777263,318622853,1444756949,1767005674,588084926,1654947788,1375313556,295633668,1515149407,647264108,707560055,10380580,1283402228,646515280,1696134679,254907597,1131189282,408494098,108572011,1657176692,1015073022,1484039436,1535647025,139767980,804545440,191049869,170804869,118539895,169120033,1859892502,24459040,2062261502,1300424528,673082022,1802486132,472426821,439682031,1339363450,1105491872,1499505519,1025472641,1509515884,369646612,29642054,220442769,1784524666,710816748,1582350643,264442830,621411833,1010333765,1520459265,763271142,1995100145,1072449996,1242736406,887574283,417424290,1962755203,160145583,1985793969,1710940986,1829856868,9838810,1912601406,1846697923,989229812,1491033331,706089602,1048182848,924953248,1889774865,1024163865,542658719,971267778,407000404,357666273,261314599,1906646962,2105731003,1588152340,115494311,1495370257,736619745,1424426055,1391242601,1866012212,2087323294,313765351,1351253095,295722848,419621280,1420099670,1949484660,571267675,1694458443,835777215,902616450,665554880,95406464,1641830935,23587658,2044987678,326449781,401644954,438626945,2084319826,398670885,939452932,903231852,466936933,1955859295,6340409,1102593138,904782289,1658704771,1994892544,146512621,2071942095,408382422,642034824,644056362,1474845585,1197663045,1550526051,1987716713,1407069519,957331944,720628414,663210876,1692617049,552666142,463670770,1931650793,317712354,656482640,823631559,1376946854,738579710,1425453178,1183373309,383097090,2040935348,1636473216,1941457095,2046771638,480991574,1542148962,71611028,931955005,1867769685,1745382079,1657373359,1345485890,1241381692,2126383013,883924786,1140701189,1743162679,854161385,1572790366,364582928,829342745,778019165,575008776,1079214171,1055503683,764511481,956905868,1508120602,1802266792,1265037299,42473988,109939300,512194489,592342836,1382830127,456039880,863664506,89949589,1057468613,1337023454,412306214,1705008403,1607553279,1404360535,73141716,1114314441,1376047067,1119427779,1034307925,1556048533,2039791950,533528556,963325373,895073165,2048415958,1114424443,703653394,1648278841,102448236,1717699687,411712164,1920001010,1156248010,2075515649,441415398,416621604,1718040481,1737581016,208067549,1157534074,655563321,614873131,391468882,537407630,268175878,51854406,718532925,1271917892,2072489666,3694438,922249140,1915522720,590430927,1996316586,1068855838,514292574,729385245,1031773991,1857165128,163850414,1599419483,272511940,1295138816,320791347,1744116935,1116940310,205044838,1886262241,329747747,463283594,538363824,1400952741,1881293638,377422350,1627102990,334188911,164034152,781037084,1293046627,1910405477,826209637,1885156918,1260095357,250528540,164192319,419873747,1103853505,894052335,1036634567,562623370,742783628,388477196,1804594949,1658435492,1581901,567959566,433111600,774642669,1186848123,1815249535,533103019,1856275027,98258821,297693162,519790835,1840380354,1048046627,97413892,1358385370,461395686,19575380,669751838,826936651,5746961,1486993208,336907828,1635762721,565418172,82682653,1247498785,1239546375,558469905,667605535,752464771,248362901,1234212514,1162166687,1999499997,1852003042,553839755,2059893186,1599531699,1256727600,616530632,1832777431,2122979105,1662392986,1497433474,1883788632,1904243895,2985990,1894287583,1605776082,1381953937,1045200424,1583465570,583319110,1675672551,1677119531,1951046479,1745070460,1124078684,1757882962,1388371650,56517961,853386020,1836695853,666715575,1181110636,1308618657,1149909704,1667181100,197396583,1550724976,167111018,1432676932,86610651,2061660891,1946436105,791202515,1458125153,353727507,625073036,465144932,1241884538,743922734,2036610585,329512190,970096960,129275537,639077253,1850778122,1166723592,316237235,1094976504,292609900,287741112,66095261,274437551,267562447,1681497706,1340341046,972506354,815845170,521583333,1344614334,1175564604,230912243,149674290,1143288053,441050805,1578964936,730407873,2072305074,1883447913,1991255730,2128705253,1739409821,1657268470,1062108534,1236451114,981285254,243484649,583565881,860349050,1041672171,602373192,1580992540,194048808,1515723904,1739758968,1709152187,307138043,556617417,393697716,962723321,878084779,1381594243,1949690115,1548646585,1053195077,451217771,895767724,1803169011,2049705196,705201543,1203594229,2090452776,451440184,1169022183,1053717636,303576037,484108793,1288176701,1876636809,926525168,980835607,1031692541,479026071,652552302,385410042,1913863340,626658812,1611511943,791486862,96891103,785105294,1892613850,1391163588,65606341,900797089,2125770270,871299869,1085425886,112474801,761955075,2030244077,1117908537,1036727908,995309668,69931113,1277662360,1628260632,381452460,132089850,421870609,191861674,1837356642,504841139,1736539237,1369365130,2095076700,1394833781,1960141370,522961572,1384548649,1488157113,792547117,1785989232,1146918972,1984835417,1098135214,947871849,121415894,196589925,195404698,261905830,1016174412,339290111,1431893043,1742246536,346184342,109999394,1277997431,229157471,2103608809,87642557,224237484,200284737,1290531293,606887646,963386123,1972004904,317156759,1330816007,1959476615,187104406,1040873660,126095717,1921542262,1502546103,2083114279,93504098,1457651205,1483918459,642813632,1282598191,1522450149,740851246,1963681744,1628765189,669429515,881384895,1608215962,947507950,2121303693,1910709778,300577994,1061329916,310189814,1835445565,1357750812,1602884657,435797243,10781400,686198606,1368573385,1400520881,312495403,408429313,1675787547,2045094989,1910534604,1611884809,1654987227,666414699,543418149,1985254043,1466048617,1127591946,9803959,82738250,85347276,200870258,1562253138,119331241,1181231378,1093936352,1040563658,73343631,1796485063,1804344469,1638926618,276327552,767988294,843668775,1349672080,1247313332,1198361453,357759874,1996906447,550078916,419656433,1154112564,1544657656,327404702,569652305,550296419,486987613,41484461,1825934201,1668929798,884808174,376006665,66960848,1337790580,232885523,831978288,852952508,1982872083,175721718,634079906,708206264,1418633351,1138969563,934897878,372043948,1256363103,806563126,442324225,1676652595,1577265280,956271361,1174642520,674359935,99858909,304939855,1063914580,1409227856,1699188154,1741345596,999647030,1033917205,148066245,930635503,1776646315,1002900947,217067820,1792587591,1701926246,47621931,1164756634,2052476944,2008148385,1864488439,738474973,677730817,1146392521,1955390544,1890757168,1327209342,1213730965,713605593,700371117,2016433906,2015640411,684883049,2049979743,1275645759,1825332132,1382623087,1713722257,1328124021,721001754,55374602,1529557339,1682383330,428914226,1763380107,353369450,1056098143,560018210,1759669459,2042420208,1116225868,1373865429,116598764,1729913131,482551209,1331718458,2097351759,1975944923,1908115650,677240956,703471060,1932947390,1949046063,625910208,116198924,2091432050,772506786,1280439819,1699266314,2122264667,990971675,440919633,97955281,1566941946,1370452658,616142090,1226102232,981987456,631559409,71698381,792141369,1010765167,1575478781,375528849,929302825,101738010,1015220364,2109616894,1378995419,521965630,213585147,249861075,961493609,2000215003,1388292617,1971150324,764618666,1449415281,221204111,809389673,1616090241,2121831703,1453259461,1445327997,1785681934,2022487174,977813688,926896178,552716752,1802392406,1611393375,957526365,1315796185,639337530,1256767398,1369094047,1098989070,1436044591,1404036464,1321772025,37102427,37692705,1585551753,49275924,1794701933,801649623,1356446086,1185149016,1278992231,1065409341,456742738,1396509389,142728274,35500046,47000477,1494324050,528340891,1020565897,456685906,1489363171,1581040180,254437009,534509737,846076530,2111660752,2002732862,1192162265,1898380639,331254112,648624915,1473288443,1101932559,689314681,170162022,1230845482,1343088114,1997125635,299531312,1362753851,1086025864,1393956134,461248851,2830381,905525077,389245033,2002903986,1917424281,156935545,82515543,1779057395,267269470,1283016112,1145732511,1516212709,1839162392,1583031430,1226413617,611076236,654479312,534627689,1992806691,91641704,1288931731,1758213427,1421636905,2039659741,1914330617,1187261886,316116915,468564012,2010334710,1061040460,1439941396,1172322535,1699967332,1745698314,1538170890,1853087898,1573587457,1181888928,22362745,791469004,705016445,2010088326,1426524864,248780280,529585786,849376568,1878642337,391327398,1621277926,1779469508,855156666,574259506,250257761,558475002,735227007,544242917,1910283479,38854897,211649735,199759954,1589933561,796144219,508914177,2009966142,292003449,1280601098,1599407823,1211312717,1858265001,1936986302,893703230,1939722477,1850357344,432786430,430707365,694269918,1197260432,626611425,426454683,1651554010,1019617477,1272134373,23969435,195485871,28746439,1730119711,862247072,674850519,1244304189,159413952,1486140768,1626581347,829173617,1859050632,1205565962,696055150,1006243360,201573927,1817892876,1500727697,1710266848,1222549152,1302806110,1915276464,2079479353,946773359,1929152560,727348798,1891785446,836970499,1680454282,866607167,1024999895,1115576527,1897683446,402115685,572595368,226125912,1910566528,1934449330,1102285751,810691654,742751968,457378533,1224040556,1510710510,810764496,1595668073,1248186117,778415208,815198191,1357587984,162506987,150118394,374666090,2070631105,1758439557,1461614635,799097512,1104542050,114719766,84827304,1729205328,1801382755,1577520241,497158471,1674390278,1629960385,687677527,374691655,1628296389,17074678,150093238,441376016,1815337826,1098383914,2052401483,1593271767,1283070742,1900657910,637429156,1410750306,545111597,2028281487,2101520174,137546173,755171546,1864809238,2063408574,1377546165,1049284939,43254811,434659823,508452815,502561677,1710528974,326074840,1771115392,58790531,1978785979,1985563586,1976195446,1374426751,1488168212,553778822,941270537,1054688044,33431535,1032766597,773529683,1496874631,755366591,1182720569,941582356,492097584,828515144,756372461,726957529,1952362995,1583713241,899699221,934953378,1626106670,609166507,1413379128,966352398,823309654,857372537,625385479,1575776104,235096929,1887585594,1890765559,879895976,1743848925,1158646341,1928457242,48237749,2013225436,1340632336,1068976140,1410066409,1323574191,1446400090,1120297121,1924154148,958453444,1983256015,581481368,1862386796,566299778,1074381335,546166607,187418100,400286594,1064635277,1069609674,1935229834,286557474,1006192772,989300577,198592601,1422424063,1595435642,1861367846,2022613570,785050826,364891339,1872786692,1704547628,2120027202,1307869516,600541758,1012414690,1785546005,15984889,481981273,1265766720,21997857,1968537475,1995463729,77153511,1285812013,1761461668,1541233650,523090098,821314271,1009854308,2041663705,1733251458,967157763,183420675,1611465477,1052997595,1254944665,96078490,378500424,1354307405,573071963,156127153,894466195,1466548426,323950937,231069395,1591960862,1895503972,368928162,1311662774,884201736,324254987,509029093,720994631,412669360,680031899,1134955667,1316127888,347169168,594889002,1997689958,1948738472,197977252,2116972303,1707093933,1973255412,1578661816,79242103,955266093,2005062330,542960588,530319054,1933975208,1133780332,996301780,790581902,1441969599,132915375,1859882026,1235586012,1317776684,853946501,623835677,531552657,1586497789,1361394062,491237897,2101787929,1290550634,488900232,1148321511,624141072,322054101,1977024668,1309529096,230265460,2015660166,568298780,1804198249,1450719238,1106239,2113342382,1968454764,53052043,1475099916,441078905,1452605692,1128936953,584262642,1088230925,821666578,181103751,1960250999,211451534,1279589762,1611065558,99942819,139981680,951458229,130162184,258394228,1163715738,1728163337,329377042,1208725494,1815345987,211216195,1188139862,1215426809,1149839517,578003066,651020806,90685660,1191227121,2053802742,1463566133,611891062,140532418,1241852683,1961048548,2002748017,283594472,1615718623,1722138209,2067600545,1698759729,1694355909,1538351181,1939856441,984414097,1924721618,473612345,1857268160,1876006766,524806701,1724892570,147503783,250387031,1794906796,23212802,462333928,986530742,1013923697,1335200253,227977348,1077433214,70882876,1492952922,1721707023,734387811,1085874276,1689033068,1664634899,1208618459,572611383,1745019236,1135294099,1070961517,1298834743,1050180063,198667393,1259951633,1087018804,2086570677,1471083847,597805766,222441486,1633732930,1823629820,777650561,84385166,1498683423,1590119124,108297762,1076872379,1645621380,361566203,1280501354,935031394,1303192998,416124539,1345124646,435109649,251502436,224862518,453394887,1455357621,1013824789,536247089,1889190753,1041659503,987782572,729446707,173663266,356915739,442342833,434688871,730420672,199104222,2048720989,1675534831,1337399461,1585241027,2001034993,1701961488,229558285,1766939470,1570327893,1215142571,1570070697,1821818108,1144251567,1214389403,508164765,902797150,2030390792,1788730992,411239975,9490404,1495469842,317457913,1305510812,1634743541,929366406,210207343,275078474,1279103017,641576671,850800377,9734386,1869485299,788368417,1854912761,2090325962,1069198205,2027921096,1853943144,989126596,1241763701,1725322158,1831988521,484953584,1245335637,1362679724,167634536,1341809685,219577139,739433797,1118729204,1726559490,721346683,1030499629,109440360,1899991965,1362988740,821430713,363188471,1229235047,217616529,680554759,618996400,1915475003,1202734323,1824603951,133729136,1343529793,1689934512,1470317920,991057338,837384892,366408891,239793133,287825190,450141348,127848873,1973855773,1187592498,2031921723,583241694,1426335461,1341041271,799705112,1695954337,731548664,640250400,1616168550,1778527272,852833945,884758724,959261658,1053217900,657003149,271786129,1707991593,1170542519,1365751653,649087561,313927185,1174760651,2053887066,1481485472,459441238,1150173242,1490324855,855377176,62267225,646049557,752118855,962733172,531769048,1417684918,1854942739,855342951,837405072,1901075453,437673891,787345610,860571669,575060463,1968413838,1730100932,523782799,395284184,94174814,614715909,1590587047,1437546370,494828166,1844487924,434916620,797551198,1631679897,204001194,571546918,1447579005,1001637023,2048181187,1171639707,1793127863,66023652,127986630,1144817633,640468560,1460731400,1344892431,1823237578,698455464,984049675,964243243,46217425,672739595,302414581,815061141,948734896,1830068372,842915862,399408413,873099532,1822705962,1448158865,2103857620,964634674,1958975392,572179099,1369049709,395985885,1474542958,1740340115,1524510026,1891846852,136134700,1299636050,1815292228,1424161976,1196069964,930943824,851630574,701601246,140169940,1961072567,1514927257,1166701417,1198708855,1837404129,1168638939,290672925,775985876,1767609433,500006593,880669602,649102459,1427215672,1266705567,1468153209,158370045,244604705,518207499,1750099925,2023735060,1927875373,445672895,366035581,1236565891,1997409753,1382774379,1717436577,1563231068,770156070,83811968,1783107992,1808623357,1335937863,2025511486,2103546307,1868912577,953899321,1849071584,1185938606,1322956293,1001152444,1119075540,627381860,418499053,1288036811,1014938352,60689949,1676839010,1652465035,746598198,1586420949,1374691558,885740852,2048653000,1811497125,45444110,558008705,2040523732,228327705,1966112000,1452533507,2095660073,1012272444,1390698395,184973119,1142342970,1324933571,2091632765,2070656047,217376981,91429051,1133147246,1429900034,2112633519,1239593351,1612319843,942507800,2066459740,1608411304,1066924142,1293884040,1556694490,537218883,307251762,1517603909,271190914,175768752,2098926696,829558875,1134646329,1708753391,154423121,1335711307,483423747,940279932,1634760348,1307451161,147006546,575663081,333286637,1824297400,1818499929,651254935,1059125287,1817686181,1556544302,735759254,453531586,134652032,647215161,1446226296,31404558,1858822651,1024747848,548801111,2101419291,1592819342,1874035064,546518721,340343482,269356300,961274560,1079225144,891827328,698619525,281666521,1160542391,1641625184,1274248592,600104259,9981470,1730260423,830009613,1379667455,1014386203,1384021773,1046031020,305984712,154509115,1916929211,819229465,1176584834,1761676840,863983133,1104017108,1651519946,1365873023,90770432,655328665,1198223871,931901389,1534918952,477353114,996575291,637558304,2096509619,777763106,1381797931,187966997,60657933,1640452179,94954105,955333960,973329064,79741752,1668246454,1813348237,1571996822,317082182,155759635,1848935934,1984156135,171208785,1586562548,1442831650,1391587675,1750354129,477175174,901194905,906176640,1104784813,1281379738,1505397117,2106474573,463522375,292879798,2031062485,1545274163,474881868,708813991,1612155418,1143020326,325002095,875258951,1792026285,255092662,1605551576,503247835,1623383936,1719069998,1253432454,1009450329,825626930,1556933374,107827717,2061326352,569792771,45608237,49578545,10759772,665838002,717742843,1392034529,1967769598,1163902762,24160222,643696964,278130454,1073015024,1212511733,831409078,1020449564,1501118842,39790476,889924177,17214090,489901284,1446385746,1995533026,636558685,681975671,1795895032,1778428310,1393820683,1904737277,445143013,423280410,1763588911,1748504299,605941504,376342626,1201878916,592427332,1134509768,906069344,1673173206,409224064,1581516811,1176762236,1930995207,1035496540,1336213747,1384163143,828824652,1413236132,741957692,433794990,819576206,1218207209,1676307147,1518346327,1708047578,523666531,1418249944,1899029047,1457347340,65822383,989352361,1295324110,1447229919,765241234,706447463,881759959,621644634,1942207292,1728949495,1046888857,368924880,778152981,1116018858,1142938169,200338469,1116329433,188699444,1932038804,850891736,540979974,318287769,821725636,747501041,2060903479,1628504873,1361705469,1420021199,940824266,293736247,817382816,387721181,2050033903,1678453988,1997919634,181032498,1845729352,1815078477,1481360650,1974299773,1008433748,955985947,602801615,718199450,542826738,848362945,107905776,512310432,678011799,391663183,1807883519,1331120108,402864798,272529928,1656835191,493546522,1357209253,129974974,877674853,2130252075,29970053,1982239905,591341165,1335682548,1163788265,1066359869,109352681,1773398718,543559448,995550357,471791131,1605524416,515282970,1426826856,1666081239,477188988,1886874012,1596015430,837430224,441993237,1662965550,1375039960,1862156522,281295918,1946196558,711451,1311060168,1910515656,1193897682,499729663,2020665639,1464184462,703488372,736997425,187258520,1596714869,1584148395,573173973,103319886,1356097810,624697775,373980807,1809559693,823331467,961168532,1685162674,1821476694,1267871003,1673800864,516486921,869268722,400262410,87826253,646405560,81223781,916954341,579401218,250645477,1464811179,33527812,1853092955,1698449933,1098740346,466186577,265152152,2067853575,2117128335,2066323202,985779794,204137936,494680058,1135150377,875843702,1254387586,1673806488,290984333,1122697071,1643768754,987947175,125496271,1543630898,119384620,2020865686,31155142,1578306042,1313209160,809114730,1543140243,594630053,1256179475,1293777847,990595870,1783428117,220389973,367278525,629953705,1143345541,369079927,961361882,1785468173,1756873495,1187120346,2096654582,1394587510,1467613500,1726174577,178767399,104175811,785832252,1339841508,1177478872,1739541577,2050922514,692977028,370293678,319236393,1662888857,1283447700,1405889119,579047685,1892752362,553720692,1400425372,898534077,1756363482,597039232,1514523686,299092215,1025410498,2023123365,1278252558,1784002794,702082898,1565705955,152442834,828836612,1983433145,1613165922,927328299,697698431,2002128671,1673389439,946833820,936344919,302913249,688359734,2061826787,27059501,1680119951,1225157344,440878161,1044230766,633633026,192791399,1514901813,1063409557,53291879,520050299,748382374,1623762190,829169835,1202440758,630077767,2056105088,939550009,1894109685,1394771044,980586871,1603558478,1751749175,1943146128,780496331,580695165,952942582,336593964,268870498,1245381203,1266403208,551693290,1772017102,1877368748,685776154,1920311347,492639931,1102054667,542842434,900802862,684696802,1970396760,1426636501,1012901751,151751122,1597380449,1577998222,1815838555,873053377,838920084,36967137,503092959,92887553,308818933,1576917594,563110829,1468377357,865789319,435142582,791751354,1966922215,2006405340,575180659,532894797,1840663414,1272713666,511438057,1972856228,814199086,2049976229,1054713548,1074641665,790144731,1818214692,1625725771,1642975149,94459281,1280020028,1818008411,300911410,209276175,731443518,1430014383,759719562,1055736335,365342823,1088440921,728157335,484398759,1999767513,1602012325,19406043,431805162,1869124217,567482749,49287935,1648900561,2082565986,1237349376,925921468,897461067,111560941,508368155,1815090882,268363779,678835012,1645614241,880492166,1867126887,332859447,1271423776,1947123153,229801439,82764254,617110806,2073267954,61709875,624970189,1244105639,340580769,1905075725,1276481255,543301094,627204942,1315979318,1971087519,1024107568,285330655,2118452407,977886892,18240305,1449304938,685794949,1203093274,1116353697,1499170728,1324265183,573891209,7431545,675444106,1329457360,1891872598,1000984110,1668417584,1379204920,1023308579,670299926,1905340671,941537914,649356650,1773522113,672374141,2122806245,421648170,1253790054,856722529,445104594,2091535795,416226190,320220931,1931420011,1971015932,793740975,771697527,1408139721,1472076005,1001144028,1682339925,903169467,329371273,913666594,936656545,75379524,243978101,754762685,1651491847,1425118047,689020555,1207913438,1825654697,222058754,643674294,1786966555,950949201,759179683,1811335413,2016975765,1780276322,952387092,1158944740,1679364952,96245732,38664960,781363394,1760121841,1042870553,517731431,879422353,901225263,137571622,23282621,1031814166,1436984747,631834164,1381671436,1960133975,690798751,434767446,1896258217,299697465,665962307,1834460382,489582853,2039439453,1355945109,1300261353,1039428976,454041886,1674509074,860555618,442019955,281666310,224313430,179395954,1033195167,479045198,2057745429,2001349993,1357107103,1095649523,784974800,1258538971,280552388,1180498945,1418565537,771180635,946330255,1853425011,1735237092,117698408,864824283,526550333,1229596374,1219101966,263084457,336160275,1011772827,1212638481,1119948715,825538339,908011543,1457504585,853291132,1921618944,1764596818,1893872538,892076606,1014870128,1372070191,1531063900,647916809,63416250,508219190,1427235287,412481649,1508917739,457284493,2030152205,1261368121,2105243491,1468561125,1024138983,1490828987,918997753,998184690,100443477,334433820,216077008,2004817049,346129671,811040642,213858165,1695668786,670090458,1388024424,1237831043,693829714,1875386752,1427918851,1297802396,1682343651,1333258912,2080256266,762909229,844631334,107870278,153261303,496027243,113262581,40394550,1037318232,1928197609,447812144,272259656,766214713,793485602,609763923,1404524772,308550436,401925363,703400244,1990714095,1969869921,126052443,2061591517,196116205,450096092,870830250,1000436584,2115847942,419889125,1754561070,150336432,1577297583,474221192,1590085163,1329438803,1071892341,1440002851,560523512,729400956,1855272086,850920278,317202868,965971550,1033677192,926039946,1859601542,570116667,1585858841,127220225,98383720,1609101143,2022169709,2068693787,788907640,723114128,696254522,501697,1345338147,2088282578,441666210,212377527,880084446,1500575653,706605546,295659386,1375963831,536532627,697645104,1309530703,1272302556,1330962735,701990896,617808986,1635955122,1564365901,1422972757,1217713543,1257779409,1838141225,2106759778,734488129,1563450407,1319347734,52414003,1538501195,1544156894,941889336,2040576874,1976146021,1554249720,592450350,1343818351,451316561,366429303,881727173,1064746069,2121471141,446222403,1914627890,2009201543,1541185371,2026364116,999616955,222255563,472400658,186270959,815597716,22818407,1749153886,1751603557,54676118,1786998124,906206105,246628518,1100072417,1647183107,1577996981,813065860,455108803,1084588012,1500045610,2110701912,1720770862,506192784,246621636,927952450,1794687091,515001190,613667875,1984404603,402147040,1439182062,1556120993,708018973,267587069,496514603,2000738823,860896003,1973231892,1994733138,1144206778,764613207,408355992,1560569265,503100008,769844038,1416096637,48568861,236507684,2092907945,92857535,334392167,945044616,775891791,1409757586,1208882659,467937123,338618856,415769571,500821861,819186877,1720187877,679105955,2042220682,1407875933,917815202,406057585,380169731,1572373221,1118305190,44633833,653167470,1991098520,941074733,683384339,353905520,1419020887,554507702,325071376,1250360205,1732411389,1132436596,584788087,1819486042,2063393083,699416542,284076628,135567540,680718416,342159477,408978101,424092679,1918438846,1270571751,1631424532,1359413113,819013226,767186170,1010220336,1793987799,1860850661,1679483816,959207186,1000422554,621774546,1763155465,169229398,323955351,1294748766,213947372,1670017244,1679140892,477061719,379189735,2111708332,492633435,41513694,584651457,456291739,1123207880,1076653305,1857728873,1631432689,362027176,1281776813,1221555291,1873581639,90058419,296278455,147145662,795290992,167024823,402332714,1469150676,327685547,422705134,2081578555,798895608,1947671609,2038190161,877628184,9371381,1159118989,1275001757,1431014192,341711210,336656341,941551058,1690453659,1701107660,991847824,1720717715,1569939328,1140842672,841125604,1514812613,1588979039,284298644,1750710834,1103712175,282286527,1638384739,731667098,977754342,1745397597,294350179,2042548708,2104918906,360154229,646017353,1769231214,2064941059,1521339903,1298953239,1793076725,648659579,281309365,1232613121,831184307,423401516,281402231,36017648,937123034,1416928682,1118068779,1690670530,1882297693,1217041720,1495564835,522416746,2111631588,670830673,1765381175,1879162881,931018314,1672582454,994953455,961599200,1432238104,1783314592,536385374,1014410973,1723067070,808696645,1745241294,871178104,958217030,1176610909,1031593132,2000800797,1401885856,636166717,1541808719,1324465841,1440163256,736066184,1235096922,778631860,1447458898,1283265854,1025648687,1625682511,1606852010,216720905,2119906265,84681547,823721021,287091082,1202553674,2117042987,1337681709,947120419,1840819961,1017738498,1137357374,49416416,465831796,1131890978,36278650,461683032,596379801,1254848984,389507008,479352094,431096678,400081122,597980353,1856420249,1925960686,1857907874,1499175856,1778341389,344937560,833552888,1703751812,620410746,1415499419,313027057,355425253,2124695214,1698558961,1217381237,963484467,1768849366,794200368,1949427749,322698016,61549489,1106707215,269285976,1852961700,2018561282,544099434,192144133,1813329524,704970952,297217580,1092418546,600548572,1465354027,1637144295,1491488050,522485671,603374947,1080396425,1788912866,1231050464,1318059915,1130949950,259885597,1703464432,123184969,1610290717,1460661172,1624582311,975365230,1905900352,1664357787,673071793,1659883230,1233284068,881700493,18281626,1026680218,734067711,727832410,1585653594,551228122,1702598703,1681710394,1673861614,1077374652,1704658042,1288430574,208227404,624480451,884312446,902356993,98818563,427332550,361562073,1631464668,735806957,1276272940,1614347131,372712349,869324482,855968312,866184464,1361749244,1229615173,1026232682,1774101342,983388299,129973907,2073287536,1056905375,279869770,346212147,408931416,299940119,1090754732,810507968,1444112834,1940075184,409546886,364393566,562078588,1231383330,146728437,1122473090,440362861,1966809433,1548877137,1353522407,1648645815,882790834,788038137,1645497748,470478436,1718435425,1726555180,125993963,611325925,278284255,1776518603,203006471,448853515,1745571647,628499132,1118975620,61628247,886194736,1316909193,1667232455,255219616,989700078,722758246,1803003663,285133999,484626343,2022955547,1803354633,1836706763,1773951155,223875332,153779978,40963126,867296169,67505174,1702774409,1091489748,386506254,657091372,1962421872,215979303,1047675834,1191689922,1557576313,1328646549,1911352124,1878709563,1548188302,1011825386,2116799627,1236693912,104096543,56305000,2009561364,1278290549,1269825879,1791321756,1020841771,553476839,850659347,762407907,1527266684,3505068,1671843790,2042180611,1676090588,431490177,1958360506,973209846,1225471077,74442791,433150695,1194744583,752582150,392168941,213269209,677457616,188013692,476209698,1346653948,1473114329,337557565,1706761974,254951770,2071436530,222625891,905065044,1482222185,1409790915,1341604371,876346352,1777051506,1987135586,261963406,1482983243,596708052,718605573,619948242,1569184800,1880371446,1001618702,1176235343,577763365,1443569051,952181825,1999161231,1762797601,1553333587,330971661,848484917,145758092,1361957285,2046759318,124914471,1302956581,2092836965,1561429972,1843707341,327380906,349367703,644959538,2002503510,1286028881,23688832,593839319,25965126,893225480,1670710761,1002031391,605295604,1259377511,540374668,483276164,225788463,1725663549,1705183251,1108206925,368672635,1745731784,566975811,2072929702,873555044,1500755907,324067797,167442328,624344679,1842416376,2107089390,1758812732,1542790878,964801233,158137682,958373820,1330000840,1587161448,1333177316,127080933,1779556018,360934513,1578059779,1649492517,1327047759,113738130,1972248095,601304668,878342927,1862298792,324816407,2086521523,1512596659,1612408126,397229364,899097521,1408030559,1157330941,1945416858,1679596416,2105164395,702951680,1096135462,1579450675,1120317349,697300902,2071820284,919428002,176383334,1619940982,1952013149,16638061,927230285,1361525425,1030438782,2063193492,1260111251,1546464976,1486338345,907584910,443812718,1534878036,1925604963,961108540,1567981579,1143058209,385432604,1744677877,631482331,368855893,1080696599,1864753326,937820996,2082714928,1977017971,843693359,962379429,1243171255,791669140,1108238643,1802024394,1629629610,1137524182,877115543,330460787,1730831662,1301352820,176985938,1523823195,529231000,1786068328,760555451,1105606312,1082901949,600330556,1513325490,631251685,1285285728,1414713149,546033464,2059540181,1141194953,1036172420,1762054811,1957615065,1259606232,132489321,1758523510,1004405756,1016261724,1398957896,389718972,1195018583,993081510,1631086208,1879746033,638283054,1271679549,1667074036,1347554314,618048219,1989457085,414594071,42620411,988801837,1589630060,2073031665,1120033159,1335351398,860294611,969466595,1767363271,1258236121,691434718,1374568491,871033771,1907513059,183635875,1366077818,918101727,784316697,1227054465,1407085784,1364204584,1160264883,935782440,1820881552,74286639,744068770,1781998107,1169552188,1710960608,17938735,376517248,202124593,503125310,1540582083,153308731,2003828715,1940569229,429129290,25426104,833522295,1748191813,343059062,1953274366,1311728284,936153978,1045682036,1158026143,771668547,560274693,2062191353,1416867146,907610761,511533259,1535416215,1278207696,1358154877,1893857850,1359111369,246221045,227032494,301854150,1810496575,325821582,1547712489,1665055983,204437396,1190148555,7813066,1956994651,1925159516,1425129403,232493779,1828078868,1792332456,1222105365,319358658,197879046,1386809293,205648156,1606627296,433727738,1074336370,345974196,318077529,364813432,1260583627,25350628,1542924156,1205576392,736662378,1396252348,556134205,154133041,1291379395,1350322076,1481948401,1737253396,233629168,20814375,146757907,2115364748,2007349208,789785670,1299587107,1361892428,1172656379,1051736907,436531854,1295784852,1082226644,861439322,421679799,674643503,1175434167,139999517,538270597,752584607,592582347,365938423,876899597,1773754032,327390013,2081398840,178621206,299066576,154787067,1690800435,1733751489,1801255688,117922270,937747186,1032624518,418047467,1253662943,1621610436,338004559,384831459,227973400,1463484689,144510198,1565925594,305580478,270495079,816113710,2044957453,804475360,1135308565,1889395435,982121686,635445862,1398983821,428517525,904655860,300194915,1491801623,689791659,1794550614,1302484824,1641826355,586391974,596150818,772425484,1041654663,391921012,22130019,303974240,1099316403,1398800650,866152546,1792079506,1195891930,1845251139,226330804,1765048048,2012560343,1562174591,1830332707,1900416681,925354473,1043161524,2064668036,1789576373,1416256556,1228993809,1469080824,1816900227,588290786,1571880109,587792399,1370559891,263448199,2025102056,1563729047,350752501,704923887,589588986,1016166736,1972272534,427692887,2064317726,1038621725,1412415497,1783210003,1893039234,130877701,456235979,505872680,1926044888,603515348,296550167,1664702021,282211316,4627473,1955015106,1822045376,52125623,391617664,28951386,215886980,537188548,818609039,773219940,910580761,1987014529,855465512,1746336507,278528790,770591955,442081133,761379780,1121373117,856497371,1485541703,1858861357,1770109997,627246672,639615219,651382143,154288026,1056154261,371834308,1898112663,1564508381,679072453,1566754076,809659332,746644613,1909909295,376910442,557465967,793996965,1944130490,655367899,630105182,1069600995,1608462813,1862943180,997787805,1961467060,712064038,84346268,784178549,973954062,2110828441,1127266083,1872101725,1285127367,548357904,318564279,1076674408,653749451,123857639,1512073052,1915761165,1418023536,991869130,1974794570,101864624,131433018,1079470485,1809344872,661754060,890681553,209018629,1763008449,969314331,571791850,1914338087,2021803796,335630393,1625987078,1075537558,637308684,1325402482,610452076,1353323733,1697687694,2049635596,1365776695,1065933146,791406434,73686957,2100901439,1932093414,1076613924,616127967,1934172128,1102064221,904074953,1408166717,387882749,1892975262,586646907,1289357686,1585640713,325567936,672475961,834379462,491561869,812773191,1254207666,1479154272,1546960176,125547927,1585865212,53744571,1819109721,212678266,614142542,324371085,1459506315,900910186,1315548229,105935362,665468178,459412195,927901228,998093466,230011611,1769098414,821314829,1448102843,1859386755,1357888068,622849466,1766063838,1737336309,1568143033,1518835846,31754939,1834985900,1751077410,1140709013,756578776,1891025452,1489529297,124456574,706353061,2118167014,242039634,237765554,1575728532,727007707,232426371,454047997,239852565,1837924895,578766161,495782274,849242326,2096260101,587979397,358990595,163866065,1953219770,847546442,1255140840,1611714712,415277912,615179026,907658574,1493744369,447825987,655382960,1538880546,1154321726,1954715320,482298911,1776944120,813492268,1160370141,1093658688,897665912,177269865,1070246530,1962497157,488266097,128577352,937888017,696580708,1057590475,1985729750,1732116127,165843330,1627241891,468978961,1819797933,766745575,2128325597,223396319,1489234742,1678364233,1553503975,1013345203,14540528,704122362,1612515550,1305819628,585360241,1924153047,1303013701,243961511,1065344883,1775611254,748931567,1609453749,2033230349,872790981,832897096,1257463627,178056346,849835682,178300407,673359493,1547647747,583596969,1652573212,984345447,377865087,2095706111,1110666628,1617844838,497338900,332809246,139624400,1233208102,1083116302,2004007436,1281856421,1699990862,450880083,1596467286,399953310,265109280,1618630892,1542421629,587646607,1049743134,1996258032,270627494,42215998,1597792890,1278388891,904365758,443934703,639415416,657230593,1986767848,1359473606,1152463930,986495751,792604300,632043506,1440065708,1240478546,99185452,437016954,1853541829,1085515039,665886174,757600170,1564633860,1420628499,544484839,526185826,1357303967,1847443522,719895722,200494524,1043822894,1433135604,1510201273,1177954295,771956093,1599905707,593534422,1203376186,112246039,970593955,1878737808,1645739280,1079930206,750296337,699522861,914199080,747997215,548639655,226548587,1526296394,576518565,2129167671,435220275,1542984126,1557245237,1945201814,1204348014,935342745,1461949818,927312759,1596381707,1277215193,1225293335,1221032963,1546307759,1146888768,592663085,2048148945,502622623,716567854,2019279545,468332165,1828927349,896308238,636329984,1741744878,2028894045,1856368141,22249960,811427755,806694880,66884062,1673086582,1982664772,330474198,303479039,1675773265,1682084522,1901095918,354184354,519369405,1644054746,749505969,939217181,1814515956,177939337,1712850210,455641543,905151659,1570769974,1202861632,941818188,1508999356,1697308298,164233991,1711971918,1028557230,1228079227,1668941809,125803992,1650298482,462576004,1452770314,1400227906,1080779788,1980804447,1821042953,549336472,1285450702,796930031,1622901022,624910211,1787685912,1793331288,592678276,696757923,37224842,159611273,465673397,1056160931,698186840,1856257774,786172146,1095523600,1157364843,700707311,1061152381,1341704269,2006501632,1237181970,1976459557,1204624094,225604147,187548996,1592135035,741736581,2000899050,1349561510,404055128,646359661,1985457050,871557008,590770447,606631803,378325818,869472094,1806031492,307074103,1451529870,747815552,1538198029,73222817,1118267332,2030331839,566417792,865058851,458695298,409067545,1476159980,1152674392,604928149,1977560576,137782073,1438987129,1695823237,503447913,169688010,1781871973,852901791,392853056,371351778,777644023,2104619459,1038956404,996968815,1469654777,1367859047,31336839,166517785,824280505,988235016,363866135,638636449,1786651243,857380527,862196276,648741861,1592608871,1804412277,1119208237,40604808,804839779,111708947,1680424174,761704767,1854493375,1590453882,304650962,654942907,12315927,1307419273,1481825543,1986237974,646001073,215923346,1810200686,839615264,430512553,1912716054,543187500,735965239,320578352,2005976914,1991331134,237792219,113502345,830697160,1489762849,1837578370,546890877,107602767,2042954203,61706676,526894412,831084322,7138700,1065304944,1554935054,206140646,1084963367,790444272,1472231846,1649074304,438250248,1576445772,110238393,502239378,1407049979,814947210,760075387,1876406531,950392526,1852707240,1995369797,694601580,2005516468,13958490,1511914937,1149297225,887737614,219643795,974133981,1846372702,1378923936,605798675,1225379009,1980711099,206330597,1352255974,48820458,957538625,1466783670,1621885760,368986722,896633957,1454562941,1623958938,1900794930,150973146,229808565,2056346415,962202026,1624012878,703085485,1410563460,469424180,1441773728,1273425961,1153786943,1652304644,621348235,993274492,187004437,49702926,1087484524,1529754168,2096191123,921058944,23787040,1787691498,1629709321,118933061,987558503,1978368279,1163823594,625385381,24146551,1681164047,1920435413,795907450,1592895126,1237003281,1767838117,1975973341,682220814,511787147,640537044,1314930903,1597255654,1570098258,688116018,194665418,1415727157,1526214767,1129440349,490180434,394505773,472850905,2014421280,460732373,537198585,873765065,1778583400,982584164,1029234452,1224863193,1809050134,715887861,1566262348,767693689,907156139,1959910273,2236917,395705988,691790923,776501735,1487591801,1337430137,907633378,246195977,303241642,81559167,743980965,84580866,1452437346,311298082,976351104,2097180641,616871183,1479991541,1962528238,1850738257,391756844,2042528920,1791693661,2055747294,964141028,1107083920,917715103,952582358,68737893,1952848990,877875904,735920420,1352837010,1188083095,637517121,16949106,1423144977,1063012538,293829743,944095215,812181745,994392640,549829563,1105927108,2041768985,1024890059,341211190,805188489,531000408,1742884105,2012370855,887511482,1918813318,592408962,693500572,1427715551,1061433835,1164481502,1512737417,1867201879,1648034762,2014572044,1423914948,1343516796,88388571,916406435,580299536,1375086578,715535452,1618622791,2100227179,1033011126,572739916,935976820,720018620,498802933,1576394156,997187477,1613794350,533352931,1977516656,176994991,911294522,513626323,2101256259,789993714,465703489,780971622,2104162745,950213444,1003652870,1534206096,1828665516,1165758326,1813715022,490034012,1173305316,1975875174,1815972596,1614537948,1271468328,949567875,797301940,885977723,1977903707,1362550260,1149955329,653771144,461984398,1235410964,971315510,567163855,1980157932,1323561162,1220117122,1187444287,1877173700,1223920672,784946169,955221414,605224795,730451963,793864878,1200630024,1987530990,1909461271,2036123058,1876459528,987229176,2078477511,410935310,1135695675,262073829,457547191,438161829,112843627,1944209029,1409784175,1122765879,321482713,184049383,377363489,243390503,1582814302,492052292,333228137,317107491,1729294895,1565868981,1462899786,364647610,1073787743,1748157486,330259801,284087004,1332850860,1842396660,1805790713,54111958,2098035560,1418901182,825573191,365639521,1673943636,1015535052,168224266,411259354,986541991,641227202,760477467,1404794627,437197214,1597397906,1706579951,1427549200,1252391349,363669333,1013261323,933318894,1449662613,854767571,1139103479,858147816,1606331404,1701080356,220122542,1568244390,1958317799,2042296958,61016245,480685681,2060704938,1639203330,2127845921,1095020448,1053857107,842057327,1970803699,906268720,1601391313,161719164,201142605,331979965,1662313777,1186433775,547885490,1223547090,1511928113,1375001007,1480533205,2077382724,144569891,1105989800,1006183459,57466121,977456526,933022699,2115281290,1579432763,1020214319,13944371,1821681067,1708564303,1081729441,626782269,193622007,979971763,1348692141,1528462006,602848278,333778911,1319727249,1493197265,1902586989,1694590307,1814099748,1579331415,1619139115,872647601,1284035807,57898536,1930063308,635081999,1646811995,585960102,1113666632,859437519,1090327411,441129034,1897228045,1868793913,1790931258,1627155208,4008302,277141297,1215657217,1920507280,1455874032,1423180405,1637739213,35922773,1467396053,1068874920,1364500031,1141424048,1334006780,1199583159,637815617,2014737081,19474177,1402113636,1454301004,769410956,1229644391,350619132,1503565940,1155574600,1567253182,1217079897,1144845964,929677625,766356693,1778013261,1593436300,1893128135,1752852665,1720230172,1730614955,1236594481,144744636,490104354,42724542,465365102,421103109,1281008293,1519277578,634042596,1820052896,750517009,1224630290,2058822169,1616131626,979669809,726542588,556736377,988239134,397218887,317852013,832731127,937879121,1890170472,231483216,1051090301,221683048,691171521,1493771736,714345661,1186700776,340790049,587072158,1519569295,1278082193,299188846,1828239605,940048195,1431779737,1241877741,1979956365,273290875,149564916,1094055629,1165479963,1902922901,484585647,1669523035,1142442884,368985850,1339489452,1737776064,1055034384,482649694,1899849831,1487254775,647422288,302349886,2097270941,193993853,724715831,1788739733,1523751539,951959720,1837901790,1531005238,1031187783,1385352965,1482306232,1338117812,349341976,603227272,655407561,310736054,510281187,602231255,977486210,1253233439,1351352787,1766590556,2036414221,1766652206,1203136975,1928676117,771465036,1351026701,382429073,918431547,743139819,264313062,342300798,6947177,491207589,1709538179,279346562,367208497,492258212,1001345070,1652327261,1654453255,1132276932,543096146,1607396639,797565677,324263572,145992205,1677118352,1560532007,623026481,1992909596,516794754,1396549537,2051532543,1755108472,1782460406,640980268,1596875404,232925008,607389319,1038598907,68528447,1352710983,1770232842,1225949713,2094181425,1574672761,1266035250,1244275865,1089546080,544946620,2069752801,231083177,1302168356,836794770,1970996173,2121689292,1402964220,813015948,58819733,1264817425,1164272553,109378894,1824519882,1101041358,764035098,405707505,895140566,1789805387,1318223325,686955272,1535563720,521416632,1305684057,628355920,1541257350,522375561,53573810,231472488,997420177,1109783975,368879116,1921844258,1523097563,575770752,727814981,1346968447,1588694467,598262618,430129819,224972511,899913980,601668065,1571580220,1631284488,781421881,742951357,1813429427,915474348,2046550196,1104726419,542360883,1799186113,276070785,1220548770,1161398477,184891527,1859560578,135709226,290476705,1211803917,2113756523,1614312361,1025515210,2040592722,1339054921,1114573625,396446145,1641650703,193572269,205796018,619154430,1848807628,1438254005,522196946,288018083,1569468777,927024859,1643740815,1457716419,773699337,643410270,108542646,1003850751,1534451869,1397982439,950517444,1010501806,8718415,90556932,1956018650,1637230411,94035354,1233536419,1153037951,1283723286,647653930,2077577374,815963610,2034808357,140405208,1372738581,871056854,2095087761,1462337587,1109668709,427812852,160438601,695836543,105845293,2117727968,1621946337,1883051394,121817942,1446779153,546300739,2017923976,1466147278,721683986,1319282342,848636843,364005682,60666181,322878423,1225316338,1995443235,936339908,83365907,1982525524,908226087,568735463,247829727,1820366342,1312969253,283109135,860261841,277418049,1852902292,1171699171,118938221,1553421791,145402228,2045462822,342386491,799953170,778494766,25187318,1720230332,66002114,504733921,721007296,1135381867,844060178,1357626962,1277366731,828231971,874014680,1085001418,313488708,1351354253,977380677,1810509137,421402137,1356559930,1335152461,1433955817,2115328744,953123495,975304614,1847632182,2117635570,1258925035,355769623,1000287692,1167249634,301100433,1693432697,711587598,873688138,1256654726,2039141477,1068841678,1594953622,129589863,1438793487,1776885332,333099159,833760628,1877376337,887239923,1830525442,435010498,2127035020,684998690,1120216507,873889201,533409485,567201415,187425600,20263496,2123395002,1334033099,761471871,812310911,411401987,194215327,1966449828,1972114900,515603348,1803495823,1189983248,980854962,1744972939,242725293,1763677820,291127552,1767178708,626796702,604753024,1302479277,2013051247,1142512203,2007082500,93639934,2043279083,1349008397,1522263402,269319291,147607208,325391478,909878001,563084550,1625109432,279247695,1208434435,720917889,1200398849,1308807083,1676569189,91555864,1698396277,1978949082,1158958110,1917431084,2002442194,2101111489,498621085,1501033630,1367764951,1905568913,211604411,1737805052,223556851,663496946,984060447,1508469056,414938911,1032637065,1339284637,823684821,1914186123,2013908453,15657884,397321504,218350866,1537423684,728844368,1677456056,1166358143,398350453,1862886537,1516430226,470793206,1972970417,1834157155,1718968691,1619726886,543804065,1896243229,1247723286,843303635,1656626880,2031478079,6326916,1709745515,231946710,172859818,1998464413,797314321,1989914487,1777373789,1185446878,1504073988,893799898,1643713637,2017329376,1085913364,453967637,1574974164,568339322,102682509,985737400,1339715022,1057707787,1337097761,257728241,1146053646,29395258,1596727452,948932105,523491007,1020366710,762109659,467861606,539208622,1781854152,64865953,51802585,1945721556,1020732668,1241103689,1105703928,1370950020,736052953,1858572894,1251868114,2098922399,359404459,116010083,1779081844,1343474162,1863610484,1953239198,1097910191,1271503745,210781611,487267431,885740175,1289143533,1219750882,191857723,1674246641,513230757,20382254,938215870,1782908889,377255856,686213258,2078860454,45536362,1513430276,195605531,1287878620,153662419,1193483312,1313960936,2034840006,83360569,1650263254,82457830,1862774375,1602013883,623913488,1629102179,1976299142,2006665324,823967449,564432746,724863865,1228059055,1454259179,996720158,1215756314,1865866550,1216118542,980143156,100522028,1666743827,235522604,135601152,1747040589,1032012817,1804387022,1005737564,119057320,684509111,1753297263,1797671754,2037963891,1367265369,488386165,1905360455,1448417363,1866487476,1477746438,693828455,860767284,1284410802,1340328568,402691013,455915335,1176739167,1506185309,1297831395,1742941226,1527023062,265697555,1953638803,66132783,936947607,1136706066,20552961,389945124,176309393,83344210,1037545321,1391201905,359103232,1322685426,234035088,1665432926,1047294795,906382422,1718575061,835501078,1119010210,2097655460,1172589032,2009068228,1000382206,141072934,249286377,27590601,1742489147,2101864366,1512411894,297546205,830567939,784616171,616420676,2129591825,1554033036,1255448642,2031292961,1243160514,1703615554,2000621580,1873411318,440967536,705650183,1144975408,691574187,659529577,1767228409,1692031011,201673243,1524457241,1631557891,1142389976,1859664460,1638496116,654424732,955633271,1177651963,15253756,1110298018,2061790988,1921406790,2029008616,883701982,3479349,806432062,1893421623,1111165312,1711832929,106557473,259593926,335677466,1085798800,1971593337,204407640,1604842894,1835279243,1452903687,285368370,952208668,1654127058,631519303,1665333754,1639528210,1405915829,1107107254,1217738720,1989021285,1996719359,227130504,1611157932,1260106078,499710311,658998282,905186301,1534841705,1211461807,329667918,756342622,1036718932,2076350550,724011509,466068853,823747840,1410482642,2103780158,272581623,741495477,107475963,545597214,1505317625,1431741187,415865265,1597191968,1693686942,445394977,796197083,1471200507,210660045,186963301,326606702,1985536984,1560674859,1631097052,1207863321,1216173714,477663744,707932067,663524510,1103181072,546122923,323430265,1666047814,206990739,1747568917,978784869,1020776188,477206228,1135415644,1501050622,1990449979,850323295,2012868622,57997419,685246711,103317128,1716154012,881472008,1730302978,1584532637,1535286289,1835814197,13717907,2053365033,259355187,606474635,2032093269,1361341934,1419756504,51062608,1965048631,1509298017,1222147977,88870123,217938816,606139833,1891806136,774534319,591444179,1432829102,837403045,969695218,1962495209,1578920271,1134627394,1179563761,1043645863,978796650,1410221296,752064941,524033386,1223071923,349796063,1703524803,69401053,1779416410,1044703424,260185493,1342438135,1406011359,735648684,1189435441,1308022543,1010037368,341938724,1889185786,1731430844,2121724575,1932768811,515422275,1795701264,1960570334,1620371399,208672564,1116736506,746398031,1807119575,1855816945,1963641859,1714837193,846109271,679618445,152291833,538475342,74841009,206513798,170131722,1526073817,1661076968,1080367279,858184754,980304619,522154240,1544316414,1608419648,1281777577,2119334903,414032610,2054740982,1516469948,2073665571,606084103,31541516,1169719560,670379756,1187909347,1369134197,374251053,1292009034,1849844901,1168011523,1061288353,1182758683,721152865,977099031,981756126,1780017823,658684606,489144653,124571485,1467210307,1961459188,1788968850,2118325456,1088311490,1078671740,2096459348,1464604396,1930152467,1714950912,1653023742,2000887235,1972354716,943031223,197663063,865533403,1869993329,1217292688,228896208,2063163535,1974338193,1716043828,1186986516,762581213,447843163,1715846079,502056548,1376718350,1849322298,751106353,1204110070,413033940,2016726381,655640206,364438333,1675144845,2124311292,1334124895,1389021240,818021225,1055711004,1073413465,630464566,79751025,2096308823,1308453656,2046006119,179907207,439924867,1126214101,1891826027,661726521,158051074,2058478403,305247081,1912172124,1463921161,544249443,1268525188,645677675,1987631122,1873694516,2029200931,604326285,2034072623,208720650,2025628894,327777265,1446122055,752318457,2100771613,80430705,320916316,672124223,2082536014,1768499204,1782716072,424560999,1436806550,1162950516,2081441899,1893111821,1424576466,293272753,1476883597,1489508445,1243728483,1864448234,808581442,1694788115,141700925,1015684303,1311704568,546865260,789865264,1621235853,1857347228,285756268,827762377,2105856239,1715583879,2005164902,88281593,1894320736,1300698687,1405648570,918011522,431451498,140643121,1207890851,2070148736,1757377082,1341101160,1325364671,1518062964,1838116658,1597914677,1259240356,346721287,309662270,876894626,97516140,1940855365,862120303,1912709468,1737434186,124958361,1062476795,833582002,1279976977,1394851079,162271052,1832450246,1186977913,1745843628,770339678,317379450,428900295,1307251691,267863028,1385925636,2018890105,563477224,187522823,1628450822,1768484314,607110064,1350866863,1692224279,91552050,692938156,687829793,693520701,271161928,298745690,1643893926,1519385126,1243710453,549307239,40560988,94949001,1205250230,548732169,1218263106,1010230317,959776468,1936306040,858839973,343686342,1676464078,443840756,1936664389,1344344795,160050101,310318330,1316131095,734198987,2116007446,1926483479,2010603808,872406291,1644524374,1035609908,1953929521,1219255860,1226032542,545665593,1769233730,88405597,1648194358,1769929651,1775677557,100978860,1884422765,147351397,521185473,259255395,1647993228,198066807,828431790,1039537687,1072439990,1244922344,1522091222,1246335454,147809545,376416112,1118688945,14337929,190017376,1559061624,1973422397,2099172064,290256028,1406331469,430874595,1530255949,745916096,1661924737,1216927347,896477401,651129939,80640543,2054212040,517431100,1750683094,1400082932,1041374377,629057822,415442817,652529440,886216317,48017992,373132937,1412655309,1878692855,290759872,1294274218,1618643797,408511952,1166131338,1218758384,1811299796,666507727,1331876733,2542002,1343527841,1468848978,776572364,1893184927,1074102879,1458700570,191346232,557678553,806559347,617429510,1785995563,278581495,508433581,1372684088,206384194,695730242,1493393583,253503757,1322496662,719410878,561764785,443574895,293035151,1810202389,1788782991,499420315,84887037,929376502,1583697671,777013252,214210265,83032949,1100612526,443648115,506925507,191436004,218305126,2023886489,495058534,309162107,2129287059,808138179,1294234785,456555366,1846910925,1708655549,900815575,458653857,677586186,513093268,1982629756,646894509,1773243811,117781660,437147555,1253399186,1709531111,1321191230,42093992,1543152410,1390785280,1131323013,506718238,1530283025,1533647630,55668489,308510669,1803492599,850334216,1511553385,1176484520,974159175,2111858052,598428989,1085117016,1772278955,494948312,1815206525,1936951885,1975281389,1969885060,1934477818,972570630,1378909884,1138008906,629220113,1345128014,1093055692,1148828040,1449978609,1987362734,1506029125,548966257,863542098,1774681905,1453950824,1894391761,1141117470,1913384769,1661310172,45339576,1908833869,967858861,423940465,1407108739,699839164,88322173,2016470256,2095070031,925631733,1283059085,1878686791,846196794,1537022277,1205787122,1740016304,1882129291,1955705252,1505052464,864702051,637516621,1540209535,796993973,382287010,225322222,354945479,414792094,364379413,971134298,2118860809,88901997,949873972,688265315,498091630,449688564,1506496132,633448181,964518802,1576489790,1877210264,159835224,934437652,582759167,1397858897,1715357371,562446434,1073532715,1502998754,762847846,78540912,593353170,901642527,1299501333,220853894,436840095,150872035,671632711,1304329939,1238493155,2097828081,603851563,1874070087,703455654,718418327,1880423746,969036360,1577453520,1990477017,365842670,1516939192,114171900,827623788,1593019155,81371406,191661895,1143873033,1964011664,223310122,787037150,2124044005,198489005,1826472007,1056759653,85887013,2005869020,120855305,527546674,367757782,976330870,353180131,1970066802,1179053091,893666213,163766365,727453550,1727354960,608775270,631317203,1390848147,1059886037,1354265591,2106852971,503217304,882942141,1056523326,1338257897,536649300,491475665,129226712,792962836,363737968,579556957,216580875,1053195462,461374591,10291076,171467098,1949386550,66026347,1306972112,1306469788,1715221045,1401691434,1117510467,897109543,1263548234,841247911,1360079824,1866250416,698616050,1049200212,768192687,40692288,226788384,1212839352,1030395538,817842900,864665721,1604472639,677103631,978865939,577818903,499009701,896129044,1258352662,495327505,1869227567,1034332732,261013891,271901683,1590355199,850452977,1731168919,475443886,2107374826,1612430424,784899718,795865909,1162384897,1754992624,1672352007,343143564,1006887378,531944345,1239187131,12483669,1023008514,807688805,1573364823,1132260895,1746299755,1158899498,230270235,1115838696,992205865,1934953591,1314641982,1076686938,2087580215,2124514346,1313319814,802015421,702990936,597092479,946121777,1376943729,814877358,823095506,588200164,694051966,1410236414,1602527540,2004098710,1641347151,1382781591,997599995,1597672351,529627633,963834173,1745282272,139306379,570567290,1223831107,1436741792,828266779,194839482,1312633773,469513806,1355164856,34897513,957433097,1500943696,1965171658,1786070555,927636914,547358601,1382197189,654528262,261316297,1361284411,890886124,385068935,1343103240,1271729537,346357216,495741026,858911788,1087211892,1994452900,2103584034,1309026938,811348791,1408659274,946787379,1713990287,1143937320,1753348184,214392997,814639523,245704469,806979823,1750447750,100330349,621399974,520956143,1153115852,1656269297,1746796652,1520427491,851418142,1973964954,1421555914,102370659,709025267,1402340172,879961785,944695616,1813389415,1215287660,761464250,2102848422,2099562537,1108850769,1411164072,736346290,1708662679,977686079,991364545,2001117460,1346160476,1655281569,1621723031,420894924,670751541,196060642,980189908,705283761,1132334324,37943982,888443818,1745564811,1658737459,1029863875,283786286,38484541,1186995354,111366118,93516109,99767328,639045561,694557245,1889863456,1149050954,991727305,242954119,823949084,1306163972,1828276667,1862013259,2002129601,849660383,112110713,1386194894,146877966,108394896,1011026538,1815378500,1565680595,1914785838,321563515,1478020641,113506813,1938716854,1415917108,263748604,1950918668,1578696005,1860666656,2092638517,287755688,999430952,134326521,853932299,726227320,2075380252,1121908193,1882847508,263031151,257157503,1714372562,845159980,870019363,1032813802,943645565,717784826,179354803,1575344165,1472038975,1703022844,672272149,713158574,364210308,1178002482,120296736,2029499666,642440028,1682088148,1371966746,1291275537,90958298,2013062203,1657496061,185774289,1746626642,1310166670,1570460297,1183365917,1095904169,1414836811,231882750,1577029111,1759315399,988306675,365375320,1403007258,1344696988,1465685319,59242646,1288935518,924193306,1958284111,1453919426,147397894,2001943192,61865067,1161774154,1227561395,970574944,1524830606,308975728,497725372,1959358889,941510751,971936631,1270792090,992955922,506494936,1839266523,1905783204,1086964396,1921596902,504403178,2054411490,619344447,2061900023,506020371,952313733,958757298,511071894,1815607104,471918861,542349316,413715127,2085485106,1415659388,389084122,1331771952,1018304696,109359025,374867853,810218301,2126528896,862783065,191466097,801477128,804591248,1608416547,391037832,1123612254,91760281,1095112574,133113431,1514959875,1737603548,1968167409,1801318222,2127017411,967808877,21328321,1854847155,1156227601,347491880,122235476,431048317,462326188,1747885471,1533913309,387773465,1789863405,1943178644,1332492715,1108595882,2124291675,593039627,1870174452,1032363170,507322355,58528368,1251294301,784654997,727741211,310216536,1013844956,518004359,1389566941,135822904,853532917,1589882173,1336541485,1826832505,313405036,1346521510,1388298684,648426872,127793112,314850274,1398751074,376867594,518924919,98349187,1646959072,1762123974,796111762,242428389,1587466413,812265783,212255625,1219696088,360367327,601268339,879172699,235161683,1469888301,1220358699,1888911191,433009757,299368406,1516412840,764980749,1155384856,798111316,596874190,808977334,873272017,636407989,1371866018,1651316666,1749868938,436971814,882714709,1617969611,1004354799,1999829271,770370925,1566650451,642638893,685416047,2129989266,1185061742,1838033251,155939056,168629182,876536127,479374788,146787543,1371666382,2024782824,323110712,1932746548,1462626131,1726989735,503304445,581235045,300460144,1782902092,820860972,1050289188,1822004371,1935078126,848973905,1294221270,1041670935,1714379084,896602992,1183019130,1906574467,1052139233,1847963874,936906907,1077001778,2067503736,1053587333,1293700179,382892260,1098701082,1006055884,577218323,600877992,1580906985,1724482633,743126189,444889540,1435719224,1028279019,1286417307,2108655704,900954637,45593636,1053798995,557547744,88453233,100642275,1826195529,838599029,583488248,42635319,89774220,1256379729,2060999643,50951431,1300323988,597096997,1044988183,1606834666,1202202717,2076547400,267089711,476234536,690621324,404417801,985868079,37898520,185333438,381823672,36723244,1549105044,122692661,1919792945,526483282,1197483724,1917179059,1262312614,682909447,1724194682,509442632,855443163,1932589673,1520797516,1643698330,742885263,1630824957,1792125619,1604286508,1985587915,940843727,162176180,846556882,512555673,1109504242,811076163,2022397758,672983801,1313650157,1604607768,69738990,1891694252,1768615710,808926839,1389124032,448671164,1023868861,33841627,1207868178,1490910685,524401697,1104405969,1983908018,155241524,413080259,1446923259,1186880730,249229779,1363776812,1548683315,770755599,1060845849,182224831,1462665020,2051207360,973009943,842864117,1403476256,1454384981,1791521289,1477970015,929289780,410832785,1200438252,100224237,1230796913,81243520,1367018500,190837048,907006836,1545505814,654168057,632421382,410354699,249723371,1228984195,478090418,378741468,232006458,1776561176,1018898585,811746401,623289744,955250409,1197661257,697668796,1545599201,1257522320,847260383,1387368398,1742305036,807777375,1164774636,1878189832,1183528476,1428055599,2129706085,2017589391,1867244990,1916627786,1682054468,668707458,1072625428,805510871,432923490,1494644242,32029777,67795966,1677276304,1060566316,377124231,1550943652,1783625242,336315788,1885732430,1533858444,469454815,668755385,1774772558,1517047091,754921793,1408162676,1953581222,1862669586,237948262,1440071774,136335502,323498043,875921624,273785633,1884571224,1057275020,1065632901,2087971675,1095741382,803576235,1448587672,1410164918,897445798,1997303634,1848680891,1348219089,884092273,1048233824,1248500074,969137358,1439192698,544894144,1949737748,8526533,1103293125,730059191,485962856,2102812970,398694321,705798824,875354905,1315572634,1327396598,1070264409,1328790156,1425693543,1125873637,175837478,1231889174,318051917,819705745,581348566,114315226,1466603050,2062843708,1544181291,858954075,1834875871,1322191641,220654716,1830859582,537087896,1157083608,1794870277,1646149703,1541892316,200184939,1879639657,1623844129,336787522,619635598,1550634829,1532608735,1377412208,850344313,1454515800,2117066028,822958865,1842719564,486250131,1648514952,557037668,1883650813,696450811,1281429596,1437942757,1283200161,1544357340,470926917,1933585152,1681976394,1592896358,355708245,1766884637,1581182067,1489889135,98592484,1394477553,1114632824,406078869,1678626245,1571610116,940188539,1073888220,1128699603,469420486,167431902,284914321,891320820,321044589,2005031683,999058327,1119401460,2078734513,1254822837,628131568,757889771,757917400,813825176,1246407998,2069312056,1899665166,698561710,277646534,494145274,200544224,1670344568,1027869717,123778253,1894427696,1909835367,546031190,491912713,1567643643,2031353288,750295470,155909259,1888781569,646048057,1182502047,486305951,559301928,263937478,1048208283,1319609916,1955737286,1321925307,550594308,1376447895,20288448,166391130,381953687,234635184,812664270,1226100316,1471883873,1955865997,1227012856,578676438,1578396906,1187011942,1046517576,1939853561,413923457,298472988,1282433200,1810520834,968944194,880298355,1706317587,1363495514,320514742,222626886,923833887,1965400016,986581534,1856766585,1022812649,1056685642,1714709728,868549544,953489301,482300712,1858877647,1976311674,1476126667,738204722,551074301,774940838,1585544565,703815946,1548522897,955574157,931329228,389824041,24163360,891611766,1260118085,1858547008,1159056078,1619357114,1362640390,201879981,84822866,587376103,350898188,2082897752,1397586977,1307311299,2037993518,572327027,592671671,1625064747,158781725,274608063,1324822801,819321768,1033462452,1241097683,886579664,165179614,1515784549,82677208,1335296886,1701019199,1231981870,1749019256,89497418,1148206243,1467964451,1194587036,1812121443,1073465167,1907441445,530675733,5126747,1789747873,699642974,1158865745,1436533836,1336232488,1861639047,1905197901,231270987,1359531419,1678453247,1226119352,1604019935,127421676,1128699390,1860772569,1007933222,1431295542,610600332,1400915561,1798014118,1779440106,921060572,1616062574,869845054,611536915,2026660246,1278999510,603859450,1469451575,1274846156,1016612997,35699047,20127660,747405762,135262971,456170266,2058382677,1869710193,1652084353,878983067,1249374763,422033125,34011759,1963601824,158149098,661339244,1805079837,184362603,1859076681,1681998967,1020322214,1256043873,785103119,19199269,905255387,101311788,1623051880,1202937550,1527261992,96583345,1226380781,943683491,87304333,945359709,1581581544,2050394956,1996418124,392320998,1621186604,68660068,15926680,1089582871,2003410509,578914237,1629878472,461091741,429179627,1046720468,729876982,431982487,1928990429,1095908631,1016995822,232581348,1587097019,1829594702,1322256222,209895324,1904782786,1743435020,1194197774,83614359,284856714,2007430993,1725613322,282480231,1349704909,1945432376,1055440325,1273981496,1355505981,457287963,520240412,1034738005,256579120,211888986,719429888,1630578550,83585376,850726107,1208440236,1771288012,834121990,1176445939,28932101,222425501,1443850794,722654305,773998163,1212288095,136891018,1812985586,1946594733,1713865238,1493935533,1900455947,1308900886,15252174,1286972595,1165638113,898093170,405183697,482838921,1536124120,1715085398,355042527,881974206,119293460,19509372,1210608710,3186530,2062963476,1858680031,560613698,646888287,1325826787,223230002,1964698668,104554213,2123056267,1024370140,583414909,621339439,394893928,1950380199,1589366591,1852948737,1059168221,84167259,936199475,699040734,1943827071,651388910,1755110904,1674249020,249362305,1365543710,1739210857,524820129,1573144961,1054556382,966768236,2095411723,1816438433,1629285062,116213349,280531400,2128946272,1334093181,1244872794,661639619,1847166657,674356213,670807918,239418199,1896153867,1341259095,811507347,976327647,638051997,534807577,508271861,1686356234,2088563442,438477094,1669709618,1984095246,1795449145,1464136261,956065018,1365123850,1274910910,1209399307,1628240790,1058217771,1081968026,1882822939,1129531505,1269600628,1125345413,1226987535,1328300743,1059246882,1533734832,1227990283,1617297246,1702134675,1700730764,822930683,486814686,1664730530,1248321702,1671458915,457822047,1884632776,1386668596,1649631656,851344154,1264304587,751257316,973362309,1747605555,736849391,21954175,1265479663,19890127,328192039,640408188,1388137880,1139536242,892492079,1125490560,1517644452,1126479714,219916307,1643666062,1032624995,1734255078,1678415301,1710317885,440947437,964263455,951812922,61147351,967133046,1076456940,144803590,211208432,1474012497,1550529972,1730495688,1151149380,1125645419,778262145,605066792,1196277220,506441329,1046214212,28997689,1578672141,712345882,2028707815,139202932,1958505784,692895368,1821329018,297071468,2030516137,35670666,708334357,772865149,339993401,1521342902,1731709609,1305896331,1088087393,1859396793,563737751,729188857,334651403,1083274974,1623696965,777431926,354509670,1609039991,270211970,1398646934,1180905212,208078435,1204311419,1911962852,1067090367,1819732714,1477733513,1374187279,159154392,10735529,2057702265,1332296899,1112900669,966727234,782038218,1697104544,806516962,1881144929,627429632,407241419,1403413104,422423678,1173197648,479770286,510102834,644749207,126035109,1024418902,1569046938,1720098735,1403254243,172893882,84926497,234106363,1678211866,1726153091,949795153,2119943862,1809564455,420782892,686041266,1409854950,1911711768,1545257366,91254206,1584572448,814910955,1367209155,2049168422,606366953,976622865,1905474072,626090936,1945957291,2004179800,1554818995,1364218827,613486007,1128769187,1287348459,1972637744,2025462550,194095196,471978154,359005346,1280653189,1334492848,1732377595,247174941,1548869072,1328106592,1811436644,457043326,416333277,752492157,168681254,1073617209,371865680,1154775038,825602408,424959279,1068877049,1506336788,606174729,194693453,754220906,1903226365,193570185,1994558065,430584996,1654967281,633399450,1048131816,549944414,1638298709,246734728,715679202,537050058,1980785823,15360049,292059224,27978384,216208233,1070502450,1068259731,833327074,1297677076,415994438,1021266305,1895609792,1075532153,1610285487,1099241268,2057993441,597633405,263544357,989832464,586849007,683243075,1033205196,2001671549,1047151528,1884598084,1746588379,775493609,1918526471,929145287,1123992115,1765890874,1684429575,952738159,1644735244,1400064546,1234280607,899978523,2119042110,237231712,123413928,1599973286,1301232582,212883321,813792462,901080226,1226335587,1400647668,561050971,996848241,1570699063,230777006,1041275455,953646679,1736897160,100953394,1162864423,581654145,372451759,252453923,418190435,1706878221,842369306,1328128415,588383785,1883293264,669941822,955109021,402340644,1989020293,1604410449,1988079062,2058594326,1948413014,1269299768,1891473318,655504885,886860963,192811915,2070336840,1127304961,627710282,446748075,1695737701,52029704,1211721585,542559133,906712939,919387154,408692092,528786523,1600946853,986352457,1145002945,1548928362,2125439706,851449879,679444285,304888634,189513049,1341529442,1625045670,1166855113,1938770259,1732875317,1263870732,690059555,978649349,1772695981,1424829700,1918208369,2000841978,1977630858,800241291,2038524488,1528842176,1306569236,826555311,493352859,201386974,8528699,2126277391,2115610654,123662999,1329337409,1597696069,351224909,1781253377,566587590,621257295,970108352,315427986,461415560,1818225449,1150805104,625141239,1812188305,244816838,1562915569,647775345,1917152988,428453767,660027837,1505727086,558449253,2108761415,1360528520,1914117195,1557659036,2115786542,873318963,706779851,1937130032,1055437140,1778630630,2118981216,103557237,1750405174,299444174,1608292458,392719515,1887381207,2082481328,478202355,618455528,584935238,1524963740,1390866647,334040015,1769466435,761854084,1164615335,131284413,1801770939,1649142541,277481196,1780623925,2108269149,286931312,1885945874,1719972562,557349939,634570450,1836489318,2018104573,1965173576,1805911159,1914564597,1039558226,2115389320,1136897621,401371168,629030603,1852227613,373311506,1157053647,214169998,1568987681,1539467301,173975542,1051696307,155378758,1954468175,1854909043,950481041,919791902,174942698,654964855,342296555,1643416023,2007182781,1081283020,48750060,1090154851,1040627705,2030050424,1629011700,2089940720,127396239,699527782,80439942,192333588,251643040,1372666483,1991777809,593764153,1541238612,371687060,27553881,1959551130,458199838,685606657,1570485222,1393630480,454030233,1612483917,1854380827,1664124613,926382273,538247719,2058243218,1758000887,43484109,1244057788,439127507,654191792,1660925024,1033880516,2006561467,1025168081,200297301,957757349,629503022,1986557745,589661329,1824236440,720897548,1766564964,1404764927,1314695454,986834197,1023816613,1230749707,1236971450,474414680,412855308,967626721,1121122991,22328758,1514413144,1236657721,1443032432,1726454480,1053944798,1874671013,505022221,783863444,804333746,2009728905,1972512860,112014351,1292429551,514392626,1007767406,1219362969,1767639449,793244524,775016097,1025715432,456400878,454914642,805479933,1515111030,1407044550,1015518474,2060954304,1504792099,552560500,223830781,1331883640,189976436,462999344,1934160785,332497805,1614709955,1989285825,562957550,343664866,1998190341,952640405,1041133267,335455782,1623453406,794710395,469168223,1508148701,109207136,815532252,535025692,1691837998,1722920653,1726195957,1742152101,1920477410,1575008539,5297687,174812880,254625721,735029698,96565635,973022723,1017005064,822184216,565779132,625643184,2058205178,1492034420,1380838043,1143916474,19791518,280191135,1301421212,1838439380,1972648164,1338388215,1078730553,1841132501,1062882066,1921588357,314473468,1058352254,1508036294,484537189,740437161,1005088304,920410194,1639141919,450708629,1185848034,477553613,730912546,1588020944,95617140,2066632501,1637524752,1880675533,1562075482,1191561358,617060018,1105560132,390605313,1513504454,17430825,1739448853,158194082,39071573,1406274087,1114450882,1746295790,734086578,1086108516,840493726,829377323,655308546,1826897765,436062736,858747720,1129416672,12167184,1632216899,886912168,218646896,1639944872,920571887,162746204,1009371877,1700976925,59265016,482329608,1483454457,136798045,1118582471,1421548276,678079295,1461002644,620811365,1622806566,247111146,1263719701,409727410,1551579053,205915227,2027055953,698790949,606201933,155782818,874008575,1581848158,730446896,76803390,707505594,246484998,1735050503,950338527,601439374,1503750986,1620476597,148109487,536424206,536028121,1443825011,221673213,2032266889,446430640,1062482301,1455906618,1802832414,940837060,106480475,944284547,693279564,154481251,1238947831,362532602,1016446242,566463178,1268417994,571182129,1814754128,2102816560,298241409,1695366309,2017547018,705480469,1542204244,1866212991,1333996065,26589171,176154890,760450839,1678819161,970403344,114677328,2011759203,1526337932,1553951575,315414772,1103444920,1325536871,2113296597,300020195,993687192,1696664779,559034765,2122347507,1175034343,648895119,568858927,384854591,1009992758,1837516875,776766377,1918572379,882101962,494449087,766071766,1640240140,452875981,95523049,997166103,416168526,943850354,640803879,1580591349,144655475,1403207975,978777645,1634650229,1125880224,737727572,79603566,972660711,1066484026,1245735384,1855273071,394298817,198079877,2093837684,1247494334,756554086,1738129106,1315254152,551203598,725411355,1188283444,1075772747,282979935,1479967793,1889459092,761764001,203716328,1805175243,2015100053,1753936423,1543103580,1152937494,274732341,1059243448,2026675884,2130314851,614930567,513337683,636435663,137625837,1076971036,1123071763,2042004359,1222632214,1800587268,1274114955,1309859179,555094598,777094659,1150327534,1458203284,1194342210,1399811401,942296241,1971183509,229408847,65883788,710046419,595483502,940214091,1012722498,186083537,815211964,1195410980,489905068,1787251991,2129389242,215152073,1987789326,164768717,1037411256,1378392744,307607889,1842814925,335603835,1980293761,983558380,1512432416,853647842,1941992990,571915286,495523996,977295448,529873738,39676417,449756134,1734422075,1572805794,1077331332,1040157259,1250261703,892827299,841702943,982814481,1579478591,319417315,368700806,928839195,1965737975,526441634,1376158897,272498574,227807787,131407662,796132028,266746033,1978338681,1931248914,1500655866,1247396547,144634914,1059123309,1912928085,375817912,1203505168,50855308,865889067,1287210729,1693954848,564498209,425865263,1135268456,1888057039,260905519,1996186250,2009978423,1943250811,1812944399,551944014,1656644983,217012830,273874313,1602752530,2039815612,1294047679,405500158,1037313851,233929017,1657601260,2016106955,1479604334,1251270996,1649031984,451723331,1387200425,1907670902,1063344697,1814624021,1507431757,428313569,2050402821,1906481249,937803637,1741680512,1661724398,2101927920,1491843852,950967904,509513955,568467498,1647136019,410173505,1633039353,425354876,1875738066,763767486,986482368,781206920,1451574920,1314755017,954986518,1455747646,946386543,1967416422,1199421865,1384177681,1472609303,1314455595,916119893,2036580057,76247766,820207895,364113993,1659524861,1790369928,1274714484,931490132,573075448,1801090795,1921801709,801917332,213886439,1080482440,138612272,642577119,570543629,479991169,824086021,1876952247,1610140323,1271919864,1363910172,409291995,520923482,1873840708,2129028569,1375945011,1955359563,731037543,2066077695,42750973,1942846520,308621973,1200387772,438879244,1060066989,1383168500,1542432256,201474812,1033902905,1516907951,1765252268,2050324841,512004043,545085107,1439127701,1817228914,460687708,1994850514,1654787958,1429636527,1484214872,1651085542,923321977,425382870,1780940058,2029914134,469621293,391668686,479067451,508218447,52199670,367507490,308348623,535569317,1386081050,1210126758,48801841,1732915405,545003529,494174358,772648688,804139530,230485478,695951270,2078494630,76852812,110006800,565575,264236916,31464179,402456093,814279727,1668711566,1492006368,1614522752,647045510,992385123,514792519,444316917,657830132,2116131100,767822320,798812285,209057639,1361765102,611469441,1907828447,2042562075,963905778,277911978,1987327584,2012839066,1755312969,776475495,901996680,1787449013,1182196422,1155244262,784678317,1118899951,1197644050,1568629789,322634492,1701259910,1110909581,238269080,1704358343,717488660,2125966556,2104685234,1440777541,1391096748,293249836,1550816752,1045412856,1273195782,1541580854,1415277395,1429849714,644737782,1215902557,161796032,537605872,1035934675,1480939077,1428340505,354453243,177237670,868306847,1157493547,120883327,253253608,92827100,267328258,717826226,192021645,183824766,689082717,1912592186,1457008245,1463831934,504987834,1625737513,199479749,127658086,1961090439,708613804,556325260,1299099125,1360697824,1864804401,2095229895,2103331525,1206508212,798485399,641074425,290911145,623424586,1553330449,171005590,1382809344,1344861260,722043961,507157388,1782092030,406656053,1837568180,1141212214,1670753640,526141770,13515863,510854917,157029592,1874904625,105847686,878518708,1499534885,1105889166,723649391,74944455,1247027060,1353942965,1356433206,394558754,133974763,28735983,1793091089,2078542312,1050248897,1468812091,562706235,618014533,913623254,1453804652,211278392,1293865338,64232384,1513021182,757927327,191823768,820863275,948785100,85946974,724259923,930026011,1359356557,603063637,1570318534,192641641,798926344,234730657,1093712118,2066150627,1230827376,1665171864,1432555565,1106663097,34713990,1433475228,494131073,605542512,846430228,1183421610,1664290523,218182832,2018047783,601331713,66575371,1459272726,1028072202,186088528,469494979,1224770154,1424066056,1523300210,1853552580,1855421110,1892149328,1037677960,1943687317,1239895153,150848624,695315555,16580831,1825050779,616366712,1557830578,890922015,490375882,1584499933,963119953,2059543091,1524084756,1080222295,85608791,950798655,1834901146,463921470,17622480,1809332991,1781873063,980396276,1313377666,790238373,739082892,1649592794,1427467520,1487834046,1166448931,1815506559,1662533199,488332879,1805879123,1906448850,1376985846,419724554,888901984,1861721358,676386679,1409617571,1221722056,1048031338,799718147,701116377,1890916414,818391042,824545168,1963295098,1798429832,1385934900,1688081100,1568541835,2093716140,1609799843,946430876,1568317368,127912528,643368832,29259349,1959345418,1989297818,969168167,583262859,480099480,1592209158,298812796,2086081714,1314309418,1160978806,1397518577,1403727577,1868742037,466025847,94100596,820275743,1903905799,1149215394,1750407022,1537726478,1148972649,2047583819,638798740,403861300,1015756995,1279596170,1401450636,1714497516,671307428,874297832,1127797850,1364010445,503756735,1948245440,376356227,1079343163,612321243,839927659,243835950,608143904,888613013,2129646841,420820167,546506362,534261544,1241872639,714214915,543489548,684932547,330215459,1436183757,2019898633,1257956287,205100240,2053801955,1323760605,498869671,18281008,1360652554,871872776,740783459,772872554,181313650,1501596509,295374058,905194305,866609300,554574312,950607348,1904528558,445976581,1961057461,2019120400,349091769,1266257273,633230795,1898989216,1694142532,1607816982,338862261,1388262554,939041873,1686123911,285462503,504197371,1837858087,1206534681,1886636231,1356052657,1037955733,246783106,1385420515,1562455988,957444775,1841309724,837004914,574594060,1847691278,568123489,821596969,2056277591,1673655630,1896821851,369752061,1242312347,735675832,501994346,609868880,816144883,1334840177,466688982,846241172,1692179573,1014222033,607879575,1545833973,1215347075,615855850,728561610,1967127635,291299989,50145857,1861785460,633262971,1645638642,479438038,558210358,925847469,857240215,2081924537,113328167,739249878,354574773,438993182,1518883289,1384374767,223420531,1266632413,110195169,563678004,1490185453,1787205435,1061325691,1344952862,328737426,294290156,669895301,1430672242,1045953880,1963677542,974574827,2036776019,468598303,23022908,1057688653,1362098374,938013311,950215375,50601316,65677547,610822375,1348834733,96610527,791213045,250102077,1720929693,622723590,1625798297,191513077,1524505752,2117643777,1926228646,1837337813,1658312358,1328639594,460898093,232474032,1371705981,1358232349,616670668,1389562544,589635765,1892591051,1101872238,997841320,38653135,1486727315,1843678388,1260004796,1709335639,1296097196,1752821140,495941304,812932223,877807493,1015198122,470915897,492099731,37766883,894460698,675587437,1008881325,607664185,737421215,629410274,829707513,85771639,1257941796,710165219,592123349,1624443164,1145692637,1109382655,62144180,1161660116,1353163155,53592741,945635198,1051942708,1713426538,693603240,184491046,1303721178,1794662580,198507893,812315914,1471702947,1924939494,524595691,33406698,1059193227,365577119,1171880545,47877554,465596080,1441671405,657802485,512805569,1315040201,1985187516,910722727,778737773,1898026419,2040028492,1983303407,333118913,481342115,634707103,1865066553,4156463,1253057090,836305447,74079074,212505495,102838072,1760579942,284260618,1617497766,1074874087,871788270,1606640590,1993381034,1215106200,1270270979,1393512311,1450413795,683623402,1182235543,560184475,881972363,189669043,1061905018,1554541189,2106746923,1178610092,1773052993,528895391,793289385,358194749,1990244317,1217579555,1558781071,310803629,1053287217,1914766037,471032657,1499846015,572962531,852313593,1513488280,1506536145,1034374197,2101165,573069036,695429738,638383673,1891309720,29979827,1151914120,1599478806,603173660,1017508457,370801101,732358352,228658804,1296452369,564778604,249930730,1768415758,280581674,1780935541,1372298346,1506500819,1187388606,352009890,1274492458,2077516051,474666,1571013735,144300714,157477564,1549320453,1893437985,1215261266,263168806,1488835602,1093691871,342500999,308361603,1716505389,635941711,1726008353,395576353,164636551,779040181,1073745412,740412885,837858505,963165453,1875694787,114499869,1704094363,994847298,1283087437,1868620334,892927666,2101139909,544911228,449387849,1901453341,1319731771,987673389,310753304,606381113,106593473,1444711979,853344528,140722769,693234799,2087211374,17918063,1960896768,934635993,689312508,214477204,766495286,868267404,1060081354,792638817,1623250769,2088238995,1935133369,129816069,1220013626,1474126861,791624303,741442780,178170715,688944874,1402296104,2009475973,522932251,1378977679,1653043568,435310620,1717528780,380071617,705545396,667498792,585221532,1481285906,1295748983,1678816227,1022385006,1025753353,1299833692,82005517,89377436,455468189,713653116,1089760478,1328975658,854775134,1077624658,1577900524,1695021825,1568039852,1243815455,655609338,681646453,440180871,1535292059,1185958819,194194477,485691791,1511644923,1899711532,1025682743,90279327,35978642,738709263,230876912,752941942,517286863,1138733788,1007766471,176226730,1170968840,1166566476,2003998446,1992398872,863892356,204666897,305649283,1911550266,61508620,744212575,293656173,710418554,698315272,2088399054,1535561207,1146403907,788486502,1190718362,1122644846,240943704,1535410223,723518151,992251174,397276992,1506971222,862242324,1415634591,931226295,998909696,1500523243,203343198,1723916965,1659159128,1543732461,608541713,1219790979,1693178879,1909946843,631386282,435252679,851569472,1210131986,1889334352,1061846445,2003572275,1786673395,481298450,485962240,692848162,93143944,506659002,384670835,741554078,258231580,1742130422,638123024,1658993514,707423213,602991438,370609950,21333805,1251372400,1373590219,1132489117,718010666,36868769,1051533512,339603138,62028845,217094382,349237823,252787312,1742597523,2019606073,190053391,639767334,1052432900,1794193675,2036468287,137528290,374205122,1187895846,1183311249,950518430,526222722,251332509,117146449,989328746,662636254,1197862511,28275161,1869092700,615080608,481824666,2024745135,381875054,1867509512,1622671446,950825996,533428712,626306861,283590263,1687417361,1950150944,170744429,1965336372,2098608010,220078217,1198496817,2122735118,2048865393,7671599,1531791379,365649495,1864919070,1510776235,609518535,1988189199,2058693474,876468720,353704283,850738960,1416260750,240458013,842814642,63160642,324528574,1578526872,862486493,2093282509,1838969223,1606098850,497225961,654067268,647518017,1952158647,36716431,607386837,1204988820,1386476354,933375892,1863910972,501509390,1189965710,303768256,1585922240,663626853,1410332465,853494708,2127497773,887072063,1453152841,791543218,1855529228,344841458,859590451,682059841,2074465390,1951120747,423136775,1420076850,475045679,1471959113,1947548248,1979653726,1262863126,546058987,1206548242,1656787046,20251858,91411753,1762095279,1501339615,1641498642,2086623446,1166250638,1998517231,2027809669,1822816917,871060037,1273923863,1725955055,1802287709,1568416006,1795201885,1447096491,1306764183,679714286,338070273,1647816098,81216962,2037356991,1943688901,211829173,1286215436,735340714,982915600,1517347570,1251485977,1027767691,1743919484,1812248401,901273397,442812563,122643830,1188369508,1372583006,74395877,1065077491,419795968,281663072,1631394831,197121840,9230773,1718577224,1163875501,1330457,908004715,1131004852,1841238270,2087656043,405571341,52818037,1727036910,1190647538,1369750203,1245187234,1350460845,674568219,238026846,201439370,1655949915,1468366010,1031290985,1007997168,1680867993,484248859,632479466,1385077166,1442750949,637565051,114751343,281963643,1209880493,1551690252,1413476554,1347109877,1605270949,863318242,1866763779,1012682201,1454977411,761974092,2033534964,334220356,1943669940,44570930,2022863094,134882899,62078936,1711150329,566082023,1021675553,722970547,1303125389,1516580280,1893910114,1240667014,488284212,1413117798,1133708945,1253080688,784742285,409201848,1587722943,419485811,713272385,565992324,350005218,257850945,191411140,791315520,163757504,549056947,1217672002,522265036,1021662040,309655848,294469511,1891552111,1723604950,1874853956,1790781240,688023107,41909109,551304096,75152265,1577752918,1729315171,1729049506,399846746,687669669,1055419746,989270563,233869133,678506254,1296669069,150056462,204224246,1705647106,1933879349,741091297,1864410147,1192892618,571261555,352084885,1036842767,417332122,1949919462,1603181922,162506819,806834190,792149801,2095316826,1942952830,762690347,1910579842,875376208,658981655,550970550,1306200241,50066505,264855369,1147650511,2078367398,1204455934,1396149327,1060294852,2020903267,732949445,1530146990,1309028633,1031588120,717947007,173943984,1651143248,589001914,1732791337,119361412,234359546,327290864,1160237030,479643402,328795178,1528374357,970031474,2114163655,199325787,468923499,1723226371,1263206593,455603142,1703540653,220931930,375023170,1882224832,942744371,1868420215,840612997,676997822,2053299504,993317827,730706739,647366336,1058462216,616112915,215629258,1376025375,1910258191,626829378,1836511543,464403250,297241521,888903160,393781412,1490158295,857988215,1945825434,838719823,1991016699,1075888811,1842471887,1781801443,1172355784,1354790214,320513869,828795037,1082951819,212397458,284315249,731635233,584489419,1013461132,1685753558,1128876460,1325370685,1091149611,14305573,43113583,100080478,353910071,483441632,554549466,1688641634,259328346,118431057,1053004831,951984336,418900559,1973620503,622663952,1320567250,1240244309,177853054,161565354,364772246,954032865,2097791759,1568010921,237808252,309768030,633634086,973217307,754708801,630454963,869699516,2111732830,1758873669,144156358,304971077,731673594,1842094992,641031648,960308462,1029226926,1687054405,1397197805,3059729,2046710907,970678431,988458074,620592872,1807833778,169868404,1855111154,2110106291,2127105776,916385017,1194006777,1320639742,133823047,1133389284,128832066,1126909969,893815259,1425673114,113521652,1674953631,2032311415,605887146,1591764573,595540134,798064150,204733778,620525473,1659313194,1992023003,643375520,460672035,815464827,1931468638,563748096,644164256,565150080,905493624,1105350257,2127311737,1316501225,577661498,793256627,2105118413,682568374,1390073463,852460769,1848002607,1293679382,727589722,1518012084,2088033306,781895349,255410802,1559559787,1269086884,1084372130,723054375,1971640343,1406134689,430995543,1429270010,624501675,1543953831,1274139567,1480843797,1913029022,294888230,2037200897,469488856,1660859054,231348771,1620578954,1316506497,1443094033,1113911191,1013426177,1273091185,976868079,1602687835,760325380,417291213,7502369,835031160,1580862759,1578524265,1806508951,1048460616,1997537034,227983945,300407791,1475715212,1264192464,1361793615,2030477523,1156477553,780510667,1367252118,505201821,1681025240,576746261,742955608,967088144,907484712,830365212,1693599062,756701650,2129639697,1457815624,356937329,1055925434,1593438577,838214333,1366848493,1489606479,2009905023,8474243,1607442429,361054163,1525620156,1159545997,842561036,42386853,674824168,1524915256,949418332,2127871304,250198612,349191451,974426721,865437341,495758337,922845231,858895176,333909311,370575290,2004560640,1745719189,123321240,880309547,1792572634,1972201438,1446267057,1731555129,68439738,1549847948,1219038364,185196737,1604825818,1094461718,1400542757,1001907121,314337472,1996662059,563246605,758610620,1181305444,187925863,779095875,750391914,58732354,200935195,1342552106,370135042,1230455786,580268550,810761889,872277312,846246822,1733811985,1451884039,957129284,238834259,1649947129,841323524,953462356,455377617,1357958299,428351014,745984511,1326232093,1555880748,1738916790,1522677051,1830175739,422676277,1801480020,1484400815,374047220,1342060920,1562368603,823522765,411682745,1847885435,323923918,1601702438,1088534430,809915639,1444017330,1848536335,398516223,38991238,1389672800,1589161664,1113937734,1995767656,590029614,259091539,1979908391,1728170295,53066545,489897978,1494364885,1361117219,1706143355,85441905,447269702,1322133508,1195409259,834068197,1617813248,1429541652,1540009743,772015321,2083437589,815237139,1073150768,2068859815,1147489050,433195344,53517010,1602290221,1935479430,62416225,932705543,1976122017,1729185739,1302382384,137852984,2054729510,1499289420,680827495,996281519,1094481745,483439610,1049355266,2006411632,1543512111,729184023,663920773,1062491622,1558915045,1794902216,1792890517,115916933,896207660,1609341344,1039899498,124741064,50514841,1129136004,1822205979,768204765,2067302338,622006352,390049573,1054159281,876469504,1638135287,302766577,1280804874,1602362860,1711244379,805591346,1449030718,2069609366,1093427389,1133119707,418587554,2059052316,1330901779,2053552176,325138194,669145222,1770425476,1716025842,276000312,880561359,1516346715,1058169672,1562376681,29728267,1305629131,1226166570,289392430,852553886,139246786,1756506930,2023266933,2039577929,208193830,971129774,1548126258,1807046818,1790980165,896608058,331611179,1385905998,1043568109,23987858,1535198171,1543427758,1923609568,1955335841,1608490357,1898626795,499119017,1941363111,1752984975,112604656,2099548375,990367958,695730512,471727339,1074108731,2087455915,872070858,1336032524,719540840,1465366331,1100840250,2086523046,760713959,1721142548,1404842391,1562095062,1110075326,530094378,813525554,235205756,2063536124,1232442478,1366167826,1000284104,1365926687,725396675,1477298762,187103631,97592845,1112218947,451633830,2051732826,674425516,241874345,1703023836,1101055612,314959766,621872512,1699498277,1932307795,1379363706,1471330312,1030490125,971670443,764206507,900321772,101861558,705193137,474911907,1232103532,232014482,645720420,478614297,713173171,1557404496,1452285253,2044886786,891874231,2086046760,167576179,734060897,1965209970,573060539,159048900,1403703065,1213461274,1748745198,1031869674,237141614,2031308711,1307892464,522629801,1207052938,1886739680,1711280404,342503098,246799021,223784309,767698670,1195430229,700502749,2110920266,1503793227,768689587,858492971,1593887359,1689817941,985482047,1516139831,610157200,1108173017,459668938,1135159962,932882074,1487639374,978616357,1064398254,1687899764,879676321,1558008200,102134949,1945168448,1782399361,1433779494,1928072450,1035314321,658067526,1338578399,110488268,1675043122,1038737472,704535078,1182467004,1949467298,736736418,1761737430,772670971,1193361756,177134050,1073274113,1371803360,1060460529,1166698110,1905697257,132115839,597209574,424985166,983599103,1491854558,1038129026,235254288,1235019254,996124172,1070815695,1881178920,737775239,1481595478,1091048178,742358550,465270814,1911449914,1185800858,1678583780,1415097352,1164709667,2113081759,1793310917,838995168,311421894,583309903,410438705,2091025691,726273735,383512696,2112949321,8510869,1258705624,2030873705,1467949205,1137312231,631983440,103632989,1727706132,1462671628,1934023595,1888819460,1827060965,890244168,2029987913,1950273890,738282515,320657297,474884544,1647867302,543791308,46321097,44065492,1627763265,1138751904,1912149031,1989070012,170208473,1534262995,1392792821,366509977,2016515116,1917659159,864094972,628549701,1566210938,309146605,1926043676,16070662,66559401,1514127221,1894681128,2013342550,10360020,823979054,1016950243,602726723,544526611,1737568034,681264898,265113867,327493704,1723481816,1344618599,1684727719,25834741,1568707201,918762811,615913382,592338254,361319418,2055776594,1113021107,1348341183,1757648901,366322563,449629023,1534819182,123663153,647508637,1715446980,515608893,64289274,1000247541,1078899797,292931051,359905254,1997620129,1077853275,1033439863,1781114581,1163857776,1969355683,291770611,1392023924,269196922,1647002241,985801276,1964941061,1687417227,1747856128,1595385865,120531544,1971821613,321739642,1513142657,953818771,222839870,250827225,264787196,510934521,403474027,836118904,1488862820,1756108589,1242943271,1302966799,472922111,940492145,1275951731,322104127,413860607,1730526701,423774654,1750118693,558143746,1712824970,1418244476,1126370234,892772461,661920757,347110593,234553744,996280398,689056396,384705115,203625921,1535872810,2025161063,389067615,1689675080,1894694763,525465400,628429840,1696677071,477503479,2006008787,1556150221,537614929,1147283268,936456897,1090610221,2097185001,488284918,2044467802,1699135365,1353254222,1501855843,106915410,1665659669,454684517,702667889,864242801,664657836,1079536020,2026761393,1770957270,393012317,1441802868,1584172214,1564579450,213607672,1327907149,1972344926,1896652655,1500411852,707376417,1970149589,320398947,2102151907,450404655,1761754440,1683310592,447427958,110915473,106646870,1992081069,199341652,1245093415,1810336086,1739019822,1546312667,184802465,404123737,1625918321,1629262938,1596030513,1440058837,137410332,1581509542,1255816155,162417822,1736990278,1066814707,2114313098,142377687,609075152,1452617463,1303922292,352214065,1754664289,1910961092,2071835888,673737067,78044315,1342305484,1940493677,617050522,1044833041,128851229,98164981,1833896033,1237968756,2074737863,167388728,905660362,167762711,873830610,883202636,1326986606,166756290,1794356118,107529030,426780138,532041822,646144685,1677465663,921615469,808007024,1196177429,1273586707,1291171478,1953562106,105463735,683908539,707001048,1071775922,1704094537,2090781036,875071067,290849294,721559665,878462003,2024236851,463485270,1712365814,1419301005,1812585281,726579687,873792536,147561915,2112121552,3651946,1959145383,988455769,910028547,117213189,1670574722,980370790,1860817598,1523055549,847043090,194215159,434890890,2056977767,43471623,1871322070,1229968037,79670580,2064854220,1406559446,1336413704,1698276067,10728243,682201514,1548884550,481137581,530186198,512300381,183401809,924162302,235573758,802306445,961821113,371012288,975075632,1182068785,1784167427,1822859681,1210508182,620112825,1067386929,1415602548,1774876756,1116437679,1562762607,164228873,139402112,1822584831,798447150,467537503,1878329856,1653572194,1737370633,1966249322,756600818,982775506,417026562,1662860435,563159216,1018826287,1256333675,1573341114,882356376,567538539,166871414,1391922368,2047895771,477410675,1293135705,23939785,1199882331,708423244,951726867,1988875959,71410437,511896447,1466195822,1094870673,210357274,348385751,848413981,1659393479,440865882,1122393819,479921371,239767377,350759442,569863859,1645238295,204519653,1702194833,941790176,1749817093,280523014,76661260,529767406,191026145,2060111713,112178351,146294945,1449699107,974362325,450248727,1499770091,1485028278,1636601531,1750400437,1241840242,859769744,840565691,63716986,1990086462,1028768121,1386668580,423865019,880374944,1831734204,1324003410,566809296,1937468212,2037422006,872090791,1569026495,972910010,591877319,1615181858,1595747278,403483279,2057811560,1642666028,2010106221,47549960,1923830054,1691971119,412396594,1725537992,1340339797,31886872,22933508,1166655382,405388136,460833853,612584895,434367184,1360251029,490240920,193159766,975917245,1671861366,139017528,1827449535,1413768336,1307036682,509111853,808533530,1040931170,131337170,1431787293,1830848483,958707167,1195407020,1909537160,1462443351,259884012,313188378,1097957895,2125060638,332952839,41736384,1534453193,837296262,1725128441,1156763874,1003925061,1407903812,1949895600,1647554845,1033661607,109083830,432996491,1932966798,639546139,195146595,1475418603,452247169,1830486377,1730085533,409898162,1728414963,831413245,119108516,1739810274,1099482366,1435886753,1048759436,993392729,326003246,528631551,125918688,751172760,1614478467,32247908,570973230,1955393724,1534418090,132925327,1043209851,1684004808,838965643,1229897966,392696942,1147204325,389602731,952555411,785933495,615215949,1427744348,337141926,855781804,986567839,2032826358,2119327457,600119156,1091107137,392635747,1735528012,659042136,64179055,1890154774,573223741,2071263440,63807768,481414043,985378081,194827957,921796577,153655376,1120711633,1769720159,1750690965,1932891837,1337696971,1802452475,602965124,1313505711,538580380,803864203,367892664,1630559565,1519120122,1236627465,2099538601,36122816,1875707036,298364926,1110569445,1981718444,1268833951,1381428342,2090662404,684692858,133833721,1743209599,1299690889,919184479,903543099,1631975569,501842,2058387600,542859945,2122117070,2007293731,458493283,718689985,1021004002,730059046,514581639,222412899,2104765432,1103971501,626843650,487719442,1525177852,2078145768,112279805,1085173303,1353158626,336629295,52204592,1529284004,908542519,1094505782,140407565,942745324,2120681437,2083868709,1271382225,856561598,337637612,461662654,1322699454,468764345,1621586601,1574254866,1549897677,978598409,821006703,598054376,1729777014,1412057004,1977000369,612155656,959367881,430793467,56092344,1128390123,1245849242,1152936094,595120311,26485791,1593359014,958318942,229727764,2000860508,127021749,1104692866,861411021,1133837607,952378458,1123200237,1760116375,1307879032,215658736,1789035296,1204014525,716509039,1604489135,512016127,2125716374,152735088,465905123,1605546775,20090515,1014016580,329349447,1969914511,1724746582,580583582,1861031532,476045723,639462920,2046847601,866545560,1176982265,199062789,1467103143,547574922,1421437769,83645786,1022833693,1613206722,749372232,898495111,1673856604,1020678624,290380177,869905763,1884821242,30915914,666667302,1897667686,1687217414,603845236,2074587231,383854070,1256170557,656230793,509370401,656072266,603574966,470839027,256972998,1280753658,1229267595,495988050,1481548821,646582002,1558498327,1477757089,203408396,617763456,892698317,700189313,1620349683,1833434503,1142077664,1820557256,1375859231,1226806740,1945572384,791274530,545517039,649300869,1811431633,1807324609,883732254,735176320,1620327605,1308569529,1374167188,1904923831,1740731714,492329952,23775380,24222540,132343161,608108516,693011409,1383734216,1017168866,222081769,1738280051,360089416,588751868,1767173483,1285846631,448390654,605147581,314491951,1788090740,1876707753,1488326406,1259953981,1633601248,2127050246,1309553696,456126664,1620359586,25487667,569453697,1593229742,1505619158,1262710166,1365853223,1759369404,1032351819,1936458499,1978689495,1480589697,2079757027,721867754,489746852,1160499638,1589294860,800964925,436563450,1848926495,67323654,253477277,1181871493,1878526353,290372312,1692334458,875010948,1760508052,122377160,872843733,975697087,94439843,1407744691,159888156,1966916558,1078685382,791184643,2035877117,2012702034,2074811647,771206580,1042501613,317043144,1783510642,153352431,1207733338,1101800140,544672033,1494237134,136297474,745067141,932455858,3880370,1274819495,433255272,593922003,652752995,1336129624,482845441,1011262473,1655804896,147169190,632218610,1730232981,1740894602,779372196,278057936,1792765253,1189520528,1217492448,154939551,1852443735,475101768,72514089,5914243,719173465,605928271,1464562223,1366777863,137006299,148749240,524202385,1864890529,1085851486,1131190426,635501589,389892841,883611515,1903600897,910978509,58285322,1769164204,1005793856,699899672,305915199,403093262,894525807,692500148,595860686,53181630,2012535433,2075722509,833099799,2111658296,12602006,2009622435,1024161801,790937534,1991715575,1303998346,379463956,582841558,406690235,283563095,1464877475,2098500891,1692585244,1762631297,240813477,58631360,1524242758,1343251431,1091725759,1089906786,452572244,260841407,801125891,1958197263,501044565,1096524598,1370485333,1113955062,279726123,529234955,408996796,2123868173,1192387876,1197071167,857386833,1821049036,1040327261,505905338,423918427,266374558,1431596315,1833330645,219713333,413125874,476102204,2005844256,859040084,1840927183,1030837427,341267630,1461412165,1736869293,1121787883,1373227319,2129808283,1588132194,243350193,558537542,1388323556,442656359,550368458,200029785,1874339938,495981981,1474340315,303523043,1572655371,110817709,608905652,467927136,1195347213,161015084,459411003,326267153,1115618578,1580581207,793544486,1119683492,972406401,316801774,1285950299,519307164,452031621,1820872292,1572332524,508348169,1327228875,1989910227,1535696926,1898377853,1050811678,1883322493,206788046,1973007704,1457444730,1407047272,1211012571,878166556,1484956014,1050967534,123532933,1099190808,1967724427,1404525889,647503557,788960505,356292727,757270988,759810626,1462948777,742024471,162531553,338384188,1468888438,1275386093,1136703707,173250611,1337875337,1481199176,233278675,229382764,1484275144,1703565248,1033675280,939224905,1876155626,1559556024,124156012,654228338,1683070041,1412805168,182393582,1394303469,2124878192,98437947,572646051,1157745435,446039000,1292055592,685009370,1481923836,1397093224,1200117145,334123181,2013872621,23294912,1186881400,399655574,504561385,589600567,788943830,1784606505,452210897,206421621,1692353493,923713122,2126668107,1764646991,1034303832,292499122,1454073188,1122752623,412242360,1197971160,202129376,1327706398,681036489,465627466,1797917329,1052454562,1130680546,843611730,1070748651,598825488,569092842,1372895391,2105397826,234237075,683860974,1485618374,914910197,1300507516,755914099,1523829304,957981117,50296540,626515532,1715831798,551777989,1532488065,1832830547,2061604129,1469439862,1775926438,661202021,1992695722,939322238,519133390,684284223,571311254,85722212,60237790,1374445738,1231217217,53759780,228895025,1914365227,1158029946,363839245,2024720628,2057856187,1687685361,887660872,1859230653,242561390,2021449130,727110820,1973668655,173996019,1905603725,1376935343,1463409076,399224283,980070732,1948737947,1001308026,537370564,759878199,889182237,1849548735,1327951989,314037995,1736333229,1817500712,1950040714,2059428587,496303237,836551868,1921146102,2021463450,84705668,1730596355,1854080744,1860383177,1950180551,1303782836,209012672,948343151,1744580102,2124535035,1461880165,1773666160,271895181,339158933,883851876,632048825,1044871079,1114765333,334671877,87540807,214924085,1957036211,1430101666,1783125300,1189142252,789482107,1901664006,1820450519,1519129057,704172059,811672070,1043194005,1767202799,2058509646,1905640098,127125107,179814437,293013038,1818638110,1617343444,1675882387,1735026567,1901481100,1744355698,712924065,313878335,2010498403,737954600,293061299,1589291020,1138357271,425110726,554494424,1949649716,1428810281,1210468469,453149457,488393043,647622197,356473852,479721139,643440243,115040348,238760746,1428172009,517382118,1588307471,1212714085,909608055,1493628753,1745481995,190572349,1716875359,335368053,1717219464,1139188355,1304932511,59789058,176468789,1482359166,150074333,726839154,1142595238,1706498860,1968291434,238856325,776412333,1490358633,1705575739,1373333861,1330932142,874174411,1294332145,1322545544,413977434,2007513626,1002143405,1386433712,1920285785,1288600447,750064132,856656389,1486473242,1476299497,1730070081,2108610836,1636442599,547456794,215290362,1618015310,1708559806,1440391932,596441529,1888577239,1767032095,308051702,574686774,53749480,1199146689,756087689,1020318949,1947040446,1290495334,2008352291,1050255998,1683558598,1320820426,1158982039,1023999985,578668577,967305252,215697996,178080167,294825081,178578754,163780753,194448024,842842603,1308187592,944419761,1260154093,1512448927,1002754885,602461034,974520833,1234145878,2117168335,1733071666,2074782204,1112684392,635241124,1669726479,1804938171,660668088,1631695530,1251382562,1321378267,2058474677,575094957,1642577987,288964300,1232508205,1758532598,1801728806,840320251,1280453626,535433054,1143263840,597012824,1747693000,860624169,1754011360,984554683,1028629973,2004435658,498612106,904325411,699900819,1647489734,1954892177,934758010,444002969,1177453445,1691062794,1539085786,473638809,1750141572,1832860177,616700603,2022448515,605659262,2087046789,226062135,149520110,1112077623,682924550,290645558,1666061129,786589599,924360125,1997461995,567918556,768276232,1900825354,1969233614,1901735401,599247196,339379903,1441722368,1277153542,715047708,2055371543,887933044,733328235,1930441960,33661288,1632215764,1372672454,717812129,1336129567,393760510,294829589,1946072033,1272240122,534102095,685736614,1075983396,727275483,1833416602,1050007781,320784729,1447467408,18753112,793996407,610410899,1859566675,1512686997,76370636,751300998,1478324,1092171721,336210548,136106914,1649836022,1833403220,1419012040,586748201,834176053,536998017,278731849,997028292,1381476480,1059904676,1235132297,265732142,1337938200,1931640375,222097469,930822743,207542345,642527993,1282805840,987149008,283314045,517322828,1566367843,1084342513,964826669,1724887757,1493611165,1035885142,764405458,2065579661,556150807,1815031677,962850441,444900245,572233087,1708571094,2107051741,405116944,234072947,656331027,234075276,1625278522,1855195924,1684351410,675782693,206103573,1250430446,1685259571,1385375067,357084732,2059780359,1000094646,2070228378,2041864433,507520921,916861262,1178908692,204185087,426732935,907624135,411308889,1573746839,1731040026,1026912778,539127941,1044562078,293798642,1139086947,1752056168,954626998,1577141991,1080499409,1630294612,1676992328,976081744,1000049530,1499104804,1995108975,1718484819,1704690240,1288572378,97577809,410610335,646622066,941240490,1699475759,732006931,71992548,1957416896,135020069,2020731057,336647340,1909317724,1689101066,1145997168,1061798152,1930469385,1215374393,668400423,1484680656,1300710541,1561953101,1743474800,21741368,104362044,560856349,258378984,1780115174,1347931511,1517838353,1647175798,351107803,465123796,1151201525,444855779,1318041155,1474990602,1402739093,52766581,1151159809,1615788530,1031610495,543552465,531490770,1312596670,437882277,1013542710,1999031039,818095197,1236328453,1108685127,137591271,834062535,1774948144,1707780916,1422499052,351001438,973031921,175899596,253244754,753343813,1999985475,498659594,387475160,286206209,1084090307,943262557,186830150,717312378,841770465,2091485543,1699442175,212119022,548213637,1862082906,206995448,1283751102,1711571724,1712312757,1423353081,457123895,260245866,547274998,234563088,939673538,975074149,1229031354,592144901,2049321055,1897986018,1090955458,739753556,844690693,2121704636,916998981,1903154066,564579809,155511332,253327326,1238119076,1624695219,1501524363,1793468517,170204608,1523757906,906197848,1235388901,1302513454,1216964441,1960634041,1878257480,1964328770,1174141495,2092784598,1962940322,891898287,825116237,379921921,1732914682,643942837,994310449,1201750250,1153029262,1391956752,1030327441,1476990124,1647468050,198511412,86166439,365639175,1059964955,96291982,1023478566,166969567,448800736,1062455878,990125200,720551002,1589733069,598354022,325819321,668434839,539203799,1098866472,1301063710,1082295219,261325060,1478741367,106379070,1289252885,1597708349,532542771,1655159700,1750277253,1011363474,1431863682,1681205741,1723098985,402572076,2017967590,1486770786,1800883083,547496422,165147637,544065000,1338144930,347477530,1785368044,1289652539,2055336289,656648218,515741950,1751598048,565337204,670151197,1450599268,510839257,1039303369,875038030,470571816,626113171,977813596,423521659,68305973,539504343,768471123,1961931900,1716572805,2112314403,1072222844,2014155191,514408660,592072566,1905915367,145993853,787703607,642636247,1842775721,1745352641,130457425,1776310694,2115604599,1360700310,630354031,124771267,918816494,1370974437,1997134867,1847253122,1436865072,1802391055,2060138809,338870259,93436640,2070741483,590385942,566658629,901708252,1698098702,1364999556,706675899,1647687440,734471615,1845186035,1160816963,2028028108,1109111681,734392932,127669643,486770167,808859837,1793413006,965831504,918845837,344552979,48329762,1430540023,919865660,536459209,1190244357,593438664,221703188,120960964,805691148,672753059,2027396739,1791199940,1178114446,637181025,1006555907,1512115952,1829308834,199655111,413169035,1899380298,794541423,564815287,1694802385,580843043,1337645931,581567418,1449059762,1573863494,1509419730,253237404,443317585,1831857113,774950720,1124922184,850523725,2015391188,771618470,688109917,1485436633,469486297,71841252,557347310,1893092799,882513249,1681082556,1860462418,1546367966,916200516,1054850333,955893196,1754122381,1096946747,2046725356,1156113917,1326316911,421018343,1025838885,1880720156,1170467241,1996390350,1238510668,1732594675,1393464148,1137193032,290280408,364460785,1796594618,45514473,1904752294,31852882,514469343,829379083,1003453328,727185228,1705413708,1662632863,854499460,962920931,1803573597,1179827549,1101068949,2120192084,1597120413,1669832949,1806560463,880383582,466253361,371765932,841369437,1317279339,1315595766,1915545103,201984764,1817964588,881826886,1447133876,673333014,52331823,2123427020,1727673077,1242157707,978672385,1985624334,1458198541,1327380892,2115123273,890919595,1809460903,214679199,2087024233,649122754,1113485638,2077577809,2025166770,2078522747,60415391,1949277236,1561277026,11453718,1703812588,580600145,997011170,738542192,1117550594,997131010,520176937,2122451347,520307655,388138926,1769194707,637748054,745564388,986162220,652178292,874315229,833657886,1099911322,1597958351,441313588,415143657,1630752921,1149791366,2125696476,248493370,137516460,2073466381,2075827016,1186924720,78965386,1886219473,1186904164,1507643127,1581859766,910325249,1283437584,618857888,1221263904,1993022987,1648370992,1236494710,1797831456,817717258,431393008,501387292,1922072101,1401110551,942108230,1491048511,1980250170,2038361955,1503528983,1647241669,1950711301,287994092,1364834945,396140304,1427522102,2037260141,393848950,527737712,1719372504,2059954625,1997225934,549669053,781297369,555099372,572849876,543587406,157694313,351402408,690347689,1676026846,784381768,1124928134,1670582538,963142352,261908676,411389835,1541383606,1931172884,627254613,675193126,259689714,971370980,1177196917,1688688403,1392440433,962918727,292432688,1377600634,599996777,1413706229,312702652,111774039,37683407,1016839291,520598087,1290499439,458598099,1007189862,2090604348,1420100690,1249643149,909583814,40755148,277525596,2012249677,377617248,2447283,1321138414,292090921,1155797709,1827170109,75330008,2071896579,459013816,255368341,1675632378,1273599504,1313293122,1522243327,414845739,2052692131,1206385898,1693654861,698344102,836086710,468075269,933125443,1015746565,646504761,2055875132,591494114,2494178,2090904776,1978511270,2055975360,935163559,445252454,898331263,1643271248,721201328,1908587949,2030869863,73767716,988410011,2031951298,125026537,1403826628,434248887,1349403511,1252527127,477714254,2096502062,589386739,106509242,1139222094,1956262802,1207035128,1064413198,389790214,1459152898,1529268893,1776517284,975284243,168788359,951551795,75873892,140040207,293874166,1858359111,1809681080,62920780,1994435252,541587874,1358190202,1011793962,2027816354,795172038,315310069,4293773,44697099,538650673,846168674,602914685,1623537052,2091740820,188661738,1663537713,2009253482,84337546,1721571361,522849288,1421223434,111676314,1544817412,1579482690,1537006935,1162745132,1463831493,767355006,1691380146,1719618513,116846448,1545824859,70852468,1966400838,1386855596,678946945,2030920479,995059010,799903424,419962347,827756340,814932876,2107568629,307554808,367410469,122791194,1452632836,366852982,1313683811,791532384,912353075,1969552215,960866596,1398538619,336947523,878640010,245168908,123236228,842679438,1203586,658465726,1993537205,440199632,526961187,1675220741,1392694235,161626095,1924104494,375194619,440837979,462250676,1893731707,1874563241,872419686,1768944451,2081236911,676481209,825104161,1905074415,2130689916,369207383,421644281,497062521,1265625322,432182192,1593265231,519297329,1252844484,2029684535,1035659553,1197922414,492709360,492955958,84930592,1371159729,479030278,1739882471,693890884,261359839,328078574,864389976,1708380639,1159566953,1114692916,2105854131,967497451,249562151,202407777,1367887757,1733058008,696496910,1438678820,1797535035,1574510747,2027585513,1724160530,150221722,186646948,1784372086,910067144,1602663593,983980614,899454598,717895780,31684760,522202315,1171943578,1986424199,1978790672,1851270133,1923222601,1631658987,1452612194,1039209073,1181355301,1066301481,2093328129,1310230352,2050729285,266260152,2080865630,220967000,1389887651,1925960269,1770480921,1465460411,154321946,1312780810,896882796,573314287,1929972676,177600498,1023321945,1588718695,1848151599,1415841093,1396342026,1962518847,609542814,1714705717,1446917626,928373945,187050663,1218522809,375105684,1336450866,1662307593,1787508523,1818170356,1276842463,1778667832,906669240,617634133,1992941353,1555868631,1522701022,1837327062,332028685,1780533203,541464609,1168492591,693238997,1017051352,1565187729,1698484357,314134150,405082932,1090693113,633493011,78385813,1692929645,1668733971,711904624,1064202507,647568356,1621430346,656055706,1433179188,21021066,941919876,1153895718,1351413934,1292389760,1322224363,1967194910,396657747,900018999,132974467,641549675,1866107987,583846350,660470060,234817314,1258630804,1547104804,26607400,623092950,1004419150,1105778361,512246497,1028268358,497290802,1129281281,1479372433,1621554793,29976136,60963085,1292412544,2025848248,1722858692,1037264760,323344654,1927489515,1988769156,1092853187,1823632665,1849220409,1286408281,1732147029,1846702206,1450312458,1995488039,581737077,823968966,1806484621,1827247535,119339344,14679470,869259265,471914684,975399636,1571620616,857862312,1478430140,778346443,919585027,435594009,1005154055,1205274315,1182460691,172634978,1082145763,192618332,1701683739,1767759100,1369228703,885964724,1519755543,665375145,291282813,534652971,692922202,671450003,838174764,1085005630,463863646,309380405,1324415777,1958452723,543166177,1758311017,650139452,1902716955,2101227603,1884213017,224918090,1201038380,1991661972,1141965709,108619809,75555655,491946422,2077648225,1444046437,1554877603,2079532996,1103759974,1751976497,1043647201,762223671,94181793,936699620,674825453,1895410484,2118381142,1368274235,139861251,1245910360,1354840689,1803609894,1990485614,33974290,234201446,824337043,1885943098,1885804872,60994209,772794351,710693771,1329226270,942823755,996276167,807736265,1691702888,1331769874,774280724,880935830,48763401,357484611,115989491,1099231291,1717349512,1177462132,1408387789,979848299,1195386496,417132327,61398298,356695096,146098766,1721740011,477124953,205358023,1158835330,2096871626,343076021,893388280,608033495,1722957042,1479151252,1059612812,1167374282,980471889,1495067088,289278835,1510574464,94408867,317593742,1385340957,1437800082,799795250,1041044346,1495746965,121753725,1122796820,2001350787,804266028,966365703,882526717,1900323285,831704620,2102979970,676318330,1903500987,496959438,374355074,435560450,1471824924,2109971668,983380987,1449096048,1674950529,676499845,646593951,60890115,1007584893,1395180434,1565801611,233437585,202708738,1026189284,948495120,159872650,1117211815,1318742466,1801499064,1266087645,220898539,1614854613,38161437,671110240,794381243,235479118,1394161715,383040428,1636898247,928148472,1665709421,827035336,1748311491,871201157,1809633275,1415134099,1906124262,445415954,1217864397,938514156,1428023817,302485177,410952950,1760995833,1021817212,930285062,1473043823,1015364021,142455885,2005911494,361653806,1411034245,1201926682,1473385054,1600708642,971380057,27933469,1273475517,1331848190,789466545,560791401,1832967531,286135118,882744842,614490364,489273892,1451034343,1447095017,735990935,1073383955,1318873438,1492485939,1114727996,376923297,895114032,1883499705,550457747,416338771,1319830495,54913826,1668931702,1083113531,1726581286,1730726262,1693820378,581616921,1611557944,1328883585,83937733,1981011702,1389518136,1886150248,1661081630,855313627,914318550,1888455755,425412871,97082720,1235507364,1678569378,1963960639,1498852592,697183992,639603794,584331293,710249963,1024552328,404264022,539332104,1999365697,1526613872,1603741936,1883802437,1705208532,603818081,816247436,1815219767,1244885960,618997671,986722155,1764118140,1509449484,468916843,405002556,1910563749,71523559,1450979803,273774427,513203759,2061341602,1375537318,1750864548,20377959,721548391,435588391,1412823392,2079102970,2010993691,1014663637,501420032,568231201,1024528377,1953065560,1178589285,1746201204,882953278,110349762,2122577747,1763089036,1511471551,2087294354,1584867011,1303629098,664582933,1723484254,551448137,892965690,1179980169,748850218,1138146980,900868325,286225258,296535594,1527880778,1667864148,487190237,631435890,750295333,1892024385,1240799193,651258972,882325086,231621338,1871729495,704583039,29015368,467370170,46815551,778365045,1706600688,920551669,1487855979,347093872,22016903,1256828211,1155957757,751297528,355436546,1834343933,1568515328,1047049494,47914507,1014335903,1876281979,615637944,1165175977,281002639,1537281644,490511224,613348035,612461562,799097456,2003603143,1195003592,2123166096,63472757,306206380,1528888809,2120008844,825103520,1279859349,1807278064,1905317739,1782300617,41722377,1277463269,493407389,301398899,238421509,1704325549,496301941,105657761,1365858079,343061591,58142440,1850400078,1447230057,235502559,2120631828,875667311,511737222,2093832,1843397937,580475451,6896913,493903441,750666116,637387997,786130894,401813118,1183953835,1995373611,1988927222,1093006767,946060683,1495204867,913553428,802660312,1384389760,1277769770,770384895,446854654,1596706566,31111138,2096620263,103945841,1431148185,1766391461,2002455670,1887592985,1917498351,900257080,177691374,1865279705,585394264,558886205,572770778,20392386,63891284,1396994984,1243195804,1904194659,1367955039,175037980,1824708615,1169155004,1667163258,641998805,1730768614,1828766392,1146997394,1055886870,1252235509,1534650399,883471752,726269400,963577110,1353544252,1857562887,441148319,1956318656,103864175,983832775,1034575166,179861978,1179609532,252017280,1497063293,1331691532,515171346,1792903097,1098450356,872096194,1061122002,1191293832,1276374235,2078340474,1345090779,722547774,248320297,118517863,841668446,1067044261,845050931,402450065,1358693663,461384568,966507301,1346712523,261094894,1470101672,1795849222,1632489303,1489680411,665880664,764201704,368218221,212970191,856097452,1131980695,1109832822,1507751128,1822147317,647759480,594110323,1521198353,50168212,1804845344,1672402772,644126604,1488077100,493375865,733626605,250233800,1918836603,1535942638,925438006,1947301306,1653892395,1628200879,1717952462,292200459,1791394715,435738551,231241355,1134698602,181547419,221743660,1388773756,2116604205,1586421805,1572128318,2124585787,658747262,1496551969,2010237062,743986516,1938600837,145034305,1317617085,1053706409,320888507,558217967,1095758272,465265958,196728624,1491796491,1340986633,900834002,75858143,994893742,1038403099,76785446,1501570517,276137246,618579744,372436861,1628319570,1150365157,1137441296,1305921018,1149503691,1660501070,202951343,1794155240,807776092,1585145846,1018934957,1285870320,265010528,189129536,1483571939,1280376479,1540000954,551156985,1316883610,2105854766,1608713790,124194286,202194570,1945297525,775271198,599379983,2098668573,764507379,1871774474,506436698,1830759852,900667409,634341028,459513494,1321858878,2023243848,782842518,2059514161,189568435,929514443,811418247,1213228757,36759780,1673658208,1157980060,1855913900,594021742,505439730,448688564,995507438,857902603,498044658,1820591373,784350952,1097431690,2118047273,592660128,1854535384,565321610,1465482808,742294258,1271314707,761234961,1039341162,1519665067,42641860,390969655,1581150931,1820421250,1529694297,1605140848,1122975023,427145912,583703823,839801471,607715980,64961975,538009165,2120585591,1253640509,2102016531,219347295,1852950329,509541262,1883264635,1047194419,1691060037,2118711555,714889779,1504527807,839723367,1928438570,629488180,1378636278,251150011,185223565,1843221273,246478256,1964777632,642390805,68034499,1711553569,349368378,1859160574,1241256348,840236134,1226241587,2058598942,2125894060,1912146739,1983662325,901179695,1323091469,59432503,958846166,502518461,1785496111,1610300979,2055234455,911941243,232694686,1644622679,897659650,1668573543,995054791,815804720,997321904,903645203,1771267523,1446727376,1780471193,1860461540,337089916,1927804828,964968871,360995584,1645076554,935344418,627099239,1408070527,992774997,1866774837,1089257351,114910390,675527918,1776084514,1564019846,1609992195,282575217,297090642,609140096,1528208219,341141946,1516118015,1483092932,1766641603,986287223,607013624,1823703369,218410618,411974482,1785876701,1642866150,1194958473,887466564,1392759257,435030737,2019887477,1629419318,1097418884,1820964972,1068721780,1928976112,502119437,875311133,1010225421,1276183025,1727588688,549088422,1334425632,926716110,1441305701,851074803,1458632127,1954860554,616661257,10616776,1754393385,279569361,2094043471,1611494351,1007106239,538779508,1302758202,1926082835,47614230,1723942010,1150192648,871263026,55192750,2898011,2031599004,1203208499,287875726,428302888,1469231116,2077227910,1981217826,528920879,277947745,830432638,2030756215,1838226453,1950143262,1428958409,670515347,697685287,1787236594,1003099647,738852759,1128102673,1878331496,1966474593,1399084724,771280248,829293891,1301517278,1081229764,291337238,480211654,1525369030,1570163121,670972198,1589106352,1742832209,1347278194,1095033057,199962974,1716742954,187757680,1181900462,1452214449,1973261867,458175355,1118536766,939985036,848011237,1839280490,1481386148,874519697,1205031388,1854564577,424243292,2087571498,1185712171,1526627412,954846898,412883838,1097949443,175915763,364983782,723465043,2116020073,1330392300,1642647871,747616175,1299501696,260434651,1908808850,1271962028,2001220706,874521974,1461249889,496129575,849309677,1883641702,1182558860,1941977528,1469370010,1472916520,1583307667,1643141071,3829885,1803682253,1354003005,1253062707,421891868,81747802,1920595927,1199863757,141085967,1919227920,1059325135,215285137,1280486324,1849280708,426868879,1607906314,951577633,602890734,258234385,1538263806,1851344474,964041332,1596583863,1113958520,553263273,2060367617,883307936,1842470662,393648234,2032044518,536481645,170079462,1478399145,5163887,214651237,2004559216,819298585,723556061,1256845012,782735708,639634747,558031415,854290431,1169480603,1223772643,669365542,1855368243,2040047628,246901312,503566413,960503528,1627156967,964756103,1290696614,1984411026,1513087738,1658854092,220410996,1466960773,1429043961,217055918,1474190273,658858779,1316518567,1506900847,514367742,1833575012,338877464,216244847,1907402554,63480612,1480415557,477152568,1451780593,1005165142,388600775,497341130,1809645073,1118322507,1507093735,631818824,1049578971,1481040473,797581008,594319779,1809889355,876212804,1592149447,79171860,1989722962,1350555731,2008796436,1485089464,2078681442,214341165,1309907978,345898699,688876913,28955732,1621343794,1994352244,387753323,323584143,1417454550,3293227,646416225,3142033,132417935,1073126323,1538158288,2129987977,1448803605,759512560,794744047,1601141241,715066006,178491224,1833136628,1816607267,325563210,500128453,1108127355,166967504,1611962765,94437106,356466929,518957105,2030808145,1728064028,457988737,1567909530,1292264552,118392396,1873278010,1330688350,1721123980,745544704,837672038,1801352456,851694630,1986585412,680911520,834983257,345791051,2000282738,1257656588,1889743694,1265164061,732049582,1677061050,1418702829,560390606,1768189769,78880403,450448316,198262676,411765659,1398320309,1876668170,1205431855,1477298299,279264107,894848519,1037305798,159377289,1958960069,1254204516,1640200215,536396553,1036096961,1299398242,19805648,375302895,1674756667,717079535,451115521,857148585,1900152184,587242671,1241297596,96481400,1709502939,890457152,730499626,837216503,1809431857,1841352451,1895215678,1307965949,1460773874,712296397,1320165562,258135948,680818365,1343488709,1894239225,986326643,355694107,665523081,655380874,1040198341,837992694,1411771392,349238617,1471190757,1150247258,781378624,564450460,115128619,1913283274,583202943,595330331,1820940599,343392095,1897711823,2010522460,396772601,640419426,74046323,1965070223,486804053,1941621579,172497154,420995323,1745877264,561740810,993499403,363807356,115404658,1409687959,179697319,1551103455,1285981135,1609679011,1825414093,1987402366,867172522,742433623,196090427,1828342024,514193588,1277942369,1998994752,1816208270,1988310316,1747155962,89837212,1331491453,895134788,1418148468,556069037,2013410704,1295508319,1581334120,1907350059,662044676,2019363742,740563503,1183614901,354096735,2114334315,39637733,1657577789,1521093259,1772480427,158577115,1227328888,265039278,1639446882,669539802,1646451982,62463362,1683846735,1585775477,1049489319,1827060135,462808454,1257633695,1962710835,505508379,1825267603,220591360,958445953,1811469643,1275553492,1230496499,1361726528,1203276831,1257088242,1669934393,829476442,885276587,1825559545,1540494343,1509139342,215819123,1068434817,1652956554,638343009,984122750,484084043,728354682,714447969,159355915,1647565533,394806367,995963815,776794334,642263384,2091937613,443706255,2049001376,2038702867,205173655,1238978196,509957882,830457211,1959745564,838067665,2007101740,263695148,270658275,775397670,578506286,1000769022,1556497850,402115474,1187437412,982085383,1054075118,1276433439,669481121,198479331,665907218,1824266665,725479274,37450022,1105006766,750218681,972577035,215011208,479106549,646142015,1653487588,534498574,913170843,539059981,1992383929,811981854,224716186,1685930781,1628211432,1265971700,813697519,703881863,1175416339,1956241088,1779345702,1789174899,2050023357,1078060342,1688017142,508157741,505145935,1542790269,1441986858,1861390293,1527929015,199250722,242145569,235282040,7000781,610283639,1795319545,1408931077,1582334109,632121531,716788374,1192488732,944682391,1549611399,1989159790,1932738865,1512754824,1566801011,871258606,1064657884,2073743821,1081625632,1040276677,613197655,2046325336,1540215591,1293039924,1841676833,705640455,117154035,33646008,526781959,707610550,816013928,1807875409,1548039587,2089691864,1856879357,737059320,2076714135,1570556766,544192592,335077638,268567987,1124976727,962388997,2071815025,858823554,394927111,377083094,1948738457,118486179,534549907,99824586,1913617211,2094661849,845769885,247260440,1820677944,332313929,2046812962,1220934082,259835517,441071407,2092778234,86127314,1504461710,170657932,2035424411,935707030,1662869286,1307177069,1285009368,93206578,1791243214,765159884,1932919945,1085633158,773064063,1327237649,1754898468,280447365,2058144741,1045805022,499408422,1440285627,1045967276,428509255,157441124,1097794808,780712750,965291994,2086276872,842381218,1517472328,212214807,2037535222,399391267,681132501,684623597,1754246867,2032732454,1232952869,611745622,1946969724,205269837,863716791,2015323725,1766409818,1518690063,902042444,797350636,1495715718,181231814,2120978668,638145690,248286416,772744086,482641568,433467059,798071788,2024760065,1545655202,236827812,1789514403,540105162,375641129,531255444,1312165465,1894109193,564144469,556152316,1454145104,220647707,1800130898,1682513043,1439296689,131942719,177080899,36397201,1688838585,1116361181,104157872,1234842221,79995636,1601153691,1898135127,1570727062,1845181447,218114431,1346942793,462734054,1731217209,27255334,169033885,1251663894,1984501578,1867342077,1173297279,86288074,1084744956,508682679,719593682,2007715171,1289917905,1783213029,572794584,1391544569,2102844169,1104759087,166983367,1408224859,1912414634,1421145651,154513097,843429093,745030036,148134330,2071108439,405120012,2104976148,1353727508,11087779,1911031908,2043384434,1896545938,358257044,10100629,562734452,2013603238,1613368235,2027254499,1386371221,373546294,2094840599,720690609,654683883,1659699624,1840919915,1800310547,699772837,658550545,44928164,1038118372,1796986306,1023941310,210120309,127202729,770662644,1373582719,1026307513,2077608626,1342937289,479200063,39586112,24067320,1232279740,2083528232,1132445550,2063902855,1220769800,679655467,2038615320,999988814,15282918,1200379449,1033657617,1040862524,383486079,407016202,1971175986,545156241,1552685178,37558945,532485190,791085053,86232132,66596026,1114582194,844801626,1325953293,1781717332,2075404070,1815573268,1789309415,1906097317,1974654428,675118545,85302976,1845826270,1416891910,522077847,308706605,689962033,2096259172,1544975448,389966424,323999549,251449319,651864342,1787782193,1360431156,923179200,1505591954,2025592575,1820796691,2117383617,902142863,923295696,309862282,1408782430,1107528108,227818695,1831860653,1993402509,298451569,1971212736,547585109,137743812,2058951871,1035195377,1520211102,1997561371,1864696731,2079452494,406254811,707320283,726764747,1545669955,925060959,1085567507,1756392060,2056500834,568645094,424584112,2060651295,700391135,683655110,281403264,43299643,708242574,742913764,1226051399,666229721,830297451,171651563,711070080,1719597820,2093022257,737948796,1478580376,1229329155,2029748470,423902415,153786616,9546949,951138461,674818292,1691195018,1979374037,2065161938,1848950531,150402826,755246449,206265854,22024507,1334964912,161287753,1721529762,1257488340,67285684,2004324690,2017851438,87272744,2078554083,1342719758,1038359001,1364268007,711938070,492607841,1548078817,605935936,988133730,1902664070,1687168033,962432224,556378307,1769962089,1957898219,1624834054,588787563,933709994,1228134861,1156217018,257747639,1282810077,1637329563,2058790201,851171228,802502658,1949984102,186126353,1800974923,352437724,802222871,2038294742,957145726,740416140,857283200,1844463654,417094275,1457183830,1489223079,1143597202,270992682,470206971,503709433,2097508885,1890883990,1271863003,1636428710,1571445515,743845405,1386476713,640676506,1525368993,1272837656,825410039,2032464159,1052517451,815224211,1440861587,802466359,1347532264,45014355,373285508,1086322745,610635662,691484705,167239097,907500589,223764030,855855186,281261187,1864754715,995555152,1980958093,1325185039,1759650464,369420945,1277440116,397919226,480486929,21522953,1088824638,1722966099,1068977293,1089469496,965226625,1058403609,334617354,1368157006,1350139306,151276704,924086272,453261281,760038219,763184661,1528700009,872007164,1759506205,1317858311,1246705687,354989192,1596554070,1205850890,729169033,996000464,1628765384,422095956,1446190131,913819234,479805461,1885770969,37544362,1247154830,1764313828,866730713,1917334986,358704502,1512137997,434973077,397366381,163047344,1593184110,376916155,617263269,2082398292,596892905,2005251690,1526049503,1386042847,1657012010,1490223491,1878842564,1820920199,480918519,1370081484,877042667,1259989598,1003358575,133440453,2017920802,653180761,97604048,1403838911,1165662141,1098803820,667959521,624339079,263072237,420901321,1342974102,1268561175,1747995288,364017307,607183987,1085601733,314183991,1156626630,1196681385,1037526469,1765686910,1038637647,743675634,1723417379,190828075,1756886458,1041834808,896631472,1787154353,58258559,425323972,1389329002,2059969699,1874784917,193313017,1940865205,1731186758,778084456,1413987497,94106862,173087239,1533553609,1256893081,1499509668,291537244,902465029,1865138893,2067327103,715238461,395699621,1506360291,929396785,1217977810,1460568937,1423328117,814848558,1154917798,1527438424,710260648,1925699436,926769744,2084765661,142807428,1427402024,830240007,971793426,2063756368,800735101,1738565699,854264200,1535806502,847973936,691585046,646306482,216720734,1947110185,1637829543,1641562994,569004016,202892803,1694377953,4878654,1171807827,1440638224,1553512438,286908605,970191051,1081428625,405294109,135333252,1893961804,647434088,519896996,1558174433,688184939,213053183,1989799734,1218053722,1581255249,2114169907,1109936940,1806439339,769471915,683354137,747321792,22034307,1384779346,741778698,1545392129,922586297,1067855739,1247549276,1255068336,435915939,685323557,1712756667,2031690408,1605218719,1586227409,1983040909,315938814,1273634212,1223210188,1571144399,798809929,1142505219,1671925327,1397629182,1676514273,1907584475,290241203,1635011191,1965207834,2005529953,1418805443,1702889600,1164112360,2018697842,919869956,923076719,469635632,2055121330,1574170457,474970664,2086063676,477622057,2048756928,1662539189,1255875815,959313947,1190536096,896148049,1381872371,1539407904,190367632,2124466915,64306537,1374714519,16118018,1964837239,521194598,1544307668,2117003352,107188150,1357006494,798706403,132444505,1046722196,527382080,641564457,1558784501,122749794,1721694027,1699568129,1590437403,1846050030,1317497534,305182890,1114521202,1322149358,1419447627,1359466819,801367890,1257753636,1800543571,808255626,1719076822,126507999,133202119,760146055,1356076824,686521235,1298717378,680776127,760863625,224131223,554792799,364999184,1319682629,117596059,1327025516,1569481516,136688501,632632210,1025218711,1713378841,330478875,626421668,1496500743,1519857732,1188399927,1633264590,1600304365,1172270974,2003275423,476113669,21449641,2062442220,872151906,459104715,832790925,1206160194,975557994,2091383050,1557626609,757576630,1434478666,1695659721,313676925,14512158,254346163,1485380032,1198162904,1406973698,7926101,1522122280,1377154259,1049769235,2113676646,1089760729,1904760589,228892987,688729813,378368879,1727405188,1661523517,47014918,1244817951,1829906176,1877896899,1516978590,1047979091,1288907329,1291506349,1026081452,1667731438,879830593,1340340173,1347013832,234332639,1906643916,1256496533,1706974049,1143866941,980010691,1235345373,1750252515,1260928380,720140496,1118417958,1213706555,1201338581,2085806108,155045544,757261342,1568576586,507714263,1986983091,25097507,920474233,775696566,1777625626,419480050,552037168,2099093303,1125497729,1174077106,1959585664,223619551,592823931,1866659560,519686324,540331592,1883776025,1325106410,258859199,978463260,1633110679,1805333280,1392869837,1976168506,501617434,894919854,1425548625,687302990,211397972,563535275,1277605414,988375330,663302813,938322040,951049128,2125994666,86282674,759517891,2046275884,924393591,1558983251,743028587,1368364259,1781088023,1033648809,1318270680,289909147,2039354006,959150304,1197295375,666630237,1806691927,1982032316,1935856048,382108627,275157774,1693498848,1418605380,1806694910,387113880,372248558,1694226957,1896511747,1222324912,1378861502,1385212469,621192136,1006486463,1299876371,842926241,46364567,1557931910,199843794,1501571188,332589661,1427301093,332217751,433116315,204010910,648722812,884993494,912952951,794060868,1974183023,1042141813,719733784,1006868023,1720610173,401904919,1301796946,2127649835,2009278470,1201811139,650760834,1243988707,957611925,884147881,1166347359,1786604313,1847533559,578844615,161975517,100093452,740412417,1999610145,652553863,436243671,156303286,2013979715,711925469,1472123456,1931690162,1488778111,1325733190,1097181277,2109743459,168109381,819930382,119629314,100149015,1403263621,24567222,1415315996,1018970513,1474276946,1563152465,1927716866,1840809770,914809863,1987202467,520333851,1151421820,963006425,1615719353,1168699440,1658187963,469936859,46369987,440335764,488625814,1538631716,532156258,716444574,756289845,283507982,882988275,634196660,1256272736,277440335,180784320,1407493417,2029929730,2089474216,36998801,1860055602,849029922,84101098,962871221,582866195,932811698,1349001841,1580707264,745057794,2098554598,505257728,49456460,1882358007,1853142576,1714929202,745859225,1195423056,883327593,1736033202,1688190126,1723437166,1803287773,614457213,1715428923,1305647719,1160849250,37079178,1466990070,234857059,571379830,942908977,4882262,1271960701,1781522084,1331872609,1679804886,2046537584,447660930,268606678,161242395,1863694617,370138103,928416230,1744960782,667698895,1380592981,706942431,1078177121,1148224294,1522526607,653683268,1868907952,723075806,1711496546,922744655,1120928475,265307006,1448310163,302720681,1738241572,1110837581,1275905974,1452240706,793508347,838229328,1170230964,1213083819,1662083831,731451978,1592213178,1937733877,903770129,1759942242,1199498889,274154740,798102290,1279845108,1873270199,18548482,2068822819,1636901047,1279378858,1327338281,1622427114,767434806,1572201469,1073521559,27694156,584740155,524575298,1760644658,1068373277,1907309435,726960038,795526993,730550565,1672966101,78869989,393126985,1822615364,882202529,493485356,1663286814,1858087176,1893376774,688899585,924180308,143787676,1593199436,24618422,1018435820,1326941369,39118562,104459279,72144705,526775841,1642954853,263214513,1902272767,574980771,1179338982,897831364,764346365,813938108,437484179,364939289,732523671,1193690851,474225460,890917098,1824539714,1958377794,1649614539,1291191434,2098571453,54121863,701662560,1809977733,428075122,1243757384,917090202,1541506905,1943489997,1176910939,1273831510,401947790,35917473,887558367,299574238,1390040528,877907460,1424210030,1515119452,131223343,1882884132,1811487205,854561465,1359637021,1195106015,1559735163,407875696,2073346328,47787679,374923905,344604569,711584056,169094485,1512360228,331546943,768139701,249014527,657466578,366111304,976040485,1665365536,1538255612,804029207,755107240,1256652643,1277014201,1023247528,1641049623,1014406808,1671950903,832327065,1767607935,1826924144,136785551,970717350,1989866913,459093985,1206391152,56830289,645226938,1902353442,288769277,882735784,564214995,76856608,1565499983,1497817726,1717108971,1310748403,1909801413,1968454199,73810105,1322172433,1066974946,1802927644,675948210,1217813325,580957982,1031419859,667190226,1919454921,1640135837,2017218279,63347898,1996347622,1971557535,2005079948,1950294533,542843609,220043815,1703338218,1084331422,1134180826,2018778930,1459936996,722778183,112875362,1972463162,1842061457,762865015,1660573904,1775279832,589641584,1453636141,255576802,71252158,186973197,2059368235,49748069,194570209,392896905,667549209,1454754212,412218752,1320578141,1549153363,749156332,139173806,2054479811,975096430,1906282381,607326179,960924765,2068329338,440214002,1845898337,1227540188,109822341,858903754,197993039,2070152151,1908916234,494752715,674415240,1764977686,705778120,898012449,220307880,134143000,1179138095,823977002,462464129,900642515,708605577,1526980387,1660443685,1252768633,429000392,985803371,1626627521,246420340,758302908,923033240,1295317529,1413598066,775048526,934705780,479727794,1484790157,849011736,1050398410,1869402003,792028935,1958725140,827733448,1010177485,1782885310,941817902,1040648999,263662668,2002533797,284089344,174548893,1225427140,1522158066,678796294,212307580,1473499604,226270376,2088755669,1023921616,1659991835,1984503240,94141483,2115131113,1265528992,274710958,1477378609,8641733,203799950,1313147433,1042255612,1016838158,1698577418,915725312,838758955,2084609066,1832276932,492153974,1224439420,1521858361,1384271988,764092926,345772482,1851184069,323617649,698394073,1403512862,1195717511,1113785745,1451617320,234709048,934850554,916941082,952186225,1758317871,1913452459,1866236068,1314388099,194908118,1311326065,1719281791,1189409689,664335879,1217958305,1351740092,1046026920,43019943,1190330970,511494076,55048152,1752641068,1600686903,84824105,1342426143,1612732261,690500633,102835808,167570624,1967328472,1279714773,299580611,1007032591,441106144,604023006,31726410,498025778,156952185,1344631379,486857922,1900001897,214544388,742801991,2050895715,1721052458,805025083,1886933644,811013089,1982510002,640578464,1989588882,1125591547,1455619347,1820033861,2055000435,276805699,1113132524,1344063879,666980515,1605177656,2013729250,897114099,15509239,2079592675,968985137,101922518,379248385,1114526960,1199984994,867081469,2129997298,1970259315,1212986449,1243617168,884260236,318554390,1270726320,1237906084,1927931556,213666707,1711064245,828355042,1559635831,621430608,258038377,1199379987,1176914930,1826313542,1015377498,431243062,1117932399,1030085720,615817365,1240703290,1459727522,1722003649,107133719,668261353,324946577,1801810904,589898,418707684,1134388659,1400980383,1697176197,12551950,1989460139,99625480,342064450,391636159,923810165,1459451036,1921253579,255467085,53045369,1874415507,29908439,851659151,302511315,1403595324,701383770,260159394,19773541,898602404,1679724673,1540351085,282541975,686811261,1783110343,221420738,1500840039,960190341,92769277,1047365309,1247746154,912365401,94945104,1520310991,249333263,475146266,800440982,850863586,1115392972,463226990,1162700197,352551786,727988191,1270205399,561140270,1861103187,914686569,1416361276,719441860,592679611,1478340163,1739990781,1780237057,1976727041,1783115791,40772150,1355368933,1366132953,2073120019,523825723,2023485585,761619331,1526866362,1301558811,227866902,2045795374,2054969149,1302403866,1525646381,1414223955,540912882,371604085,889968408,1673500764,539598811,721832359,235859897,1724486696,1317679637,924752239,64915433,284639489,676307584,499439026,886225796,1157774379,1548354639,121274203,1433665694,1601279325,1969154517,802629147,112955183,2105609525,37539362,2032834029,1622841359,1811496929,1381693604,774110537,1958731338,1910197392,984261173,244870868,120934044,626069513,1171176557,1964412266,752194746,2023878293,1398109158,453726459,1368939629,577563345,1544368788,1269361119,1136196509,1694866383,1368040073,1415270022,918419229,1019696882,379131315,1651386814,584126972,11786493,956121869,492431831,1054251966,1216458315,1768744480,1085030680,1717197241,823819290,1774778211,723396547,2106613792,1713258207,331085900,2079356207,159871786,2075415783,1439849928,1913826811,1456092641,198042043,1050822382,307190785,1153102332,727515327,1290426202,1754477935,1080666915,1261783536,1237221050,1178103168,417091700,1954017582,577588570,281212322,1801711634,1739108912,925042353,1987841242,1970532744,1600866839,1437354014,138809637,1213522685,988786211,574277848,1022291089,1820271506,683938995,79402026,1935988934,1306913379,2058532992,1982948439,2034474564,1374667758,384002428,829461468,497879895,402120632,1421385736,957203495,73125691,750767462,52113994,1705187383,1682973480,762630679,1377269773,309045014,1271846252,1926715233,1508405405,440774221,1003217984,564026379,246340045,1702336790,285864310,1672019295,962737943,989942169,741270498,868762981,1999818293,1389374425,993647947,157942784,179847534,299167649,1637841079,19070661,927189457,899133829,1504231859,369454286,269693981,995369603,532824288,1091848629,877285394,2089780130,1055663352,1515864350,1564313460,1004919505,1635876308,1914271061,1435532331,1976013587,1957981973,1020791844,34855490,62952517,1750104173,1614749946,568810719,2073738834,659355735,520619664,205253269,1853183787,434330477,1860997663,1998516390,209401578,1026740337,1343018460,295215773,1939739035,1555669503,286083909,1642372984,1488930607,613602012,197840181,263669526,1146628208,808489507,1684402342,2119131446,117380918,794795304,1371536458,1427344217,416311850,1631968871,98265042,205763048,2068971061,2025094774,275348280,1107603469,579811166,21417604,792341732,1387345644,1933604839,79895966,38927519,1790582995,988739863,1678273109,1220219386,1543497737,705789452,1076535380,1008736801,1755516369,1655373255,2021493199,1538084404,9485957,797584420,361990083,198496421,1515515586,1970775956,1616796643,212313167,1304911828,419775574,803437855,896645353,678995416,520867764,1131705286,190011015,1866090569,1705169167,1618011897,1200793464,1750440554,840573393,1592398526,1605100459,6639621,1755839712,496887726,596805347,1452322575,583990466,989867725,171295467,2075770837,1805291851,1187415399,407494335,26145451,1822512156,373417924,851041846,722354638,696287205,802557157,182362608,959341795,851313885,836527812,469294520,1798486350,873920253,735373778,1404898119,683712980,306270387,932639975,767111060,1966823899,1347111980,392193238,309862133,760143643,1313546840,1499600714,181484070,1497727683,1776972138,1188068165,838661846,433407001,1608025382,767129481,264247100,871952595,2116595230,498861988,1579467270,1441591687,1188662294,484555412,50374157,1572803479,313812796,430244397,660331298,1311818847,795546539,1782326110,584174850,1730271019,283282239,1113648514,1546702071,1046992461,37137497,1153051926,652249859,119307699,775548185,1162918556,234023237,1323431965,321370249,604072922,1013222269,1943427280,908301233,1061814708,615970690,1518244966,1865343774,966209795,1147349518,1304671310,1686646773,1494433807,799478724,1396115252,2088917010,1079329985,1263052584,1177811682,1178203623,759292837,248547253,1547068645,452222998,1860136065,1040254722,1979556701,1315305261,9898566,408076542,1360950352,579591086,1415692522,926565314,2096691267,873572233,874093357,1397286186,1828494885,1079754593,905711676,792701142,1067642407,293063943,1389623926,632841813,31420107,1993350022,84565798,19607160,247261538,1373529128,926292486,609426329,559737577,179180344,1357319421,990812454,347159962,1644742478,2038989875,1558940971,1932877679,1531857734,190754370,165128281,545026750,473448229,1024625519,729427742,223079454,355359665,212372972,765468470,507932908,1529044183,1512467136,99298071,1155897079,641580017,53050794,803781028,779408228,209287541,579314382,360388062,1897504354,1745981083,845930700,1732393513,365711412,1821102776,1193648666,578429378,999745416,151475624,1698070524,2014456589,2111681675,1404181833,155810972,363046306,943229713,215614327,536495809,275797856,1472680436,1275587333,1935939480,658664642,1294955498,13757100,392219826,1206180523,1303785262,1146298246,374559668,692755491,1473897752,1183074944,1183285573,1620449261,1924058988,775265159,2067191429,1619107126,392680552,62146583,282984182,536611781,1683993531,35274300,1077407161,914200598,70623275,57498679,1754298964,852451617,175607006,565806643,1153208441,569761380,1196576429,1565173270,1915034296,1819736665,1843765538,633700342,1974932575,88596256,1516339645,1527570699,1974868250,1134349029,1548580133,708697742,389353082,1260767756,1062237083,291380319,521196479,239750050,1058587035,1216450048,1987480305,1193907163,1294870471,1926803748,916261432,1893691462,1725702779,1442271450,1680023969,1561425366,230212211,1900514640,1260869870,794488943,148338071,94064412,1051471283,1333955934,215949750,1145416605,664847822,440856415,1991897210,81995445,2069343642,443880807,924122742,1713669882,2084076615,1013183776,1476340823,858858746,624410372,367130360,105513195,1374614339,1531125132,835660433,1521542261,1569036713,595816035,656899419,1811607807,1878717408,356882972,297589534,481585622,244053403,1301037350,254939158,489893787,749166704,1588040492,1716808182,850038351,1734763929,1372850673,1102169093,94990666,450476937,1809000210,594150360,908702649,2010973111,1960128019,1898029057,566318199,923389273,380850232,1201784579,1029500292,418786035,1442318007,238950812,1663083389,711845953,1805457504,798850906,903785176,1636556737,1786773967,1230945047,1001647907,481021760,469882054,1124793288,1770035905,1733091868,1865404353,1526530493,1566394796,1069527322,2073924531,369401109,440330828,2043357693,1013743778,236068391,556493513,1172448435,1506725471,2057276174,1644082708,1904571752,1043577427,1143432013,447679073,963374400,1760012439,1492393819,43761222,363812552,2018989179,227459525,320187139,1631007953,676470824,52908674,819436735,1936852825,884437419,282752981,1244158777,205280145,1256373852,1693546119,1238018656,988402798,168435969,1654984795,1915062448,1119231232,707700233,2039915805,1145311391,1389584214,1436382336,753679456,588033035,312877951,29622433,129322524,542972557,1314181660,1618980291,1357782286,316882877,1476968347,1140580409,1756228631,1886869528,514340676,1744782997,981017892,1063713402,1701025567,1683728430,2010978898,120131610,2130084973,453788630,175593592,1817037854,1401340184,1493899744,1913678080,487381411,505866440,1788470161,825410025,1876714342,353951539,34427165,922630933,2113018860,1522630768,659129272,713828258,82166851,1913679807,1537265762,970241468,1565327421,867412254,27409442,770026703,754407723,793855442,137185093,250719328,1004361847,1025402963,344941191,865422158,638536858,967354214,1354754376,1575012453,1661334046,942762425,885579220,763967729,78461509,1003147945,1873415511,465312153,1841204839,1531738536,1272393659,973491744,1274556782,2004992826,2069458806,1469235602,392266271,175138940,624292798,2067924173,710017110,578123396,21540956,1763112100,1832101719,94779687,1765682967,2042523866,782568685,1902491987,1222870626,1693151355,705988127,694263044,1944206148,366302215,1815413925,1518878133,2001321677,375409146,935395294,86386188,73350703,2109814594,293674203,1529719683,331639822,206923201,1970381885,142749060,1643281662,1444098933,407237262,1319066055,1657141844,1680390547,1826795700,1317931158,1190779193,1834039298,1452886334,919232061,440249962,573669333,838022907,52910151,2056938622,2004080721,1978227733,1116506986,1411411894,1778238788,1457389892,1141352138,1044159019,1978952590,1282000179,1692663396,1425326583,1481910467,811218878,1110763838,1988628105,424854471,479036718,888381033,1643764252,1621809802,272560504,745246766,108631346,849243325,832525759,1902936440,1823981326,1360189141,88564802,1175858894,682344629,323242664,1751029291,87167155,115183206,1234710849,2014283977,2066144677,1137666798,76831685,1418779994,1837542438,1173924877,964951158,2053947309,1837155810,1122634480,945649103,1174183032,16866102,949712494,87965045,85700806,983119471,1692419611,105991666,1378247972,1480200926,1972893425,2001403944,957799348,1854522212,1961293838,1863059373,1781019732,3612425,500468613,764333456,1028318416,1257297399,327806083,1525761605,105778875,760558909,610539482,1318873590,894932220,811410544,1232149333,638963505,391256722,789356461,626540349,167206387,714336715,641325542,999457943,291284433,1886944918,1816361468,2027047864,881153234,1841879234,214029545,1998450634,1605058134,633316066,1209070283,697753720,2084195096,1216334896,315278631,852536309,653091941,1395239493,1106765426,440011347,290562916,352841548,1191404308,1810126665,1091003592,444470832,728992123,1824128593,1778708518,1405842162,1878714199,515865276,1327760125,686333838,852913841,1794844274,381669032,1080763386,157382294,651920746,506022271,1614961068,1756549877,1843407918,1814980248,953563235,223510756,1806800775,184821375,1866729199,1936995800,184343610,1814919302,1905304100,852995999,796622159,376919172,543487444,83124448,1442922464,1557523752,1786569834,101469609,149596578,72350212,1847046105,1065459660,1291295390,6437501,1325981871,574434343,956288944,321536699,2108873859,1292659243,262100304,2101228312,1280109700,1451012894,268101286,1511361054,1480526572,77909567,296372708,930627091,1038134722,80498317,1808100547,60012483,784145370,138722678,1072206441,1051815064,655280408,861871197,102025114,2020732407,1310235874,1996792081,120473454,1448259484,371328469,1331804986,2016946593,909862040,1336089836,1951254367,527108927,1763289733,948060285,340965959,1865968778,590133210,1758347866,2109266898,1458034646,512534448,1056944043,1943047226,571684663,793785240,1528460872,1751173601,110607301,1062532506,352876084,529661666,1712177044,810116190,286958435,998409394,414264935,829158152,6097241,997089568,1900024020,404304695,1068497726,984413548,773850771,818501579,642144733,1254458877,1535000754,2041349326,1783561494,445571929,448401959,1842166629,226017714,1449458784,142518946,1445638731,1617219922,275495127,1788816414,107116379,313190041,2049766466,889861427,2033230518,165932,927772010,466898460,1683229498,1307256486,1706143619,948403992,785613771,145572128,2087851862,1629429508,393936177,14831511,1784490420,271256933,749431733,1190436792,1870996538,893350819,123640522,757871083,1179916892,825992169,1311678881,1281240380,438052069,485127455,1176489750,1662555297,1614250988,827001098,902343638,611787031,479767872,1668152511,687115059,1188044446,323150163,1017895494,1565059189,660859979,96993969,1168018671,78304712,473054800,817654329,998420848,467432281,1172589848,1608381846,1948293809,1670593932,1019575781,1917293996,664231821,2054721982,663597584,1479436022,910551927,228664847,1174419552,46026616,922198478,905952772,2079014920,199674349,412553916,1065014894,369941271,484607696,290831144,1961541626,1231921934,233070815,1845505122,595979561,860599708,470052549,313136247,745385477,2107483799,1157533879,40772434,1994822782,1988264581,789746245,446085901,1102454476,696405258,1449511720,1625053864,254108005,1129565657,1233041060,175146766,1945963827,344689509,371616002,1378151045,342977020,2080722135,1888762909,1149289093,1937394585,524676738,1009157732,847620743,851846300,1027580263,775238029,48522351,1692984981,2097555230,290659376,1877090609,827283271,2077941114,1055775198,1187826844,1686572833,1174482929,747252934,1098468841,165420807,1949761579,1271575837,11888957,188499055,1784852763,1607455441,1915921696,1416769099,1858196756,219380071,1280218791,540887793,624874005,747972354,241230329,125949191,2109555189,1851622764,1374435114,101512164,1508351188,481630095,482308030,1954393795,221444021,300988050,219888941,2128109180,1341311524,1809696999,630997609,889827862,470496775,737790733,638168116,1795123682,1115309416,531244324,1804459545,2066910980,1273511100,766413635,1660582832,1543906617,309518799,1149334751,45561095,1829802231,1418323898,1403208390,264933394,211739331,1851799610,795123842,929716828,426459557,1151917443,1643431489,1771419353,1588638681,298330726,2022362476,1810687748,605875567,6672900,1767913446,2059966038,1255747483,1696267794,947427137,1953321840,104469886,1940528081,153772821,168314271,1411908640,1911155905,1079853544,1729424472,1564022286,705097651,13730044,1484152327,503919210,2051478134,687135571,983567096,1482785974,246700955,887544749,1459954358,1071064814,2130672925,979505781,2047143154,666474781,526980181,1592955140,1109586399,1815159663,705705511,1763368662,807897899,1103173850,1014805235,2077656850,1072551255,2121030172,1336974286,2090387242,1896225777,811996462,452673772,166154461,1684447191,1646950368,1227736587,102878288,1988736990,1136083067,1172658554,1867365368,141579094,340195682,516886419,329132242,1055700519,449363894,1945021386,1579204587,99123816,1541463465,1315370596,634917664,996432074,1517299515,878851125,1401948247,1524599341,1994286876,682235411,386126413,774623758,1069538218,2092672879,1171505867,1297754949,724699537,646415727,1533970659,1358112582,46398726,404860389,2117102403,977595197,1240800525,252661437,440026418,1046773111,368980993,247852479,975198768,1110054584,471953157,711781710,375622245,1178503162,207410525,1180623656,1812829625,76139497,1334694940,66651457,1500350095,450716395,864499546,1700957520,1047132772,2039944826,1650509835,134310757,1620595023,1729754203,2078563568,2120984628,1023211049,1621478349,976012328,1639304007,959219978,290752176,841012441,1118858569,52468891,652118851,36983294,479037064,1953410362,151299911,2086843612,564204640,1076430452,326060196,530743474,736929631,1851828088,442506840,1994621655,442050221,1889897682,2094444774,801526902,857787288,1765269714,1802894896,2001412632,1245016066,3701706,511137861,1871814292,2039440462,1992638525,1200829989,1149325629,2024765135,1935956583,1244743553,1068271125,987434197,2103796815,810870239,274443305,901444268,792158768,556611025,465271313,525910748,1184184434,1237190337,333495016,370483109,1054988644,2052961870,1286529241,901907420,1661277469,1628197690,1231597652,1603382640,731758530,1402614961,1310636189,439958387,1066144055,463133634,346270740,1241236730,1938934449,19194975,178875299,425076009,1370550467,455693852,909092150,826859004,391794441,841216851,341433514,1226232378,236807747,1506717465,2077814682,406249956,2052431329,1509590750,1106380369,2001264810,585375679,1929556915,520915004,404233556,2124809297,336569729,868034331,545728676,1502966169,186457242,1238887801,1065010193,628972611,969205250,1007599624,1936347888,1002868686,1168940769,2000560542,709501563,39550017,243207900,418391598,2059380531,830264451,1595644087,316494393,973804403,1732359336,1471992327,673524820,1213505518,1452867758,1036891417,69289262,368723905,298115084,46821211,1728223984,935035709,611279030,1621796397,2048990730,1684078779,1410902218,1766344851,1867293139,2062030314,1676111309,381996554,2076208645,180374690,740801346,666223946,1696020688,315319476,418916040,569389924,1282606621,597819680,161523601,418341074,1490841358,158993599,612744113,230514325,663373741,1949633690,456090417,2024896373,400118068,158498292,1246791910,905512151,2058269587,1427557610,1875087938,1421910521,463225733,1269382752,1689361460,142388179,1755896422,71473054,184360050,220914291,1329553284,1993284365,2017901399,1111451792,1946130863,1317850066,1818570843,1849369671,1739400036,795722863,1002707229,83017645,619254217,1901718019,1039483985,1942974757,159102028,1815559312,1405000846,1836338876,660908083,961585007,1388393280,1985985575,1718556434,1317545170,1541538904,1765971341,399123311,247265077,2074491127,1255783605,851473118,652208137,105799623,303254324,1327916858,4962244,712902247,1069884877,1366459777,258469102,2061558607,943545008,1118040969,1084951520,1357517992,1598409874,809613723,1339999556,799669271,977024520,1237406306,7651630,1249292108,1096502098,1622599247,1899554342,898172358,607142054,1035304776,451027478,1571059282,1809824514,1567513285,227061008,259944483,1260302490,767938776,1434666544,20819143,431459342,497314492,1058022688,57663043,2092934915,6647335,1332212487,1495046240,1258838910,1385843543,1031683057,2001507738,416070929,740558449,1880668306,1098847186,214591016,972571273,2075741572,1962115110,454035901,674999936,1739107561,1214962425,1477732702,418791763,2008651124,1000949514,364955085,94718477,426596477,957977929,1693923031,1485141216,996962478,758284637,260549649,1988625119,882942257,361533211,1869964511,1670726904,973962033,551523973,506539415,734871816,961615878,1152049368,281663043,1854328743,1097214863,2116469034,1698438946,1101355523,929745278,1012159480,779634775,1511724772,937775998,1923040811,2021305333,491530861,904869481,2026131563,203953411,653407763,1284553551,1899934314,104149992,1366358498,459017125,186481122,454536013,255718737,97578129,1218436391,1868962413,1899789639,559974431,788097595,1666460182,1417302322,205960250,921348786,1102257693,1204701812,1414640625,1366848053,1823131307,1825417039,1464206571,388131836,1431340109,394682573,1171806845,1298119243,1500600681,372951507,241853638,1103647880,1153590723,565252421,990856698,1508649426,1224569091,193122795,696836636,644735775,793558308,251610191,71252388,1688422612,1965589408,1932385253,458387255,586462037,1304631191,898263168,844350631,2049368268,2043274362,2024850663,1506453773,535290238,1226167804,1425918637,1248265340,1284085950,1488234488,358251202,820737456,1322772387,1101610473,1142874825,245631899,298626746,1066075692,1423067053,1680230845,1270282211,1923448483,1720910818,1484954003,661206914,408347299,263165966,1569691785,1530553808,1553364046,1766617349,1713435130,614801526,680224870,1375060898,1965768032,1692046667,1384018483,1632800586,1089883175,787345366,1846346838,617379517,84083653,139394248,1517192831,767449297,1850406279,1866979750,2075399281,369046704,1236557223,1137672617,1584435678,812035594,684714577,260794670,322313829,1608409822,1575076510,222957118,775657505,666515975,850357255,841867161,72887942,529845442,2031494593,936909999,164321315,742178716,1868392041,1427167409,919485096,1677317656,1318449858,241627143,812579751,1870349775,1536518456,813891709,1779093734,2104643770,658168444,1266850445,1018194623,1562688509,1638407968,1052950315,132981707,1212283853,1264913198,922150185,282412771,1424773006,1438441840,1189507796,1102766494,705117078,499411343,609763390,570872868,1972192724,423908939,1990395808,573459546,860723916,1436720007,1320213442,110883226,1058136688,297418392,1088113313,1453037622,257570956,1167313183,114805573,237987827,1394792725,2095539935,1241683267,318117519,674223797,184036263,614293978,495361585,577472474,117126862,967873896,1796737214,1112641305,1392218069,1834069658,97382701,1304940594,379458285,228822512,1451038232,1079985428,1860286284,873548388,1633988616,1109707039,542062490,2093648100,884930378,1735360972,1574215113,1905719193,960057275,2012186230,1362948219,975133926,2042440269,2010253309,1819612823,1117603224,2051844878,1742820307,796036640,1602059315,176918775,2115828805,1806114354,312703734,1092584564,1237422068,1941687416,1618389364,387138969,1839401078,1390060275,969191810,704305525,536243965,1853759529,1435919976,1586046629,1706096584,1529337107,1015082701,1613189730,1360377756,16824149,376593772,1619505742,734047284,1356397212,1140658017,1095647849,2064761531,800264431,1741453460,313388595,758093770,1897958964,2812607,234153355,1158158322,759148313,2040173166,569537809,294980109,672944546,251883156,961588662,1815625240,734490518,2047955022,2046467424,271858075,849238245,1852733227,1698569508,1200338604,1668158919,1872954096,1338076093,1501138214,661536394,96439794,1746693481,1554499159,282013009,286496450,1770884901,941959015,1259390503,923118780,679175234,1933447499,941525056,68231273,1745059186,1698722004,1307392376,1067430371,2039629839,957610603,1034023825,500158565,1835950480,1061580743,530838332,124845154,1072369945,1525751622,51368258,1664921944,1007108135,572189326,68427430,1283621668,642654855,354108549,1546496870,1420459399,1686700663,1263871505,27895713,171393433,1195778194,48350403,576639909,1218953437,1187044726,1110100870,310978609,2071104821,1435084460,326823076,1110955724,1351682211,749435886,1733480102,989622560,2117747401,1504123425,1796158593,435934927,351270877,1472653723,36241708,2100505979,982951029,502361399,1936061466,496321918,696365862,1988039045,2071966861,563249158,1857558270,1645020521,599164551,567980924,86873828,659158115,845014951,1210150889,48686458,359763166,392449258,460728147,1502863556,1070735403,1716345593,1145163055,1492695587,137185561,1936903687,397436358,2037195352,999586518,120750483,1010179799,1304094792,566049529,1337410030,874708682,1399442365,1890843895,697304626,418680033,671053433,538963562,197261834,1936307081,466200560,68678573,751723901,1876916252,66648881,1515895945,1382881897,679167335,1719795733,2092554387,15069017,667656924,1332629457,9413754,1826556183,1854349546,1987647077,1406029155,684803321,1251594041,1615809443,2028893930,282158992,1933869623,949987854,2035095908,1346979204,1824517159,1144433298,1473193784,682756133,783075137,1391075222,188341300,1229094784,2117072028,1619980428,1846824896,734461176,1430453214,1279822858,1253858307,2120960932,1399677705,643774261,187894657,1534160873,1686348059,1605835472,444179966,892058051,122250432,267648015,612443518,504202773,1021645630,1335412471,1863859423,1549096478,1599081200,290047613,1539819927,343913947,870438052,1890142713,1644581602,784695881,658965908,63915169,498040161,2109658376,2126351112,1350038916,1224843959,992158337,49419195,383685747,560924093,58131356,1392463351,112064339,34467338,36994510,2073131734,685894360,1556625512,1816134548,473076453,101003741,1490696417,1946335002,667481709,1484893457,225067433,608834743,860606789,1796669149,862317544,1664446909,395245847,1370479717,1918600250,2036765577,1946324615,952917633,1012498429,2052972305,1825314095,1878582808,1062343405,1391100722,2106202763,1494295710,214007777,1452506249,1101197855,331375990,1342470577,2040661435,692015923,2060062461,423209872,758256327,800687344,574273565,630083421,1737447772,1927420990,1844038990,245061097,2092359412,2043613516,375985771,1528726491,1785569748,1242703140,1912199353,60185486,282682605,1937081122,1206907175,799831764,1941674788,569588760,913835510,552113203,301418800,1017245490,535507064,748445389,1403313825,1090746566,1231761284,1923920770,771468556,104806611,639335360,1691958894,762131684,406398238,1157987541,1414178146,1010409550,615933182,617019141,557296217,183582219,2083170362,1703765752,1199547209,1817679162,1211689384,744598910,913306674,1713296006,468542577,498664032,1901155262,918843718,421570538,943488872,1863713375,996664828,2092547775,611489943,1398501931,1178995228,1872490923,304609854,185957028,264663090,1104314517,720515617,2100089763,1111617892,1576729428,1651089984,34449140,1304870323,1847649984,239517195,2117679616,745918127,1024890908,591814181,1590192123,438909429,1395318120,1337973270,1872241605,1098454039,1598839337,1069585264,1623882085,1119842143,1603079072,1725906296,2081844393,1893417945,678953135,312187498,2097642884,699858530,1385046923,1877061758,1823288225,1487362256,460101091,411223547,119004842,402756421,457227045,240427961,1352342603,1239307082,122581813,36551775,200987419,1534850215,1790839582,877370490,2119198638,764073676,688350257,1350344831,2079392490,2076284975,767299101,184627050,390065151,1788038519,284686790,1676457601,1319337569,979675582,1376771279,1082912097,1175964291,504294306,602316063,997385066,410619177,1892319005,339657208,281554573,415174579,994257735,2008439188,1237459137,1264461899,532778088,1550914217,1601828013,1632554629,2001126442,1888119646,1069941022,1864348562,719301314,646749827,55949085,1488792907,734342994,1582397074,1518326785,2021981202,652605932,827749749,656780097,1891965435,1160892382,1165763182,274715823,865367099,730160553,1136662317,662998671,218922570,682022253,1778620691,748882914,2068563945,1182715246,409868395,1706149424,485775592,1646094284,604884265,1382753767,1025896425,384671908,1218389491,52559247,2106849429,1426779995,84384161,264487158,373841452,1207143086,1089048749,1186102896,1372474052,1140709832,1435417336,1548432681,1246896834,1428757257,2118537303,572992786,1298753141,2086694853,74815860,1818047196,1990571677,1098789883,1240872514,595100129,311156735,484061240,358428587,1795393854,869466833,352802391,609090441,1122960364,659535502,92965479,1178719011,1049459072,1215993377,1189347676,1416173590,864238968,1491170041,162132130,578768751,2002766929,385858317,1506193324,1274376222,1053288034,1442499350,49101248,1649728416,1814222520,440026562,1138743666,1174674737,198292838,227118996,2042927162,165743419,1019110366,1245926897,348319212,169325350,1004398577,110264886,1415771853,1747297521,244790215,2115135307,1630544744,952656612,391303461,909974369,1592632968,1726756420,2079952147,1616604797,1547108700,1713903862,525857509,441732117,944135729,1632999498,213562907,842328255,2086515084,2038371268,1469184942,1398155765,1308064036,1197305785,1658244177,2075605289,1538466888,138555260,802012690,376545136,331106347,2084344128,2012726572,1013973868,1736161153,1520942908,685940426,1031575497,1604566219,46461167,21210183,41564034,1862666726,26838718,614128982,1057082617,1489549910,1763728868,819605193,482007641,748672693,2083135487,801906409,865385667,1756665613,1031772788,386373618,510049297,339795947,1962409618,219489644,905517148,2050317973,657074093,1919275601,481463895,752709844,1725139910,780787377,49591242,1100212527,531858470,841324881,1118888601,636634672,2055751239,642943790,1227454451,1526410476,1471449196,1067314769,146606580,2064769477,880436417,1512894395,1708948357,874570255,493844853,1164410148,870983697,1564068526,1162260220,2018399561,219335898,1086270178,1071056586,93697,773024018,540932520,908962388,845562098,1232308136,1690343292,1110664760,1158973225,1841841314,848177140,1453312030,1017162143,521163253,160186389,1881915383,625837772,1432268864,1048132852,1383981051,1320411234,428954249,977526611,716076616,837639806,1477958211,2115049403,1701381359,1717413829,386155577,2101748292,1503513165,2044329421,1345134924,1272407356,9906053,1991322845,1971209745,232735504,1332297284,32978767,1660055905,469523861,1185037540,603587206,213832204,1665789863,965542346,2041428120,1935205888,1789209656,1674091698,797293693,1418261164,1430507590,1414161862,1883278768,5932424,1225122586,1696025981,1864465677,307834726,1191976049,1198742440,819289498,611300291,1421921905,115478258,2086159417,682809588,1286673393,556328234,1381653544,1829399600,569636526,409295921,814707791,1995883102,17012413,26373588,1701823395,412207301,1015658685,853995775,811462284,1566172415,1579868967,31564330,1043069859,2014494286,2012329747,1077007265,1880199794,138871632,1350874686,133005770,100477332,1417250881,1238162485,89595620,1307316944,1824132962,74016401,1664119524,2395276,1478404287,595000413,883505274,192188985,83517677,206200895,561876425,1102336941,1641905107,385305523,205967303,1354746751,713078866,92720066,1103594730,1692783876,1611043243,1690741799,832073494,594549130,1784846057,1678283190,1938154346,227338848,1222428055,1710993301,1105570689,1373615439,811689763,1237658856,250673097,939924793,2017335132,475285279,557792761,2049206553,1188779284,501691448,1948366792,2029585541,149978488,580426640,1311898768,130930792,1562168638,1116219122,512123278,250606886,383200223,345876610,330230709,533846214,1843140439,1240578557,2127151792,1314430483,1380614560,1539419197,1686506016,945102440,1632834967,1229296666,219844661,1777720659,1594304776,790600205,1115877610,679054447,233011274,762131209,1345033309,591605848,407459084,1929996978,794217851,319650575,819128398,14353023,1467665813,1827383276,1117620685,703693313,1347693264,1965483155,2119734677,2016224491,157973834,1993622212,139048466,587442782,1941810195,700964625,1101471775,1092782464,1765586971,1549107108,1870958946,1304720781,1311605135,1729675085,871123505,1563467704,117720715,477787959,709959939,1430764150,640765124,1848160406,1948727927,1990620644,1025170021,623801686,217682057,1301514109,463415933,1977221791,2097455073,890292458,1609933153,1045946666,533954123,1448686745,1430659339,1997100641,1545114686,481668781,763687506,1564026083,194276870,1258307821,414129319,384583989,1061374634,1690473376,2064177151,1329032896,1258731520,830780744,180308863,543768431,331346132,966016924,1923112650,790420261,1512899443,1599702112,2053006773,1041130210,263773777,187395276,659575892,2045256212,1679330957,279938208,1227818790,417588559,648402040,719487533,387168873,435898610,1192259590,2111962146,1909884916,1252469111,2042705637,2063130305,1644304555,369369132,1577124503,616546048,1214370356,1150087751,1588940792,2058131930,687079322,1535365983,1971690513,844014117,2057668428,510214756,1229559569,392363006,1554383943,32486644,1640890363,1606974545,1847673222,1203145825,1395867273,2050578328,1501764969,1728502558,1419105466,313309755,345704071,1232566529,1966187636,105991769,159150862,1830165645,105398960,1217959897,588074368,780958206,647591810,604992876,1690015170,1870744207,1465996143,1971495696,1662670648,733240456,649818418,2096265167,2046634150,1213674977,508885310,93473778,2000825623,1949811322,1002055946,1767022773,1634252791,1888420938,1221887558,681093985,1179210129,1933572303,840472564,875207726,461523959,588705549,859328370,210882430,1524264352,15903138,732455606,2044685390,1981593572,1062061169,592532182,1144303934,661237351,1427208066,1229942013,885562821,343613803,1843750997,1748569691,1989767827,897785512,1959426059,2106016379,218176405,1669939233,1596919647,104156471,571102579,1315414581,68071886,138812354,507487829,178968036,889489476,1015712405,1670654257,1185426692,519455993,2003417957,59157479,840791862,812736489,1792661937,187661882,1922711293,1683452612,1482635479,1865838709,26223812,1545412030,535024273,222593461,540792857,445027663,683509789,183043688,1135622530,731071070,1691939903,661420439,717124808,1378517409,700842807,1274645912,16675355,1131241207,1365231463,1742339785,1661408982,807420945,609591579,1265342763,872426078,1768420966,1586708759,1765704174,86594656,1003954516,494770815,1576916898,661616531,292798726,313258634,1408726971,1319080180,377614574,567347952,1132472590,358080941,1350359019,577379559,1728613565,1760429194,91399120,289287254,379389868,2031694776,769156093,818806014,404598983,1698981454,2028465899,954585164,288917796,1949954930,141762729,1576957616,1253374745,1132259358,578377428,327181178,1695866459,1756475905,1332884337,696888613,295029379,1535347987,802597128,169098285,519329932,286107135,1045769801,618749774,1747318648,1328686057,671276205,1446823000,13729523,1099963227,1178814635,1503401628,585556663,2108650630,11900485,349456202,1872371854,1806924981,1495142531,1741963419,716554738,116099337,1861294540,764149578,1147253599,1089563809,1571280115,1075889208,1419426448,872067910,323594073,1003042156,1310871962,1558883261,1311222119,403968364,1961516164,1497940193,369478977,653812866,1248801041,191763161,338597598,729430038,1314316822,910278665,931914517,759956695,1499482708,1063582354,1270642711,1557253662,329478626,312608023,741818818,208348390,730492058,1542531418,1491426814,277382073,363614310,140152672,1803196396,820421689,1433670164,643070678,2010804519,981129702,1572542621,1865308154,628903459,1614699488,152408928,1776382196,859861612,1507668379,186869201,450963358,2106925479,1872642874,1261704594,1358325356,2055330233,1032296778,1302110550,1172095104,2068527853,751409869,2098569268,1670832943,151525956,86382204,1925600836,846002491,875974179,476867975,2095531729,478689893,1779917240,730892313,1547917837,820901830,231941421,1276345579,1674144615,1930199557,46016119,685892278,1417899906,1031555287,589027048,827370118,713966953,1327476761,1568021417,217028465,599037475,865518996,983941909,1779861553,1565860703,443538435,1621279284,260615384,1515402876,347642506,465325835,887604957,762018612,1113576471,603456570,2060783167,2034907802,42558400,2034215409,641060941,740978069,1954205288,1405436666,1486904190,513235885,1547865806,707850410,808437811,408344009,1993719471,1527455817,1257048482,916247649,1760798354,29615143,1208492207,861863360,2060419753,742662689,618357216,1040947896,838064455,1584466889,287267706,1088629921,506208744,1998046086,936261857,892019405,31278944,1748469757,1806712934,1242651303,1966354305,2012081156,304811780,1494549053,337022628,825528437,1595113015,1140135483,597206381,31205895,853735394,1891247022,790311433,662354202,1033091840,388033304,1781935320,1852640478,276388032,1881483462,678820,653773528,1364673978,1682475879,1292307512,1761632928,1387167887,1679980717,1328742475,138722203,467446652,1055226758,1795795192,1397505369,803203251,1516018304,1590604261,1305388084,555383205,1558082816,1477611322,1871945829,1539767245,1600432680,548619114,1349567421,1845255378,854955437,269446783,1379739455,1872312687,859644186,1686327536,726424284,1164817852,1441847,2015270052,577182364,1069692131,989254996,233709796,715315586,2105127667,259947387,1096459376,1876920022,600391567,827149536,746094306,2087660183,1745324094,1133151066,556469222,2029862061,912199060,319209354,854957669,1733486809,1311987450,1762267439,275515975,1133606597,241770680,359948466,1465400775,299879650,1040444572,647876438,1176384714,1513107707,2048083339,105699422,699573181,1232890615,951328056,590166500,1525681454,156160471,1180954116,1220086764,2092497945,628181537,1398373431,1238630440,164556964,529863385,668997310,2058909303,1054902653,1959842034,433241548,1043960190,348779470,693659632,713174077,1387050380,755589438,580796703,1627845304,506966041,844270564,183367207,458070556,596229753,1125925910,429644763,1717013491,62555343,1251445673,33678094,1421219698,1254383250,1607950476,837024490,1329662868,1854096513,446084338,1366838497,1770491494,1881923974,831836987,127252045,665036449,1177300362,1659117831,1757133912,646804847,104744516,1263737466,1164143025,1176197138,951497573,363730103,989963434,1312612129,1378990101,1091429205,410900413,2075883258,1246765870,525651116,907088020,1738419803,1474995690,1123886078,661300538,1512953800,751514330,987539631,1824689873,1192156319,1254380488,1027980352,1675163511,1375102447,567502651,1726622691,1201340522,32038717,19853018,38752141,995458316,604994918,868837043,1858733645,572396829,957210042,1712530843,406951541,458053715,770619944,210012490,1873860304,657388763,1747370382,697527996,541626865,216007741,1601098564,466838336,1027784120,2044111112,1958064804,459046882,1873672470,1962648635,1254522915,1835399060,1390459889,1861081221,2021018148,2066640213,1217270546,1759423596,1613764144,259562569,675179177,1190963184,219292674,1387688255,1438287318,869476690,366095893,860446137,1509325077,603151025,338736334,365381868,56529781,915256107,1222057336,1840873020,1020443505,719958769,1030783440,692718558,218314506,1915848991,711413190,1731821329,427125412,1403814566,23986628,2124159184,352452401,2033375686,403813988,1811581092,792012102,215737752,1229567994,1355609747,891173093,1786982258,1917258883,381551018,1037266076,1386721581,813054267,1476145859,1871854363,447337368,654399212,573145319,1141094819,1892369848,355576348,380520449,949573255,397922855,151465762,1594383108,1859357153,1589364581,2039373312,1496454794,1224987686,1260184036,1858959642,706311233,1543452776,1825930694,721810722,6117398,282326283,709466077,1615363080,1823405243,694879052,14815296,1008541344,270547772,392963781,1630458594,1834293705,477137395,1558239688,1173767494,1224182598,1214321299,345724477,1670997521,1996357096,1070009686,46331041,1074912672,754833735,449848117,736131155,1533390292,1424929395,901746941,920624812,213627917,1439432835,1162396281,998244582,1393791985,1884900479,249300392,976007971,515108501,558037312,737780500,588090947,1826319126,2083180317,21915008,809973193,1952732394,1723990706,1991744781,1088946337,1738230109,479010308,1461466301,1565061807,1914565499,1278137282,625466637,1833537110,803360679,1116880955,1594678574,1587142632,416257397,770939552,12070868,1847279621,1802380223,906711203,94162352,401510241,1040702077,1029968415,459054138,981717180,1672593980,1225209150,757333739,940442211,1911086669,863613629,1800416726,1096756517,749323395,1100238588,1071525963,1024730580,1881235814,1090421137,2023754982,1434852974,1173978784,1700122009,161846901,1549458363,271898618,647378640,165897827,2023276030,1678528505,540165990,1928546243,183982018,48246717,473438935,332010110,502931812,1949038631,1205848992,409362189,900414789,852192021,54328447,1145406742,230644662,1080612865,836101175,639893892,2018359560,1266900492,723385050,266845096,243951666,762248455,672650983,2019526528,1270062298,1127004059,2033243730,2129068485,1861280625,1412116168,2113253874,1742939836,767287936,1305358438,1910621779,1582788888,316119614,1903138692,1717313227,523610814,1748341494,738104074,1908280641,1945622995,746715160,1346482019,21688646,203224259,1331892822,1007045610,2106504833,908726594,942514539,1838620760,3522873,1814900331,399992888,1764006341,444593196,1967602172,707502240,1017796502,1944541940,611782828,1887572850,1468388952,900159872,1510073239,1685787487,373100931,1221957115,1573194498,1958758278,1945801524,441583968,636202917,447389100,1675309685,30165683,487269425,838234252,347694860,65778794,744000536,1060311624,1578769447,291914207,488446325,75246028,579514507,398437365,859423902,574829516,815782856,729090540,871458544,1933838304,732755499,42202573,873226972,1050726803,173136531,1764146319,556369564,379796853,85854378,1744346663,1758025817,814976891,1804040506,567132909,1837386910,2097857275,1507790409,1560195809,1592804438,883035159,1767154068,471902318,1225570127,428425943,243426640,89993337,1540586557,388257064,203662454,504357994,1671649916,570626283,1864452084,1377013229,1382638355,782586427,535431875,2029864511,1081696728,1920006120,2038068792,1683012575,1143486304,2104918907,394092000,798583512,1055538459,806562284,1135180380,1973700051,1407659855,1292743389,1991972107,308325563,1074240644,131020682,1379923393,703160944,173237419,899567603,510432496,13953610,1442133678,1101089820,1033949425,1556641211,36944095,2109768963,1380502108,384311236,471925187,1028942366,147803440,1060769136,1237115430,1521982275,1738110428,1772728050,334497503,1452720289,532055667,1989906470,1303928568,1486816907,821404268,569783510,1599732267,556985123,222621019,724605609,549469749,854265497,1896967000,334793278,652812321,736360375,517537657,1039766062,926618537,1045979291,174176057,685522332,1478991259,937828909,1682023493,1180366088,1625303363,2046809415,31185052,893301004,1688382988,240932827,955218895,720097693,1952163992,1450579056,222712957,369646256,982598702,1323790321,1500815823,941983710,1413979126,1432713138,2038981451,1681582334,1250386837,1077727456,656834728,1541208218,1472915176,1938016623,2003630615,1440785568,1201506931,587197843,1110218317,981307396,1041537942,248114476,716420834,791258252,1087917126,1134542359,1623601025,1788624944,451233762,1171328546,223191184,821869873,590366680,78078570,1310363080,803691240,1070457232,1655346650,555411950,1798473551,173546093,1777171182,15384009,544303603,294967336,241417071,1838335486,1653940494,536657603,2048757227,2038466124,368721183,899810424,211531877,1797504239,175737236,2026984952,893943115,1461227787,998492355,2105933258,325327307,26495252,1361411899,632323983,1843417015,141216994,1637859898,292881675,1532830527,1642411754,2022037637,1653216927,1237913227,129189657,720622638,1245774206,603476634,1227769665,443333345,161494359,1432860531,771245134,600869446,829936829,649006207,1458338001,1030267185,1502445035,1356758370,1988840975,883981678,1006128256,64510003,674613484,2130078428,1482105601,484601120,472353404,665156464,960835144,391678583,1071374516,706503036,1659408555,463445950,1835791903,1327976763,648787409,1464539090,248759974,177009274,293653936,605259187,2024066416,1631302307,1148298060,2031927556,1712404337,936329745,1060180509,1930153192,1898461960,2123312631,486321165,426651832,2019358972,1240754311,533364735,1244681960,1450250550,478560158,127890124,1979026870,2027534341,1765947760,1136430820,446783531,970636241,1023844370,363655821,1920059321,23953668,1178749793,1276188353,1513331081,680020573,619657248,670851240,112097812,1112272480,27973884,43410984,1871595776,779385412,907865484,196844968,1300310643,1807943917,1611978953,1743071828,1196913417,1266727142,933512329,1052336268,305350950,1145895920,1524257175,753484894,443017146,156896854,56153147,311935939,1122513855,1458749457,1635509148,277044243,1554250258,346491157,47480835,1922821579,81999358,901706060,1896364431,2126757186,649599137,1339162569,663075306,537125225,6250300,921831571,164189587,389138857,1362803149,1362027875,481918411,655445219,347981942,1643128229,1397541065,1433962568,1446322164,318466417,479554322,1913941778,1968948738,1072900055,819434650,1265010923,1522039725,1881185137,1007927171,390236593,395214904,972710260,353523530,287862663,1050596814,929535396,2107244537,1633987974,1699562142,1065388638,1330751517,1057904924,39390373,1407616076,317228422,356673907,169893728,784436857,461605302,1128304554,1620137025,1620818805,2047043678,710926413,717818884,1284737423,89718593,1194372991,1002155578,502859746,1643266577,875703593,1675928029,1966806730,1603948005,27706105,1485196312,1147107625,1652642299,219059597,1584022036,479982625,1849649677,661132089,478835274,1747734951,424815818,1143936463,590158776,658775494,243607197,211731623,159961388,274923294,1630930128,1844863975,1848036685,1681642080,877739069,869018818,307143642,2108071636,492660454,673790476,1114595582,529511014,172453117,1162663797,159246560,1232363450,1655054844,1962869967,1378069438,1296972785,1070589598,152857884,1675598283,1320550619,1501525220,296260600,1560227551,1564198802,161390795,174395839,389598109,446325282,1322752859,1044213649,1145814494,1334713041,838681383,1970445754,665446110,564057470,1724937672,437083252,1611374864,1064117549,387974477,2035344286,1556896953,105262927,1558062766,1441698761,1137431326,1070544395,526371967,905060380,1962273884,1717881293,1919065529,958659211,2016057836,491285433,108278083,1146759141,2012828063,2097228619,1533248242,426501624,101272992,387454941,1305660870,791250392,1809042636,1781259899,1533235818,1869886223,308309731,1502116970,94394418,1095506038,1447376028,1569353403,2000247269,1705268375,699906894,477581725,2070757070,151990227,2051890536,1295809436,6795656,629804306,980795911,1762776421,1323187059,1656250720,943196755,1832916548,461849542,1858897975,1670041827,813986082,769755962,440369415,784206380,636509438,227800353,436168393,1078427372,2123653553,630573936,1351321960,942444894,1456211774,1382529009,1171067939,1077171257,137727609,556442320,783178361,1839842046,1423611047,2040301349,335965395,693771092,1659506032,815106866,437647166,1129792367,664512000,1268658010,330740768,594947055,1788674744,1509010068,460456911,1416654729,189278993,93244287,797919199,739833024,1838159994,362661123,374957968,809641196,381841332,1613595424,708338118,2064332856,1720197900,1432164800,134984752,657344103,1695218386,1231606219,699454687,1142478843,633572635,252261252,2073680792,554015019,8073782,2123832802,1349222277,978612842,1151593315,2023522949,1979130698,1011897328,1675863761,351411844,1961198984,381536642,1385808779,792896142,663833149,1460436695,1535808694,14330335,1505144970,1192989903,2075052008,1220807279,1174543590,456597796,267942239,1015506412,1539790258,1555447290,2089402751,850961730,1447823924,774617659,1770423190,1327872218,1106161222,1328728638,281430033,2004364090,1508841564,1468440583,1929546399,1674693050,886489598,240005550,1439569595,1773879306,1703962033,611264686,278968590,1602804250,827807147,1086101273,1094263662,494562263,1104659586,803792605,1840279612,1113741187,1308010096,1996334189,373123794,680681961,62078167,1488954198,924814026,414875368,1174197120,1131545926,346871575,46969952,249775233,243212440,1742025612,164099916,475350855,1027815897,2111126856,121224019,1282111438,763740449,1351073991,1029654619,246215552,1795171994,2027823260,180216663,1386260434,1346262595,1823880099,1231534482,1284347136,1657622017,903736900,1553992926,1131929515,68524208,19941072,578144585,1970088957,958532653,797272646,702159406,1382811609,1947358856,504656298,1333421567,605376993,1927877775,1212590738,1967104085,916882694,1803128522,1855127947,1510118529,1789545253,1823258758,1374005877,938998692,1350167375,1730912050,1092348586,1042372683,930050029,1772053188,749941551,1292027805,143096935,46836263,186052585,1853341608,1832973578,37555710,1408847501,945013036,1855817117,1661319154,1881046467,1561335720,172084810,1971468533,1651755082,1951982976,2052763246,468927567,809450617,1640480991,1074827801,735339337,1648870812,1832358143,691204885,63247870,247809956,619556717,61630025,2083173841,77460682,1683983939,1932084848,261569748,580049738,1493676976,1497728273,230577567,2051655089,361299909,1673348667,341503837,2054516723,205468586,926445527,1292043077,994207608,1827518149,1091244385,1558014989,1945754131,1895193572,513687338,1112434231,1539766017,369859449,1553197778,548550174,302052447,1903879580,866154003,1689455902,105624669,1648833479,814279582,1805107232,146563167,1300022718,1068923211,1968573230,36178214,672863773,943836786,1330195920,1286308191,734634615,253373298,1450635431,811983453,1528982245,1119625952,895120063,618497819,883125130,930377312,2068590628,1465595322,68882925,130158048,22319657,1098767531,721554907,1294830640,1511405095,185743347,507637077,215272753,1302392794,1664883549,1202562032,524834021,1463479565,637882645,736379128,1123215393,599772391,2040398419,182768119,542330054,250390318,1952814483,2023517779,710870664,432857445,128588661,45369073,464124005,527990633,580692199,466541599,974590604,133528447,1225181012,922716077,944843196,105647646,255470609,661669548,828731238,1060040369,2039465195,2030027366,322353623,1924748905,1814239529,119569277,1763929714,441404257,2089439464,1927509510,2117067909,1716734137,1553657795,37205925,1360346314,211063180,1022139836,1977295896,1276758829,1426385654,725515738,1715398883,1851086860,1071933632,1494833863,20712891,1155878500,2045995439,955654093,1070625732,1258764218,658732515,1211352785,376195184,685403379,1455900203,191558727,52350085,2113828717,1100099905,980669120,292640454,658990356,1621961402,1674629660,255220989,369154129,935734206,539239009,1528850589,1106360816,2072991898,1501159325,1621342019,2126185941,1548849352,1892138514,1481289703,555296139,1657966122,422051189,182850697,539099899,471156843,1293853499,705103416,259596680,510799487,1113018794,1048612013,497172720,658618708,461085699,1939859991,318904151,1459770678,764730034,1107679500,1923833439,1872046988,1767100335,1733618555,852425727,2080218628,348107530,1403106921,1453568302,1868067243,480857696,64094864,357307634,950776871,1843362936,268667438,1583806073,189410278,385752099,82969996,526583052,1615764503,1174511876,1646364399,620049502,547889059,1324457226,2090283878,423123142,1671672218,1617436036,1981340728,1458342301,1797475722,17926157,159114230,999676986,192150982,415252517,2000165385,1764789811,265878296,540664257,123602037,643969987,1576610662,1134005672,1837456827,1333540947,936899147,801443026,239857456,1002484554,406558630,1842719543,972232292,1853832698,1784372514,736386588,1190524884,1247320203,671701425,519404684,2092462712,1625626751,990869196,2019011873,2099956510,776609907,646050009,759728748,490573161,235243160,769544992,1749487609,1631353559,2064130911,388633657,1270804857,626170470,1846369459,577049189,65288483,1355382534,1399986947,623709802,777039982,1297963979,1487733279,1429439476,1299026343,1214946079,927654710,880910458,86665594,1728908969,1047318228,326150754,1000422841,2024025990,1388287331,389443812,2051720751,1403186516,2087615010,2091906042,1468036707,1855068799,176784018,1807678608,835199778,708380099,1816004470,723492095,731575491,54395244,1588636674,433315779,1311081635,103630327,623200924,664484774,1559359849,669476197,276185370,858734260,125100251,1421038607,651790834,565707218,1091925053,910606555,1660601485,288553393,1433079377,481184747,875931300,611690879,454402981,1540928867,1892476056,1719918801,1374455502,1437132221,1617087958,1789560214,252679979,879325531,1723335763,200347298,1608847594,544662915,2043183779,1465467604,59817208,1857993408,1822925828,338264734,1950659075,1376604402,1440462994,750090106,1570712095,1763585666,1259337305,1402369903,1970320255,1987140052,382985620,528450561,128226194,1314956664,1751634195,34167084,420610752,127808500,1541430820,1652225078,1764431846,1326934440,1853812302,917202769,819234992,635438707,1907260575,1096941065,921105924,1975243744,761742443,90386064,281397882,723322996,1268193624,2008793050,492440059,2049692521,609468390,427377014,1152946566,1764115494,1770790116,56919427,990126789,1960862962,1480145841,1503825654,1158398386,1513994821,1168558180,683556772,171292405,841045467,1244680467,2049344681,177100790,265625102,377372827,254176503,713934805,1741065583,422600927,1847070656,253161485,554465543,879584952,875122043,726990835,538915528,454197654,177672876,97345603,228963346,1715598579,1473502812,670685742,1509674079,508461523,668242417,1267709813,1670704997,648361350,1680440218,1080849849,496171130,852678415,1117711117,1294994519,231158892,1744923358,173940188,656867948,537086080,996598268,2105354179,780768930,679720243,346180798,504187778,25943105,1594525306,934383339,1596517952,1884722447,10178449,1356053568,1471381419,1041388983,795824909,136443422,810093663,52976103,882574927,489215156,1019355242,24096317,592613408,893720792,10460270,397775897,2024951855,1442825531,843155013,658737921,1138199662,1985746585,1225299997,1173148180,666417496,1328265071,566459593,1550042884,826723408,985025328,814150299,1884027327,414520560,1710169606,1923843785,1941986794,2025677147,1200984236,305757413,453271480,1965858633,518171199,693085750,1007454098,1296933299,2046626056,343707019,1944837774,274901022,1066541358,272239227,729714012,2101246707,1571859654,2118308106,221054175,1964150017,688079740,980787080,131224583,764617224,850650816,1600295132,1392244979,1047900320,892874544,1866648434,154353517,706429734,1567092245,968695855,498897117,222736897,371940957,166383569,488205281,392293971,1968339861,1889884866,1827226318,1511352508,1949429840,1672160982,2046580586,621193197,663799240,210064853,120060654,1634831500,1312759720,2094943807,1008317026,1806100675,1934014225,2018847044,1054040781,1878885643,490271686,1791097906,677273594,643189623,780242511,232948097,321420882,548700405,962891535,161690618,1141198488,2070892194,2026883576,17293940,1396463333,318641040,904402883,1289255677,610920334,1114439727,1602156621,410646859,974152023,1399577426,1338434236,2015756052,1889275563,1021098961,892850826,344881943,2058740994,1056526795,1438350761,773531450,998218125,1244075337,997682730,1396772657,545021349,220027685,1496930387,1234732241,14423296,982506548,222085863,957926929,1440979001,481631093,1673813435,1802569037,515719896,1223707143,216824811,203271832,1624852635,2044295920,1698579103,1079445661,1731028635,1545200222,535555778,471628570,1071043374,536099476,2035781766,155106003,663542394,271540589,398808027,2036076314,1805345725,233581045,1066268317,101590784,569265084,550375394,2033159254,1572819911,1567293831,1647183324,2075993129,211113626,825447845,2048310049,1896859678,674573821,896703933,1149431491,1074229164,594252581,686640268,97471795,272403126,1311534187,1874226631,1879509923,399862446,400887393,331821678,1341062237,1969733581,314462479,1513430175,1520405952,1970757194,637157304,1826220954,253873219,1472362796,1611280763,347388658,1908858236,987496857,924488589,1935165885,1155130018,80374950,737929027,655234451,867416106,954995938,1068747164,235800235,1782461308,1125432058,2044238434,1925514442,1597361387,148516383,508065964,851735521,611340884,1988893092,56808651,589524105,1201692191,539508816,649963125,1265832326,286046801,510194955,1325395258,2114093157,703041889,248823586,2096205945,900026704,192199707,955466218,264958277,67568271,1291411262,1990050929,946837167,1888462517,1685442552,1084346327,1889979628,1961618026,1820630814,1327418335,1889745522,1684731638,1207571678,1940872753,1333007670,1656843520,27817781,730349981,1612198026,1168620271,2080930764,1757549687,1525044073,146923980,685097668,1370115369,431304501,923894657,18354641,490163176,113061375,196266156,488544356,1435485736,760765562,673707065,1711640012,2123842104,591121237,1870916543,1978610950,922914296,1158631067,1601132620,1809897524,1974726757,1063600602,1800651845,1462825280,355480373,1726510302,1108987534,1446542575,205582626,753627167,334433105,1937002155,1999359326,1926423963,1827429256,2093988360,649020157,1667447590,2049545029,1296749658,2051831170,1629321232,526008309,694521938,1247026516,1894262700,300444872,209310649,937774508,61448175,1476209420,1158007604,990257278,1898297871,1440243659,764503592,823376923,1589916536,1121766005,2057309059,1104511581,766405136,1457918599,525549511,1303028145,630854033,660231672,1161908102,1176153873,1833095003,1732152267,2093547604,2089372109,1457226400,808554400,284182263,913655042,1459089754,767974820,234897708,339116223,704315923,1369043507,1423561990,1260045490,251125522,648111911,166037287,719893114,1438159820,1311291497,26848283,236018789,658815220,701200628,1235656086,1020859564,805288023,1358369541,2067732905,441375704,253617996,2054786286,1481039949,154481734,446450860,527129629,286455584,365376751,894179443,1340299118,1103405261,2085216994,1690884952,23734986,1551757824,1936280251,1856724290,973003555,1982532998,1930075818,1825615496,851674067,162354132,852500125,1339505155,1000683680,1011759081,952931999,873192655,1735271211,1664800032,1470644240,616179473,698756638,1165014602,31793778,1792968844,701749317,1856415057,3049969,2121353698,2081239938,2075331901,1096092970,283080701,538920193,1824871667,1347029406,1173104488,1499833782,827349417,234936601,1266482257,1815441344,2128703467,1382406378,10275877,818981168,1362249374,1153537156,621410632,1867869566,769951382,1299114873,2126949930,913760654,46834718,1000790771,1631130126,1253906279,330138683,439312175,1486816641,1031755044,1737441111,1943436910,1482681958,637557071,912602863,412711246,119885270,1519262879,940983927,587332256,1669868160,1783790157,2107559115,34494020,282887818,2078113264,1483452071,1573114602,210496843,1438775333,1063949450,953757838,1017605703,136663055,1917146872,376813338,634594835,670784864,312130433,610910354,2088448834,1151679513,1027671278,1560546837,1946465174,1107115847,966902932,1272878365,59472964,2070728743,1958978046,861424430,15715486,1578577796,919769662,1364017549,1593177839,2044181803,399820047,160713685,977460831,2115301882,1850732608,1079873210,1451780862,610817363,1222843156,319952162,118831448,411897169,1241865667,268486671,2039428150,1065818800,935237644,1190448703,1858592786,308572065,617223478,756677599,1491550762,353516982,1570450973,191542637,978718388,902375385,138408999,657847056,1834507078,1475535847,1343366361,1560509640,1550578979,155593229,1828417533,2030289037,2077926106,1175554778,941764607,992670819,884471524,1301347523,976059212,1061889897,2093686075,308693850,986058309,385062672,2108178866,1324780246,1463669183,1477297355,1976715791,2031784756,3731839,593812094,2006433987,572221237,360158682,15897719,597032512,317380451,761847925,59874490,1273171180,1073346713,1185550016,884097393,287082610,57640261,954628943,534297422,302385916,1895822033,1626000713,2051260524,738331249,56311107,1524978635,1478636754,1063768484,172060882,247834921,2051274028,1191232556,576528576,731920177,1196905205,250647742,616446332,643890163,1674720382,2031588714,77715128,1232028518,926240660,1057834018,694708700,246218450,492211987,107974193,1761356203,1647283854,979197300,1743544845,756223512,979819164,1422253920,1880590013,1778300765,2121319661,1068745784,1507450638,1591585562,454584293,1572340341,554498172,1476140643,544994145,572009401,2112624029,919401580,76395455,2112553644,2036371188,1057045114,1299556993,620968511,421441309,1082564566,1004606069,1190289639,709151952,925733806,379218542,1178979591,1820794051,543441290,322288219,1282930893,299515097,1020682350,728299005,390411807,846111459,452255522,1812378527,45555712,991868544,618850886,1784903604,536428944,1110371699,1962578525,558458688,41183323,2114391144,457968865,1454426619,1268423763,1699123448,194524502,1197600906,600180964,811454830,1894378057,454580867,317848087,1920797721,162788391,1938453356,304659809,454082045,1380328790,1869236498,967388299,78515082,351951795,2074425218,1482667704,721488148,1645089613,333750840,1324572062,1650184930,284255075,1202150133,1006444030,752115205,955374700,1951331029,1612745718,297889592,1244513952,803043144,639597902,1620291386,27279403,2090515579,1920314577,590123320,2061184112,526997653,1333268882,1992989600,420760649,1350352921,1725980958,1739251559,842340023,814634866,1648510942,609205304,1998697840,320336848,817965892,1589946521,1149801872,451762431,1912390290,1808017441,1303952371,2091823011,888175277,1000538726,384612049,174752557,185474721,1830950196,1272950083,219240101,1856869289,1043296489,1662393593,1550851424,628781815,1794610232,460438484,323028717,792506020,2083155393,47189498,337232712,1918734598,1828886951,12727682,1400781851,1405499410,2115743989,1915928605,1243029990,820712229,1994074393,1448677071,1849839939,1051042336,1934456497,1890446457,78682221,245488867,227280752,1233351476,1922501337,278776398,581792697,1106363209,1145432513,495317329,969378554,1167148162,885158063,1977266260,494102417,26153237,224195803,1539363,1054856191,1764481580,918978095,90288211,1070877744,132160788,980111074,1535619807,531355961,1295548252,1184525499,50132799,79598755,395290720,1739911366,857019909,669275055,1143979023,2122225837,1034562754,1188115165,1165480130,447692814,1003997745,1798993992,363164736,1143760279,644093488,519910629,647372993,28464999,1544000329,922629996,1676524352,802060232,847086936,1552391660,882300089,151423352,1582788402,804998156,1822089312,1153045327,254916683,378794506,1737741383,501006627,710988245,1168970799,597130105,1918781298,2127409876,519050243,1943126751,790250551,1479627745,248596603,1305685150,2095114563,225760909,297121347,219092419,842543992,587924799,577249470,1925766438,637235282,1441771502,1366492763,403531533,118381764,1648469365,1502965024,2053224995,1333762187,176381273,1331226919,76197280,594397571,1373970349,150442006,551051566,1635138393,284389138,1982287239,884526590,1827805122,631521208,1986455828,35921155,17592377,1558576616,1153024297,1075092127,136009022,113022523,218731237,1629648352,47969642,205987364,1864578441,77861377,1823144904,1865746396,1979957659,166849351,743986006,2097334972,275091742,1503496739,485035854,1902354558,917349254,951329745,59059707,2034374158,676903827,1858936991,401845822,95984989,402282924,159676257,1528936321,17902681,1620605984,1818073953,1392899351,608855180,1615662113,1772706482,1482781878,1651676168,1044077082,1597520453,515884203,2096427222,30707061,481089811,439904109,882474094,950541232,894036740,123077796,1890985799,1532406849,808115616,635829891,1326242896,863791448,586397518,1475269633,1279140827,444804313,39935633,231791909,57852651,1964230137,2101601063,208929594,601291673,1999460649,2117855756,69880162,281464562,729880471,1153864169,1465394088,1489473949,101084217,938952346,984220721,724688343,1756287163,1044975594,1733258879,1422974274,130467073,114831226,1657718385,2052184190,1819037921,65395794,1252482153,1331563428,1447635121,1185756330,49397114,240080911,1169310309,1111123090,1729338515,1595687037,1352442001,557446608,1653942274,1994411284,872077947,2039554055,671992428,1125230845,1611994274,384449314,775990501,400991244,1121929438,1494733637,138311441,867266221,884054546,628653327,840618491,682971848,1972130650,236199491,24689655,372785179,550683382,600769472,1835473241,1763266286,1138802952,153683550,1291716675,759560512,223722459,1006042966,1100947832,1224010125,1734355885,2084588071,884077872,201267758,1897259293,430250651,505162119,955706836,1732869408,968816605,1826864008,1135454745,183458668,853377887,1687350638,1186913267,1203760712,1617835493,637946106,1326691883,102680321,1851063311,1222189049,342725557,1194281465,94548789,439723140,1193264377,190507064,1272090479,170823198,1985873502,1047957359,782043453,1042190804,463128711,1159060914,948591961,318165184,747897563,437121840,560913178,742297510,1907435127,119416894,1142986142,1679413405,81767895,1892320562,2093767806,1167493023,1216771267,484646326,2005831316,1153145864,1314724721,284471241,1121987550,1086301368,1468491946,402008058,1164050946,662248590,1649706168,915060003,302346163,1609673490,1429159117,560925368,489802885,304067939,1718769995,2020901606,1539329787,114936872,1685539652,565934712,277928493,845373414,1803983251,1655864247,2029339092,743854540,1446139116,1692580643,544854118,899997182,1737072169,1165765904,1381974463,344330865,1897261344,761293459,1404775276,965086261,159078147,1268956282,1533693732,474228540,1513031300,1757973368,1762711444,1448882354,1319840351,1900868719,854047209,1539401734,1668070162,2123890105,885742751,1283015215,1690182754,54735816,1538931843,802221901,668294799,576291394,667697387,1763662762,1724972493,1522630374,1920456252,1304217045,548143378,244923974,1148011208,1153539099,1258771957,2127266427,139374515,1051032227,345246491,1770882845,1748455210,1499493041,1523013327,1578060643,10653039,2118520953,1478237480,555813775,1656246360,1574860360,542290611,1888261853,618828171,928994688,356691102,357411645,855384243,862421108,681217602,631313811,1676967918,943399677,1341193626,2003005573,1343748072,1457372256,1429197042,1339649237,71300198,157905853,268304908,1776064019,80924326,236697402,1950223075,374135502,1328030718,662379892,692763317,242361591,951160853,796732699,575516773,1004195694,1960177894,1580726166,919410310,149265340,1094907969,440447213,2048357983,1952312217,656439492,2081528363,1950377009,263364170,1180905335,1354441599,340859352,1767311485,1128921648,302788319,1515233200,1628538398,744863647,1451117447,1893775249,2069428450,1387752097,170948058,1262611733,821256807,1213941574,1383450580,497504605,561427133,345494587,2094890326,822554150,1882489592,1406948669,1956025982,747922219,1487133769,342206369,458442744,1709390578,1327206618,1983367786,1035814543,266477649,486618321,975939602,1573542631,1761151450,887125302,617941940,1997123353,1385927084,2112930319,986484819,698114453,1009337940,1627941844,2000638581,1851623459,1258008165,1252314806,7034565,1272823867,1536542685,202844966,492019993,99001959,1074230633,251303582,1834486975,1862109083,1926836848,1258464697,1789239328,1113333474,1441848140,19812504,302684636,226453436,766243601,953835328,985621816,51296613,388089140,1946265901,709083433,1687100759,1046139640,1117968304,1768785481,1005087994,848391657,735387806,683655724,1313273611,770757928,369446670,908037186,41068212,270499927,7610949,2071290647,1359395259,1806300667,1764939880,2095882625,1723235088,685089244,1813171888,381113663,1810008059,973946893,293472194,206826290,424015627,736618694,914113124,47703808,1657894280,867452242,479279348,799076351,1993646516,490746248,1640487510,767087406,1956196292,1326602227,341912489,528696194,714976915,1622582911,304127799,136682341,1991723897,1719603305,1420053311,1686663009,951292823,1714682256,1781723100,1569767409,836153211,1868500901,2120048459,1576565112,1371207301,1117142043,56336763,502471859,87374770,1646411247,1590714408,1622820330,606735525,1387961909,869008155,1362374795,663686662,478972175,1626548598,543024696,454311031,203198991,603404986,1497545097,1685756344,1463400802,1068562227,139658750,1433307290,505195610,1821697247,1653092035,398400476,1283718393,1319516860,1219034530,96864271,965442177,1291197334,793963873,676034116,1133450190,1536959350,627581739,1591285975,660928697,1304925424,1665316837,448150032,919775270,2126969996,360535641,1718931108,1020777422,775992188,1597467218,1995406455,1779184629,1264408193,426132789,31991651,1255020343,1679402097,320107410,871889448,970998557,1756194588,102232944,514964429,1605744238,1688561726,211592329,1611135656,1680406068,650601169,1397671454,1826788881,392758039,1220877693,1118914412,1871704172,1726328583,227882405,935876132,1973884126,982688951,1858463314,1220927274,1245472718,1771756703,349219009,1026177926,2083123811,1142958127,1903510567,1704233658,833072912,597518109,596924555,1370276676,378909438,710737580,1934616334,375220074,1008298273,77227490,1368411904,1001689263,344344377,1037864295,1087124995,1135684702,1739331219,922929805,1918233071,1863807574,1011350925,1119540388,1315143013,921864786,960638436,87892668,1790041168,614756621,1096462799,725220839,865127665,1728557198,2056366326,1396987578,1499781959,242111454,1362904727,973319774,1029130966,55911146,1443201570,973351137,1660710037,425132717,235721251,1621343790,1462861109,1633378239,871867568,560753556,30635313,1477082414,548666377,453366858,526541652,1614058209,1001504552,2121120193,398945450,347158740,743762964,1904238052,513079301,539704627,676754960,1961890905,1863050777,1745607580,1664741135,1219516169,140580607,1983143031,1736840244,1912497304,1564920780,1446619690,419805266,133489266,494238248,747823854,541655967,1839722712,345775624,2023768653,1071369534,1444099796,610551140,2002165266,843081223,675916342,1503968491,1621925579,1068570564,20702380,1258268618,1304856423,1810194356,236331449,502552448,14762592,1167758049,629743100,816974307,1420771330,2038430524,893087729,32169551,295300217,689120807,151436805,1818690509,544800216,1860941935,34937358,233298967,21466617,485560417,566626665,516159802,1700698926,905028489,157940261,649850601,858075645,714822085,1990265480,390911363,268459766,653255489,1561236482,328928078,1165297146,1458363798,733559308,111874112,1303180675,1983030610,823788436,1230003696,215149246,2022150823,939384250,1990080841,275528309,1412857209,489661868,1233026326,1682645380,313617843,1849256066,522736747,1358908525,1913649089,48918902,781606309,1227058838,2081003377,811959106,1818805988,1496962724,1217428306,1403775673,912253964,769840898,834952121,1235312136,1344289340,473284052,603657948,1193250544,1307241969,2128181237,1736331349,1872311140,15219098,1840604503,619807218,119930515,277680841,857603103,2079559022,269904555,21502475,358443463,825677847,908590962,688290294,2032039334,1874473735,672207016,683608783,79853607,801392771,1493945775,1659456391,1376300185,1276621136,977921916,214900901,1159883201,1103289055,915179918,33158298,1949104250,1699808041,1331578491,676417302,930936509,1327580793,178699161,932662280,946270888,233238319,475449982,2121650967,1731662518,1308039322,632468697,911735710,274970806,1306583663,672589329,1839735610,89748731,803515232,1518514274,374048041,1733677828,1652432643,2063731825,1191147793,1770441123,1325886003,835938558,187642513,1569961328,1712039312,1741008224,1659113746,804006637,312475193,169030406,934213251,957129187,1284304613,1074136562,552454500,905790976,1942502999,1583596672,2121126722,616524893,32687210,1930058372,19191917,985598213,1999761582,108888528,1255576498,1126047736,751532680,410102707,1243318015,614139186,192698541,1378018268,39113337,669131274,1033751980,686247745,1667752718,692822725,1068869859,1337306872,848721945,599985426,1578369373,82060258,1093606443,1583259854,1824048629,782259992,117319692,754184485,46648169,1162350800,2032588738,110691535,1291444707,1981791299,413671736,2089055745,1608233349,1997536944,1803335037,94454390,245707394,1078642933,1159958494,1476146915,579352481,1018959298,1192765681,765729311,488747514,2028320483,480436368,1970478385,1734492846,415056462,36163842,1092329436,624091287,1655179849,680969587,1747528234,635174210,1150852377,645351496,1057344090,1486290308,1531487796,520519184,663295551,814590686,1395819834,93404821,662297290,559676110,1689382129,346657573,353031518,72005837,189410536,1310555067,1273678776,560911849,318638033,1183101546,1929746092,412248994,2097078836,661927901,1802775980,873133248,1732280590,2046934823,385950956,532517853,383042131,284321409,114073933,528902366,217839962,2115420919,1062045344,265000482,1069728616,579025412,26978084,1975011235,786112301,674785460,2010830532,1838089216,524044765,753847239,1090091249,1446659699,1909450343,1204341169,1519349216,601858990,1023700663,1699775772,797207969,1625448151,1571218978,647447955,2087892805,682626258,859236536,692210370,1290985474,650113434,762135478,1029560781,1487484933,1260424139,103862276,1249938410,1489653319,408375832,1294189053,1668552671,1746507692,446209480,74487420,1826259003,1612320159,1872478000,1250067617,236957114,306314655,326840017,254433217,1633424039,453155768,915881157,1318316874,1194099245,104754623,591707979,796372377,1168273138,82583976,1004454768,1926661178,176147798,1779260390,823504449,1330277964,903880035,1117206739,219733757,204383259,1610416532,588526635,847475478,282474481,302683722,347281879,136972094,575387677,446139724,251246187,1731019986,976744315,270313896,789255317,865771387,429448759,1224709590,164940426,2128510258,23305715,522300306,744040312,654893050,115327768,1972402149,645824789,844141329,274878276,85528681,15420785,914340105,1050861900,41517784,1217428025,1274295171,860661899,1594874980,1258329709,192377996,389698707,1242978843,123672738,644078010,756754537,1783664954,374688517,909408174,603911414,1209262796,1936057410,1701975269,68929545,888571608,1167406225,1708528709,1159049706,132379717,937846494,1137841784,1800218514,1915093046,286432100,1403322591,1740869228,823787249,231509507,1462115552,1727623057,1641855305,914831132,889405773,446543805,556389626,1019166548,209435058,490790085,1565009723,2013280056,1688062032,1728119258,1867816777,374876028,1062394484,7337623,924779923,1101822973,135245903,2122434794,1227215574,2076245812,1474251593,81866722,406438564,199789533,770991050,34985253,331697841,1633880091,2092794464,834343397,1817790583,1400074948,995331808,942653610,1162276639,218110594,384823421,70944443,1674060284,1094917151,1343452582,72751388,1039313948,190758389,1299935217,987196970,5176264,230099389,290919877,1383665046,1821685400,541319547,1286629853,2049316549,131108953,1518193051,554714131,1479590293,1798983903,1829570105,1305711482,1868967740,859144519,1415550965,295605917,954802284,422949746,721837919,382488655,1816643341,1003670042,141261817,101020763,1809614411,1040308267,1519612669,679522112,758494823,693825376,722747255,1956153368,761843158,1986992232,397662778,1013624412,860289154,1787450002,444289955,1541709159,1348730911,65448917,1919542629,466595014,1908144387,1010932355,1831741790,1791771247,945264162,1415904378,947528257,1563223567,672136168,995165149,126578283,2121445425,1469712191,192328082,1332217654,868978838,386361473,108277642,674797823,327471531,354829367,1499733704,412195341,1441291434,1551182904,498423132,1180034101,2019960786,1063854861,1713961802,987909397,793813138,779310726,883856574,32479645,558938603,2011976307,281626141,1773500231,1043632896,1734770397,83933208,191418629,454388910,339648424,2039488842,2007282365,561854230,2096364369,453248642,356998806,550032372,320687540,659681338,82279171,2017897922,2094293711,495345506,1127044123,1736100020,1475601710,627203256,1476278131,973299726,655050291,201081864,794196906,1789060545,1228689997,1628729175,759952761,256230357,958637939,226345776,1380386231,120711717,1700701232,843925820,1483679472,1701256816,141957288,1037633611,1049824727,289813493,1565691675,373527,908884190,50246069,881717488,1392117342,205942831,944063715,742199099,1530412921,1467892307,263780873,459281351,1976251371,109676882,1805905019,1676049790,708316522,1485417337,1540259414,824170917,875260148,1486741375,1628139759,495912833,342416212,1480505790,46669750,486342808,1008326139,701437857,464104793,1784794283,1462020482,306199930,1170016951,1405205794,33686135,855188937,494358913,960458286,943357062,1390897460,565585822,822654331,695846497,1760322792,889210770,389638149,1226847868,1798062639,290893845,487190589,392123258,1812945663,936550188,166625394,1491365999,1211894477,1916421553,738090566,2017351001,1327350400,1303751302,1651987994,2019493608,1443656290,272970051,608761429,702214609,1059158781,1678043926,843961209,1944503692,1956432792,738857829,1652359839,1194240460,1554214765,1896916982,1488489641,843073341,132618026,764902489,667139510,871966916,721836463,366720020,582710109,2098195230,956600947,1997581892,1783112507,1832139092,1142160834,1159060134,1993784940,1648693984,266856151,494315265,1564427483,865442940,902866268,1920161872,1795104553,735437449,1657921726,84705354,942928685,1306581052,1298641111,1286010763,1309190609,1871007721,716705462,1128455162,410507272,1427879952,729465941,1869412708,1409355624,1367991290,309832453,890438819,1576045471,1736513423,144516446,994623528,647584927,194032144,2113197133,695569346,820756442,1029411253,281346377,1574927372,339273085,1453065382,1015700477,44469092,1559479000,1605615118,302207670,1340705548,1195471084,1076301290,1279057131,1501190972,1793135017,2069274454,340060596,2042281089,638991792,1551962140,957461275,381730639,891154528,1556791855,508213029,1361342324,279701850,1611246586,1627992575,2096289277,95197018,881988824,1078667951,1940664445,5337514,87120185,1080403980,88556614,1769821418,1323988084,948688091,1542662761,1177926132,433537940,1263946189,95242413,1538969996,151345679,1211858427,1288196953,365291289,287615459,823303865,340018285,1066379865,1417236314,1795219659,1618254183,1082487972,1244981928,494115230,1867008623,639987548,100217742,146873972,1883781132,104098827,1907593609,2084674610,480881915,1504190544,1338351007,734758144,1637433859,1804195339,99999963,1547948684,673976461,34523645,977764232,298283996,273298540,964893227,1025625006,1517535095,638223494,1651093438,1228368619,1443302906,1376956706,1884476897,1037464185,1577856198,488989593,109478415,35755747,1747589622,371911542,1596648843,1644077651,1622980957,1256068995,1037186417,935132873,1716481362,565842705,225786565,1102892634,1288346213,863686562,2033588591,1317956264,376365655,781830465,1919852967,1031596556,1904677985,1029660972,764270793,1173098208,515866686,580040716,364089249,2054775658,1621548613,1585281894,1749734902,1005214864,1527761968,1022825747,1805767326,1401573853,1064083009,1943034899,1257976844,1269621405,1017666572,2060864736,1877986519,736286312,146537815,632870783,977137996,283996543,815084463,80424602,784657992,751322145,1836663377,1314290715,1873565769,93526304,982924315,1189500537,598809331,1612304702,913398575,2124153184,1372307963,1199891690,411180455,55850513,2005070328,585875630,2059234279,1016627346,273380403,1701587005,1506325972,1575098990,131896083,1262426109,2087527282,105486241,406403918,441285823,978585528,225287068,1761767579,1362664631,299475118,434012958,375492094,1482988043,1480525037,2069930269,2013950657,1790545436,49305222,1613284984,71275624,1963090871,1940352575,847713175,157983212,1965936142,713056689,891784022,1694164763,185774461,142272022,306191692,547245717,36761045,1217853529,1959348452,34341683,1951749854,276821000,1668509905,1521118957,1380363986,561181852,2044424669,164033439,819095182,672348143,782656240,449253,1904790833,656359293,1988655515,1715864034,1401278204,1384193020,727999138,1526497367,1414779995,556171678,1940975860,1780842557,1683036249,638083921,1524561264,1191992431,1934392053,200109667,1093477106,1063943398,106487598,1586210147,540177346,1905080034,1893226175,1688668372,317663696,2046436406,1930664382,1406623653,117148737,808571207,985045221,1862850449,1341204308,1686820759,2002133532,332955930,1685034975,843910246,1650549279,1033816252,1658714865,1096425789,220540378,385758568,435738742,1900164754,1233564669,1713876328,875832460,1662557331,847423371,1546689349,429283737,372710946,1992462763,121165904,1757521188,563145020,1879809038,1024546081,2031836142,605679598,1643102116,1646973205,131424104,1865650989,758805177,885055821,25988801,652038772,341044335,2086904131,3446382,1051363472,2092342856,318935450,1350346844,516942286,34142863,379665066,795663816,273130511,1107903738,526795736,1969648580,1888463109,1440689417,1230154710,1537328161,1415062798,2005329310,1470631664,999171349,1371036278,605413663,756577567,346589917,1542517346,1765109020,874309057,722613285,1490858703,2096411105,618838107,192804323,1117690649,401633705,200119909,1325270625,1447908016,1919979438,1486715573,575317204,273752722,1022784310,844473183,1563413995,2102928290,1810629508,544302768,482402626,1025846174,425906114,86399882,942737384,1419868944,250722849,1728566083,526207319,614927073,1162066710,1083954120,1589196704,1883188432,1698832141,1816857972,716442566,1848957439,1042143939,1173447611,1039289247,286414459,1194577505,891648838,2051941292,1510342637,2057149008,514087547,1158954198,2092265466,1556001234,743470562,1929625507,601609931,1676240993,1712643199,1378255731,186046783,591418756,721841985,84260119,721435246,2005837850,155008982,1464726067,1311463412,938490532,1758089022,1476833477,871605304,454575966,686787399,434586198,2039647758,1879646328,1474314752,126638037,1705784978,2113929280,1301208397,2050188822,1993425658,736240133,1806031712,1436529339,606045899,2041875352,1287929987,1986853012,1680646405,1923334431,464728071,1381481359,2045376185,1080030734,1505760291,891210125,273236793,1919270528,1914672023,2112609087,168096593,893149957,951917038,17191952,684046876,1600892432,2012442001,711479053,286715196,2058009618,927035501,964275192,1782853115,1440342325,278842393,85440575,536716435,417942233,614193166,931972038,430120870,382101726,2068843674,962915003,656856191,1063280917,494391261,1119397685,1362555086,1773060125,1331302722,230857362,1811285198,1279421678,1713816148,217285597,1025305106,33755150,117585325,1944832543,1905050981,413902688,1053344458,522481790,804103411,1001164878,1410081658,633539457,1493239673,1335442139,2128469255,94694135,839170001,1799281584,2019862606,243949397,567140078,849704490,690722307,1444068334,1868653280,702575674,1430205075,1030544764,1934699690,1187354535,2065661537,166353047,1544487943,1562747041,377510076,830083916,1958419785,1256893956,1327205332,111377167,1132369027,140233684,1570167137,1211610261,652218919,930817237,1018871313,1962433529,1690729458,992106429,1256812632,1388562773,141468585,1300525400,1354781075,1596825765,1471210137,437157824,12705373,1120216539,1269617818,1617798308,1287457313,899068157,156222202,1533632449,958441106,219314645,478402980,969875911,2088153633,1660310210,693517560,235571702,533654,289050821,119449725,1207869484,1968801612,692114384,1504867865,1010149474,1221255719,1861761599,1645006884,1946978301,712247121,389658582,137655059,477652201,1873720926,1206393321,1887791448,1741030804,2096563961,1611104956,1862671871,1925826612,2062393299,1461055626,1242726275,2040731975,537338576,59715136,706586653,517256849,660480377,1782160733,1663483246,1722402352,4957725,755928357,28274064,415990009,255774069,1153804747,730504041,465322057,1557032335,1041512314,1799852861,1898850734,1551301982,2101079463,1047820910,773338719,2124806319,1818878461,1124998348,1312972803,573286473,1152639138,1954732283,1419893598,169404846,1330179200,888769644,403071080,561370716,361208490,1476572915,1276078110,100682358,363914741,698271126,1713104829,1020536661,953306953,730927952,495244335,1704659617,1550044402,1529068978,1173500758,1938337742,1850872540,1742024698,1893482530,915481981,959487778,696140330,1592418397,986002555,2017333600,1769609441,585482732,2117810017,1656459571,156146911,815634978,830314063,421396271,1611503253,1092969297,236049034,272838295,322668159,188948470,687495108,1795196191,1782126644,2071925714,739530122,1700453411,559280335,1029556181,833124000,297319420,1433954248,1942158393,1157325680,1202334483,765845034,1525088830,95353259,1110346563,638619606,2050280510,1665828425,1411721819,635781449,39759599,1325840443,423650194,1503929703,1700832763,2052466213,859744385,552645073,1123998890,112138370,638706381,1679485004,1624776064,1743874170,1160102786,1257036539,16201079,1903166092,1457279691,2028557077,1658007503,1019633772,1031537842,1870698786,2090655073,248743136,57101738,220571154,1249022365,1440492324,253572087,1298026892,533466179,1298349502,336523660,784117697,1882718304,330800671,1690275530,16790882,346201772,119769584,1845753729,394212425,1991317543,330632540,917745300,2011504928,1381053445,1926335908,1639303292,749178173,585376100,1401707814,1282751093,894243074,894088966,1371569429,112628034,449959010,192514085,388701873,1606160230,591865869,2008624678,1137806215,234494447,2005918118,916078043,1872040638,1950924106,1285999987,23189672,668355751,1399190909,156684246,1398515983,1286467229,1120383861,736150848,826106488,1780558064,403525738,965520405,1688269379,1459954003,1450577147,1060754748,430843661,1108494802,1703269644,9219378,2045534875,1381160553,145303915,959560318,848584536,737472474,1111911710,780696931,1567843729,77263925,1962783176,2051638515,345967586,112762433,1170994823,267590946,1866251931,1397897682,1978112698,318484919,1448237855,2062036423,1737137651,945840152,1416300325,2117337970,1371921893,1036906813,1007335630,1145937117,2000628133,63236638,1440022610,1722292786,1215367035,758702554,902418706,74374270,1066267983,934056589,1258773066,1244578518,1950177247,1837983850,1425429770,480410396,418228412,478335822,1914539439,2027507958,1179840666,1028752961,2112463639,1095171058,2063559959,752141456,2063469650,1628792523,257875834,113566578,275134905,313077446,1850470998,1026762567,247450906,508073911,2096765534,717127601,1536654291,1396473149,1861062578,2025403556,1703831263,2057298928,1431096168,946706520,926124624,756969836,1344946438,348242922,1013498739,1965456697,483698801,986914858,1405500787,2059460409,104509195,1603526838,1716526158,1019819416,26319077,474554793,1221715476,1678024996,588505709,532106313,899031221,721507224,1096849979,112936264,1778661924,789848137,222365251,1003053444,1676105950,1437830269,1030011580,1483485982,1262346023,1623093336,293771112,528698855,1090002761,1568987491,929080775,1718577838,1100770437,1311717293,456841253,2085915567,176547505,732381902,1550248111,1733418012,1490636800,1928671744,1512294898,335562643,1672186821,349810610,789051141,171605476,774432106,1691583849,627430730,1969323440,2090070915,188591040,1854454614,1874582863,1304577668,1565075940,1119304297,1806635362,853818579,1024845233,719774601,1920090935,246126265,110579052,1653746110,2045041532,2028832608,774501249,1834638955,745660021,1426741178,107703082,1814443492,1817528587,855751503,191736353,646858544,956086868,2125314369,1944274060,66370121,671007300,860610530,1794971340,1171393465,1248279765,503194397,1952532739,1964627834,967157787,462315348,1111059167,657654882,1104189832,1492368493,295556017,1723617510,1963294670,1045294933,357930691,753304053,1573121064,2096964168,908829702,1523676835,1204214032,1639750076,1865028995,245997019,413136248,404617888,1725115427,1333771317,1277317579,146761252,151253075,554906420,1364876964,670059433,1869625746,686477031,339653835,20957240,847371485,1779590231,210249022,1250455299,1850987820,55933026,86556894,431905776,547576510,1745991036,1780916933,745344608,1099315393,744407992,1971258340,1391204564,1988455028,948778195,1929440260,2108519167,532325592,212143851,1259959098,330939605,292716110,1767506996,428924473,1451549406,753184363,641085336,565579116,1624544588,1525899991,202904334,1624700937,1397707787,1352460701,2115764073,1869253507,1980197418,1208475710,1383158314,1574270011,69487153,1604353189,1638714507,1321136025,1086960502,920969454,1220802833,362843631,2011343173,1394945869,11652950,261202603,466023730,634306693,1285000708,725393245,180826570,1171349454,273279279,2120662294,556061343,731285615,287517961,1033502284,1091122232,2120538767,2897251,1066281620,1467640513,1513069117,1107198935,895135597,1041320178,1629249833,1310833500,90158473,1570962339,696300744,1175997653,203470044,1542370332,1365383106,412649098,2110311819,1764985099,978527894,841036544,7141675,1049372039,555199108,1184874450,1018572543,168698437,513311088,924285962,1955291173,533748255,322902363,1493304363,1575463530,1085800496,200341845,1832155793,194301383,82990108,1094807613,496592884,1923748380,497979767,1363912352,1563478576,355901102,559651277,693679290,2047305167,229242555,1819044215,1703993327,1352846523,1329623097,1265421912,1904398414,1020842289,855101509,1925820237,655968644,627582176,1707349846,797174748,1168592726,73695908,762780300,1936401173,412346849,1221710566,451984637,116901790,1380194518,127169935,614492735,1951059534,1764004537,547009381,1366945769,2628695,74585239,1274446665,577697867,566887237,1145742083,1189452368,1885883122,137398633,1641627367,1287965897,21232822,376441080,1917593157,1666051214,629671264,601426003,1892157501,2036262616,1429801903,980339151,63129892,1343287681,754465500,278553232,1337864318,257252893,678996862,1363981380,787437193,654721574,499576466,2055856940,1119023281,144173570,346982509,1678433941,725036664,450919725,887872307,1989506827,1834055794,514837339,1840869317,232079799,1897536903,349466229,258703314,1614016150,1835760714,136561309,2113129029,42334663,267677642,35606893,1175941570,316919868,1885556852,1962130342,1390436665,1928000921,1585782270,990172742,2007018974,184463415,1599893928,959190049,889173456,1205788051,2003191309,427978446,1247441359,1172035872,1201726720,1983581295,722996191,1559728298,1651097959,1356170013,1060038522,90449066,734743668,41574802,1432211403,1786330123,682050624,979190381,292106910,222223872,672114504,52331548,1869570345,352118093,1530570265,1318885930,1400581882,491168527,755692916,429366968,1048388241,33126407,1198616402,233852937,38865417,895942116,1931536307,273513346,968972859,957670333,1796690040,1086642985,497458265,2079565647,1074318543,671591434,868364445,2029496382,516207952,599353201,83882968,1822641948,730101610,1264275674,1365379993,749066830,1917474368,746969646,406756692,74814634,302417277,2033111647,1303176126,225166249,1438741941,620740933,313806354,2112184862,1869760413,1879682922,1725978859,1410880120,1011032072,1567702441,273697813,39978685,1075149071,867733856,1421427887,1254425849,212461381,1664747738,757364240,1856815330,1189823585,1260421055,868561047,2118572889,813249142,775654643,1261144779,1549765310,1976944002,1158902763,492580586,1861898043,1253828887,1179154994,175936597,2066143467,24632324,712522090,923573643,753838180,428932551,931554978,472543780,1982806775,957117943,1861635789,1534776612,52443347,1890865942,1591983519,1623861528,947749438,1929571184,1630779991,684808410,1240562379,1004242857,1521328940,1755996347,1626400246,251840566,1024975376,370939089,1248857336,1290632811,1587999626,1728983567,54979058,1497805831,1620217385,474702880,1867419843,1413786421,423206207,265814031,1368042119,668989698,508363853,2033278876,1079450531,1485276175,996498314,327038847,1430693892,1134148982,2112744596,896216653,1260657885,1264566498,1229774549,1104194155,955979901,2052637802,689448299,868297300,508723164,581306681,1048402893,956691596,1022173234,1272849325,193004065,39967876,1706469362,1193066758,1125615820,534678420,1305525306,505463746,422913096,329625763,1672002959,1116841625,342942865,1379456563,1426996029,32802979,1751407201,1696172327,1960820447,638940569,1694539536,877742653,1551843579,1461187535,1098191446,1276567223,1937887386,1805248978,83362355,1879990231,492301624,1296171131,1975335072,1657133133,380801073,1427568449,1126388866,897534364,1534570956,1368511989,414429953,572305885,967530800,1155322144,966596255,1543424414,618171018,480260839,513490651,2074997967,1658429903,752453851,1088898934,1837998830,402198476,1993397717,1470185059,542063556,1160288116,1773242034,948085179,1875092038,1657764855,1056494805,1756009779,50609271,1073945982,2027523418,62039159,1121340258,204568135,1366999785,692728904,2035442125,1311073829,789607439,1969183225,959805327,659229662,1667479725,1887982295,1431778211,1502745083,357833681,1302207934,1103594736,2059624380,188058846,1405288418,98360573,1299367661,352206513,712522685,292378329,195517529,989814116,1441027605,2029028408,459725092,988237837,337538862,797747984,834798340,883708995,1968034634,758265517,1221470037,721741667,223561008,2119059940,2002580949,1283798288,39976575,598624871,1406724931,1990207530,298388156,1701352605,1139320086,829161785,1569982217,1399861431,1857235918,174607116,639490731,361077059,861905488,816656694,227650634,1090671927,1894433380,1640930111,1543513221,1081988945,1644302907,261145470,1525562193,1382451087,1476547705,265763228,989761204,1209536634,136743348,1374539350,1178229377,806888444,1430050345,698367279,834983403,1752524577,1309910289,1541688862,1497301880,1392107340,760864744,1294196818,907089273,108646142,1400847618,148042644,193649724,1315523889,268660180,938150089,1330672836,399970864,1604050734,2047624297,505998496,407483898,207483431,1676515845,1451515336,1432780570,92153624,2037149054,47950679,315567326,201061624,639775511,1749108189,1037352458,1142852504,11163998,279889706,2077965148,607561256,1887073800,1413562253,2102731557,1894824557,735861199,1424048972,469842141,1758140524,2040536914,1066517145,210117855,1517029593,1917230082,74350237,1316523478,883010008,856883756,1850486621,966826898,1474067111,733479878,808348584,1363819757,1491968989,1099436702,1721125198,312135059,1735139227,126286685,2039958088,679049002,486507294,179622190,1843298036,1726761192,711060216,818551111,1236534758,953179239,420876310,1595306259,1691768333,2119047883,1085869790,531675795,86355929,285387960,205210595,425290931,717861997,1886564380,1732957754,1475536013,18210618,669986135,1063996404,813858780,1996160161,1897096548,1357836276,2076214918,1435539334,1996353867,1545201367,1800019134,902257686,469715327,2052612376,72565060,652312741,1710153751,1251852325,1614522572,2087685255,979821390,518542046,667838540,1463378357,972682546,758423978,515189874,168285016,1118030793,503024181,1722087485,1942260532,730770296,1090878771,1928524753,479247336,429910205,241023648,467141450,1956941976,2073354891,550869511,859040797,449537867,1671639298,1845349834,1323600800,1406867193,1655807619,320844815,682004661,2074772832,1718635859,1902049840,1337337431,463232116,1057446618,52878958,1298867662,1986988623,1690244881,489464732,2095955354,1622273330,141966085,1573181262,193563988,1691771348,1705758584,822178992,1356947166,1774044571,1613904448,2043202528,1767388137,1999963069,158788995,1860214952,1231573268,1990784527,820059347,174516145,1144275066,837046974,959154500,783825705,2035804573,137210224,288349103,1842278772,508771888,611792020,69580525,1412152797,360842270,257810608,1366907757,238604028,612898674,1548262884,167279102,1800239948,1540101785,350404052,702233762,2092383256,998826584,853538018,1532792714,1700956622,1478214042,350743059,1954768149,309051674,1510974239,1214083694,488255410,1687078518,1017911140,1477004610,467561388,74274271,1785290547,1532698169,1892497567,1883171992,1447396376,1348669415,675486987,34738385,944723000,340543410,35416441,860268528,1842467928,809523661,2050753385,433390885,1141359788,837910960,1410679235,1121478572,1796978709,1111963919,184389358,1637726168,962383782,1285476783,1605495173,1788839023,2061919419,1266222519,1966187485,655197038,186680682,642475386,963919472,1852508396,1976390663,1257642830,1131364586,1890471805,649398648,623964783,1849204182,841234140,645083134,312922868,878933054,257066657,940145173,2064387522,569309976,1566665277,813976637,441240911,439609713,1624174891,111382741,173738996,1580153176,728648670,534337309,2018059857,1918228417,1842284931,674007412,2123775427,2053416738,1929997076,1978501933,1349873621,1947001142,1948762363,1080059427,1221150599,1752175181,1567994585,1236293992,1387767084,1587948626,1501449684,555675709,475226869,2048234379,597032474,42892208,1066949538,200537439,905833048,1890490896,774923152,160182242,880821888,1969173647,14087334,268976231,1145660287,87932087,1590693395,23535504,589945916,869206222,1974487041,1007866575,934290685,1049286521,1930980087,1544057935,1971312375,49734907,909434415,1675496065,700301137,1510525379,1647973746,1113799288,1758068493,860158663,1320965353,126048334,1451831154,2032717286,1435725406,319313042,600991527,1074979271,322990262,1250729658,779397516,1037573669,1231525759,633808420,825030438,930569107,546111017,1914123716,67857156,1055889743,1952428111,114259099,469423054,421407222,1148712172,508456131,2049052938,504263556,2002092901,320438773,1569535542,157641166,1980158367,2108968691,1570296386,58523807,1422981661,282557216,866161320,696696290,1005265851,1226212178,1963261834,1042926827,2011794137,2113570526,759151552,1955972497,1439964651,1344232210,277037428,1661436398,665150125,69099833,1001211304,1379194429,830826468,844822713,346099492,78761026,217100763,1803751569,2035508857,368534582,1573778372,2116209971,1026668090,1121182795,1341424846,1133592967,1504881988,1934968626,724852836,829556221,1536391108,2016462784,91336754,854848000,1822597203,1542790176,520559759,1264476731,736150514,1443460222,1182940904,660682477,1696570679,1715969741,701485178,1881877920,1437185056,1545872757,743967003,746010952,1040477593,602011088,1314226966,971067322,1073085751,1240782439,591264200,1416104851,1091803843,670649092,309129928,389630640,591827103,113486926,468017434,1971940741,497185356,2123966507,818579739,1042782662,1562628324,1641821803,1192638448,889682503,1171923923,1029730915,1104890305,1631120407,1797804891,1844838993,1369334836,54530677,1757998111,1065822917,1912749378,198798958,141074998,929680096,153124460,1798419361,962774781,867799902,1662387973,1769880667,1246372592,1159382182,121918286,2029324612,1327159561,1442199023,1709977389,1012870687,1076692219,560997460,1476743681,434022559,1322247412,169400743,9249826,2060214791,353021329,1072838282,259657041,1246207375,1545694387,2079030834,737891826,174514927,537321172,519542975,226888445,1156784583,1068516136,1202780105,512670471,1186748587,858440428,1788422804,773689095,1084528559,751139058,1049434974,767552035,1063610665,307382093,270935151,272873302,1235662502,357194124,1843999441,531444108,2064886444,444940054,811418704,988368113,1443313782,1868477605,1551887828,1534469609,1184853103,2125927325,462822013,1130567572,362477849,1080259152,1259929719,1469030455,1571664033,541989726,36250226,145278190,1643711421,2083542156,1783698960,549771077,998426401,385371523,1009275249,329854981,290140020,454241581,238458772,2099623304,627000345,335584523,1380066216,1618963496,1158222222,1091425983,1413736589,1688128623,424017348,649681488,960821581,335155888,745610590,183714305,289637470,248484614,189298535,288443133,228932220,1412312498,1136095270,1769363758,1764469550,983456626,1722779652,446669497,1344121430,2081738907,658639142,621089809,292808794,1521047088,125360260,435163368,1062145097,1931536770,418281991,1418843536,1182391125,1270646610,755658083,1293768347,937691345,1089612023,394247282,1924125092,1813585237,1599326975,86346562,1022193916,2060849096,1905594301,643804680,44641822,1682782348,983375164,1865659957,1454625244,495898283,1479413711,924024235,396109351,864806407,583396234,1975659845,531051014,1017404736,564627770,1043318957,387638742,757423044,910411922,1700475472,443839937,978511232,1864078041,1495463513,1720262813,354678445,834517647,1118124484,1335183777,1062631125,792503513,1945545464,1446763332,303513445,786756693,1836904503,1610518439,28125939,25942583,866461002,1444850904,1621306047,1270483764,1164800674,333400237,174047612,2066567337,1508885360,1216012262,24836208,533940301,596385758,90310538,718519965,1445611539,872841381,424833343,1651846563,1522260280,1586569769,2082781316,1746991667,1717793026,575024641,915768485,523501326,2024164293,906671376,1353890755,554804419,578003337,995846887,668913867,181836251,2022789951,1830534130,1758941063,1092256948,2129545491,1725148896,2001010746,1135371479,551683470,907336804,853435057,1271131077,726846026,166153486,1165094106,877101731,1935711774,1643850964,1301236108,755439132,871400270,1212570215,1659679122,1874704646,478492991,629208144,1194965733,1303382868,308417972,266118470,1078762730,1839601809,1030138966,714928139,1067722973,579068272,1521488592,509674527,2068024068,701862977,856894600,528785078,1469134548,543615906,904547268,187960115,1149435057,1591248342,686313117,1256486553,193606688,1218557417,825123566,186777571,832502284,894815264,1862439727,1141085282,1381152277,951687635,1209942475,506415567,688202087,1247190109,1865042459,1394075600,567979396,1732341861,1722034495,720460102,242240464,997614809,2122758123,1761278942,814035103,516431926,1335503593,1066508483,881099967,323692086,744142792,1553563660,486176956,331359097,1235491134,1315351594,1133790462,1831725685,2092522530,1609713365,129630649,585539700,1467847883,700954336,12503442,1551077613,1335796981,1821358515,1909518996,220553962,1885057568,148505624,976151888,2085100460,1692375269,1469111307,1546352509,1683293587,1481322744,1280000520,1760301455,628623913,579487188,1246536,158952950,1789348586,982733016,1711672296,2022482200,73113983,1966773370,1390118369,602930668,460003928,1471076825,1999009577,182573103,1249921192,1536966445,410086808,2062391340,1495986926,1767843585,1752838638,474040024,116051682,1559444519,755293797,1928949156,418403667,1829436804,1096875822,783744613,363052638,173505145,794306737,1084258721,627855320,845725025,1279825549,2012703274,1554210835,1430147997,294261749,2090789053,701549095,2000727433,552664447,1158261705,959848034,1389278230,1853931758,1456636447,1848850990,1005460970,1598645662,901856489,1681668235,250392516,124681835,735941647,871579871,1376858232,630560919,1423703791,542088269,575782603,1141202073,774960530,1011728645,157553489,1197834526,516043620,1957387788,725373350,582744998,514591748,594663366,661303190,675152740,1029965105,1099516869,2046508644,141206515,556560348,1461529333,235085962,1431548506,104140239,1956467714,1745772568,1228572410,1109468151,620531508,2106759246,167273556,662814970,1528186579,217191867,806053047,79680918,87543570,1758389477,323173535,464099972,737685437,261741616,513356269,1109966999,1300438732,1013341076,1581678720,799396812,720794453,728490275,1256521187,1988238292,319260217,1580136800,1750285527,2025785401,1256568881,1786002184,1472038986,1474905973,1982259682,809799969,750069429,563013758,1781121172,557564534,983525231,853908842,1069005956,1012446347,1073123752,976805180,745843167,685957844,794717391,2031504325,2033916467,871879688,1606950781,1647188683,1926194946,674104586,1504358223,866483828,1953704735,1926154002,1107858290,1992218253,12019363,616401054,1461451057,690219278,1468845017,852955392,1468934960,293295941,623166482,1617041114,689481308,794301709,1089158537,1009086312,1498167776,1515017664,26154176,206507173,318346995,684541574,723996457,792931560,2065980512,148180475,1898553153,1398928507,268284044,488880409,1993120916,127434966,520167888,1399086559,1754818558,1778872631,1708186796,184406596,2085693080,1333373867,953273452,1933093100,125253244,291334837,290155212,2049359905,1828361990,644637896,21456710,951278793,1268172486,1746517985,1057145185,728299899,1643468915,1872167066,152712720,308289688,1074555184,1298643694,1236668950,1400229209,115295016,203881282,428102915,938548670,1089995821,1514193520,901055476,1146852058,1243949634,2074583390,646002003,615219920,282855640,789947987,60385730,1884903839,587839746,347717380,1208424381,1099696339,1213816650,701329004,1185208418,1022576812,347056545,678242194,1329505232,1486293213,1910458365,1672142703,1499674336,1969901861,541174060,1799036196,1041581120,783797511,1277946342,1966963312,1406473148,1909289920,543801882,511687992,665732478,499989610,115529037,325188878,1508739913,879162935,1508395862,1496264171,257744281,166249290,422855845,1290048267,1738342466,65947243,88692176,1452327561,1963199735,1270770362,557310411,2002144321,1353072700,924009644,1994159267,958912377,1397162484,402282582,111297055,751073017,2034279032,1858628754,519239479,1374041871,589246994,1518740049,626538643,1650437804,1801897430,734444704,1106822661,1784672512,789668090,1631395564,876199754,804874212,1990550297,476571839,963017033,1961328283,433265311,1450176440,561179978,1621698441,1605754145,87916582,1611577220,1886443336,104178158,418605090,884318487,1812386683,69292536,440076865,1167317668,1543965111,389036023,1208134816,527445303,1357008693,1117578022,1816958884,917581683,1795891038,854168008,871582382,788137442,1163104840,1370968255,1468996616,2104585596,174180459,963227230,1202613558,1017015632,1480174256,393805060,482051092,345660793,302458407,1417074563,671258881,407937107,2068238697,187958977,683618865,766794927,974363846,436250277,1895839264,1143280878,7467949,932279626,2084475419,1041005331,228444328,1354759099,349205403,1369495487,734750943,1799401331,57077638,1198524109,505071578,2044490446,784172833,653475904,1654994079,718917805,688047287,607466104,1806452003,541020306,53448637,2031781385,1383350200,1390279033,1253109030,1511619029,1655047543,1041628620,1341625654,1401982938,1553272568,534962472,2037834329,637653328,550954873,1978316750,552638869,1173741558,352081256,1270634348,2078491195,1463744287,1413653565,1487136337,427168501,1753172817,2108174461,1722051071,1563842258,1224488471,307933461,388128491,1609168810,1453085725,364223435,1272530605,1517059939,1154195595,558233542,639169839,1244205230,292115634,1252125993,1540597624,1259736580,501887483,1783518657,890637466,250837697,2029361612,229991798,192460246,1480346007,1823409956,1925806227,1667121612,1626632523,520641493,1372635137,52958347,73569905,1275589277,829866964,227604099,887209499,2092393310,580500744,620905436,914120085,1374316808,1243321740,1406137976,25437669,457793983,691552681,595226042,1036626626,1910330529,466314813,1866143331,1773905121,894560235,673444025,2111155955,545461466,379205742,213440640,1924203786,521775066,618032811,118019254,1641997008,1517137320,475833848,449627970,1294389858,1393699522,395233153,884995548,1065652632,307206515,2018193660,1508540372,979374488,944548811,62140331,1123247834,906704349,2104161602,1253788560,1722659502,488697509,1931157497,1737202619,766304350,2023790769,2023959523,1004999048,401163906,1593678041,944365388,2038570572,1440717573,1631233294,1643578234,1740936723,658608839,852184250,733764738,1088097875,557180900,1788620761,842766633,1444865970,21380139,154619682,98781595,894685682,1753579771,1162542888,1426612531,898991549,2125709538,732613132,36354629,2028578486,1120918174,208941267,1559393726,487697818,457191574,859038880,1476691792,1217617026,117958555,290178421,809131492,1737514746,736863374,523782342,975995344,18040877,697643932,693843743,271146779,1683498736,145298165,68250053,223896912,2084538234,2001429324,225086110,141785097,907848342,11328960,1494401438,143416167,1470663519,940210244,936088839,1018289519,285237828,115638322,1265928303,829194939,444481539,231584391,974688174,355884928,1361054887,1700602450,337549371,573835232,949308384,526547319,522230612,672293427,146863231,699049113,812235755,1215983691,1541245682,1429031369,1760485881,522719524,140237357,565114228,1805285430,9608691,1794856824,1745933987,559585143,2041314208,359333759,1219496718,1638707330,1300883124,279925752,1334673154,1180528298,1485243682,86624405,1600065312,791606716,2117667705,1241370580,106489206,895485013,322999649,1316625682,1787695310,856921121,1439932441,1463147100,264181665,1668273411,930289840,502990492,823994255,1553799964,1902004263,1930467579,1053447834,1802724982,333060936,1784237284,653271401,1435230715,1759860345,1232558118,1715236228,1621171189,2000236752,1759083976,1040616958,357393393,974251688,1887549858,1269052044,1086558619,1747996588,144241972,2109960071,782726456,213417724,1678250111,2055795607,378509227,485148083,2107646391,1382772826,241065852,724951928,2084980420,1407414081,54601592,961082543,1159505240,1548845514,1550693557,67064096,268718838,1420382983,1508236713,807927317,788346218,643828346,744539933,1837481708,1333652019,1490432064,1831243641,276751773,167761183,1719896325,1389821041,1577808755,1074533491,1805307110,970191075,1600144065,1039484341,290641024,1619571372,410906025,1789339372,808058691,964557388,556037245,328337823,1031396863,2077467496,1691634035,589729214,1333991872,1611647551,790518375,1318325325,44985707,92208299,89570741,1515428151,502153762,1857589627,1100922727,287750378,749735452,1760872981,1708403472,1844214577,1166480778,1576042964,1966574086,1117926973,464995935,1512851210,1575620604,1207709063,580156540,775055908,1939211523,812243927,1277637517,1223652976,1618374847,6099832,270170243,948643807,743419444,889551964,79722616,609154559,1220019977,1886986706,1684626085,1711541799,907207848,463585911,1278071401,702021638,942967278,330900699,725485471,1460556468,1625881403,142144834,1101880147,1084087270,1598346648,1772752407,1965033946,979532243,561120425,568456006,1337803519,738429362,60750284,2018693280,1206189134,1421847242,1903830135,771209429,1605991560,2027557590,1508628098,62123546,1973142254,1400621606,902584235,1076166500,500383783,429215973,1732041756,496613365,1444043851,950743794,953129393,4926665,599568300,1932554212,995736956,546924322,50454800,1627833673,526202847,496282396,1547689108,1448106426,289437075,1640384436,740337633,693611200,184864115,588002619,177767218,1202144983,1930552605,1152779020,1175452559,512141721,357707155,491373260,1855549283,2039043199,2114603098,1410746741,1300102940,696270122,546825962,2026743699,1011738263,1727970428,1344809015,699919030,38041122,1502532533,786200933,18653922,1686950366,1499641972,2033440372,1807774325,184019098,303846567,1445251996,146892417,182616445,238642176,1704392062,1818446299,1940823873,2098618750,1711288086,1610298591,501541928,1345738989,858451057,1645731663,599981414,1960808445,1517672672,1123874371,1816368705,2078850659,1471946685,803917335,833779968,220507611,1784874804,158610779,760369787,676036908,807396039,126211725,700906987,1863010129,939951255,267447194,1881999051,926165171,116564439,1031366841,1443218819,1180912990,1387154914,1167372510,884733799,1970972924,1299339251,1132909788,1181740578,1261919850,1822228416,303806708,557106431,1525990449,629147659,313109829,1907593967,1643205328,841366285,1751039283,1686363614,1561152081,2060844913,2082013556,1698011130,1206894991,468648872,1454923991,834260300,1067918260,839296295,511899118,1374204635,775338114,626282980,2047483949,49510811,1529659506,1903113995,850823207,260607230,1903336886,1351197552,576679125,707343826,1243482304,717652092,172847921,1447180511,874300351,1456351853,1494695069,2052740828,312072802,631191753,654026717,326645761,705215423,659914965,592104656,1409791212,1336008279,999123555,1593297350,1629167792,200849373,1724167522,551375719,1904658621,1614302704,970043056,1022120372,1287029176,102143547,709037534,773965011,1377249705,1984562428,1219078409,370298354,1450541007,73466588,2071524963,940864356,869876585,2102908445,1084055959,337308581,1946674652,666482727,963990935,684979315,104549023,116996643,1499637297,1778408728,701498272,562246834,459337722,1860122263,585205757,1099091429,1103774685,867573814,117249805,2003887194,1839833246,336115952,1903741916,2018049688,1376217686,20947925,1823720494,2030759926,816087960,1367241716,1158452229,2037202810,439170735,1487489344,90149073,1712436194,1730781078,804648214,1872745612,962028169,1804517581,1459361218,1981301591,1272733333,571612974,1837850414,2052990403,404317015,1952972109,809056710,1589309227,836056589,995005257,300500806,1723438124,1154432598,475714161,1569226534,466047605,327030697,668130868,1954488822,1608084989,799192553,1022085320,1268631386,1858589009,406684967,922920934,1435886236,1763673279,1636687886,1027537726,641500186,1416141306,1627655874,1115281491,1603774454,364885745,1161939095,355831504,1389708823,1350021238,1222217448,483421298,2121260695,64123397,1611630794,2106539867,1094205292,833947214,1073942590,1600074900,1740285099,1289269973,701941372,298958723,1321632424,439374829,2074752233,1777248532,2069714752,1842943940,1215848052,219838018,1294735364,1126727780,328817527,1721812077,1272944938,970647594,1399164567,1276133383,201289722,1178333116,143854812,121722454,1536952468,353703775,1357633734,1404919589,867249247,1581715322,806398023,1757589175,1348841625,1485857493,279542812,1772634510,718630465,1054006138,1041266892,859282918,899489349,593700751,1042542827,678931602,1505347199,543951897,1411882997,873205376,713820067,1426084291,831959075,732976685,802589592,1067095384,1817418135,1358749524,236059303,1620970688,1340886709,574608280,256171358,1097857443,57780678,1002576593,388010112,458792865,1929614427,1215511921,513876278,2059564206,646809848,1266086634,112000019,1702976513,1341782480,236113293,209834274,551842879,107671753,1766315789,1653091772,93229666,310613999,862853934,213555527,971123426,121002142,1515549186,483696646,1062783899,676800635,281466064,1369821258,129574612,1605750904,351435333,1110081425,1479598547,1990752262,2081837829,991927898,1206561331,1608638980,239597404,1684849133,1187481898,1823966617,1080504570,2065930524,1980983018,1690498111,426497798,674426272,817744344,1054659009,959203010,1611309038,1036408549,1627203484,16668348,1087113332,2057460858,1692588268,845644222,281331397,428427028,989417866,710409054,1250917671,1548018724,1176366068,1660776733,820239928,1465959142,15845244,1918711435,857820631,1176847757,1973884262,1215813218,1030030548,1902188907,207112450,1393357696,1784680610,594283916,609713860,1243692280,509905822,761104057,814595088,1870612231,1645961648,321957450,698128588,1472587021,844544367,1008705655,43464550,1455112889,1212574172,1209898480,751158694,1823898944,1401909744,318408932,1677257977,495575468,977615247,293267104,427646228,835237137,730410966,755863691,330470598,607217999,695814030,1520006490,892831191,1153529743,554655597,348683419,195196765,1852610146,1221449014,1453320000,1762213746,1924024743,1432861167,1398066278,2114787444,142623013,1711164034,1157872999,940440238,1815487857,1694822833,449064801,194971309,1285514825,1111166771,650074804,1437525329,1113215553,597930266,1257665487,931648290,617440821,1027280638,1374001539,723572751,1392549519,638752055,518118033,519968045,494854250,1637267855,1278875672,194373897,1840585419,1685461272,1342524232,1004684358,26361661,1692083965,1440633095,144193744,85164631,894226581,215890470,1630214082,246710453,1439320858,143309100,1953135186,341484073,1290099922,299214383,1425837603,1259700661,1349629450,393080051,679785741,1292879548,1203789036,2005476343,280125858,1470458683,534569991,162742697,530187480,955050544,1205390614,1964838297,1751700812,377963605,1506390063,1865541855,1741108454,1883723675,1739223461,918390855,162314812,1939571253,2097119247,875047592,888623764,1928217956,2106271885,694048162,1337280165,768979620,1302723774,2025709322,334090184,1518413516,1365859045,1400407617,1703749667,894757948,106549897,1452821913,1802344150,2086787695,1712740029,1558735227,129453589,1490878135,142334124,290355663,1196245193,1038073927,718058674,2033005730,1316839864,92678073,1191890459,1123756984,494830676,781348049,1107824926,117916342,419889089,129658658,2105755584,873817675,212490557,121094002,501463480,2047329498,710889223,726273783,471354870,258572952,550737966,707842759,1088526860,1736930355,637131375,1434021884,525602483,1059608528,974631623,1382845595,1913213299,1544838447,1584516744,718903502,237691167,1121680169,705894256,497754424,358053825,1586563154,521042196,145398769,243094711,2026093940,2026894921,1141010269,1698147233,950079115,216140607,246909277,281730398,1673391189,1548485653,865267855,137943754,791106562,413063100,1783599294,1465467180,1617246181,2013183268,1764786038,2079217524,1769233855,538204492,1390085001,1564708663,1868512747,416270017,1056418219,888321330,1831426447,670477508,1937357351,91998291,1235279148,1517024055,341617885,1617165479,1638504180,1661957120,1348830665,165455895,1811699640,775646303,641638929,1059381985,1368995176,1356959420,1870977349,1584334815,1304701525,1180287939,1566997747,548849167,809552918,1937218417,918048057,1031441071,1773587829,2016142630,1404325775,631723387,2062455067,596823506,477874839,44636689,1734901133,1752092267,1920191327,1122301474,297560870,749992788,197018605,965842386,2028235688,1401948792,441659007,1912105161,188332901,1878831215,709169845,895007721,1707857464,2090147805,1017642209,1851350769,2115412413,1574249169,2124849389,1053465982,1444248607,307938639,1121696435,803023374,394605174,1708893188,1827107861,1545536582,376231511,1384771163,971383982,1480683190,577740690,1749935073,585552281,1028942770,1743076357,390518763,1382336581,604419645,448394579,402490664,1232354168,645594338,1195509405,291121980,1895363085,2028807025,345574760,1030525996,503020103,1120080507,1808850893,584097582,716437192,1131835067,480559616,676795725,1247570264,1082668617,745399466,114378664,438574515,896512445,1445027345,999188132,1681995698,1847809013,1453971949,1904414384,1588206222,974072181,1788089753,1533331926,1328202189,837208318,1522728444,265793126,562404543,786313400,575888939,1685024105,1733528393,1491867533,122742806,209348931,1058180099,898457748,703395212,447541832,820738861,2118226200,1328758560,949259388,936640256,1744616387,681705104,374015144,1346354630,1666503575,324168460,1713012934,621779460,1516424080,1224628475,1718791085,264609116,644565836,656871622,1032672896,1265988756,672302865,463599699,312791268,407545574,1036277002,706361577,1898385382,574234110,277772589,1142718163,1095694569,363773205,1577818889,250454344,442979760,949604062,792995953,314121164,1516658191,1898131887,471940851,503525018,885086152,771262122,308268395,180567625,960184431,1949903864,1768870758,1489391943,1169894355,1955050945,809474703,811639579,1277318781,1417129425,320337714,1666361918,757920464,1826913298,2071908104,1425067803,789581503,809604148,1939067240,1935515909,1795165585,1675321857,774327973,699387449,1011521761,24597814,2103432433,178560323,1271032558,2066306888,755115941,1870049896,1280241159,218228343,1998400850,801607944,864686578,885482184,487151625,940911509,504049251,718217330,595612165,500000360,97749240,1103965147,1164794667,499032866,2078282926,153387725,1192175331,579948521,772670974,966366409,195117924,420212417,179186012,212695090,1067095625,2104618026,888761821,498250384,1560253103,561172880,316536377,1393822694,1526460064,601140765,1368011319,1124361457,368882619,1673451870,1676484090,444307500,1787342082,1126898371,1085251806,1809400487,1495830760,1047455102,1073593782,1787143356,437007743,399530803,1928355584,753710872,860885307,1291851973,473355165,1988760347,1667384914,1685672383,321075549,85611540,1588141337,1100678405,1320795363,51082972,931687626,1977374563,927918339,1064776567,550899400,1957887578,688219854,365293586,1819142927,259524615,801471443,884725028,1282295311,464598750,446757207,464564157,724028967,2002277844,1638394921,635532122,400983415,1775336911,292976620,960641360,884395298,884579046,508348801,1387521054,905921420,1032565172,831344774,2117595282,1243513714,1129111441,669061325,116856993,1875560034,419740557,1201627548,1062375487,413849104,1540729029,1168121046,753089639,1420464787,2114052062,153799554,1413145565,1005898168,709379737,931581270,416542915,1938507920,1399199291,399635486,1847457472,1298651105,790482141,1160958783,2072037587,145867005,1571642121,1928161568,1474901156,1543617716,1998875757,565920018,2070354729,1222365769,1391368764,1961687051,438594500,106385868,916927506,687934602,185878150,717816002,520662771,604621310,1681316842,2030707482,619290178,934230709,2089874426,1107226894,1502119248,1135107864,168458003,1286868868,66268896,739551296,2045918914,305005898,209987368,566179360,1210832911,1926329624,1336697094,2090881941,2095765543,554219205,2084189192,1773939694,413010781,439750926,698005154,1818659603,1470067948,1754072208,1961872518,1974439450,1933807234,891615407,1526300258,2117401995,868809432,1150095958,1751748467,957085342,449442279,1627639757,395195431,270423564,1052110197,746884937,2008282486,2018603210,516388231,1560089691,1789961640,1293639497,543599068,1493259044,969893945,508432054,1415709158,2130526980,1412502873,535662106,2093484898,1419700898,1101158608,341905028,1132670576,1727771193,35168304,2120179931,60764234,392677554,1429922518,1450837385,1704886400,102932912,1970164712,1281615683,2003369144,1737088704,1953994960,648489714,207412223,824655277,1601358075,284668266,1513426834,607561782,388241364,667223041,726463738,773894267,160408563,650185843,506846526,1777947928,2034797706,518667812,2001256031,2029590197,1742243116,1160832272,1059792948,54012925,1958162221,1602160781,726986731,669046490,907705044,1705869166,2063553475,990935921,642065284,1125896080,1439719505,856108689,1499273263,809412755,1561511894,1214336623,77666052,317942468,890529925,1286901374,1499977479,1938743649,135665558,1733609870,1003307604,1982840070,571966484,1050494004,286099875,695279772,1542899626,948489333,1227942590,1603745305,202159365,1772353451,827126060,584722788,637295385,524893253,1471949102,1816733159,1597087479,378103125,2074055308,1714920301,1546513258,963783917,1556769649,1708805170,1930065180,622119007,677263071,1028488134,1177780606,443221181,371610675,1575850016,738529571,1565534494,1118175377,1900038968,1006362868,1624837853,674410845,1592599398,1851022170,1160100679,1063373558,1409167717,401059483,890849987,1795822314,762000185,769188127,1674169810,1600014505,777540205,1949869477,1660439461,714140403,1000435674,2071617951,1150718784,217016830,589206517,682809618,982824751,1854241527,717290510,2036936155,1190141585,531865758,430380886,1564131980,1346537915,2004065599,1249626663,1886474004,394823431,1141693509,2083687221,1995174890,443154666,439893440,1708656289,847605244,1295528980,1987608002,130746944,1752275933,980842338,498617326,971868116,851631445,139003955,1109144849,2010361400,1198573477,587390576,335484503,1800874984,785977551,3187093,1856639493,337340306,587499764,473229441,207567849,1357729082,303658827,741769353,758878744,709471560,723067859,37508062,517603997,897725480,1090785104,162443704,87756306,699006511,1865684275,470925029,488253158,76548033,1764283467,1846299224,69335047,1933132155,1964465280,1406735723,325153748,1810775350,170528,1075399863,833054453,778176238,1205754544,758076900,45019404,1430473481,1060707579,95306339,96108921,1947042858,1416602250,1952967775,394231065,1976522167,1795040966,2008952309,1037236908,1615984256,84692473,1404632145,638324988,1489252827,1878730674,1736290850,555831220,348742528,638733561,2006480369,1040622127,1480079542,575301885,459608893,1683350916,1547221087,1169348217,796202088,946179728,1474811574,1158121679,640932479,798803415,928928845,1448783318,618157471,1412411543,2088722756,842995422,1667236359,230532959,814761633,1849708846,2016959125,254820687,676652440,1964130464,672969,535778201,1894659490,1397395217,29981567,40887728,671771880,98525256,1606726643,1654129973,1542408272,2022246911,683114245,1238053679,524035668,600899500,428208786,389527714,1556339524,1783477752,101707952,1467380321,518370316,1818534516,787320031,2016634507,753880127,1304190743,749513470,1195085485,960859433,1502929460,553752744,543849829,87445142,1204290820,1239855050,1687848598,1680828235,912698590,273555480,1060799372,181110076,2105256629,300206113,1499955851,854280367,819864979,1151531718,260178182,201686458,1624376536,613699930,1648576254,1917118395,2040890492,1595074842,1615595119,692097725,779278660,1291986200,1984850867,1934505306,999347188,93883520,1423270799,724640687,988958978,1230332883,1603908896,233247992,1495614947,775125983,1853020512,1892937520,1237708769,1872359824,1900286480,1001377754,659120772,408605143,238153214,1314729470,266139220,1651180594,1505494882,1690643186,547962761,533598380,257143381,525503989,1583217938,1437071011,1964152188,722132363,1588256522,1070679573,478901559,1258650559,1605756073,6613501,1118497691,1093350159,901112413,1936723996,1457834847,1794710652,639082456,1274578118,1808864885,1297574864,1691857526,2063200091,997861086,1102026530,844965682,1227184038,192720343,1526191747,747340903,661481349,871053340,1086396666,1571912785,1615480636,1821505642,2066167772,137031466,588947751,257832823,1269187256,1769670811,262833946,1667154243,1642666302,1400274115,1054418551,691370800,41750230,1464742628,1231355582,1734480805,812190154,633150639,1679031313,2011990872,1774440538,566155194,1215830570,927728630,1168885790,1378495947,1045862380,176450633,1290172779,568573945,1556651147,1342646069,1673015208,327745309,626230770,954852105,1232199369,1648119754,902093395,1518484105,1041232912,1316782785,1673274017,1826502651,645053320,1467079130,1144566450,939909835,971944074,1520161700,321482562,1360186757,763026816,1874845929,848846908,7998140,176541976,1742702461,1182538986,1653912662,1916051721,1881310757,2122863026,873359794,710718775,1703950369,1957186004,303700309,1461260254,1450607951,1579349744,729087533,1611872914,609160799,1296833803,1483286318,1678714246,1262766380,786003898,131503376,61289336,516193501,1684080418,1442405397,1976143784,1086115120,731653148,524332674,454082349,1900136908,197952049,1372168283,588304849,551603794,1085109949,2030653968,335645132,1493910080,1637606505,1407977978,2130191891,156637727,1119665878,571934555,1250424840,1740186791,1525003423,1079707176,1819005773,1986306462,1887134349,1337610052,117915767,862711806,1601590725,1800831015,1874444590,756552497,1375487362,1798905461,549854370,70087323,854216065,1764352743,279653543,1721813839,925143062,1628414858,1915309788,533153567,367686589,1730473677,1218786543,854423697,1601989056,1774069616,1251593223,1328880635,1585405132,1636036099,283589267,2019323373,1479483724,1628286670,573430127,261391456,608916428,1523387734,1347752508,602408300,1857127437,742337001,1425883402,780473088,1185803876,999880642,1712433548,1850789520,1332012683,1942222227,75752097,766532498,1775567155,1088328486,219987819,2079708608,1171144527,1324346887,1563462190,1194166729,411045041,993320668,1355591631,1652657449,964689735,586086792,1337251765,223762259,408599685,883174860,1178982424,2033518179,856417748,1202217588,105257354,1937081058,2117960571,321109727,1457854701,2081968586,1271233779,2079159755,1076513158,51950847,1276966384,486002970,516387324,1394049006,534875746,1659828932,1758704472,1969554112,1641534624,971677327,1958275482,510716774,644973639,1361888660,112705536,127467552,717834147,298886231,1806129695,1391924216,396042329,817679255,419226156,910667243,1326715779,504474191,907668601,261431314,317330768,941772534,625878333,1637389459,2039484,1026956372,1578071138,1037874722,1558841386,302761548,152377928,1764894553,1180349047,703458745,1807658550,2111199370,31754624,273648001,1781701705,1174738603,1047893965,2082554811,77126609,22082630,549035384,739612960,1130971537,646700638,1144344981,1856969156,1910431639,1459595186,572326502,1821044149,766345967,600145599,1344086110,1684688770,244694269,261125244,850501270,1403784382,1133418795,1854162614,162241027,1794738001,578505653,1560183548,1090956057,1501400845,113273276,525655516,1483809074,730700409,477532718,1875770912,1267179052,1018814300,1332942344,1022359326,470862042,1743362194,1577419665,1637459123,1824396647,2093807044,1485169161,258932098,671167010,1658527714,1788709769,402456016,917100932,360910350,1996045334,940801359,1003728235,1180717123,1992672204,1729149408,299431574,1470628941,703286263,974943885,1897678925,1690295066,1406523676,803866550,704229681,363855776,1823617766,46425853,378903768,517873579,87694738,1174736305,1918709023,1293995649,1599596624,307212732,1051447291,1625213865,1965495356,1487255301,1341686588,1265808223,1573762483,1640265041,1134177137,830360786,162261345,1400301815,530078601,854435383,1834591892,476483255,385720787,159712378,1959389129,1989978935,261844944,750632630,1612825117,115354720,1585832308,1674135201,987428619,1526639405,1058540534,1409033439,1554188503,1500630774,1961839016,144826559,686288687,1292567704,1722271561,539354487,1857240271,827613464,86914687,976165767,961128267,148184357,266963306,1159657193,456506967,561189533,804604018,280989096,1097147978,416666585,1464172437,148499089,547728371,679008853,159313040,1297238175,533479221,1348348609,2096517045,1508896882,2069530869,627061237,1487931331,1616223556,675855281,1259530542,778564829,1654741336,372198763,1659461673,397459914,1627689298,1758880536,1326692859,268288794,373160403,1372675712,239753292,561844648,432594020,1111920454,21292957,1052537197,372944522,1927704488,1445714894,906633346,2120189795,1702412396,233083837,137576672,270642001,657627405,1564400344,381341864,1821312429,621303321,1646143431,977772712,1698236443,1226296645,1919457936,816098079,1677141705,1438022781,892373969,87338423,1286294800,1385685587,1748484430,1020881793,308665711,1073518145,663317078,572419038,1322784144,925419858,910068401,1932136801,1069896964,225985647,1752669544,1368350703,248853404,1761104171,320702623,444538266,1868323333,2031592157,1626377563,1745684850,207331955,2098802659,1977168973,1989687487,786240007,498751240,1360516813,1349722297,65387641,1856130427,1565356603,869375672,1540308217,1948742992,558929816,955598218,1135648517,1335337213,49662995,1092396757,337673380,244016536,382185474,399907030,299568233,232607413,1907576546,1043407966,1776284272,755963388,1523047555,426384160,991144019,1151308841,2130278693,541389812,300133808,694370316,779401886,1689207409,1669758252,611525258,702134774,335299336,1333190836,1891684588,452949885,1351815944,1880530698,571608715,127187611,2056604551,1307935180,2085974282,583726934,958433361,547476002,41094064,1291232359,1888579410,2025799420,1571243451,1622468483,1440128049,1627999395,1547666350,1497170262,2051293215,455817242,2115979010,1120362913,1398077211,1000063203,1657630220,295298177,211543224,1590169427,1662919889,1601225342,1335757988,481757305,1745242735,1215187311,1659121204,934292717,845138787,1995818229,532165751,1395163762,286039898,1357186014,2032735320,1695617641,49240686,1413072728,30590184,1553943233,1497498846,1307505105,663007830,663119489,2081836930,203198025,187564577,430920651,2038650097,1672101083,1746611489,463988704,845812921,2090766598,846157785,1830314002,1560823157,184550620,54671937,1706698006,74299139,1798846049,1069887653,1995805728,1585746081,1734359369,818529572,928384478,2125484890,445385753,1073198940,243674003,109098103,1871271753,593328485,900225126,2044498920,790051943,421723537,692172136,80736936,1503395797,997987,1982173159,1997126002,180351873,1900596583,1573985466,1542072925,1040018919,872947179,1345231063,2033340204,65052660,557746652,126667055,2091843761,371169566,275030167,747310058,1165699872,934555909,1608043112,1687469891,1048855559,1265106825,1436702890,1689229228,651759651,269272785,1020568084,1913525555,1106713067,2049850259,1594338515,1303327472,1999274587,1845290517,1711107667,1660258399,83848561,1397169029,1520498023,16571015,1088328452,477135448,1437529567,1286861192,1223471995,82937209,1922199309,449309433,2099819368,175664400,902467415,507198649,212175747,989152230,387752669,299802884,1688176085,2116929050,572367654,387061608,302379121,105767103,264919246,1080116668,981684262,675579370,627949009,593633218,1376162773,1169291052,1207010706,27647349,224364641,329593488,387727502,1838803749,2087573111,2087836336,904999863,1985744833,288781360,941336632,2050067358,1680845962,1864713048,1774679834,176369365,1092132368,2101286385,1398257579,839323197,469239378,1878445825,1684858846,389755306,953402294,1261071629,364266007,2011010604,1573114646,399310220,454604512,1975716726,502779678,2117126156,867602349,1059231042,869769792,749610199,1897577828,2050457271,994705843,1482720918,1201969449,1225920433,26488940,1242130876,1954570160,496519258,976803621,316672078,135551644,92903338,1078739085,1356087799,1986924450,544308733,978978248,363659010,1779010556,726186986,378111430,703407701,1305051358,159701639,100078179,76708566,1817062696,393978810,506339723,1529487160,1052335856,1955525772,643973237,1988070888,1109977864,1913397589,1557637455,341617449,1165082456,1773547594,198378452,2101850283,917342852,310348854,1936815536,882178306,301682962,370755140,70914815,864653754,696432338,37632685,1504429577,1880299529,1497935548,693574486,1105920527,678261413,894388172,148812037,1123507007,1628814717,1669148862,2029922624,228659061,2059570658,1021006735,48867488,1200405151,685315995,1582407467,1193357022,301106163,1523249609,702207332,1452844426,1206621312,1943887424,331394105,743050562,1167829954,66057598,402343302,1671094160,1085736924,979538245,1681963119,2118875196,843343191,1771822449,1320872778,1762291193,583405700,61225608,1882971649,1306742920,1233582940,1433503013,731591978,1175294424,1802867059,1948070827,1720033424,1922835226,2096793411,1371176608,1806597429,1253988829,199863715,497966804,1234023097,385922449,416458160,1812373525,1149351952,114924311,1613038425,1957028047,168809780,1445169201,170208123,947962756,1915515707,142955687,2074931015,626651740,1401543855,2000442487,1270741130,998332279,531847957,1875009414,539436814,2074376533,1977092736,1648723837,1776448812,1307185952,1847308155,1620549049,206473763,992616035,1431195052,645019771,1867843735,638074167,638806430,1673454255,1733632391,1861670246,1789212303,1105905054,520340191,945249587,1405518259,2063741396,789282931,1242416496,922221859,1034860430,631944890,639945922,274227695,1156295419,841750578,1115506872,545381274,506285300,1003458335,452940181,621717093,357979431,1056683105,1400017288,469058583,1688201892,1955938616,2004174931,2003617320,1283932724,714169294,1905293253,36782740,6920469,1273424737,584996560,1049560276,1352669452,1817655846,483807116,347096489,91014525,1684381941,365858779,482201997,658159501,912198546,114593963,1934490291,1877749862,2048720891,1739874289,1167178605,815879439,1009601378,594677743,1121936769,1540606652,1621057367,310225670,1216243218,809178109,809501147,397351052,1294998001,2009338752,1122099637,2123067960,1089191367,185187399,1570566064,480508679,976611822,523587953,2056618477,1405930178,1389473408,1870633105,1485606978,875083450,309620508,1027350217,925124944,436557025,1536688607,1610285137,30994127,33004282,329226485,320226837,2046861842,323759932,2090171110,1623447763,2021035310,880524879,592573110,1713707600,552137280,463737016,568112013,1537915876,2039573487,1720676152,1490391712,156792389,1476087061,907584711,680538653,363142465,754526209,638754946,1406981984,579189061,171113419,1259676891,1819454629,1219762093,680985559,734461151,1409183109,743269405,1286804675,614516463,50409642,107053771,1233565960,728516021,1863755845,1458920211,1210807988,85356892,534053150,2029932665,1926776504,2083493262,619305260,1782414160,1291587017,2110415105,381380295,785094665,670276393,667439454,1404740254,126616051,1834351969,596109814,131098308,1574711893,41708250,36359305,1375027240,1080763874,251089277,1387914203,1585120979,211339084,1148393820,664517646,1991863557,136745148,134285378,1460449623,144678386,744661761,1076882921,1863949616,139390841,1988864007,162100933,468955224,1754988979,913166557,1431428644,1229788319,822211034,475129235,1963716612,1869357091,217958999,1615682079,462448949,949826322,240683527,1914605596,253497583,1445787161,2120755938,2115142975,1675183259,1751636827,919616746,1759363907,564339224,1879296195,1761603204,1657071349,1185997575,492942534,1780701429,482414750,1706281017,834021061,511266387,1360694342,802645957,1324144490,2098627185,582322672,1253320185,174883252,918080360,2114401192,1104904474,997757763,2047351278,793041435,1236532607,2040850184,1329504058,509458677,334782822,544847571,2080292684,1207769532,477810009,64738997,247059900,1835336014,1977900266,129409151,566180190,801802058,326014612,352642053,2058337869,1671775663,1024394980,619582897,1865909492,1807236345,223968048,1523676488,1662906050,198674499,460446628,458241261,46421453,749305489,1382117565,1673920639,1479113191,1101430219,1944067190,1218308448,423094960,2075095611,1289578650,70422635,439649877,762529886,326934329,2011348035,1397863488,1179198331,823987916,1204053182,1979674228,1062491039,950931226,352837141,598135274,211483527,255719446,887847915,576756032,884323836,2070661711,540888263,1094702467,197336496,1066727105,1191326975,1077022527,351129792,1443305583,1760774124,2117411079,947410704,296696340,1865398198,708074048,746993862,1131148162,1326522528,1021358758,274511863,174069129,1644435109,1006781917,730734878,1332814931,692417514,417039520,1559350247,1368755025,1408449455,381403932,69494979,134704334,1964101092,556372998,646560168,555555462,2107878525,1214068344,1447670100,698572125,1243124146,518808440,280796377,1720528346,1641404032,852916782,500904452,1632673206,221478494,1311884013,562296990,747231708,1609108736,355464273,2029409880,1484139535,1422468779,780478058,1698017356,1048179208,657794460,1483365207,1049729234,1550921408,816694757,326042349,291048870,868092982,1661829965,502716415,1921133307,1165020420,60612050,991095868,1078464479,1388553323,1890887001,1584384777,282670285,168227402,331854829,180057402,378657477,1355178721,1594531895,99877924,975037614,1319539221,349027249,1536118014,1511376849,1748635929,192932846,1921369925,300262036,1760954020,972498561,986561748,245890743,1053190634,2104026943,1922866121,1876933920,1559907861,328243277,1890621997,1180593326,1254749754,520350253,777112657,956435799,595928232,2056896073,1883588058,371497957,333548772,599695578,1831299243,1336343980,1101162316,1987618264,1115932862,1064899011,155107206,1652657371,395659832,789044257,775175022,431446374,898479866,1236109863,1964723457,1658288742,1887950184,674633276,1685878300,441709910,1629816962,687285089,1268718490,689090232,16108125,2009978915,805366217,1446307066,1509316720,460538980,1918513387,433610241,57374131,617584739,1878103803,22883308,1275259290,949990516,1998118761,1073398456,1341625664,744655071,1092740608,105315154,1030334925,389351573,1273700093,1622475131,167974604,927478359,1718760913,247999276,1729379189,1213880635,1134277893,68509216,1989516700,1167902653,100909231,179987883,211663819,44262738,621201725,1590017058,1463199025,1369658334,1335481000,1274765499,952206745,583381259,1613788168,1185012485,1243847265,247272817,1681550587,860321203,1545791383,1613269545,704168645,1017736164,1673632468,896144660,805113343,1933185387,994746501,1270667930,808241012,1576927711,446024977,1461249680,930335784,55546602,46819086,1707117441,1119177055,145545191,578624462,73691900,1163012234,380767440,2113089645,817802072,1354800918,2087116864,1014042667,1914480916,486955615,1200073713,71949902,1252379223,151120314,809798592,729261774,1184708844,65953060,1354146684,1228816067,1724447379,2063939661,1504763920,696645332,1430736134,1410040355,281808863,144596965,971338053,2105831448,2014135500,986915326,1813444613,734423038,1470327498,819276678,668936087,1317129747,182560516,1018465923,1914437781,1237673023,1223169633,1245290434,2071929905,2098300290,383530447,1839772828,751552153,1288796028,1240886382,964004600,964037615,1705757600,49938640,474329013,436680904,1871345342,1941158276,253645705,936071623,1854685072,319614719,1789486898,2019163663,1804896996,1188423633,1323141704,967450265,258822023,1211937071,1362624407,430688310,2080251454,1162628488,239126768,899957476,459483429,1913888114,1353851198,1628738077,1851159943,194870673,1794841288,909031277,843371655,2029761535,1793732502,2093388034,3863182,1323929034,1258659062,151000087,595413082,374280396,2051235006,403781881,701805767,164833267,249445074,2036359255,2124707121,1943027011,1355932510,1366924555,1681777703,737948864,1259769944,2089344366,1554396337,1657587347,907098698,1349214914,1626803758,2035331787,448577078,877603934,1936119072,1409246894,2065892026,546600175,1769002764,2009939837,699129509,1325430123,1143646569,2043852895,1398109863,1831753825,1123196507,68162562,1282589518,1908994212,1853549383,163485644,431245415,55053912,636802858,1093034540,1196897416,1855482882,429621830,1777774314,577217469,818510775,906514784,250457319,1760115917,2119905836,62846751,966167075,1110320458,467662909,97386530,1967110694,2035006266,1470874464,159945702,1584530,1214534540,2096416922,418985243,142044156,427031189,16999447,729100607,406760124,1822995268,555153152,2079881634,495295390,1444314453,254776752,559649275,1698475852,725596167,115795940,633114137,1312917381,24044655,1078109704,222784329,888293061,2123966063,1758347095,1486932506,2054695499,1018218343,1255667841,1723734657,2004326144,878303993,1580449860,2076194636,1024835079,1933051529,571112844,1446490583,2117388815,707348987,117863685,1779934882,927737200,1043839961,212814084,533418455,1506658406,1288618390,2071850584,1820198553,598749774,1803760046,1627510961,807329647,2100212498,1581049769,383208591,81490505,1435778078,1334967487,462012534,1375918927,1077439904,1329736455,1596117385,971703185,349778282,452198262,1860293315,234896760,168600941,1581023643,1706245070,119557620,1370075317,1190246119,879481256,74536718,565201058,979642502,453361539,266092414,1313030439,1069051839,837518606,116832437,746483353,1026211112,1587703238,346405776,2038851735,784245884,683187509,1627646083,956058140,1990292705,950944275,1968616496,1744759121,1791562171,339525269,153447570,1364135877,1532052661,174655074,1511998134,1519568463,424603910,1596757848,1705750877,1382601982,1552889128,63295427,1683495764,972538632,1233999384,1382712747,347770187,660289909,2050017230,1645496503,1525188797,1774886156,803999854,267676630,1516540707,1852887503,431324745,1993684740,1248588228,1822791352,1011594492,381483634,943113383,284194354,1352568140,1602788232,1630693469,1363496275,1463729785,1088014894,732400986,615963017,1581327852,1736468379,2027695112,647062475,1078665374,180359397,1070634961,1048619658,572241601,1342930658,1174824781,394230269,1654838860,246705089,66901541,440840681,1159899876,1281942949,577562604,1557001375,2001442597,247187774,1357307167,990669273,2037457318,1343774288,118078312,569783632,1907946125,493770198,1213845424,1023528170,1770482900,341294674,659100035,1131823019,1076095915,1235898801,648724879,714703861,542209589,1742952105,1076738280,233662926,2055107873,1964675266,726199993,163219613,844707162,1092948354,351744738,2045815816,930906115,1386318086,621091339,583495486,490982271,1914188240,1376028393,1697975476,911709160,1555873253,561074684,1632536870,1995191639,450899499,1811000875,1986481040,512732801,77061405,793997009,1657805499,1762540314,581302775,2106617507,1362912892,1070490200,523894188,688711236,615297051,1661093431,700107634,873493099,903392045,1959446525,812048056,1194384870,471394815,251408012,107498698,320803298,1495134238,982472288,947588659,512464671,2074664960,1719012082,252189060,1776697609,108889408,696905159,858503885,1034639839,1002964351,1715420859,193824755,601096468,604835866,1070104407,475567743,1783734580,1698167072,1604879792,858227210,1066263476,1037772504,493070838,445440368,906403317,1016876777,850004817,318279831,98936256,2076656412,1739141930,1829535229,1296387235,1242379173,1865623653,751122123,1150307178,1667340830,1129807404,1023867335,1061805563,1632020076,2119295776,866121018,1227565282,1161126003,1627643495,454059663,255095447,1969469492,630428879,387089609,1836702214,1247659342,370249915,405673629,263743834,2089110491,1232556599,94651358,902900951,802019822,1032159863,1495236670,1729179873,526236007,2088819954,1209021938,773299625,782533268,1514265569,1674151320,1730460181,146223506,1972171449,2059283395,1407687830,3207528,978374870,1516146429,1657186532,319255524,735555111,1565848188,1155208027,1934633059,663494348,699202306,1847435516,1543129360,1007481485,299230142,1182617866,1829037940,1598482501,71131580,1426140239,28264873,2312694,461809478,123064538,332274686,1072075949,857191795,1106845704,50618192,1992359801,1369265908,771886316,3059764,1594524007,960686232,493517515,1269562800,1140967341,1363685982,1283501401,1365398634,1038037860,1175038006,1762988545,101088701,793342075,2127587850,2111434815,541786073,1004273427,1682687140,37630100,1107184070,1099031253,2063124158,637918393,1521455997,1970887372,131499936,2062381618,223631346,580307938,1681951026,685010590,2070564558,671770595,1479314448,215943696,472300700,72930821,1616980090,1735035378,650782367,505826266,402664171,485463785,1216510403,1361850980,58952159,425605362,1787000176,289995976,1410322976,809571437,1400431125,1180956804,1064770209,1764575655,1000088768,833055118,930225395,392287217,1727681109,316109103,955859273,1412567159,160156257,1713307156,1052187225,324672774,1439333857,1286868872,1713076904,1821914935,1577085095,1073874402,238976002,1188701016,1408490260,1046845893,1263073406,203618199,2118641449,1415001511,39127569,478855509,265275296,799351129,195086998,1251087106,1480894251,665205235,1527419431,501791168,691052144,1411232626,333603873,145447042,1875655602,2074948103,686315634,2009399003,1275193086,164443159,325901449,68341556,2073276912,1304920600,653640012,666767763,145523568,1018333908,1225284109,1402730785,389838273,1879337362,388324317,1613366326,2030742630,227849397,835159324,1815206369,1918155685,1868493028,223519068,23719035,163886093,1142886833,182160575,1218045918,1815044796,1061793853,1329564247,373689389,754660541,1005629432,48412021,1908163382,377696082,953329746,211931436,1598562334,2088989270,1734792520,870190845,1546314343,1373686663,1397772532,904835967,1829305157,753530039,713655386,1573272830,1096260768,629149203,259811617,543044299,1936828883,409448014,1398329134,1103688649,1546456380,304799882,1926609890,1758721509,2040350762,1313875556,714793346,2038709152,1656151113,561470916,1459952421,2033949855,2126888628,1417042669,1013602974,647278916,1450572197,505663926,511714731,1980163363,669203511,1049712923,374441506,964563668,506593135,225962216,1788479432,1366239056,1424163282,706763746,1442531551,494799569,1761238374,2042321255,499726825,614425874,1864448334,2068143146,1030821106,1027051520,985008045,1358512513,491155863,952909440,1413264305,1833978328,1576845836,1700045035,440847588,729962546,1233326440,891330069,1733741652,1592810550,623918271,831643512,1929924172,967170801,1507099406,1331556830,810864233,913353926,623535035,1089823383,1479843059,1224980973,1452419530,44358953,1898362948,565420653,31591098,1633857009,314661751,24964713,1478173172,360907146,639926392,325224663,1596043292,851073583,1519550375,315821833,1507807188,1899862450,1590974561,380350477,344867691,1933562473,754006050,1858935045,540297378,769272277,1970281198,610993565,1390266862,817376406,16944559,614256621,738411380,1766070782,117869260,1081229738,1913678740,1309173812,1876730288,1952851036,1425469053,532769483,1894141641,665834714,248755040,1912687427,614332018,20957792,1491046698,956855939,268274453,1178559734,1065747787,1546252946,38541674,851433388,1602658817,408109920,1776858481,1620638219,392769690,981817454,294629024,768893251,253227748,689504023,1662881219,1799554700,671766868,1583346400,1783665581,2009216579,719003734,306315912,1278191856,1595311750,736162036,2088738189,773262506,1083705348,1282170268,1134777336,1081865988,750523377,1340374525,745946067,651996717,1627675551,80221723,421915996,445010881,1459102337,292141950,1947172192,669057436,1982273291,368900102,1674104757,1342774362,1524074921,529012942,465618690,1374663954,1061734694,166196477,235315708,1783442973,2068798967,1699982375,1023278002,1108505553,1963497452,2037305638,1360259595,1220693082,417379977,1949611611,40373769,1792760494,119770229,1224218639,2013726559,411067342,991820951,433768971,2001440284,891160780,1388102962,691952263,1793805208,1546908995,642735073,1041685377,1299203770,551157827,1088305787,1582909191,1488567431,1268837721,692894475,1671790682,1045501051,1563331001,1913918182,198642053,466623389,1714844280,1703345723,1715958561,46866613,2054428485,1250856006,1681679216,44042124,1932127280,1558380589,1338943244,2032267176,909643681,532421678,254262246,1005734255,518727943,1262667060,836462782,1052022142,319529664,7236973,179081884,1351730376,495707686,2011939036,903407990,1633444754,1894662623,1241987174,201236661,1098700117,85095487,1912577851,1042106653,637970057,577319963,1844702305,1315638668,665741882,1960095574,493654979,804647607,247953665,63623498,1232929869,473463379,1103405622,351710865,1496960076,16103586,1978823288,9812815,1476440478,1911775212,972613145,592506310,1974913407,1844656914,1421489200,685901142,1316598052,523698286,1211362674,1078328629,1832539282,1244751273,1716946839,1696249880,393602614,1173586358,2044918461,475520448,1760789288,3428303,1128357035,857052086,1884054187,841897403,1698941703,1363385564,1753635908,905698219,109040614,2092768958,1743791643,1362866090,100252820,234229007,1159691344,1027175643,523480057,1572250727,1179236043,619002270,834931201,1362583572,1084365178,739094897,1945578734,2068381494,516643181,288878735,1871391352,1700303916,1066459137,1569631798,1258339213,1442813200,480151105,359559531,1449478883,1845699871,245915068,362912808,98715357,708049136,1467850430,243847564,198233288,1632851650,604537179,2092505001,1438213880,441341130,103878680,775725763,731912166,745920786,1185070685,1447224200,457712528,765193217,197592357,578617969,433549089,258230610,2054641660,1607826530,1880264507,1617470873,1221575288,505284664,1272859206,87183910,1152445469,402621395,1955705565,1152338088,246235053,438254694,1195489112,369521054,675915291,1704606545,197166148,834311239,1712978574,1464190311,1076825138,1203805501,2068035412,1422427595,2105897091,1001467442,583526700,45587118,1497883721,316160895,1463094339,1987342586,1399792232,130046628,1740749226,1023729742,1748105573,787159520,658636240,1250788025,1842653460,1250342371,1378559668,532309540,1933222533,1779302384,1713822604,1567036229,993880251,317152467,993123349,1520145553,892061698,108851769,1594384484,1266983354,274237469,1321575790,1051914409,2091857980,884204740,147696573,1546762952,1315020374,1119389308,1336446145,1305855716,1993500320,881358057,33462628,923965111,732508674,52936873,1018793432,156858339,864281235,1009783416,2019510704,363672256,1247159864,972812852,69390268,579140685,1442316807,471836683,1273942353,1437023252,662701193,729552762,1695761083,904491599,37315673,1987206354,1231078899,189027702,863856635,107688612,1471552276,1079492075,2129475609,90516216,96350679,439605357,909199367,1591452411,254895092,671462458,166222229,1794645541,773475923,1590238268,1702732454,1587435078,2078320813,1096624242,65316311,1641651925,390898922,2019878935,412983759,1722385339,1393591036,1188242605,1551414526,1126685451,1883245302,713346407,281903214,679123502,603805289,637748515,1098548647,1263565980,644492100,1456691334,841190451,1959097845,898249331,557826860,2096844132,1661210820,1857374120,1260642952,354199018,230484024,2059637733,371823144,860826770,1297264178,534870975,839662794,2028650239,386029363,1276913340,357550986,1526331791,1685724413,765035637,1524431107,881516134,234050446,508832900,521063754,1013325664,26741521,598118445,720614,2097264256,1215938779,1543063668,591902112,226834987,166481490,531387308,411183744,1476240052,1249068735,88683663,449746823,2004873112,1656245422,263515880,212430037,1627420919,481726303,1386172453,965550225,1720509806,1529314273,1638928336,1408864629,2000817997,2091029136,605437589,1364889111,1672515650,51533076,628028659,2068837340,1785995120,675466507,696662571,716043485,654666015,1954957620,208229708,200953442,1996553068,1630020420,994151051,1304295876,459308569,1469393896,985533462,1669376462,1883781217,1733559965,1306855367,1651867421,955282482,2051796633,1061615091,455792703,2075383058,1059568965,1745165268,586759854,217250099,1242765215,1024523437,767183698,939083594,1854600125,1279058294,405480594,2068873640,1009438912,2031239859,1417559693,779600049,639356117,1823327176,1578948665,2094506922,820322215,983569687,420851822,1645386610,1327543214,1759262446,934078791,1064714042,533417357,1526196021,596838437,992487916,1920789552,215760513,441876692,1991347591,1705452182,1525178785,1005370760,1210138532,1394550680,499512444,267137919,158503405,2037255429,1326963583,843178922,1317965589,1949740878,1985296249,765781748,293425006,715047297,727261542,305630925,877898122,24874594,81417782,2076866417,637914685,1460421049,1596593227,317535717,445404245,420421693,882114131,1072251773,1208236532,376770331,674401503,18252013,388768986,502816413,706985243,783639372,1415002604,675325937,1705060875,82255734,16536037,1189623397,934414961,231458627,775976439,151415883,1269891044,1231387255,971020080,658594240,1285425983,1202927853,361118792,875797104,405859010,427066484,815489678,622859831,1728905219,2013836655,324154186,1757238991,1798507390,1789991047,1325432004,1689482049,1777455171,224931329,501787872,537863943,1735812018,1575283999,1202011778,3424108,431981577,1863353370,1991541786,167181811,527160714,643252582,992539920,1226248342,173263850,77034819,1931473034,1501893721,2113092882,1994296866,1349199770,126367504,646923836,1755130568,1858997282,13980705,619087033,315341575,2001186796,2075973965,1496367952,59617220,45744784,1327538698,1791201281,1282513629,1495699221,192379227,1049742838,1969103002,1654079618,2126708884,1629546193,553593238,1638406816,1435228268,1632450267,1964097760,1251221148,1615902320,485432012,2055303584,1280338609,1488547258,2076073239,1393929672,263232899,1463344171,1709384783,1151852414,714256052,2055675332,61977464,1191466,1451630496,356131464,1694989874,126419869,349266741,185347685,170123110,651513635,744173112,247811962,730854561,314007718,1141547176,1938411380,1453266648,1559471435,59349958,1362050131,2096300394,365954160,54060843,1592078697,1136368186,724250353,457059427,894751409,181630307,2116967922,1216607653,1506139767,1819857355,175219309,606955295,1505125227,197520725,24860844,238234840,1184102813,1997583720,273914883,506252624,50867126,734330697,804625889,1630699858,1224127246,794481571,1080323124,1355078611,328987414,832968888,687254076,1485137006,1344577968,349996605,2108393272,700579410,652388750,1681351082,1415699424,441371320,1762959125,411840157,833023412,1910922941,287887213,262119576,240254174,1666219282,167304470,1803542159,1033055997,382586100,1197047496,1829381078,1787221521,723360235,131745450,1492788007,1310613898,346728201,765672452,1908075893,583883912,1357426659,154201760,1191518760,796782164,209364675,1887404929,504114171,974444123,145143960,294288645,28782633,143985496,760681545,950376530,1819829406,691740241,1599043801,499301712,1780677696,474695902,618873568,1554338203,1172812932,505286795,2103097226,1246894810,770101175,291541243,1180977776,1991481779,1404064676,1376362192,418563552,1374503321,789009640,1988879277,678135216,525143325,1230536666,1617589204,1448610871,477200179,643224808,1703303971,249398117,796749542,1485360002,232372786,2094482513,242382239,1829735089,809063671,2024062868,1601298394,1373882122,1462313291,78607290,620143948,265710879,1197259687,1937922033,784627126,1222525371,180461531,839506426,2004601138,67772138,924999839,1778279422,371064025,300043874,1301752499,359885534,356003873,1411953133,1205178333,163042177,286929998,1337169011,1863627239,2050588790,1524264053,673152833,1906996638,1618453307,1198076243,841022081,822782241,273170888,413551216,1250475370,1506850321,276498412,1143929179,1822689393,321388926,1571019222,1984086958,1668512321,562347233,900614526,1718542818,1871468631,228597859,1565594550,39456427,507509372,946272283,738086871,1620379944,1160657308,1610976931,1285884158,1552662708,1214494772,944979849,964549515,825744708,694015801,180768375,1214649358,1509964487,1602554403,1551589053,1096809481,1870219343,1368312234,591068647,957217760,853068699,1407220725,445998501,1394365308,1019928084,377550117,1379824767,1170434803,707118173,1838744469,1960351980,176895656,1238344289,917147282,705785811,12628973,349650770,1268898581,729260846,1675827004,866052805,930333833,10569377,1481451216,1447712036,1896357903,1384503049,752474472,300759024,1581397422,1707435233,542444784,110887158,780958347,375565311,1502496894,945566667,597999619,199749301,932463524,1342104805,1464510996,1751753285,520845978,37034884,503725652,2023705906,811140745,1159855508,298789817,321474072,901561832,651580785,1872957937,174659038,842887170,1668462646,748069116,1674061036,269500902,1695041068,1942707085,468697461,283064151,435257839,1210678738,1041088030,524196151,707594297,2005956224,26231045,61808029,473668275,1740373181,943152308,1971496616,1907078372,580658148,678837336,2047934543,1932601434,2001776796,805097121,1477839131,1910856091,1095993386,49701159,290371903,406917767,250212533,1963358948,1780210560,1841462405,1864569417,1448591934,533122579,814888626,1994867873,325113526,1237216648,798032189,360831014,919274402,1953175185,1433977122,1287842269,1873180872,776041411,660819386,485844625,885067813,2061768968,2045716311,1466937735,783998023,1272470768,1088913373,1178225196,1319310043,1050929361,626778934,2101184812,441218997,1774436897,46958017,56341420,1990133293,1601949737,1847966520,1471247474,1214697728,308344807,725135300,120224021,387515732,2093927644,1066280863,311247812,2014617860,1635401201,1652772553,234107995,1106843568,1798710253,2077793432,316568997,7016354,1869162014,1244109341,173473212,781236067,1243230285,689563434,1071403335,1472097031,622867244,817090532,242003771,1248243939,981387621,1584915922,1235262662,1421836743,962430634,1223697609,829251477,394203814,1044931899,898361808,719675061,610015784,300002319,816067552,1007684209,1672341521,1534210876,1060723148,792245708,509867428,1988186352,1022182578,1601711142,1533595467,1725326139,214477315,876727247,526834664,303577096,1211723931,693372381,690513409,1338360357,1145159827,1363256681,1480078948,2097327401,1765091913,1057597888,596764733,1320995440,919229643,1159920051,1703855587,970814745,508586144,896948737,316636536,1873253944,702044861,110957371,873760517,1265117618,1354846704,1049897464,614461364,775537455,565823212,462236079,426160685,665855085,1761575305,658381126,2093870304,920460572,1205176495,1924450425,610876610,130209798,1946138201,1386979123,207157519,289727649,2028352594,105033151,385426646,787781789,16463673,25974036,936963784,257821319,199993021,1887579212,1114441979,497824623,1143852721,807418854,738493074,216424786,11288818,325333289,2102990611,1184438481,328318563,43675592,1297257199,939486125,722107591,473067633,1202467138,1380621124,783444165,1561480819,509512391,161689938,1152415201,1285050225,1936056180,2043287457,947754920,1767618691,295365024,2100570100,757012902,1331976090,1522416987,1480533448,1576724864,699539716,896370902,569662492,440925871,1822825519,1538106252,1004784378,1933103382,302770655,1286975567,340529333,352231160,1040450848,452720580,1160140652,1316793115,339951480,507225810,762136147,491307537,1666100237,408714481,991952826,317090432,1746269609,650570336,2039623288,488665868,560200945,230012966,1442039522,1708547964,2107762755,1873837575,2093801573,1312247302,481418427,2107619206,749319117,48685771,516895019,50619659,454898532,1519986269,1858476888,1377769500,622234159,1043539598,185021106,844794853,1898936151,835789414,1984350906,157746121,560218630,605083861,97426123,1702846434,1035765902,51076159,1657611796,538662993,770702489,2046044531,186988482,1498289055,653824273,271456554,89770212,1963668221,862940685,1476396822,1689524339,638303551,1369506806,1855581431,674600462,899744677,751108886,1375791313,1295474688,399933071,1626717508,2009777570,551772916,1826358014,1016314338,1593153306,963152683,130343949,1070872307,2069154276,2042096348,119013265,1017528079,285819808,2091252896,406879128,508438584,1712766505,1823328780,2031473226,1412642958,471905018,1846105423,583256426,803364129,299752125,1374423755,111783202,318331908,152962015,48860905,1901292446,686280184,1500520311,2049508582,2048732711,728526428,663479786,985493849,94238165,431272054,1618655102,165539595,158352196,370387387,1822310637,396045871,22196258,1497282336,56147443,390442061,284548914,1404144444,88065291,1401427510,1921137840,526003806,1202118963,1705329460,2004475132,249364915,166939408,1906617078,1958997142,233060,156511554,1989574538,1750480952,953405284,1986239842,61172135,565637546,1346791914,622268903,98021590,1300165134,1050513876,1172891696,2128576410,587111233,1297299645,1523685248,689747951,1177844257,242770550,116735271,1807566646,2062789194,872363802,166178584,1117079288,154660672,781208672,1825153794,669050828,1310476400,794792141,43024625,1600928884,2060785059,2091829511,1780162331,1638118335,261466994,1327179486,182576526,1530468173,2044498604,169560088,1423109417,1595194273,1909259196,386392672,1435513293,2113871710,955266891,1064504840,2024562503,1520921838,243467572,1853109591,1505945331,898986916,633675486,920011976,780146339,1288255047,683300785,1745900013,1099995455,1167921593,551871704,11065065,504406599,1088743943,1001944588,711883552,1923188295,1330282209,25997621,102010307,1897004578,1766986267,1230499947,1855391567,1531147832,699005415,766538435,103535681,909584976,1779195778,1310653441,1735775597,385535066,1379905154,328465217,763553853,584730855,536105244,2035749437,1218806360,539221737,1155463113,1280645704,819036121,1733742730,796862514,1862709047,1476012361,685365254,716457605,1324647031,2102706721,436535556,1619353692,937866831,1640748108,287767605,1141625475,843940413,853404355,1836356991,227386637,343254590,1815674149,293304270,751413221,1195998167,1766695499,1309745618,119547652,1904754558,822212649,1851750262,1842969163,1306029640,1989387564,1559237358,506071543,1495325630,1428217588,187203235,1852710515,1755798821,402422457,1063364199,1482043023,752614986,1792512220,187367626,510335015,1893064914,1529045855,1367266020,1499539929,41179618,1686809172,1809524838,2001348210,1377982389,1493619404,1402430636,1425699972,2117671119,1716515892,726427063,1488583632,1348306867,477914323,1709968911,1997682995,1309519710,1551181984,412590326,1925770574,234671070,215585169,1881498440,231618147,916063463,1755406475,1246641047,1519148431,936886836,68540453,1892184020,1942902454,1353022283,936442978,1948417358,1018628725,1444499914,192389466,1136664567,1953354136,1465495855,349985957,1418051857,2003275960,850918493,1259243596,699221468,3641383,491554676,1094250887,431530688,1470311093,861833279,1509549615,1799447549,2063411217,638092772,1340497220,1279302649,1162921213,1333043248,263890879,803874028,79514733,1813690584,1495966035,882102986,1099785079,1409625747,418664820,1176920296,287007376,448069265,2014451882,391872030,846797599,1481102729,407717530,35731430,1984378942,775114772,1508506955,1498291972,1049645856,607896120,1934932356,1822193181,275422505,721303558,1269405266,1614447769,10089103,1130775501,313707331,1678033027,2012949223,903274867,1022424898,1392415074,264238688,1469858489,1539001150,969543483,70001960,65018469,283094679,1696392439,1667499352,1679529881,1494698802,1905787757,317765282,217689872,1761667984,187487515,338562403,494333297,1803727632,2075648754,1209932385,1652190867,1752727305,1161103192,1933872620,2024803852,732280880,953909819,418395802,837129866,186098997,839286840,1464849798,2070026057,1075306584,776302415,402614589,1886067076,289505229,1430664952,1651549313,1806288596,2025635652,33638337,1272081463,1914094367,1263006748,855256998,1847958249,558601652,1526604130,707008592,918700337,565006217,592492864,107895067,1746105911,914647889,769968518,843597657,1913289082,2045059110,1107564585,1258708543,141054920,1604842321,1849843710,1891861987,148230257,1171002781,1562906098,2107155134,672466207,1154510459,1035072574,1906669213,744260033,1647770600,1116710907,472328616,2118581125,991316504,1397455133,1691882658,1090579738,656727310,540611354,1184971414,915889908,1955325096,902428658,1129783034,1920949251,1184680417,1630841186,1441888706,2095563740,803849022,841897387,1533946184,943341877,1033312845,175616167,1814819917,1685262591,832740930,213333615,1203826964,1213242346,399797148,416726663,840117008,1832035548,831475071,612945961,818076241,1416548080,129787962,1788618343,1288991967,494328395,1150674368,539443277,279671297,1029331568,1161897366,162131654,1337794516,525957916,1407394656,416420104,1297070631,365472773,450423253,882925531,1756193565,820791306,1788554336,771423712,864778152,893654598,1243118150,187870118,1037889501,1574369267,883847080,1720226555,1357241477,1303290579,1017078147,46368682,275268223,1697304959,1621803855,1245219691,890306250,1879993095,2082672552,532291616,1832140052,237996788,623042725,150135764,1818932212,425158265,1796550880,660572635,1895850181,206377153,175026129,1139445905,1567004850,1591757936,504021915,1612620927,1084764875,12631484,333029381,693241722,994450314,847996669,1003272927,163969660,1259686177,585928604,1639225467,1527911156,79752635,2127454233,1867282757,1240483169,408246284,1887906736,1599887663,1120906466,1146716202,2050429841,1242491094,1283311996,1211894752,1986343250,364461692,674901625,993134625,262453497,2053643508,1335641501,488869887,1981570676,1185820085,1669846779,1992212015,1401057902,123484160,373266929,1271475274,29844245,756104195,2019539481,1904555705,2114588292,190923335,162716040,1312545952,2006753217,1308025912,98983592,525302808,594256404,265112911,295744645,314358221,1042206921,2125538557,326378023,1986839101,553921258,1320653705,1608778350,317612093,1781267427,1953687761,992724199,1054395108,2058671521,1021733616,300304466,310271065,632353615,1086165908,348096719,127349898,178212981,474199518,1794284712,555955855,1697526476,2094764755,1197680824,914457007,316494010,1421160779,1148461886,1190676075,713789256,1910260983,1630014284,475401658,469682285,1685576613,265468587,251841859,722494728,1622645187,717246575,626019286,365688075,1229046681,1658955556,660986764,1967081909,1580982909,1728386380,163524164,1498025930,1350854469,1008587547,583536639,1472813954,785007413,2038009065,1230204434,328135572,1335476448,2072871480,2081660327,937501325,1318085501,2116965736,1220465591,1767823743,1080081601,1881674241,485324395,1231108316,2114756710,928415632,168358823,9888375,134172542,1032538323,1340293541,1585074379,77708570,894112446,1102487066,1837548411,1027418997,834930356,718017713,669067654,1475167015,1077750276,58941964,1927981682,772247296,1030476344,336919248,1608171621,1607825149,1744653788,1717689857,1597111747,1184696300,1103307859,1384377618,207062021,1349516735,992548516,1435314034,236928297,790638140,1236750608,631875548,1591406631,485509540,126933800,576154812,394404997,2106630797,1009510153,419358032,1943184493,2016206412,1318333406,1197660254,330276624,410290588,234519992,1065359048,35004454,52572354,961421572,986897566,324406218,1088715572,1017524644,1836193292,1130894316,1745392374,564331950,1162477879,89874021,846927313,824384052,2025492156,854020535,789540799,775197465,297211491,1437478806,1201819303,1348090454,985281348,1834535156,998977932,1865336047,1389757419,1429835171,452886280,2012101437,681208367,1643279459,973451698,1183920066,865369119,1286534191,1945694646,104460614,290081848,913236145,12091704,1335786572,1603639505,685332574,1941116495,2059607909,924637736,230869405,1950383016,600174540,1600412630,1511927842,816876408,280653143,858646755,105480632,694749102,1923610502,1787681083,135809989,1160750318,1398063812,930293543,401739041,1359712543,319252667,1671334974,95085926,542184529,1934686610,1377744906,617911856,2009996471,972601485,1992598485,611042884,175968112,385160005,1735424128,1805640505,2028623973,54040155,470691242,905069417,1400715116,1920122731,619168326,446105699,1410772558,1108492639,284546780,1096189772,1466517885,1586844099,1814405933,944182495,1974590453,1205735771,617999128,1781497912,1211049680,1435442309,1740879031,2054669598,1164953518,1439622398,1080193646,1833832407,1702528426,1927859077,1180393171,1849649088,1785756517,867713599,1058300873,1948841285,345823184,993576806,1758306351,1557737096,162487465,756481973,432939758,818452176,2112670382,1230821352,264149022,572633247,1999873767,1194070561,193029824,446390224,314998072,683984973,509079575,180310000,1631558956,1620761522,1267297712,493481626,1634939418,1982741015,921611307,191301330,388457179,877262455,1657544858,1635094273,1595913993,291812225,1410778393,351075639,1426467755,1543672828,1344682235,723988126,1411711985,1840458332,2025889615,502696021,1871446439,1306853274,1870047896,1074950576,583722815,14280405,1727877619,550217339,344318158,1940653535,999868901,978328742,1689825027,1489371383,1899489236,145175794,3414651,1305222869,2022659314,590659594,1536606145,747676881,605935831,1236254714,67344785,1145729052,1046721493,1783050757,2044413469,21320224,1018282948,297310019,1679974306,207743538,1536689320,545646734,710353302,456344758,593500455,2103565405,223131107,1058247875,447252531,1516427731,1408174952,1805911367,1212651342,911289786,923792255,52433841,282689142,593543471,563405567,353774875,439743580,1388834190,1587300502,860824006,429643636,1038306298,1569834033,529884222,1357408745,1837330792,885791011,2026972516,93284791,1525846914,471009416,660110512,1816041773,1277317622,1880437037,1281222854,240989719,1874934476,2099173523,1602846670,1288792350,177409376,124607850,1192131225,1799835742,868089544,1155612155,1861590706,625969638,921730622,135969259,1050219575,2071077255,2072840660,471076865,1383555901,432184310,97884604,1715330155,114867502,1376246323,526175920,1771135758,525626139,182612117,1269402735,1131982615,1294260618,501362296,1583790357,969453415,500969325,284608056,838525208,194468575,1689591183,836782804,1269848882,1614600657,2072921061,1441449992,269032720,278807784,862509118,836943356,588842113,496398537,73643466,2031245960,1508151559,393982335,720171194,1764536981,1553689670,1939334017,661475158,1943044038,1232007136,161394661,2116849785,1430567499,1347292382,592812716,1235206711,917363682,1142937106,1802386660,573281052,1762735076,1353963481,455150492,1692346546,1284576119,170634122,120696755,277887306,966125791,466514780,1452101387,720204364,69041490,762864089,1132313276,599189993,1799373896,706045591,521621728,761179760,250687998,1225821858,203451482,230714417,1916286233,407079489,1836748381,2047402697,2081782519,1885921679,1382783834,394192684,1707949809,126685418,1768536491,1231687538,1247919005,1051049955,400214186,510207862,1458966320,1592129216,1321634485,746849218,1776725907,1418601354,1872802962,318643457,189073796,1231647741,220652195,1709072139,451623460,154850491,753582620,1032856809,1654002142,482295829,998031163,1079512471,264264953,1305706700,373304672,1395015889,486253224,2111030006,957979554,23025669,2017432120,567253597,1148891054,774877588,956505220,132377545,2058191269,1954514831,1305231004,771118646,1368035358,869220813,139070336,1596915397,1494065924,1756935597,1524811159,1953600690,1662820617,690399201,176555061,1739968910,1556942059,271940718,1110443182,1161147363,765196444,492224474,1286303246,159284122,540803847,1069882480,879690033,1696213875,1050512529,667864712,1590380160,1265108279,1010514171,2043389870,643370304,1804560035,1480195816,1009251844,1641089742,1698845792,535805211,830825319,231753190,463594251,439174196,1201226342,646362465,1481692346,308216751,1818142329,1366370432,1328412059,157946156,1661734387,1820431442,905024376,703472298,60421137,977747146,1217126114,1748267984,1816227174,54450991,185317898,2091206456,920645102,73936666,1660314543,256542555,1567308925,1844211930,795731368,706870149,1602923264,1961933099,1988304567,1828898834,1064340464,1970607797,1884018211,662658206,1125046161,1174227721,1230196582,922997686,1783360241,865661981,1309039557,1365534272,2013996101,863100532,1048516220,423959687,231020086,1754997632,1031148441,1802468892,47293360,254091994,53319175,1142100792,1237412186,153266802,1807025103,1722901159,272036159,438331547,1789796170,1292747398,1609555812,1437473153,1782223935,827928283,1861724049,57350063,81602460,1710576015,440153668,2002959710,439595335,472111334,885648640,1517328834,885901276,2003035969,1507534153,1371699555,222138824,653704826,2092501255,1618485940,1793814178,1432276067,2047730215,181568681,745017870,1316871571,1372407693,549379347,1395305403,1680033869,1419795669,101701119,1914673306,1561902842,545497906,1912903117,1233049547,1920188650,1802948220,1530420007,1969692079,1875074661,1133265899,2000185241,1852167503,532327971,849616529,694972665,1855392760,971094174,368769990,558312213,2103741930,146368279,1724181345,2017254988,286605110,553907360,39797233,1134344922,1843643895,488106440,1363173752,466327581,114481739,62327443,1484396063,541706359,36586949,2013089868,698540717,629398356,1046886054,1140649902,914337842,743499238,2029857054,244468181,1765257325,1381086789,990531052,1084701238,357526978,1071873313,1175462208,853520536,387231621,816220457,258622622,1420260074,1558761982,204828813,17348795,2041020771,392929179,1513447276,947021083,1874877511,1222951508,941619845,805030399,315187909,1898851286,236541476,763697229,3034740,1723684961,1863316428,2015993356,1959497985,1698348419,1615152632,393965102,341021262,2017975251,1751951120,790346318,638605012,1333418789,94405563,1502637506,1217588156,1015041278,952497226,375581181,1889062361,1127424808,2095119950,1843174758,301104588,419905241,1526070821,1225211424,544442628,1809742863,399076845,873235248,1518449431,1864006167,1320365555,381076726,2000822634,1525330015,809102107,734667752,1887045733,1984728738,441461077,610376204,351274034,816665978,1966556223,1158468088,1147074344,1885790260,387996147,1045026110,1824356482,1231521714,249606607,1924392026,762519921,1760429953,883571055,962421619,1596944237,1854141110,527232963,62239980,631726713,1727673663,1234544200,696394467,808247088,1927779703,923462707,1242511757,188080080,915736794,135307688,772988133,1048915260,566358379,190849845,1589759764,1593113685,1681814761,559415831,2105152992,980853853,526945221,1214072025,777357306,725070086,935883834,575000550,1620262179,1608060681,842824196,1765258237,562042498,2060325749,533614535,1252764649,876326200,609473916,2023091405,387106990,1633234052,2093986970,34163187,1536530825,1633089172,911191337,712548380,2119359612,488367273,353663557,1089057684,1355305685,2048162117,572455861,325556510,276466007,20745657,833486946,1118237676,1465403338,1692840567,1151137586,1519308427,1543301821,587502892,73923438,1916615040,1181813653,2089072809,1583611521,1178604895,615110044,208741134,498347962,1851575090,227630265,607578880,83144503,98281275,807982987,1757479533,2089639497,1781367857,1798261223,183543023,1326414959,2100188038,632300570,815944065,1389488552,421166203,1678551917,151579434,1298096431,312596195,51016713,240312867,468991155,1148969821,1037413112,1802918111,236759744,1242178775,1788772700,1425138576,462121195,1577274442,1959267624,652888850,1552151774,1418530711,1338110297,1834727445,268831101,21241598,1178253482,674257322,711783914,840877393,212796930,1893246321,101235061,1407281557,1542826295,213669938,1250797673,529095645,629155952,1231629751,1050857375,933848757,2092746863,123251431,1394881859,123095052,1557951568,1501068944,1880938022,1408775068,2003087750,1302553501,185012801,1186479461,1054943402,1065777560,918595017,593224306,800999926,1401804131,1562799172,1455493094,497734159,1359868230,96584563,2006472044,1634262935,507719820,1231772800,333972380,1997154072,61353874,1899042253,1917729866,126368908,566676481,628554065,1672756657,1914266100,1932424837,1961506016,850881801,1200483687,1780497018,222867935,276631345,480599396,152703682,591626100,1798573906,311565402,938356023,791428760,424522692,956320108,1429887000,1820359594,176636789,959945683,242161977,1113892391,681019806,1074995061,2072857958,241825976,1503105852,535668786,104210418,1536097266,1157279276,1795938892,445993949,1604290746,1536033767,753671442,1279028376,596445716,1384615508,2104408177,351462902,1351390966,1103134141,695449770,2004396434,1623810340,1880871442,238135918,1831968410,315496723,2067815510,557895211,216437270,1180618020,828318063,1548685110,1629039600,821714884,318621536,135134475,1226878369,615688763,1770797039,1875889496,16706112,1192900164,1914679577,718188595,1693785580,12223097,1117475098,1019037596,1517008671,1014456366,740773988,585186958,546050849,2011996500,804002525,1911570636,495337465,1000558065,457484831,636946793,217371669,997948219,1486882516,1599287039,1863287781,1753791326,539954368,1576369658,212948568,1341610574,2081614744,1787291673,2029269678,429528753,999296898,336124290,2039768262,1345728523,1867363751,1940363042,1959076576,1389306464,1208746107,75914738,1751596719,1815269693,1197701047,757587904,1421219241,1441072036,1802952077,1398236038,302937494,804707798,1945891063,756237788,755796779,756729483,1945407020,30594224,1009786234,2050467286,1036985027,39176752,406762544,1121871464,1919753210,1019078423,315789664,1139108211,1180935074,2075381830,1833302377,128856854,1555055229,1018401268,1917589378,839483284,1116158340,1194301178,897865373,403994702,298120794,377355227,1591742514,1734875531,1819202253,350826731,2068922097,318927798,153044911,794483983,228577124,1142194975,1970892975,321621357,593795081,1651768840,608719825,1951010995,1644192590,650293260,1271478791,674177779,405002589,1211241772,377206603,255838151,1731092379,2112523837,311338902,1162047574,58648685,1853464656,1852221042,836824326,763388688,1020303828,736412403,346393552,895176915,902319699,623474094,2066613800,1970045996,1443606530,1838937961,1619312310,1657375794,386465914,1186193239,963119582,1243993782,1462211592,492406664,1638242809,1540779113,2067525798,1402281624,239402205,1106303345,2016908524,981263498,616348279,1964528215,103195740,1882068989,1041620149,1339689732,782241870,31684026,367719094,845793050,210757285,2010176800,509585810,1985152384,1496308115,169280667,628712126,1051691201,134141972,1086351370,76378506,429030369,556027189,1220480210,1549524685,1186278079,119494977,893538183,248101339,1262065177,532185087,1018157303,1207238772,2012763319,1979808090,300687735,1450974099,440902528,327098663,1363179562,1944359994,1384542323,90188233,1357134373,611049228,1420350719,810556389,607519985,54354009,797107708,860433681,372274930,1561288731,17603611,397638587,1072797010,670204983,571423900,1728647656,1358948304,1676340581,254572479,125356945,591907811,1124829542,240160167,1991035858,744710471,2064151638,1617520601,308341481,282355288,2081781791,1155003250,841579112,2098343460,1687483770,75587445,891536538,851368922,2033336732,1670396813,2120430011,670059540,1125527499,865601141,832318932,549468569,11489642,358404685,213717700,262914300,1179662895,1274225426,2030925576,686453767,893857458,624541270,1107701522,139499360,1218534957,241297364,1734933768,1878789822,894091574,1215605956,43186521,546665435,581193983,1989966236,606378102,1804364392,664988631,102083570,464309942,1253040347,250838416,2011515113,2112211892,100572821,1322964578,45109167,687784833,86087552,917187636,853771259,176878343,1763074524,312188317,1966814423,5650674,265939782,276143037,532020848,1158368792,647677347,98623466,977984340,1979167385,1997235986,1819300053,788085036,2089056221,1519374948,1829086320,1218437697,752615748,837206094,1527560292,1399348208,1641839423,1344546377,1800465662,472702303,1045141217,1148322352,1599680886,1525247039,487475469,366896741,1049310054,1416425759,2035206278,257779608,727318550,1897885589,897208198,1731611779,1329923218,374079301,1463632848,881202629,797957670,394110761,2045632002,200202245,1963890510,76808554,1825185751,1048512900,1362264786,1181596081,839188034,994921158,2039132814,1649536043,113849197,1893428091,790692356,1985014831,1119662979,217206414,389820467,527370105,685794445,81911961,1367181845,1320399326,49619493,1499848036,175244160,1901459847,2118966754,1649722165,2026160239,1279431163,1376465855,1171543950,221732867,210048213,1524568832,1987294598,1782836291,851004071,1200210883,798663591,2093994152,1919846893,131401751,1966305860,131651022,439737104,1146457769,684221885,509364,616408603,2064972733,187063012,406059636,1446009616,97763245,870188968,1315608716,1760640028,203618023,1568324235,1973758544,1331414567,580069157,383853152,1166806963,2063674969,1522833195,8898568,1898217773,1752203837,1262504606,176107231,112144380,1932715924,501162691,1068776682,1601217529,1701008859,886715869,1436188089,1187410242,1345976027,468921715,882465913,1299589568,2109764556,2067649926,1904786760,439692519,751362701,914593514,680439066,611506713,1659555456,1344715980,1712398761,141707868,137076,440145594,678301710,1664320174,1403168010,1268967880,891071306,1646099979,1039924781,1417504928,1608466289,206407715,1640973802,1485608227,5680143,1183210296,1200351199,1462828283,601538864,854737782,1241371201,1169427984,327180539,1410289405,895912674,1987562132,1823707998,1688544108,1373440708,224542116,707274787,137419,1245692393,62298987,1169948535,1995548445,343400640,1510053271,1025291040,217991228,470359236,1735502428,1234165060,2120901498,1721104051,91332434,78689242,1923578269,1605983520,1457776269,237756172,1183966056,1825335627,1083308977,29456911,989024931,528141217,160865857,178730702,73467179,1028027095,1245287624,1231736478,1406205011,1314493588,799989629,998200035,1392654786,765215075,1336406410,2099776924,1173084819,1354045948,1593015118,309534712,983546684,1244497097,1915687682,56277516,1707906306,1921686555,398981030,970049297,326447624,805663212,1377621563,1663830540,878307287,62077946,1046774776,2123643270,435571521,686086166,2007132643,1816515984,1098805460,1835912673,1735870536,2074860701,797926802,487538500,252974982,1851172692,1517364293,1093653233,1395916477,1963114206,1726748449,646403988,248728582,1366998462,1425646082,361538991,1278783911,2076110373,118169775,79257739,232683806,1148736672,188070926,1823006075,1235870205,40829366,948060642,120521093,1022561190,862701200,958332299,63099153,1533033110,1297591178,473655505,1209239162,751804198,687313980,2086911615,1573852553,1461963874,1154863437,473585744,256335006,1307844490,1353701280,1399160183,753002962,1969450369,641661716,287254194,305411026,800810534,93753797,2126063127,1030965993,1702668181,325897503,1480558652,2076990601,1275763807,43348879,1980715054,591618302,809091054,334820647,79019090,142506303,1080870990,325371838,716069516,836129073,1867483727,1699399888,1425049054,619085811,1751036539,563929274,1605603781,1751879647,798260894,1324802263,341630982,1340593114,1500239263,1510736701,647842640,256199346,802423098,125691176,82450410,205424833,793586130,663014769,491645055,1659777383,1105607923,1012911471,2021634261,2068732916,1614972361,963867570,1954426130,257593096,2109541215,1034159676,273239167,715205162,1645426983,849541754,118482527,412163595,1909534723,1645094232,1279923235,1400349433,1167919131,581005499,111067795,327022763,625437067,1386845214,1720233257,731487007,1045287533,952305808,621214383,648944400,774474298,607828779,387461612,1559862802,1397807677,1605901708,183432929,598146767,1126529797,264502348,1603525621,1439886563,1556909237,97147907,69007605,57814045,2037871332,230737165,658084516,305320813,193495133,425433971,1105587334,235406359,1595611514,487132942,244841789,1946780446,1505769029,688304766,289682864,1949358855,262120353,1415500239,223321770,373061715,83806390,1003124802,954233061,2042315676,892974522,659594270,692408854,1949222721,48922109,1011237107,279624700,724012387,2105202517,1299926938,60178268,1682228644,768135076,751661674,776890296,705421025,1022973412,1277628210,886150007,1985441932,1711936446,1892069067,2016868688,961200604,352290256,1887206067,97880472,561829566,691931707,1791572456,935131972,1327474172,549287312,348839344,1844526047,1412488964,1658243713,1374145760,175275196,913285469,1590934907,1230856971,1138990062,1772851992,1763473934,1216884221,100791216,2110178822,159573979,554431688,1231060483,1433404560,1655769181,374650778,552031191,2068473593,500696808,610826302,1426004109,1502521298,1816226451,960515386,1709145757,228185721,274581378,696941209,590919116,1538055898,2062315036,194152064,172051900,25618931,59320624,1863103324,1358835636,730604350,275167997,1827523863,111241927,1974239902,411040839,1910589851,486576385,697011713,1465828472,1071132261,1218370918,1104639021,1122416358,370064047,1113011612,628831249,1284394921,1016187017,465885630,1410625410,1434611831,1481574203,1858462102,1956444873,1094235051,113619162,2078537498,1712376967,564399313,704152851,1168455136,1304152472,185723445,1970236668,416348876,372814980,194521860,739388678,1072631352,1259411615,1558555453,436251876,158296281,1944479653,362701410,504682720,441368641,1630063910,307423893,79545169,139145178,1304713664,256843292,927563606,718476278,1569614344,1476810251,1750203341,2066940985,1390639889,559913312,1896428356,974098618,881308073,825802991,594930363,72621702,1835202990,988981794,1902528738,888543095,1055725473,565157795,879290048,2043317812,1185586925,1931872798,742248573,957212419,1095959404,196522077,687915706,1239556417,180247429,1489956990,1037705750,793556005,815633310,718136685,1510947825,1593665193,779657972,1382475962,1088874890,944879293,172249276,922309607,1116266750,1475937120,394499194,1947607306,540433178,1830607933,245707720,264388233,176980223,436987577,600326895,788408888,1768946950,494042077,1716778571,1016607611,641988921,877988382,306673436,882841733,1079159895,2119725385,1166108727,1077638032,265047994,1814750914,1150811755,1000989748,1354351498,865427178,1776089597,496654573,1319943165,1002287741,2096078944,993232296,1299317992,620853234,1901592945,1422725312,678462403,753615804,1010700388,195728287,656109864,1179601555,23076352,2117899280,1855880104,829303011,874173847,46344707,163313671,2107285993,582688337,1117301884,1995204082,522386825,523366380,823925798,1704249004,8117192,1095700143,1309362659,1825234438,1684525326,26989268,1276039601,2043288109,665007009,9858013,1880633660,217689830,1631799513,1291544276,1096223699,1847110350,1460516369,856434008,1387917450,137988097,1137110853,517896997,727072139,1127587514,396360079,1946263977,77410319,404867096,823095042,2081782692,537168863,819898762,474110359,852066280,1562432368,215566984,797383889,1870504975,1716670490,10967165,2000741883,447034088,1190817313,753996082,210875169,1400074922,1227778636,1903093892,1360464239,333900178,1421417125,778711076,596506001,85046026,247642827,1170596070,1148923447,499825407,1289369685,2061594912,1535200119,1323842082,1237165455,466625476,150361183,525945186,1244040781,76292958,1131578807,1181288045,157787620,747770121,1764643689,2030401361,1469880432,228170357,685070767,1449114344,277128029,955093442,1579544155,256277753,857911617,10587186,901861529,332722337,1831056637,307733055,942773183,1910859295,134131019,588983375,540806726,1806702381,1321737095,831578554,593722987,2054336721,1220021052,1634422140,1447992897,335938878,369218846,1695158326,835490985,1598492063,390544048,364436395,308708911,1531854956,1067040241,401521355,322980701,833199353,271850061,272379479,1251871683,425738457,819677501,291330556,938357145,868501131,663424608,753081388,1921896442,325081386,1515497564,681756929,1019473129,310275069,795320708,1317614669,1230762184,1529719106,1369222060,143549097,1808379230,906704319,797085869,188253405,1363211705,605035151,985879803,40992745,1300177051,2120495817,391719434,1628526157,886951340,1064384787,810418198,1954116208,1133673743,1407288925,965611688,886728356,105488060,865446634,1621500890,160181343,545540775,882129048,1622221365,138722580,1225744065,731853900,870181328,742717845,1719670133,1065070376,654202975,1639402535,367738643,1589681960,665371559,1737416377,1614897055,54609093,1530962818,1371534325,800425745,1460677119,1898740004,1475624127,184251529,404736201,1732867328,1501301184,1314092856,1533904198,1383258240,1702252485,897834873,716734337,1996247271,875899288,684422552,1088107292,1902785479,874746358,742097054,1391369929,143551626,1079637155,279140551,2075803293,905202550,365659007,941753739,107180096,1391770366,541822004,897336110,240339774,655515723,562001504,1483834180,635752456,452995635,1669299753,189616204,1463647626,1583696491,2101914510,1750316793,1978727822,1644582655,326039751,300523713,1260286206,1831870526,1492848442,695697820,1505798073,1181162444,83629012,2025425276,1829651317,1661122192,803747301,248435665,365761000,1797623373,228222203,1375642336,1735509230,5309411,2051802325,1548658547,1958378074,165516439,395310218,1514570465,1452561604,939427714,898612585,739507195,1916814832,725147013,2052905345,491513179,1948423941,1820742398,1566837824,370744672,1061596939,959854703,1640721873,2075848197,1476137026,2024681238,1094107958,1618654015,1506984908,1868653446,1542723338,878651638,630292179,1805433494,1953105122,759909335,348605477,1696969306,676786800,739868321,602454980,24119417,900612348,1690566368,589890747,1978373858,1572101536,240976876,1894021691,989747874,1132290490,2093153858,455311338,1135865588,219135465,1753212246,1808554483,658076468,426115153,324416211,905369561,1271321563,2070987880,704705456,1106781701,2185348,1138045425,767967935,1956302662,1159756552,438572206,1661852211,1651235952,1615671069,1773932069,1509954682,1004548174,1742789337,1177060487,1916895109,329781144,706736334,573311624,439064765,110365763,2101243029,548210687,2103654797,719253241,63110671,1622796398,676790404,437436948,1472862467,765836607,139301367,310567490,1977229223,1195083482,256325068,1889129640,1946592242,460218665,1566573190,271778008,820207240,516426821,1731459412,365498242,897145189,323409681,204640222,130636416,697292702,652207438,2081053539,581939940,848998773,1329309357,238844154,690828048,1881020648,38834582,1699919030,1025710072,1043383203,1103617887,1931881985,1848025933,1222350788,1030445702,1100640204,12123581,1358037107,308238284,172366601,1552587651,1131305875,1747548215,1313258288,1956971926,1157446021,1393191456,1008847135,73500902,1357958928,1164719464,1608793616,903917274,1548056514,1970337858,1428032327,460061501,864745932,1410019168,1563674370,1377359483,2033157271,526100360,1149612161,1802900204,1834814640,2068688167,995796333,861022923,1655754112,520696182,2058085325,1711508537,328479486,134145438,1834112454,1043296715,1137144281,1657929792,606507966,209541530,2037246095,671086379,78773592,451500609,1535186457,913553419,507685800,483404953,474089612,1078614640,140628820,1361112916,807789065,2059301239,1750355705,46620223,1234953166,1102020625,1964677802,976188154,328336975,1419786955,1180885092,1230533023,1067439626,1969384622,512189804,1544141043,988877312,888621067,2092849883,826516852,1519999275,75741665,307881437,1692880391,1864727759,1756620586,477540847,1685094420,1144449974,1903365375,1943062292,435589534,418502078,952070090,659762824,647558148,32112784,1439374026,1397055452,43938225,1592475013,1936888505,1430324785,1483775437,195864256,1040839453,1943967331,864338889,897004785,5093154,1651486565,1011126601,249278540,1597779449,1554651158,1097529741,1180336086,569015571,813375356,850489571,1299383217,833650391,307312035,900326631,2120831772,328467146,1027681436,165363613,727031383,1281187273,387608806,990669681,1028418592,1087199413,1045969909,414767661,1888100121,1075442266,727885127,347356796,1868691298,1436524407,1689882785,1421234113,1218067724,1032920529,1634095235,1148474873,474990520,935056405,786850783,1784755633,1026930137,1012711750,183558910,498106303,1065090509,1045192865,499718504,2593757,1482325282,1680805004,845266051,1804794393,381796761,40482880,692366961,950089931,2113212122,463797872,613959301,1406106677,1013565396,1767549455,1842837247,996340415,979468662,1199673601,34132754,1568983106,2096279380,2017268972,1061032334,681142096,861620765,147562756,1899129628,1603007039,1999519261,1845488869,1850716156,168340684,1950261479,1608010287,1613952078,1594343330,507192820,1782892600,1897159995,47824981,5915869,680694752,2127822693,1643417377,150843906,235744431,1217070777,2047635022,294506920,1314002170,1604524813,1570556649,582821058,942889497,1506174954,1265326295,519978149,241704738,1373749017,1508945202,1102740927,262338720,714075530,1790636573,456109948,1824758754,1832887524,118917396,300806308,258655334,216017378,1740861422,1861454123,1761560081,275938489,565658463,1879787218,256859800,806339186,1648526830,2097579453,255755169,621054875,1483980431,2083546379,63825905,1229051141,1639601598,1457110243,2113523889,2040780267,879104719,558547203,400173704,1968123816,1183986420,100162773,1779212369,371282108,742150105,22373706,74096507,1682678956,445072042,1264944233,746621199,1944098892,902533949,1453913192,1034270775,1327537538,1463589568,1489400075,557005733,910029871,1170412386,3582985,848033881,1236791375,94576687,923823935,2067850168,365476747,1335543261,1547556144,658258651,1437278821,503940228,1671734485,302302228,415681114,702831108,884511985,607025163,1115701156,691110716,820546540,665681497,1560917796,2000306715,316111778,1666051849,792311258,1820977884,1978331719,279489433,1238002069,1402049488,2031986394,1426316221,1091783116,2034777046,1139633769,1270070776,724975279,185949546,1189720478,1902925134,577799159,577632859,543065593,1678688509,546340555,251982233,621888645,1910778854,2027734327,1886641352,614085600,658261283,1427338018,886969534,1146189189,1213217412,1044897601,391246961,1228263828,1236197003,1461920105,2126675928,1510552564,1796065312,1193609841,489563428,854594161,1015016517,256497369,1570566788,243931757,906946881,1579623423,856095465,1410659833,1845061124,455603942,1907385631,507298165,296447276,1330320302,1625272673,2084492095,931631096,1023129531,1835865197,418465983,1938088869,140823169,1393277912,1290313518,2046754345,1736558229,424396838,1586082394,979637584,547529949,1903875685,1995706239,1999912210,823995217,1708383842,2114700687,2021339450,2068211721,360371042,1427174164,521325991,1600057452,122441899,33170762,758575422,998176911,874039546,155331042,1046231790,1401541423,1542017717,514947310,1315336699,1489779712,1805331903,1852087199,988851108,2063670709,963419451,1740683775,278907737,1737753080,1141253016,348313587,778131016,866862596,569664688,1987426056,1097050258,847866571,1052259093,1775178894,346035805,1450076680,1982534161,898213610,1306294271,956565829,118335282,1338750867,1671323018,1967353437,376514771,646692422,1282120470,319626089,1659851541,257888091,1149663978,1117172899,1818783437,8091954,981242114,466366076,453803658,207518966,953211406,1085839430,880293667,641783639,754452442,273046303,1297700834,1922382566,318713644,523465558,838155574,1711512010,1309817638,1776110512,451342235,181934398,1484157875,1285072585,864568246,2089650504,1787501068,455998674,2026206752,621874491,251283401,317641505,5170991,1578361032,1894152151,1636248573,531179875,891542703,1144382084,224429365,345190861,38618196,661750900,1889099231,714374958,1602019147,124888469,997715970,1636527124,872451797,1659692880,420535421,126991055,684737620,1265138198,1987248556,2076728855,784204256,1168943752,1306324191,1127757443,2044753779,145954840,150468821,1227893024,546177051,384146359,942632071,1252010826,1465217469,1471731779,1463514413,1086999039,367963283,878493663,679700561,1755974766,1655864307,1911848945,514341355,1913534947,1971188332,288625951,994293706,1285935568,1922473612,1754160420,475057945,837759405,1475441020,1833136522,1525847525,1740180267,666422730,1285787885,131655228,1013362388,528777942,749082347,958069257,1609642531,788017029,1651643637,899134860,1737413963,2013484701,250658611,106238262,524889522,487495308,1354722672,1157944923,435405872,1021397350,2122763859,1116856596,1433285748,312061119,893429892,1040606913,215163072,1181135268,1773329835,814273598,1564031659,1534254922,175602730,1454597971,439956507,1675249429,530139847,1641685859,1434817114,1552054882,917460106,47523558,1454372679,663824457,1784006272,322724234,1729910815,613167946,531080075,1335675304,712851289,976817700,651443782,1607948093,690270607,822308662,105401989,388070168,1350413419,1220327341,1298210663,1964632928,1839629335,1529355065,1585319216,788382476,1747881260,1150317806,606241154,304645025,1313188626,1371855167,950457524,1893193123,1220787658,1322545304,1649375328,144619417,1500593309,1522178248,606539365,982853222,1602119833,1790820347,1793584294,725818453,1733768274,1507743641,811769268,1889139682,904151745,709616888,1531510044,816739897,903426519,178251939,1030346395,9121981,1526262075,1441500031,1243500008,780821810,1227199340,154018654,721902525,1131648257,1771146882,598372500,1784541277,831634545,925166292,202440292,689955034,2078798165,183779033,9285981,1699115083,1281934766,1765987646,931453534,606831642,681462769,878725783,1171824156,548416627,1919804477,230566365,1435805114,194616385,1900919588,1176276032,2039502130,1426093831,954909049,1994571011,1727992248,1650195343,176601157,149674637,1275627064,618583898,1446253497,1133898808,1806679159,2022468854,1421552116,1942556588,1511488660,1896120183,1408139401,1824374175,1698385866,404211457,656628397,1731225236,813351240,1480695860,820463045,1293597111,604577709,877009659,1786574930,1712937704,1898016695,2086091024,1756360801,34737957,1338475056,147036619,1114788863,1404113138,373384010,1371430588,1625160020,1340917810,495573459,1290207430,1207713502,1506889233,1217942016,1647452986,774873105,608558048,787640261,990257220,1711580541,2093937047,922883652,1409006746,689454846,1385787109,524054718,125956228,1487948637,586727509,2089011178,586035301,721182949,586346237,1588478567,797400435,664550283,1997548814,744539118,457302118,274536160,783737188,72412154,1274553689,325873565,1780916235,848870860,1323470360,1953427830,1020227529,1346073692,1810224834,373147799,1365551705,1275866296,800680669,1526154326,1801074814,392219060,2096092607,596681104,1703457827,125326303,1250722766,1176478757,1560506978,428481754,1718981493,2066770221,1921776251,1151849081,1001293742,462750481,1007543972,370955320,1831818728,27952574,27873665,208315010,1115506182,490488998,897128066,2110090474,628946333,1886451525,1416572835,192943367,1895431565,1565979076,1851001081,10694787,972599741,28859470,1233032009,706767932,1355005359,1799860783,1882763836,1320755047,1368102335,313702106,10944761,1016550410,776024980,698878742,522932127,1565823163,2056026371,577834081,1467617462,1521932598,9725028,464476073,985213963,1447323033,1343326548,1745555286,432374950,288732550,1126160561,862645018,2057697688,1619424713,106858763,1783758398,1912744735,2065632945,133588782,1529992011,681167490,58689579,928916692,750601224,597653606,329797830,287396507,2041798994,725386844,1672479323,193580263,635602126,232657345,2009087013,1857689385,292943686,1467314533,70560716,345511311,1651897650,118880806,1367529805,663541784,837075079,44079938,975716942,717746334,489294759,207914041,44056985,1216705353,1055129690,244952523,178774081,325634639,1377964191,1095575107,147118156,307563310,853796431,391823822,693914240,1745924916,617412436,1175795114,638219204,851271260,1893689735,1268602181,1136479976,1167459085,286938680,831316901,1408250716,1918144163,912658977,816926041,836952147,953418524,881495081,763328630,1812039540,687352954,2085699080,2004000626,237585042,1773761845,1473983966,573182672,1913565504,1502137205,798983798,1516305804,169379699,738868805,2084149831,718412910,979838654,1285588607,307963621,453315713,197290548,649187793,1862817392,1331782303,704493479,2060029094,1641480926,2015586201,414434940,1064490977,1174630226,1116185190,417208304,1651693038,1698951505,470510403,1403187091,1728804787,457499983,723657417,371488059,850703357,2060238435,159872288,57053626,818123317,1523053274,653141586,1392269652,930435335,197744418,394598991,1431087002,1696269255,1827674548,903375790,2048947952,660887709,2005714684,240757440,1711389093,1116304556,1664016696,1601412164,1806030531,1300266982,1297256408,266259475,2034072940,315395970,1064255329,877286922,766885428,1556444394,905157745,1153883616,1964927939,1949148780,984452135,998882495,1226661318,2115565070,1283193450,498527960,1393283412,259632320,195700082,1385729168,1207459266,1020850488,309477388,432840596,1536814745,1519797292,511304961,638407735,288961300,1927816564,1609284464,2061468887,780363555,1493796356,1018713316,305569583,1326821799,2080079267,872592020,1430815526,253382740,1063131210,41055808,1176465435,279971702,1003365386,490006593,282672146,435896873,178309581,1686605987,2125990859,2033913105,1483678463,1010398348,93978149,307953018,1711612646,1358981167,906278424,1723387176,898581381,124329927,1003525499,2035595151,107513791,1971454599,1685396795,2040766665,1587927630,257495970,1234401146,811049469,1408983751,2021694857,2011045262,1205519377,828726693,606843267,1296854938,44502980,1455083033,243094167,880453972,921056202,694332805,2126202219,1805962180,295650694,1788270802,272884740,1794923990,1751616216,255237325,1663471467,644402,717017032,1988565723,485717937,1970358473,1572172668,201022965,1892124532,1334008857,629630591,418987879,783762162,1540941761,284328299,511063353,1088482661,1302711248,921156207,376897294,536479421,868533071,472571179,1764949451,722443581,1439137661,264200100,949031858,1174275335,1980889809,907663495,1348416222,966858449,1312796706,1360480020,1159458013,2119399018,2053613512,1589277874,638010700,1139882741,1730999812,1336237170,1218293965,945972505,1899014657,1098531467,2116494547,171673512,1372299410,2010463624,2103350860,33492936,964723695,261464144,1885417583,1343302200,1136851479,1876420785,2105943099,176018892,1208531900,406335586,1929631620,1664810308,1597611512,1370098639,1567700610,1805602128,522129775,424034230,337485371,482500876,1002078724,112825549,961556018,1050296043,1067702433,605977178,1723465360,787021457,384471901,750042152,38873302,1032732268,2071216678,1611410442,336408394,1508915431,45371938,808550172,1471256781,1913633703,484147445,19975808,214327648,570810830,446283161,1227869668,1090824651,796697490,1694523489,1403913488,1667053138,2075594117,339256961,269431541,1597238169,1407274784,969156474,727917236,952685157,548140277,229880020,1602202857,889676206,1745278600,170007898,1464802286,1010851109,1795268667,766825439,2009649434,13226543,48225795,1142993669,259226032,1616445385,552691890,1523408900,1222339329,1708149734,140495256,109026484,1820709238,1593856083,858803524,953467873,1959448513,371850736,1714324939,666176990,1775569558,1770277092,817514671,736039506,296180664,1908307657,1738855041,847420919,1392242204,722258997,1737153448,565718317,1958100988,1412212852,1470669267,1825333355,1256037393,1554600900,1693212385,130525236,1927837500,413449880,612255564,971926104,490892426,80124226,2098689157,1673282415,988331851,246278047,628948217,91569800,1387139954,1216653808,2103217767,1221477068,1929931714,1521386536,161449478,1181234803,1203683944,1391069134,736568175,713008145,19397803,544719654,765011364,467169727,1850659606,1662539118,372028187,591062232,1739180736,1479692215,1043206581,1285334607,873966027,1916035601,1800453077,1374185362,1405674612,856417144,755792221,259112939,1186367044,1394571371,816836216,1857027358,1719522389,476595684,941628914,727733132,1169737332,145401627,460317143,280477858,1122383358,1018809767,716960689,1427567787,130497618,936461939,83258733,1967003113,805276308,977960808,373826448,401283351,1837765025,526911835,1015869814,852650951,908947192,589387551,102974052,375298490,2060492487,1411140690,1893463848,141880139,1044764325,1942574749,2052643062,1183184858,2079394566,1721824197,804816498,680303216,2069304803,1706897362,182826741,1199673550,2036221793,1175991695,2045982278,533311403,1829679780,719241290,62850633,1252623108,279398136,307529666,1359106116,1502125208,988549778,1942792683,611529255,1113332922,150503919,926561290,570452796,1165408565,1411312870,482280347,1609006141,933115280,1482138529,1394937569,598952306,224144326,1641563181,559025123,913406967,357377369,708361979,249530768,284734679,355173700,1814468433,290814802,893916532,1695359539,133742430,42224991,562710941,1043813174,1792489375,478827766,436534499,1579701942,193773702,1515557474,57638596,692568035,2115813443,1198252737,1287358191,1657501286,988357866,1044709399,1980319198,1860791855,1190874349,1546080279,493677812,1860447531,1274920240,1386416011,36051965,679705592,964357972,1099589369,524276231,1465995107,1985147833,1305366999,1153843590,976840318,771441907,767423851,784664218,2019068777,864406974,1738531724,5190683,1193989442,1144462818,1942031395,994732317,770052501,1962456599,1771288905,913451739,1900029225,1890996384,927873268,709357170,1476932512,754299279,338951494,2096240910,1900591636,1448057261,1470900647,1602757322,1061202672,39597567,1732306510,2067036983,835722958,1262203807,743915574,1868752472,1997263809,91440870,828618167,1828368845,1489842533,2072515555,1580874055,1918195486,1228428519,1706325565,780578580,510852699,1691779090,599698487,1321809868,780612532,209029757,144391008,296002622,634515519,29188486,1916831786,1393348348,773784773,745661244,1872404759,363242596,1936613625,62367426,5018873,931204167,434678747,1803956821,2042415357,921032905,200580170,1898294679,1023941009,434787575,223507032,1625527362,629544802,1946219783,1927847575,1853654654,153556988,1477429798,1809039010,589132983,872150014,742196029,616279625,377183993,2029758780,1048256118,350158505,899078761,311658510,1661735509,1750558359,15115663,1958308674,376108283,856240055,1020391966,625203752,1846042324,748363539,35243444,2091034781,685495926,2043795083,630272266,1820389581,2126137710,2118083689,1324598422,154494305,2063573217,2049814783,433023533,1280153641,1937914776,194660527,371957590,2019693968,203830937,225831216,91443383,1055948667,1064505412,1278533118,1942113315,703476578,2122924673,221253143,1726712418,58801337,1510300025,866734583,1728621335,51336266,638670389,449259739,193039094,1781134777,1805347046,1964903544,1538505327,687326921,788796385,1948421405,1695411151,1335430626,1199154292,1627319717,207548026,323204584,679463800,1961975245,1952663994,476089388,1829663181,48629275,309347019,947485505,1950707658,46792193,2065300485,1953150704,2130104618,1767493874,1062129478,1257106930,1923202566,1789353837,773250212,69305516,1272684905,274320864,1376904623,193173246,220355061,583053121,1757790421,475066055,1592420216,873789545,1723801836,1699665940,1375577845,968782523,50366994,580181435,196091212,2110674463,388691882,1001668930,1364992476,1975726258,959408238,1753934952,2080940812,1160131183,126053523,2129737387,1355308997,630455354,1974290911,1844725510,658054609,1794940045,1824088742,100840179,1263480879,150543,1479357888,357647518,1745631991,216895027,554571836,558321245,1404264034,16311558,1667250247,840504903,1706952799,1176756265,2006296603,1220548853,236477309,379883130,1932048011,191956100,1046996871,344047033,1431711593,648819918,929547147,1364305013,991178766,2029802563,1746439606,1112303460,1272692729,1042967596,243744674,1368789542,380265782,1854784749,923208214,831106469,159193229,1439310814,552254600,774398641,165253766,916018642,674044903,1030284410,1906486500,373471109,1786124432,1597989921,1331947314,1842369203,921676885,1592648612,1914726033,2039339431,65131462,1593520700,574593505,1854853311,457371147,534049489,1737954684,215809826,1678465966,331411440,382465048,143010294,1266816507,1796416188,465869818,1112466476,1228855888,1288022813,193920364,684468875,817821002,1282151177,517890556,421046059,1569166541,1609658651,466633196,1000655222,2047731135,1286331196,1040517520,453889080,176101976,1124624043,1483034135,867633179,1701859804,2097693625,133210482,703736087,1194676755,1369872165,294479992,1728215135,1742226020,1950865279,943541961,1049530047,1751152665,382418576,1206289419,604571870,1606123553,984787038,1036378512,688998163,224127657,381218464,1061975406,1169722728,1398355816,1519438600,811328991,808366606,1456617611,1870832907,609818097,798203641,936818342,652358394,2117560424,132695181,789524960,152042561,1007023387,1672127828,1981959432,846659454,320184863,721573652,410272991,1210590120,1447023631,1879769789,1027659790,750632296,1864637179,994567486,904544019,555171212,424692734,947245011,1044647341,166979345,670197548,1645577045,1664245218,1936834457,1167193693,1039230789,1151622847,1625895461,1705369355,926697475,962933605,1940963948,625051299,930449679,1837564542,1723075022,1250149546,929074263,1275395751,423101918,171246656,1660662886,1930142347,1688897030,366427882,2113555796,698511892,67431586,1780111850,1375621457,100758128,1504821659,1201829853,247396049,444215096,36759470,140598392,70513117,1958323586,1233957469,1242210490,601913018,2009513814,62578362,1597248734,1664250734,1310583060,1332464741,1492599900,200096298,1716527093,1077200390,906396478,1705796482,2061064135,651850020,413931111,1821520711,1175004310,1047515595,37807696,150920113,1189160473,2125357125,1196388815,1748632108,1918605930,501459037,1746362574,1578670427,941233953,457228979,658046216,1785119371,895426562,627476874,1971860773,438349987,1903346917,1740594220,1588105562,339754939,1619962086,1670188507,698184601,1761806098,1113811553,518305927,1049835410,648649568,1228435912,1200114306,1416969557,439836665,554273291,458754389,489222546,1594798551,137228850,363493733,1726587099,1450651438,186968804,1309065129,1720432012,49694291,1051956501,1146827980,145241422,623265786,2076974418,2003569701,436957696,1892260684,262751504,78612019,1957180973,2018856927,2085637265,1437905903,301851199,57993500,468583304,1857922181,119628127,1233167616,928410335,1706119739,1692917571,1703565253,1222027035,201880494,873949833,1355609556,1590528452,430288373,577522970,697924565,1548255371,104483023,951393482,1662685054,1671737224,338987306,455689776,831163397,933993949,1562653759,1882800031,1488938266,34341903,260881423,624213513,2052521551,1307335137,71889998,17716578,441717491,795561768,99607997,284211765,46713095,1704270452,1112873557,652649255,1638185023,806358545,496351174,66806826,1289653191,1648826337,1567288561,1471051543,156655946,1742992105,53349989,1847749532,2020364800,1741516363,550206519,1422820576,1925694071,667270369,982463892,584954024,905988268,1499334116,1746077591,306257966,385824031,1744348653,335370289,829021806,12467533,1790360244,919084255,1730016721,2006715498,586590719,1884118822,674228667,1321649722,2110568237,1534870422,2059343546,1442337874,1946679155,1896365000,1944149752,562856268,112480979,1052576803,186677189,1770793553,6182309,873012501,2006638809,1628049789,196049937,1695072883,1061592626,1472959678,2071602865,262415813,243051487,1029389536,60561557,1379667943,1052353734,638655139,541982810,431915131,832868669,1934046072,1955563499,500981162,1502607827,1980641985,702430238,566380722,1648395615,92255803,1094161960,399525578,1568562427,1476135849,606596662,937174812,493868333,1840685639,900049950,1191922978,773147308,1199349998,1966887928,753931403,1889717884,1409796251,430618549,1317464619,324943444,124568121,1893767396,1939893598,1251098064,2029328416,889921728,1498050992,905497090,1379128779,723569143,120683787,2102447965,50823416,1813962565,1225384490,31874592,1070843339,1342266971,1383152419,1437284006,1621409316,104155231,1315801203,199849508,863229818,40423254,1958928317,560299910,2069376580,1034399992,808811116,291030714,2028250188,873715229,251352380,53902813,1455099602,2029617296,1784577107,1585285834,140851421,1811745354,1629886567,109673585,612159447,1813202051,363247327,537009289,2000013374,419851404,1295569894,203665470,1198345574,495832384,272930777,1150014161,790062493,69539488,1505498322,277131798,65516032,1918763884,2030848356,258642248,825892940,1160272891,1612804802,73579273,897202915,639635373,1671857608,179422757,1067999915,1307137522,1331853495,944117211,298407706,1619419264,938436731,139950739,1398195426,2032096231,1912939649,809396815,12394659,464572191,1273805753,210234880,1615325037,44734693,1501580017,56869658,1194041849,871621147,1484210563,864534234,294314890,2014288453,1389405024,860268356,2049828339,1405284389,1129628404,633422320,421539904,1172479271,647891454,989900520,976053706,910488316,412615265,360120708,1689716885,1604593801,269370654,1602592085,2125092421,906638483,1657073707,560941612,301672823,891618815,2109388182,115716507,1302685341,1342084879,1324350439,134848901,1350384404,1805648783,1928108365,1109690829,1348411890,2015397656,2119916498,1637263990,255159915,912834358,731305316,255024684,1845746373,652140544,1213912028,533597424,1969377587,933258361,618331525,711724034,76303011,1397381534,217174884,1632546959,329173008,843009324,1513286146,950822151,275703959,1267991421,701802694,999746156,1882350746,1727207562,140484243,1338927717,1664524862,1372015790,588115034,226202896,1691212295,797164076,1217724884,1150526357,23672165,1659237812,2036904792,447775539,363761438,75427514,1827520917,2012170607,16294956,197129009,124142605,861029896,241048873,1480852458,1857609360,2068007735,1934830791,1832688903,726252650,1126764415,545336629,819588107,361002322,570722267,191440150,1728100576,631235157,1551343834,751491488,1342419528,200466020,1183508331,9876106,1041507748,625083810,727181751,978172181,1091181419,1008368589,937066588,34970029,968457382,823836920,2099493244,68464663,2053959178,2063813335,1070823673,421867012,1314163191,1648295581,2106913675,1587992291,43412022,1917791091,274167534,1655561540,753672353,1624534354,680142338,1743141923,1941275212,1167782953,1940551205,1796390954,963359057,1566571381,858661639,165650743,1128547465,2098725993,2012183188,380283385,2005209949,1804069572,889255640,772770727,154596897,643610949,559405593,34148882,876130262,938793942,1790950803,1752548399,322709921,327207485,909521702,1730270998,1574807160,1852403567,897609189,1369040844,796371076,1050590564,1860491511,861373414,1510581030,937628188,1236002066,2084396853,1215583383,365261280,796166599,14829607,2094630246,1658939079,1110709592,741002836,111475627,759416308,554979624,242617693,871326131,633823351,83221284,238811625,502477155,371900407,821996350,1942294989,565286024,1456240113,1430318714,1903698585,2049035415,1012545126,390047309,195269913,1988934736,63348426,618808759,792219396,1180082782,1203266475,1907222450,592620473,2103968024,904843456,1468820558,621943761,889978354,1582293003,855318109,1547643825,1408445765,1863699118,2041867017,1259606968,1320816866,1871748865,1594601913,275742724,356148602,1954992885,1783324149,1708547950,1917922821,1663390972,1352913231,302321575,881453412,926745322,189123198,720300661,1873287436,1009886679,1952145653,1855485189,1963601409,1932065889,265926630,2129124517,1898019221,1986211094,1925899345,86548014,712353383,1581435766,44283562,1930036252,216350103,1074866506,1248764811,786196258,874614614,1397242887,1380711700,734974515,449278862,740722364,605149404,2004013366,552072561,1932813820,837485363,1048588303,43346065,1827190318,1845762646,636206166,1961740027,372574385,30456200,841098845,1384949664,1748689738,1393396333,725363969,1309312997,120502595,1754895772,1368353348,1692650479,1546370041,70689782,232716650,1239328653,45525468,1960101634,450896044,1082163675,1159607786,1292797518,1215256085,624686546,417965240,1095080873,436321236,8668247,1014564975,1496437487,1464613268,1496791730,186868629,1472601857,1441541894,272994541,2123114894,674170508,1385250709,1637373386,1503691270,678632976,1037450824,199943985,1566359182,408370280,195464574,1888103945,1836008881,866106478,351132779,1240119414,1514515237,1681105451,2130028750,1343588588,807757965,1144753518,2019781123,628306909,1397812060,1072621317,1276708569,756556213,1848121970,1553539047,916185939,394918094,1616533416,1093387910,1336168777,1454672954,162263123,740840817,2077453439,1481760570,2009207603,1298988720,363754063,21359206,390714112,997519353,2066659934,1813595617,784723473,1367897153,1020275613,419627419,1177253680,942493191,1816074219,754870992,1726967261,1263492092,1545029445,1058668650,45441444,107641875,1421833037,1142957303,289404023,1412204434,1889503560,1834553430,729094576,163091662,196281687,1466857300,1735615059,527083062,661925272,1943335168,1895193259,880818657,1869598326,923444771,829683313,355130569,1230798392,2056255714,1387221064,1672557414,1127700316,495891483,2042784153,719254809,567732857,1676407943,728405102,1278988047,144029032,1708572294,1478296474,1284420254,1139644370,2101766301,375159586,1063366673,845744218,1160157403,898408875,244172058,1636501516,1652550497,1441020886,510431969,451627115,1001088181,810724175,803952344,2093758642,639997673,2076504694,548800862,23114030,1882863464,1665427688,1747656221,2130016189,1949711064,1144166378,946912648,291031348,2011666448,1967346001,1003734559,815650114,1051473616,1624747182,2067469818,1764259097,206704372,954547210,1097434964,1044108055,786484616,892645951,775541593,1414717553,673472669,2116791530,286374041,1876372704,1014327522,1549424821,175729879,839146699,1862386942,24056667,1830933656,1841889182,732850017,1216885557,1676610138,536276469,308506058,2051521783,1336008771,319210999,1437255994,1740775157,992624164,886152506,1793595818,1118777296,528731932,1258177245,1534891322,1007784674,551581418,970259715,1372900346,143940667,531382363,21754903,201866194,287851162,2098796100,82658090,644465265,81299479,1003410749,1438840821,992751848,1874587105,1893424455,1215565851,467501741,2010420136,579474071,962830572,1946695881,962342089,1890018519,1714897881,830607005,1316153639,1985598207,756778497,1052215238,921875958,273650063,913329036,261400887,582210620,898639105,2071931208,1598316637,2071261501,408887560,462635397,969174845,656267945,223364544,1410822414,1610549641,480110488,2060823381,625026019,411496553,709086679,861129307,1625084457,908437535,196228620,856107888,620054619,1689934678,1595605381,825167584,1126210882,8828868,117325973,2115767063,1527241705,2026693490,478613027,1815054123,1886239180,1282909807,49390696,92515804,900717920,1454990662,1947645265,2065589470,1148729038,1280065309,1604324094,2075460285,133053830,1886876506,1091729906,1588322533,589567180,645472630,688516190,118427691,1668639473,1553875128,1568816159,1417122164,172234931,644028212,422677092,397494402,1331353912,1835915516,211718955,1465065241,2027085916,555160241,1068479561,1397076989,517630827,1168931735,1001561995,1120948616,859720190,690583723,574205762,1203787991,1291301862,282795377,1609348786,175407808,1810107984,1105435152,1460802229,1786545391,2128977894,1981511885,470781654,1113876188,1934573337,1792061730,748423816,1783998765,251410500,380723125,654640866,741649691,1433395331,1312926477,1588736424,1838048475,177827120,1496028147,1647948868,213759181,2076562197,547886241,1573002114,471710547,1708118026,1274692297,900586673,662146282,1797296512,1501491430,1836021014,437234009,184849100,1550788313,1323717729,1257231082,283719871,992686908,1476602481,2057476376,1291671862,437937351,827962152,498982041,779757645,379892073,272257406,1481261968,1603990466,28757607,1158563899,1200617653,1329293527,1369573523,2013577252,490805950,724313109,897506848,569897858,464816614,334947586,1188701206,941414056,362656727,1686011710,1371804134,1639464818,1722458577,102769448,51564595,613425411,730401808,1672169619,1642002995,228760457,656209833,512386795,872971466,1371099184,1002399600,1560041765,1233846541,1240059862,279472237,1282483313,335401589,559840553,1682541337,267573328,2087936877,1591297355,50370596,102044403,1242831355,959761558,1857490155,1199577678,689517633,1639203563,902888136,46279124,539565917,1196435644,901307389,1839305441,876813160,1533213966,1475900603,30645991,91036891,2098754405,1948207757,1058537178,311008850,1997460650,184934854,418918376,689121303,1414747686,1506123327,1119669508,1819084716,782219549,1568858913,1779728840,1109006330,1320787757,905240387,297869988,529637292,77419500,71473891,470226115,239291533,1002763102,1098959139,944354574,1825637660,973225692,1676140792,1168723914,2037480426,1962270489,797184718,673703822,2014756032,740655288,1633325038,2044455317,1267336800,1270356159,189400990,1777615902,424802498,339422283,1354133331,524395111,1394108320,86241217,1530833936,1986580676,24186418,1734490497,1087965167,631762822,295864897,735571313,731918885,1921653601,967384757,1748908325,908474737,352338009,1858092868,105852967,114043987,1561035547,529067068,575165357,1449118326,2087955263,439453944,595509625,1221264460,359040984,539421127,1145055044,2009153933,524596127,638706491,341891237,310596277,516159169,1843096316,1766484706,1719494390,1164511913,1723215913,1526566277,188431080,1353289632,1939660113,620858629,1126610197,2102191221,1496405460,635951327,936399129,1244350728,1686331075,1554222168,107704945,647616308,801269168,1394142752,1208077592,1055379275,1687921866,2042519379,1623470605,1866765344,72889716,1016634410,596119891,871970429,1783327433,121782767,1921931438,603754930,301896367,236033155,1446252675,1391847681,1633790016,1552976099,1157273308,146473351,2119578454,925572304,1808679935,466005996,914420948,244168318,921835337,709996733,865295827,153563272,410864507,1271072807,945620468,2070770940,850175414,188859112,112877802,2093056735,401741882,1451829104,1692571495,1100826293,803004373,1974448126,1340425453,1876711334,22386349,1207101896,788597125,909021203,599307090,1120121298,310059418,1483348438,1755478069,1836926426,214210261,865588135,1926164716,2097418607,32684767,879553515,1032497350,626437366,1822054781,1402141975,646506165,1203572692,2114979487,1542119100,2035152665,579526944,52664363,1601308565,573317321,1820976766,263845271,532409024,768101508,934280829,1319727690,1269757041,415174089,2011390154,2119104609,1104609980,385420114,1738664347,1131690541,291393634,1153922385,920626042,1399665036,151264740,1660670349,366176048,2120128584,453564714,125801978,1069579687,495569541,1848696815,756228500,1322732094,445340776,1745709568,1077994543,1058260288,1874708596,1114751722,1229078498,429303387,1203296171,1585714476,1127189377,1533050730,1036428565,692608549,29001499,1681032814,1397212038,233864375,804218068,777850016,304558917,1883947027,1041467564,1372732451,756416729,122400486,412966751,919782824,1842273632,2105517502,2027138683,701475640,1236754621,957155028,943821008,1011447984,2088840827,963997280,1560497221,1774639237,1031066158,2042006367,474419540,1632370538,187502637,1197051021,1246496229,2055586037,1269134663,2024684781,871712301,297608627,176002656,273160786,698142109,597836910,1330575883,1764481215,1749949365,138087989,1435971270,1668251124,482436336,1029595271,340926475,1778796672,2130244958,461158329,1043363847,1196662877,2115481483,1634007953,1715663434,1975446274,857637413,355711115,828975398,82639853,682463572,1596623332,645244182,1636511525,1900495840,1902782233,1082134702,1471608666,1973632598,2102483639,205715476,2009531332,300278730,1213757771,77217425,1000082652,1926134136,1375745711,1663185980,1083479504,396627208,1929579995,1567242943,1973018764,1449445745,328804568,153686861,1460092024,503894068,501156633,1609430594,351852075,1504082783,1239944894,1759616669,571631263,39391191,514614667,1350338901,1970617580,67720747,1683051749,2009122346,597972595,938395570,1951309735,1883461662,1767583206,462487239,1607301168,1872813613,1854746585,1256690665,1815987827,1404777953,40397302,467012977,1559750266,1139165280,451932607,1829463247,1553054583,1611685255,1047324875,1350541006,1149759594,1666122390,737066005,1916286598,285988922,1262638542,1377362449,1795685325,1539063499,854689089,1954440325,647108703,1114907653,214121393,1921934533,256164420,831944842,1352578824,365250270,1449135007,181683611,1308479146,1460868069,2001890184,2076024737,652325065,1558908143,172197197,1048040945,2042974757,1852774543,1177985978,79797828,2095384640,1046291083,869248579,1400418736,367697153,147213824,533579133,1193021403,1650608058,924174902,1611571936,1342298762,673776941,1021147863,1011228818,1509070617,351048848,301045672,2092388216,123000019,1259441792,192054221,725563007,1381164231,231711914,1090511981,534174994,647468313,1832241999,1183635101,824739804,1242957600,179650237,483442955,489978970,721246805,1020342017,720195938,1756052031,1701520945,1907591175,720551708,1625841954,1801644014,793891809,1838754989,1874472982,2011263772,815936895,1297259853,995567309,1243835352,1765640551,1691257134,778586799,1397803420,876097964,1279879850,8088594,534530045,1436762820,128436897,1196612431,1707112305,1653196067,858064194,739130764,1281973592,126351163,866404723,6095265,730021316,1589681972,1956675816,180852171,18266504,1914892636,1639412828,1177861880,336693528,161477267,1665617354,161269121,1127754150,446822406,1193173952,103589195,668995312,1452568234,2018885818,1414176913,1991984114,1143450720,20844732,228376410,2017142017,47713086,1572423664,1470743736,2057045682,339402985,689270507,1119410167,1694261902,193538112,791208565,304027789,2002605347,1668134220,100026362,1822452610,2066240756,894820094,1812911039,666166948,979820313,1821111399,1110505684,1083080301,145540667,1180316555,2022119945,642853434,275149911,2130703788,1997264875,1239658229,832856855,1076203003,46618920,2004416998,1856769811,2015113088,687085679,848345575,1510995939,1012987126,1881319394,1335190894,796026341,287105374,977168995,1848916511,1560972822,1218502802,1787065908,1205705002,1831871932,787530883,488050279,2086132139,993847446,496463818,431565431,422064017,1582053790,174863390,410126827,1284690157,1973301364,46393587,192182713,381817654,921879765,169605925,1804798345,1557157933,837147639,439556473,1425062793,73347995,1947664268,905071147,1181128368,1599649014,1776904595,601628020,1885906132,1334801057,898680697,528674667,1846286292,2104611105,505327104,361798432,250358968,1685284093,554372070,1842163771,342545746,1837016351,989245391,2110532264,334624983,853964444,2112709489,1550202975,1609111461,276551508,1680733885,2109729631,842882422,476811729,1339886886,490317142,1124813877,318044428,58755367,1752037044,1085736201,1278892586,300774495,2024829470,2124079484,671582278,1765532257,1479993053,1133132636,979082902,587961714,1953983241,864143137,13691730,66298027,1980350204,1356767153,1349052108,2064128491,1205909594,351310553,1152922311,2099253147,1718427123,519053046,1161282958,911136098,807978591,1229262639,771480414,1414380265,1711814388,1302040835,96939774,1797088383,606429557,1549120610,382791821,982710435,1325838431,1461711095,765897695,986669029,132779228,1180432509,1156747982,38459175,876423068,249133791,858150248,2073964173,1911029942,1625338409,1455862918,2076402566,1074350565,953070751,155542461,1291846162,351679894,235986805,51563009,943395345,114770362,1785821901,831361028,1895111,1739504623,82760582,1739807416,369102422,1793988968,403697004,1542413938,1986274421,1111378145,2031192553,1786829263,397629977,2083675437,673302405,1282236861,1945106456,224900999,514203987,1981815679,1617879544,1142732814,1503681410,305747002,886107261,53942705,1707760717,178724174,1748554999,1914733622,1719070969,1303395910,987316203,884377,1106281430,1271310927,1027877767,1781651590,107870187,1483777582,1216961714,1488727866,784692418,601515994,832306245,513522096,215195823,1174851819,774394866,1000265681,1005088513,2005474627,1662690865,2087034124,861532745,1161094650,460669999,988243469,837104152,1098578245,566067803,1542845618,1236336280,824731577,209712371,1331394092,904102793,92974948,1110349404,1831158597,947604498,1306402529,1747278344,603367825,270774194,468684705,2050154114,977455418,539770408,725302547,763166376,1265573906,1098426048,1667944444,928094865,1334638425,826981793,482109568,1440363783,1247655555,788681939,999853906,745389842,2036483856,1752749409,533761509,1940294561,374695075,980689814,784465644,1629838257,920310150,1595617853,1255794481,1228898593,1848447504,1165140075,1847165875,1857226888,486123801,253524879,739073047,1809776222,501968229,1060303600,904540152,1387877706,1918866524,165982856,76890365,1335093400,16748210,1792960065,1499578722,1242947358,1513722193,748262097,528419302,684198592,1966554849,1949238881,1741843481,664647446,598689635,687857424,664584859,328770197,1288708253,1332166343,1212549016,382311052,483280724,805072546,1096262179,100386886,472562947,1362509732,1462334161,1581285022,176440263,2087211239,439053232,1928197510,1129253563,1607669790,1747172370,363653656,247883963,138275383,165741082,946941473,1425641736,98522077,1639221915,902951718,358046886,1797644452,1455303457,150620677,1295629986,73631622,1819103547,87477451,41750688,1106099988,1740577997,680037587,1618966850,1924896848,178516149,872489326,1866787569,1875564287,1679906636,1760361705,2115618270,349143003,455167025,216993359,1531415822,1805956322,1625757991,1461083948,977083082,1691755836,852212807,1227385883,539013500,908761423,2091307295,2127767320,1204929001,1496856090,1373470890,932435055,1466734830,29336367,1438689648,1974032852,1880113300,1537332843,1030255165,1575162185,489414397,329210948,1233081516,2106463370,2035672049,2125644907,758494926,1919252323,1582211356,1880888460,188951150,339653478,1949294119,1455836766,2050806390,1446146947,1750072353,534413713,820311128,2110560981,1910757372,318677788,747028014,500834815,1074573302,1598138078,976795639,1610992515,777396775,1048834624,1048698018,686891489,201818004,266284377,406822134,751440718,1745746935,1494727441,927995326,1749719494,734347735,653550288,992586350,623526212,729376193,1819005014,23154310,1414815979,1916564396,1973525076,1695511707,780609485,365059090,608872932,1782203414,1927891462,699223667,1494892417,1370918990,1462816806,1081327011,1463718525,793530188,734555937,1218832258,842171465,1964472498,1318169237,943655105,1937258074,2117147375,203074113,1450775516,1300255916,654468228,1856722644,170765272,754509818,1388626098,1720703844,40468680,895767165,1374346011,763108912,368858406,1151095408,1120571617,573340551,1273069326,2089352098,1649557223,377059142,752735617,1741006651,1098641437,1194533963,394815166,387028620,783883113,690074084,41620456,1839331040,257835148,646918462,400810604,1189095732,1155876263,1429166096,1430274939,537098092,510829655,1412168677,1333953117,75790542,965208315,434163142,1144952777,1008829384,76023605,1932544008,1269777510,1511854076,773187304,1550531552,346503084,1218649575,340187775,772928639,1752508845,1507407833,985174292,2097238608,1781584187,211543766,923812142,1824714016,1694542068,52531412,1823381770,174252416,1195735171,887944006,589079779,1468585586,328702035,1532891142,1741723010,1518019167,1594052183,69070656,1752437964,1150297175,783144284,1826044835,948599233,1509844909,397727166,500017151,902563917,1002963793,1814339701,1744816721,1509208483,2049807744,1005948795,982057446,60544574,1033557802,51774174,1596044493,293773610,425848496,2099299655,2086019284,1030900865,244426887,1457253969,1460055317,1873652923,921422825,1078117380,1015515261,1816988260,1106812430,1501804337,1955731468,1860292518,1847094863,1450093056,215068813,459667580,808554331,1853643361,1746390450,646287299,859352247,1716648631,173390665,1185306314,336059763,271705278,1026738293,1552045099,296036775,1032282673,1527731573,460055321,515359628,1786283509,481472590,30860923,1640076777,233976346,1683590958,706702908,1923419830,2114401514,692270326,1739164534,60751441,181440732,1184819888,761164036,945232225,761021416,539050741,1580341215,1693225728,91485571,943808492,1562779246,996800974,906303120,508883605,639829291,149063281,386885624,252867078,1849981596,1082045328,321896150,79490231,1301411326,1415982442,209811501,793699125,585752562,2118879901,1615092149,635977083,1911727502,690652266,76187914,2051643126,1401235971,551040105,1057096043,659886919,1318522987,1835143030,1360464289,1782778720,219872213,1378835429,99978211,1617168653,642120246,599933360,1669878985,482073754,1425045396,991386190,523552184,2082845825,467989879,1101053057,2111287332,1263693598,1845321675,2030752157,1315547144,554724327,397026356,1324204348,1128070781,319081715,98013595,855372077,605116635,929751826,1649170259,1185491819,248223264,1425074587,2056341218,20550658,663704625,1917726240,2072723485,1212829453,901062670,1908305230,951206996,249187129,536360894,1197311661,1172452987,1294737986,1722923408,1505075019,1998998557,1530311477,778086310,1740037896,1487362234,2151661,353367476,1026847701,256666880,1173185188,1291000370,612459026,1781871297,1537800697,2055434228,1266826496,2072913127,349059906,1519512120,1102296980,1589335478,1345984572,1727353331,2054625628,2110208877,1214666741,1178528403,1358015226,959471080,49503093,1109630162,330034098,1096745345,1440384362,869750956,1828943676,15791572,1369036309,757432293,1905849725,187991919,1656833884,1474507355,1239236385,855510274,2046280890,1979066967,953031189,2061396909,268118872,733015854,1429352902,1663315462,517388561,1620592081,1825590476,1583327662,1262984643,334052623,2037337141,1193713261,1301953920,1611732670,753114976,144736460,1612900118,808015235,487443760,2100232714,1883827319,1560626335,1625576406,110498736,1034760190,1962494564,611682394,1189077058,661942376,1299372373,361943821,1576232369,739306538,887100921,348556456,276855634,1409363829,315316607,1032631115,1609124381,820417279,1685609726,1984679028,2002693773,824866934,70374091,1032507895,1597485293,1359240918,326026193,391184714,141119776,1171492491,1535800916,238379252,1872806580,142949595,1818819163,508678799,192485487,1822879702,690296665,452954612,2122149482,678993239,1277576993,1215865440,1598159065,1842853108,1636652885,614944047,1428823899,831294678,381307721,1684943937,1463354365,1669177695,616247284,878515473,142338502,2079598426,1154319953,2056085492,1283869084,2053254732,1488241883,1262926701,679854044,522596515,1664078331,2061770327,1754354218,885589002,1389304290,65186515,207778055,252219812,280887299,1380437652,893820245,156222080,1807559511,1200146811,528695338,122242029,1995538067,495722433,794905635,371977932,419581654,1840062302,1084915183,1235711024,1288664771,1979802343,1303135537,1951745242,179873832,283054498,1575085685,1009006505,1910090459,405173102,1475575128,1689161979,1034146760,1918036387,95718807,1190464907,468768102,1025382808,152852901,1764557138,593927390,2090994680,869522622,1736059351,174837190,1550920323,1637177206,1501621231,854112042,1646622032,1545533141,1327984831,959765257,848765109,1938962868,2032059992,875992690,453293910,1394560931,1827462231,566021187,687117557,234592977,921307833,1821302642,851080681,424110531,1023341222,1781769261,157039202,515641932,1824945596,1807921116,438550967,1704932898,1203300713,1069877151,822926861,633183361,1494848937,557007174,852147348,1221349655,1198855818,2013049341,1343996106,1753224254,891560861,2061882310,1517935358,1303710106,1913935052,1342788277,1988954737,22074484,1131361941,1324716549,777715053,531448888,615162201,1884720725,300731313,543593567,1859200070,996038123,1023320856,1184939172,717687081,395944333,252893202,1783976495,1192680679,379691396,1995682471,1009150322,206850173,1502206603,1112939524,1840748023,38875802,700189528,50187019,1305518086,1383807427,1454138698,1581032416,1916671319,1369568115,528951109,1329242290,82458803,251726079,2108257235,376293824,1167675166,673859889,1742176450,1768644659,507160630,1784513016,1253467253,917174258,1408032699,1801420484,864179969,718269959,2110971865,797556747,84043789,1175067340,1210818053,1564760592,309269463,1802085745,1216199731,139638857,1632152284,1701213114,1726275571,1937251141,455775740,882941359,1474474574,1372060812,1589277436,1069851697,1190644145,386533580,418695520,857590861,1917360062,517945558,1680971095,577003915,1520831981,1831487626,134059797,1462156561,1101878494,1087062993,2119644079,579534402,598937794,1176169593,618175490,147524521,1946587232,1532642445,1156060684,1265363461,955611020,1003162079,1187320812,1952487252,1386429051,1145409777,856756378,84936633,1423711955,533792811,483386458,1910336395,612551624,75403307,784432638,1236651447,877167305,1517866122,1086873534,774103890,830062856,365476266,138888326,1135214258,79708763,1170233358,678272000,1628190719,546023667,332417240,1027821823,1795011998,922782478,121264618,1863815026,1604880406,780927172,1488067176,466696685,1897031017,639114960,1443981834,1919960409,34267267,161839535,1579350318,270988292,968784337,1088796358,1735762058,2075501839,2121649613,361467653,726660137,1167529635,1905593267,540856417,579951854,1035871572,614411612,231819128,1725763779,406223623,1357398595,483328423,998670841,1737464030,379425440,62901152,240328260,967384795,1015786855,92268288,1597853664,101153362,1015991775,1224081471,1301347246,1744481745,970136805,2069418727,1715582772,784108033,1597517877,1929805615,589430112,1188601621,1612564882,382590219,155502508,1878188353,1636511492,427911954,1303563840,1708702591,1654902635,726199364,135372989,379348065,742565691,549849369,1686204975,760248497,801938953,234699494,1817825957,1807776755,168036917,363754834,1716833971,617499243,1971633574,628366583,158912458,1779680710,676212774,310099867,1857291372,837053606,1138552797,1186782207,626164173,1722827281,387148576,1787350517,1811133235,1301234527,1822499449,1335503324,1787560610,358322507,694603730,759712465,833623709,1586535848,227945618,1550828026,825575955,1025808346,1521202006,222352131,1910246103,1907191723,1927279390,33085602,1644443050,1714934051,786273178,383396622,611340337,597340792,1342069493,1825644292,1160161162,1439279107,1644792163,967489002,758719543,442534374,1519537962,111978856,2086092998,365403330,564856808,391120167,1851212799,486226320,1088554273,437183980,785279367,1057155930,141685832,1163092804,1848271056,290750273,775145022,661777635,334781406,1209942513,1318561498,1526220346,446301986,16731859,1231844003,385121329,1340334660,1961602988,614964360,1525428100,1584108259,742515890,877520265,204142377,1051287736,1230376385,251164159,638761350,1998508885,112027238,2034199415,6097546,1527574443,1026657558,1204933980,863688319,754241529,2091758247,1121836593,885214301,1322512815,1664005964,1444552732,297578046,1769953894,1561406233,819390286,1689650736,1976058883,335567062,1170465508,1247557071,1722310245,2053226425,391815894,389877719,553743970,1036403373,222119532,129771158,1287554038,1525278102,1270523253,2101294230,1860055117,101070519,452372174,1200211239,1069895486,208628947,2025742523,1746064325,136214679,1358688612,1960006422,532499203,1919187589,175466253,1526108533,966634909,1707084223,1320350156,1033541223,353036314,1413694674,1721037415,1299688979,990705942,1680632779,861442575,1373112470,2124712363,1848359714,1963490692,1298627840,821708978,2002659654,1042832723,430393822,646603962,694159841,196694969,1629897064,771587258,1943642806,1648913575,91989049,1426085750,1306330874,1081950690,1716220660,1236895171,1409905277,201515237,409508724,799441061,1171122650,1557896008,1857055444,338013202,1154497797,319080295,568409466,1570435027,997569045,1755572645,1444042477,656491662,956069194,1971825676,725060604,60594272,31970924,486065095,2116412771,1483866930,1920832147,773606950,1243723547,657800416,2018488487,996173044,1225060808,422977782,528394244,1582736424,1305860705,1687984410,840041527,1475411994,1172514195,1586972649,1516276763,2039767268,1452218287,759459373,1336483255,1673683211,683628306,1303847353,111251818,1373107289,1500911079,881189499,803216453,791455020,1557084662,1562710037,1770189129,1838383270,1420098521,1586382531,636308033,741685768,338112157,1659113525,926128284,1578421076,2123434305,1263804180,2081231238,84427245,1256321944,140711494,56224953,175582824,1085354450,1344736105,1685567300,983026277,1130673109,120630427,481491313,790278645,1632579738,1099268127,312104101,924906797,527697062,804798297,2017279243,1695707485,1520054939,267213214,1953807301,622905051,201132849,689314856,961109139,1927870292,1435151857,394341151,2026395399,230401086,444591545,716998418,1536827992,1618570049,1465595113,480935865,1556624977,1673864128,2105935997,676475713,1730940776,1779382328,2058697595,950916480,311067462,1772469497,656242740,1378494957,481605802,1403988603,986414063,705170389,1083427365,1766579605,1732528562,578660493,701995233,1210187698,597180146,475156224,938145770,1382605274,267471740,424706923,1512640235,695747230,1122934068,71538115,1927225980,232751930,102778882,829029072,2428638,1101240584,712748607,931581855,547901847,508161604,1041707341,1667360561,321448398,1500948270,370929962,1581549185,538935378,1387531253,1434975172,1277549728,14046065,967674609,1634454765,410090812,442607996,828939207,1655067234,1493151655,174000704,2083939210,1067113074,587853631,1288523248,1825409202,528644671,2061099007,944608244,2081411670,322495449,460810172,1012986259,1492789368,1290844989,22039194,1952622372,279700465,878500365,79063630,1263502408,700086842,107400382,8937745,1606868500,2008136524,1289308705,1366422353,1411738676,676084449,1989627606,992378219,741824574,1615986969,1973033701,1826162663,1864036882,466253242,1458453768,1355009646,2113568751,609787141,1454490635,95930052,1607522867,1724816992,2093239785,584769127,224315800,164447121,1438185070,774787912,139032532,1664000856,1169658028,774855912,937312157,1828543071,610248445,1922379659,928900467,495344921,2009793459,1865609613,784139082,597153353,1640152710,774333844,282508980,462454233,20766408,278025481,2087637928,1977981374,1938448687,654785791,1456641970,1902555533,821063067,2025847057,334348768,1743813468,697195966,717173984,2057908265,170387112,875080113,617101415,867090212,747793718,19597618,1269884728,327274088,1452818178,889511273,1719143717,124535450,944388702,222971927,238596318,1366536783,1016107478,1053983434,224374903,2000926809,624153039,1222225482,514981461,312672544,488309469,615604313,1622593213,1179602496,1529284391,1314684823,5630694,1706547342,1687317469,1967074714,1668974961,1316389711,473184203,799800028,673882247,627823320,1426443729,993683842,1848995382,2124163098,107735734,766829415,1814845910,1946828264,596127689,2009111258,1785132942,1376514079,1756525906,1356528556,199124615,695162210,911298310,952573895,461070082,1843003192,1750191462,65386358,21471712,346247016,165432858,1615822205,38882254,805953353,126803748,1838395396,1202608995,1920441930,1171653017,181145705,1900543380,115254196,2079475682,85457476,582190802,1635259651,1001204678,147712301,1229425368,1521401607,1480348845,1745841615,2025160954,1833114104,300644272,81883741,479363249,1168391676,365294163,1797500801,260118969,444577380,194614556,1637403660,1199193654,1807685002,1673788317,1251115096,1860582358,1710749626,348634558,1865490275,79268951,407078304,701555131,519065890,353473048,974917995,1012873536,28449047,1046648864,758107203,975343160,155044906,1590257314,307062566,2068922191,657352869,206055568,57353493,1930740087,1497099405,658110873,1109402849,1967891576,1415311975,1143543811,1377895590,1552526374,1567244581,598183349,1137367308,1150579885,754970068,1064008813,2035567144,1764033276,1434084839,1503062597,932937637,274362189,209842495,204184694,2011944851,396191630,691561025,1116797911,471195765,1642269117,852545261,1483025869,1823679912,531748952,344316688,774681561,1107588336,1522247379,368432747,452752300,2089247336,1629420496,1385772776,1512485205,1137263641,519003913,1361952218,1555497671,19714388,1522220399,418739238,743658197,1950278683,1693391254,1158657037,1898508529,1904570119,1076375561,1965163984,1866429081,1682996803,1428054478,705436792,1990792715,1805700455,1183556109,469812785,687692924,1327419299,502664759,1367504772,1166949476,506556907,2019773248,1354181920,1093156515,1547415501,215183810,1671232516,1456241923,1106382021,349711189,1191427981,933402813,1513302915,2113352755,618837719,988913477,311786192,1603019496,468503137,319421277,1938060928,1938702983,132446493,560090883,1543793828,698152543,414663977,81624901,158616127,929020147,1424007663,1651376193,1781969028,953166142,1784273903,1401819151,2044746702,1222517686,1686843344,1484780237,1672302160,393092831,588587987,669909260,880051812,348744267,520063985,1928956436,979838826,1831703235,1221413389,904223961,511788736,130415836,1978044464,247711275,940865596,1176415982,1281304366,1114946848,1087208893,1209419156,1543781146,1089872356,2028770268,1105091679,863383486,1083686147,333226188,11714170,1186799929,151421240,2258998,1576304165,607186063,2062467163,691158903,1719330332,429237029,1837860096,1276799282,789910751,1201150014,1517492929,1257643935,766574510,184221804,619180961,138764586,951048375,891478974,494862534,78496285,494151870,628237674,742200049,350472901,548464825,1186580353,1995165118,1228249778,242073880,943443764,800802007,298663021,1957155451,1364490465,494797807,1073983593,1652826489,381671623,1448214365,1871347302,1186929595,694462590,1434198501,695162688,863377037,604593399,1655637974,1904768223,688048165,590490303,1861616941,330504663,1619327025,368276376,973407275,82126258,593918476,1962411461,808745758,193980424,1306420041,683609126,902674533,1335665005,1653748095,1175597428,811541457,466242809,382013058,510679787,603136753,1730958265,791889119,629186418,509050523,1340768283,2061704023,1823947908,484682755,513168491,1733947152,652773523,1499125809,2013315357,1640451752,1421319690,1574221769,1989950186,1699095399,1509605772,1034094568,860335782,1632142088,1808292052,1171431490,699388813,188528606,1146722531,2110432055,1892026746,1837155142,875892822,1490334421,256702603,2077225495,708445064,1767978530,178961146,892026657,72965009,350439597,665130338,1801677211,284761466,908423156,165820102,425015268,1472603676,103737274,1479848767,1872017059,1332243308,1595365834,41358136,147947391,1404299981,1682215697,412271732,214411341,1943250326,1165160555,1169993196,2070480447,1778990213,1845232701,1126727536,1124619906,671548387,1047218139,260521835,1163957772,104793517,966528027,337351531,2127667776,1103776189,966811699,1286816765,2082744473,1121193299,2079887217,1759207348,737636936,2027944434,505837983,1465114068,1459403462,53267185,815473528,1437207383,1563766256,1433672388,1616144326,2099442533,793117066,389184221,1157559662,863497821,1302704036,1668250760,1336325936,557822207,2074594237,1510365206,1451268625,2002423145,2013886281,26401768,721933205,90956469,73028622,1944248683,544826082,84514566,244357363,1492639780,883848644,704053899,2111373038,854477515,1244251170,1516684270,1691875553,2085620098,1344231514,1296162694,89494933,706432360,1094991265,676564687,433396440,978515364,16750766,135070873,1962779155,394286194,608105624,125017256,809574333,330491631,2033381958,1542068925,1595618153,1460889068,1775228065,691722553,1320190392,1465985866,342662399,1512745766,1406446297,1907801589,82892447,1484454980,770053308,1148001289,1380871172,1346685991,359434631,1262610459,1879060955,89418600,551636251,287023325,996662460,1252942822,1666021743,1815912336,597184056,507034250,890138331,944654495,554028452,1193035905,242947340,1559177174,590998119,1231842505,776123205,1058398760,1373711749,2010819223,1290733580,1779824168,185282960,1585481774,990992498,616835749,1226229637,1576441636,677073968,1692948556,787917080,1935256115,838642746,808361157,1108189392,1535303203,748974529,839849663,823982089,233576176,1708024917,831561699,1654062984,1560962377,725532583,1190571646,2120633482,1177125014,1589759954,1580131356,276755880,1638292454,2067728447,1018024625,1168827758,293640538,338888792,1103897413,821294491,2032347633,1290672643,987894201,1053797084,634617218,1180339916,748915962,923778323,640098225,1846136273,1594146663,314267852,584871231,425914775,420209236,489734101,248511721,1493925123,1859249139,3309384,498966355,2041390452,367860444,2081452233,1033709208,1538673337,474595583,2032848720,270914181,227796417,604123238,702358503,2077609690,458353130,1175068162,233606292,1795856038,1214201981,1487757684,1303317753,825736724,1527275397,1108803705,607948222,1480270601,1786310105,714741980,1815463874,900768239,827853502,1125600681,1027774452,828747895,40049941,734864704,806677910,109762584,1383037855,1097841848,1662570317,1690034021,689197132,995313221,1193389566,2028289243,1717726495,686087091,288640749,894348204,2124467268,272139267,907571410,1139997329,522236294,971128612,682636139,496123498,266508708,505472477,2036648829,1234726024,1182818313,1096300518,499679890,581439778,426029787,646722309,110017715,600073122,676037688,61612772,2029396284,1444268625,1866872087,924517568,1714910706,1953424076,324555355,58321346,2072365377,2060085696,1792553261,1499463303,440921090,1278113356,129493644,952558156,1008138048,1529630356,1136944301,1208433745,1007922841,947918968,1270013193,200636939,1072392545,428850800,45160640,316857594,1104624188,1128827138,708199038,1371501670,1595811254,1158221696,451272301,875815671,1953783494,796475226,1307767867,1462125149,772302328,1311167093,769808545,722782050,1088576359,155714264,1956860068,145830562,285230973,1158454962,944892469,986406400,1354384832,501865393,324983448,1094963943,1803233048,293877220,1865099877,267219492,348874466,2039831640,1613854722,842345649,1052294747,1184127460,1268992198,1490988213,1420977846,562773148,1057568377,1189861848,1185788435,1083920577,827410071,1365421205,1118649100,1703404123,672986818,1553167105,1472704874,737167851,662794403,1688709083,1117367478,511206518,511741585,469008836,1262438946,1838723715,1694817863,1336605740,1639865506,1345043680,1972274384,36643207,1971680915,697995611,1303617877,323270555,148847216,852101852,448658742,1631204143,1729375161,1192907155,610593222,641158570,907326170,953152748,1893352254,1293995618,1447547834,545771764,2084650088,1484524158,276927719,452694693,345464391,207130765,356763837,543534411,1314424900,1640056668,1963644208,1532648760,149473038,1835198020,970623954,138376190,952441807,1115367972,1618996501,447047834,1279773839,977942730,198602945,880117146,1541942628,1589844682,1915284810,227281499,607327115,769641481,967288565,1107525261,772634177,1509969818,1614906307,2129389262,1745037112,831796785,1496896676,890916944,720715971,2071410837,1439617655,1465218642,1448209524,1825854088,2076791280,211528243,173703079,835775542,1040935325,99332184,1663362258,277372276,919754058,1196060100,386101511,1893625210,1714561219,1144959861,1839686314,1559560037,1277994719,1467522233,1180633025,1363186810,169290031,284131236,1604094327,1084088726,1151024028,1885337708,1526110650,968854701,1259569423,297351155,177365766,2053639395,1582268557,1133919800,1581705550,493862907,737953483,501519843,1478210379,206543513,2121863824,1202556220,728083208,51966319,1564344357,1546132588,1186649026,1480122277,1827417339,11763326,1826713981,1302767452,1086673508,1523432229,801513222,208309647,374547197,503681946,1294092906,625062778,1715703950,1060340846,1250684449,1430538266,1046474663,936620823,1253599540,1163053373,42297300,1177939718,734805592,259251657,1497693404,1989030922,636450104,540241586,1259047326,1470520751,464600844,403878723,1006270276,1983903286,435589694,2036681229,25320084,169503940,853451923,1916954813,312959393,569262387,131041109,479579661,1169071626,1080273762,793201387,871927911,1433655398,1762998568,2122435512,1041813281,148218763,1360010959,432283672,1021511093,2017576287,644815875,972564910,2103447522,1309186331,1472827569,1491918450,265319599,1039924641,634671288,723233332,319085582,1805603928,668110747,1772819793,15320675,1929685051,1131661217,994573520,357552283,1160759228,1506138120,1460437194,1975378734,778937862,1808733905,42287139,2083164334,1526238022,117495927,1420297,1134454825,1691114291,619938229,135851688,1053518634,123247817,81841507,968030428,22972415,300803722,1996842192,904955791,1840734943,420851569,1260248302,1596761309,1510779443,593540616,68514392,1857514503,2102280,1246768136,1601043643,677251214,196561985,1764522112,1540161416,377729556,1990326514,264747708,1735839280,1248665489,71312816,114139362,176036958,226285276,511314427,757053176,1657942035,438966197,580347436,1028764792,1296815520,439068963,714313964,1863333858,117494952,99166202,422822775,1861402364,900795240,1162083106,450487194,1711113852,1942890896,968340768,939628534,1491562280,872764008,1916473128,1714127058,1346756061,584186664,1062139690,199597513,482385768,215508942,27083162,1379755200,574099485,1359962902,158294935,1248102922,543909910,2120358768,1126976522,1303825997,1928898501,947250257,1173833375,1425187226,756673388,1964196994,2017955283,2051999815,2064275243,2092602622,1679573398,1205409195,537858034,608570739,122367042,1713402894,788508936,185722127,1823090744,2021107938,1078332199,756525339,1874330222,843481613,1761732053,221125751,1764383650,559310046,611085608,705682340,266466534,2119569441,1785663283,869925159,1033019974,938383161,1133326520,1978989542,1196504792,1883270759,335151356,1484229251,1984485733,1055376663,1662696890,1132376962,938183708,991380562,9072449,864692180,1518927990,1406263683,1908805750,439502539,1864488705,1069092494,105013278,1072707305,698654847,1393299320,779593577,685039381,1381014224,524961212,564382259,1262943535,94944266,1928060107,829972045,172045199,1528679947,1228692618,242244151,501222101,790325425,271305800,2085189074,277584388,1592911789,1600766495,1144294045,57691301,636269277,2034847043,435510944,1693351076,1919850575,81837909,627229892,1184888467,434117671,1406127985,1656764637,1090136376,555918192,1399243760,1978877464,1836384854,404145198,182852235,437739115,2070177686,993026156,549145537,945981145,697922757,391144819,415854000,799131069,760894705,1945140634,1585141708,1621200638,2112087706,1619204952,731790710,1255316147,1117529369,474885354,741755774,1951494858,589933565,562803823,1513639676,822850598,2068789238,893462513,16227167,400256860,2115498939,1900565032,944798713,1822618127,1495983247,1756272490,291505895,1094410612,545284053,617108826,2072719389,2029610219,317636027,1574927608,769831673,252889939,981878057,1289966129,1030544435,550091643,2075190265,1021172700,886764639,641967636,689132368,50507410,500178015,190455717,867518104,1020774802,1342941622,43163167,2111333351,1725107049,443475840,5914694,1221842844,1333162810,167595358,1218243680,226498129,2007598626,1870688253,477906057,2078559003,1646373630,1933165088,1160378107,1304914418,2097330419,599828970,908901157,1487549497,1043828723,1869366489,1219416304,1216962883,1311049979,1236174623,1574466656,2008733339,2099210919,522257839,934467934,709831660,1039619343,1932972472,1263757941,703048768,610424795,1139055594,573827176,977916920,1738526729,252649843,941912416,807981942,532006749,2000456282,119478733,1181977732,172620197,1762690825,1034787926,1043107487,526852557,1547996347,1327435680,219070548,448265698,1976824117,1607024744,1270149567,1350248358,1404326252,1864402584,690104307,1279598113,1617760973,1725661576,2128473049,1876686811,1138264907,885188542,88395997,789418363,217640200,559682251,1875911825,1402393962,887295312,1319482815,700713881,1271889343,308489057,1766387404,1776392253,581708282,234740303,522895205,2046718270,1834794068,1047291993,107527575,896863238,1037736472,1116150205,898686730,805140524,995922787,1080012748,766849761,1864129853,1622020825,1118756803,1669228014,1414822458,1053393337,1546905929,274221796,1172421502,1814368166,11011850,1277213041,2017130901,9782388,217771589,484175903,92948442,43375059,367741422,1042595558,961527523,1911169556,499941128,1927295977,973286996,1874368371,837209029,610964412,680714045,608000192,1790731965,51662764,1449334540,1911898471,1138915949,750173504,289183895,1943891292,332490019,1703307674,1807767915,1456105639,583844402,1454145089,1456979780,1079882898,1915213336,511514685,773916719,895301778,504132471,1963167936,2083236966,1058737413,415629942,1967123418,758035808,2073372493,447274811,299218152,1441415251,1786548570,2088109039,1073909959,463987050,1482416170,580374345,791879046,1975190549,786827809,1701285268,1699559485,1613656966,1769598777,1624103099,220579937,1990205368,15067245,1431355201,63631435,844061279,363291830,1943893732,1653455692,2098081074,450820724,1390133517,2118989950,1817212842,280925116,1398259754,1576614095,917042250,204626869,15913507,875518734,1657361514,1586314840,945734031,761687847,45751367,1476365669,1325377752,1260510373,2072615378,1591083734,812071792,712988764,1875369676,1508429253,1872273240,1340611957,525698517,474930794,70113,1829296619,1093786815,286563723,1023880579,711181445,1243731752,50370034,1743895703,992949819,1279418381,696955344,1465251276,1455184005,1625403857,499232296,902586187,260296486,56535337,1301183328,989329629,691504681,854275964,730542844,1199393782,1511815920,907710651,1487675080,1954640214,420623399,1751811058,1300261449,605931903,89588188,1512102663,758862549,232878828,2121940787,1661736987,1845162030,526968114,1560504071,1920090447,787960762,1753003797,917651066,7488619,1065108528,538545809,1724189636,2129475366,393779302,1184642154,2055276289,1328244936,219358741,1827471948,1622367796,72184618,2026115911,1364990960,504794601,1909797399,1465920688,1801794710,1491613214,1281832862,320084319,586569311,996639393,1115094644,347441552,1829081111,932946927,534020072,134555015,1541490754,1749122027,1538983594,347039237,71018449,357675872,970390879,1448718797,17564453,2110573382,2050874912,2060825072,1831477493,36996916,490927534,958600124,2129282628,817924614,655809960,521298157,929632857,236403763,1326101197,601888996,941151605,1510252821,1299784466,250058613,1802822396,1725660587,1875529253,852486266,943557830,516402839,1575588437,327192230,1286299667,1507356933,4625900,716592235,1111509156,1208510077,1201069883,500008703,1412788933,923954447,1786436846,1250673809,1675097045,387154699,543709409,1058202635,248783590,1387661838,2071793581,443301541,1931844938,1876490001,1820768846,91399553,1841004950,817958660,627349778,813745722,1581482381,673923422,1432206080,630883112,948192867,1543034777,1820492089,1559883851,59217744,807739901,1292099374,1592405611,408330612,251221171,886853073,1580958484,1369462680,892092826,91625151,1492058340,539281661,23360184,382652324,1545890,1660384421,1601247504,562606602,993269466,632080258,296919191,337143524,462142319,1796150478,1329680621,56898056,482544111,1582920353,1522818856,192709088,786169276,593863698,1272705449,767558339,64643964,1280880933,578950926,1415652503,589549292,586673586,727068742,599082865,723509262,2001743541,1365533252,1620602686,1053707677,1912718003,293354143,543884387,334262734,375845835,1602868820,1580984598,170414231,1086518798,369831883,1845117470,1814390471,896618978,1265553572,116333812,658000672,704312307,2097372593,540586697,1297816828,1051355799,29646473,272874360,1337262571,134066872,363522730,622113420,1916388678,1062532244,1757444520,1084133243,647999611,1111165191,1680873406,2097378452,1888855103,2114242333,655906115,2052625245,1483947475,1990431184,2065546107,1898252211,1904079973,1376777237,943787232,1098396581,333307463,1531823204,427380201,188543911,571152836,1298661458,802216075,762445286,562707478,891210618,136304808,1618856521,1358941304,6123808,1816941533,1783394350,24166360,974256804,1380911432,1012267801,2010899826,1916794213,1514506140,1159372721,2032908719,1277662296,971786503,283394459,908837126,654143591,483141601,817008996,2043956701,104426201,1285073341,205775913,88450975,2097310682,1619671375,589523409,1808264815,2105955285,550945809,1179311076,650174980,1762940194,1442447730,521251006,1227113598,1775074394,10868554,636280716,848663094,1783649954,66221538,664167436,294003244,333370103,1583708730,1762858087,1602858587,1217863415,1063344057,1809153584,1190786698,387948719,630607545,1888055876,1984053016,2048580795,391585423,2128250234,108872348,1181985285,1211176898,1926942436,96347227,555642100,1429890937,289061808,1322988089,566049704,1685725216,980629230,533439599,1974130561,618113714,794662580,415798495,1939064603,875431231,1926340734,952826234,1395176975,1018815592,931238695,18229380,1281361438,1554040999,673107964,356682875,1894152544,1143025043,842207468,1943434365,18166611,1537744828,650238496,1461099349,992320251,1804182618,1135019455,930087457,612119632,1022917410,630259349,1295459933,1640586387,848871862,1227552256,1200597274,114942300,586267388,201218373,1026684334,510867368,1266994090,729700151,211913766,1241930320,139115728,1096507429,1273949922,1722328549,1279278451,1995544063,311618105,1241115572,2121613353,2042067701,1770422874,1390521719,255393333,2070377574,357229059,1089422678,1048814041,955219646,258237452,189067135,638485254,638763035,746023870,1524045275,1585211769,593748836,1566883467,1812789465,550839619,1073414781,680753744,1399324717,1876436604,371993625,347540873,972912684,2083104932,642318147,541465865,1683830316,935739695,1844107055,1900148444,1713214480,1832297063,1850358969,1853143074,797407145,1707399289,851630524,1158854078,1080145735,1401061877,1397166484,2062974247,1755249834,1002438904,1543894430,1173870273,1523441069,2016101284,1609802899,1096585171,736240767,17425823,591198101,717095357,1000656062,1845559491,1999620620,1554105429,325121107,334879770,2095230518,1073967786,217851580,2061797881,1009699337,50209913,1508206605,282379132,2046345624,822263067,2066508980,285493804,95273973,145934938,1900661350,189170500,1008346000,518025886,1298656204,1835733333,612747268,62514927,323653953,1326566791,570353886,373613675,1157364660,1300397392,37649175,1517868837,133007663,886629562,218015080,106781306,503632275,1829725711,1564640795,1236704844,1727967635,1417258865,2047656794,1332524348,1561445305,1477416118,449205774,578192598,1057266034,878053519,1600153965,1195616821,969840856,1347558751,1167610649,1919618758,1147320040,941792643,1373788095,1953734695,1573215499,696208089,714749198,152817233,2039386061,1601202608,1212572071,1178818706,1938825945,1275106583,1885569336,892899412,12823285,795111566,595515701,1616235287,1481383365,1921575788,1199106762,1327192981,72338877,1248507885,754041637,1269230554,1670740182,1358090287,1827352947,1778176197,1200436692,327332879,935067235,1648962477,1240264262,1259595509,1937191892,1718877093,776834107,1162729012,1494415191,730109288,323489256,126620130,985169512,159930208,11254781,470093456,1425175513,845819644,615109640,1117888868,835369959,1120706104,1588579726,385839654,1208097214,868957091,1978427212,394782006,354539998,958602799,1105078222,1634436781,2063558273,1832725077,1226809611,348691359,298345015,1471352133,1905267088,1071300861,1723117795,1547349413,1264393638,1398301433,2048017326,1444167400,1816435514,268227453,1716417001,547684302,1709851856,651293742,111500947,1972116765,944371355,387677898,115048102,1286103731,307054013,253310891,1498450756,1159247398,1228422933,1311042159,780353231,6915697,84004084,1039900669,272777362,2078181517,1133040730,1396719992,1404087011,1644365657,1471410434,850694041,425513567,1971550473,684337493,266630200,194448036,1967910613,930221023,974901507,2091212711,1338375050,1284434221,2054112360,1089822033,433847842,384994183,1650464997,1176823574,658570067,1337514375,1837743460,452772243,1241704185,409981084,416102913,521397625,1606883948,1692073486,1879618647,1886045472,404899894,1588810828,1755414608,2028179864,1462488246,103876357,1332944866,667252815,354493900,1347186504,911717504,89413764,951421280,214018795,781971440,757926458,701508047,1689604315,2039084825,727630933,508257615,318048185,867205724,1973825144,1170136324,257569983,311812763,166581353,487245938,2026414308,1589776917,581323079,864278492,1364745243,380786873,234051211,742623087,1165528992,863317726,49834673,199787638,1222810932,245842275,1929986688,1463183408,2031443817,1597741129,683746754,1068467088,43124029,31340389,2116727553,1772853245,779668988,687353946,1055933953,1882781403,592615370,1140851343,2090398724,918188100,176461207,884931932,1570351212,1258381726,1011122100,1339661683,779159147,1510608635,1238225602,1100266831,1093509728,22993881,833461383,1737468542,1508695277,1144034466,1112620000,1966079163,1327373540,2039211525,884542547,948468302,1620987151,531189301,782942279,526284650,102052617,1653767543,609658199,1862699682,1089735642,646542394,2059602898,136040404,352689066,1895008528,84545202,2043126139,815810757,1646244717,1401609861,1323380581,212582763,678111896,1582835614,2057882321,1222284378,1035381298,62771676,894827756,1164330106,967620070,1143521061,1296917617,995491739,1003783841,62146702,1045744129,1953276797,1240423030,788244944,854057982,1392348956,1539602866,727464454,830555248,2120201350,1334632126,1065744903,1280555298,1291946723,1094623284,696821288,1664825547,1092879441,962084236,179680437,2046203552,434191084,335263455,873848859,1430977815,764444068,978688605,750922043,1441587810,770936857,696073491,308074779,764576541,1132281646,664589100,992549810,245397937,776108945,1364217697,1060819301,1966832095,1778416367,1275488438,1942911696,1324338673,1581062257,120784104,551273409,1046857747,778845479,1675509071,1886442092,1253282598,356736444,1743705200,987427920,1868852424,1579696639,700064381,1047319394,1851590610,715221434,1709439023,54408509,1837221395,101802203,1319801039,1266540566,1702626285,2078990235,194487038,1092561530,1711583447,1844818712,674567426,490100624,299471719,1562295082,405738765,226130195,1651700667,896828262,1583374207,1911379792,1699961802,1674697243,1528439090,510160119,2031867021,890095741,488549100,1844270139,392235361,1518303182,470434508,1059980858,638734278,189472449,899993600,1201805166,2104732668,1716437576,1833482502,1636582780,1722640317,902591612,2122842543,1849894983,1703255661,118641317,1600996065,88437779,784617437,1375095991,426588540,474246699,1954204474,1626732230,1823875038,390188221,408967870,992145219,1182706570,2106762788,1277264654,1717218257,1999811816,1876592518,51464949,1918205569,122647304,1054005287,976257933,762971720,1965920282,1717803172,214903722,1979717467,9564673,1045615508,987520385,650656542,2050627708,1917000779,1761458627,23134107,1688509744,642548679,934122511,621129061,1434919515,1015215484,1920019188,364248809,629593318,1997128096,1320097295,978309913,694000768,145734853,406543543,1249377214,1160071185,472239470,1985884889,1990954066,526467507,1337421751,2096142826,869698518,274419315,224282314,1327664622,915270889,951401488,1810279412,2057043172,1338240729,1045109363,1744176028,529773359,555483831,323790473,466803223,1040367416,1528391178,389798113,1319240844,529889151,811045708,215014938,1319279993,1235964963,1345928252,299790081,590464721,504930502,1299939655,1543787622,719715904,250213364,572879387,1350267722,192458449,261920427,895280700,570817373,1982743431,936905080,1201937640,1126386331,1397203600,473671418,742576171,2067071439,1452969355,1158503345,1984432392,609763687,1441267031,1372803242,528520708,2071379492,135636821,552326999,2053950898,15135858,355258033,1561206195,1368265259,1176803053,2007363469,1531468072,254920795,378739951,2096129447,49234724,1073029203,1319676890,2113732499,1494252137,1275744284,2012606496,700424947,975354314,1403207338,423554300,1153392256,1371678996,1122292939,171228568,1454819048,1323968353,1268901475,582764730,172676273,1630071391,1813323930,2083881242,2083704950,533957783,1703582131,845896976,36293273,1482363971,889171492,352690230,589781502,1335092638,628652554,1492420422,1434382915,820560679,480243120,135070124,927618459,597571368,1083780247,1837378528,2102639005,499789960,1099592424,929685398,108109388,434634112,803055865,785030728,9364913,1830197039,1549235300,1343225053,1612847546,2041737933,1953927767,288685805,606739796,347731354,333534407,2129845730,801000894,1665317359,1671554799,69057718,851640554,259318287,926658961,760209520,533135143,1712067596,1751417225,1813116485,1939631157,52511358,1322351344,487416393,1125926114,1547034372,88351467,961293420,1965790312,2068404093,1899446650,460031063,1915720315,1993169301,651770354,764463873,928458529,842425504,1577434631,1707330231,1428949945,353111658,144698804,657462210,656244479,1122602491,437792592,2043396457,1275520470,1852348509,402185244,1405893700,151297042,637986612,463862964,474585461,1838728408,854619091,1856615702,1863332125,1315880023,1016326344,1689368857,34950510,1835397649,1650838102,1154301955,1386582697,180861967,1304015340,1034358904,242162928,172425793,1233279233,887109652,1736054220,1442507030,1666969597,936503635,1755812338,878563773,2026734807,861177357,1890855965,669556795,1381657754,783006285,629484700,2094618684,2083504361,214790911,712367935,752120197,1611659315,1434951108,846197292,408808775,1673156372,1955796170,1326652320,1220358727,608107241,1468999721,894996393,1673513324,1441480896,1162585032,188039962,1519025143,659739507,2034090906,1782276112,686316955,58340809,1910273704,1345101115,637934924,1000706344,1395147123,1524111370,273999276,1626291341,390535741,909123184,859147419,1765633370,224184462,787323299,168266011,640622887,1113805007,1337736305,9130303,963672206,227852166,1489631047,1252454343,309973658,1823056270,1757890467,1521106282,590618945,1106029669,1051050318,335842198,358671198,1286284847,955817263,621303238,1757929363,458881637,1354069137,1982127187,73250431,1114949010,986017869,1656004987,1191352707,1351145586,1511215218,2124658826,1673362670,58499933,1820022361,1058777526,1376492469,1029895640,1867326592,281890620,1081172744,1620776828,620408073,825747582,1960699777,894528905,112933614,1243782704,214406072,1730093257,1033431103,1855817017,1778322191,1732693615,1317828239,1289045702,885963363,1397719742,1180959998,980626504,1458333431,1992035942,412803712,706703785,1945496532,444027507,1900314137,1907610278,1025423469,782296919,1795315304,197859761,1117055025,1998284357,374812132,2039388795,2070960789,1364747260,1770832190,1569791207,1407686098,1890743651,468636452,1856934270,1658903858,136355010,1301107849,2120254537,1295641400,1543229861,1733531931,1420771948,1337360076,1080948365,487822311,1452389475,864450795,331918635,1714696434,1924977346,936233785,112814045,1528492809,1816182612,47941860,569436414,369967449,812482377,52602296,528464373,1431083655,1960575664,799406773,1050971703,2055205256,1981187038,1797292082,1418588491,498854681,1017906561,548129857,59312895,499975458,1691310446,529881281,1889075862,800507046,304684404,1504626241,1085202967,522710162,756084643,1854900326,573588529,821394654,945661283,1430380914,502810900,654183310,442512164,1189067137,787698117,1918129578,1029443969,1492590413,1429298755,1114688293,1554445985,562239094,1769371623,267112383,1129606436,1800469631,957516501,48448034,1896570829,43261783,1637935927,1166967976,1876758262,1443298730,1555407594,1527815123,1091230007,315312046,2010621865,1250093890,1886704092,1896694587,1486671613,1366294672,376051234,1060784319,1635118493,1365731297,1668122434,384362777,313616596,1426810043,1623381893,1605498838,642934064,2056274016,1916077249,505574047,2100541654,994846398,1361501546,1450632526,1087068234,396899830,334070044,294798315,823589737,2023018240,987818259,433059604,1686439080,515542497,1193694022,311617145,1669532566,1902684619,561937427,1799943037,1420396553,711782601,1878488548,1834229429,539614516,1620547424,767431280,830700545,441864193,74842379,205484872,1419915687,1422205026,1295524652,146942468,821436983,1211958884,240127839,250316389,1589064122,1053557933,1575486037,277382135,1636153243,1451120227,1703585607,668619671,1894199872,1063427054,1707338235,1741147311,1361860003,885949815,420998907,261962082,975132919,1403347201,849320988,981856158,1277987101,1656299504,365658649,181672340,2010744865,2040558188,678252708,1949296528,499240407,2099829106,1189590784,1273547101,105607905,1939692901,1134980928,46954339,1506773633,273837745,2088093114,135184015,1297001477,946450685,603558317,80132613,673548989,736234314,1497176185,448668867,208775842,704452072,388921612,1341586938,1393180298,1186322789,264482162,770092405,996128827,114986153,363492650,894232435,777069737,1146453682,1496430289,1433705646,887845278,2032803853,546204507,1206400668,311625967,197768175,1347729161,646297708,456740295,1940764366,83638639,1676834370,708698020,1642488279,1347065507,62636525,484727803,1288047719,1453848610,111219283,4523239,1178453175,1388554027,356037345,635733641,656680803,1253531325,197043840,947117484,17320415,1585322374,1848499949,1785020809,329490333,631671743,1206074477,1887756069,1197588189,1247171555,1914417686,719566591,639924713,737548256,436590682,522492046,156646829,765442118,1741590725,1737812830,136986771,1433966741,922706595,530484344,893628421,1320614946,438801580,2075433765,1665481602,817053533,312163720,1971316633,1476327603,1101783006,441132722,1796350983,1008659407,1045700045,278099084,1702127999,1718018338,924097431,1941333169,756996560,55708016,1679683084,1230169416,1340665964,1612127153,43379474,2097019252,1234039022,764483577,1857032290,1917250616,1157187506,1463824000,580422870,1752045212,1616489458,1164382224,1848283392,994855893,1346631816,1591391830,1467956050,1242512392,2083584982,13479410,673179065,847232904,982930850,1188184380,640147492,1041087184,1380869142,119660437,1829966493,1306585433,764031414,963220926,915590580,762180934,1248522109,507582692,1488266843,1614276146,847680286,642313475,909272506,864109079,292852482,445647310,1397065401,1461237210,1480361363,822718736,545391125,1591590460,1253549389,382633246,1530417718,46234445,1550603809,635869055,1368525548,1075408693,2028578357,1905687858,91042958,1219886714,936206545,588940629,990974227,41841385,692564719,870369306,1850517729,811559250,1748368866,593168414,1112766488,1109104938,723738622,124867249,1489610018,2038980288,341194683,1069232791,508615783,1849344840,1185589958,1803679127,885559697,79168993,1198388050,205008214,749026728,47940370,82601462,980630485,827387582,1567375501,1546734799,119627612,2130612156,191059411,2037273161,1450110579,747074196,1203752685,62454242,442571704,582653737,1032925180,1565612815,467965124,1357588031,1554743755,751804013,167541340,29467793,1468957286,1966961133,111554336,79237508,844373335,1621500596,2092453508,1466066691,291765144,524577458,84766272,2082808685,1369227844,1536721640,1781173092,1752325415,495102303,14421509,607664689,292535400,461254043,178485877,112289521,1930812827,1512697016,1704284531,1207849252,2107214827,793969632,1377707080,1151951212,1666831754,1474867997,433819791,1149636431,1081136413,1144045325,334733147,408054066,135209273,1987459146,500705322,596385703,1343841665,1592394688,718722558,430667062,1864464887,1037343101,42650524,372890341,517302257,1548783120,133828167,806710099,1721431230,1464703642,1004175852,842797513,852361558,149316742,1244748281,1338329691,2007698857,620819421,1940087592,1393965041,805249468,38582521,1687599075,635707710,214084336,444843828,1137847567,1059736662,1246671110,1027755569,336599117,1042589032,157702763,1572819963,588088297,232019630,551735557,846918234,655834408,1447988049,291981085,26804139,1125175086,1600895355,719458594,1671317119,1417828798,1216328204,771263485,361117960,1302665906,663574066,819480192,1991120854,756814696,94671469,332994057,460256094,971889132,616316121,506363811,2047731242,1625034925,773112356,2004978348,725606362,803166647,76103047,1915614741,712017546,1840511050,198298662,1060610390,1909116164,439914067,1906174871,434024244,1789252001,272979836,543871212,1815758288,2007343204,1130301730,1810287137,1415320637,895237200,1069101914,1709980618,56988489,239972439,164957470,1338443656,1187700123,486463928,244904002,986022347,1542778039,511350475,697847556,471550154,656042865,512405953,1990655650,1810206822,1708536791,1222621107,1442879326,1436801337,302156477,689627958,1639048854,1505794164,367843074,879685856,1919694563,943005784,1814960841,1202076134,422014284,745018497,1258630223,1785793514,890908549,832073423,1236886469,585144700,528344627,1964041416,162141267,332911794,1707404100,200011498,57782857,1394453889,686705097,1600349731,1432676533,2082552885,230621256,182506761,217122538,2103816673,1765447224,1519036360,1050558339,1222680171,1645085890,558125454,751581519,1014412580,742949115,44459772,1947033285,657904956,1785110633,1375149509,1395745286,1964173180,707520716,1435202953,358514796,1284740347,473901437,590656704,1980427059,295516730,1313041469,533359474,1063918163,763333981,1522398935,1640249715,1321299755,1869102436,712633514,21012425,788030652,102213205,746245364,1247175477,1612918776,1426733110,1699906572,182992464,2081445483,844308972,1785544710,693275009,903043297,183846655,859713016,2116613407,550898031,431897461,930336937,1534066621,1322483271,1530609544,4014315,988375247,1084142594,1175197907,1300403686,2103697666,169040765,1863478795,1683870334,1645504657,1946305546,223310410,1682953101,788814208,1956136838,1088729353,1771306647,629236076,824465828,412294159,1282489221,1742517289,1662467029,1971375784,1911812117,1864643874,673203129,1688985354,1016826519,230598041,1773604153,1119003668,185845559,1171345004,166759156,114800425,1095265403,2048973081,1061461055,801532165,512212693,1872129943,1285218244,1856589132,759122087,481875184,1623723107,1909307105,752057129,258353325,1996392057,1252083430,1215200714,542845692,1344381885,1993646928,1818911197,1365081575,1500043991,1259054655,520851190,737250856,201787812,1388725989,527236098,264534228,1338471462,1608135035,874534393,181640334,952581696,3472550,1841970885,995115743,575509852,399369122,2076107245,1825898263,1925066168,2071940447,1360171737,1312741880,517999990,1461427808,724564453,1184017434,1001650845,749012602,2119624564,704792370,517982898,1582360653,8462844,1016265462,875720169,429379519,1921627043,849828399,960135788,308690829,830926694,697454001,320966946,1669176410,361453907,1781346331,1496701817,1764600253,612074813,1423603227,502149135,44957551,532394566,467385763,1508578434,1280238399,714795118,1618739869,2048851540,752860189,328969277,241139152,461435870,1169286550,1697987509,1734311017,1408234181,1714479006,1234604069,274550972,1006500732,587578277,1276093800,2051574155,649476924,1722141361,1759939608,521082928,2017828215,1773266605,991383741,885403855,645609907,99981712,1829656938,1715837388,581218222,312529581,1399345271,1631071325,23729362,859546165,1409759061,949681736,1527623723,1889795388,1957912608,485253014,729547013,1636888437,303171078,1909963323,2099454459,1069759891,1156439137,1657494322,2027353917,44477037,1351151308,1697640624,2023557753,1078287911,1957384560,1665020788,472354408,252446273,171433180,1184006861,409660978,1553413714,1062915529,1106711380,2100731316,1976138850,1845984489,1650666495,2110214247,2074645679,717248257,1459524378,1551591077,2084531256,801040170,1799020491,1990342720,1524054813,2019765191,807968705,1554389355,1766408740,1612106037,726052872,537273946,216367235,418523762,1428437104,38399804,260174832,1525739370,702774480,831202126,92413406,51200965,1231840368,681364238,1539426884,663944494,957796033,1821668356,1485837980,734802781,1096014177,23377510,323953288,1074482083,522608384,686440845,1089355379,1900342599,476451063,690959986,1245912234,1809670321,148016713,513488528,149829287,1683663774,745173597,1823092542,905763196,293453918,2040536604,1997946360,694428977,20892852,331159972,74987041,747433015,1098189936,265036051,1941546121,995389052,1024860916,123450599,1807599514,502400800,275423059,1927311443,1925249483,1455405059,2100008057,555293904,1781214226,846993554,2097850712,725634826,1583298449,1107006106,235034514,2004005271,1908071254,550548481,1473381021,1351188473,763483666,524226463,219796045,1534374573,159714335,1058629258,515368688,857898123,516489858,923080226,279542213,1360655326,2096276377,1506291337,654438527,780803273,1352986941,1010492242,2051769634,358096827,1683578447,1854485335,31251409,124424376,1712325164,1876576068,219704647,899805813,476040796,1432558539,1004713510,1310667437,1079875473,1825821367,1495468324,2091348993,417628460,745107150,1813611742,1277917031,1853182612,1436031314,1488655068,1879295472,1816316619,852814911,2034390574,76226223,1527570359,1868580604,834515418,1148544195,1655060153,1482200861,1290473357,1883101066,2129844345,314544303,203049737,296782253,144094520,384663249,411018925,1171557803,329527139,1914974603,2107455267,1183848486,1671598393,1772987317,223884161,739407333,1731453077,1763600089,1685336591,123085511,1254084471,364522767,1374560005,1263770613,704942032,785603411,1507544481,1721463454,1961175972,148589097,1711107528,194531587,1514705772,906562588,50018276,320386590,1658731024,419096712,1214692548,1657853571,432007045,1429978187,1952875010,1009791868,505167974,1475445885,2068239801,1617508719,2071230545,570944865,1249221007,1201348051,1820168887,1037108803,1469578791,1399682722,1005021779,557875785,1132900931,1607527725,1841801023,1878616925,230655103,792023011,2047815612,752554813,177158438,1974349251,106753311,376444418,1769140512,765904165,425060712,1760175452,1759884502,896916394,1906903657,1472131950,1425184750,1640443782,516758892,250156508,178416187,1510907859,662673811,1004074115,1844839104,1237445557,860707736,1152263965,412200477,144099615,1088157121,909464240,1426266342,440063399,284619969,494566033,451781192,680762634,118114691,1590584355,91644264,211741771,1503920763,474452811,310569518,1691350189,2038431642,107368642,837136270,1854998328,565393108,1028283621,1288122088,555687623,989572452,1202513285,1276112180,1420582233,70327809,1457792865,682239573,568804697,1679044545,1952525865,162207793,298339959,1545262621,1894583218,1730381610,862484612,1523479802,1931517167,985951083,222338467,1540347131,1084579098,524982582,396249093,1410983939,817337097,1174967526,1351057621,1012817815,102730047,1615325367,1070324529,1522344543,1849914287,729218870,359756500,881011415,2083612034,1016792216,759316565,1121236612,1608443092,874248976,65137853,1896491638,1582045148,628085893,846775887,25094254,1116182653,34242651,26906591,2129067210,1787399767,802828368,1538580838,548270443,1588482060,463868941,1262198188,2070116209,2042530569,2033987742,1922125265,1898224234,1543227001,264630180,354509990,369167918,1323201108,1560808998,1139126734,1142261967,315187272,19639475,2054186837,122606627,1182873658,1032614804,625114565,185131761,586804836,1492006925,467426954,1680219027,446082096,1971251309,1706414260,764886683,1481817108,1620216491,1423300368,581505994,183294762,927836366,1997868890,385438678,1683171926,253001986,1708261907,150663055,1865924477,1844429650,1422420783,1332379560,496214573,15780,1742895988,546988090,1526864516,138531442,831562783,851629376,337388967,999278642,1131353679,515058678,595580527,2092098613,1752744693,1649772441,819207376,917597052,864813218,243602028,1293631777,1339855823,1214069888,1169456587,546568626,2025807150,439837776,374401972,229408797,596610337,1178879,2121904627,161144551,610237880,249764040,742857821,1409287002,1747994982,1157045628,2102599524,312542471,1023128573,187393460,1371088535,499247327,113381732,300801793,2061555604,228994848,674150509,1501031705,463760711,993191529,1070223389,2010751357,1010019553,1161612274,1422994891,96394318,389454213,229564966,1272364223,631957757,2078422707,1820981278,1429966614,1172666010,90752861,1030223046,722704884,2066010023,1450596820,1318924441,1440855514,951183464,326801450,653478050,1267060600,859862287,2117339227,196921082,462861038,2071500535,1068972595,888581747,1696028587,2008218455,38366095,1447038558,942122928,15138071,68720879,1200989970,154722397,2014254436,15515311,1469560522,713164121,484829574,1487677599,1888765328,1605268388,370914819,1571782964,1385185538,40622757,267817834,1924427960,284101445,1452338496,918743076,1031789177,193070685,1674419050,1555189179,896615108,70809947,806546292,1207896846,498559494,720924835,1563013161,1097563524,1888112583,1039328354,2052156965,1706995045,164004208,878438745,1695975157,1297459485,1635301905,1284393188,240598866,1918913648,890161766,1034411283,1364118253,1070067525,620136366,583916550,790465128,171337712,801723869,206034322,121741155,1654960138,4302021,1887518542,1631114526,726744543,1631891504,1504237357,470184640,745518713,1577926704,1339060714,1811607654,844973249,1326932194,1226232792,274644815,1296604759,1461341953,997891003,999255909,1064575137,7016232,949652402,1928049178,211726866,1572609296,435200942,1257644218,393951215,1410419594,1404420552,133571115,1985035660,1138136327,604610803,604165380,1079101710,766330825,1777223588,454607657,2106818609,556010934,1928626130,97900301,1965572981,1375189268,1439341006,126453986,1156603015,317561286,1014755962,1703969620,906854770,113104223,1794843435,1698374418,1887452994,306105437,589927958,1621718035,1474348388,1812951415,1151300584,411879974,1791755175,975929532,826409463,938290431,1177969662,1223193857,1846651958,491943606,208120594,1405301334,1211446950,1113721101,1773835827,1799447771,1598747487,1493087548,1822481408,1908973658,1723868491,1211844969,855734495,1516288067,1158296707,1391744345,413403758,1087988956,1818630319,1729556590,974231095,1772635537,435941820,574679362,294331397,824681310,413033702,1567009296,1817092168,1938767505,2022560500,1589986890,2016396346,1115000130,1784045272,584170201,138618562,1406003439,1065194269,443324068,506310159,88558161,1532639754,1652600400,1924128720,1603734429,559721362,1215583032,1447057528,1432998240,557888184,453194277,547430102,1346713387,1894374413,48733248,481467764,58441971,900647384,1704585705,1392362016,1830746402,659815462,491715902,1585451181,630684712,1994623668,621807627,574168136,1497737061,1063498044,228083386,129159528,1394646833,790833316,1458665158,813453677,361060663,260221746,1309557955,521564933,705849690,118452656,650980222,801060459,238348880,1243364129,1009018249,1017153572,1382256366,2085527282,1198374793,1042700998,1818876028,1783631653,474670322,1079189881,514738613,1434707935,579777917,1661860964,1005564630,1297575210,1630033411,2021843080,295227917,921146086,665248279,322500605,509404270,211780407,416873821,1170015208,1011181343,1383358744,37853965,2085361034,1657051067,1370780687,1885254713,282509598,1960475888,1209553879,1737271658,1975656327,1618408485,886564396,814395444,1038693360,592202226,1946925245,90390083,1861781331,1150554613,829568334,1296976636,1226974626,1441636256,803528091,229927945,46260462,2061138157,1367045492,1606310854,1486005900,1871020174,1665108582,1445948812,1601549121,923366879,1571389395,769775656,242261019,878392224,738326068,194638499,907051322,1308912039,213593345,1122963736,1851793480,1903957612,838008126,2016448970,650933212,2102236569,497416472,1738548861,1100178656,1783822199,263001823,1161088264,1604801480,942823503,1099553363,2050764359,434148269,565997829,789753333,1822449319,146537324,2068007785,1202671913,365866355,395406458,748258920,610534402,2082693329,1442451626,1886724592,334809845,1367132520,28094854,676138274,1545541207,373627213,1544597008,855436184,521286788,1765015730,1679289909,1126343983,406907052,1033705386,74647973,1516231611,947254483,513430275,1707041311,1396570307,1879420333,125597457,1338184471,532197991,1887405338,1200213637,1886531016,1068234923,466838735,205454336,319471373,895042327,438997351,1070573233,1930375844,1304547098,494600946,1817228782,938872201,526990392,48344255,69029317,247864800,105219565,1796317103,358889531,2108492606,1164931463,1868103352,738077992,941591857,1755125660,1196861248,1270672091,614332850,1600395257,842410864,92131731,938672592,454837599,519264364,1248630440,1972305382,1763120723,1035705888,1663535315,1866990162,1575249577,256771623,1406874751,88791792,1061719029,1750627074,864421538,1842425525,1493694792,1261827595,1116856107,903415142,658282597,945971322,1048274043,1099529595,1573190377,186405922,1430744747,1304715019,1914274324,990368689,1118377013,1388954481,1557537681,1102211999,525725314,1070740824,1694447565,312824142,530830923,766651521,1844315988,1745099640,1242803702,505165299,760784362,1807409134,732882117,234198854,767141078,1367233037,2102472699,580758501,669195793,1910568103,1943125090,1188381516,342565973,736467003,2006790497,1695869807,273829280,1766111164,1138300294,1084392836,482391460,1045501111,776192874,1297425883,1896101064,567334399,1549199452,399709760,1644237039,1874349390,712668199,320996136,1341427054,2039375489,433180419,1458985582,2039554571,960045335,1324170358,432458445,1043084634,71063382,1659583174,1802705249,953543020,373639223,386291167,708794665,1560891631,1097160231,1564928484,779290704,1283181277,2086212770,2016463515,1339535790,2092134201,1800042313,781941293,638453592,244982836,816542499,536583790,810144298,279624373,1461250662,399320979,1140186560,1574900563,1856532861,1305990682,392123108,1524120038,503862761,367994335,481569427,182019429,1338578876,1689608941,952442303,1899492301,1102357866,1687876399,1503111055,346694098,1104866290,1039407815,423923659,725074654,1322751776,1309188957,1898630278,755844685,1933270717,80560827,225734390,1569109036,1691224301,490540073,752237158,1896376558,1849322541,1083284062,1772601479,1128129650,680566684,1037950538,1733677604,1097838713,1303066958,36619898,1028515915,1202527600,1893205585,1362496570,775001666,1906042573,1829734670,94265193,1705131428,1032572923,927521368,70533430,1696805231,565366965,1170113437,2075672137,895100754,398712092,2036660574,564709385,447006212,290368890,869710464,1839687711,1627833904,1820019265,972537409,205754671,92368314,1593875871,1104457350,1256561633,1037936321,1349744814,607003905,395540011,740398609,451037325,139426611,51389603,501283776,1495880690,436492937,2067394740,981614797,1037488813,979223620,160935588,297656484,1210913825,1343800681,1374314009,1081109741,545857498,1150753690,728844961,412615796,95408638,305766458,1321556048,723903936,295584082,1121964780,1103900702,161180302,1628649240,24136731,1454876591,208549630,900656180,858124794,1242478909,1683357324,444834515,383611334,1266108437,1445578015,1117064664,1301196479,1993739096,388939238,1462948458,824181815,535923552,178783211,1338798133,1306766492,765762059,1389859800,913476280,1760864700,259072961,957713660,251220938,824415299,116608927,1052654806,1612226413,1753072414,1422806137,1424511850,678649583,378787614,1736032936,416460195,279867304,1207345741,908064674,1418214826,918030054,1171276415,1047125615,201126879,1588951037,120368150,1980061140,1246364500,810871460,1589665451,33605960,1889679365,1901400325,2011800039,398901584,598839017,2088845959,524671296,1126141905,304146924,471931002,1715763019,103399746,589366814,1343223770,787375546,251249758,2083691102,1982048951,1111148887,68210606,1886060164,535597533,327539473,467791249,1041881592,286172187,735504628,1045308419,1739605148,1053553457,233112619,1443225780,568928993,1052483380,61376655,853854426,223020835,142865140,1978447381,776633974,369948457,110204736,581787292,729698821,1570533550,1146838383,3665222,1153699509,1507766154,911359786,1517454728,1187163127,616486605,652070081,824842886,909653851,620366849,96201962,573341643,1471349916,33574127,294619835,147343002,839145272,1533921664,2022879675,620833416,1333070095,1379858733,1470697254,403752787,1956760731,838629360,1215293549,103788318,1431441773,1326445707,621486819,854893317,1788598956,1776094899,1661203555,62544787,1005923464,271273287,414340689,1588548407,1013533170,2013672854,328753656,992236740,1483521879,1971475641,210279417,985368796,889191144,885726500,864042394,404938233,2050390171,431822297,90535149,827364919,1486342846,109022391,684315357,53400056,1375328666,533766197,1356856047,965106780,1975719097,751844911,1399756048,1618371018,1999168744,1678514953,1863694135,250230027,759678859,1995251720,1292528777,953794916,1328957430,232489901,1479548949,366362366,576703550,1854116502,780518108,5217471,70498874,231817138,332463432,1867324946,351962727,818672749,1631561861,1230503388,1218336958,320116587,594867503,831364932,406928150,2024271116,1524871144,1980819038,650591491,328172815,939871064,1178385998,138676275,1824351965,268766535,902286315,1376050842,2006798883,804068186,1636304775,2049693936,1517359941,486041878,725470531,225132989,1610258628,1201713275,1667960457,1701338131,1886491946,436218257,1764923747,1983737039,1549743144,914440923,1120403084,1165795666,106126107,400681872,300287328,368971501,47379944,1064546304,362063246,1846540399,61528132,1370079693,1196115714,1972487142,1836948094,1464768777,2070583862,1580844378,1572015767,223173263,1981563697,1617526754,996061025,1024660434,1972296626,936518650,1166268920,678036656,1573255892,901621505,763667819,1399150396,1946087576,937134364,2055217854,86749129,1417677423,486956264,783317767,48148045,272669853,1086842050,1466349656,1254742027,1664343093,1073034068,584964275,2059151104,2025244899,1275620198,1038029073,62400357,912422718,934468330,443516588,143280366,822678123,2078397386,1330129261,579639663,778444313,577594957,684504325,1420814731,782519056,319278278,1766277905,1479059667,430654885,373475133,1598220567,20496825,1778110288,1963150913,2101505048,2031088824,1546395175,1285354709,1422167417,1773315274,165600837,569397469,601074554,1877898093,197314435,906955052,1254980017,924711608,522599916,1575235857,146089763,985437535,240804892,1182807268,820307987,90779666,397379131,1304145498,891153829,916754489,1674435258,35306667,400950543,1547865668,1400282181,499765601,460168058,1160499049,74709122,782307062,1102596110,23695423,1289940961,1118012395,1864067389,392089258,1365318706,539276014,2004058215,2058985059,1289614945,1520261784,2082318818,959065265,1853546840,1296450407,1855842543,555941511,535200776,2065444495,832354884,977084718,468689087,949324165,1481808631,1174955429,1745140737,45664823,1120213630,594237022,997735470,397652868,1579998434,1756057865,838284175,1307389363,1598455642,514963663,94096854,1230781596,1811816397,705936572,188567117,1568265764,2030355425,761722702,740481347,1938566422,1562976550,1325838459,1269830847,423411217,991685387,1205078296,642901429,1543040287,1191587504,579904682,59431480,829510797,578053968,930820813,356043992,1995777067,1249077593,21491785,312846896,452291272,850345591,1604277925,613517116,1057886791,1049394964,1838022765,1534096801,2019095124,1143874490,204484092,160809750,455882747,498949987,493844744,355387228,639670813,1791782135,799373716,138571927,1708167195,173006525,1998991806,803050543,1483134794,1171101579,1273259540,130862146,1105302474,1111676795,1258201675,746929703,1349419555,281919431,1247318063,359634951,850549706,2022822846,1366797777,939069125,494657169,16597085,1677199795,1464485110,2058787424,1407629775,1308516674,2119519569,1048040272,1204338801,1494384643,86800388,472745471,1716124623,1085525749,205184771,1858226929,1078322511,1750877613,507744832,867229858,1083650771,1812903118,1970039959,1904767961,1604622529,1640512747,2059381292,929028126,1080382062,1882592635,65932889,306309904,297712894,1273156477,1462447898,1792650688,181161278,641470844,1512729917,702255535,1647564896,5082034,1656804957,826379738,1835600599,739011603,1488081798,1383416124,977248703,2004996526,1550807826,193099021,356018594,237825852,1026366243,490908790,1230319185,1729165196,354558776,735876761,469444049,356498786,1393763250,434202671,865722892,1914152953,454150118,588034338,903089963,552907688,441830702,439817361,252816242,515688816,453643894,1763436510,1436094124,284833360,489949203,1247514875,132735486,1764047656,569144324,1300581378,1202245177,1344540069,437018962,862234805,1549404420,1776789597,1386008965,1551154407,2040834542,1629752948,762393885,1233394229,1214297910,232079473,126852437,140337189,1175721915,957530028,1764525600,945802009,1965606366,1277746954,319297693,1298809798,1823096575,345890431,860784731,43199172,714807477,1947713619,1215594605,790775628,1518527563,1811276413,556792768,495882645,1639724695,224615291,1775145677,794998571,952498523,1547891748,558069759,530020362,1411145609,322896888,694564933,26714880,100515706,650402918,634630965,711435405,776167272,1189055793,592182349,1930142345,1335687295,1875279670,1790631885,71161554,2017825308,387226880,2010574392,423813015,675743700,609686491,1436162321,1056545741,1995504851,56417126,731857852,2087612027,760848745,458082168,1716683729,313878863,1038019956,1200591765,163916064,808807381,683210939,1231892309,2109756874,1424561138,219968331,97467576,939354216,1906277383,1556326954,805767248,482770662,1490634330,1142815907,240376038,2042530623,1617432153,1662387749,1354514212,1518592452,326397334,1675461422,1425636951,508605728,1074114768,1355139513,2004467807,1037524268,1887040794,1596798099,1459570712,1466277155,81881760,191697622,1701632437,1152066408,409765468,1975294395,1907116827,999024515,72252636,510393105,1711985588,1078642810,1830956613,64651871,650948514,420716212,192109652,2093375475,1010156143,2116921447,1789870396,490089551,1777866261,1404003389,503951733,44689829,950996227,1150376892,1389943619,663286369,1412329649,2023057560,2025904201,6350258,1471848043,81015713,993796845,1579950134,2072650365,610718466,896969160,1130213069,933387691,1550497249,2086497854,835271042,1577723254,520064084,1078634172,1499792868,2074962846,138966987,134583299,2124042204,578420214,1086548118,1222029893,112847572,172875255,16653188,735461066,258661846,417070405,707985066,980013559,62263062,1375539764,532555267,20578194,640445803,1714142601,259416313,2068434919,1568946291,2050937115,1502104313,32248105,1149593090,252722717,1414211383,68479117,1455187242,761029702,928796812,1978352952,1968857908,212688386,363974835,849261248,1036061968,318188899,1190272996,192552194,2086576412,347378260,1109757717,1959848613,945242150,894037780,1407741555,607306966,124316934,299032206,711215115,1743501785,152422087,588313111,1906387108,1908842059,383548051,1790626782,403906778,11145933,990883850,94458986,877128950,51876028,299717445,1342979320,1343590129,866546915,1840107858,1145677448,1511030470,903929346,1279089011,1820009954,1082200823,1437828462,1951932301,1747504228,653029529,592072084,1841123356,1779662580,1673920572,1247561722,1765784580,1741384798,958179455,1152822302,194990830,370247590,307908679,1294394651,2111035402,432141301,31769436,299892450,592065976,1735082461,312770183,1079607781,427822076,534433368,1747777947,2059825725,1367966459,29152441,1842086631,1729098475,2114849146,941696369,340102745,338712401,323332629,294095790,1174371346,1771682086,1105613455,1685807623,829408815,1625150876,119791905,1090560845,1072436671,1660830924,706349519,317292678,522063271,1165442733,606229476,1380534874,151891067,1689631231,1584421897,1814535170,1405990111,1870517776,640783185,87868789,822178543,86175041,860783179,1108811489,1486794375,2041861230,1371575787,1828026610,949017944,224632291,234336503,110224231,33014684,795594519,64694861,1210552888,1672806155,1730017149,1281262170,1664383775,2112547385,1279775474,1271375692,1653118596,1945389902,998248784,1883278383,516654407,1900919296,681933986,1842558680,102000690,1541199160,658297448,928282016,1436179666,1167222043,328427066,333492165,243410042,633601519,1328042167,1349204392,1164305490,1193195634,1690512149,2123935008,1877821433,1490513765,971302001,1077457558,520044183,1503796194,1136343469,1118920300,456322332,1500810585,2054540117,590492056,2009201626,715013774,1364798738,1562032893,1140638442,1840686949,1513459429,2118954755,1175495296,491088857,1498631829,871003876,1538971306,306644206,1783914133,1656269564,1854925524,2009158212,1995186199,43299134,967425986,643642326,1541018332,327044500,351081854,1545328753,465464289,219195021,803075942,1666139577,1017720416,885477479,1939324659,969500625,792795049,1964170756,1938344071,585131271,2074775051,1295674789,1554882347,1405965741,1621744779,575411303,2056304104,1604635672,721291087,868791287,1718748818,1685979314,2057805247,1113313410,1893110168,1344358595,100973827,1166221114,1023402325,314902002,1815476850,2054016368,981394650,88674871,871413721,1967188671,687283659,1479465888,622998319,1650331568,2062468738,490979505,1960007713,1896625823,1232042949,385218014,2018747812,713853942,818125232,365646461,812839087,1113793095,1873529711,1982654806,898197126,1729314535,551799569,1170662712,1350736871,274051234,639875072,563514849,1736940534,1652783628,1894587221,577420404,1746386249,130171959,1748275548,891083359,731600365,1506055615,647041772,436244754,1868997135,617593402,818041981,219365151,1308628736,578414920,2084556305,11213583,1856540673,1321552804,602054755,417750930,1254917759,714118219,326037424,90031723,330698987,2015813576,156249279,1034124120,459324921,1475415772,1526196403,1642515343,286000422,1556020991,1182510706,1806733125,1693539221,723122132,1105638265,1254182706,1565792667,684535095,1033143077,1382105553,780867685,382611356,1977049317,1588321982,1521938146,2071920820,355721496,1760722674,42272052,1371003511,2126357022,901121311,1309026226,304395419,1581382037,1155180546,1438213495,259826176,537649682,1856246531,1958231086,1098739365,1740967208,1485102270,678825268,224791302,1177682915,301017012,1100200725,1991340880,2116575712,668241242,499941553,1164673420,1361621603,141446490,1262390591,2073831324,642442642,1992783597,284211291,165889762,1462694935,1206922272,410378597,706407176,790734426,1792483512,1521389235,1100667333,1648751044,1042931297,1263091950,1512612462,2090686917,1784019630,321794433,1370121544,91586353,4573655,1257054711,1526546830,1979697635,1481753896,1225818016,522863826,1759576277,377651658,133311067,1330396872,1864198405,225445529,602270001,414861909,560282968,655650761,191961802,1192615467,1132526062,1155951992,1621970517,1027572414,1716719712,160372023,1217614001,2074055539,183730260,1862733785,711044054,127072789,1898435584,1028459950,1692688861,611133055,729631084,410610465,783903520,340656698,1699385616,693379622,265240259,1940990810,285335204,795524419,388220809,57168171,1355114200,459020230,1213734909,2074357457,1361184943,235726706,686007453,1639904818,1833227142,1371135930,413703746,1799070667,1963423659,966318425,1685969058,1301429951,1818234566,36300369,1828008457,1856940129,91238028,805471855,1666083893,1201699084,2106080236,1996671743,776122230,1730887169,278149012,1844003217,1393875719,1086551924,964728366,462392621,227382704,1028430693,1720879382,558685705,1622202613,1509357003,1996394610,1837065346,789234805,650414501,742126993,457454613,472276544,485457024,1454719698,690371969,2053430166,318493353,2025055859,958677080,858729898,102104666,1249455060,34055634,56310552,1176654083,1088707581,1632233127,1227324658,868126293,180563836,444982653,436649578,1758953411,1339155119,340433984,257022124,1539256692,2077250104,178024733,355471716,793774304,184606585,496669057,1294417270,830945537,805983592,1283639594,17246291,585774639,1105100235,695153555,692738977,657932062,144303690,1562542634,430033764,655482873,1271955587,831458476,808084980,1023806605,810352959,61192039,1999414851,1389214590,311751669,1447039483,1785892271,67416972,1708717143,998123951,1731909784,1595257791,750342977,1655488078,1021862706,2113662322,12724427,1258015059,669305368,719422793,366755802,912752681,872709047,980031467,733603266,1333026827,832009856,1605961791,519347055,622228669,346972198,1135112069,468725386,1965618834,1412581037,2010823619,958319870,267394064,239425330,1783106131,276935749,822477869,324229610,694770170,1696642351,944658068,1901498444,1972884045,1715239422,1764370805,290446047,1226918780,12783122,646371522,1820414976,1037834543,566568218,2003105020,453069391,195182397,550699576,1533991935,1748699629,783596448,1278932628,790251797,1055688104,792325938,1762178566,1925914152,1307694353,466129052,1710909293,407529764,1857134425,243383850,1369283563,1861585076,902262920,1455027872,1188540348,826823987,435832462,222911512,1969467922,653604555,1869149842,1793358050,787000632,1703540935,986316541,789467118,490762703,864436006,1466110603,514029005,1548645295,721011285,26695527,1713369811,477535128,2063012536,1375211186,1408569915,1923794200,658306502,1570246617,1985104476,1664864544,1851935280,256403534,255636387,1002395313,520465954,1498229056,1386267346,853159497,1122978360,177030121,142506376,836183402,697693083,1174599390,1340846788,1191189272,1905337890,464485288,384392511,888736201,765578470,1461943771,964997239,1845032690,216410560,1894133321,259614391,1465227752,1722950362,824732532,1134627099,331477043,663717694,1567833066,847123364,1026365209,2127289044,273123261,1162634491,93881405,565386720,1249772087,1584092056,862104188,1272926792,434178189,1465374762,253174098,95770346,1164604620,138830027,920573931,558864356,639838110,1460216769,1077301566,1266188386,1330092685,741463646,533435542,2049036832,151524618,751938334,445109893,1830870039,434269816,1866271260,935312270,182078948,1838644562,1152482093,595160053,934269729,198065704,634213054,433631325,347976171,871644575,1469617116,1023293067,266518098,1459481242,1020670106,1980966445,1361363783,18961652,2110172001,1907186719,1239532065,751648650,1054394463,1721321778,1358466687,754209273,178787850,1477837041,1637047998,727350814,30781441,1096022703,10527797,1694165863,1227204841,1940309963,791347604,2096830393,1924752486,36218226,822158051,145096906,1360754484,650988448,592047689,410096410,441468299,198498222,50415441,1064944253,800527717,870774140,396026872,1857266997,1569707160,962724980,452886934,1217918619,1452760999,739237972,1485290048,689322969,1560382500,353914698,1573565988,1106850912,1815207706,2006811195,772211101,593016944,2055756630,698533708,199519037,49783859,426046017,1055463816,519816298,1075347777,454345720,1497099133,741690777,1016811000,511006396,1942198874,1236937583,533871544,209716341,2059430575,2037582033,2062656781,1589729923,1389638860,1718780861,282018747,278960022,1477498441,1574005666,1291274829,2090128261,199983439,861976137,195339759,1146404797,249243534,919880853,1699430019,887533062,902468026,1799113659,1705153320,1344812950,1721474237,55229318,1857323894,304249904,1153584374,1237946960,1411496404,294514438,1192819487,137924056,1648687310,916086777,1635062259,106787630,1343695063,384016776,1201134040,1744267092,122944412,1343385382,1835156116,2005566918,457771390,2006817877,1319787497,1966748786,972031132,62143428,1738230290,635495479,760978340,1300332211,960208092,1690764070,554376869,1939703675,1574232475,1879739566,952621321,1499044910,186188878,2058972830,1240015324,206820911,1748349001,1741367381,348423432,1600977185,759989867,958294789,228205268,1019173665,1467984329,744450151,136575172,1462701473,697516412,360305445,2023623647,1177479532,303881453,216516807,1969988730,761396750,868065299,1665297493,1046742781,1357729254,1749777180,567170916,566893483,818531955,178030793,1122281371,2106224353,1443100054,1921825852,634044647,319524297,442120723,363868427,1005264187,1831228475,1843315594,1123567315,1647413890,2029370047,1204464265,1010734725,529007507,745839141,2088252095,183442140,1674012657,1773797339,292196301,1366520386,648539380,1575760805,1073076991,857831521,334330018,1375050672,330325579,1045014840,1545682522,1299556457,866084581,1199279858,533863399,275551473,954632979,638519007,755452609,1879528353,868501660,384013511,1163524497,1904133830,780718354,707965726,358700850,1616835627,1136347936,1052001094,1919348282,157996880,708641934,1333774894,891386114,835488896,129781526,1981781284,1429404197,1601216462,1155685725,1997693501,426947326,744053317,735691012,1631428528,719439411,1627447994,1616739842,729345860,558289653,1611252859,2124138998,997705048,624464400,1452757994,531068566,547345117,252130763,1853918262,946947042,900166728,1608109955,545430134,444774409,385488496,1112592360,1388311443,1910693179,1532641467,1618796793,557396086,72702262,735411192,847755016,649451312,335395502,1443579104,2064906220,1459368112,1872201175,149678427,2116536446,1728147666,2054379207,1770743048,78465726,949903755,1370949575,1154051385,1387763323,445152565,1643103960,26954505,887412807,1411479052,635381243,1159643206,2037065558,21861955,339095677,1594495024,1422278098,1133253344,1025689733,1590328507,1067695705,74869811,235498731,169503636,478274676,797010259,1905907024,1590029188,862087084,1844872356,2112958067,2128242423,1100254848,900071063,1478379343,339367688,1983461397,1559938221,2040522693,1093481847,212148822,1770408901,765069340,1464424723,1591590584,1454927199,163817284,311415695,606728708,494513287,945661755,522853439,1616387125,718941075,2085258664,820479505,1811616331,764792339,231403199,1638814764,1926037314,1692742132,1986984614,415349738,2112007202,1947033203,867191344,1154158832,1057780375,587064937,140970422,126412739,643399431,260825286,961851711,1401683710,692582319,1671854992,166760115,92004704,1493372374,1962450454,1029049089,147888883,1864403043,1358874272,1524319536,1535113176,675588844,1621676955,2073097094,2032936945,848094714,1912333418,1743313624,699453593,317286151,623963424,1751629634,531996294,598717464,1592688668,1423319144,1982689617,799001582,860466284,1861959146,220482173,1954929917,1386140519,227939167,178955701,975962001,21482036,1133701291,960079732,1576471562,1865206771,1129614045,1939979836,1613964190,1597848886,976485364,1878524511,1971809684,924277791,1349443701,566018138,1595328578,1664353127,1756734829,1789486733,24556935,2125521240,2031787434,1604068421,493999832,2048382027,2044410824,1875064594,2062820175,957414476,719204798,650890399,518389110,1496932730,100817067,43106868,1886528334,720895183,1783891081,508082574,1610647419,1454481445,552318577,1044867083,1201935732,859817743,1833017168,832184633,1293492076,637051371,1290093003,418178256,1109230510,1570045727,1737277256,778614120,472767180,230970410,772887756,223681851,1864068328,954158112,727613888,265249185,1193076896,620069315,2057993811,1292210324,1154669990,64341396,798221564,224467480,1158474853,794134079,260420164,647443736,869149065,1464730610,1570515677,713955630,1065563512,1668251043,1179019529,82643124,989336487,1308541884,812047986,1577996856,1505304376,305621414,1778046328,1117021177,773392231,339090441,260668835,929776665,177645547,279352167,50695233,661157390,576573898,1385261522,1726248084,1932099111,1888134891,438048823,25810678,223618474,2007148813,1192270216,6292471,1439704380,812158783,1461199991,557127638,694506107,1468430020,2022262820,1571503587,1978254514,65944014,1017111021,955572164,339810188,1737394622,496274534,1581277896,1143199348,939863928,952816600,1933286825,2008458084,910126801,356302155,770068140,273901066,303784359,1261499686,1466136531,374201990,1747329736,1856668614,884799726,435022621,89447466,820973671,339955510,375746299,604954203,1788856085,753041151,2048123296,1342245724,438942832,602953295,1957075808,1600507836,1558240935,1038550474,1714390239,851323338,763364624,1017020502,788317368,1808235392,224539620,1155895371,1371771546,1938879731,121197873,1594907354,566733691,824466418,787821259,818370718,33434039,1110280937,157807311,1598321335,1773420144,636401366,61473581,361792071,228746595,1020006969,336461631,1665450532,1959271816,1288192540,104338622,509096201,223844999,1750032152,779062346,859207576,1148888513,476887142,206919548,467756940,130152562,1687447828,135969444,295359219,2053845667,2114396680,2128741048,13300525,1828446922,695013725,1175280849,1797935319,775623316,2031683779,1494158329,777238684,888088975,1400059344,1754425382,270337320,1854911020,136680053,112719658,1064087423,1255506667,1381264724,471507545,1905748382,1187252101,792555600,1318159927,1019119440,288727378,1477311815,524208444,660973244,1744905624,21160267,226834789,140036782,1573533068,916224047,1188207813,2077910255,374827969,603182992,1867423485,1387798166,710545163,244167952,141017016,835345185,1732551805,1713227302,1325169328,1499901276,306530049,795570334,698943650,1433778018,2065195392,1613889740,1300057656,320740445,1475447557,1210408549,1335233173,1517962493,1750838603,588573974,1424845281,1915791219,436554380,1665214576,2111666901,1524411426,1650972703,2092479891,1011030293,271850934,1245630564,560828017,2010355578,811733398,317006793,1513053136,187586422,414340478,891761133,884047889,1826112777,184422404,2046356795,1811299132,1896156501,439579377,1757634140,1836822200,546374205,595073807,1953995544,1134717983,67241841,295666121,395464343,1319833317,2071380807,768420297,1044388059,1667443662,1252941826,1142077535,1164730082,845929529,1664640038,430644895,478754153,1222237452,1693665176,1226023653,708010436,1264719117,1154748064,1005037617,675435365,860006221,937173884,728483886,931609464,1071765544,1166902846,1014186758,624331011,1533012249,579819246,631870009,264972003,119608565,1932252792,2123707508,275175701,1199792048,596307763,1778509898,1719453132,710577527,1908620930,715703166,773823848,52199516,1163705132,657467981,31606364,812009926,2037920862,1115054262,1899125029,400617493,1943475075,592827985,430848899,63925402,846632386,284904594,1230483869,1857903330,2097240794,543126035,222799936,686581512,696199897,2006766442,1697017561,2097423394,1524114253,1131333148,50764845,1804760566,1637016519,1342882704,1810362467,1331772777,1095955869,1725350283,1140352978,677733504,823526659,181243399,646289742,1751171404,1768638252,297790598,316635811,1507189700,3450781,1634544052,844113941,231409195,1526264618,1763359036,907707914,637153211,845625984,1836336803,1289201122,913381152,1559654571,871407399,1050767447,1014724272,989891133,333547219,280338935,1789978095,1563631437,1692419362,2122495914,1514936382,1360585843,49429172,1637906405,471685024,83705648,1261140797,1042590496,478909928,1714611437,1970123386,1322745730,517809986,1178708155,1403165973,1385890966,1187205423,744551984,1082815739,785045040,852921272,69992694,429060049,135421738,871201793,144027040,993317444,2068385682,242027532,1954665165,1596949384,731020974,1500015974,1093313079,1680291403,423027373,1485930900,485501702,337233096,731670611,562562403,50532929,103850282,923000001,866376113,1328658300,678877075,472918581,600154765,2117756463,463788968,159881082,1418497392,1282787063,460172451,212723353,1850113042,957267082,2106986848,1879986428,244006727,1032027807,1980023749,1338252787,1617987727,1951920614,59886025,1451011876,997270426,1448871408,1041074666,2081529966,1317435864,1817949375,1791608855,1721124320,265759394,1575581460,1931932390,1750649090,27576031,1491277525,544574035,997703185,712499038,2069723613,887663644,1763223923,1190543636,1502549293,131468961,1735129933,1310202531,2010491631,1091179681,863388869,2048089464,749220451,100530588,211910259,1959825717,32375617,1114668630,1514933945,848811116,2127539831,608714548,1065993136,654860934,870215930,378094878,500456052,1135962895,756528908,377233938,1301481735,1021570778,883453782,875738388,1389706812,2052441063,1943479305,826939808,1628588184,1865594712,559972702,1929819443,851313968,1183778029,1195278817,1074844189,876234024,1539072049,859101273,655694358,871367023,1437126636,2054315440,1114037683,1803730636,137947704,1137637771,37722885,1054273587,196918625,2091779296,464426388,1867065774,1123545632,532561825,1655950838,967570389,721109450,545137892,2030230933,1070035915,1203022961,662532307,623030099,1968192687,1751904438,203839975,2104021712,408498293,198306449,565475453,1232323623,1444943777,2070713953,540229420,117231538,848715106,134329513,658077865,1411650248,823531934,166050500,1398682085,1124595604,746936019,930557294,1241003102,1538743378,2015712619,661195962,1218390611,2075961445,1583587318,1383154514,1439894865,767757097,1183240181,784129667,316124223,362489625,1741290657,1610213479,986981124,1234959879,1527263808,372667904,663223512,1039765560,798885412,1561425109,1890575040,1806972939,1032306189,53163841,1825263038,890668010,401347967,138023501,591686274,282363456,1529825153,592179397,1757492582,361937947,2009326877,916196981,731128444,1357508505,693326457,758042235,481269943,1858379595,153478397,1404741726,1340536254,1460480747,670048832,1671564349,1900635182,461729937,792397530,1200063822,523764682,1354383628,525126840,1964747096,1912264718,1499149044,1631523345,318696089,772677855,276539418,775903236,1099901172,1375291250,1789338385,745030011,1512991669,868386255,1739374783,1571447916,1883629021,1132745519,1960422151,1720883912,348485827,1851362893,1249397566,1076178733,1817366907,691559528,2001247629,2039315505,1399853008,964566879,1122013417,827730882,1923276927,431432229,205683809,1578951718,593119848,1766559866,731159602,2127700060,2081988921,75595041,146738795,1844684501,54446586,687395347,241827631,1667322939,606396318,1737518602,1872449335,1522419649,376414915,1778519553,658903939,277820613,725488505,1613091978,1774668549,1004363362,1811034868,274211647,63542745,1466734048,1070996116,820327111,1970824874,483202080,902155889,1748321906,1105897791,1387881023,1259216988,1364354938,1820289271,1463068150,1813117605,1007259309,1410018741,760143730,751640146,1216539123,1012402107,412306624,821385779,271900141,264491079,1769639896,23227023,423997666,1113351926,307397154,1758585013,142081044,960563818,2011024532,2071356714,986652703,1901603762,1536174486,313641124,586578920,1149153128,872509303,2060381932,597132391,607256262,1404361487,50857577,1725872623,1743552739,403156236,2059656563,402191264,342465253,1280205526,597393810,1752623465,1135712217,934732556,2004242927,1003761744,1444884320,1629632214,1832524982,1099859326,1973309783,1458837745,2127351686,689540685,556710493,1227056824,1524888398,482304122,1019640929,169077247,577416432,1703001821,1727953786,1578087333,1780542250,632674618,1776186797,1293081759,445043917,450333429,98745619,502435410,504118928,2053908562,894369086,834319672,2020965237,1876738026,1471171294,2043964175,1152323226,2016924092,1895807473,1773320836,1936599782,786588459,575108965,557168700,814366523,1230124288,1414981377,295514284,2088153353,1024742077,1266239914,871250451,879179522,1216625735,595557168,2072752642,872100583,1509595298,976154936,1612305219,471886507,1596322768,935614484,2110905689,1795163929,214555551,911318987,2029403942,83465786,262586079,1065732422,777106370,606832520,1318005505,2048108787,1087799900,687818772,1846898461,751158362,641289723,1874918317,1128179844,180176824,72721535,1701333937,1678254402,1471714867,511137519,2005298404,2004727569,1223790242,431739583,1380915096,1521516223,1001878386,1747661680,450712036,1323350896,796784254,129649544,622516452,1679340374,222181670,690187846,1553247987,1776355166,1466893310,1223009526,1976051809,467362608,720302586,80781946,2093651396,1514078898,191664752,1467110343,932650059,846892548,1248979818,1843587727,1350273443,460172765,1908000216,1373435410,317603275,1085200084,1452888729,1961499116,1856475323,840408556,772108280,889022451,47890779,782012584,458856344,1552219343,1812024718,1621746677,754418669,1079349497,1276707282,1364357852,2005117442,63568133,452662869,1124473073,253768237,1800840466,2093281493,1562654561,1974300541,555436770,956242884,1910691225,37260114,1577221551,1232514048,72165197,312517849,1968523197,1915987997,1195255078,1624068829,193546492,85679893,165543980,1515029688,1607766208,2072321521,1057491190,883617052,250520499,207347137,1192387857,211875252,1342397440,914157435,279857306,1124126890,90159480,1741813018,885625645,1632422361,1205008680,1693401075,1854194994,2105255162,157973078,1893220505,839934307,1991331488,1899706385,882873424,962305707,1441604698,1189861299,112320048,1041146780,1999846575,333790030,1068832610,693417011,444903093,1649446097,314810451,965774327,109153309,1200579281,1464406678,70459954,1490831075,1186947335,1840373075,492677235,1923711478,1958952644,33934773,1203237337,986003482,456957090,28076375,364126099,267898820,1930356115,492757278,1792766329,823049602,400151999,1459671588,1618323627,1250195709,2007703151,1230356886,1283635628,861668004,425358534,796016881,590363135,889734564,121386447,1610350624,1364459317,2105496961,1303465018,2055629766,357761281,673650855,130974654,984082462,2004486785,1028649738,1198153765,967875499,580446588,567947409,1777096186,1100331139,1538906987,1770001386,1629531612,629074333,294602428,253989279,788075140,1226930803,54684173,1333409722,869697522,164127377,1335950143,1380120964,42462483,642579724,1295085591,46162056,1989640030,1858380754,930354209,1889197407,1610435247,1843064677,333933809,1811363381,1947152504,665937275,1303016095,49603428,815546297,727257888,1700058125,1806136636,1267251578,957495104,1967816364,1167359523,1039232104,1587655070,200346120,1147424807,1525980439,2009792678,149537387,228222027,1816090814,1159969082,390977471,1914856968,300756076,168736090,624624706,372858954,708880613,1783310882,391198414,59552923,1698808201,687706495,1615075960,423716140,2108712773,284592202,1495376022,1799364120,186715016,77769940,983954158,803340202,1923213027,500223172,1075980115,409440161,985986303,331179254,1661024527,1347858326,250338065,405242556,469132405,1793502991,2052761050,1159800427,682447520,852607985,712539128,783214196,469987267,1789077502,927137061,869284139,1528353671,2113138925,1784762324,1549136059,583560052,1688845422,1837412902,1481161873,2026669674,1342175439,1693450707,299114982,1525143495,1241088550,222254649,935815516,1248212299,674208222,2117339450,1845865498,1155659935,1715381494,359867113,1801126408,1646391003,650618381,531183325,6520012,1524989210,551549883,1106617279,1524449305,456617756,261884498,2093250583,109431846,746242612,705732651,842292301,411905621,1443375934,592742784,465145376,1958467666,556160341,113889606,845046907,1800218858,570442296,1587500365,1667409887,77729154,507076413,1035047705,493302181,1716573021,1519679621,1265787190,672126000,648157595,1652448646,1623947713,1603768609,1905703882,1185165001,121998724,1177730464,1494022072,1285782730,623431704,346576463,901013955,75836675,250518505,1113035971,47787972,866334440,1453774372,874489049,1805222325,1723288647,1409890382,988085655,1331253699,1592517677,1296121648,400646759,1350695072,978202585,1135591676,1908381365,380732188,1286767131,510205291,711260397,1673080418,1186300597,1612553397,1220049733,2125002970,768089382,109856431,1103163760,782426998,1860133902,428186831,202013306,1535511107,927664503,353357807,416462717,1013091209,650599814,1476536163,1507629058,1809480210,876435764,937229230,364886751,648319085,1720271985,1263448770,1531372816,1251552436,680058967,1076500585,2042421260,2129152694,1579174732,80768025,37007031,283746913,742965384,1383596894,1977852479,1484221992,2012448468,1422743752,1650117803,248980692,1142134860,1131540077,2002790502,751686352,1851585422,810467718,533098219,606447733,1925473758,905380316,1095170432,1586284447,1332127605,1484056764,559525375,2130470321,395757300,1525919649,557816677,684541656,1529170938,1192084466,421511927,2054106982,420224247,2001489334,554479097,2099844291,1670599294,1264223477,2054840430,1092842755,1846945613,243157503,1213491568,651285669,320935787,2052651898,2029506516,2116515937,173809810,2079685974,1780429863,922381401,595306931,1219912503,1371810347,989219569,202723645,1003814251,1988967802,1686381503,35037919,2061575707,2031705168,951417013,1216730499,99445288,1559991600,813030157,332579990,1157479480,1719272183,104059297,1486511245,48067302,985487677,1017618568,113943242,599504746,467625710,870440162,1402825101,2113504772,1325239277,667014140,20103028,1538842192,1881722236,48961377,1249587627,652566313,356989260,1616439163,446242746,2123416390,1400830367,962918278,493547090,1811203105,1932528883,1547317605,1582696583,1758553872,1129180852,1974493951,1553546043,323503630,61522453,1258100266,1743321179,516606555,171391646,834486943,21481569,1123247992,1088997578,1014905137,61543252,1454170602,1947671363,2043200625,1706408890,1859480224,792600441,874964365,1382576901,1381159441,698663994,80805103,1749373136,1081307725,1761156086,1428838414,933119610,1177363291,1959259165,1625927284,381947043,48701218,729712519,1876701455,1330947490,1150452518,1463865407,22934555,528406156,444029285,767055087,1364502585,646744380,1833687263,76953032,1956417691,778347766,110749349,2068639986,216811244,1006638578,1703937556,876180935,945609943,1064866766,1759587825,1007473339,1403522483,1837224809,2106825905,2005155246,979637850,2001117253,910148770,175126536,575216783,1383143343,2080792127,1282692359,1258087109,258542759,154942820,2123535622,2010850940,1658365233,639088230,2015945496,1835337163,52693798,962085134,982816797,171112818,69628423,1527088513,79652967,888478879,516983909,987733652,635101209,1889431433,360880733,1454519662,974611826,1510885305,1410665050,1349244387,610547796,1166126221,739060162,1627987223,1975495978,1658870684,686813798,1658150022,581361727,818801694,279650092,1214011070,1881996939,957288082,227592785,1209755632,984048302,747649828,688123320,1036704435,1988024976,2011357284,872038709,305541891,2030555420,1056070139,1652444818,1777486837,1223958487,1553585196,1283930779,1765139155,1626707270,935226013,2127222358,343814352,1608379762,1882359062,423676242,1298606450,394873873,891947588,755328347,883935664,1881429619,216363279,1814854597,774284203,1114671652,792404364,224597380,204129010,564710250,1043478393,1270254899,1427737824,631189570,631534956,870548718,1088372437,525510087,192740527,1368849213,1470193174,790792734,317204817,1672692020,974810618,1961733841,1436507047,601286246,2087587294,3953631,848490696,418138761,338653090,1402945922,634267924,538390528,206662011,71253557,2113597074,1445054368,879623945,721466838,449748007,49093461,769552675,1635852017,1750261777,1290419883,666716277,1948045366,171647484,174550425,1710055451,1963949740,908832551,21678767,653557454,2074893435,104740793,2062055329,117184406,1693305796,1110726505,492239463,412640705,1587764643,5697772,1017779807,1974084006,19770370,1415903616,1187756360,1413355850,2048255216,626618510,543831688,1483988904,1499671316,1782164689,1495610800,195584980,1867019898,798963148,752741868,1579250819,704174749,1359282948,1927790852,617834003,65386773,1044960430,1038458236,724596124,1618429181,1080306309,332086647,1207988798,1685041498,437958115,38025328,1461250967,1752791882,1903604103,1896061403,1989432939,46862587,864455428,190847149,709205774,318556067,779034730,1195465272,1191938708,1993011509,1451227889,740019767,1483541911,1104219387,126685664,1145280942,1995814402,279830414,1326446445,207980451,1226291692,518818462,1765620716,69262969,1239374194,570434389,1923044796,615390788,1561627333,1740858823,2030797731,257502451,1847255259,1588411244,1554860871,215931004,881772667,1173635999,1607991042,524076597,1900873517,1727764340,1708539886,1489724236,1116217431,493036561,1633593259,1688259728,27623808,872993371,1133249113,1853125162,998801311,126027199,656693919,615940766,1932555925,1067289916,1227841202,900019257,719730426,1763081721,680334310,1247990320,655704965,728107848,1562486040,1722147327,1167450463,526661015,182588930,441553591,1735701399,1714078671,1688944448,380949186,975280652,581189410,24668841,772891741,1250560782,1333714639,878168125,1278463495,1982417444,1110932408,1685951210,500112247,1922196345,745012218,1203258485,1772892166,60596526,810491450,1197111272,1035960277,1281355328,305719525,2027992619,2006251231,282565898,462878658,781624591,1854883675,1408439058,2038892177,842428094,1565769351,1188027839,2078200576,230425512,136032079,1167906499,1038332216,914000994,373432517,685326184,1337401133,1088693157,1774201788,68567814,1652776339,1001835164,1289531668,1426806931,694653020,832639400,513099238,862621404,2045811770,1374391137,883164154,50783504,1142945948,1309507651,1298611281,1363519824,777313386,733728911,2022160896,790563516,1165587465,1035755339,1194439021,37663703,1582009507,810502471,508975065,935072800,972920070,275208886,1024000077,1610750274,1966871060,1652201344,1799172353,1651735952,184822101,143580779,896550628,518505642,105371405,1522914705,401796349,346554112,90100384,661063393,255161170,451258138,105900691,635098716,213471182,201582490,609280645,1486917743,1986119862,48923750,2074711658,1009314898,2080600794,1998429524,206718325,1424062987,886429640,1386411938,9494656,2106668157,616311368,1643042285,1409363705,1556104721,249493828,1104702055,888027893,1213028446,698966815,1045387780,92022299,1445054921,112239389,1819201365,1032349489,1169993685,905332277,160996958,795692625,103468361,236064197,1301898611,690560385,1195606282,1985215097,1768818091,932576108,2117338215,1992465866,1126552332,2089625199,1229488341,2103947624,1820029533,194967954,1057790106,776281113,1522373689,284431992,1713177663,730966005,2027794077,89872463,257964967,1816148725,1166363456,1528773122,582097228,874317506,412564098,1927516417,896063751,259781425,344296877,833735660,903923672,388296618,24220822,1593728191,1752771525,1483224606,1298501188,1454196837,2119733830,545729688,284439914,1916882358,452790464,1081376712,474848761,1747807165,172179667,1335830507,942873169,968322738,2023936145,1175691421,898167278,1390400072,1179245214,1082059708,1517388723,527344096,1472169140,963991576,770296908,1110455210,1277021548,1708515772,981028461,2115537665,1541026514,119435160,1618003856,936159812,1296488177,1940141062,624306533,1691107322,1492498490,1208505762,582785647,1547354229,1332382787,1505519578,1559876327,1406671282,1811148114,1955529591,1633329960,1437744675,1629550412,4414460,632697470,1646646447,1965594768,1244145160,1120843457,2014149481,559388842,2006969069,1001435271,1709420416,1262797565,1515240006,1394657751,15212403,2078014145,1188093277,1017601814,720289945,897185430,268405619,1231018827,1474231824,209825936,124513492,678763608,520603033,27520367,440669308,1145913856,606397529,886827792,407573113,168621483,1062033303,2097392043,1510524161,210216612,827494568,2083638607,1869165001,894625095,2094716938,468492778,311406041,743536825,1319828823,473844762,1671294758,123898651,177921526,1109703979,1944993150,1978466001,1075946365,992913289,1274368300,865654238,758408328,1291409575,23017114,470777156,213075681,487106472,1448875881,1731354156,2125389110,39879510,989741884,1051374236,1356083565,1705727255,1467156601,1164720253,2106416055,1968246640,164243459,1936585119,663061061,727041711,1190273026,1448901921,86689284,401781318,269181551,483757981,1410891820,675988512,723754147,4441573,906904695,1973226364,585606895,542738248,1809762885,77137396,823636170,99085690,924047653,752870238,261684627,304781721,588682495,1552381971,1777014922,1472377114,871937529,1772061795,1330633205,842704829,346965640,1296874387,1392566760,1149846458,2085615292,786144394,225599949,2130466909,64602758,906864411,1639371450,608512932,1563084550,504589116,64424512,303900434,817704649,200660922,954257819,248897170,903337350,1372367344,850056546,1097723842,1711875833,1247651689,970700532,1820721089,1872616675,748024495,2083314068,411267761,2027375872,1366596755,495962495,108253250,1330846967,573160875,1916041378,1937487259,1539768725,1747556673,859599020,282138540,63894800,1711505402,1293705170,1876952535,1851616790,1520649681,1250701761,586413138,634013326,1579511061,793532635,113852661,177856420,765221233,368516754,266129839,291711317,941360268,857306876,526429241,1417056994,91976914,286430417,518191804,1123068043,991721011,1334552139,1725588503,217305251,1619060183,1028301934,808158908,1345860544,248252507,110966139,1208109163,1254755867,1145746124,1743971000,196021637,1696780776,1226589329,323632800,1474585048,770653817,1698319170,878367332,889508800,1809887158,702254556,173610711,638893645,679759337,1572941025,1194021900,1494959537,1509822887,1354905237,1496882319,1793750706,455622284,1838886142,1398156778,704073010,1175143234,695913247,129055319,349119924,984275877,241825287,503453932,888650000,169161155,899460487,794253563,896792807,693396827,746944926,57385622,203348472,1756518236,524747014,586992703,1082691297,704363145,1253349504,174266196,1038372965,2096882247,560213123,1012680231,276756163,1495181409,120990781,563534586,558185838,79795542,901447904,190237051,1878913699,947814733,2030790758,120999025,328578495,435081837,182247838,1834158293,526272981,722609708,202950134,434443044,2024117581,435383339,853350474,2019611824,486649358,6695644,1159837183,895126258,1684987646,1571571194,1860223739,785305427,2091806847,522316620,1150511996,285702090,1555192421,1432112845,1863776015,399405996,251361703,1379903944,1747221078,817242182,387875556,1017252802,674504137,171095315,596581666,679871249,382215115,687409182,1005314838,1959660478,567341464,58214394,1220616210,1371199446,520384555,1381857627,184483838,1506031307,1025826184,1581132108,1013911458,291281795,412622002,2043749136,882946872,819058602,1229632885,252817033,1800288289,1845147206,1470109778,795873673,1362582739,1101040854,792035761,122440596,2018468718,1770410645,1433373993,1579944808,612708412,505372159,1655714944,1768405580,1690067040,161885067,2005251401,1935615969,1887827269,1562205971,147755936,1189376904,845123809,37847916,1539904759,1079967691,1836178092,1350687053,1840851452,153091710,5267407,1329825192,1025467202,1093990608,1558905683,1510807556,522861597,557241751,1438538560,86701428,1724151160,2103931301,351477408,1883635178,1568435083,614317244,847836737,417082164,2097865490,1399710628,1288785651,83273266,1389707562,1786481078,440865734,97219676,543733268,379701062,1515222398,322226993,861067379,1380225062,201316541,2030334412,670650717,1917711716,1038819015,1261930033,452595516,568441207,1494199982,2104845106,1219841358,175113371,796219383,731549852,972488549,182041459,365493149,987234790,2069221388,1814929340,1135355572,1591991384,1708082708,818413378,596505545,844793607,470951286,1752537919,1304614892,1059769261,953298045,1812904657,1920024296,220702682,1398499990,596766719,315001254,2088846338,1365869770,1473205310,1932400637,837130614,1658779625,1657564989,1592441133,1088560140,780779372,1387779575,847561214,889018462,1679009314,1064578978,1802911200,625727188,1877995550,235382743,2003599392,1015620875,293731701,321651511,1330407238,1958952330,857158683,1579170658,1432840753,1219645450,328838401,1673457939,1050789513,1643264681,1379678953,2016611866,604502664,810080360,1770428961,1673462128,303006667,55505655,2001260765,186242227,439441252,704287092,459706057,1172745578,1508198881,629379647,1646339937,668385409,512728398,280298810,86196107,420039641,781743803,528381983,557954428,1135130001,1709659743,1007744295,262607605,1688131149,17764104,1573666555,201533784,1102773009,1979240579,1576016721,1811590235,1802479703,1476557024,2074171082,392400781,91250537,1401837088,393661667,1863479337,2091168653,786581808,357056555,1413785748,1313075506,488083573,1160814034,1833137367,149362588,1797966037,593294689,996136146,936617684,1618185634,1222918463,1882715153,1585243995,864084984,479684807,1280511859,1137572522,874233062,1154484879,1972100238,1754403654,2054584160,1167212125,285883165,2038992992,131965424,1073089034,822176857,1786943321,877693789,108778875,1138723377,2052299310,109186487,1828731626,218038651,1580817377,1163987285,1002662101,1876063997,1547877097,1492258133,1554754229,1761869088,1270496505,99636928,220581928,248135488,1717381089,1830556364,1795313507,1796376209,652777284,1856257203,440502600,1198702544,84000529,43255503,174886730,1909932930,824413606,765590755,1748057451,224239278,277055136,1572931720,1370697326,404997666,342249492,760504759,243754232,1101591768,523522748,1606881151,2085974394,1960603006,693338089,955515350,2055881017,1626673477,205704969,1451025540,1375008379,204675619,402956258,1740620951,1515877014,1295287200,1753984572,446355186,1902654376,1498598497,1843191935,736603110,1759593403,284933951,1636895792,2093176574,1672962124,1952600795,283853145,1764290434,236810606,361642955,1103014269,597013272,1917503147,817140969,210353612,501677914,1206451715,1007033078,623759706,1131493282,182632446,14717714,678906111,907629063,1247580216,1684089722,360246589,1956962443,442039627,1678180440,237225890,1891245806,1495721583,1783954600,213469259,1153110793,1375261236,1226787689,392147820,523544881,1918706715,686450422,596622615,2074790963,909503010,2079946491,1279293341,416664861,483575731,2050553395,1031659608,359758545,1232038167,1422871079,2094600487,1770232271,1309538403,509840688,1699376618,1616845686,212986659,742062647,1390460732,1609308936,1377292465,129338971,612944560,809442382,1249960449,1926983596,1330813564,1492758947,1711562698,359019676,407214540,1669036236,345589974,608351316,342447456,906806152,1988515653,1150201985,2046463783,19336385,1812993436,195310177,401133916,1445923832,1267696363,401468810,826682062,1627304520,259118411,788396340,87662803,1906532016,1996472209,674978804,379287256,1187139010,1858340795,773854851,1200735888,1963581454,1077205869,508502522,833926961,2010691743,17381037,251035026,2058320072,1821431081,1109284878,746564424,205917116,1136309222,1002211606,1247036177,479330314,1696089104,297271284,1402071232,880063403,1554912111,1099695434,1778916232,900760739,67483007,242065273,1029669688,365195995,94009131,1622941297,1340659966,1874166687,863347038,2021956609,769752918,219857277,1693652439,2050710113,563587719,584891462,499080737,46152187,1984705932,499193982,1790373525,1724680260,264347052,1050372876,1284339521,1021203111,859929789,150742466,2105481091,1556340281,1188570905,206096917,793682849,1685556719,876471571,449498295,1670476446,2008646400,372550232,1261509907,530365165,1803426393,277513315,1758138600,1173046250,1335689755,134554708,1147930817,1945657538,959384559,160356889,334733488,2057950481,2045282823,348906520,1504195038,600063358,1651124273,1177667009,12199736,1750931700,2078981415,1306107254,1126230717,109531780,1358001361,486440427,1735441426,1349250911,1997683146,1155995733,704951005,1342263557,1811361152,1142199666,1493806793,126332047,1324496641,1749072017,227139672,1837076981,1820275883,14716536,17479603,1274597356,1020132213,1587098411,980493756,1422192188,521963806,1256268083,1323470253,1695140820,580781498,2092048079,2046334279,1487879943,1472158338,1385751485,727742358,429901033,689752371,1606684311,667074245,1729152241,1314389813,2104769248,758902669,662881407,1693476303,1039999634,1445581274,827305339,1679194912,1611408610,2085847832,1085471929,1350017616,706846794,1946195420,371442946,1534407995,208160046,1838786458,856926129,264857081,305320361,477382399,1078502276,2127814701,1472838833,1747461030,913131671,605082143,438327987,915635821,1156622803,1774386005,114338361,453322963,1280012911,575111220,1381044867,979619746,145624773,889465130,1332992618,1849351661,438185774,1405403408,819651306,99554377,569744392,1031867537,503401487,690139023,295439790,1847151681,53233600,1723275212,1637055021,802915893,843086007,1736131058,1665237619,577265641,2090472421,403102008,1165227216,255270444,352273530,2053439725,1165943500,517501803,1141360108,585262903,2043111513,2069256675,1658006138,1422521882,322686916,848036057,1515402787,619448877,170468003,667981568,991869524,912050661,1109187950,1841391756,595251182,1707654869,1140324936,1604370889,971083111,1504552402,665368229,466004722,1166013373,877125537,748387712,366030386,1779744038,1381104303,1393116202,88631155,697621277,1082974169,931929997,791527965,2028834314,93155928,375801258,2089542927,1158508926,1812586164,214567892,887496602,625402472,190189523,601438148,1245839301,773985202,2075417228,790196114,571993092,49924876,719603532,1588234488,1948573282,1363552635,1778156429,1654290090,635797677,1635242524,898200444,1832782985,1808613971,1665398650,1385283698,1523796744,1644741187,1032024167,1816147245,1455472096,1439961573,442338140,1842637002,1571004221,1527130184,1508130084,1341832846,287785295,322119901,362814115,1399076839,487946124,185721542,523561506,1906006035,1450050690,1847298288,81599499,2099510325,1255794717,1803937782,2110621657,225658334,1331096444,1366473481,323543614,2023087092,1653996517,1530508827,1267328461,1339803961,585265228,57740293,653174241,269904821,927583032,186546981,445707315,1448309307,1227304064,1170163928,1785906991,701624696,552763585,1650101677,2018872350,1167887890,1240358940,1735277795,127821767,298438853,1586668310,672219919,59493507,1735575157,1893796361,1722395162,710442182,900285050,1831277192,819261550,16318649,2094708618,1946304899,359236041,1447939316,825112371,1189483965,1260031605,2126298440,952300647,10931444,1522807387,52724623,1171559033,1396758810,881032837,936160673,2117927468,1496023785,1805817789,1914954118,1122093285,261652425,502529030,821298185,364737291,1223239044,1247633136,1768727751,9913391,716917537,1187141537,378102055,1612359129,1145174301,1658530752,322080885,1148161932,446904991,2028679076,1284578294,9835422,867407612,2111325968,1332392484,22432668,2128056058,1611593198,1942929853,802947027,1360516923,1448631082,1855598753,1390937643,47759099,1440195123,1342753230,1537107802,206801396,387703278,2094183793,433573504,1023673703,783735767,98877071,278188829,1036058019,42091227,918578975,238058697,13875827,1292936719,1071177380,1996310101,1185989568,1989333173,1201264345,1037158070,414376866,1425059374,754108768,1163344238,2097114355,1948096612,1971047024,1517984198,1614813048,1739849108,1165485743,677111727,1390403278,632982706,802613999,52010518,301269548,436109021,1838965751,1970408674,1707499673,237847530,1696632245,33714801,1692533218,163803122,1368276674,1357708128,265893882,797203922,1411914421,685510927,1393011332,504454929,1781893979,1514508441,51056228,143568443,1041514017,1316974213,460396040,142818083,1393361615,1210508165,1804844670,1587433502,2059879654,503434227,166198541,1257725141,418825159,770474951,285492233,474199797,1538097135,603533488,1142115007,1519898693,1246024226,377030841,532130978,1195386366,902023949,452299380,596362000,1459125323,1185128249,1151415058,1070181340,1124962339,109440299,1102521930,1962378132,471492642,134518130,1478619127,761467113,1118370334,652454242,950953115,1416724509,1758655923,947707000,952244309,1698927406,1567022090,1358141560,2016760285,1341278149,593758829,626280914,1382362247,23506066,473984927,877647681,2094354327,305410265,872129066,1643967064,1031363401,227041736,611159140,2110771589,1577032389,420488096,471476010,1725985008,476960340,499405281,1058883294,60570270,1146574066,248637268,372627244,294677725,1243935710,1317039381,1386815510,1175001506,1615540310,925429595,1249681779,507258350,1904713758,1616371573,216181123,1672219765,1417738171,902558505,919787254,171089532,1038499373,1491725859,1084233323,1021860254,618942600,1777273581,1546112876,1508664335,2053157044,861822976,215447321,553868857,2069579113,1505560675,731685523,1928334247,2124694618,1733312343,1233799062,1750280907,1843188717,360258450,890540559,1290583103,1590352785,1591067893,1232656242,893643028,1367961757,257050986,1766831936,1541246231,387236521,656204346,278509772,1523810394,895370389,589995591,637376932,99756670,556932648,626979730,1858777179,580888648,1709200115,1869941472,813256861,869061670,431037664,1829176442,1924274831,1153332712,2057561741,1259743493,2125529383,1595333118,1004593822,1638533690,32240608,1923127393,354402874,1469098657,1698421943,1003113847,1986924482,43078855,2026320290,584114378,1216907461,148009886,653897611,1593601737,1012439199,82162460,2027266891,1302134882,776639793,227415683,1495742353,1756371347,917357871,715948348,2003904348,404437046,762533291,1759810858,556524135,1033607098,1161474175,504595713,497978461,1721423330,1382679578,133638465,75188529,648157341,2107955312,1452393403,1496214951,1214000583,1298076033,1870205397,926530942,1801390960,1619617453,1845270846,1621112406,28872974,1724030937,405026117,516082229,470898689,927093846,1182479041,1856500244,2074837501,1967544038,281408823,258170675,398643117,1826236155,1655457827,1990815045,1514833930,567913962,1688542119,2121132090,1161449334,1907214138,276948812,1375526700,1182487977,847291200,1838954951,1670407083,1604703975,1704846532,565943441,1297019447,171810369,1556570947,1157505345,1241630865,1449519057,1589903879,598662752,283646112,985051265,20182395,1635543354,682692116,794804635,1017177148,337771655,877709793,396501517,1312765791,1559014372,841266950,365431425,550314137,582659405,661984654,1485634069,1748590371,1880503170,787049095,1973124794,1187213509,573142246,1066315106,770519058,1430609484,1795461649,1751206040,718836502,2053517064,1534461090,568941985,205293267,1077611578,1980934715,505062975,1712459538,1939854870,1324532127,1704494081,796043991,1284294452,1103785777,209466899,1192089746,1348794509,1010556303,298233855,1528514774,751836502,260788037,1025814745,1768288851,2127747909,630990275,1305597285,812731645,589421947,237807851,1089910282,1644269904,760579292,1050469269,1971549328,750332394,10674713,916792824,584645861,1097818403,1617723443,1534659858,1643468476,1845921170,797933090,467656300,685595542,792413904,661209657,591000427,2104315507,650070683,487003467,1668963202,587573529,286115197,471381664,1633241455,1485361418,1515577160,482609416,811301835,122998902,1243898799,920217654,904304869,974667339,621712819,183975894,141887287,619542197,1336551903,1581163523,779644615,23474340,1046544629,2098644191,1608027856,946182151,1293488299,939785254,515979967,212580415,1499475227,2117426941,2054596303,2014821791,970401130,1921354292,221616140,404851867,365155765,629177028,1015071276,1099494766,1279111341,631503171,334444738,389138157,1680803474,938366450,734438560,776652153,2066905340,121890454,272545066,153899861,1388151106,1116761828,1715403779,1108755187,142296323,1157053596,671704589,22804332,78762031,474918963,547077435,1217901380,886218122,426822853,994358270,1667888666,452322950,1368147320,826931864,322520226,239724011,2126973055,2017847024,1224328237,162704420,1455744950,1370410424,449563237,1709799696,1157304165,1895041783,129169012,452236708,984237610,1800943886,1815311964,1954833180,983673114,291652866,1086997485,1147600953,2105357336,512050839,1789804676,1936518372,113770033,555850470,1822380560,1980277516,529245105,1247833232,1150334138,142427323,1000434016,1889197180,800627706,600793042,339432144,1423976074,782274279,1003543691,1970853286,874243607,564744225,1593165843,587185573,1929445313,428886279,1274359274,1456209638,1708337106,590924699,418508893,1594253973,60464355,36896861,1615550593,1568921728,1675991107,236282141,1217818290,1041898719,1781784160,1623033755,1211084441,1629734546,664916950,177864240,1780713906,1664116719,1690068630,1892547380,529047989,1286761018,1579613505,1618053480,1980640500,1400110821,2117565887,781755987,1359451423,763845135,953908281,1750069088,1850016806,1556642488,1104908652,1329744056,948256391,1807882537,312965865,313989303,1668342494,1189852724,1555431424,1711777375,1837351269,536181878,2062342315,1123420684,177765924,439236362,1483875162,909358837,226089040,2097673600,190173533,2078514126,658790877,1087262936,1450899499,1692505735,570293869,1935571670,1037760882,24719467,84484971,1730721807,911961206,383293245,1890922951,1634876355,1477105346,2092646264,635265037,212047971,1450436459,749960589,1195096698,895513828,86228692,662396703,740623858,341434569,193752675,286263791,614944430,1849588233,354003936,617253430,318034081,814619176,1091291921,1011657916,150812327,1668684807,50832406,728223443,360698247,212919704,446901798,970785177,1378813275,214416415,1468939546,294877416,358730109,1091015987,1874481407,2010609295,1767504548,733664827,501982616,88741842,547814768,588169204,3923041,1598520743,148779090,1764757325,599223436,521818663,263506200,400051480,1640131652,1997469845,592372996,240187679,1442252135,1348139123,450172962,1928544439,1745596885,132212503,998645182,1481236448,82942501,1399018795,624414821,2113225116,151151579,1860097082,1733214633,1072964428,933932333,1548157172,316291751,46772766,2031269216,1404284978,1533994688,189340046,1684639552,1751005804,1579479746,1160323497,165013357,632225478,1064308014,1547491977,1374732031,691076437,1799149908,1950326247,1699557554,371705127,805840677,1652315226,446216316,1285659906,626584815,1503602008,579523151,1084323270,972034125,1849269947,134489763,1602598249,680857184,1611724010,189711094,1703655575,954602800,546262173,1903017638,194519536,213568694,253298967,1482284243,1372500763,876440140,1930813164,543646813,2041241353,470491544,1251956273,1274395521,159085393,1255402912,2101477264,1151231593,842285205,2040649501,372740653,1045907688,679603965,775526714,1315669537,1605603937,293077084,1474116988,1932209785,300603799,1904263669,1154850062,889562186,1913891868,1766128571,676350667,227424915,248667802,578435333,1634712001,1708459018,550464743,872539291,875360712,868403575,1282051121,483899647,2082431385,369858660,1130482748,1550359406,1591492680,578238430,1130162002,406198142,30981447,812456098,28419843,978223534,1069882018,1450704871,128071401,481420427,1246344348,705719756,589662077,264066283,167451073,1148229373,611095200,1018869120,1314161222,1258238484,201550869,608962584,1600417676,1791577532,796866869,213911371,1114176507,1250065172,1786813764,1907163923,577008763,429911431,1645652450,556197748,222500103,1709190902,1865716722,1183686277,423252241,1231526939,2129029459,780332672,528371026,1476578626,1551228701,1965592428,732106500,1270400850,685783947,1522585200,572324872,281068176,381767747,405437546,1772430044,1242020218,1013309107,1379244565,169930768,279380136,2095457915,1043493767,2126462693,2011891975,596059042,582472476,19986363,1557708691,130699475,1212332174,1736856129,2087860658,799499025,985563903,486566085,1801939389,1162821446,840472759,97701461,2036687501,1741867112,818974625,1863466198,1868688337,1572965637,1141545474,2023273188,2007673918,783654939,1807413591,2069165530,272131045,147795694,1850908981,606516351,246535065,201536264,1348820552,1405678974,1335524242,1402033285,709566930,2080029285,1244356749,692290090,1631445957,494433223,1342452180,216103056,605166265,382552611,664939175,1531385400,1968688375,1967280728,505288646,1675603051,1633294102,1080861318,236446116,1280838300,1749280005,626552936,222434557,984298674,997234592,1564835839,330325413,684762429,90980877,723133422,1643070905,2026840557,2113980825,1127418002,1365292287,1219666553,1866995675,1057356577,945396129,45491274,611041924,249259828,938681801,361533689,1037051152,1438773808,2070523721,914046529,393968909,1318200678,598351028,576628701,179562400,1489485474,1842246748,898918245,1697041732,949668338,994798900,1162779059,1611150293,582104914,1579014204,102395073,1050042174,875349545,554198109,780067554,980897150,134552296,150105758,731367254,284637257,1753921726,685711723,596520333,531292914,276008239,574438477,610608530,534243235,190349774,77167217,1959218901,106555976,1360495256,1613413112,821610769,1511131260,540235927,1681360003,2059071200,2125287590,1399744156,2019671216,718798227,925291445,224546418,1905539990,563300606,1216393664,1983223941,705249247,467467211,13424498,609487632,369141392,1409151397,1090121476,438275051,156365344,1874731627,1658095537,1253194088,1658403799,969914557,482772589,1215150644,511940530,689149888,1858239967,2103941883,418712158,235926497,1068837375,1801249616,1188510911,236307852,1125046112,963297584,1564624756,265337134,161985183,376695866,563288995,486715841,1579931958,439781870,1274810091,399411392,610846702,1921176358,1418497504,1304563264,76982303,1548605421,1081210138,1103784901,541038287,271066499,2058673185,1168468464,181718036,1064380780,315274422,1752250144,532061132,2039188953,1684441867,1852677658,1930354058,1035978723,903905770,1215331641,822559426,550152330,1777386559,509446107,437127075,758802810,322186832,101468168,1483498443,1055472843,1989368303,1500078996,233448317,424047877,955666280,810193480,27722658,1750186031,295342998,1246330653,1205403113,1956583841,2019310362,1784049918,1255427452,730699363,1604359294,455605415,2039117726,2117511332,810424316,689905858,891195259,2092033067,44677218,1043304524,367254316,748567290,477058007,197801294,244084457,605605810,1802494922,1473258872,1473303924,196516390,329359684,1304095698,2030153255,1380763885,761180634,889326608,532670469,1851346106,1322044299,222746777,110188599,537849930,1897748935,2013095096,681168353,671457877,1138405364,719974948,975887361,278848465,1504176127,1504534013,1996539097,74139542,1677868655,801008874,86853263,1060874413,1590030953,1778114845,1623332591,1288818075,1543934237,263351960,983167821,962562644,960634954,1727407220,212009584,1200844085,587687451,349570228,1153840126,1378079174,244486046,1343492466,1188355923,674155261,1269465715,208604564,230768123,632492267,1163335005,1162743974,339990525,1140522165,381332716,1305127869,1332348817,315893678,1904505228,461268796,706062852,1231975968,449029588,1498544899,181667691,1774766237,1676700696,381323005,1065818767,1100454203,1939376258,736847991,1324010960,328463109,468276104,1939375906,454099117,1661397223,559430315,757643346,1666045389,1462867650,394570165,606944295,1169267410,626243061,1010087365,19368495,1626599908,1720957565,378426609,1874669354,966142356,573794343,1752807754,1852475700,1811875215,400529240,419494665,1805451500,1079822815,239072727,1812451171,1609378281,719857550,1665581173,1100637513,799467777,1617075547,1197936145,2103247375,606511787,799470382,341104042,1342633424,2055216119,1526359825,863010752,1048323822,2026228671,40843528,2110771617,226922263,1773140834,757232537,1030567206,1909789967,2105660798,1269387190,607954518,576474535,1155295195,474399074,1875233662,263029751,1541994209,528364257,1310378695,1649120584,511094198,952267950,846524270,1192837121,1246532970,1485879023,2076472377,1872734535,1320315507,1994613437,850470424,1252374657,1263835862,1606358447,2027960957,414044511,139145108,539343237,263578116,1724301662,1361377543,1991655785,492542547,1030814980,1415269412,1151718068,1974998016,1223146177,2058342428,199566373,395846304,1564828351,1442464260,17238640,2080273897,1603937981,1131525685,1930377334,1366862079,1931275994,680460606,1009354033,109797985,1392864139,520964434,675719967,741696468,1731410174,901180273,1070500321,1510467309,1583949441,885330455,39489702,1214456617,362871338,691572761,2109938378,1177283992,1634816776,1760583345,1577755353,289763509,1058030674,339252508,1464384592,1947143092,103630369,2069607234,51610915,866083352,1594541718,1602880140,1947347073,1958014216,63381421,398219597,1783585630,1083569316,1813054244,1400037739,693218051,132327405,1902789986,1879419933,905524653,510112370,997536898,416338200,742240261,1394455117,2116358329,298503187,1653141149,1583164368,317310711,1863948207,1181779629,929127966,634126754,1573258180,365293058,1769400818,1805021720,544577163,1097751022,152552790,1027519900,815887725,1057860206,1726773021,1817324032,1507404706,1608776077,1984028878,89801236,1163216361,2002562292,2073865640,1695185988,596493605,378938492,1182295796,70240671,1343146304,1452175502,2103881937,685995805,1238671586,1809449750,343124032,1222953776,696690676,1859702828,751268843,505941365,1523521112,208800817,1555261454,207396216,1949284469,1779650701,695684252,1082678235,1661326981,1656954698,1937198313,1852642096,983795326,1938583909,801477193,1946082932,959773931,1564010833,1937696625,1498114669,483192309,1617856073,207696223,506647080,2050903866,78807088,1053225873,2129220609,2029276837,1625968492,2113677950,427915834,1783077651,1342770149,1052664982,1172597057,115602347,121769901,806217312,2017804461,775760395,1610858647,110396412,1709858905,1214544429,247115184,1380300565,995569737,1530254847,862293734,302229213,633135742,1439332933,1636435516,1991386601,578205895,1242890018,927966161,1145046471,1765579282,2012202225,1421484666,1623923440,37122651,312998598,1284668873,1050049756,1177160631,589658775,6719293,1461641787,670427954,1668884956,1022550222,277864844,748140784,1925129415,1790230039,1277846218,438034565,907479033,1508053990,1766579346,726343870,824262429,1943756645,285592854,1674766252,914794748,472075357,3924261,1474333936,222762590,1762231444,989886719,987948112,1095685176,977308624,1964226878,1095484236,1259753131,1504218313,1239981037,109954402,1544839130,1961469178,1738216780,1443506679,1081579082,1506826538,845308083,396591052,1272699230,1186873328,459934793,255417728,323429542,1267318284,561005241,173660073,1157830356,1252936678,1391641921,1646750378,1227170186,1679100444,1762585473,713072934,363414263,804550570,446380162,1268414720,1725517236,987610977,1036609755,936487702,1822005975,1804796932,236530139,1338381500,1934022194,1352134703,422041039,1157668653,417310471,2071870120,1071439238,1530231509,1526856629,1581314769,1978843300,342964906,1324850699,632243077,740115623,88709968,946273353,36939516,1089189841,172592652,1180118404,2064185650,1965293233,1456911982,1527045222,936795141,559160962,320604090,386034892,1119582316,456888286,1729112101,1362215825,113665543,1141593649,1394184872,560132258,1640280400,848422447,1498709453,1396520608,42775485,492830879,1430549875,1526190490,556754019,1063856113,1729481179,1082214690,656505544,63318391,1104745318,865031143,1983485045,1824805897,1884441,2026210204,719912114,1746531821,1627660754,1356821743,1997104338,1649288430,1558387248,1286915292,1684901210,92323297,2027814464,1964508819,624801259,793307512,1404059027,1293941329,341865977,17685939,981494262,1970295141,1414469534,1646612670,1893956594,1953523508,513802944,1797866073,1188183334,1470620314,1185873675,506176215,397416453,1903828479,1180478627,1407310877,1338442607,1284897648,1829305236,787174804,156362914,749010014,1767632747,1585324464,1551475629,1340233167,95683182,1852148700,1326331269,2094079599,1553157809,741923913,2094660805,1402116455,1349008422,451360511,836008028,1054426548,500398989,1287420243,1009290783,120841050,1959750614,400155632,145938580,859457189,736303850,874623724,1741800428,2059583460,221763150,1823971997,1250326400,203013374,2110749861,1677808299,1358943109,529610839,216730727,832326733,1446662458,958861937,1622666254,1547104733,337466676,1911520102,539481311,223207315,454032325,417669867,1282661730,323754847,1401070332,1078772940,371910862,1045210504,1395430161,1228667179,2117029755,1933539876,1591558023,374935265,1484336661,292476484,1559229051,1987234675,1873667398,344375730,594122359,1959139634,2006108314,1974404179,597080032,193307002,987398077,1302980257,325506565,872288863,886478974,75237274,796516159,1787847815,1547705220,164964383,751479374,1085629757,1597662454,2059345885,435528497,1398579801,1076753291,193928276,1347371504,272105091,810195391,603682810,638449564,1008785146,1919590748,1670923581,1590338542,344805421,945957665,1775927863,39294685,2059329812,1225936720,1263858977,882390946,587444227,999104602,1466879748,1815905022,1782348784,765980598,1077505989,1918623961,352701778,2033179726,468416311,763151487,1459281833,594667745,927517366,465995865,1944676950,2041803107,738173260,984372031,1463089598,1956660975,1640654406,1491310541,850688414,325852453,814348138,944070410,771757475,1592318246,320568323,1971900788,849827549,904762621,1282752784,2117793041,1624739396,552842640,1399301119,391890762,1121484677,21068117,2082768590,725111917,540613671,902415775,2062473975,569578735,1447744479,270634454,1744087228,633321923,885690998,1296942417,1184269044,1431898131,589887068,1173297639,249054905,1523760060,518246598,675655988,1827984267,1142902213,72105168,660981713,338153122,1505276886,1873828190,1717954817,1099150414,1785132951,1933597302,1122319556,1161626817,2126074537,2082607115,816006704,180612664,1073108971,2005261807,15576324,2022513341,1097966708,1354389867,103102504,1499964189,647525549,1809096122,1419270621,510888497,1273302166,2037157370,273235858,2088842135,2024383032,2128908811,1607074182,1352505051,1299887950,1026775502,76050729,423688504,1227511471,298038833,1004197475,491879046,1806363329,869385831,1584150241,1810872549,2043335444,918420997,1000792966,882732928,664338621,780927016,1938291436,1548251942,559183012,786847027,1993114383,1963474660,2038274418,289055918,2005739182,510278190,243197980,546394496,171161125,901686564,1767262651,1795316666,72483083,1130201775,378747986,1630511536,1844704435,135186724,1874577822,775204526,1143920813,251013053,30084873,21100389,2045187436,1102423944,471157465,394839418,425581510,37839092,405931237,642861840,1462519634,603443570,1290793555,587067880,1679277355,528503423,1584070818,1003858957,626013710,2011424149,154062165,1784193120,669269444,2842579,2072305800,693284363,1177260484,152179208,421000312,1054524686,395415061,1423426794,1761699923,794238501,1373324773,186427922,226753765,364468103,1951494867,2097747845,2045188783,795663608,1583213434,1855606329,535742082,1781832170,1959495614,1973625579,1433142667,1909999409,318361359,1358267996,489879472,689865015,709827388,906719517,116517650,1373756750,941483654,1093099371,219136304,1543338878,1330695360,2073843195,576555337,154502614,308933762,811792010,1233311527,354614543,1134402106,633683327,1505748967,18451248,1735706373,2074199213,1971545596,1889703054,930376438,1582211159,595920089,970280457,1958192177,99400527,1565147182,1752635232,650740935,828628157,1733540518,1263328633,97170356,1884974896,1609544690,590756477,755979560,509432505,1886578984,448842379,113601321,2072213607,1496034625,1377971164,1942458738,833614737,224168111,1921676234,2021482246,175142533,114025521,100348209,477053392,1953147860,460462826,1251446560,1068300662,1692940178,1416605698,1039122428,1937045365,2063106855,1427073119,1121440465,2117563537,621162596,215551686,822685184,905554953,2052294548,2034143731,1485063238,141674969,1645418604,1968277350,484425723,1515455247,853821109,1190017182,463530909,564078296,1122481647,1572732906,1468688459,1005624585,1457250133,219977411,2086771740,32941863,431075039,621404748,1857298127,967784039,638238383,1415822875,1952914706,1461269408,946644780,119489362,172340933,2054249313,1862147850,1857150227,211445265,609114283,1091482164,650281510,879228527,1599896175,2107941913,1914694406,721627407,857929391,1775693913,539209601,635396596,626008312,1675242986,78395442,594504683,790256942,1934964807,1072671567,433452714,1841036291,565584172,1225851793,1372756728,1657153626,2030994281,945943261,378213406,102065310,34337217,1342413713,1540292336,1692122280,431998409,2030663708,1450642397,949673551,1680538354,264564916,1321699744,507873678,420682052,2020380066,6207991,441024671,235627493,372181886,1372552072,1610415829,1058921217,1368935713,1156099393,1864723640,140903546,1381220992,227142085,599151888,1824472763,264761297,1626273336,1838742878,500679394,1805925138,641027082,1098254045,179542813,1035731694,1082460071,84084466,1567061746,837901704,1879439890,1065870712,1807115266,1446454367,191098473,622650585,1168633654,1087122645,1153773231,1177689574,869823629,32177963,250649490,487152922,205362978,1147478314,878566155,623613071,1762419353,1345198070,1050163234,1262621249,1446176218,1208420685,1933697466,2042700753,982294557,607920321,699932232,1430552557,108182636,1279392479,44420179,1801010491,1806227340,1092936878,77958763,1452089756,960015961,421796537,1133029420,602255281,1759681816,537869337,1352473289,1265796104,1025793359,1163311055,1466508138,1817925057,1826474556,1494193038,1541731240,274228695,1720834628,173702256,9585097,1855909246,196682179,697961643,1294738409,1801512488,1138148439,85974108,1278105833,304868004,385726133,1094218844,1784913878,33340899,672165453,166525078,2049102037,442731361,181454958,532036981,737592188,1101111730,1208902895,1312632047,2573430,469137560,2116744630,920795454,68824782,155023322,1582464640,1824903397,169135216,2090218878,1812087053,1129728695,199451671,1921315361,326999730,1888589838,2080415690,1569067742,712963210,86579758,1277738105,844652917,1373508276,966349100,1218380048,1042638093,1096186797,916476439,1531269508,696025257,693549028,162842075,960644997,1111399785,459566428,2083941194,992689004,1904686307,1740490703,1496530794,1274223564,224544131,201731454,820234614,739109308,63731438,1026221488,715216595,1604146399,1096626807,516643205,1026058661,1104988700,265080889,1533673558,1078028926,1650390120,665744661,700513904,2094015416,2064384089,1480755958,1634139928,809187387,167497606,1456973099,516489155,431976943,1454405117,1953459983,1471896273,407309000,1136449235,1987059868,1423208296,1160300881,2064184243,1625773893,415880760,524102570,53697979,1601584572,512204147,668515371,14947445,146757432,966597051,477531316,1450980332,1667606213,153195295,347829082,268195550,944866176,1341981222,255072951,1832122726,33843644,1186303082,1267921356,1456558695,1935994518,1270108645,144229720,347438319,754944253,583718435,979987598,2074298008,973324056,844863197,524549980,1073052129,642627482,723104717,1251768368,679552293,324241356,1647607814,706957494,1245575939,622687325,565330517,1497312541,2095804316,303961874,36158587,68563334,129043028,756866574,1695637941,1428194062,141577896,855236372,1485136093,265939717,31017765,1795670858,1219280098,57412710,161931976,339151067,273841464,677233158,720093924,1859619320,1050359741,1768447398,1093583945,605618210,328665678,751514503,1676238642,248967458,1273604770,169641971,1970142498,864035757,947335792,1607616869,1348524502,1917440235,1716698571,630250276,1885961687,51676666,560015183,1743129481,2089255778,2079197055,1094240779,1289952761,1878176988,732550719,1061625349,176581351,1761320123,129679971,1309686845,319150196,1842901031,1895336388,25662670,346739348,280190320,37082549,1658677107,555924219,857019761,1919166371,2016802580,1843289260,1584876836,191302942,1860819241,1125184037,1642910203,712861767,1004645289,240118400,1286958733,1869448777,1522820240,1134630160,500865104,247250151,1424343643,1893596534,2055861421,1468651196,1339765851,1854536623,1136050667,74313765,2024101134,1716213903,242985469,2035109394,625035134,662075270,646391979,1435917534,1812619026,208079419,506013781,789152301,744637181,316847599,983931382,447383215,1322651029,2085278264,770685184,460207796,172648739,1206498761,1231474039,1508213972,1661944908,336357904,879017231,799041776,598222810,1200223373,253432388,1585399236,492868922,1301167946,2061299553,596849667,1029096153,1404785283,1408832760,1337384425,156163380,125484871,1925691437,1572852767,817049761,831719894,2072235074,2067328604,454139197,2073107255,1269952056,1758404143,62095057,1690638983,7722981,1254805087,495179247,669884522,911180713,86962109,1722614052,1274179620,800364081,1837979772,1611438540,387164592,1056416406,107426893,891220247,301204767,422928975,1437269300,657529404,484382056,1871860966,1034108148,966692011,1960352192,1823497987,1605849676,1238957849,1180858683,582666191,615180303,1524927311,378005213,1012903788,241681444,1376726612,1553720627,851058766,1794632688,2066526076,993161622,1745472375,289329122,104842214,1398753926,1556262681,131612949,1154183760,1309274323,121616333,1324453546,1008486043,1131470209,897871907,2099542078,1404718468,1703518092,85587685,1419744357,858549450,1975341701,2016012432,1255280293,2127787406,729368300,1068698915,133059027,1294493838,1735945496,1612529540,1850526962,927742605,1168538105,1359637321,1322469369,485727579,1730083052,1536786511,1234758754,1386425402,1615788031,1767371344,1546611344,598734149,1174863499,297556188,1039842802,1903864799,1692777242,2026341524,280560327,755904614,392163940,862007516,1222017201,361585855,418525696,1527007127,167454853,1607540538,1507281923,1787343095,1310969001,305185641,1245486715,1113543638,762893910,453945059,767572675,921112565,95796174,1403459242,1804976644,209738363,1802116246,807922132,575441994,1667645007,1727425309,334576870,1984392193,159221698,805460239,429568993,148582883,788267437,703236267,2052047267,974286008,2117816968,365811334,549705603,741941347,468848278,116482208,324076768,2046476157,1760311788,1742607744,2092474782,1246577401,952437731,782226572,1956778955,27540686,343666636,406046299,1918398838,1445964307,1674752217,623932114,81700714,868174338,1367485917,1324952768,2056642834,228476194,393956171,1944879875,983470611,1549925213,1761601751,532464345,1527945711,1658971491,282061274,1819130853,1590433952,1246417813,1623756682,1810282184,1543743207,876811590,1501862973,758069031,352214708,1448737053,58705027,787446413,1734155901,864752149,3466116,2014036855,806742133,1370216514,370161853,1009760455,1390269219,1163737373,1937708776,1814409308,1130150205,136501278,117287370,557471794,290705570,414188956,1567101474,2015767397,1958142594,1903319923,734665624,285107261,1499288971,610293788,1925028576,1176652550,454893182,468192086,904398376,946180526,499204095,843899843,1988107036,2017733435,1779994349,170347640,907507386,1580307543,1602091160,1221350461,579289117,1447609974,1650110605,232787849,694846688,2070249614,933776896,1500877619,1233165951,672669454,1693793652,1114626613,1491692416,1241873017,1855150370,301392482,1903911629,320438891,2071464817,1796679211,884511821,1981135587,1679553114,366616584,1854639278,515590772,2040229184,1919257187,1397586085,2038438551,1298242743,1824386603,555630789,1492376591,82449360,636265144,869257906,1502595474,973365047,2124957760,1774715855,1280946672,1361795189,502588272,1842489217,1567057543,26476928,1115183537,773253710,937881770,1427503268,279228852,1837067053,747901056,233904330,851575763,1253027294,2119939961,1566061210,346737682,838291820,311045824,1359000510,1528741718,188752170,1902071944,796132832,674058922,1617246740,873917418,1500460253,1398815028,1897204120,1062558463,497382076,2033534227,919294879,1938121359,1016026347,1130938543,2127247867,1206333718,1643565227,1992320397,952282193,1869627491,734044313,274352835,177248172,1510881690,301646705,813292731,1837269233,1973972420,1826837765,1650458114,253510885,1201370356,1530080629,878855872,1329093357,1434493262,740447295,895362489,1876715125,1775627782,1368055147,68269055,1292930292,1492234338,776751459,332041413,109578348,1540354305,1260978115,637479100,625099139,1993197714,1399155679,1746748724,1541469525,1538075025,630637004,1580078762,1338156096,306204087,1053484198,983959006,1067709284,852257504,1352094615,588713545,1771501980,2001652758,1915373428,929759659,1543752210,1954719249,1179154302,752478431,668439650,441575054,1306743252,925143003,2055772245,1533708019,75612313,11381635,485747774,77164099,628479127,2087696358,87040059,944222574,470044255,678331491,1515676982,261999189,97040840,2109780698,1985228044,162017084,1494414240,680257419,1872110258,290131568,1881482395,135554478,1049270518,1609524566,2122450595,46314445,1512357671,869263139,639486441,1695500262,1722736157,1152369212,1431566605,1675308954,1936719995,585429717,255408064,1231019876,1273664771,1093464116,2116009754,52783094,111567262,1472385428,445908332,690180692,932907561,1287802237,1179494118,641934925,699270164,1694543789,1837924346,1757821936,281131232,853541263,1779895164,1412218978,1154091001,345913026,1341182528,2058011598,1893683619,1878063253,990205537,1483041893,279557104,1057339648,618562490,379869235,1362568572,1512890195,502132041,1097418558,1181533432,979492808,2023190038,1013324173,2062005885,323770806,1129612021,1952510172,1599446905,1906246362,1746859140,1201851795,975108062,1260970349,831482851,494612315,1220394579,1024633440,861054215,1808162842,844645172,1074316941,326553762,1692108481,196057660,1847039222,612528688,1853297243,1085631989,1071878137,2031408210,1800477311,995691990,1882159545,848906054,1220905674,16173553,598010037,799686158,891840335,136164025,256683206,520906194,375442638,1293263961,843278255,218345554,2016815157,1346114731,2130033543,1572476345,1025837848,23428515,1643794569,854780323,557919613,436796021,124235602,437252034,267404664,1849706162,643878287,1515230176,1942372434,646252403,1543403389,853530485,1917507487,524495540,1651535994,1029392759,393893470,956078351,644246691,174733260,1284687331,953747937,305714655,108923435,842526306,132603957,1597388043,616019415,1909947089,1512037182,2019787872,1141582520,802790195,1345001231,1988141609,21982261,1110508986,2127530106,747268089,572101303,1930813176,188881762,572709733,737558509,350154422,843210995,2122326912,1812082902,1929014732,1678154262,397563727,1776026956,782121850,1896051522,1575647137,1760580552,838651736,418625625,662571177,23791408,441925039,1822124860,700735462,12155260,581869435,1729013633,889637822,993367397,660002171,1423054532,922963222,1907801477,1188931067,1865586792,1002920363,1519410486,949942699,1009146239,1391718877,1422080748,1767380171,1539989669,1322307029,1068629396,1257482118,1739525303,2058248893,2105758199,1794350139,1604882451,1135705739,636643178,697091923,1878300925,562506295,2027389892,1941819435,583829465,1286738107,89209131,937012997,176840608,878997971,507833039,509598989,1183191141,133211639,37764251,212932072,1270956888,583522871,1653752955,219134998,971998895,1140134928,1014991998,235385059,200118879,1496225793,1367906732,324891125,1877758642,1606312150,433398280,1642702538,85139304,452347600,1826095544,1661324878,2103985101,991791502,1136017691,1950906725,395236340,182430261,1847638556,1528844785,21340021,775809936,1455929340,1104507608,1970372658,448099379,873099782,166295079,1177838468,1357174200,1343446365,1998440607,306479327,486868737,802091417,1538235487,1251077960,1749911292,296126916,1960820744,1493981915,1885640049,392399632,1912172360,49072683,599188757,313774312,2018154040,1295932306,485298413,1798804455,1432182056,708298769,2085017714,1161701203,1488888514,1705777488,1864914224,1259029350,1132683174,2085875547,1322654944,1508666841,832435403,1556293521,1783471257,481460619,569922184,1095363291,1821155424,485074119,1070790333,1523186286,832794766,1757107676,1750773900,584188210,1831378634,110185419,1177408198,872797925,1059430030,1225467962,1765375818,225694683,421788521,448672324,767298171,144165833,1525140751,104738146,604932237,221425004,1244643179,2079170391,720271472,1758350036,1395835503,1377368529,836239726,1031193598,1229769129,1243072801,1535146108,1701231095,47087193,424504340,573116768,1873858885,1548010778,16463584,255365630,856422324,185577357,1857611935,1277093299,1111856180,1871688095,1178094608,217891131,1721422332,990676891,84727726,1271864159,450320045,1414600072,206793695,643720713,1364460217,371203781,607409812,461903096,840488750,1866167012,523802259,1440167589,2017644930,114152940,256780250,375037498,1644346660,56913503,787437097,104313142,1096649787,973129613,1038929435,660148657,379132009,1337440851,1970459131,285231602,717638989,1303814745,2004560480,87658044,1288695143,61261955,1165734026,871927591,1683978274,1131727894,206213276,1190813930,1994909762,1193497804,1891027077,1258716765,1503334096,586268311,71419367,480003716,437126190,1976721426,603721166,1748724505,897608710,112644715,2026269076,1039165217,911096326,1385228750,1869721325,1504220284,560446481,268380495,1486383725,1633641747,1119999854,1531996081,786810093,1092003549,638422136,1907317199,555512549,1307843284,1282575604,1477885538,1842497356,1960034517,1656743469,1862935908,102613344,2014079773,1108724123,1604920953,1027024590,2044921399,14398881,1889597738,1259066873,2057101815,1890457671,296940268,2001067486,458972378,1686953560,266571259,1958425850,1569098176,561361671,1882908895,1986627575,1072758102,527813418,1189421837,1572745156,1925195282,1316310473,73341578,857925380,601247380,1161014827,1778997673,1232852333,727307583,2093277172,1684833646,1201983901,1177496530,1411601909,577321699,690379222,1682135277,322766581,159219864,351184952,877373190,971570114,589326161,302899008,1594845597,195066723,846449637,776667948,1723124414,65642954,614507255,2104016372,143364129,2107397981,1027130382,350273543,1802456755,1602462424,1275602989,1952338942,676093751,864456885,1914706586,647153294,315635022,329030227,519789948,171034936,1899080910,2063649067,87522771,2110907298,1484343040,1604790867,546413636,1011518732,411477488,1398723095,1604967299,1269644870,499842682,1629680187,55634867,711988060,2044881664,2080422845,2118504774,31180954,940044970,1294252422,1782441777,930321013,1782389538,1223395677,1204216403,1961265199,1320169591,1148871721,986716457,935833806,1748832511,1067475983,406123958,106264579,1733534498,1698098098,116075831,1783292502,2046443717,2121921,2109450386,573840518,1651951030,1172658137,1115920953,965479602,1815446426,429378593,1985976777,165829471,519226166,975717091,1814677040,552347016,550935806,96094991,1288302228,300027305,1887119471,366721666,1691617264,1172828198,1530314093,237763973,417437831,551027278,1124471059,1488758795,485352833,1061570689,259804932,861790331,592680994,1844892967,531675466,394325983,2126430860,26478728,829130985,1542017417,900879648,1699693427,610015561,1183093875,869167915,1413444278,1386461764,1273670462,116095900,840304243,1797625797,475702464,1259862357,1494044222,126282288,978879265,532566474,765343757,804215578,433840290,60253706,705859336,757562737,532940102,888586492,1863913492,1410978763,1362819156,248247798,2077046342,1982603446,2112723519,890015521,1282862262,593123576,1249482866,542393467,515668055,1880312751,1170488410,430777382,1372782906,874618643,1637632677,135440861,298659570,272167166,1885932827,1244959051,1156833823,5369192,1862222162,566078985,752993737,2069042729,1304332725,1443125674,1401368582,1606335844,1785498482,1484470627,571874799,307495957,1832914451,1863068655,1982406388,2034314127,1200740716,859296434,1106562993,624788955,2098573413,434864779,1521415785,1585434722,1911922247,2099621491,1735305976,1002126703,29641197,833015099,1236997445,703254830,764975874,694613101,1902704642,1908263678,1572992140,438689503,852971243,1367088162,662157319,1635076450,1670447037,722358493,1363518316,1323861791,1988663393,1082046241,661904025,2115649700,1758043957,730593284,468705322,234064952,1532146550,438683518,1776832166,1949101588,1167456794,1269211036,1395849270,1884228764,1877382802,1182603293,998602,505216142,2063263606,432744001,1355276484,1049487143,1669165754,2091540309,819748454,482976048,499085152,34716848,1782008516,1845080066,1463235698,1724088371,966329942,1621767058,632456547,683015238,1940087644,397810268,373217703,980429851,1753257631,1899750756,919900322,193542430,1691796942,1451761150,660599514,90536142,1030437826,697929451,313279535,1274406168,671984814,1581194433,322435905,1165756030,915604623,1583467248,2088020423,1039079829,295925345,1957333460,2128693753,1989192473,838937670,2006760773,1564459235,1172556676,638216007,1423704876,532313346,1801999695,2056239772,549796897,678241498,1384462475,295748562,1097762423,1553705641,104726796,1075645547,1921947570,155025906,2021911150,1933704273,1032203042,704000297,354398748,1692561960,992004806,874584762,1386628672,615855998,391313521,2059793150,1597857661,1902622139,1881245365,1486071235,1368911860,2017918760,1310356524,723889049,540846364,1141520385,499872085,961071952,921304033,700674955,1551650106,440835198,272947727,333093809,775905123,879474647,1456772121,274305009,1885082924,1561442073,947224458,271265950,2001470772,1293969497,1083708726,932082897,69905703,1079364857,974264012,534778683,1767252570,431665191,47484131,1261526083,1459479750,80099007,945515950,1199339822,36966248,899833396,1266547920,427459625,1477843349,657908403,718488748,465131129,1508397401,151343742,1367843746,1310904420,942277723,1435519660,1330609851,1338929450,1209410825,1297581208,281861380,26746584,1905625197,668996761,1869606548,876998509,1452070576,37969861,1502527448,1331141111,1791397451,1191457639,39445645,247904103,814830807,611944465,1152250278,1179322029,1137376540,828151920,251490332,1695654158,1120487702,2056232628,1977182556,529619470,1179542323,728404465,94632350,979092748,418867565,1465390707,1378288396,850086268,933473220,2032633544,839719802,1755289398,1541904016,1626395496,1240061395,146556850,510897284,352237253,279162639,410994634,720716187,1972904950,1009405250,1943804993,1765807633,1264279353,296949034,799455095,415503452,2017504387,1336632620,987620638,293116237,1385387702,1906332397,1861013029,647039716,2120995588,1486221380,1396833444,2102216446,2083576145,2099288703,2005242265,306576903,1589673748,571103021,1664949557,1035515197,386278824,1847424089,1420935472,1869609731,612782539,1523693759,4683530,1217722594,539584402,1702943019,388002374,245527421,817587475,1787537444,545177381,2031892034,947194513,971872857,810226603,623604954,137923683,366409242,1130286134,47274123,492134108,32925736,85843919,43525649,1071477075,1493844383,1669954367,446915525,2030682581,979624618,468202865,1586830136,1569670251,156700226,799844137,727863003,1750408987,1444280894,289055934,807411468,993838935,323854066,366585659,869051358,1134455992,1547140189,261886811,1349039506,1847554303,1014933265,187731217,109272165,1727397505,951481524,1079155738,376463522,1737713867,1821514374,2023213924,337765344,1562287981,1334573567,1484376064,457536444,1252979180,623905086,1934975606,268976303,832992254,22707114,1545921380,498990949,223589150,1119723736,322020649,2118786256,496037234,816950109,951737387,1415006948,1849924688,698065111,1815277331,511224297,1549697002,537422314,1518496559,498287900,434806578,1762691171,1743999472,236026674,2040425103,1268010793,831426214,1522092105,2014282792,531683401,1178314535,1399449637,1582443083,1547993329,2052475846,1399508203,400388698,867728465,430318479,401468174,660806388,850991380,1329231607,725621676,522853110,1608720750,67933040,1989760199,2051305575,2107948102,452058342,681476308,1036037683,1797261262,288861637,854209248,149175835,243926944,1995322688,1513309725,284156401,400248825,1050759918,1173560795,102174484,92371485,1654253563,1841191460,588833791,1127677139,1613723854,1190432972,1752309444,863751110,1000283510,1973897969,537965938,1141539022,2122021995,988198228,1337464160,635846566,1556322614,1510185457,1678479972,1492130512,1658304426,1331220842,737305955,959335482,318448581,1602846534,1815810010,1825807426,2025205495,131935809,2073905032,1730901198,1019056689,1998940857,486443200,1689104620,1862991702,1692964486,808129337,1360666476,414861381,787870777,972282465,1425892719,795237727,57087486,1930687058,732790078,2109074893,1896676048,1517265645,2023956422,2003558655,422606044,240359659,1158708322,192588102,181654951,1452352548,1424478907,777283707,1811587137,228509011,728668753,94975951,35388640,656468241,1916982094,1185446579,205115940,1947206714,1240575958,646660442,2068457339,1606802500,351108944,1354977704,200901143,937253886,158113598,1068437991,1732657260,1014418062,581989931,832996887,397971593,151392550,594075702,1620802034,1616766873,327271094,1383875369,294249670,663249898,2060469358,273336286,102300769,1871225715,498105630,1203213040,1330488693,1782779714,610248145,43827744,299126844,814007717,649547,1011671337,1960016843,114951569,813869124,85958827,641052044,1545876639,1163169192,1573237706,285416152,1035842581,1179156235,1180077574,151874235,692167489,56494966,1295509599,1740269304,1965526464,979605121,534098215,957023779,1067733038,1151963067,1154468355,542597479,1518808126,1554415090,1569179421,2079840977,172794918,580547423,327634148,692380329,1767290574,872549213,1756536500,994151584,802068466,1422567256,866470021,889267467,63446722,1321717536,1801779711,862806562,1356458830,198632543,627861265,904459605,1493232826,146701261,74748516,659428376,645469849,515673713,473980728,2017928907,1061041135,90374434,1463347927,64731422,2099547128,632738830,140203129,417306735,318883357,63719064,672425651,305495761,1112567107,2044964934,259507484,496039179,1625339344,1666780304,1485649017,2038827718,1443534820,98207686,1592858769,715245301,528106765,1992666559,1359658610,1988867631,1807492637,457519190,146956040,1281532674,1537415419,677671772,1013690629,126890716,360365833,1421421106,208002605,22068957,660490918,528966836,1552757363,1060274779,1707017755,1004863805,1285868063,1475437344,1924893065,1860474870,1766423159,1220338231,1651205733,1077970656,1962667310,1889477916,829243365,2058675841,2050782512,1846035824,1862553182,430384938,2116984064,1053253520,197497535,610239897,1683699837,1399532920,1635092785,1707014369,837010494,603809560,1258813284,59864396,1492808865,551248642,1406079053,331008823,1942725320,95053718,421943413,1420308463,1655374993,1878699901,900049993,502364193,1456326184,1729779571,155541307,866468505,1676843891,420591912,1546447584,1635835685,1750973405,787181649,413457360,1354664738,20213997,1048962282,1057205960,1058878419,1774578925,128166758,493291741,708807726,413884185,1962388668,1779680329,706919083,902532802,57746092,263640792,1793420439,1501207399,1226208190,90388092,1486174245,703466419,2005172651,581245599,1200952111,1388797856,1475237109,317039222,1832740669,881999262,99236953,1273056547,354784153,1008811026,591020082,1035999634,1192141319,1935425942,538878980,1284172622,1422223958,865761985,1072850027,719000441,1088864614,1125605638,537430962,1175121695,265743208,1462950019,427898782,818965483,775349386,299823184,1682115226,948659870,1011856964,1357755894,1879922197,1929399223,1424295900,636036416,718968444,191403519,1943081114,160799936,1984950771,1028804639,44445457,1532934039,1425923884,1035681800,1351256020,1747711218,1569121611,918701946,1990966888,1175847160,700608762,714798880,1095972894,1248410498,1135999539,349052394,1998351949,1188392725,574768435,1671501763,1835566619,927265188,334027087,1890212856,1089304122,507328632,1393373386,1198992362,87356449,1932053392,453290179,1508167179,1237329300,1784060662,293187650,616906651,1777101774,1596395592,74222477,64563612,417872292,548901425,826642759,711347635,654493492,1856393691,1618222703,7970089,814171043,911410861,1727202776,92204276,222622880,1177396015,247053262,130381058,1853882760,42621120,1088790071,1376670396,733886540,1681337818,1142336606,796081576,1402706240,1416220392,928564688,667092327,349007401,475024467,183746405,1384640784,217000656,518645197,924721033,906595238,669793288,1242603132,337469620,1506100761,808246745,210600942,1945477009,270733103,298644790,144743975,841301838,813586778,1910450079,233649375,149045763,510745102,1276373646,1019600888,210397359,150408065,1457730325,144558535,306476928,944829245,899073672,1460424771,1324358265,143198502,1031976728,334308504,1468750739,1214402465,928937761,1960764192,413299378,1080069516,114160784,100256189,1384521336,1127001169,829434378,1797052828,469334366,35358580,532590223,1662096159,957568939,1139791236,760137335,317572329,1241537184,355956766,377502054,822904650,2002158602,451871918,1228979226,642478614,569071616,1033048800,43455149,1631057710,1306943517,1207320823,1077426481,1602675582,1911239657,77681079,1653618347,1105488058,576644463,1257959215,684983979,226400068,1069709950,877438784,1318607781,112463121,77600398,1180991511,1534688854,1891745048,171396576,67754355,257034105,1209523562,828614816,88795163,1665270293,2099700406,1754254752,1000876553,461661153,1425244987,182676765,1527269623,1894345241,77261343,234892159,415068064,1117953324,321861079,1419995608,688864151,1828216236,1713935536,1154811978,1049151528,1714173837,1866084357,1984671096,372151768,179310034,1048686334,737042570,1617145368,472417439,2104523106,883462813,1657741308,1498005725,1562392291,1374489675,1923502712,904953356,379024367,1543197320,1012615070,641850045,1366356518,1052212306,196117671,434639503,1455224012,1440675740,371684980,358136836,958869611,1549846783,1947546204,1258020859,2006649904,1007877515,2079298381,958676843,1898922376,270323199,1782594895,1319909546,1041469286,1287708963,1383483848,689937975,917823926,1929377489,730843994,1574522190,850824265,1431345137,261872594,1752789411,1837957552,298010788,1321031803,1121642646,676664584,1210986273,1384233031,370005483,808984997,38254829,1666977388,1634147849,2074856442,268911471,1303632759,1756609521,1005541429,725662381,613129795,1321420258,696865204,1455403085,2001065048,329617294,1464512054,553505572,1179067834,1657810276,264905254,1431010768,38695240,1953368135,150924997,1948024033,312082560,1292909038,1058391615,1324817631,1074728409,1074132028,904185790,870585612,771761638,954220725,371625824,1718866415,622302340,346148333,1971659717,1302641184,1064532979,1314977288,2111437275,303591080,1168671112,1169498448,117951073,1556853905,922847731,663998834,1817353344,1696852285,2026406651,739987590,1952148546,339610427,1904360292,1951567191,566098689,2051934476,448725153,867739628,1449767486,170411066,1815221605,1308682534,1270602801,965236574,1190968480,1156542035,834156951,1276624175,1920155,1545473685,74999782,1895825905,1802927506,2068366899,570967659,1627561684,805945935,1445876192,838045614,1307824884,98957475,1430076719,676701527,1057573787,255978491,2030049479,867837407,810386481,311953317,2040116166,2042304689,303006190,249770101,1514371946,1613832112,702593436,298707950,481076965,1822685590,605046535,858443249,1361327768,311276860,1494127784,1350066320,1125489084,1605184057,1908889190,1193851694,310491587,1497687266,1991030224,1518969077,1386189679,2014856784,2013563819,1232690124,806653921,1372446125,1896491792,571156154,110901073,511030631,1311790062,1555866894,27152234,379927942,1095303433,206997382,364368993,1489266545,631655927,1670305819,2003523031,1415505367,863917253,1693540705,1628805394,1150030051,1739614926,1283868952,707264224,87203593,1094049921,1662446843,1752814456,1208366044,233135086,297870978,1407352654,1395733471,1957818611,1716069655,1110938617,1763471301,1495884839,1412744895,403734198,700051656,12423069,1862154071,763598600,1236503694,651459025,796415431,1651147196,1246227647,2115506160,1761830958,961786041,1914154073,855710098,572087361,2043166934,2074682672,758559841,1409971553,1335864265,878596195,2044949126,39140000,424792354,993375917,366143319,1332998486,2040654367,1906675331,2062736837,1691923988,142429151,175238364,2081771416,809713689,1147241065,858098780,1851476578,2013963061,874046120,1512707290,842878583,1340386203,198139420,166959712,789632425,260474135,145630421,2041975501,348369835,1744155795,1960722371,1757283171,950155045,886110724,438104573,1819054603,1276380684,1144223019,275658916,163945036,1116541137,980012781,256774901,1323997576,448654134,1199051675,2081583561,2008655933,812743923,1889371084,1768278563,2023314463,82138012,420066356,1160695546,1879434234,1118744230,1690206375,439163182,443505387,1574660178,860156891,489925733,214508358,1528883704,667701088,2111260450,1746985262,2060186545,1980241446,1096250468,922492891,601870916,951982016,1973209598,1221788330,710453941,1655242628,2007577014,1837225465,2048418112,306117191,520392896,1813173159,121849656,48887320,1640767912,1217066137,1957111539,1302308129,28095858,1856052216,1120283620,1729030840,1293328902,1334336060,1868728361,1209225285,170693300,957119452,2097380923,1423686801,1860937067,701660707,664469712,273890030,2123843039,845440494,1508476480,893829225,154368516,1052588448,1077624263,1906966719,1573570695,1105934049,2052382749,19217509,110209660,466528974,1233709730,397370869,2024934384,1614972852,878766008,646167383,186546089,2024508969,223725348,834844235,1559938662,1910411352,243815846,1855920210,1663610342,1722160742,1994300442,398776941,962826053,1137790705,16793110,1413322925,194458942,204682013,1043412463,1185156067,1153036121,870024428,425458005,437511806,1462603735,575420531,1456522244,1014479698,383000329,1988572598,1829085172,1503960773,1279649792,1775293894,1421151197,200993384,2056582703,26792142,2039952655,1991883923,595913871,1764465380,419187155,1499140394,220822102,1291827818,1385656105,2111006482,856679795,364798062,1232396022,805483369,1069332654,764514387,637366070,1475469830,1946868609,381897651,1261003023,1217273269,1889943546,1257159555,161709039,1154430262,1081055770,98912480,634175886,1864254769,613239259,1279049098,551622342,1223991739,1898424554,1777839245,2023100811,1117048813,835051815,2116765018,599243559,898044635,1999241718,1398075367,1734904161,1994476711,1415444635,97466688,1885134988,642184692,1622560997,1148104096,1280831961,722000133,772226291,1641249284,590462341,11361201,345126049,1599190204,143749714,389382106,1718043943,430129028,1465646575,1036858365,1509018068,367405409,12366637,752003815,490147913,1614863789,827713707,1538938477,1824319242,1447082350,1102577723,248867410,707129132,1641112251,1758094015,1456996415,1252452405,1286269582,507283905,1966476892,1905230791,1223707737,1407038735,1393644664,2122080472,1000014742,1040896686,1843882568,2067554512,172460714,1653000497,1871528707,205046197,1615224624,307891856,878101058,12725411,1765048729,1593548130,830558830,2012018545,942056048,1981149870,222333413,1920596870,440632407,1380216788,1951903744,183051128,1900987592,1624626743,713783101,170554663,1265217219,899989162,297729432,1720134586,643522489,1585250814,519731873,2066855345,50155623,993404527,538119854,458298280,1823692887,1533727065,686927017,1242422794,830717575,330144470,1598538367,913499396,78978971,1811808933,1930160823,1828751968,1519979994,108131407,1336221625,488520520,224121782,765049896,1188208596,1483564130,768709732,2107262662,1602038850,921799535,759743611,1006477727,1309076600,322266936,2043738458,1933490560,364535082,1925821742,1406405514,8116590,481044086,1366410938,258938095,230752192,18908814,451064865,1143024033,2130132098,184953598,643997911,477918133,290531433,412386242,1062171180,1629501604,1299649057,397022085,1122864668,1785518917,1880001305,7457272,1051931275,1931962433,1322330781,1291202533,950635849,1593791893,266660771,1062706947,590969753,2000585275,1391807128,1961706963,1050711785,2071575035,1022510720,957830178,1568406003,1598541487,672191673,488499391,324115869,1819548138,1462892474,1302275387,1422494452,873318007,2094637206,144977331,1638944273,1892648582,1771847696,140641335,1798524785,1506340049,1725699169,343342882,2001746933,81277,1519817888,664687716,972593134,20001452,928435648,177045794,2080772676,30729513,6827675,374790180,1231694809,1917876124,1040789344,39646947,645324533,539460536,2115250272,164337821,670394153,325697968,2063077371,1863111598,503519127,1154261217,1076499552,321945791,1248707159,1008110570,188697240,1743502314,2113581239,258939783,700120167,1187362841,1136890574,1175699837,1429570680,377580847,1761889496,357867883,634400546,744583921,710410361,1868543903,1386557011,66852413,897620226,1460492743,1690108230,1072966687,969387098,1596184029,893876622,1431375545,613232982,408045865,2095916505,2102493036,367005866,1834149606,1791909292,902341339,970088688,454276711,166091926,1817235206,25159985,832294226,1915021020,1930810309,111303621,1042153193,364839604,754413501,1252577286,666318230,464050908,932959528,791578155,1442081445,1785167447,1853549494,1714053688,1041666274,401349908,1802999200,1545765225,851495223,1033774342,204136707,1875983606,1938592468,925312270,1366357394,812421051,2007737425,1850229320,32000057,85029023,1903620835,119852656,810308657,1435015672,458453742,1572647669,1012401558,914463718,676479884,528040946,1138505592,697372446,1090770224,895530739,1162759885,489827995,737768809,907623763,1669518876,1930023772,1969018956,952382581,2103116989,200917332,1842293935,2828521,179751937,2083584054,941548594,195335586,75899989,1919390268,928004587,1588033798,1834601987,1775313280,124960801,881293315,1709682580,1606796699,1612246312,861286301,278927446,779933548,516138658,1862241190,726423649,172563481,452947571,1290002826,803353843,1346113678,1412574363,326376067,128040234,2017043029,911299728,1287453435,1882125410,1693115602,136493858,1248525626,1248622621,1421685611,200477902,1512895724,1676880899,734595678,832620647,444835679,1032403612,1360932101,2040472804,877740777,1691970031,87787444,925097839,1523406711,537747530,87317312,1913983758,1307293445,226013497,1157426394,345607820,615093583,1996235889,269291299,1346229981,1545092928,1042724400,1390645687,949338147,187750820,1708097748,1556254438,663311203,781080230,713094360,1181783008,1266535596,2125207268,1778641246,502132526,1033332562,1350243620,1236831778,603948360,1628453067,435141958,478415581,1371309026,1560840398,312776442,1342442772,1219122588,713721543,1852709122,683093877,786147416,1210992225,2068920305,253461317,1342257976,26786604,2111400545,1539997690,2021749696,1751847966,1417186166,932575319,1589742818,173368746,2030956196,65232779,1717220747,562610073,1649515781,788417182,478248499,1389809012,1801205818,292779897,1625313522,1407639215,356299193,668978160,1657465693,1288620333,858379947,313781194,1579922904,896299025,1303580355,880331406,1538726304,1723115941,1302971183,1175968645,1427813823,1848130780,1588766398,2064763520,146984190,218476183,1418900283,800064853,460918244,172259695,1106510788,535810228,54209010,546763215,155430641,2007609829,897917016,1891000346,1229883346,185825666,45693229,100983563,139832601,2107142458,574700181,747423250,2044796784,1638613312,276447709,164302512,1464849822,210012168,1074782930,839092222,284790589,1284316474,2111834003,2111374673,1772095053,737726576,1880690064,601862659,1988755145,666037233,1963338683,480565111,372868122,928454732,1732659866,1722682573,1314119610,1059006238,1285483688,1505908817,571452796,933349786,242622348,839914209,2015209700,1860362154,1396030389,1395104514,1752350618,614601836,1630231299,667956837,731552831,1482481757,1086348526,639012514,267556898,889099702,404370789,682271191,445448341,1340210128,1190669742,2011408374,636541345,1753413934,699702573,1646672830,1842940163,2023979342,1330500555,405967432,928144370,1832582660,693322183,953403928,2074173845,832931954,1472635887,1347437218,1648717391,35357523,1891920398,203500228,1877808784,1103507604,1688857529,1034640088,1942877044,301897596,2085996948,637212563,1073593622,398565162,1368272862,1895080434,2102693325,660639893,23586539,866042409,567716366,1372285429,1710102863,1856230806,79326223,1998385538,1094635383] \ No newline at end of file diff --git a/crates/xmss/tests/xmss_tests.rs b/crates/xmss/tests/xmss_tests.rs index 7e60cae5..40bbb637 100644 --- a/crates/xmss/tests/xmss_tests.rs +++ b/crates/xmss/tests/xmss_tests.rs @@ -8,9 +8,12 @@ type F = KoalaBear; fn test_xmss_serialize_deserialize() { let keygen_seed: [u8; 20] = std::array::from_fn(|i| i as u8); let message: [F; MESSAGE_LEN_FE] = std::array::from_fn(|i| F::from_usize(i * 3 + 7)); + let slot_start = 100; + let slot_end = 115; + let slot = 110; - let (sk, pk) = xmss_key_gen(keygen_seed, 100, 115).unwrap(); - let sig = xmss_sign(&mut StdRng::seed_from_u64(100), &sk, &message, 100).unwrap(); + let (sk, pk) = xmss_key_gen(keygen_seed, slot_start, slot_end).unwrap(); + let sig = xmss_sign(&mut StdRng::seed_from_u64(slot as u64), &sk, &message, slot).unwrap(); let pk_bytes = postcard::to_allocvec(&pk).unwrap(); let pk2: XmssPublicKey = postcard::from_bytes(&pk_bytes).unwrap(); @@ -20,7 +23,7 @@ fn test_xmss_serialize_deserialize() { let sig2: XmssSignature = postcard::from_bytes(&sig_bytes).unwrap(); assert_eq!(sig, sig2); - xmss_verify(&pk2, &message, &sig2).unwrap(); + xmss_verify(&pk2, &message, &sig2, slot).unwrap(); } #[test] @@ -28,10 +31,12 @@ fn keygen_sign_verify() { let keygen_seed: [u8; 20] = std::array::from_fn(|i| i as u8); let message: [F; MESSAGE_LEN_FE] = std::array::from_fn(|i| F::from_usize(i * 3 + 7)); - let (sk, pk) = xmss_key_gen(keygen_seed, 100, 115).unwrap(); - for slot in 100..=115 { + let slot_start = 100; + let slot_end = 115; + let (sk, pk) = xmss_key_gen(keygen_seed, slot_start, slot_end).unwrap(); + for slot in slot_start..=slot_end { let sig = xmss_sign(&mut StdRng::seed_from_u64(u64::from(slot)), &sk, &message, slot).unwrap(); - xmss_verify(&pk, &message, &sig).unwrap(); + xmss_verify(&pk, &message, &sig, slot).unwrap(); } } diff --git a/misc/bibliography.bib b/misc/bibliography.bib index 1a9baac3..efb291f9 100644 --- a/misc/bibliography.bib +++ b/misc/bibliography.bib @@ -88,6 +88,15 @@ @misc{top_hypercube url = {https://eprint.iacr.org/2025/889} } +@misc{poseidon1, + author = {Lorenzo Grassi and Dmitry Khovratovich and Christian Rechberger and Arnab Roy and Markus Schofnegger}, + title = {Poseidon: A New Hash Function for Zero-Knowledge Proof Systems}, + howpublished = {Cryptology {ePrint} Archive, Paper 2019/458}, + year = {2019}, + url = {https://eprint.iacr.org/2019/458} +} + + @misc{poseidon2, author = {Lorenzo Grassi and Dmitry Khovratovich and Markus Schofnegger}, title = {Poseidon2: A Faster Version of the Poseidon Hash Function}, diff --git a/misc/minimal_zkVM.tex b/misc/minimal_zkVM.tex index 65c187c0..afc503cc 100644 --- a/misc/minimal_zkVM.tex +++ b/misc/minimal_zkVM.tex @@ -47,7 +47,7 @@ \newpage \section{What is the goal of this zkVM?} -Post-quantum signatures are at least an order of magnitude larger than their pre-quantum counterparts, but the migration is necessary to ensure Ethereum's security. Hash-based signatures offer strong security guarantees and conceptual simplicity, making them a promising candidate: leanXMSS at the consensus layer (where statefulness is not an issue, see \cite{ethereum_signatures}, \cite{top_hypercube}, and \cite{LeanSig}), and leanSPHINCS at the execution layer. A promising choice of hash function is Poseidon2 \cite{poseidon2}, for its snark-friendliness. +Post-quantum signatures are at least an order of magnitude larger than their pre-quantum counterparts, but the migration is necessary to ensure Ethereum's security. Hash-based signatures offer strong security guarantees and conceptual simplicity, making them a promising candidate: leanXMSS at the consensus layer (where statefulness is not an issue, see \cite{ethereum_signatures}, \cite{top_hypercube}, and \cite{LeanSig}), and leanSPHINCS at the execution layer. A promising choice of hash function is Poseidon \cite{poseidon1}, for its snark-friendliness. Since post-quantum signatures are much larger, we need to aggregate them. However, they lack the algebraic structure that makes aggregation easy for elliptic-curve schemes like BLS. Instead, we can aggregate them using a snark---itself hash-based, keeping everything post-quantum. @@ -133,7 +133,7 @@ \subsection{Field} Advantages: \begin{itemize} \item small field $\xrightarrow{}$ less Poseidon rounds - \item $x \xrightarrow{} x^3$ is an automorphism of $\Fp^*$, meaning efficient S-box for Poseidon2 (in BabyBear, it's degree $7$) + \item $x \xrightarrow{} x^3$ is an automorphism of $\Fp^*$, meaning efficient S-box for Poseidon (in BabyBear, it's degree $7$) \item $< 2^{31}$ $\xrightarrow{}$ the sum of 2 field elements can be stored in an u32 \end{itemize} @@ -263,16 +263,16 @@ \subsubsection{JUMP (Conditional)} \subsection{Precompiles} -There are two "precompile" instructions: EXTENSION\_OP and POSEIDON2, used for special computation (extension field operations and hashing). Each precompile instruction has three (potentially runtime) parameters $\nu_A$, $\nu_B$, $\nu_C$, and a compile-time value \texttt{PRECOMPILE\_DATA}. +There are two "precompile" instructions: EXTENSION\_OP and POSEIDON, used for special computation (extension field operations and hashing). Each precompile instruction has three (potentially runtime) parameters $\nu_A$, $\nu_B$, $\nu_C$, and a compile-time value \texttt{PRECOMPILE\_DATA}. $\nu_A$, $\nu_B$, $\nu_C$ are defined similarly to the ADD/MUL instructions, with the additional possibility of $\nu_A = \textbf{fp} + \alpha$ and $\nu_B = \textbf{fp} + \beta$, but these two must be used simultaneously (if $\nu_A$ is fp-relative, then $\nu_B$ must be fp-relative too, and vice versa). -\subsubsection{POSEIDON2} +\subsubsection{POSEIDON} Compression of 16 field elements (two blocks of 8) into 8 field elements. $$ -\textbf{m}[\nu_C..\nu_C + 8] = \text{Poseidon2}(\textbf{m}[\nu_A..\nu_A + 8] | \textbf{m}[\nu_B..\nu_B + 8]) + \textbf{m}[\nu_A..\nu_A + 8] +\textbf{m}[\nu_C..\nu_C + 8] = \text{Poseidon}(\textbf{m}[\nu_A..\nu_A + 8] | \textbf{m}[\nu_B..\nu_B + 8]) + \textbf{m}[\nu_A..\nu_A + 8] $$ \vspace{2mm} diff --git a/src/lib.rs b/src/lib.rs index 0b3c0925..092f00a0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,62 +16,3 @@ pub fn setup_prover() { pub fn setup_verifier() { rec_aggregation::init_aggregation_bytecode(); } - -#[cfg(test)] -mod tests { - use super::*; - use rand::RngExt; - use xmss::signers_cache::{ - BENCHMARK_SLOT, find_randomness_for_benchmark, message_for_benchmark, reconstruct_signer_for_benchmark, - }; - - #[test] - fn test_xmss_signature() { - let start = 555; - let end = 565; - let slot = 560; - let key_gen_seed: [u8; 20] = rand::rng().random(); - let message_hash: [F; MESSAGE_LEN_FE] = std::array::from_fn(|i| F::from_usize(i * 3)); - - let (secret_key, pub_key) = xmss_key_gen(key_gen_seed, start, end).unwrap(); - let signature = xmss_sign(&mut rand::rng(), &secret_key, &message_hash, slot).unwrap(); - xmss_verify(&pub_key, &message_hash, &signature).unwrap(); - } - - #[test] - fn test_recursive_aggregation() { - setup_prover(); - - let log_inv_rate = 2; // [1, 2, 3 or 4] (lower = faster but bigger proofs) - let message: [F; MESSAGE_LEN_FE] = message_for_benchmark(); - let slot: u32 = BENCHMARK_SLOT; - - let pub_keys_and_sigs_a: Vec<_> = (0..3) - .map(|i| reconstruct_signer_for_benchmark(i, find_randomness_for_benchmark(i))) - .collect(); - let aggregated_a = xmss_aggregate(&[], pub_keys_and_sigs_a, &message, slot, log_inv_rate); - - let pub_keys_and_sigs_b: Vec<_> = (3..5) - .map(|i| reconstruct_signer_for_benchmark(i, find_randomness_for_benchmark(i))) - .collect(); - let aggregated_b = xmss_aggregate(&[], pub_keys_and_sigs_b, &message, slot, log_inv_rate); - - let pub_keys_and_sigs_c: Vec<_> = (5..6) - .map(|i| reconstruct_signer_for_benchmark(i, find_randomness_for_benchmark(i))) - .collect(); - - let aggregated_final = xmss_aggregate( - &[aggregated_a, aggregated_b], - pub_keys_and_sigs_c, - &message, - slot, - log_inv_rate, - ); - - let serialized_final = aggregated_final.serialize(); - println!("Serialized aggregated final: {} KiB", serialized_final.len() / 1024); - let deserialized_final = AggregatedXMSS::deserialize(&serialized_final).unwrap(); - - xmss_verify_aggregation(&deserialized_final, &message, slot).unwrap(); - } -} diff --git a/src/main.rs b/src/main.rs index ee9a6603..340c1f23 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,9 +24,9 @@ enum Cli { #[arg(long, help = "Enable tracing")] tracing: bool, }, - #[command(about = "Prove validity of Poseidon2 permutations over 16 field elements")] + #[command(about = "Prove validity of Poseidon permutations")] Poseidon { - #[arg(long, help = "log2(number of Poseidons)")] + #[arg(long, help = "log2(number of Poseidons)", default_value = "20")] log_n_perms: usize, #[arg(long, help = "Enable tracing")] tracing: bool, diff --git a/src/prove_poseidons.rs b/src/prove_poseidons.rs index f14d6f77..ee3a8899 100644 --- a/src/prove_poseidons.rs +++ b/src/prove_poseidons.rs @@ -1,8 +1,9 @@ use air::{check_air_validity, prove_air, verify_air}; use backend::*; use lean_vm::{ - EF, ExtraDataForBuses, F, POSEIDON_16_COL_A, POSEIDON_16_COL_B, POSEIDON_16_COL_FLAG, POSEIDON_16_COL_INPUT_START, - POSEIDON_16_COL_RES, Poseidon16Precompile, ZERO_VEC_PTR, fill_trace_poseidon_16, num_cols_poseidon_16, + EF, ExtraDataForBuses, F, POSEIDON_16_COL_FLAG, POSEIDON_16_COL_INDEX_INPUT_LEFT, POSEIDON_16_COL_INDEX_INPUT_RES, + POSEIDON_16_COL_INDEX_INPUT_RIGHT, POSEIDON_16_COL_INPUT_START, Poseidon16Precompile, ZERO_VEC_PTR, + fill_trace_poseidon_16, num_cols_poseidon_16, }; use rand::{RngExt, SeedableRng, rngs::StdRng}; use utils::{ @@ -28,9 +29,9 @@ pub fn benchmark_prove_poseidon_16(log_n_rows: usize, tracing: bool) { *t = (0..n_rows).map(|_| rng.random()).collect(); } trace[POSEIDON_16_COL_FLAG] = (0..n_rows).map(|_| F::ONE).collect(); - trace[POSEIDON_16_COL_RES] = (0..n_rows).map(|_| F::ZERO).collect(); // useless - trace[POSEIDON_16_COL_A] = (0..n_rows).map(|_| F::from_usize(ZERO_VEC_PTR)).collect(); - trace[POSEIDON_16_COL_B] = (0..n_rows).map(|_| F::from_usize(ZERO_VEC_PTR)).collect(); + trace[POSEIDON_16_COL_INDEX_INPUT_RES] = (0..n_rows).map(|_| F::ZERO).collect(); // useless + trace[POSEIDON_16_COL_INDEX_INPUT_LEFT] = (0..n_rows).map(|_| F::from_usize(ZERO_VEC_PTR)).collect(); + trace[POSEIDON_16_COL_INDEX_INPUT_RIGHT] = (0..n_rows).map(|_| F::from_usize(ZERO_VEC_PTR)).collect(); fill_trace_poseidon_16(&mut trace); let whir_config = WhirConfigBuilder { diff --git a/tests/test_lean_multisig.rs b/tests/test_lean_multisig.rs new file mode 100644 index 00000000..d013a779 --- /dev/null +++ b/tests/test_lean_multisig.rs @@ -0,0 +1,47 @@ +use lean_multisig::{AggregatedXMSS, setup_prover, xmss_aggregate, xmss_verify_aggregation}; +use rand::{RngExt, SeedableRng, rngs::StdRng}; +use xmss::{ + signers_cache::{BENCHMARK_SLOT, get_benchmark_signatures, message_for_benchmark}, + xmss_key_gen, xmss_sign, xmss_verify, +}; + +#[test] +fn test_xmss_signature() { + let start_slot = 111; + let end_slot = 200; + let slot: u32 = 124; + let mut rng: StdRng = StdRng::seed_from_u64(0); + let msg = rng.random(); + + let (secret_key, pub_key) = xmss_key_gen(rng.random(), start_slot, end_slot).unwrap(); + let signature = xmss_sign(&mut rng, &secret_key, &msg, slot).unwrap(); + xmss_verify(&pub_key, &msg, &signature, slot).unwrap(); +} + +#[test] +fn test_recursive_aggregation() { + setup_prover(); + + let log_inv_rate = 2; // [1, 2, 3 or 4] (lower = faster but bigger proofs) + let message = message_for_benchmark(); + let slot: u32 = BENCHMARK_SLOT; + let signatures = get_benchmark_signatures(); + + let pub_keys_and_sigs_a = signatures[0..3].to_vec(); + let (pub_keys_a, aggregated_a) = xmss_aggregate(&[], pub_keys_and_sigs_a, &message, slot, log_inv_rate); + + let pub_keys_and_sigs_b = signatures[3..5].to_vec(); + let (pub_keys_b, aggregated_b) = xmss_aggregate(&[], pub_keys_and_sigs_b, &message, slot, log_inv_rate); + + let pub_keys_and_sigs_c = signatures[5..6].to_vec(); + + let children: Vec<(&[_], AggregatedXMSS)> = vec![(&pub_keys_a, aggregated_a), (&pub_keys_b, aggregated_b)]; + let (final_pub_keys, aggregated_final) = + xmss_aggregate(&children, pub_keys_and_sigs_c, &message, slot, log_inv_rate); + + let serialized_final = aggregated_final.serialize(); + println!("Serialized aggregated final: {} KiB", serialized_final.len() / 1024); + let deserialized_final = AggregatedXMSS::deserialize(&serialized_final).unwrap(); + + xmss_verify_aggregation(&final_pub_keys, &deserialized_final, &message, slot).unwrap(); +} From 5d97e5e0f1afcb89c5cac7c8842fbed7876b4882 Mon Sep 17 00:00:00 2001 From: Tom Wambsgans Date: Tue, 31 Mar 2026 17:42:22 +0200 Subject: [PATCH 2/6] naming --- .../backend/koala-bear/src/poseidon1_koalabear_16.rs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/crates/backend/koala-bear/src/poseidon1_koalabear_16.rs b/crates/backend/koala-bear/src/poseidon1_koalabear_16.rs index df2c8158..f695fa6f 100644 --- a/crates/backend/koala-bear/src/poseidon1_koalabear_16.rs +++ b/crates/backend/koala-bear/src/poseidon1_koalabear_16.rs @@ -267,7 +267,7 @@ fn negacyclic_conv8>( /// Circulant MDS multiply via Karatsuba convolution: state = C * state. #[inline(always)] -fn mds_karatsuba_16>(state: &mut [R; 16]) { +pub fn mds_circ_16>(state: &mut [R; 16]) { let input = *state; conv_n_recursive( input, @@ -278,12 +278,6 @@ fn mds_karatsuba_16>(sta ); } -/// Public circulant MDS multiply. -#[inline(always)] -pub fn mds_circ_16>(state: &mut [R; 16]) { - mds_karatsuba_16(state); -} - // ========================================================================= // Sparse matrix decomposition helpers (for NEON partial rounds) // ========================================================================= @@ -861,7 +855,7 @@ impl Poseidon1KoalaBear16 { for s in state.iter_mut() { *s = s.injective_exp_n(); } - mds_karatsuba_16(state); + mds_circ_16(state); } /// NEON-specific fast path using: From c641906f13d8b979c997ae147f4d12c6b9d52109 Mon Sep 17 00:00:00 2001 From: Tom Wambsgans Date: Wed, 1 Apr 2026 15:36:34 +0200 Subject: [PATCH 3/6] clippy --- .../backend/koala-bear/src/poseidon1_koalabear_16.rs | 12 ++++++++++++ .../src/quintic_extension/packed_extension.rs | 2 ++ 2 files changed, 14 insertions(+) diff --git a/crates/backend/koala-bear/src/poseidon1_koalabear_16.rs b/crates/backend/koala-bear/src/poseidon1_koalabear_16.rs index f695fa6f..23a839a1 100644 --- a/crates/backend/koala-bear/src/poseidon1_koalabear_16.rs +++ b/crates/backend/koala-bear/src/poseidon1_koalabear_16.rs @@ -25,18 +25,26 @@ const MDS_CIRC_COL: [KoalaBear; 16] = KoalaBear::new_array([1, 3, 13, 22, 67, 2, // Forward twiddles for 16-point FFT: W_k = omega^k // ========================================================================= +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] const W1: KoalaBear = KoalaBear::new(0x08dbd69c); +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] const W2: KoalaBear = KoalaBear::new(0x6832fe4a); +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] const W3: KoalaBear = KoalaBear::new(0x27ae21e2); +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] const W4: KoalaBear = KoalaBear::new(0x7e010002); +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] const W5: KoalaBear = KoalaBear::new(0x3a89a025); +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] const W6: KoalaBear = KoalaBear::new(0x174e3650); +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] const W7: KoalaBear = KoalaBear::new(0x27dfce22); // ========================================================================= // 16-point FFT / IFFT (radix-2, fully unrolled, in-place) // ========================================================================= +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] #[inline(always)] fn bt>(v: &mut [R; 16], lo: usize, hi: usize) { let (a, b) = (v[lo], v[hi]); @@ -44,6 +52,7 @@ fn bt>(v: &mut [R; 16], lo: usize, hi: usize) { v[hi] = a - b; } +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] #[inline(always)] fn dit>(v: &mut [R; 16], lo: usize, hi: usize, t: KoalaBear) { let a = v[lo]; @@ -52,6 +61,7 @@ fn dit>(v: &mut [R; 16], lo: usize, hi: usize, t: KoalaBea v[hi] = a - tb; } +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] #[inline(always)] fn neg_dif>(v: &mut [R; 16], lo: usize, hi: usize, t: KoalaBear) { let (a, b) = (v[lo], v[hi]); @@ -59,6 +69,7 @@ fn neg_dif>(v: &mut [R; 16], lo: usize, hi: usize, t: Koal v[hi] = (b - a) * t; } +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] #[inline(always)] fn dif_ifft_16_mut>(f: &mut [R; 16]) { bt(f, 0, 8); @@ -95,6 +106,7 @@ fn dif_ifft_16_mut>(f: &mut [R; 16]) { bt(f, 14, 15); } +#[cfg(all(target_arch = "aarch64", target_feature = "neon"))] #[inline(always)] fn dit_fft_16_mut>(f: &mut [R; 16]) { bt(f, 0, 1); diff --git a/crates/backend/koala-bear/src/quintic_extension/packed_extension.rs b/crates/backend/koala-bear/src/quintic_extension/packed_extension.rs index eca47ab7..c5c498a5 100644 --- a/crates/backend/koala-bear/src/quintic_extension/packed_extension.rs +++ b/crates/backend/koala-bear/src/quintic_extension/packed_extension.rs @@ -16,6 +16,7 @@ use serde::{Deserialize, Serialize}; use utils::{flatten_to_base, reconstitute_from_base}; use super::extension::QuinticExtensionField; +#[allow(unused_imports)] use crate::{KoalaBear, QuinticExtendable}; #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug, Serialize, Deserialize, PartialOrd, Ord)] @@ -78,6 +79,7 @@ impl> Algebra> Algebra for PackedQuinticExtensionField {} +#[allow(unused_macros)] macro_rules! impl_packed_ext_scalar_ops { ($pf:ty) => { impl Add for PackedQuinticExtensionField { From 1b9c8246f6db1e2b05b7fd93b1d99fa60d7adc6b Mon Sep 17 00:00:00 2001 From: Tom Wambsgans Date: Thu, 2 Apr 2026 07:57:05 +0200 Subject: [PATCH 4/6] more efficient constraints evaluation in recursion --- crates/lean_vm/src/tables/poseidon_16/mod.rs | 23 +- crates/rec_aggregation/src/compilation.rs | 245 ++++++++++++++----- src/main.rs | 2 +- 3 files changed, 202 insertions(+), 68 deletions(-) diff --git a/crates/lean_vm/src/tables/poseidon_16/mod.rs b/crates/lean_vm/src/tables/poseidon_16/mod.rs index 9e9b4ce2..f24c8d2e 100644 --- a/crates/lean_vm/src/tables/poseidon_16/mod.rs +++ b/crates/lean_vm/src/tables/poseidon_16/mod.rs @@ -6,10 +6,14 @@ use backend::*; use utils::{ToUsize, poseidon16_compress}; /// Dispatch `mds_circ_16` through concrete types. -/// All five AIR types (`F`, `EF`, `FPacking`, `EFPacking`, `SymbolicExpression`) -/// satisfy the `PrimeCharacteristicRing + Mul` bound required by `mds_circ_16`. +/// For `SymbolicExpression` we use the dense form so the zkDSL generator can +/// emit `dot_product_be` precompile calls instead of Karatsuba arithmetic. #[inline(always)] fn mds_air_16(state: &mut [A; WIDTH]) { + if TypeId::of::() == TypeId::of::>() { + dense_mat_vec_air_16(mds_dense_16(), state); + return; + } macro_rules! dispatch { ($t:ty) => { if TypeId::of::() == TypeId::of::<$t>() { @@ -22,10 +26,23 @@ fn mds_air_16(state: &mut [A; WIDTH]) { dispatch!(EF); dispatch!(FPacking); dispatch!(EFPacking); - dispatch!(SymbolicExpression); unreachable!() } +fn mds_dense_16() -> &'static [[F; 16]; 16] { + use std::sync::OnceLock; + static MAT: OnceLock<[[KoalaBear; 16]; 16]> = OnceLock::new(); + MAT.get_or_init(|| { + let cols: [[F; 16]; 16] = std::array::from_fn(|j| { + let mut e = [F::ZERO; 16]; + e[j] = F::ONE; + mds_circ_16(&mut e); + e + }); + std::array::from_fn(|i| std::array::from_fn(|j| cols[j][i])) + }) +} + /// Add a `KoalaBear` constant to any AIR type. #[inline(always)] fn add_kb(a: &mut A, value: F) { diff --git a/crates/rec_aggregation/src/compilation.rs b/crates/rec_aggregation/src/compilation.rs index 4ebd53b3..4fa34e46 100644 --- a/crates/rec_aggregation/src/compilation.rs +++ b/crates/rec_aggregation/src/compilation.rs @@ -53,7 +53,7 @@ fn compile_main_program(inner_program_log_size: usize, bytecode_zero_eval: F) -> #[instrument(skip_all)] fn compile_main_program_self_referential() -> Bytecode { - let mut log_size_guess = 19; + let mut log_size_guess = 18; let bytecode_zero_eval = F::ONE; loop { let bytecode = compile_main_program(log_size_guess, bytecode_zero_eval); @@ -374,13 +374,53 @@ fn all_air_evals_in_zk_dsl() -> String { const AIR_INNER_VALUES_VAR: &str = "inner_evals"; +struct AirCodegenCtx { + expr_cache: HashMap, + consts_cache: HashMap, String>, + ef_const_cache: HashMap, + ctr: Counter, +} + +impl AirCodegenCtx { + fn new() -> Self { + Self { + expr_cache: HashMap::new(), + consts_cache: HashMap::new(), + ef_const_cache: HashMap::new(), + ctr: Counter::new(), + } + } + + fn write_base_constants(&mut self, values: &[u32], res: &mut String) -> String { + if let Some(name) = self.consts_cache.get(values) { + return name.clone(); + } + let name = format!("bc_{}", self.ctr.get_next()); + res.push_str(&format!("\n {} = Array({})", name, values.len())); + for (i, &c) in values.iter().enumerate() { + res.push_str(&format!("\n {}[{}] = {}", name, i, c)); + } + self.consts_cache.insert(values.to_vec(), name.clone()); + name + } + + fn write_embedded_constant(&mut self, c: u32, res: &mut String) -> String { + if let Some(name) = self.ef_const_cache.get(&c) { + return name.clone(); + } + let name = format!("aux_{}", self.ctr.get_next()); + res.push_str(&format!("\n {} = embed_in_ef({})", name, c)); + self.ef_const_cache.insert(c, name.clone()); + name + } +} + fn air_eval_in_zk_dsl(table: T) -> String where T::ExtraData: Default, { let (constraints, bus_flag, bus_data) = get_symbolic_constraints_and_bus_data_values::(&table); - let mut vars_counter = Counter::new(); - let mut cache: HashMap = HashMap::new(); + let mut ctx = AirCodegenCtx::new(); let mut res = format!( "def evaluate_air_constraints_table_{}({}, air_alpha_powers, bus_beta, logup_alphas_eq_poly):\n", @@ -392,14 +432,14 @@ where res += &format!("\n constraints_buf = Array(DIM * {})", n_constraints); for (index, constraint) in constraints.iter().enumerate() { let dest = format!("constraints_buf + {} * DIM", index); - eval_air_constraint(*constraint, Some(&dest), &mut cache, &mut res, &mut vars_counter); + eval_air_constraint(*constraint, Some(&dest), &mut ctx, &mut res); } // first: bus data - let flag = eval_air_constraint(bus_flag, None, &mut cache, &mut res, &mut vars_counter); + let flag = eval_air_constraint(bus_flag, None, &mut ctx, &mut res); res += &format!("\n buff = Array(DIM * {})", bus_data.len()); for (i, data) in bus_data.iter().enumerate() { - let data_str = eval_air_constraint(*data, None, &mut cache, &mut res, &mut vars_counter); + let data_str = eval_air_constraint(*data, None, &mut ctx, &mut res); res += &format!("\n copy_5({}, buff + DIM * {})", data_str, i); } // dot product: bus_res = sum(buff[i] * logup_alphas_eq_poly[i]) for i in 0..bus_data.len() @@ -428,62 +468,142 @@ where res } -/// Evaluate a symbolic AIR constraint expression, emitting zkDSL code into `res`. -/// If `dest` is Some, writes the result directly there (avoids a copy_5). -/// If `dest` is None, allocates an aux var. Returns the var/pointer where the result lives. fn eval_air_constraint( expr: SymbolicExpression, dest: Option<&str>, - cache: &mut HashMap, + ctx: &mut AirCodegenCtx, res: &mut String, - ctr: &mut Counter, ) -> String { - match expr { - SymbolicExpression::Constant(c) => { - let v = format!("aux_{}", ctr.get_next()); - res.push_str(&format!("\n {} = embed_in_ef({})", v, c.as_canonical_u32())); - v - } + let v = match expr { + SymbolicExpression::Constant(c) => ctx.write_embedded_constant(c.as_canonical_u32(), res), SymbolicExpression::Variable(v) => format!("{} + DIM * {}", AIR_INNER_VALUES_VAR, v.index), SymbolicExpression::Operation(idx) => { - if let Some(v) = cache.get(&idx) { - if let Some(d) = dest { - res.push_str(&format!("\n copy_5({}, {})", v, d)); - } - return v.clone(); + if let Some(v) = ctx.expr_cache.get(&idx) { + v.clone() + } else if let Some(v) = try_emit_dot_product_be(idx, dest, ctx, res) { + ctx.expr_cache.insert(idx, v.clone()); + return v; + } else { + let node = get_node::(idx); + let v = match node.op { + SymbolicOperation::Neg => { + let a = eval_air_constraint(node.lhs, None, ctx, res); + let v = format!("aux_{}", ctx.ctr.get_next()); + res.push_str(&format!("\n {} = opposite_extension_ret({})", v, a)); + v + } + _ => eval_air_binary_op(node.op, node.lhs, node.rhs, dest, ctx, res), + }; + ctx.expr_cache.insert(idx, v.clone()); + v } - let node = get_node::(idx); - let v = match node.op { - SymbolicOperation::Neg => { - let a = eval_air_constraint(node.lhs, None, cache, res, ctr); - let v = format!("aux_{}", ctr.get_next()); - res.push_str(&format!("\n {} = opposite_extension_ret({})", v, a)); - v + } + }; + if let Some(d) = dest + && v != d + { + res.push_str(&format!("\n copy_5({}, {})", v, d)); + } + v +} + +/// Detect `0 + c0*x0 + c1*x1 + ... + cn*xn` in the expression tree and emit +/// a single `dot_product_be` precompile call. Returns None if the pattern doesn't match. +fn try_emit_dot_product_be(idx: u32, dest: Option<&str>, ctx: &mut AirCodegenCtx, res: &mut String) -> Option { + // Walk the left-spine of Add(_, Mul(Const, _)) nodes down to Constant(ZERO). + let mut constants = Vec::new(); + let mut operands = Vec::new(); + let mut current = SymbolicExpression::::Operation(idx); + loop { + match current { + SymbolicExpression::Constant(c) if c == F::ZERO && constants.len() >= 2 => break, + SymbolicExpression::Operation(op_idx) => { + if op_idx != idx && ctx.expr_cache.contains_key(&op_idx) { + return None; } - _ => eval_air_binop(node.op, node.lhs, node.rhs, dest, cache, res, ctr), - }; - // If dest was requested but the result landed elsewhere, copy it - if let Some(d) = dest - && v != d - { - res.push_str(&format!("\n copy_5({}, {})", v, d)); + let node = get_node::(op_idx); + if node.op != SymbolicOperation::Add { + return None; + } + let mul_idx = match node.rhs { + SymbolicExpression::Operation(i) => i, + _ => return None, + }; + let mul = get_node::(mul_idx); + if mul.op != SymbolicOperation::Mul { + return None; + } + let (c, expr) = match (mul.lhs, mul.rhs) { + (SymbolicExpression::Constant(c), o) | (o, SymbolicExpression::Constant(c)) => { + (c.as_canonical_u32(), o) + } + _ => return None, + }; + constants.push(c); + operands.push(expr); + current = node.lhs; } - cache.insert(idx, v.clone()); + _ => return None, + } + } + constants.reverse(); + operands.reverse(); + let n = constants.len(); + + let consts = ctx.write_base_constants(&constants, res); + + // Reuse an existing contiguous buffer if possible. + let vals = try_find_contiguous_buffer(&operands, ctx).unwrap_or_else(|| { + let buf = format!("dp_v_{}", ctx.ctr.get_next()); + res.push_str(&format!("\n {} = Array(DIM * {})", buf, n)); + for (i, ext) in operands.iter().enumerate() { + eval_air_constraint(*ext, Some(&format!("{} + DIM * {}", buf, i)), ctx, res); + } + buf + }); + + let dp_dest = dest.map_or_else( + || { + let v = format!("aux_{}", ctx.ctr.get_next()); + res.push_str(&format!("\n {} = Array(DIM)", v)); v + }, + |d| d.to_string(), + ); + res.push_str(&format!( + "\n dot_product_be({}, {}, {}, {})", + consts, vals, dp_dest, n + )); + Some(dp_dest) +} + +/// Check whether every operand is already cached as consecutive slots in the +/// same buffer (`buf + DIM * 0`, `buf + DIM * 1`, …). +fn try_find_contiguous_buffer(operands: &[SymbolicExpression], ctx: &AirCodegenCtx) -> Option { + let mut base: Option<&str> = None; + for (i, op) in operands.iter().enumerate() { + let idx = match op { + SymbolicExpression::Operation(idx) => *idx, + _ => return None, + }; + let suffix = format!(" + DIM * {}", i); + let this_base = ctx.expr_cache.get(&idx)?.strip_suffix(&suffix)?; + match base { + None => base = Some(this_base), + Some(b) if b == this_base => {} + _ => return None, } } + base.map(|s| s.to_string()) } -/// Evaluate a binary operation (Add/Sub/Mul). When `dest` is Some and the operation -/// supports it, writes directly to dest and returns dest; otherwise allocates an aux var. -fn eval_air_binop( +fn eval_air_binary_op( op: SymbolicOperation, lhs: SymbolicExpression, rhs: SymbolicExpression, dest: Option<&str>, - cache: &mut HashMap, + ctx: &mut AirCodegenCtx, res: &mut String, - ctr: &mut Counter, ) -> String { let c0 = match lhs { SymbolicExpression::Constant(c) => Some(c.as_canonical_u32()), @@ -497,8 +617,8 @@ fn eval_air_binop( match (c0, c1) { // Both extension (None, None) => { - let a = eval_air_constraint(lhs, None, cache, res, ctr); - let b = eval_air_constraint(rhs, None, cache, res, ctr); + let a = eval_air_constraint(lhs, None, ctx, res); + let b = eval_air_constraint(rhs, None, ctx, res); if let Some(d) = dest { let f = match op { SymbolicOperation::Mul => "mul_extension", @@ -515,26 +635,27 @@ fn eval_air_binop( SymbolicOperation::Sub => "sub_extension_ret", _ => unreachable!(), }; - let v = format!("aux_{}", ctr.get_next()); + let v = format!("aux_{}", ctx.ctr.get_next()); res.push_str(&format!("\n {} = {}({}, {})", v, f, a, b)); v } } - // Mul/Add with a constant (commutative for base-ext) + // Mul/Add with a base-field constant _ if matches!(op, SymbolicOperation::Mul | SymbolicOperation::Add) => { let (c, ext_expr) = match (c0, c1) { (Some(c), _) => (c, rhs), (_, Some(c)) => (c, lhs), _ => unreachable!(), }; - let ext = eval_air_constraint(ext_expr, None, cache, res, ctr); + let ext = eval_air_constraint(ext_expr, None, ctx, res); if let Some(d) = dest { let f = if matches!(op, SymbolicOperation::Mul) { "dot_product_be" } else { "add_be" }; - emit_base_precompile(res, ctr, f, c, &ext, d); + let scalar = ctx.write_base_constants(&[c], res); + res.push_str(&format!("\n {}({}, {}, {})", f, scalar, ext, d)); d.to_string() } else { let f = if matches!(op, SymbolicOperation::Mul) { @@ -542,27 +663,27 @@ fn eval_air_binop( } else { "add_base_extension_ret" }; - let v = format!("aux_{}", ctr.get_next()); + let v = format!("aux_{}", ctx.ctr.get_next()); res.push_str(&format!("\n {} = {}({}, {})", v, f, c, ext)); v } } // Sub: base - ext (Some(c), _) => { - let ext = eval_air_constraint(rhs, None, cache, res, ctr); - let v = format!("aux_{}", ctr.get_next()); + let ext = eval_air_constraint(rhs, None, ctx, res); + let v = format!("aux_{}", ctx.ctr.get_next()); res.push_str(&format!("\n {} = sub_base_extension_ret({}, {})", v, c, ext)); v } // Sub: ext - base (_, Some(c)) => { - let ext = eval_air_constraint(lhs, None, cache, res, ctr); + let ext = eval_air_constraint(lhs, None, ctx, res); if let Some(d) = dest { - // add_be(tmp, dest, ext) asserts ext = tmp + dest, i.e. dest = ext - tmp - emit_base_precompile(res, ctr, "add_be", c, d, &ext); + let scalar = ctx.write_base_constants(&[c], res); + res.push_str(&format!("\n add_be({}, {}, {})", scalar, d, ext)); d.to_string() } else { - let v = format!("aux_{}", ctr.get_next()); + let v = format!("aux_{}", ctx.ctr.get_next()); res.push_str(&format!("\n {} = sub_extension_base_ret({}, {})", v, ext, c)); v } @@ -570,16 +691,12 @@ fn eval_air_binop( } } -/// Emit: `tmp = Array(1); tmp[0] = c; func(tmp, arg2, arg3)` -fn emit_base_precompile(res: &mut String, ctr: &mut Counter, func: &str, c: u32, arg2: &str, arg3: &str) { - let tmp = format!("aux_{}", ctr.get_next()); - res.push_str(&format!( - "\n {} = Array(1)\n {}[0] = {}\n {}({}, {}, {})", - tmp, tmp, c, func, tmp, arg2, arg3 - )); -} - #[test] fn display_all_air_evals_in_zk_dsl() { println!("{}", all_air_evals_in_zk_dsl()); } + +#[test] +fn display_poseidon_air_in_zk_dsl() { + println!("{}", air_eval_in_zk_dsl(Poseidon16Precompile:: {})); +} diff --git a/src/main.rs b/src/main.rs index 340c1f23..0320717d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,7 +17,7 @@ enum Cli { }, #[command(about = "Run n->1 recursion")] Recursion { - #[arg(long, default_value = "1", help = "Number of recursive proofs to aggregate")] + #[arg(long, default_value = "2", help = "Number of recursive proofs to aggregate")] n: usize, #[arg(long, help = "log(1/rate) in WHIR", default_value = "2", short = 'r')] log_inv_rate: usize, From b694ff3f7719da1cca0cbbb81b592ee378eb0952 Mon Sep 17 00:00:00 2001 From: Tom Wambsgans Date: Thu, 2 Apr 2026 08:17:27 +0200 Subject: [PATCH 5/6] clippy --- crates/backend/koala-bear/src/benchmark_poseidons.rs | 2 +- crates/lean_vm/src/isa/hint.rs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/backend/koala-bear/src/benchmark_poseidons.rs b/crates/backend/koala-bear/src/benchmark_poseidons.rs index 74a05078..66c6a5a0 100644 --- a/crates/backend/koala-bear/src/benchmark_poseidons.rs +++ b/crates/backend/koala-bear/src/benchmark_poseidons.rs @@ -19,7 +19,7 @@ fn bench_poseidon() { let poseidon1_16 = default_koalabear_poseidon1_16(); // warming - let mut state_16: [crate::PackedMontyField31Neon; 16] = [FPacking::ZERO; 16]; + let mut state_16: [FPacking; 16] = [FPacking::ZERO; 16]; for _ in 0..1 << 15 { poseidon1_16.compress_in_place(&mut state_16); } diff --git a/crates/lean_vm/src/isa/hint.rs b/crates/lean_vm/src/isa/hint.rs index edd73106..6c7fbc06 100644 --- a/crates/lean_vm/src/isa/hint.rs +++ b/crates/lean_vm/src/isa/hint.rs @@ -159,6 +159,7 @@ impl CustomHint { let chunk_size = args[3].read_value(ctx.memory, ctx.fp)?.to_usize(); assert!(24_usize.is_multiple_of(chunk_size)); let mut memory_index_decomposed = decomposed_ptr; + #[allow(clippy::explicit_counter_loop)] for i in 0..24 / chunk_size { let value = F::from_usize((value >> (chunk_size * i)) & ((1 << chunk_size) - 1)); ctx.memory.set(memory_index_decomposed, value)?; From b897f1ead25481193d8a0f50da72148d5a488eda Mon Sep 17 00:00:00 2001 From: Tom Wambsgans Date: Thu, 2 Apr 2026 11:06:56 +0200 Subject: [PATCH 6/6] docs --- README.md | 2 +- crates/lean_compiler/zkDSL.md | 10 ---------- minimal_zkVM.pdf | Bin 362415 -> 362433 bytes misc/images/fancy-aggregation.png | Bin 276242 -> 422436 bytes 4 files changed, 1 insertion(+), 11 deletions(-) diff --git a/README.md b/README.md index 829ba102..0cbc2fdd 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ cargo run --release -- recursion --n 2 | Proven | Conjectured | | --------------- | --------------- | -| 0.75s - 188 KiB | 0.57s - 116 KiB | +| 0.8s - 188 KiB | 0.57s - 116 KiB | ### Bonus: unbounded recursive aggregation diff --git a/crates/lean_compiler/zkDSL.md b/crates/lean_compiler/zkDSL.md index 00a03454..2d21b6fb 100644 --- a/crates/lean_compiler/zkDSL.md +++ b/crates/lean_compiler/zkDSL.md @@ -435,16 +435,6 @@ poseidon16_compress(left, right, output) - `right`: pointer to 8 field elements - `res`: pointer to result (8 elements) -### poseidon24_compress -Width-24 Poseidon compression: `output = (Poseidon(left || right) + (left || right))` (feedforward). -``` -poseidon16_compress(leaf_a, leaf_b, parent_hash) -poseidon16_compress(state, data, new_state) -``` -- `left`: pointer to 9 field elements (capacity) -- `right`: pointer to 15 field elements (rate) -- `res`: pointer to result (9 elements) - ### Extension Operations Six built-in functions route through a single `extension_op` precompile table. Each combines an element-wise operation with an accumulation over `length` element pairs. diff --git a/minimal_zkVM.pdf b/minimal_zkVM.pdf index ba8f3f450d80571a13b775a70d0c329a51b73271..e769e926194dc05ad1f97b18e534ac3e8b81393a 100644 GIT binary patch delta 16963 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±s-q@^9GA(8CsM4lAPu5! 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 b+U;fcKSZ5fBA1wl1t1AGG72RnMNdWwz&@H0 diff --git a/misc/images/fancy-aggregation.png b/misc/images/fancy-aggregation.png index 67d6f2d0d73ad67fc23a80a96319f11472d4f6a6..4f633d0994577bfcd9198910914aa92a15ab5238 100644 GIT binary patch literal 422436 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 }Qm{ykZ9FN02U@EJY7 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

tPzHYY3p% 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 z�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 z @-2y;Mo;5w-3_VWPmsZklhSMtqz8KV8|MIP|#oigM8yYs!o(wQqvk}o6z`MC|t zbb9Y@OE%D@zR*O2g9Aj%?~-63Rr8SA-~xDd;)GX>Re9djv$#ry-elGWdCeM`QvWWi7{ zC}ArIo-hQiJ9e!PF$*QqQuimm6Dow0c^zAR-(2FTo@GLDNSE653HQu>bXgJRJ@-oS zJZ@bT5ZZ1xNCQ2MJgomy=0bu$zeG;b$PjICu_ zu@d;2>mxGmqVfE)N$7T4+vvD0xOTLdzMfNvNN8$fAbe}yJ*r6bY{O?H;fH_X4f~FK zkl3-fEw8J!TFr0$>BPsM?cE68MyN0DL8SlPJh-WwI zmA--r)OMoiVNqtGt|1-_sbL{oyn@9`7)Q6x&*zRQabQ1M|gL z+%BALwyA}@4XG$ep;fffN znikbQ=@r7}&6FqDuQH9#2&pX_w}ytXZrduo<&j4u9w(5xCif1qDNfruI49DXkRwjg z{N`LMZ}}#8uU5m6Uuq6}D?AREUowvlX64#yFJN~Qh7rHODo-{qgq%CY&Q?Wj!w!yJ zngA-$ftYNk;Y89fnkq(NP0}572&F4A-6c+FX=Q7bKc*{qg8VVZf~+;5rnc0DeDgA? zy*zu=LT(u+Ob~kxpuyW7)pDlnmgB^Y^xU+g zgbg#*n{D$7jYMfJo7|nM!3D*$T!SDx(NY< zG5y6u$Lxdplz*u^Y#EuvmugJajE|SGlozVc(wnijThzK5_7Kl}ZLDKo8JzGejwbY@ z0#2ZOHibMbfO+L}{Hox8_d8^=9#AE@bE1j@)xwX7vdJC&r7*B)yT@{{IWq&~BaRiU z4w9?%baQB&fJ*V*-61@tUz*5JY`f$Vbs{K11{wG}(zZWpJnN}ll4vi${TqI@(ptVe zRaQG2yOyuas1il7$_HtI(j@GE`}A>siWgm1$Q^=nYPq#vMrLM(W(|W}ilpdmhaA7f z5fyLMc}g+#xBpyucii3d0C+EjT>)%%e-r~L>)`LiD-SNUNd=iFWN%p@uF#l>a71;PQ@E1T<79-13Ud_~2L{Y*IZR2~R1cWvaw1gC+18{5(`w_id&FEQ=I6w?B z5xk&r8`}?U0Al+4*SV#~4AalhbJ z!Cb%+i$@>=4MK;%qTS1~F9%S_%}w26s5{xFhh3HL4ezg?i{HO?q|LeQ6j%}8x`?!V zWPfJM^egVm%MbG1DK~yCSm?S}e96INpoaZ?R1;h=w?RW>Fxz0%I$f zqh!{ouGltqAHHJ$3ZM^|7;!aq0n&nCCtwPzy~v)cb?p5k-~0La$E>PF>sBU-oT#5T zrF4{G=17+vJVm$6%QRZ&7XIp|fY>@bVMq!c9ep_Q?eZyG+O&$3KM~#{oC^L_#hp1K zovQQo6H#=2;Gg4nrlAr8TV{mrK@3YUPPh$k`taW`9R1+D1kD;_qEty?90?!iP86wo zAlis2ae}HHO%TEte|;$4scT)!e5H$Zxv>G%f+}d^PHXtL`W+)j1qp8WuvD_mIZa0& zn>WCL-1FdM%mmA<7V{k=Z1|9A?Ty*73@YSdE3C3a1d4t<+E2+bcK@3p{5@6XHd(i5 zJ;vpOt%8(0;0iZ%+mqdJlUY`d4v7$L-|l{&m}F0OM_1cM`*+~GlhL`qk6$LrD6c+7 zox^a9g6UT4LR2jqrai58B=18s*_6Nr!u<&yLKC1;c=p`+ z&$n_!Jb)iejrc4)yAsog{C?bN@fWfg{|TTVDeNBO0CFTfYAjS5=0jyBTo32zli5l# zegi`g)#lX=Pf;R8oW6E-oqkN;EinzA2dVfIej*JcNPNIL8DUj!GJZaxSXO!Ik2MlO zQ$^Lbsl7z-i{C{P6UE+(eEN|Q8xI_J9=Hc=Ud~DH0t#2lhFI+N`-q(m<8RRsT>7xW zPp}Npxz9_c;6PQ|2M#F!Co&mZKhb?VRvmQ9s2|D3l}9A74B6>Q#7kpNx2NN--iWB+C2Rd5%AE7p%gx zc5twuVDJF_JIxr4wU(+=u+wdff#daJ3YY_Y(C9f^=ubA(@D3=w09wf5YSm0rr*R33 z)#v|!M|SxE4yk)^p{0qSWtW)>ZuvJR`P7lIbOozWtY&~tdv@ISbkyp4IHaWz{Q>>o zF03UVyNTZU-_hE9D4GdU9fy%_pO-kTFd0;u6GB3qEbv6k>c@0eUN%7m-wbNxeVLDB zK{<#H2neb|MlVkwyJvxOl|1r|%FApqkMD&D_>O7wtvhg^D82sqd1Le0db;)%+=WE#Y|ZV2eu?Id<3o9;oC9 z>WMSH!=_5?Bc;WBZV1@$!5NXj1j<7NyXpJ+*{j0m5iv62?$tlOh#UGJ(+%2a?wt%! zze=jvfz|dw*82#j2pxU1pK$Y@7jE*R+W^~26dbsB0WLRCb^7Fne=t*7h8=Ey4^Iz} zfx5lS;#--z(p79JbNllxS;Dm~2YoT^o&A)Io&84+ec+CEA>!=qSg17HMry8(usKw;E88mx>NM^ z^z-~HubT^}0*)Lt;4iS`0AyyM&#~9oiJl%QP9PUsJtt)f;KKI41{(^MOLM;VqJChm zF*G;z2gC{_0OaI+>$p7w(2n*(k&UixP7rNO4zEg>wP9NWu%J1(*t{SgTTU6&(syCo z+bBm$j!~9U9w#rh@%g*tF##N4z&9A(eSJ}`BfdB=#9`h87r!Tb1#o9t@woMZJBPYt zej#HCLak#0hC!anX=!p8+E28W_1>h9ET?GqoY2j+-En8rUQBjD#n%_#OGz+}E5n_y z2cp6;8^J$+IgzA)pL$ZoM#(-xq5#8nX;&l1aJ(}1UGE#i22X4exfg2lY;KsH9Y;Zl z9vb{~Q__)t0PWGxE0~fqxyR{k35-qsoW3bNfDI@yvDZKem}{Vd7H!ye0G?|)vjx;a3YEi6D@y%6$?f5?&BGU*YcG)2k;u; zJ^3&coy3E0zni*}W^gfi3ATws$Hjs$$49&r%yheN3KW4Ab;X-|J9<1KgDliUG^JiF zVPjbUbOK@6qH5dYdZwN{W^H2=cZ-xo87B~(W$bd1saPL5RkVG!ieVhGzDr(n-;gjX zo3(pGZ*mPuRjlqhQ2YQSk0HF^Q|tSQ5>3_P)3e0#UH=D9MQtdH{x^P4%=o459DD`q zc{_eILEbO_?YBFWh+zCkcRy}F^~sSwYz0fX^}w?bTc`pDxN)CLf8J}?ivh3N#6fAa*WCr^hF zATPTxO4eUVxGbj8!U(c$RK4BI>Y2I|{2V?GZ%6}BHg(f-K1o`%g8%K$?GMRB=lwTt z=IAEj2A2oYJ)8m$12UxXPH2J;ewKWjlp-}Z_`r@h0Oh`YJ%aum>+z#9Q_V@^-kR=B zUc$X7D#(3qO%L+FtiUT=mq@N;{mhYI&k4V8yY|09cq4SckoTC!YbyFh44RKeE=3KZ zH~#-XLLgtGJ#QZ?Fq1>tFxyv|OJH~CDLNo#cz2`m7Otbzf!Vt%TY_os-S1pF2Bf^o zzdilTII4RMl%1|$IW8>1`2A2JT6lP5*P1Vsjq-a-T7uW~DVG`V=ySonIi~mLpcER*qOBg)m&lZ#B7=xEtoAS@Tp{mc^k|8dWl zyZcl%&^GM$jiY&TDK_cW8?$so)ryPd_PJ#~Oa2(XPla56Eb`y|@5SI)xY308+XN9f zhrqCpB#<^>5VLASat%u2?!lc4fsl8k2^gehw~Ll8rd+94d<|B%CB?6-)0_KI67kwn z-(++k$e|hKz{NJak=mLj^=Byj`JqSF8-_9SS}!3IRFc}n-zmFL}h)g0Us@cF+>ewX9@ZmVY(cPm%F5=(L{ z18Z3NYiK(#fr0JY>-)w0eb`NV4S#VQC|Pq^8m^A7?(YYr-oloF;^otvQ;-*-Dbe{x zL=1Z*x~J2L-uqB{mgmL#6PT^+JQq(kORDv|Jb^@gxz1rHK6=m7sQdmU91F4ierS12 zNjvAibfoeE4?-`jmCyLUE&cx<+XhZc{{O98K21vWqXk?FQz15pjhoB^a1HeTe$#um zva172yX0E~?Z6&gMJ=(rL)$RDy-zLOpJANwTn*(SOyr61Q7#o^$Os37PMnEp%AInYyq z|GO%%gQS7x*7kpQ_8963XiwE{VR?}|e_~7?l>a}u)ucDuR^>|)igK?VkG zfc|#LEqkjIU^jG^o-t?RrRb5>A_a#~XB2y$JvedD{Hj^Bv{EK1(zx41$;UCkR!~Lq zxePBITh=GSNWsX#Ydk(mvXk}Ub%KZlXc=e+l*%gteZ**mb%^7YszTywq}l`aKU^an~mDWDx=qMhnvx#bekJEq}Ck4ZY_GUZ1*Z5RE|c{D5` zlJu!DVfSbz1dRL(l!TYo38Erx22%^f9{s^RUg~TFpvl93sVkS0sKmC<5Abt8#Ui~? zc7Og~)z%&j<-Ug9_k=J8Gf9I%B)ODaCK=aeCcBL3A`EF9Y+c4QWmh};YBFvamvAa9 zgItQ;bZmPygHEHN<1VG0wo7JGZI=|H7-PQkeOUXf^ZoVv>s#-7-{*av=l!ksCoZV> zLqeEP(Y4fxvhmNzCU_B>iG>9iFAsAyaK|8h%o#C1J4&fQ?9ALW$h@%R+jw^6IZP}0 zcjRAZ(HA9=bkz*pv$o^Vmb(Qu?5;9&tVH@|pRoQ9QU#WUmT8e$;4CWqJsQTuT00Pi z6{WqcA_98_d6Ze#&t3X+zVvwNY_8L=3BuR%fi7SFn668iPr4(P&IrTkM?V%bYc}|h zWvG&nCm(|hEcODci%HN6p|89y9*N4vI>2oacI*%Z!m zb;Yyx*zwNKK#LM`rksGxf*}#y`Qvv&k<$mo1s<@t(kqH&*LvC%i+O150t)XjIY18* z?wjm+^Ym@r^X^lJ3{IGl{cL6DS=xaoJ{`~%rzfw{SL~;8dFIYjWoLv zMgz0z#$A{`a#nZ>e* zyhqA*jv1YHn z{Ywueo=H;0Y2LAHoWUN*i#ynr_GYHJyKz@afnjw2@zgJi)_eV1OD}i0tr}9NiHW&e zI`*c3jTzS{QLes~2KFHj#lw~SGd7eDuw73}D3`oDDbfjiUB^i;L85l_a-+wlH|`IUZgGa9GyiFEagLB+@rX~tPhl-;bJRmMv^G|-W-$arb+ zrGceD_tp=(<4-?0Se>!+>%hUS5`dqXMV~H9BW*Y016Lhw9O&t}7fE+J^kMx+cU+ep zt>_{~ZQOu(?x`?l&`p%BJfV)Cf~mHy`_+qA4A?0^2%7Whv!#KV$lM%M;(4%sdG!9z zZH-n1nggN(kr+UZoX(y%;&|UlBjIjZ$O6PtVyol6`C78Ag_$LuL!!v5b#U^*0yJH` z{cGM^pE9JjujeS!Ju$i+;i`NjBPhYdZT)7<%aJlTIP!nk&HYG<9$bjuyeVCa=Ea5i zr(q@Tan3&tatqR#0!SxQ?wXf#({|3^n(K!R3lqE!GZX9u2tg-QjE2E)Vc$iS)(p?=~ z{Cd@#6oY1l?4KkLyG%=4*1{`{kjj2gtAMqAT{Ia$VGCrzm*w00t4rf2Hh+SQ66}}) zKLh8$DCTcMaQ9--Fti6AJCpnzklV{2-j>un)X!>T8`9|k7hWQ2BKMEx?d7JKAr?~I zm#!8WV@N!a7d1LnV|fvm1J*y+9nfmMwm- ziM@s`*!H+Ve(h7j($rXXwulehW9?Jk&~XoshPKL~U|HSk_6c@;Lo2$6wT3~J>GriK zt7S#)T0b{{9V_vxgoM{;|45NW@{`ZBfT0vhWTE}h!!OMB!xJ;r!p(~Okc zeOq7d8cp$@(7XI@M6>TZ0_2h6e@E2Vl7^HNhjC*QiGxrg=2t)WxS(1!a;4!8$GMl-@_x`h=Ot@E#D4q zJr*<>IS54ba9e$@Hgowa$N(mdIDRqCfpHla%~p}xzbAfZ=EzMjWkJS&oOg1olq5W& za9=yzJ2SiMknw0Jwx7FOTe;Etm$VCuWDoas7*eQ%{vi`{1N)FodH9+4Yk3qZDnqyV zu{+6=^^H}*oY)+L%na)NtVvmQIdS$KEH6j^^OsOTPV`%Kd=M&RuEY%jLK??0bbSu+ zw)F~A3L8&+z(QDYG}P}%zonjNWxoG*>t^bHsz7uzk^0M5Q_z%j$po0ceAqw<`pEtV K{rEnS?EeC{-92&u literal 276242 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

v5Jrmk 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

YJ&?m6|J{$vw+@*4B; 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ΝQd9L`3G{4NkcJ;KP@YFA7 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