From 74ce2cf8681600eee7a1804145ea4f5abc44121e Mon Sep 17 00:00:00 2001 From: 0xjei Date: Wed, 18 Feb 2026 11:38:52 +0100 Subject: [PATCH 01/15] update configs to support mode for config circuit --- circuits/benchmarks/README.md | 62 +++++++++++++++++++ circuits/benchmarks/config.json | 2 +- circuits/benchmarks/scripts/run_benchmarks.sh | 43 ++++++++----- 3 files changed, 90 insertions(+), 17 deletions(-) create mode 100644 circuits/benchmarks/README.md diff --git a/circuits/benchmarks/README.md b/circuits/benchmarks/README.md new file mode 100644 index 0000000000..398bf97d23 --- /dev/null +++ b/circuits/benchmarks/README.md @@ -0,0 +1,62 @@ +# Circuit benchmarks + +Benchmark the ZK circuits. Configuration is in `config.json` (circuit list, mode, oracles, metrics). + +## How to run + +From the **benchmarks** directory: + +```bash +./run_benchmarks.sh [options] +``` + +Or from **scripts**: + +```bash +./scripts/run_benchmarks.sh [options] +``` + +Both use `config.json` in the benchmarks directory by default. + +### Options + +| Option | Description | +| --------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `--mode insecure \| secure` | Run in insecure (default) or secure mode. Overrides `config.json`’s `mode`. | +| `--circuit ` | Run only this circuit (e.g. `dkg/pk` or `config`). If not in `config.json`, runs anyway if the path exists. | +| `--config ` | Use a different config file instead of `config.json`. | +| `--skip-compile` | Reuse existing build artifacts; skip compilation. | +| `--clean` | Remove circuit `target/` directories after the run. | + +### Examples + +```bash +# Default: insecure mode, all circuits from config (config circuit is skipped) +./run_benchmarks.sh + +# Secure mode (includes the config circuit) +./run_benchmarks.sh --mode secure + +# Single circuit +./run_benchmarks.sh --circuit threshold/pk_generation +./run_benchmarks.sh --mode secure --circuit config + +# Re-run without recompiling +./run_benchmarks.sh --skip-compile +``` + +### Results + +Output goes under `results_/` (e.g. `results_insecure/`, `results_secure/`). A Markdown report +is written to `results_/report.md`. Raw JSON is kept in `results_/raw/` so that a run +with `--circuit` only overwrites that circuit’s file and the report is regenerated from all data +(existing + updated). View the report with `cat results_/report.md` or +`open results_/report.md` (macOS). + +## Secure-only circuits + +The **config** circuit (validates secure configs only) is listed in `config.json` with +`"modes": ["secure"]` so it is only run in secure mode. With the default `"mode": "insecure"` it is +skipped. The script `scripts/run_benchmarks.sh` respects this by filtering circuits by the `modes` +field in `config.json` before running; see the “Circuit-specific modes” comment and the loop that +builds `RUN_CIRCUITS` there. diff --git a/circuits/benchmarks/config.json b/circuits/benchmarks/config.json index acb165f37e..6c8638c62b 100644 --- a/circuits/benchmarks/config.json +++ b/circuits/benchmarks/config.json @@ -1,6 +1,6 @@ { "circuits": [ - "config", + { "name": "config", "modes": ["secure"] }, "dkg/pk", "dkg/sk_share_computation", "dkg/e_sm_share_computation", diff --git a/circuits/benchmarks/scripts/run_benchmarks.sh b/circuits/benchmarks/scripts/run_benchmarks.sh index ad212175bd..49f8a4b5cd 100755 --- a/circuits/benchmarks/scripts/run_benchmarks.sh +++ b/circuits/benchmarks/scripts/run_benchmarks.sh @@ -58,8 +58,8 @@ echo "║ Enclave ZK Circuit Benchmark Suite ║" echo "╚════════════════════════════════════════════════╝" echo "" -# Read configuration -ALL_CIRCUITS=$(jq -r '.circuits[]' "$CONFIG_FILE") +# Read configuration (circuits may be strings or {name, modes[]}; see config.json) +ALL_CIRCUITS=$(jq -r '.circuits[] | (if type == "string" then . else .name end)' "$CONFIG_FILE") ORACLES=$(jq -r '.oracles[]' "$CONFIG_FILE") OUTPUT_DIR_BASE=$(jq -r '.output_dir // "results"' "$CONFIG_FILE") BIN_DIR=$(jq -r '.bin_dir // "../bin"' "$CONFIG_FILE") @@ -130,9 +130,24 @@ echo " Output Directory: ${OUTPUT_DIR}" echo "" # decrypted_shares_aggregation_mod is for insecure only (Q < 128bit); _bn is for secure (large Q) -# config validates secure configs only, so run only in secure mode +# Circuit-specific modes come from config.json (e.g. "config" has "modes": ["secure"]); see circuits/benchmarks/config.json RUN_CIRCUITS="" -for c in $CIRCUITS; do +CIRCUIT_MODES=$(jq -r '.circuits[] | (if type == "string" then . else .name end) as $path | (if type == "object" and (.modes != null) then (.modes | join(",")) else "insecure,secure" end) | "\($path)\t\(.)"' "$CONFIG_FILE") +while IFS= read -r line; do + [ -z "$line" ] && continue + c="${line%% *}" + modes="${line#* }" + # If --circuit filter is set, we iterate over CIRCUITS (one path) and may not have entry in CIRCUIT_MODES; then run it + if [ -n "$CIRCUIT_FILTER" ]; then + [ "$c" != "$CIRCUIT_FILTER" ] && continue + fi + # Skip if this circuit is restricted to other mode(s) (see config.json "modes" field) + if [ -n "$modes" ] && [ "${modes}" != "insecure,secure" ]; then + if [[ ",${modes}," != *",${MODE},"* ]]; then + echo " Skipping $c (config.json restricts to mode(s): $modes; current mode: $MODE)" + continue + fi + fi if [ "$MODE" = "secure" ] && [ "$c" = "threshold/decrypted_shares_aggregation_mod" ]; then echo " Skipping $c (modular variant is insecure-only, Q < 128bit)" continue @@ -141,12 +156,12 @@ for c in $CIRCUITS; do echo " Skipping $c (BigNum variant is for secure/large Q only)" continue fi - if [ "$MODE" = "insecure" ] && [ "$c" = "config" ]; then - echo " Skipping $c (config circuit validates secure configs only)" - continue - fi RUN_CIRCUITS="${RUN_CIRCUITS} ${c}" -done +done <<< "$CIRCUIT_MODES" +# When --circuit was given but not in config.json, no line matched; run it anyway if path exists (see note above) +if [ -n "$CIRCUIT_FILTER" ] && [ -z "$RUN_CIRCUITS" ] && ! echo "$ALL_CIRCUITS" | grep -qx "$CIRCUIT_FILTER" 2>/dev/null; then + RUN_CIRCUITS="$CIRCUIT_FILTER" +fi RUN_CIRCUITS=$(echo "$RUN_CIRCUITS" | xargs) echo "" @@ -218,13 +233,9 @@ REPORT_FILE="${BENCHMARKS_DIR}/${OUTPUT_DIR}/report.md" echo "✓ Report generated: ${REPORT_FILE}" echo "" -# Remove raw JSON folder after report is generated -RAW_DIR="${BENCHMARKS_DIR}/${OUTPUT_DIR}/raw" -if [ -d "$RAW_DIR" ]; then - rm -rf "$RAW_DIR" - echo "✓ Removed raw data: ${RAW_DIR}" - echo "" -fi +# Keep raw/ so that a later run with --circuit only overwrites that circuit's JSON and the +# report is regenerated from the full set (existing + updated). Delete results_/raw +# manually if you want a clean slate for the next full run. # Clean artifacts if requested if [ "$CLEAN_ARTIFACTS" = true ]; then From 11f8216f681b248718d1ee15c5b933a3e2e916e3 Mon Sep 17 00:00:00 2001 From: 0xjei Date: Wed, 18 Feb 2026 14:59:03 +0100 Subject: [PATCH 02/15] move crp to fhe-params and make fhe the gateway --- Cargo.lock | 6 +- .../enclave_event/encryption_key_pending.rs | 58 +++---- crates/fhe-params/Cargo.toml | 7 + crates/fhe-params/src/crp.rs | 149 ++++++++++++++++++ crates/fhe-params/src/lib.rs | 5 + crates/fhe/Cargo.toml | 4 +- crates/fhe/src/ext.rs | 19 ++- crates/fhe/src/lib.rs | 24 ++- crates/fhe/src/repo.rs | 20 --- crates/fhe/src/{fhe.rs => runtime.rs} | 4 +- crates/fhe/src/utils.rs | 41 ----- crates/tests/tests/integration.rs | 4 +- crates/trbfv/tests/integration.rs | 4 +- 13 files changed, 235 insertions(+), 110 deletions(-) create mode 100644 crates/fhe-params/src/crp.rs delete mode 100644 crates/fhe/src/repo.rs rename crates/fhe/src/{fhe.rs => runtime.rs} (98%) delete mode 100644 crates/fhe/src/utils.rs diff --git a/Cargo.lock b/Cargo.lock index dd7c9a838d..620e75178c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3362,12 +3362,10 @@ dependencies = [ "async-trait", "bincode 1.3.3", "e3-bfv-client", - "e3-config", "e3-data", "e3-events", "e3-fhe-params", "e3-request", - "e3-trbfv", "e3-utils", "fhe", "fhe-traits", @@ -3386,9 +3384,13 @@ dependencies = [ "alloy-primitives", "anyhow", "clap", + "e3-utils", "fhe", + "fhe-traits", "num-bigint", "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", "serde", "thiserror 1.0.69", ] diff --git a/crates/events/src/enclave_event/encryption_key_pending.rs b/crates/events/src/enclave_event/encryption_key_pending.rs index fd7e2e646f..8d197d6e81 100644 --- a/crates/events/src/enclave_event/encryption_key_pending.rs +++ b/crates/events/src/enclave_event/encryption_key_pending.rs @@ -1,29 +1,29 @@ -// SPDX-License-Identifier: LGPL-3.0-only -// -// This file is provided WITHOUT ANY WARRANTY; -// without even the implied warranty of MERCHANTABILITY -// or FITNESS FOR A PARTICULAR PURPOSE. - -use crate::{E3id, EncryptionKey}; -use actix::Message; -use e3_fhe_params::BfvPreset; -use serde::{Deserialize, Serialize}; -use std::fmt::{self, Display}; -use std::sync::Arc; - -/// Encryption key pending proof generation and verification. -/// -/// This event is emitted by local key generation and consumed by ZkActor. -#[derive(Message, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[rtype(result = "()")] -pub struct EncryptionKeyPending { - pub e3_id: E3id, - pub key: Arc, - pub params_preset: BfvPreset, -} - -impl Display for EncryptionKeyPending { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{:?}", self) - } -} +// SPDX-License-Identifier: LGPL-3.0-only +// +// This file is provided WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY +// or FITNESS FOR A PARTICULAR PURPOSE. + +use crate::{E3id, EncryptionKey}; +use actix::Message; +use e3_fhe_params::BfvPreset; +use serde::{Deserialize, Serialize}; +use std::fmt::{self, Display}; +use std::sync::Arc; + +/// Encryption key pending proof generation and verification. +/// +/// This event is emitted by local key generation and consumed by ZkActor. +#[derive(Message, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] +#[rtype(result = "()")] +pub struct EncryptionKeyPending { + pub e3_id: E3id, + pub key: Arc, + pub params_preset: BfvPreset, +} + +impl Display for EncryptionKeyPending { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{:?}", self) + } +} diff --git a/crates/fhe-params/Cargo.toml b/crates/fhe-params/Cargo.toml index b4dd190400..3b9607be3c 100644 --- a/crates/fhe-params/Cargo.toml +++ b/crates/fhe-params/Cargo.toml @@ -7,8 +7,11 @@ description = "E3 - Enclave FHE Params" repository = "https://github.com/gnosisguild/enclave/crates/fhe-params" [dependencies] +e3-utils = { workspace = true } fhe = { workspace = true } +fhe-traits = { workspace = true } num-bigint = { workspace = true } +rand = { workspace = true } num-traits = { workspace = true } thiserror = { workspace = true } clap = { workspace = true } @@ -16,6 +19,10 @@ anyhow = { workspace = true } alloy-dyn-abi = { workspace = true, optional = true } alloy-primitives = { workspace = true, optional = true } serde = { workspace = true } +rand_chacha = "0.3.1" + +[dev-dependencies] +fhe-traits = { workspace = true } [[bin]] name = "search_params" diff --git a/crates/fhe-params/src/crp.rs b/crates/fhe-params/src/crp.rs new file mode 100644 index 0000000000..58f772d338 --- /dev/null +++ b/crates/fhe-params/src/crp.rs @@ -0,0 +1,149 @@ +// SPDX-License-Identifier: LGPL-3.0-only +// +// This file is provided WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY +// or FITNESS FOR A PARTICULAR PURPOSE. + +//! Common Random Polynomial (CRP) construction from BFV parameters. + +use crate::builder::build_bfv_params_arc; +use e3_utils::SharedRng; +use fhe::bfv::BfvParameters; +use fhe::mbfv::CommonRandomPoly; +use fhe_traits::Serialize; +use rand::SeedableRng; +use rand_chacha::ChaCha8Rng; +use std::sync::Arc; + +/// Parameters plus serialized CRP, e.g. for setup or testing. +pub struct ParamsWithCrp { + pub moduli: Vec, + pub degree: usize, + pub plaintext_modulus: u64, + pub crp_bytes: Vec, + pub params: Arc, +} + +/// Builds BFV params and a CRP from raw parameter values and a RNG. +pub fn setup_crp_params( + moduli: &[u64], + degree: usize, + plaintext_modulus: u64, + rng: SharedRng, +) -> ParamsWithCrp { + let params = build_bfv_params_arc(degree, plaintext_modulus, moduli, None); + let crp = create_crp(params.clone(), rng); + ParamsWithCrp { + moduli: moduli.to_vec(), + degree, + plaintext_modulus, + crp_bytes: crp.to_bytes(), + params, + } +} + +/// Creates a Common Random Polynomial for the given BFV parameters. +pub fn create_crp(params: Arc, rng: SharedRng) -> CommonRandomPoly { + CommonRandomPoly::new(¶ms, &mut *rng.lock().unwrap()).unwrap() +} + +/// Creates a Common Random Polynomial for the given BFV parameters and seed. +pub fn create_deterministic_crp_from_seed( + params: Arc, + seed: [u8; 32], +) -> CommonRandomPoly { + CommonRandomPoly::new_deterministic(¶ms, seed).unwrap() +} + +/// Creates a Common Random Polynomial for the given BFV parameters and default seed. +pub fn create_deterministic_crp_from_default_seed(params: Arc) -> CommonRandomPoly { + create_deterministic_crp_from_seed(params, ::Seed::default()) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::constants::insecure_512; + use rand::SeedableRng; + use rand_chacha::ChaCha20Rng; + use std::sync::Mutex; + + #[test] + fn setup_crp_params_returns_valid_structure() { + let moduli = insecure_512::threshold::MODULI; + let degree = insecure_512::DEGREE; + let plaintext_modulus = insecure_512::threshold::PLAINTEXT_MODULUS; + let rng = Arc::new(Mutex::new(ChaCha20Rng::from_seed( + ::Seed::default(), + ))); + + let ParamsWithCrp { + moduli: out_moduli, + degree: out_degree, + plaintext_modulus: out_pt, + crp_bytes, + params, + } = setup_crp_params(moduli, degree, plaintext_modulus, rng); + + assert_eq!(out_moduli, moduli); + assert_eq!(out_degree, degree); + assert_eq!(out_pt, plaintext_modulus); + assert_eq!(params.degree(), degree); + assert_eq!(params.plaintext(), plaintext_modulus); + assert!(!crp_bytes.is_empty(), "CRP bytes should be non-empty"); + } + + #[test] + fn crp_bytes_roundtrip_via_deserialize() { + let params = build_bfv_params_arc( + insecure_512::DEGREE, + insecure_512::threshold::PLAINTEXT_MODULUS, + insecure_512::threshold::MODULI, + Some(insecure_512::threshold::ERROR1_VARIANCE), + ); + let rng = Arc::new(Mutex::new(ChaCha20Rng::from_seed( + ::Seed::default(), + ))); + let crp = create_crp(params.clone(), rng); + let bytes = crp.to_bytes(); + + let restored = CommonRandomPoly::deserialize(&bytes, ¶ms) + .expect("CRP deserialization should succeed"); + let restored_bytes = restored.to_bytes(); + assert_eq!(bytes, restored_bytes, "CRP roundtrip should match"); + } + + #[test] + fn deterministic_crp_same_seed_same_output() { + let params = build_bfv_params_arc( + insecure_512::DEGREE, + insecure_512::threshold::PLAINTEXT_MODULUS, + insecure_512::threshold::MODULI, + Some(insecure_512::threshold::ERROR1_VARIANCE), + ); + let seed = [42u8; 32]; + + let crp1 = create_deterministic_crp_from_seed(params.clone(), seed); + let crp2 = create_deterministic_crp_from_seed(params.clone(), seed); + + assert_eq!(crp1.to_bytes(), crp2.to_bytes()); + } + + #[test] + fn deterministic_crp_different_seed_different_output() { + let params = build_bfv_params_arc( + insecure_512::DEGREE, + insecure_512::threshold::PLAINTEXT_MODULUS, + insecure_512::threshold::MODULI, + Some(insecure_512::threshold::ERROR1_VARIANCE), + ); + let seed1 = [1u8; 32]; + let mut seed2 = [2u8; 32]; + seed2[0] = 2; + + let crp1 = create_deterministic_crp_from_seed(params.clone(), seed1); + let crp2 = create_deterministic_crp_from_seed(params.clone(), seed2); + + assert_ne!(crp1.to_bytes(), crp2.to_bytes()); + } +} diff --git a/crates/fhe-params/src/lib.rs b/crates/fhe-params/src/lib.rs index dd12901d84..06cf80b1be 100644 --- a/crates/fhe-params/src/lib.rs +++ b/crates/fhe-params/src/lib.rs @@ -8,6 +8,7 @@ pub mod builder; pub mod constants; +pub mod crp; #[cfg(feature = "abi-encoding")] pub mod encoding; pub mod presets; @@ -17,6 +18,10 @@ pub use builder::{ build_bfv_params, build_bfv_params_arc, build_bfv_params_from_set, build_bfv_params_from_set_arc, build_pair_for_preset, }; +pub use crp::{ + create_crp, create_deterministic_crp_from_default_seed, create_deterministic_crp_from_seed, + setup_crp_params, ParamsWithCrp, +}; #[cfg(feature = "abi-encoding")] pub use encoding::{decode_bfv_params, decode_bfv_params_arc, encode_bfv_params, EncodingError}; pub use presets::{ diff --git a/crates/fhe/Cargo.toml b/crates/fhe/Cargo.toml index defab46628..3331ec812a 100644 --- a/crates/fhe/Cargo.toml +++ b/crates/fhe/Cargo.toml @@ -11,7 +11,6 @@ actix = { workspace = true } anyhow = { workspace = true } async-trait = { workspace = true } bincode = { workspace = true } -e3-config = { workspace = true } e3-data = { workspace = true } e3-events = { workspace = true } e3-utils = { workspace = true } @@ -24,5 +23,4 @@ e3-request = { workspace = true } serde = { workspace = true } tracing = { workspace = true } e3-bfv-client = { workspace = true } -e3-fhe-params = { workspace = true } -e3-trbfv = { workspace = true } +e3-fhe-params = { workspace = true, features = ["abi-encoding"] } diff --git a/crates/fhe/src/ext.rs b/crates/fhe/src/ext.rs index 4f417a4547..04ac88384a 100644 --- a/crates/fhe/src/ext.rs +++ b/crates/fhe/src/ext.rs @@ -4,17 +4,30 @@ // without even the implied warranty of MERCHANTABILITY // or FITNESS FOR A PARTICULAR PURPOSE. -use crate::{Fhe, FheRepositoryFactory}; +use crate::runtime::{Fhe, FheSnapshot}; use anyhow::{anyhow, Result}; use async_trait::async_trait; -use e3_data::{FromSnapshotWithParams, RepositoriesFactory, Snapshot}; -use e3_events::{prelude::*, BusHandle, E3Requested, EType, EnclaveEvent, EnclaveEventData}; +use e3_data::{FromSnapshotWithParams, Repositories, RepositoriesFactory, Repository, Snapshot}; +use e3_events::{ + prelude::*, BusHandle, E3Requested, E3id, EType, EnclaveEvent, EnclaveEventData, StoreKeys, +}; use e3_request::{E3Context, E3ContextSnapshot, E3Extension, TypedKey}; use e3_utils::SharedRng; use std::sync::Arc; pub const FHE_KEY: TypedKey> = TypedKey::new("fhe"); +/// Factory for FHE snapshot storage per E3 instance. +pub trait FheRepositoryFactory { + fn fhe(&self, e3_id: &E3id) -> Repository; +} + +impl FheRepositoryFactory for Repositories { + fn fhe(&self, e3_id: &E3id) -> Repository { + Repository::new(self.store.scope(StoreKeys::fhe(e3_id))) + } +} + /// TODO: move these to each package with access on MyStruct::launcher() pub struct FheExtension { rng: SharedRng, diff --git a/crates/fhe/src/lib.rs b/crates/fhe/src/lib.rs index af05667ba4..ef0ff4db7c 100644 --- a/crates/fhe/src/lib.rs +++ b/crates/fhe/src/lib.rs @@ -5,10 +5,22 @@ // or FITNESS FOR A PARTICULAR PURPOSE. pub mod ext; -mod fhe; -mod repo; -mod utils; +mod runtime; -pub use fhe::*; -pub use repo::*; -pub use utils::*; +pub use ext::{FheExtension, FheRepositoryFactory, FHE_KEY}; +pub use runtime::*; + +// Re-export params so dependents can use e3_fhe::BfvPreset etc. without depending on e3-fhe-params. +pub use e3_fhe_params::{ + build_bfv_params, build_bfv_params_arc, build_bfv_params_from_set, + build_bfv_params_from_set_arc, build_pair_for_preset, default_param_set, BfvParamSet, + BfvPreset, ParameterType, PresetError, PresetMetadata, PresetSearchDefaults, SecurityTier, + DEFAULT_BFV_PRESET, +}; +pub use e3_fhe_params::{ + create_crp, create_deterministic_crp_from_default_seed, create_deterministic_crp_from_seed, + setup_crp_params, ParamsWithCrp, +}; +pub use e3_fhe_params::{ + decode_bfv_params, decode_bfv_params_arc, encode_bfv_params, EncodingError, +}; diff --git a/crates/fhe/src/repo.rs b/crates/fhe/src/repo.rs deleted file mode 100644 index 289d272fad..0000000000 --- a/crates/fhe/src/repo.rs +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-only -// -// This file is provided WITHOUT ANY WARRANTY; -// without even the implied warranty of MERCHANTABILITY -// or FITNESS FOR A PARTICULAR PURPOSE. - -use e3_data::{Repositories, Repository}; -use e3_events::{E3id, StoreKeys}; - -use crate::FheSnapshot; - -pub trait FheRepositoryFactory { - fn fhe(&self, e3_id: &E3id) -> Repository; -} - -impl FheRepositoryFactory for Repositories { - fn fhe(&self, e3_id: &E3id) -> Repository { - Repository::new(self.store.scope(StoreKeys::fhe(e3_id))) - } -} diff --git a/crates/fhe/src/fhe.rs b/crates/fhe/src/runtime.rs similarity index 98% rename from crates/fhe/src/fhe.rs rename to crates/fhe/src/runtime.rs index becf28c126..07a2c17b72 100644 --- a/crates/fhe/src/fhe.rs +++ b/crates/fhe/src/runtime.rs @@ -4,13 +4,13 @@ // without even the implied warranty of MERCHANTABILITY // or FITNESS FOR A PARTICULAR PURPOSE. -use super::create_crp; use anyhow::*; use async_trait::async_trait; use e3_bfv_client::{decode_plaintext_to_vec_u64, encode_vec_u64_to_bytes}; use e3_data::{FromSnapshotWithParams, Snapshot}; use e3_events::{OrderedSet, Seed}; -use e3_fhe_params::{build_bfv_params_arc, decode_bfv_params_arc}; +use e3_fhe_params::build_bfv_params_arc; +use e3_fhe_params::{create_crp, decode_bfv_params_arc}; use e3_utils::{ArcBytes, SharedRng}; use fhe::{ bfv::{BfvParameters, Ciphertext, Plaintext, PublicKey, SecretKey}, diff --git a/crates/fhe/src/utils.rs b/crates/fhe/src/utils.rs deleted file mode 100644 index e81da98c50..0000000000 --- a/crates/fhe/src/utils.rs +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-only -// -// This file is provided WITHOUT ANY WARRANTY; -// without even the implied warranty of MERCHANTABILITY -// or FITNESS FOR A PARTICULAR PURPOSE. - -use e3_fhe_params::build_bfv_params_arc; -use e3_utils::SharedRng; -use fhe::bfv::BfvParameters; -use fhe::mbfv::CommonRandomPoly; -use fhe_traits::Serialize; -use std::sync::Arc; - -pub struct ParamsWithCrp { - pub moduli: Vec, - pub degree: usize, - pub plaintext_modulus: u64, - pub crp_bytes: Vec, - pub params: Arc, -} - -pub fn setup_crp_params( - moduli: &[u64], - degree: usize, - plaintext_modulus: u64, - rng: SharedRng, -) -> ParamsWithCrp { - let params = build_bfv_params_arc(degree, plaintext_modulus, moduli, None); - let crp = create_crp(params.clone(), rng); - ParamsWithCrp { - moduli: moduli.to_vec(), - degree, - plaintext_modulus, - crp_bytes: crp.to_bytes(), - params, - } -} - -pub fn create_crp(params: Arc, rng: SharedRng) -> CommonRandomPoly { - CommonRandomPoly::new(¶ms, &mut *rng.lock().unwrap()).unwrap() -} diff --git a/crates/tests/tests/integration.rs b/crates/tests/tests/integration.rs index e4bd5291ac..e883a7bd6f 100644 --- a/crates/tests/tests/integration.rs +++ b/crates/tests/tests/integration.rs @@ -17,8 +17,8 @@ use e3_events::{ E3Requested, E3id, EnclaveEvent, EnclaveEventData, OperatorActivationChanged, PlaintextAggregated, Seed, TakeEvents, TicketBalanceUpdated, }; -use e3_fhe_params::DEFAULT_BFV_PRESET; -use e3_fhe_params::{encode_bfv_params, BfvParamSet}; +use e3_fhe::DEFAULT_BFV_PRESET; +use e3_fhe::{encode_bfv_params, BfvParamSet}; use e3_multithread::{Multithread, MultithreadReport, ToReport}; use e3_net::events::{GossipData, NetEvent}; use e3_net::NetEventTranslator; diff --git a/crates/trbfv/tests/integration.rs b/crates/trbfv/tests/integration.rs index ea25d937b7..f650914833 100644 --- a/crates/trbfv/tests/integration.rs +++ b/crates/trbfv/tests/integration.rs @@ -12,8 +12,8 @@ use anyhow::Result; use e3_bfv_client::decode_bytes_to_vec_u64; use e3_crypto::Cipher; use e3_fhe::create_crp; -use e3_fhe_params::DEFAULT_BFV_PRESET; -use e3_fhe_params::{encode_bfv_params, BfvParamSet}; +use e3_fhe::DEFAULT_BFV_PRESET; +use e3_fhe::{encode_bfv_params, BfvParamSet}; use e3_test_helpers::{create_seed_from_u64, create_shared_rng_from_u64, usecase_helpers}; use e3_trbfv::{ calculate_decryption_share::{ From db255c15f8b9d9fe4de0c233ccea717e6c2bd7de Mon Sep 17 00:00:00 2001 From: 0xjei Date: Wed, 18 Feb 2026 15:15:37 +0100 Subject: [PATCH 03/15] default to deterministic CRP --- crates/fhe-params/src/crp.rs | 18 +++++++-------- crates/fhe/src/lib.rs | 15 ------------- crates/fhe/src/runtime.rs | 2 +- crates/keyshare/src/threshold_keyshare.rs | 19 +++++----------- crates/test-helpers/src/lib.rs | 7 +----- crates/tests/tests/integration.rs | 4 ++-- crates/trbfv/src/gen_pk_share_and_sk_sss.rs | 2 +- crates/trbfv/tests/integration.rs | 22 +++++-------------- .../decrypted_shares_aggregation/sample.rs | 7 +++--- .../threshold/pk_aggregation/sample.rs | 10 +++------ .../threshold/pk_generation/sample.rs | 6 ++--- .../threshold/share_decryption/sample.rs | 7 +++--- 12 files changed, 36 insertions(+), 83 deletions(-) diff --git a/crates/fhe-params/src/crp.rs b/crates/fhe-params/src/crp.rs index 58f772d338..2519f1e417 100644 --- a/crates/fhe-params/src/crp.rs +++ b/crates/fhe-params/src/crp.rs @@ -32,7 +32,7 @@ pub fn setup_crp_params( rng: SharedRng, ) -> ParamsWithCrp { let params = build_bfv_params_arc(degree, plaintext_modulus, moduli, None); - let crp = create_crp(params.clone(), rng); + let crp = create_crp(¶ms, rng); ParamsWithCrp { moduli: moduli.to_vec(), degree, @@ -43,20 +43,20 @@ pub fn setup_crp_params( } /// Creates a Common Random Polynomial for the given BFV parameters. -pub fn create_crp(params: Arc, rng: SharedRng) -> CommonRandomPoly { +pub fn create_crp(params: &Arc, rng: SharedRng) -> CommonRandomPoly { CommonRandomPoly::new(¶ms, &mut *rng.lock().unwrap()).unwrap() } /// Creates a Common Random Polynomial for the given BFV parameters and seed. pub fn create_deterministic_crp_from_seed( - params: Arc, + params: &Arc, seed: [u8; 32], ) -> CommonRandomPoly { CommonRandomPoly::new_deterministic(¶ms, seed).unwrap() } /// Creates a Common Random Polynomial for the given BFV parameters and default seed. -pub fn create_deterministic_crp_from_default_seed(params: Arc) -> CommonRandomPoly { +pub fn create_deterministic_crp_from_default_seed(params: &Arc) -> CommonRandomPoly { create_deterministic_crp_from_seed(params, ::Seed::default()) } @@ -104,7 +104,7 @@ mod tests { let rng = Arc::new(Mutex::new(ChaCha20Rng::from_seed( ::Seed::default(), ))); - let crp = create_crp(params.clone(), rng); + let crp = create_crp(¶ms, rng); let bytes = crp.to_bytes(); let restored = CommonRandomPoly::deserialize(&bytes, ¶ms) @@ -123,8 +123,8 @@ mod tests { ); let seed = [42u8; 32]; - let crp1 = create_deterministic_crp_from_seed(params.clone(), seed); - let crp2 = create_deterministic_crp_from_seed(params.clone(), seed); + let crp1 = create_deterministic_crp_from_seed(¶ms, seed); + let crp2 = create_deterministic_crp_from_seed(¶ms, seed); assert_eq!(crp1.to_bytes(), crp2.to_bytes()); } @@ -141,8 +141,8 @@ mod tests { let mut seed2 = [2u8; 32]; seed2[0] = 2; - let crp1 = create_deterministic_crp_from_seed(params.clone(), seed1); - let crp2 = create_deterministic_crp_from_seed(params.clone(), seed2); + let crp1 = create_deterministic_crp_from_seed(¶ms, seed1); + let crp2 = create_deterministic_crp_from_seed(¶ms, seed2); assert_ne!(crp1.to_bytes(), crp2.to_bytes()); } diff --git a/crates/fhe/src/lib.rs b/crates/fhe/src/lib.rs index ef0ff4db7c..9893396b60 100644 --- a/crates/fhe/src/lib.rs +++ b/crates/fhe/src/lib.rs @@ -9,18 +9,3 @@ mod runtime; pub use ext::{FheExtension, FheRepositoryFactory, FHE_KEY}; pub use runtime::*; - -// Re-export params so dependents can use e3_fhe::BfvPreset etc. without depending on e3-fhe-params. -pub use e3_fhe_params::{ - build_bfv_params, build_bfv_params_arc, build_bfv_params_from_set, - build_bfv_params_from_set_arc, build_pair_for_preset, default_param_set, BfvParamSet, - BfvPreset, ParameterType, PresetError, PresetMetadata, PresetSearchDefaults, SecurityTier, - DEFAULT_BFV_PRESET, -}; -pub use e3_fhe_params::{ - create_crp, create_deterministic_crp_from_default_seed, create_deterministic_crp_from_seed, - setup_crp_params, ParamsWithCrp, -}; -pub use e3_fhe_params::{ - decode_bfv_params, decode_bfv_params_arc, encode_bfv_params, EncodingError, -}; diff --git a/crates/fhe/src/runtime.rs b/crates/fhe/src/runtime.rs index 07a2c17b72..b5be66dce7 100644 --- a/crates/fhe/src/runtime.rs +++ b/crates/fhe/src/runtime.rs @@ -51,7 +51,7 @@ impl Fhe { pub fn from_encoded(bytes: &[u8], seed: Seed, rng: SharedRng) -> Result { let params = decode_bfv_params_arc(bytes).expect("Failed to decode BFV params"); let crp = create_crp( - params.clone(), + ¶ms, Arc::new(Mutex::new(ChaCha20Rng::from_seed(seed.into()))), ); diff --git a/crates/keyshare/src/threshold_keyshare.rs b/crates/keyshare/src/threshold_keyshare.rs index f893ca7db1..0ee36bb698 100644 --- a/crates/keyshare/src/threshold_keyshare.rs +++ b/crates/keyshare/src/threshold_keyshare.rs @@ -17,7 +17,7 @@ use e3_events::{ SignedProofPayload, ThresholdShare, ThresholdShareCollectionFailed, ThresholdShareCreated, ThresholdSharePending, TypedEvent, }; -use e3_fhe::create_crp; +use e3_fhe_params::create_deterministic_crp_from_default_seed; use e3_fhe_params::{BfvParamSet, BfvPreset}; use e3_trbfv::{ calculate_decryption_key::{CalculateDecryptionKeyRequest, CalculateDecryptionKeyResponse}, @@ -35,13 +35,8 @@ use e3_utils::{NotifySync, MAILBOX_LIMIT}; use e3_zk_helpers::CiphernodesCommitteeSize; use fhe::bfv::{PublicKey, SecretKey}; use fhe_traits::{DeserializeParametrized, Serialize}; -use rand::{rngs::OsRng, SeedableRng}; -use rand_chacha::ChaCha20Rng; -use std::{ - collections::HashMap, - mem, - sync::{Arc, Mutex}, -}; +use rand::rngs::OsRng; +use std::{collections::HashMap, mem, sync::Arc}; use tracing::{info, trace, warn}; use crate::encryption_key_collector::{AllEncryptionKeysCollected, EncryptionKeyCollector}; @@ -562,7 +557,7 @@ impl ThresholdKeyshare { ) -> Result<()> { let (msg, ec) = msg.into_components(); info!("GenPkShareAndSkSss on ThresholdKeyshare"); - let CiphernodeSelected { seed, e3_id, .. } = msg.0; + let CiphernodeSelected { e3_id, .. } = msg.0; let state = self .state .get() @@ -571,11 +566,7 @@ impl ThresholdKeyshare { let trbfv_config: TrBFVConfig = state.get_trbfv_config(); let crp = ArcBytes::from_bytes( - &create_crp( - trbfv_config.params(), - Arc::new(Mutex::new(ChaCha20Rng::from_seed(seed.into()))), - ) - .to_bytes(), + &create_deterministic_crp_from_default_seed(&trbfv_config.params()).to_bytes(), ); let threshold_preset = self diff --git a/crates/test-helpers/src/lib.rs b/crates/test-helpers/src/lib.rs index f7e958cb04..78c5365323 100644 --- a/crates/test-helpers/src/lib.rs +++ b/crates/test-helpers/src/lib.rs @@ -18,9 +18,9 @@ use e3_events::{ BusHandle, CiphernodeAdded, EnclaveEvent, EnclaveEventData, EventBus, EventBusConfig, EventPublisher, EventType, HistoryCollector, Seed, Subscribe, }; -use e3_fhe::{create_crp, setup_crp_params, ParamsWithCrp}; use e3_fhe_params::BfvParamSet; use e3_fhe_params::DEFAULT_BFV_PRESET; +use e3_fhe_params::{setup_crp_params, ParamsWithCrp}; use e3_net::{DocumentPublisher, NetEventTranslator}; use e3_utils::SharedRng; use fhe::bfv::{BfvParameters, Ciphertext, Encoding, Plaintext, PublicKey}; @@ -47,11 +47,6 @@ pub fn create_rng_from_seed(seed: Seed) -> SharedRng { Arc::new(std::sync::Mutex::new(ChaCha20Rng::from_seed(seed.into()))) } -pub fn create_crp_from_seed(params: &Arc, seed: &Seed) -> Result { - let rng = create_rng_from_seed(seed.clone()); - Ok(create_crp(params.clone(), rng)) -} - pub fn create_crp_bytes_params( moduli: &[u64], degree: usize, diff --git a/crates/tests/tests/integration.rs b/crates/tests/tests/integration.rs index e883a7bd6f..e4bd5291ac 100644 --- a/crates/tests/tests/integration.rs +++ b/crates/tests/tests/integration.rs @@ -17,8 +17,8 @@ use e3_events::{ E3Requested, E3id, EnclaveEvent, EnclaveEventData, OperatorActivationChanged, PlaintextAggregated, Seed, TakeEvents, TicketBalanceUpdated, }; -use e3_fhe::DEFAULT_BFV_PRESET; -use e3_fhe::{encode_bfv_params, BfvParamSet}; +use e3_fhe_params::DEFAULT_BFV_PRESET; +use e3_fhe_params::{encode_bfv_params, BfvParamSet}; use e3_multithread::{Multithread, MultithreadReport, ToReport}; use e3_net::events::{GossipData, NetEvent}; use e3_net::NetEventTranslator; diff --git a/crates/trbfv/src/gen_pk_share_and_sk_sss.rs b/crates/trbfv/src/gen_pk_share_and_sk_sss.rs index 8877f86ec3..bde71c4511 100644 --- a/crates/trbfv/src/gen_pk_share_and_sk_sss.rs +++ b/crates/trbfv/src/gen_pk_share_and_sk_sss.rs @@ -128,7 +128,7 @@ pub fn gen_pk_share_and_sk_sss( num_ciphernodes, threshold ); let sk_share = { SecretKey::random(¶ms, &mut *rng.lock().unwrap()) }; - let (pk0_share, a, sk_poly, eek) = + let (pk0_share, a, _, eek) = { PublicKeyShare::new_extended(&sk_share, crp.clone(), &mut *rng.lock().unwrap())? }; let pk_share = PublicKeyShare::deserialize(&pk0_share.to_bytes(), ¶ms, crp.clone())?; diff --git a/crates/trbfv/tests/integration.rs b/crates/trbfv/tests/integration.rs index f650914833..19b68646af 100644 --- a/crates/trbfv/tests/integration.rs +++ b/crates/trbfv/tests/integration.rs @@ -3,18 +3,15 @@ // This file is provided WITHOUT ANY WARRANTY; // without even the implied warranty of MERCHANTABILITY // or FITNESS FOR A PARTICULAR PURPOSE. -use std::{ - collections::HashMap, - sync::{Arc, Mutex}, -}; +use std::{collections::HashMap, sync::Arc}; use anyhow::Result; use e3_bfv_client::decode_bytes_to_vec_u64; use e3_crypto::Cipher; -use e3_fhe::create_crp; -use e3_fhe::DEFAULT_BFV_PRESET; -use e3_fhe::{encode_bfv_params, BfvParamSet}; -use e3_test_helpers::{create_seed_from_u64, create_shared_rng_from_u64, usecase_helpers}; +use e3_fhe_params::create_deterministic_crp_from_default_seed; +use e3_fhe_params::DEFAULT_BFV_PRESET; +use e3_fhe_params::{encode_bfv_params, BfvParamSet}; +use e3_test_helpers::{create_shared_rng_from_u64, usecase_helpers}; use e3_trbfv::{ calculate_decryption_share::{ calculate_decryption_share, CalculateDecryptionShareRequest, @@ -28,8 +25,6 @@ use e3_trbfv::{ }; use e3_utils::{to_ordered_vec, ArcBytes}; use fhe_traits::Serialize; -use rand::SeedableRng; -use rand_chacha::ChaCha20Rng; #[tokio::test] async fn test_trbfv_isolation() -> Result<()> { @@ -50,15 +45,10 @@ async fn test_trbfv_isolation() -> Result<()> { let threshold_m = 2; let threshold_n = 5; - let seed = create_seed_from_u64(123); - let cipher = Arc::new(Cipher::from_password("I am the music man.").await?); let trbfv_config = TrBFVConfig::new(params, threshold_n as u64, threshold_m as u64); - let crp_raw = create_crp( - trbfv_config.params(), - Arc::new(Mutex::new(ChaCha20Rng::from_seed(seed.into()))), - ); + let crp_raw = create_deterministic_crp_from_default_seed(&trbfv_config.params()); // let crp = ArcBytes::from_bytes(crp_raw.to_bytes()); let generated = diff --git a/crates/zk-helpers/src/circuits/threshold/decrypted_shares_aggregation/sample.rs b/crates/zk-helpers/src/circuits/threshold/decrypted_shares_aggregation/sample.rs index af642cfc73..2164ddeb2b 100644 --- a/crates/zk-helpers/src/circuits/threshold/decrypted_shares_aggregation/sample.rs +++ b/crates/zk-helpers/src/circuits/threshold/decrypted_shares_aggregation/sample.rs @@ -17,9 +17,9 @@ use crate::{ threshold::decrypted_shares_aggregation::DecryptedSharesAggregationCircuitData, CiphernodesCommittee, }; -use e3_fhe_params::{build_pair_for_preset, BfvPreset}; +use e3_fhe_params::{build_pair_for_preset, create_deterministic_crp_from_default_seed, BfvPreset}; use fhe::bfv::{Encoding, Plaintext, PublicKey, SecretKey}; -use fhe::mbfv::{AggregateIter, CommonRandomPoly, PublicKeyShare}; +use fhe::mbfv::{AggregateIter, PublicKeyShare}; use fhe::trbfv::{ShareManager, TRBFV}; use fhe_math::rq::{Poly, Representation}; use fhe_traits::FheDecoder; @@ -64,8 +64,7 @@ impl DecryptedSharesAggregationCircuitData { let mut rng = OsRng; let mut thread_rng = rand::thread_rng(); - let crp = CommonRandomPoly::new(&threshold_params, &mut rng) - .map_err(|e| CircuitsErrors::Sample(format!("Failed to create CRP: {:?}", e)))?; + let crp = create_deterministic_crp_from_default_seed(&threshold_params); let ctx = threshold_params.ctx_at_level(0).unwrap(); diff --git a/crates/zk-helpers/src/circuits/threshold/pk_aggregation/sample.rs b/crates/zk-helpers/src/circuits/threshold/pk_aggregation/sample.rs index 23cb6bf335..6e61cd5ea5 100644 --- a/crates/zk-helpers/src/circuits/threshold/pk_aggregation/sample.rs +++ b/crates/zk-helpers/src/circuits/threshold/pk_aggregation/sample.rs @@ -12,13 +12,10 @@ use crate::{ threshold::pk_aggregation::PkAggregationCircuitData, CiphernodesCommittee, CircuitsErrors, }; -use e3_fhe_params::{build_pair_for_preset, BfvPreset}; +use e3_fhe_params::{build_pair_for_preset, create_deterministic_crp_from_default_seed, BfvPreset}; use e3_polynomial::CrtPolynomial; +use fhe::bfv::{PublicKey, SecretKey}; use fhe::mbfv::{AggregateIter, PublicKeyShare}; -use fhe::{ - bfv::{PublicKey, SecretKey}, - mbfv::CommonRandomPoly, -}; use rand::rngs::OsRng; use rand::thread_rng; @@ -34,8 +31,7 @@ impl PkAggregationCircuitData { let mut rng = OsRng; let mut thread_rng = thread_rng(); - let crp = CommonRandomPoly::new(&threshold_params, &mut rng) - .map_err(|e| CircuitsErrors::Sample(format!("Failed to create CRP: {:?}", e)))?; + let crp = create_deterministic_crp_from_default_seed(&threshold_params); // Generate public key shares for each party let mut pk_shares = Vec::new(); diff --git a/crates/zk-helpers/src/circuits/threshold/pk_generation/sample.rs b/crates/zk-helpers/src/circuits/threshold/pk_generation/sample.rs index bc4450d29d..0b1eb4785e 100644 --- a/crates/zk-helpers/src/circuits/threshold/pk_generation/sample.rs +++ b/crates/zk-helpers/src/circuits/threshold/pk_generation/sample.rs @@ -12,12 +12,11 @@ use crate::{ threshold::pk_generation::PkGenerationCircuitData, CiphernodesCommittee, CircuitsErrors, }; -use e3_fhe_params::{build_pair_for_preset, BfvPreset}; +use e3_fhe_params::{build_pair_for_preset, create_deterministic_crp_from_default_seed, BfvPreset}; use e3_polynomial::CrtPolynomial; use fhe::mbfv::PublicKeyShare; use fhe::{ bfv::SecretKey, - mbfv::CommonRandomPoly, trbfv::{ShareManager, TRBFV}, }; use rand::thread_rng; @@ -35,8 +34,7 @@ impl PkGenerationCircuitData { let mut rng = thread_rng(); let secret_key = SecretKey::random(&threshold_params, &mut rng); - let crp = CommonRandomPoly::new(&threshold_params, &mut rng) - .map_err(|e| CircuitsErrors::Sample(format!("Failed to create CRP: {:?}", e)))?; + let crp = create_deterministic_crp_from_default_seed(&threshold_params); let (pk0_share, a, sk, e) = PublicKeyShare::new_extended(&secret_key, crp.clone(), &mut rng).map_err(|e| { diff --git a/crates/zk-helpers/src/circuits/threshold/share_decryption/sample.rs b/crates/zk-helpers/src/circuits/threshold/share_decryption/sample.rs index d30cd32bfb..d25e377d3b 100644 --- a/crates/zk-helpers/src/circuits/threshold/share_decryption/sample.rs +++ b/crates/zk-helpers/src/circuits/threshold/share_decryption/sample.rs @@ -14,11 +14,11 @@ use std::sync::Arc; use crate::{ threshold::share_decryption::ShareDecryptionCircuitData, CiphernodesCommittee, CircuitsErrors, }; -use e3_fhe_params::{build_pair_for_preset, BfvPreset}; +use e3_fhe_params::{build_pair_for_preset, create_deterministic_crp_from_default_seed, BfvPreset}; use e3_polynomial::CrtPolynomial; use fhe::{ bfv::{Encoding, Plaintext, PublicKey}, - mbfv::{AggregateIter, CommonRandomPoly, PublicKeyShare}, + mbfv::{AggregateIter, PublicKeyShare}, trbfv::{ShareManager, TRBFV}, }; use fhe_traits::{FheEncoder, FheEncrypter}; @@ -52,8 +52,7 @@ impl ShareDecryptionCircuitData { .map_err(|e| CircuitsErrors::Sample(format!("Failed to create TRBFV: {:?}", e)))?; // Generate a random secret key and create public key shares - let crp = CommonRandomPoly::new(&threshold_params, &mut thread_rng) - .map_err(|e| CircuitsErrors::Sample(format!("Failed to create CRP: {:?}", e)))?; + let crp = create_deterministic_crp_from_default_seed(&threshold_params); // Generate secret keys for each party (each party has their own secret key) // Each party splits their secret key into shares and sends them to others From c19bb7dfd8e21860d62aadf8ab3a23cd4298cc21 Mon Sep 17 00:00:00 2001 From: 0xjei Date: Wed, 18 Feb 2026 15:59:56 +0100 Subject: [PATCH 04/15] remove crp from pk_generation inputs and add to configs --- .../bin/threshold/pk_generation/src/main.nr | 7 +- .../lib/src/configs/insecure/threshold.nr | 1036 +- circuits/lib/src/configs/secure/threshold.nr | 32780 ++++++++++++++++ crates/multithread/src/multithread.rs | 5 - .../threshold/pk_generation/circuit.rs | 1 - .../threshold/pk_generation/codegen.rs | 30 +- .../threshold/pk_generation/computation.rs | 54 +- .../circuits/threshold/pk_generation/mod.rs | 1 + .../threshold/pk_generation/sample.rs | 5 +- .../circuits/threshold/pk_generation/utils.rs | 54 + 10 files changed, 33918 insertions(+), 55 deletions(-) create mode 100644 crates/zk-helpers/src/circuits/threshold/pk_generation/utils.rs diff --git a/circuits/bin/threshold/pk_generation/src/main.nr b/circuits/bin/threshold/pk_generation/src/main.nr index 36ba52798f..ff23587900 100644 --- a/circuits/bin/threshold/pk_generation/src/main.nr +++ b/circuits/bin/threshold/pk_generation/src/main.nr @@ -5,14 +5,13 @@ // or FITNESS FOR A PARTICULAR PURPOSE. use lib::configs::default::threshold::{ - L, N, PK_GENERATION_BIT_E_SM, PK_GENERATION_BIT_EEK, PK_GENERATION_BIT_PK, PK_GENERATION_BIT_R1, - PK_GENERATION_BIT_R2, PK_GENERATION_BIT_SK, PK_GENERATION_CONFIGS, + CRP, L, N, PK_GENERATION_BIT_E_SM, PK_GENERATION_BIT_EEK, PK_GENERATION_BIT_PK, + PK_GENERATION_BIT_R1, PK_GENERATION_BIT_R2, PK_GENERATION_BIT_SK, PK_GENERATION_CONFIGS, }; use lib::core::threshold::pk_generation::PkGeneration; use lib::math::polynomial::Polynomial; fn main( - a: pub [Polynomial; L], eek: Polynomial, sk: Polynomial, e_sm: [Polynomial; L], @@ -23,7 +22,7 @@ fn main( ) -> pub (Field, Field, Field) { let pk_generation: PkGeneration = PkGeneration::new( PK_GENERATION_CONFIGS, - a, + CRP, eek, sk, e_sm, diff --git a/circuits/lib/src/configs/insecure/threshold.nr b/circuits/lib/src/configs/insecure/threshold.nr index b6f5f222d9..9299344251 100644 --- a/circuits/lib/src/configs/insecure/threshold.nr +++ b/circuits/lib/src/configs/insecure/threshold.nr @@ -9,6 +9,7 @@ use crate::core::threshold::pk_aggregation::Configs as PkAggregationConfigs; use crate::core::threshold::pk_generation::Configs as PkGenerationConfigs; use crate::core::threshold::share_decryption::Configs as ShareDecryptionConfigs; use crate::core::threshold::user_data_encryption::Configs as UserDataEncryptionConfigs; +use crate::math::polynomial::Polynomial; // Global configs for threshold insecure preset pub global N: u32 = 512; @@ -19,6 +20,1037 @@ pub global Q_MOD_T: Field = 93; pub global Q_MOD_T_CENTERED: Field = -7; pub global Q_INVERSE_MOD_T: Field = 57; +pub global CRP: [Polynomial; L] = [ + Polynomial::new([ + 61461185977, + 47035965113, + 56969982871, + 12001391859, + 49870533135, + 15455314297, + 63751299493, + 56324052407, + 65631346269, + 36530468952, + 62843140864, + 7525518489, + 35464128985, + 55000494110, + 37037493931, + 44077857155, + 34315933038, + 57135291820, + 49498695681, + 34897867020, + 56996368898, + 55048287916, + 59640559842, + 66097301562, + 16236724763, + 24541564356, + 34907839294, + 67739626095, + 54994068261, + 32278208326, + 53432743122, + 56532591135, + 23149190424, + 57712379738, + 23417171157, + 54048502723, + 37233703243, + 25182775752, + 23820725830, + 46188249890, + 66396768204, + 899445957, + 18897924138, + 17355713538, + 25399576475, + 59409053468, + 31550970203, + 56380757062, + 9693574613, + 14332025222, + 13952036697, + 16494757218, + 60987874751, + 60239388666, + 62236116743, + 26363916064, + 36621735283, + 54437776106, + 8161054742, + 35431584972, + 56871852015, + 39028430584, + 31992852619, + 12682192094, + 42701635710, + 5141156057, + 10849374639, + 42291144065, + 23147821452, + 58011241247, + 20235893889, + 22339689228, + 61022890038, + 42417724429, + 4410794663, + 34491920851, + 19482653489, + 40259529624, + 23590475535, + 1591229202, + 12639945631, + 47086256272, + 35240841263, + 60628595328, + 45320561566, + 37204932759, + 41184325862, + 7756171764, + 2211849734, + 44492020707, + 54027652395, + 60426144562, + 904646789, + 60779544839, + 59657215702, + 52969414652, + 66953660232, + 47732142528, + 6623586518, + 67286846947, + 55287963290, + 47884135019, + 17930386352, + 66350538241, + 33466903065, + 15722623915, + 2239123248, + 16026658743, + 31321678859, + 40284026941, + 53110959464, + 24607776988, + 13760377257, + 65202477790, + 1668010527, + 7559004167, + 38517625934, + 20774921651, + 56256624598, + 66234114137, + 54856447142, + 12632570433, + 42899978482, + 59478421066, + 53634722025, + 13279073155, + 34648961650, + 68699984996, + 29903078001, + 1426127125, + 55439493440, + 62842955589, + 53540777878, + 51644651267, + 52210071568, + 4423341557, + 56520193181, + 49594323377, + 5531856612, + 27779852013, + 28200493416, + 3747939028, + 59549082847, + 2091724990, + 62135139680, + 17458044213, + 23617737377, + 53098514571, + 64342901068, + 50023902604, + 48529401697, + 3922902983, + 50735637408, + 42515647299, + 21614690698, + 8489444890, + 5312080839, + 21226150498, + 38231922342, + 16608574810, + 12390966403, + 25501200679, + 41250990215, + 48706833987, + 32389911575, + 11076037475, + 6723206429, + 33346671186, + 50422490243, + 12754408606, + 10947312482, + 1233873730, + 62743459539, + 47353095638, + 27811003740, + 17039517971, + 23346567989, + 57355650693, + 16376874004, + 52256702497, + 47096898296, + 34391731975, + 15179098755, + 60372744463, + 34891180857, + 33253269960, + 45540918658, + 36238830557, + 65498298147, + 13313191190, + 62085490915, + 9916006595, + 28250819993, + 30481552385, + 63123383219, + 17016507368, + 48235679948, + 25645070920, + 36902784931, + 44301742204, + 12462618176, + 21267777046, + 23265612065, + 11645081993, + 33498558769, + 17634668413, + 2531319374, + 5903585438, + 60649119477, + 51308167018, + 24046303157, + 36244968580, + 59054976251, + 19389709996, + 12944829953, + 4929471791, + 12196817728, + 9163132937, + 58281027802, + 47138611289, + 57651027774, + 22422326096, + 13445595393, + 49644441825, + 32874024059, + 13086171772, + 42123227532, + 4890690925, + 46196393626, + 34873376810, + 16864097485, + 47562748615, + 42624153747, + 47111364539, + 21724777122, + 49328313718, + 10891309487, + 19746343895, + 5580395260, + 28186185095, + 19327677244, + 18098038749, + 22523812345, + 33805794863, + 13165607604, + 13035837688, + 51405194094, + 64310470902, + 1094552272, + 22164110333, + 34610690960, + 64298135402, + 27886492844, + 53742727958, + 39260973809, + 4317295440, + 31795416027, + 7863814854, + 64019985785, + 45394506123, + 57274466726, + 47384702023, + 45350408282, + 3241516133, + 50776620746, + 53792834140, + 20668054456, + 28783343358, + 1418833394, + 42623623861, + 16751325758, + 27309288838, + 23422095054, + 62305839529, + 12882297831, + 21490196950, + 13876977646, + 67488309083, + 52428357999, + 63478541045, + 1099200606, + 9908352690, + 63992323552, + 42343036357, + 4178705147, + 17706995945, + 47956528884, + 68528641333, + 16512122665, + 65709592560, + 11315351222, + 6665704173, + 57570574417, + 66617946741, + 32203806970, + 45758894151, + 4122367988, + 8352927278, + 49634284706, + 40257008250, + 67364378715, + 15922094072, + 62543928894, + 9174188114, + 16079231471, + 42634625835, + 14695910169, + 33842659952, + 52712350568, + 26838456171, + 20318037835, + 7907834533, + 48232773142, + 64204097505, + 3712285275, + 17143162723, + 15064763896, + 44312331202, + 31202336488, + 27340408061, + 40817639078, + 7561815814, + 8665575711, + 61347527627, + 37842410759, + 18653055478, + 41531321440, + 52838741572, + 28154483952, + 68324854951, + 275643495, + 24511911779, + 35067729248, + 27924842193, + 2355462421, + 42916961694, + 46416553844, + 53975195637, + 39491426063, + 20690298982, + 36469346488, + 50548547976, + 68482660801, + 15331713894, + 1036915986, + 63021832097, + 44349142754, + 28159941701, + 49242459522, + 57222992011, + 46415764578, + 24408151601, + 48284606488, + 11170050093, + 42186517395, + 24084072247, + 3990578276, + 21680867241, + 26556257130, + 14064390948, + 8203005863, + 61428883189, + 28194604677, + 25879220271, + 59039981124, + 67395911398, + 34304244207, + 68281887928, + 28046128685, + 43593070073, + 43187343763, + 4784151546, + 63970421736, + 47149552798, + 43207716891, + 10820741919, + 21437410990, + 46916717349, + 19492106654, + 3464870090, + 16234823474, + 17830761558, + 6762818732, + 14953030311, + 49941473542, + 47879388560, + 13222719462, + 61192006893, + 25830713223, + 53356422543, + 6601818331, + 19192239048, + 31278922620, + 58165869601, + 12316059853, + 15231317843, + 20189389638, + 22661367514, + 18334093840, + 44866733880, + 39336631212, + 44577791944, + 145071532, + 66115284714, + 21840311291, + 64014933646, + 19037997962, + 43427699509, + 27388543320, + 58023443443, + 27407444914, + 36390119356, + 4867196029, + 45278665549, + 32878682327, + 34907972456, + 37178138320, + 50930050922, + 589102718, + 21700165049, + 3239778031, + 3672011925, + 14095342260, + 53838162518, + 17078351686, + 23084794792, + 61261871894, + 59397255464, + 15349622719, + 19158382248, + 67727623064, + 23924382943, + 68307567306, + 63525193410, + 58529613601, + 43637694160, + 21849263478, + 25957360968, + 23006937573, + 58861370913, + 48142256975, + 44412189160, + 49351103967, + 23593050794, + 29648335762, + 6252921658, + 68694672490, + 31709587945, + 27812909838, + 22459664729, + 63609179449, + 56737904405, + 10856357469, + 29794806410, + 21762737532, + 58621311148, + 29969900941, + 18453797806, + 54126384037, + 268956585, + 20250029160, + 38741886250, + 43738197418, + 51959845435, + 26393792166, + 54125829791, + 25772351632, + 47343168114, + 60984515852, + 28442524526, + 36179785934, + 11954111849, + 36120125100, + 66441468276, + 68471068889, + 58384945365, + 31847579573, + 41895566570, + 28243485517, + 45784935184, + 66096958309, + 42362573500, + 38582685636, + 68488320279, + 51499353578, + 46622474478, + 3759185154, + 6563544873, + 38985704890, + 67766061551, + 28379323670, + 47373345237, + 16323608124, + 45305036770, + 46306329955, + 43399152221, + 2983609262, + 56281127762, + 40534737100, + 6397937469, + 33294921932, + 52500471975, + 30279783957, + 9033475512, + 57269871537, + 56624078732, + 4113434174, + 49494079766, + 64736008441, + 31467599459, + 36461827052, + 49557748339, + ]), + Polynomial::new([ + 2275528436, + 19467792773, + 28745794964, + 15450926350, + 49612032946, + 67919068518, + 61803298746, + 26129658728, + 12623280338, + 53531552070, + 54819814730, + 58878198832, + 23184398555, + 49858058597, + 44298913634, + 45592229312, + 66449240571, + 34551898073, + 34754103142, + 41626980045, + 67721769555, + 35665301733, + 58579131484, + 57461920999, + 51688013648, + 26992433968, + 38344574872, + 45749894594, + 30254234687, + 37524816497, + 47018316062, + 64002742424, + 68580417453, + 19697423219, + 61710304888, + 62391891434, + 15615187533, + 58298797026, + 64374138684, + 66555147895, + 48587765283, + 2742020117, + 31377328025, + 42320755884, + 29337106321, + 48838568601, + 63247838763, + 64270223283, + 26264665510, + 34889515729, + 65448204981, + 48833197824, + 1291979088, + 15751543159, + 54373564464, + 47938184037, + 48941451057, + 39804044912, + 27093544533, + 37783270718, + 2445802122, + 4348006916, + 53479205587, + 62516364900, + 20745040439, + 32329847565, + 31935143191, + 17744928410, + 55289415531, + 14141755156, + 3708220464, + 61023992010, + 66662314400, + 54657752505, + 35102044815, + 7147600604, + 36552276464, + 43178291242, + 34449472232, + 7572953274, + 3433975809, + 26416906130, + 16061375613, + 13356829462, + 21394771881, + 49677037648, + 52660411765, + 49431215186, + 55228993462, + 50800826395, + 48597585032, + 17653364810, + 57359640749, + 67006767450, + 47236350019, + 6894101261, + 41023620080, + 65104422023, + 1226485896, + 63174069887, + 62641753536, + 48298224863, + 29373620783, + 34379006661, + 41983052475, + 40479513729, + 19360593867, + 23832634900, + 22941537157, + 13024079281, + 61144439789, + 49662795676, + 27203249958, + 12573477214, + 42488263792, + 4592323541, + 28158451061, + 29704659485, + 47496430899, + 48307247398, + 27710162094, + 9990581433, + 52737054382, + 65232343596, + 23091959040, + 11445872769, + 66322124612, + 68441902011, + 17208059922, + 4535089235, + 53295248454, + 47263305540, + 5776509236, + 36491243542, + 39455048128, + 48123550824, + 17604837172, + 49117497310, + 22953641540, + 62591521204, + 6239103317, + 57551278948, + 16335654747, + 8581585624, + 58463599910, + 48021866451, + 60091952099, + 45093575851, + 9641923098, + 64462965005, + 46090630059, + 49347830445, + 29165562264, + 11751724456, + 50859809155, + 22967183366, + 44966475970, + 25238968367, + 30800038583, + 15353972142, + 4385718403, + 45384226443, + 1037701131, + 63140442254, + 27649371170, + 11382127638, + 46840697583, + 17699437532, + 31696891879, + 46195002032, + 26053232623, + 12028293515, + 9046597550, + 41503622714, + 55741723590, + 8419883517, + 59146463417, + 64589057470, + 9432451648, + 43346161792, + 41431623316, + 16512429406, + 38401537523, + 47175538720, + 44746207468, + 13093962684, + 52583229712, + 3848492063, + 66946061899, + 62072078413, + 3619675515, + 26449746618, + 67325067882, + 26814987890, + 33384626716, + 1670982450, + 10510708058, + 23043716869, + 24126821849, + 36723543009, + 7092420020, + 1004735995, + 25221178805, + 35368578800, + 9191161374, + 37709146662, + 40035266388, + 16212894276, + 23799213376, + 40946355658, + 6051690029, + 50811473221, + 51520087196, + 20171150607, + 1638415983, + 40089555074, + 56271548032, + 6635330563, + 14092920214, + 11114217246, + 57493813753, + 60942579077, + 27534344871, + 42626781943, + 52177833677, + 39255106792, + 61868151753, + 14469523611, + 27815045418, + 60727846093, + 48438100776, + 38889745557, + 12773432616, + 26365240376, + 3141553080, + 21937580434, + 48469979774, + 41952411649, + 12001465108, + 33627048061, + 48685483857, + 33230844147, + 45232123560, + 8468015783, + 16372895878, + 21374379722, + 32128993868, + 4329410050, + 24678870760, + 22310947814, + 5196430270, + 49303449038, + 57978190026, + 45887182969, + 16025589779, + 47142971789, + 27348303065, + 65906470849, + 56193911669, + 58514329132, + 45081143026, + 10705374951, + 60216301613, + 36048602781, + 56554350244, + 36863429568, + 14208373985, + 14721577335, + 47563148773, + 41889790243, + 12510448066, + 18828084308, + 37227102897, + 36810485608, + 930743799, + 67803215484, + 8853406748, + 27785691587, + 60170898691, + 42493605857, + 57261668330, + 63484754347, + 52017103107, + 52642574325, + 45009622224, + 64195958400, + 7695640267, + 13757003996, + 53432722342, + 22792176236, + 28331565984, + 22157312707, + 15843589870, + 22848669504, + 23984260758, + 57468611140, + 9466221079, + 64492171170, + 48586343539, + 66176309707, + 38771438216, + 14857816497, + 14330815349, + 63217616957, + 56336832913, + 34810454507, + 34373077293, + 1013030213, + 2902031420, + 33257685442, + 53439698122, + 11396263851, + 35647133130, + 22205923935, + 48340266638, + 7836559508, + 21070038373, + 39340632121, + 2169629227, + 35588654174, + 17012627881, + 39610221291, + 67572014879, + 7283302611, + 24208982743, + 20464883427, + 58800583642, + 55425102893, + 66725475083, + 21851837206, + 67122405546, + 8658673690, + 65478250064, + 33027822918, + 39515565434, + 9389668916, + 36722149745, + 43575170888, + 47397404327, + 68092080918, + 46211685764, + 11717641527, + 46258276281, + 60352335908, + 55114575038, + 30633564037, + 63596227014, + 40746716922, + 50602900524, + 40781167460, + 41773592032, + 63011261636, + 19629019367, + 8915127154, + 38471469844, + 10718346621, + 59658443636, + 22107689521, + 9463299489, + 15076034121, + 37850882400, + 20131950773, + 16169673920, + 46664208680, + 36435935676, + 42282979997, + 22930376094, + 8678339952, + 45686120166, + 37678371961, + 19817688468, + 20718079990, + 32164382786, + 51709505624, + 20920563425, + 54245230703, + 32427219465, + 37098148943, + 10327636301, + 48403217721, + 9064488571, + 41421918923, + 9319464254, + 34756418474, + 13838722005, + 62905293832, + 58843803111, + 25908319036, + 39348237253, + 50621569759, + 861408222, + 26410229915, + 24328171124, + 64464448986, + 7311160290, + 5147824223, + 8694073921, + 67776391323, + 1011312984, + 51018700237, + 48458972639, + 4651799316, + 64733764715, + 64361253173, + 8749972198, + 58207829714, + 11493149239, + 35508859141, + 55821462549, + 49887487847, + 31154007329, + 213571335, + 50612994435, + 36805772654, + 68386745094, + 8585729363, + 55503695044, + 1267596756, + 32896249972, + 17777753356, + 63963196471, + 46065236210, + 7701670958, + 12915548183, + 20766212089, + 37477305705, + 12272825944, + 3971327583, + 64699791992, + 61716964123, + 15634030046, + 7093160426, + 9674354420, + 51510253674, + 1223209421, + 34088171801, + 19287958871, + 60825711863, + 57900143539, + 29656861443, + 36389577916, + 60040001283, + 50552917017, + 42280763978, + 48960100126, + 50308906957, + 66922514869, + 65544899093, + 47240398560, + 65295110910, + 29285124153, + 17967826648, + 63764842247, + 6116642392, + 65246028410, + 5716517539, + 3197142939, + 4427759454, + 27609654497, + 34414721563, + 30981897614, + 53972932192, + 44649667928, + 50930459351, + 60700840116, + 17359073831, + 27037635518, + 29609943774, + 44284948829, + 26322539743, + 13670036631, + 2164275456, + 45269244278, + 17597955996, + 27696616150, + 28417154207, + 37020342928, + 8085395607, + 66679312321, + 797319029, + 35900205722, + 50733974616, + 6880644850, + 33496942167, + 34097644723, + 47409175499, + 27309165388, + 54978234790, + 38580222875, + 15911437465, + 56279685480, + 50403967817, + 60005556538, + 30980003980, + 13352012392, + 21109813097, + 64144537069, + 35655020460, + 8161437682, + 18490582675, + 17717240376, + 24986487077, + 21663364754, + 3007401776, + 13276033442, + 27820946688, + 66732401912, + 17036469707, + 36688531239, + 48718357304, + 20874826817, + 30687773632, + ]), +]; + /************************************ ------------------------------------- pk_generation (CIRCUIT 1 - PUBLIC KEY THRESHOLD BFV) @@ -27,14 +1059,14 @@ pk_generation (CIRCUIT 1 - PUBLIC KEY THRESHOLD BFV) pub global PK_GENERATION_BIT_EEK: u32 = 5; pub global PK_GENERATION_BIT_SK: u32 = 1; -pub global PK_GENERATION_BIT_E_SM: u32 = 24; +pub global PK_GENERATION_BIT_E_SM: u32 = 28; pub global PK_GENERATION_BIT_R1: u32 = 13; pub global PK_GENERATION_BIT_R2: u32 = 35; pub global PK_GENERATION_BIT_PK: u32 = 35; pub global PK_GENERATION_EEK_BOUND: Field = 20; pub global PK_GENERATION_SK_BOUND: Field = 1; -pub global PK_GENERATION_E_SM_BOUND: Field = 12307200; +pub global PK_GENERATION_E_SM_BOUND: Field = 206867200; pub global PK_GENERATION_R1_BOUNDS: [Field; L] = [5120, 5120]; pub global PK_GENERATION_R2_BOUNDS: [Field; L] = [34359701504, 34359615488]; diff --git a/circuits/lib/src/configs/secure/threshold.nr b/circuits/lib/src/configs/secure/threshold.nr index 8e24089fd8..d651aae25e 100644 --- a/circuits/lib/src/configs/secure/threshold.nr +++ b/circuits/lib/src/configs/secure/threshold.nr @@ -9,6 +9,7 @@ use crate::core::threshold::pk_aggregation::Configs as PkAggregationConfigs; use crate::core::threshold::pk_generation::Configs as PkGenerationConfigs; use crate::core::threshold::share_decryption::Configs as ShareDecryptionConfigs; use crate::core::threshold::user_data_encryption::Configs as UserDataEncryptionConfigs; +use crate::math::polynomial::Polynomial; /// Threshold BFV parameter set search defaults configurations. /// These are for the SecureThreshold8192 preset. @@ -26,6 +27,32785 @@ pub global Q_MOD_T: Field = 81; pub global Q_MOD_T_CENTERED: Field = -19; pub global Q_INVERSE_MOD_T: Field = 21; +pub global CRP: [Polynomial; L] = [ + Polynomial::new([ + 1666838063904304, + 198092196459841, + 51435662373109, + 250510419448628, + 781426260922968, + 1896814415033622, + 1420043741126206, + 322621471342752, + 1990010240048264, + 361659322026084, + 895811362610357, + 199339580897879, + 1540604172255858, + 1618094537083355, + 1992313249370465, + 464795530839812, + 953109449477564, + 1419711176720721, + 957421842963376, + 825882842289512, + 608111634774372, + 1623878383228104, + 346041924944440, + 77029463901023, + 1476816637179340, + 1847552403358689, + 856980783870729, + 1508116743026214, + 503789038772564, + 1674914168365937, + 294061855762256, + 977897481527032, + 650643420771480, + 81316673633236, + 9735941910308, + 1810819406196548, + 807811192837870, + 1787801556124006, + 1628104605342444, + 600086251534035, + 636056534768916, + 1131530252915815, + 1255704360183763, + 95218918469775, + 2040073901845704, + 2190923300890339, + 2129557408280233, + 1825606695301201, + 858311725710238, + 2085738069632449, + 728216351479062, + 2222409891668965, + 408916890608415, + 221777469533572, + 1503036764859128, + 1505455671500325, + 930451524671678, + 1362697704316651, + 1632285077756587, + 1499048643040664, + 79869826355466, + 986888947574802, + 1522234604757688, + 1325868244625762, + 1694757952177932, + 1392845355590898, + 833262400538044, + 1248980897186294, + 185899050581064, + 2094270676296619, + 825001755505720, + 2207792985372830, + 2175324765889308, + 566132271356101, + 1193091914303481, + 1145415849728820, + 1112758291477166, + 2046550970123572, + 746504607097521, + 1590824539730575, + 1355923605926158, + 1224568403934937, + 2083966633612809, + 1045053730589594, + 1403446140065070, + 2088111397999184, + 1202373165947124, + 731074538941241, + 1385136154633382, + 9327532806284, + 676430662939897, + 372946526503852, + 1778848192564402, + 478277374585757, + 1060265088293272, + 1479686012342199, + 1226107227856770, + 1460163197522801, + 658890072820806, + 1824428682071442, + 1070145583149417, + 274733435832022, + 1381903858861143, + 368412562966204, + 1430382496808576, + 1853896598168923, + 1584229499949206, + 2205492262538098, + 744333757293518, + 1068995172787174, + 284548461760869, + 925855966951823, + 1632589261772008, + 380330124256276, + 1480202015625718, + 602415533761058, + 1019602145898572, + 529315989027678, + 3755717817685, + 471189200605056, + 64721691596020, + 1396082717142355, + 387312882468116, + 1871814589404278, + 1719605689086772, + 1652315999912496, + 2076274105650007, + 2065860844538433, + 727493780829341, + 2213140414827622, + 1277758019348629, + 447332094008105, + 1156399521326194, + 2099487183029222, + 1815907414559049, + 127089960964197, + 1312991321054421, + 1709739682752836, + 2068271875579851, + 1821232367316197, + 2024728252379659, + 1028727551908939, + 124252319736319, + 2138681844125797, + 1455430795288653, + 1915255996514106, + 1724905331508691, + 1064587643588743, + 1945613996992732, + 1747251893142884, + 1945419807141796, + 1497785119444923, + 1421274184591670, + 509144962793866, + 2058377444508224, + 426877472799930, + 1425749000909650, + 1134224277046388, + 984275344264741, + 949242663132517, + 1895555571070103, + 1757733327162112, + 779476710210196, + 1347483023874866, + 49064984149363, + 1549710235134228, + 1306483739805499, + 433842240943317, + 24493648784578, + 1174544250810727, + 880292802560081, + 1056219875686524, + 1836531997836035, + 682421832392863, + 1898650627051421, + 1281371472803754, + 395705154141185, + 1567188536586974, + 1083005732076478, + 1647643922538494, + 1828816499058155, + 1108693589936522, + 900802951907400, + 2102880504250079, + 1523837878915732, + 1904633922646804, + 1417711902595091, + 102474353600995, + 2211338805960994, + 1149351330961831, + 1140331839713232, + 681972652371769, + 1894755557073482, + 563358144693034, + 966299020472700, + 1300162301805882, + 1192691324159102, + 2198472387646221, + 10611719644044, + 1239495850467949, + 1126812648943931, + 760016133460748, + 569974815392787, + 944818860811731, + 1654340019895910, + 2012681010291914, + 119509525319264, + 550298960912946, + 2089732603130099, + 1809159128967032, + 2058702248784879, + 725105918690464, + 1149670306415067, + 227032500602472, + 998263999163748, + 1684039566730626, + 806017241368370, + 1195486013666378, + 2231672405778486, + 1401396594012881, + 441269728464591, + 338788431106032, + 2124736250798773, + 1423294234500421, + 1337844540478505, + 1687259638321298, + 1580947367828330, + 1541391845224964, + 414617921600764, + 1787323829701919, + 348313870694551, + 1540006915890732, + 1846520006389354, + 1175077696916213, + 846698758898197, + 1498632811821308, + 1619267522457203, + 1521563845633210, + 2019873036947196, + 815657387341698, + 1680516891730242, + 694961300407385, + 1489595956055291, + 1488048850991266, + 1418992431091714, + 902179155987543, + 1234873466070636, + 1515728323055064, + 893456109832294, + 1067303946693928, + 862455084791430, + 336058138834674, + 1259322630428896, + 2012925293011068, + 1650279286352216, + 975572747506388, + 1552003220373897, + 647232548184401, + 20968436514191, + 154755932870481, + 1865292525248903, + 601707633753659, + 387905551543145, + 1934004701725105, + 1792372528854346, + 365108441405092, + 253270819375738, + 2095949539893940, + 947819565315018, + 390107187528421, + 498268751120484, + 1764050000866415, + 461901516226963, + 2158444182892349, + 2199138500916943, + 443990377953291, + 1473261254957705, + 1920045225903443, + 780199425157401, + 1292351200938430, + 647081019171694, + 337469351455107, + 1316337770792926, + 214190481083087, + 1161356958137272, + 1970620615146774, + 1035771783067351, + 1110417828238803, + 780804580853953, + 541732238265054, + 14494610822209, + 1298313681008415, + 556746554571612, + 164414117728142, + 402827853470553, + 1532017822028520, + 1945501844234723, + 2039253260069174, + 992263650623783, + 1205363299804764, + 291662814725231, + 2030241926131537, + 1236503363647793, + 1585451165256826, + 569689800869274, + 2090553543381152, + 1972724368777043, + 2068500224987202, + 1802755975856935, + 209716367219214, + 1644558974851276, + 2211078352252016, + 2243498465840021, + 400952312973692, + 1755137788704575, + 1907699628256998, + 1956133063433652, + 1267008634884109, + 1918257461142574, + 66891656453829, + 1262592160964710, + 1769200890452289, + 2013539416779813, + 869174163040423, + 2164981849000390, + 910345681991143, + 720786572338177, + 982104069972428, + 79506531349677, + 52990525980528, + 1810292451124857, + 329457551867910, + 885459561720883, + 1326976005902680, + 1367122485376759, + 890190592613409, + 1049551266460276, + 195832632811530, + 2176565945746343, + 1823500071763010, + 557953880936426, + 856806546727202, + 820158881723675, + 348948893827224, + 1284864503908971, + 423621046986193, + 2237868386377600, + 992461069005550, + 2222655924776770, + 195752018545652, + 1097890053098462, + 17581598634035, + 1045421367721670, + 2213746675590796, + 1130455392344731, + 2107343455569960, + 2171950766910769, + 964880006016151, + 1172393978865803, + 2157357025491198, + 1767839898101481, + 2052172857123543, + 2128245793374643, + 136486949845154, + 1460768715345086, + 1331143059077191, + 1970098389910398, + 960574274445433, + 18376324166273, + 1217561715877829, + 1943884617552421, + 1215825194065916, + 1218183597342153, + 1163365112423645, + 802452016608632, + 410551443668066, + 211615127489693, + 1907367935735019, + 1583639569048899, + 1532766549999357, + 1735286341857548, + 724493114667820, + 1609954441485764, + 495491952916569, + 1060644517237602, + 11599909685128, + 723535888374053, + 935087225350297, + 1664661167811257, + 731458030064859, + 2046034027306401, + 1768440575627655, + 2000698082858067, + 331360783658921, + 143023734164166, + 1949275140637958, + 278441835277888, + 1597962578167538, + 843721159885546, + 1350325965093760, + 580330022955892, + 272082773995940, + 1412049071485801, + 891429389708341, + 713362241824012, + 1953988097749085, + 1279387224740998, + 533044999024809, + 738871951971390, + 1557194213526742, + 928428292447153, + 2074080291558704, + 832104841504213, + 992145067086241, + 1456569639242188, + 1352397180212720, + 1801606552848851, + 286509512972636, + 1288205597865688, + 500094737475882, + 992909629308017, + 682089644316653, + 542943169357053, + 1120018772402835, + 967038376089782, + 1598881711642640, + 20153356626272, + 1833167364020756, + 53699645453074, + 1951982735101589, + 1967133481385644, + 1662771545474741, + 238767373377168, + 2128340588616206, + 2238002916642305, + 2030946493630426, + 1280213225187397, + 1023123065812712, + 2104121368831557, + 1555703093170287, + 1953700650377087, + 310109169878427, + 458988181554135, + 573306974570604, + 991639439681608, + 1402724885471713, + 2247411351947010, + 599301156971639, + 1659425262561841, + 411082637686696, + 1835582389063269, + 1413143760611121, + 737235907829561, + 2187593822163141, + 1409801538970115, + 2236996475434516, + 1581996735931200, + 1341211198658761, + 1448460050251302, + 779822203989826, + 1625091727726115, + 748503244948420, + 734457258013197, + 1107310155881843, + 779457011487440, + 1889306815677906, + 1603051243097950, + 1464644777238592, + 1104430126655584, + 556616491998385, + 1629399306491516, + 437816184932107, + 2035989230999255, + 861352478497115, + 1894197440856554, + 1275093376686461, + 1193014267865719, + 1014976786019021, + 1401959076959647, + 1720905049437656, + 1798057355145858, + 2074081024249115, + 912155011394842, + 1379164501317518, + 837985055033021, + 1048554388426012, + 629800797020430, + 783030539386980, + 61096706348678, + 783420766662032, + 974150042805682, + 362950574859004, + 234265637108867, + 394798718654148, + 1165750464990033, + 505980326192521, + 127273850188709, + 1075716056814326, + 2027667673583874, + 826517324338960, + 1085585939643223, + 1828181414686448, + 334659977677696, + 1906466190220383, + 2119566216740517, + 460066838732011, + 667606296330325, + 2196527579050397, + 1342102548401991, + 1767846357409060, + 1164550137161631, + 1630599169591126, + 1004074945946345, + 2048303916629411, + 366980104645927, + 1538918850410853, + 620880136821615, + 1956991787335425, + 239668370733252, + 30883434788425, + 275043606869117, + 1079167120961077, + 106017437862587, + 1921754157463673, + 1325169959051597, + 232529679780561, + 937436809924285, + 454701735543182, + 1326435788159216, + 512265332696503, + 1349170360034063, + 1832331508179506, + 1930382864194329, + 1798747281146797, + 1281098305536405, + 2062939548903540, + 677586112723889, + 1356908583422499, + 575328656040442, + 252701832677209, + 2128239393122726, + 1066898679134724, + 1412989937303344, + 2039965223063243, + 1497984798786927, + 2218593889270221, + 542733666034953, + 1001722613663863, + 681104649479325, + 1941106231787866, + 581385203038478, + 592322058847859, + 1819798434426032, + 566528296914175, + 1673388613885430, + 702592166318910, + 2025797812321719, + 438095849484076, + 1002866600213083, + 258369018328744, + 747089306617732, + 846088247233465, + 2097657502673069, + 1185184517406805, + 728020508574676, + 31812429735786, + 1942348478193777, + 1072790611319979, + 1251523362033009, + 2123713983307165, + 42659686402690, + 322557792379109, + 482632182208284, + 1079714216399515, + 158734280105541, + 1215394026961399, + 203828724297790, + 1133093278603353, + 2015995731698133, + 763762545635573, + 1042401927386099, + 895692220640502, + 1911109954978816, + 840973205520217, + 1743711122651447, + 1268855404745305, + 2097654259051475, + 296102443773203, + 1254220381835271, + 1601228664107183, + 1371839188050976, + 1808858915932225, + 1258307405159848, + 377478138149889, + 2139252150460599, + 1407856735738332, + 737343650545944, + 790577334606931, + 1531085162279264, + 2169248545845060, + 1425682423873863, + 322094643327425, + 1378704804969181, + 1689537453078503, + 35223057735827, + 1834148607711197, + 2122631839733836, + 1143482707758413, + 1331089257908086, + 1622713265251739, + 687387562757987, + 1721167949728503, + 1840971939293274, + 425370841909514, + 307315553307995, + 264747526014001, + 1130189905626100, + 2133665506817310, + 238562143655084, + 316261429010827, + 980944562637546, + 1444293662963943, + 1829068912278432, + 543374312897297, + 2002739293762719, + 1268533205671259, + 847228225459934, + 1982143697877841, + 835362667909099, + 1449373150314112, + 1537305037220880, + 998048202521974, + 452522871215817, + 1873523843549376, + 145906181996147, + 198201574060552, + 1862726882934981, + 952238800921196, + 311685485162432, + 2038128658675820, + 199757272394703, + 1315284095927813, + 80613410570595, + 2224825999910000, + 1697266664461638, + 505487084110117, + 1999752577716750, + 640926757140415, + 1489187107983717, + 1125691722036860, + 1856643940541712, + 1741802491691039, + 1694320946211032, + 324257009877277, + 1434263755918239, + 1095905328145698, + 1235620780703914, + 1066123606998767, + 1461895178130065, + 2256024932798, + 2239219752817693, + 2238708684302865, + 1083628675328621, + 1839060116352878, + 682480240563415, + 1866588220444048, + 840255108010928, + 277920183552667, + 1529623696981956, + 983570100130129, + 218421605608163, + 1734686148014345, + 2119709127444079, + 1379925556880168, + 1018183572769090, + 304753503568767, + 791715518640517, + 957470544247769, + 717401907121454, + 1434438404545774, + 590220074114322, + 1893521257387882, + 283541077675676, + 1590684722539677, + 996466272845, + 1193351133383569, + 394066180773224, + 411039778812404, + 765599954919661, + 1525554791664984, + 1342042665766606, + 1262332187253151, + 608888050590091, + 2158557510896960, + 1857951497649692, + 1849248012236996, + 158273236577770, + 701411320846426, + 1835987754211278, + 11617355593106, + 551985536241827, + 1668320410499232, + 690003342662791, + 107706003654481, + 1205668596184781, + 390102845846686, + 1460659150321911, + 582555960523959, + 1097554489282042, + 827782661661895, + 801443659969062, + 1546594884489090, + 592557250365336, + 2220292566902745, + 624377395237081, + 1931481272310696, + 250588776187632, + 1689132740238061, + 127474199828774, + 1100741294359772, + 270162708605459, + 1490747628423558, + 379973537567664, + 720891900869063, + 1030824096925693, + 1380900327702985, + 1365631576081111, + 931073674039097, + 1960302868487255, + 1002849858936654, + 1122979713597032, + 531965801068449, + 339074425705563, + 1346584101634008, + 1906630461045486, + 967585065808800, + 839922062859227, + 1315836992483215, + 588701621312565, + 5823137356919, + 816250972817176, + 161280768106219, + 989190161505419, + 857619738820580, + 1965965592993879, + 910647911811330, + 542238482733317, + 709016123176274, + 100911814375203, + 1971303266197959, + 665981732206022, + 1004660455839298, + 2057611300949191, + 2103437519282597, + 1300435518750565, + 1045783888687606, + 122240995978462, + 2013368798960490, + 1345633541363733, + 2166176628002196, + 123950477430731, + 515462487032095, + 964545746548230, + 1579638694852765, + 624027080198769, + 2223907923403445, + 546774986143324, + 1221591354750692, + 862340680092737, + 152386921017636, + 1641191576942973, + 1353106045199067, + 1861024529699314, + 1533266393278861, + 188870520342256, + 816467918630060, + 397540174161513, + 854067516836834, + 493468003346133, + 1065260403578394, + 1017734124550082, + 1883351188653255, + 488406669866827, + 207272948900749, + 2138995229119994, + 710204073230307, + 106100547544171, + 1310319274823073, + 2013202550053658, + 1133447950552283, + 2025960123941465, + 1480914157932471, + 480389978390873, + 335033689158113, + 587765485613653, + 1354058077787550, + 818914714206074, + 152528929921608, + 507999265858410, + 272211759927275, + 1027985953428524, + 538889005596398, + 1549397320762502, + 2188935413096745, + 1801629573239544, + 404830539169768, + 1048983209911969, + 1066014040999733, + 1290966101975818, + 240649975838100, + 420136263257130, + 1844865475507687, + 1857301363479109, + 1679819452162412, + 1569524865631072, + 1534976014850950, + 658055009033287, + 1650334095319632, + 243105443746922, + 50061965019760, + 977468218143612, + 179077735342060, + 2245390007304732, + 1406013444200144, + 128611056404798, + 839646285868528, + 746096691590588, + 1603518491599141, + 670464464112698, + 293639325081483, + 1085965744441142, + 1138440819196759, + 482398394912213, + 1648880761397303, + 227638159753225, + 311042877417171, + 1487002949950673, + 1068189942269374, + 1942207625414103, + 308533419530289, + 199285312635739, + 1577306623596453, + 1579251810424985, + 718024490687031, + 1349989829300396, + 821921419823154, + 1038779655723385, + 757424213330753, + 922649218600119, + 219078185668745, + 737933396454798, + 1279624598123906, + 1186469666834149, + 819011414399653, + 217591628708234, + 1539866407131078, + 1201947089449193, + 2202352216002198, + 1563478473763586, + 57328514745525, + 1832759521502116, + 1282650315630033, + 737299979830559, + 1611373149645705, + 735121557929866, + 570904863187206, + 1272553866808970, + 1030920766539928, + 1394837627423143, + 303494419847288, + 423442634051933, + 570342238795091, + 1214821139927715, + 1802200420742048, + 201157897774678, + 1391872200571500, + 680907394237061, + 1703669291729964, + 1424119770271671, + 1943600594777594, + 855228188816, + 400678358159039, + 565388805760265, + 1049105529940614, + 333525084826972, + 1005004732078339, + 1430379755046829, + 2180283867372158, + 159761294478680, + 492174484822738, + 1985621943613898, + 704586225755581, + 1826310524276644, + 640000019068885, + 577800141373714, + 1670582064531246, + 992715651411470, + 763101918845001, + 643953806797259, + 1644185285546972, + 1134895242638343, + 717332534737410, + 383813028782201, + 1057644410032979, + 1293110863833535, + 1412477852949000, + 1467723740450111, + 1513761332301210, + 1092896137893849, + 1852250539822705, + 1441964909554873, + 951890974301726, + 859322258683414, + 1524032011499478, + 1529766665756946, + 728972697943951, + 2242885747915946, + 504913510127457, + 1362398309167483, + 2078459561937909, + 1348613814413237, + 1682582957422290, + 1666922822853883, + 1437731225093162, + 165478048418783, + 1028164482367066, + 1772900926051553, + 1109157833913998, + 1773837982728705, + 1690466069212982, + 1477901507053010, + 142770891693455, + 81320703532544, + 2164421084271683, + 2016658432715686, + 839216441734913, + 533828483727436, + 2112187375407304, + 683366751832305, + 798471311481733, + 911385529766861, + 1498172272021877, + 1598064182656710, + 735943494539022, + 1111041356913709, + 1045933022030075, + 411183615496305, + 1845311866997387, + 711118107208995, + 931493779966185, + 714024898321265, + 1593131694610088, + 1400127512435990, + 1369156799142339, + 1794631283333529, + 672117223001284, + 749025155357337, + 2193247000980716, + 797698807487503, + 404543686416404, + 97470631422922, + 600355655196703, + 683026712061056, + 1760728772649075, + 317733937951011, + 231839032789148, + 602675901054829, + 43454119915481, + 1463675062272246, + 1640635401103979, + 1984483074298460, + 641788803030453, + 1343940304319292, + 572573297909872, + 1749073442474432, + 1876155379812648, + 852566975179404, + 1034218286786103, + 585374074304501, + 204426448381632, + 677443714363191, + 207600018450580, + 1945172801048597, + 2003499685356461, + 1544343457470799, + 1099743279478534, + 1519640550547254, + 462753819433427, + 2133160884868070, + 1740847622623437, + 1582787415247606, + 757827952690271, + 358756153488042, + 1410939620163186, + 1994931319438632, + 573209560496423, + 1440049581503801, + 919265884848302, + 269465760178492, + 1367536056931776, + 943273270984608, + 465949119716313, + 2001904392787114, + 1209248295888876, + 1810097495966421, + 1820267587086985, + 2118132770643796, + 704775976511052, + 1025208037397343, + 1569712154788045, + 1148536160560791, + 332028967981989, + 1282103056446111, + 129141041337759, + 1866559962275483, + 1874815811594684, + 859738759123706, + 626532026021513, + 816265135988989, + 175104535510798, + 1407555300657703, + 685815333982637, + 1692324442099535, + 1539730109485983, + 2194049853762602, + 1252085017860717, + 1151444909449651, + 2191249691487013, + 1448197968576964, + 794983979255297, + 413232500515277, + 595794635056341, + 1653180381387023, + 1961825780099470, + 1392173974835837, + 1634142755713869, + 1644705224734120, + 1980930040904522, + 1899966524793555, + 645932234507790, + 2097293584508015, + 691453811276256, + 1505817449985642, + 286877876318623, + 1080713984219700, + 1148008163618157, + 654738066084118, + 2045395368504694, + 1074399331072693, + 2070876735577127, + 1711853344853624, + 761497162962075, + 811886192909147, + 1896561982780778, + 1044773381638669, + 687996251116628, + 933635588886269, + 2238150303855054, + 254467028127973, + 810931449389114, + 73215401687960, + 1706766867141760, + 164423863501770, + 1750164664609569, + 1632425508189963, + 391396602626547, + 1552898329139265, + 1314566765492101, + 1518796106965869, + 1451474758320887, + 1205448171798431, + 2104015718639008, + 971711080108871, + 732896666203089, + 1665010537651292, + 2185772658944047, + 1825338769514625, + 1496208881474139, + 1876413140416509, + 287009040647513, + 110547089472550, + 1344883263554984, + 665751079427420, + 2090723505192228, + 316675508738406, + 1187063600085485, + 539957780112152, + 1971954623183188, + 1125063352629586, + 1972148939726316, + 681295625497426, + 2201636153067259, + 930399559602986, + 1471335888592850, + 8023395356497, + 158810279999532, + 645674513865843, + 1192105882694198, + 1847979906589766, + 2065272145128493, + 124586297516557, + 355232109796128, + 1189018241051207, + 1667353418788411, + 114916129414484, + 1057237516353958, + 1205653877685551, + 1194951928332874, + 1715852426392599, + 738110318699153, + 2056269786303347, + 364017979431744, + 1694232849620887, + 2179925272805584, + 116270791366397, + 1871960122054308, + 1730729599081261, + 1732973183691655, + 2027835397522638, + 1687944574496474, + 2241145653574345, + 2150021069444175, + 1016029300313019, + 1820220965950107, + 641541952833100, + 1199787371967169, + 2103602425115854, + 1740165461770336, + 1364146867414581, + 1790850419992355, + 1990757617319906, + 419402152985618, + 1415579946448449, + 1843635548651117, + 790365604476795, + 256045020208456, + 1007071639242433, + 1957608219761220, + 566787463065732, + 244651058241430, + 1957591133003701, + 166298560780079, + 2114914804519815, + 2012893594010805, + 1063792801354370, + 247371531369697, + 1176719368912747, + 1205355331529070, + 2033376641230091, + 2227704153780413, + 94773280827280, + 2102405499316771, + 1792287977062530, + 1069726619159952, + 674095951948274, + 1156520444158628, + 2092994782501434, + 2233241065489101, + 2198542479231278, + 1112655653747543, + 2121520849195636, + 250540705244733, + 1975854877435129, + 548480378229537, + 1829288985577547, + 1800191999726016, + 607856031569824, + 455766823992278, + 1589293111316107, + 419888965567535, + 736125729702126, + 1745519448179404, + 1122731909708625, + 83148982517104, + 917686010146413, + 2135860423692584, + 523889627781290, + 684980850602386, + 1207074855490349, + 1875650242645103, + 38997454156594, + 929047925666737, + 1702406163264855, + 2171762770276327, + 882388212449858, + 1888057994616858, + 77179644319257, + 179746995920843, + 341490659071447, + 788352060066164, + 997014715794807, + 1453314821311355, + 48296279689970, + 122459736129486, + 1151793273044688, + 1970204968336136, + 2081465018717451, + 1680963640231627, + 1509359148166615, + 595426503114804, + 789279436357038, + 27140296449187, + 244722480052079, + 1230104213916795, + 727523587872205, + 899394514451843, + 1621941903813043, + 416903870986498, + 490805209317043, + 352816060929173, + 1646757378319321, + 439917281961086, + 1539275628723390, + 393494114308504, + 486048443083451, + 1499301267418078, + 739347166302848, + 586069049928134, + 497946366537359, + 1744087380890626, + 345328087900181, + 1164875401808196, + 525347407842750, + 433837197238747, + 1043437583552579, + 1589239253828879, + 1908894841376824, + 330334756862003, + 1175312490742336, + 540718588530930, + 1525237933928323, + 1481017027620698, + 507576743530489, + 1153468476244386, + 1566836535315533, + 1884398940173093, + 1604788563799078, + 1697117353311759, + 794376573693597, + 1533816590834695, + 2019433017759778, + 111366382040389, + 1706255319019720, + 1351034978065207, + 927047957194539, + 488254485745027, + 2129009152124829, + 922836360778432, + 259192553900238, + 1728914705777035, + 459652321230900, + 1615401897235941, + 371523691536617, + 1163698752363359, + 1556427245874531, + 1255350702552812, + 1118102306203832, + 5535659885836, + 291591166672025, + 63145705450874, + 80810704167624, + 503684836796892, + 1308879967294964, + 1774477612970576, + 1083965662541186, + 388493969479010, + 246746273740970, + 1510476712234903, + 276036568850176, + 1144614227179466, + 1427684505061402, + 1182345945357861, + 778044899111784, + 22264811936185, + 1867295086366753, + 1981246536258806, + 1979787424328836, + 720499567368629, + 1562001428915430, + 885378554782346, + 216424292823174, + 1071024719072966, + 1306969102755352, + 233782714801707, + 1286625764457733, + 1984954968878865, + 1779581970741021, + 22888551998068, + 1847122399641461, + 1403818387739115, + 343625838766123, + 1140530704824244, + 638295727111016, + 1749646137982081, + 1848067100719825, + 854455991034199, + 42638327378210, + 1922944647453481, + 1854230856144983, + 1190823420391741, + 2084014790934884, + 146557321629795, + 895750658351679, + 354605733021226, + 524548166583824, + 1465913797970427, + 5088046626070, + 1852122553079806, + 372615841395213, + 1249202057194108, + 1695153843397233, + 1931576610219284, + 1054261081494714, + 1466670214084363, + 558691447534889, + 1300386650811510, + 812317717593491, + 365298559337683, + 412003950518313, + 1577611733737769, + 459984634943813, + 272297016428445, + 1210883755496619, + 2224354991996353, + 1838516048148770, + 730782473992693, + 1588927246854225, + 116004120308350, + 1634586267740788, + 1349156896417651, + 52704574615694, + 1297587688561834, + 990955995896868, + 2224624831280995, + 583249102582122, + 294759264075591, + 906465004287219, + 1001411949679011, + 494741630853788, + 891303356767485, + 885856762810194, + 1455656872004227, + 1953489863045895, + 1756242788706438, + 1206104244717847, + 1609167806366914, + 865172927799594, + 1273721999431694, + 386931134240009, + 1834292500702476, + 1856538328735903, + 1330243266154607, + 80259785356639, + 814187157723766, + 1173154640473315, + 1793398369490634, + 516196004749785, + 1416034383734612, + 1004135219384665, + 1531421064789712, + 1100404150148365, + 1549670264926661, + 309246397074542, + 1552875393481837, + 2087343086017281, + 1528900127709704, + 2165398314891488, + 9158961856913, + 1972345221643339, + 1348606590356416, + 105986785497486, + 1164881896518399, + 404102618961475, + 595803384216820, + 774214807076628, + 508289953451140, + 310675369764055, + 1140819253708260, + 689790329659478, + 988901504684874, + 1962473869839833, + 1426287344295060, + 1286999525702771, + 2132671344526611, + 169446941698659, + 1472622442987959, + 746589314511433, + 1859357488287353, + 4887781042547, + 570301810222839, + 1007308685380408, + 826704126456993, + 1427579294890052, + 433699503279536, + 1950972184284997, + 946786815075469, + 384001241812478, + 2087484610487150, + 287987789949204, + 1267405799323846, + 382231560268082, + 450271537539216, + 420803065481225, + 246439707532674, + 326470349060595, + 1108989942985943, + 984639598068914, + 1161125517792605, + 442229231122897, + 2112634231319734, + 1052444813276229, + 373062036818428, + 1535077457271648, + 2148889914089297, + 283809574801633, + 803369453072523, + 1634914760967332, + 1713368561509351, + 208080530977795, + 108865891270012, + 176691556294937, + 1162699936844565, + 1884634704334839, + 63877379873772, + 1476380985312886, + 1766777704874184, + 794041707652247, + 250860632804032, + 1314278394902979, + 1277670942738094, + 2247660259985466, + 266500361214071, + 810477512871086, + 408620212446522, + 1460784515354903, + 644756125595368, + 2123899445001122, + 347863083622649, + 1465152378185200, + 1065279374491119, + 1437798470079560, + 195877345539228, + 481331328548896, + 402787934335796, + 2047660631769456, + 1484101889982771, + 16509700972841, + 124110562333052, + 595060000107581, + 1682569483778965, + 1340793513291021, + 2131755991686181, + 1083309306870413, + 949807526259887, + 1314331007370083, + 1427467448173478, + 183110929116019, + 942383579383590, + 1339012762183926, + 1203405067792587, + 766413559071960, + 2194743298273353, + 1745482880188768, + 1974349063912383, + 559612502719198, + 1125411674167312, + 990876712443891, + 1075075804170988, + 656465049838410, + 1418445005143821, + 1232679044453237, + 783120716575472, + 2229850862177499, + 766003074763397, + 1461432841552701, + 2032124080554690, + 173788925549742, + 314290613039343, + 2005835734192448, + 224138538044889, + 2019039771792792, + 193616750230495, + 2197959263396877, + 341160035677637, + 1864642713023334, + 1808073637357514, + 1672528263542470, + 1783076330304424, + 564450113584828, + 411286764490711, + 493395899083006, + 1170972593632354, + 639920044422556, + 352541085540060, + 1960418744165080, + 1933143545972210, + 176516004340839, + 1638246695670663, + 250902478268581, + 1940514753910238, + 1437686764014083, + 133700599638782, + 2124868727326390, + 1646537700890259, + 676329342632202, + 781197161323610, + 1687431500807279, + 1198025851290411, + 272237112364313, + 126775182687090, + 118083263257824, + 1672319164016744, + 513348754096580, + 1227495256986607, + 623261533739680, + 821557598551837, + 1300235955884399, + 1847697980263914, + 274997595143019, + 1835640843347866, + 711200556881402, + 802494891634840, + 175887102362651, + 1371284980521008, + 356889837329890, + 426998894691447, + 750882600917670, + 390780903491512, + 492607267032026, + 957348614716662, + 2179086195196653, + 674670352420971, + 685284541571234, + 1397766337906270, + 2075582562376418, + 1964065758158614, + 1960246167855348, + 2213115276448829, + 834121323699750, + 557344863325872, + 517595926659990, + 917254635828342, + 2183573319199449, + 767932112698422, + 1661982061247868, + 203872584410278, + 2173338106661585, + 1872209294201537, + 2097436968599731, + 1721981738322445, + 911127410034820, + 954424727931601, + 2168561097228089, + 1458512050793477, + 26878493930092, + 508193970697557, + 2163140062004368, + 1701098142836890, + 2070054853040110, + 2075805053097206, + 2026490849151168, + 445227884801634, + 2094677775031039, + 975818296343097, + 1574334094482250, + 1505903096935415, + 1358360118375288, + 655032144871037, + 1697095244542701, + 1661839246588305, + 1717382221811593, + 809511191498488, + 609371072131323, + 1650523295281382, + 530007392201873, + 1570334059515082, + 338136372773505, + 124408090168291, + 1668573755331477, + 1848896175648848, + 1480431802827960, + 420478121853586, + 2014134004313935, + 1628900005002747, + 1325014753699278, + 404416746618059, + 99043868565060, + 655135181271752, + 1710775533251876, + 1432051119378095, + 482855163087632, + 1659717080979547, + 898594077634880, + 1499788423340197, + 19127101025181, + 2085250425613500, + 2161881899779406, + 2210273409662877, + 1629569549965242, + 430698322463543, + 1251933300869638, + 762732839328855, + 831505430105939, + 1667356678067483, + 2155349398787739, + 2019085634578317, + 1750957529105349, + 1907444757638352, + 819912786460443, + 290292807885633, + 2114172052178306, + 887451526778542, + 277190934939863, + 717161442606171, + 1102578486397967, + 964307344334230, + 2055869370635393, + 1423995800541617, + 1940879334806068, + 1897023835064484, + 1824694576047968, + 2211509272777888, + 2101723406612720, + 695428891794680, + 1000130801696783, + 737855537329376, + 1673624099100734, + 684533318338223, + 246989066717716, + 1309049553824043, + 1238869473793966, + 1459761825454503, + 796663562664230, + 1931267088039428, + 1728279842224626, + 893773273048654, + 1345569528190500, + 1784762307303026, + 791632917005833, + 7536641333223, + 9495081657166, + 1298570392790217, + 190756900584188, + 706702097962124, + 1196243043292015, + 570203557164911, + 310762288897964, + 78547769386725, + 236262188854691, + 1533079559264807, + 15241179430456, + 711599944714482, + 1380465231726956, + 1620224088209112, + 1614907110922908, + 1219696053270509, + 1434803258612953, + 1556406000767729, + 283647170431839, + 401723639919864, + 1105092682098384, + 1275375444005095, + 2094919285220317, + 2088205805765126, + 994473484790594, + 1785836555018914, + 1462837508370160, + 762695078739215, + 1251104360816905, + 1898486333799803, + 1470619514369524, + 1504368155821264, + 393846301336022, + 1142058818866615, + 1025007408780007, + 1828919811727317, + 850305433220610, + 1011437428672204, + 1835445583167371, + 723131969305298, + 1922424844478893, + 1134224963954545, + 984578545049981, + 559186623048929, + 2043168806720027, + 1234198647086725, + 704323333696582, + 952267322091708, + 399791169758350, + 340379817671400, + 1193254710331638, + 922655479081758, + 1943684945584649, + 1256857138839136, + 892319318346669, + 10639266628036, + 1067340091975212, + 1097817699683111, + 1241893768484091, + 625687489444558, + 1775745651435048, + 1673930932157117, + 896690089476677, + 1701523851017219, + 968827196881944, + 1566252699791350, + 1924272187553905, + 1477067440296759, + 693215604800778, + 86506751588752, + 626935492307831, + 2021939559998654, + 1475831932351473, + 1585614881164353, + 1342280843438632, + 1447469846370797, + 2093986006579164, + 2040694381983616, + 1111765353628342, + 1513571306606444, + 1895591189276022, + 398053992695234, + 368340116341496, + 16187654514398, + 1268197628963187, + 963617759041407, + 1864484253104619, + 184878181923622, + 2051600119654903, + 1377816126837558, + 620082894820170, + 682749611581912, + 958546290379460, + 30303714943787, + 955868882860389, + 262464558786607, + 1947355964609810, + 125506291094181, + 1511462231231700, + 1204792445102888, + 1084948965671847, + 1172125477114955, + 483732337263583, + 1145437471887442, + 1986558139950464, + 32218169153146, + 1419235999448587, + 889572605860741, + 520993334642559, + 1136222533391131, + 1758801365683161, + 2210414897575111, + 463253033600966, + 300072750745751, + 1659125980401316, + 767085083377826, + 449008479624571, + 956354027657618, + 1803743454676509, + 1987223108278802, + 1925575389381692, + 837487182719692, + 77917027499663, + 273872363341668, + 453190208825821, + 1631090088641873, + 1738379471081963, + 1478304427493802, + 618972069157640, + 1247219627971429, + 1256342667234961, + 2016309843493228, + 1998099384487392, + 1150447785633078, + 889011337557862, + 137040906486934, + 135528825348783, + 152994003006640, + 375317780680790, + 1538087329734919, + 602696348346218, + 1085046233228382, + 2174259865408317, + 1779577130903524, + 1083409076135903, + 1171225063224759, + 1169222049990592, + 2075220040679683, + 2087805828204828, + 471144135195442, + 1999638131178978, + 549642538402606, + 1829940970799811, + 316418104573493, + 892889667608712, + 1186391549248093, + 725566026395352, + 303950244274174, + 1343764862076587, + 1771639898802374, + 237197544805704, + 1470783064792857, + 812338973318010, + 77638353894586, + 815517898219137, + 1523941897839205, + 254830187320060, + 2083910660506122, + 1798748464561095, + 1830662443760201, + 912064507610404, + 1887096913831893, + 598629630789852, + 1494138571019835, + 92851367911716, + 1655833829462760, + 1622154520549472, + 2160257161360452, + 1229850241485234, + 303509640348375, + 1229103667385347, + 1906755261389569, + 1884881067906946, + 668595683854727, + 1786282707797169, + 560973730776772, + 1528123495077145, + 2114470163705797, + 1082715665671577, + 215484690410486, + 1594375048291991, + 238605569846413, + 2219316216787323, + 631892638130358, + 1416660157206573, + 1443008252258199, + 1655574675127083, + 288179251048724, + 39988432588343, + 1955778274112873, + 2237235504975551, + 214300044132756, + 883721358776047, + 611857941684898, + 435459069799796, + 1689745584783454, + 341012256871915, + 1000951657097494, + 529867004030675, + 1266768941820205, + 1826642611700644, + 805798073193465, + 1660389568913977, + 2145434534861316, + 670255448101684, + 154772923680045, + 40560516307459, + 250613896906092, + 1522673537602300, + 2143468949448695, + 1900945177055084, + 1869484590114891, + 752216436785898, + 1052385730202986, + 1893960129516637, + 1700000580492721, + 1987843936649458, + 797207266741200, + 678295884173235, + 1779508139222604, + 1065088043345013, + 521667838134751, + 1133450571671137, + 171588881772628, + 1492074017570243, + 96126319951529, + 1270927802100487, + 398797442427096, + 2099969870800817, + 1665223338365630, + 864400809346082, + 1726937826913478, + 960139334415835, + 1022914188741959, + 2098764667345415, + 757771488267193, + 713068377543813, + 78990119478542, + 2062536585199554, + 581633578430755, + 998011955437995, + 738225378112097, + 1053262430988684, + 1812677650415536, + 1957353519080806, + 277211783534541, + 822882812521016, + 1489152341446931, + 2152388278215843, + 1530116987517606, + 363794990875740, + 300780406311855, + 5044432831138, + 1459364687024672, + 1799168708097592, + 1278548364814633, + 1477793026546374, + 2250305878946880, + 1156836897642480, + 710545852469814, + 627692035929158, + 679298834514893, + 591685942132266, + 439974726263368, + 101497476887979, + 184057949428472, + 1331442692834897, + 60091156210798, + 1232325682695135, + 809170166044627, + 557358308241415, + 2236416930584509, + 911808909775042, + 837916817185072, + 2209936553175039, + 133714502252856, + 2103225369857255, + 359703899411247, + 193613810107591, + 1079499957539881, + 2169127762376137, + 1970461268842991, + 1328839866594727, + 1415336871807392, + 1738726146699572, + 944193423682844, + 1441524723226784, + 404123402998958, + 1473436750321902, + 1856979417016008, + 1697058283250158, + 1758635358366651, + 1226877365524412, + 2171177650819194, + 232988764403048, + 2110581299682480, + 722634395931445, + 2117496089978066, + 376753647564784, + 2203576211426816, + 486013096111976, + 780145425299315, + 710239220345373, + 452852198788097, + 1476998432020367, + 1747199377921217, + 338624419614197, + 1690942288720027, + 755572281171446, + 72347866994125, + 793079832255978, + 1301435531447630, + 315297309136236, + 775272529570621, + 442655824649023, + 1790984228303307, + 1380614740584470, + 1491805851824023, + 1946505613036167, + 1938888836771975, + 978323155670737, + 1077889246369316, + 2075879185318017, + 1619053309519012, + 2220064395927753, + 1681078689199209, + 810134966653317, + 500210547675797, + 84561778560057, + 1731382161224731, + 1738400427048823, + 1117345455592313, + 1982471089310621, + 1543858900486636, + 1844938702422927, + 1019185700672213, + 483771391633211, + 2076131819592705, + 675583244528606, + 1159175517784074, + 350395340934992, + 772913785177878, + 1529070239272345, + 432701544789349, + 1909963141379638, + 2121031380877567, + 1501349732564448, + 795866991518026, + 1270173081842337, + 2071490126118474, + 799959686235561, + 939582026956087, + 1564355172601641, + 512279969535027, + 1626404173927863, + 2241055378755556, + 1972669977387958, + 71045109600259, + 237093407302788, + 533845455448402, + 429992133116183, + 1867452624714570, + 1460560313245542, + 2207642448254306, + 338953495202294, + 89290219307401, + 40307886185486, + 2015062137906770, + 337756411429927, + 2013338417281884, + 1114840078796985, + 2169046598857945, + 450258878469384, + 2156083271411491, + 484944854612625, + 1088426087871904, + 1646903352032324, + 634087701786621, + 222534187596986, + 1584350405803342, + 1177348858470084, + 2136906148257096, + 195431045127455, + 692419028852112, + 1066016641454397, + 591374854737783, + 550298483171437, + 128361793356574, + 1599349413629890, + 1320503726153896, + 2079121167846808, + 482948547215267, + 1756000717445426, + 1426779485598727, + 288517534350985, + 722636700435571, + 232555854934189, + 1436341390127922, + 1529511642788329, + 2060149726298541, + 563489655689829, + 865502268396385, + 1664680176824684, + 1413674564485075, + 1502628451294049, + 1402864700517183, + 1995618867943186, + 1382158329146693, + 902562252788353, + 105677197955319, + 695969646287500, + 1724989188765559, + 1647623336100242, + 949298937989366, + 436573249359919, + 94263259753846, + 1167889991976769, + 1475939159509927, + 450103156752297, + 2019733342345111, + 226377391887934, + 1336818471662564, + 63796469219652, + 1716552938361315, + 1076263057202774, + 263592748453821, + 1133118093223324, + 1670515813308185, + 1549304386671334, + 1605925026487247, + 1023135026826643, + 1402344384975138, + 782492612853779, + 1077830867181566, + 1779465142565975, + 2093641927528148, + 2084290020934803, + 325571910124133, + 406671394399745, + 1263516603491669, + 1058699847629321, + 2124198477248110, + 42994492233998, + 943938813749930, + 334385900762705, + 257825095209772, + 1170009120655961, + 94305034210731, + 240247196014827, + 667269407180862, + 840762704102426, + 1961931854401679, + 605608471717254, + 636005592907688, + 2032691261240004, + 197331270625936, + 513295656600691, + 1560340121332628, + 1608098078706764, + 1840842058900809, + 462575724806118, + 61958761134339, + 1114782483068782, + 1780820853428651, + 1927727212064755, + 1110375874071092, + 612804891712117, + 889091875129392, + 1238235102721202, + 1833499795172580, + 1266198079326822, + 2223258888079030, + 2187647804135062, + 904899467172649, + 107289422114745, + 336888176891353, + 208496417073510, + 915415109006994, + 1631323743608993, + 529798469162737, + 1435907549686007, + 107683912129086, + 1713766766033240, + 1532740934484973, + 423229651770285, + 1111077313875399, + 1589360056500855, + 646967569975160, + 326866932347675, + 1447813227502849, + 85523610875275, + 821386659531724, + 1007057968031073, + 1663995972887931, + 35302782179715, + 1990790266548111, + 680436355381996, + 1993156454258379, + 2130717986801608, + 795555733542704, + 20227279292638, + 285921384720079, + 608881548184620, + 2118464215320799, + 695692130979641, + 1486377757516707, + 343724080930301, + 1169939489828691, + 876699347859259, + 878104207599136, + 645274190254079, + 1443181916381158, + 655904540032008, + 926684107216226, + 1949303667262754, + 569014182333018, + 2177702587728188, + 674543705071358, + 1854693762142561, + 2034218619988743, + 205179143608193, + 108716192417141, + 1921428301523177, + 1775556734235472, + 413964805643909, + 764481847755955, + 2218246781335906, + 1171313968914014, + 1988668563364570, + 1580701482843434, + 291495839391159, + 1447732779169770, + 1456671624045911, + 1815405489156998, + 1520446078757071, + 1964442489284656, + 548230988268188, + 747317165704003, + 1136317249130792, + 747937570652925, + 2092430764104070, + 620687505543716, + 1299721065292777, + 521902537648570, + 173794717576122, + 1149286929251272, + 671531102726404, + 2163037648081292, + 1584740742255084, + 807091226028353, + 2220577984545312, + 134651778500794, + 35176581978343, + 1398028931059852, + 765285341042567, + 677521335874046, + 1334560804889237, + 803825817429366, + 135627053327719, + 826286665662941, + 1085244117486520, + 2178714401561302, + 1691335403924664, + 2248195555747426, + 1960543682198734, + 1475624912310341, + 774133379438783, + 856610261938633, + 315308510079525, + 967917847971417, + 1258425065431418, + 1755041477204440, + 1122281640045989, + 853535078126058, + 1619817871567221, + 1038899553401954, + 1897966885507794, + 652812368489325, + 717538291260258, + 1760490257193751, + 2131696378740913, + 2021398693397141, + 1137100825338841, + 713819752264432, + 1342306893651217, + 2016452269703293, + 946574787999999, + 2212953289509802, + 950911245659031, + 259978925610960, + 480685442767534, + 875366833782357, + 494095979931320, + 467099612799796, + 2203435755272739, + 430434453940191, + 1145904482841112, + 1287348619675565, + 1091406395753603, + 247436727176861, + 1604998464826876, + 356953692114827, + 1739378718801010, + 1098592683148245, + 109711691185570, + 2115588689508249, + 957722513763720, + 1321541042745955, + 842058111811134, + 343811401212495, + 1279519958410087, + 1978170993661545, + 1965397568344909, + 1079001430372717, + 1119695131812102, + 81263996536748, + 1605949570006610, + 775341775958833, + 1673035427337150, + 1507255071325161, + 1855330835485449, + 346338317758571, + 2118944887086457, + 1256904982284317, + 2240668728232257, + 1709665491068873, + 1920725402530457, + 431852826303850, + 1149049861090699, + 1198134016197964, + 1417864571623891, + 1612515037944791, + 161916754104175, + 687845071421460, + 1293135716248505, + 1754915147498238, + 1873458293376860, + 1205095036926621, + 1783223435088449, + 1286118629738587, + 930364621902372, + 1054917495361047, + 112848903395021, + 2128862729341973, + 445799600895729, + 1209014963489803, + 2167506950844500, + 251007667297344, + 967629142306012, + 786133090157531, + 2244808975958563, + 1954813431596179, + 2106199834567394, + 1561710050260555, + 1100181294001131, + 1725349832609857, + 1589362073958486, + 1954746818854537, + 1972899721901185, + 1567669309567228, + 1963389602566667, + 1206333621620506, + 1596808983784864, + 801545525125383, + 539625996126806, + 236830392880017, + 792186164009472, + 573358331129254, + 1692438799246052, + 1451016616483028, + 438803499618675, + 1611734394815631, + 1272031296868253, + 864126904599732, + 1125562673153675, + 1296645477347229, + 1124187395690655, + 415008727302722, + 2224272655664847, + 580210061171549, + 1146658612551001, + 1175140365265995, + 1742876518274353, + 1579257395370338, + 1039512548839725, + 956411283393986, + 1503379490710779, + 1109345889759872, + 1372684822120794, + 825925267035009, + 1983178399667824, + 1896032162464731, + 1725954465159024, + 2189937418371774, + 738093115936925, + 338563566486509, + 1457182062606598, + 2162363195647307, + 217019145671381, + 140041630933148, + 404910887039739, + 614560535650274, + 225015649590387, + 260286479494064, + 1330152595463892, + 914368697531845, + 1912667947906532, + 1274053289733654, + 253021075396156, + 2059877453993281, + 917431282784698, + 2042746505231590, + 621987615231101, + 1508637301144727, + 1884683164304796, + 603896854695826, + 581687620594233, + 1272045660591537, + 2229395149957937, + 349598748707871, + 1454544521534142, + 1536508877237654, + 1790531453616148, + 784836811485905, + 932740129070453, + 555603407894076, + 1825758522234323, + 202643506380177, + 441236705095458, + 1169232831261755, + 501524406308710, + 1016953162676532, + 1316847277035487, + 367148790332068, + 616466691289459, + 179916606578944, + 1043705268726067, + 559480316754446, + 625998043959953, + 1208651818598864, + 1327830468252594, + 2171494676163338, + 222721820608070, + 1820163951226254, + 2191365226953521, + 2084320479714331, + 1289659442423612, + 683249699839753, + 1088981062246560, + 854139350308907, + 1171528317977033, + 1379415066602318, + 534052843837949, + 175937019447873, + 1268017967198222, + 740152455351962, + 503670160078366, + 57005805693337, + 1144920777652223, + 1610388728659156, + 972358104815605, + 294105346657132, + 403708384341721, + 950156589744080, + 486452124897059, + 2206446974536998, + 412423087928577, + 574423936224466, + 1717892575335194, + 501088951587306, + 1229918175598621, + 2100182069147592, + 1746040488853905, + 1055150659294022, + 205931830705818, + 572070284290112, + 2102627840932075, + 1042625956186330, + 1395425668564751, + 956723787498612, + 673893058206867, + 1509326226678813, + 697860033346339, + 1012027816426265, + 1184584913865939, + 1528354545802174, + 197850814327907, + 2032268556017470, + 2015413980728615, + 764110155186341, + 1469510531404416, + 1568982900858571, + 2219894850401805, + 1530246591892843, + 1949150110182150, + 2077289492683114, + 185428757312886, + 1495781603713048, + 1364268560247971, + 43092780399787, + 578963373268612, + 1400307329811927, + 779922482790840, + 802576530544143, + 154860693106144, + 679326562434689, + 2095562200560647, + 581753929933113, + 699105509546808, + 1856150099332853, + 63230268914058, + 144846275876885, + 2212026483799676, + 663050209659130, + 1826771298069077, + 1122193153545508, + 939352245237852, + 39541268257188, + 1011564415779340, + 2223276067320127, + 70976814038346, + 140825085838009, + 675002218252102, + 1248965506855913, + 2014359221544349, + 2167180275363181, + 98021861821739, + 1417369392785740, + 2085141850144362, + 1801380083984143, + 2018011609172677, + 1047366908261377, + 1540999004447754, + 783804023191364, + 1225513726216500, + 95859904040444, + 736298948755886, + 792249279263197, + 2128994813166788, + 847321330313797, + 1512601190381581, + 2144610156507037, + 872318929662915, + 2039461726038750, + 897805900581005, + 1597307324697328, + 1780428997124496, + 578494406424288, + 488459327868728, + 2019514870616901, + 1058397626603802, + 959965837336040, + 1084923667866677, + 1874275106919688, + 1608665243977335, + 1261378403044767, + 1841120369702905, + 351311500380042, + 59040296383005, + 1713799220451886, + 264944823773764, + 1826002404787695, + 930890807128277, + 15803235711366, + 55367894050916, + 365932803769317, + 648160907218515, + 123099714293438, + 2058020471236605, + 681660814267130, + 683770995078609, + 800458001351654, + 1191311497779426, + 1038012246465924, + 1414695268368371, + 425495796972922, + 699877224006658, + 1825884180914836, + 1997603724036557, + 879142235017656, + 349819824986449, + 328079363040665, + 194806282866458, + 626987545448166, + 985729327461685, + 1902262125884858, + 182839837732094, + 941587538380802, + 2034347845476744, + 21708719731475, + 2015799118584789, + 776024463434655, + 1019598590731068, + 1839277465091360, + 1525090615344435, + 369738468600396, + 17733233850303, + 1309067113935528, + 971918601698852, + 1944829927776128, + 1887610851522903, + 620653207596893, + 1488628532473985, + 1365390118119522, + 587699399785754, + 1278949157928500, + 1766975022624648, + 10853250564942, + 1049798965566456, + 1772870283646699, + 2128313857735317, + 1282881254472781, + 1550120661345223, + 601900314308513, + 683260531167120, + 989363210006189, + 181355591674059, + 1099732509823466, + 1494854725329880, + 1032837777897856, + 1996041909832667, + 1353778011030755, + 1281039698738956, + 1497947780198673, + 1500534987826277, + 1843494019174038, + 287429054062537, + 2246565342595906, + 1260131838482613, + 2063026349976660, + 173322926390809, + 1231283603351529, + 1788291216234358, + 1325496138212861, + 1636426404321672, + 1878214861657628, + 1919275361822211, + 1010983846687255, + 1094768564535777, + 1858494098311669, + 539965234778085, + 111691099697439, + 2190591373544072, + 122004034950284, + 1201657296794036, + 1693153258887820, + 508674194103944, + 874801987291031, + 413469690635355, + 1558098997023178, + 1768799728973565, + 1092368134492853, + 308185773384668, + 2158337555323922, + 1186839375501882, + 841758798779519, + 1175400841878246, + 12262207234743, + 1966265474379416, + 415486038001184, + 155931203037309, + 1351445343313165, + 280116889150184, + 701391074771389, + 1264451744474358, + 770529289648320, + 1418826301046617, + 678442580047708, + 75796841289135, + 1360806569103562, + 41544330330215, + 2157610298265189, + 497598574491414, + 357903738667520, + 2090137922564756, + 2086480312236661, + 419055984129041, + 827315159988629, + 285434071399602, + 1682636368567291, + 343218703845743, + 1697486579711350, + 2096940310375245, + 760670584160119, + 272735515467664, + 371411758646980, + 428252304742253, + 2120910184071105, + 1205668570669389, + 692969846984450, + 772591503385732, + 1398934760945349, + 313461065559119, + 1896478103040502, + 1156440544467936, + 107766000699741, + 1908205347493149, + 194304256422453, + 1739300310941876, + 552143487560555, + 860766893167856, + 1812927345343786, + 834808087481318, + 893995103955088, + 2034364094080090, + 1801687172372595, + 794255445276253, + 1347284351099271, + 1571681604265597, + 1432350276998022, + 418595165452616, + 471104930317834, + 1530536408585646, + 2040077494987621, + 1333218545252687, + 583605703177893, + 1172826015220296, + 1674327326903266, + 117203671940793, + 272038835085649, + 534085056015829, + 1643361780425775, + 1634187655178674, + 921703284411898, + 895288815668274, + 1340741701187216, + 829519917386679, + 836358441426712, + 51224227690039, + 1780383146407165, + 2054592769222841, + 398823678563552, + 1549999718508094, + 451671989747634, + 637948517295113, + 1513780832730524, + 1659506640196712, + 1264232874930927, + 988049141445305, + 187525957787060, + 1286736912432754, + 355476087864380, + 1379402123216500, + 1226622472387436, + 327162504416888, + 89162291940000, + 1088014914680316, + 1580548839494382, + 676472690047601, + 1508198985415652, + 703814167016493, + 398721534910968, + 2172255509086604, + 1321304601540399, + 34346769473971, + 1538564388306717, + 1956534800105569, + 616333054701073, + 1518387044185840, + 289568212361016, + 1775058531819410, + 715983062079897, + 1527748642018813, + 1579663183520585, + 1510217900626426, + 570312337477030, + 352442154949831, + 1734654626108485, + 1894947597512518, + 562031068798658, + 507105156533859, + 1010343150732678, + 1986773362523452, + 1530180504450454, + 32081571198584, + 246878562765029, + 1213667198934805, + 1920616273225657, + 671500032342848, + 1344664320947344, + 537849827551039, + 1823575322289061, + 648115835453213, + 759325901732554, + 785740971584487, + 1615725079080721, + 306345297110852, + 377987136208425, + 1713521704550698, + 203371197767066, + 496409198534766, + 1277303937741481, + 334971637883839, + 1736629388814993, + 2156425496382470, + 1631508904808728, + 1271079349696470, + 553700281304885, + 2102263984794873, + 218949782372019, + 1630927452362327, + 962376931831807, + 195401564682592, + 981103333476105, + 2202745118799411, + 1870941869529751, + 861201918079077, + 2212712709940361, + 1894897975321094, + 923722473684577, + 573301307617513, + 1614086155009315, + 744433798563916, + 1426148890489345, + 98420797976220, + 600078286899187, + 1490111023314623, + 2215722607341462, + 185235595723201, + 518533657257042, + 666426450533644, + 140223554530466, + 1939882764277787, + 1715300518723057, + 1698676564706873, + 347236536022950, + 1189942541905841, + 722596534546326, + 744938992071008, + 1913784097634324, + 1164043569150134, + 1171829128062523, + 1901035795755905, + 286092533522816, + 1877621277225764, + 421115471046525, + 375376956380298, + 1560987446259364, + 514549824917865, + 992880393467036, + 998066623243163, + 696698933378004, + 150294912475229, + 1519637719479479, + 1602183415167374, + 95689579338997, + 2037172768612482, + 458755873115738, + 721445420482816, + 1258021927558479, + 1107161298417931, + 696170369620480, + 292732714999116, + 1959256263841489, + 902923352928186, + 1766541466882893, + 1412741563184046, + 1614323203134112, + 2158933098936751, + 93465703317348, + 1868256520539990, + 872316214145710, + 301740770999565, + 1476110096179856, + 723394666794327, + 1459758543561519, + 2177652587769470, + 469628045418244, + 836290833971701, + 1346239927539915, + 2028528784670696, + 1334147810723932, + 646175534136241, + 1661629391906102, + 2126660652547641, + 1348096089616757, + 811159209464500, + 91826615119363, + 560417110310099, + 1170741423655876, + 49800462037626, + 2029509788561056, + 617633438253345, + 1094142216793784, + 1883333174180648, + 1608324234448425, + 1604942178582213, + 157153870116035, + 850547252923416, + 1537234210948130, + 2230512170539213, + 745098698680169, + 644888274041801, + 258704280476796, + 1616138007681663, + 1364991181729276, + 1054737539338484, + 622749081818631, + 400266567601623, + 2035552453933268, + 1534387902673746, + 1231830893707946, + 269044539857080, + 1696387898419597, + 1242734838751815, + 1169546641313434, + 1377876538082754, + 1176782956404693, + 1525398272597526, + 460840520439709, + 895615201952525, + 1572092158408675, + 1729991105478895, + 1958014647452720, + 2015631891341825, + 756843127401424, + 1623842746876249, + 904263326706532, + 282177530509279, + 586333755465877, + 1743198113428173, + 795809752499259, + 2023696330318979, + 2177607182854508, + 1649274594792055, + 1939525257259198, + 1105385820283247, + 1723484056672128, + 755157584607940, + 330975757127126, + 186992482794029, + 2047368986633825, + 1777846124175468, + 2125676806027904, + 294216877916276, + 1651347274765115, + 421470829242217, + 1122081591323831, + 897856529452235, + 740555054129354, + 2017233989023715, + 1569432879253182, + 1070779357309368, + 1127213753619872, + 945592063513560, + 2102298213783720, + 557793662987315, + 1940762391580351, + 2012517721610960, + 650524837888927, + 21325773442099, + 411812483610810, + 1755866805741134, + 1711446689575691, + 904686077794486, + 2248766101495635, + 258464831772240, + 1154214783964045, + 814316754398855, + 725368467743790, + 813398862284365, + 1925883984467348, + 987027405840255, + 2045524000532712, + 1588082837838024, + 1516681180544937, + 1432104846103963, + 949871073371276, + 476637055867834, + 1229968779631178, + 1622161152978173, + 1457708650354931, + 933754006711731, + 1051171500163394, + 509381578887589, + 1469274538242454, + 1431512821607950, + 259874695971129, + 2098673553301711, + 1389650167539446, + 1574844709368435, + 983393471208129, + 1761566187171162, + 1982646423166479, + 1835640752707327, + 25436490652817, + 2207211393595567, + 1042045170589025, + 887569254173476, + 230105135753027, + 563197866889195, + 342718541734447, + 851224351450448, + 359977020690702, + 791778533285337, + 536481413166757, + 1428095817731018, + 1786354816753559, + 910945666075212, + 873010474819622, + 513033371591597, + 683297153474797, + 1945359441017026, + 1947932305692399, + 1549240681947424, + 1549479331257219, + 2182817525264314, + 2130207402850088, + 192206665647616, + 1902840004458641, + 2090623600787202, + 1185401088886457, + 627663009322616, + 599759289769141, + 73866992004207, + 653859742912003, + 296399123845723, + 17716232469929, + 1079659548525126, + 945524180526709, + 228395217410413, + 2056481287233775, + 1803364474203429, + 801314088732758, + 1069601619494782, + 610707323286485, + 1199495404658603, + 1458826768253974, + 269370513831817, + 1421706016075194, + 995880463266485, + 1664525268749336, + 568278316900994, + 357449124128341, + 1089217375695219, + 1621772699730937, + 1239042768132973, + 592688604456752, + 484891943974406, + 1902795516116050, + 748025503798792, + 1825347382561937, + 898350619858290, + 1838209496261260, + 1633278254579484, + 885986550352767, + 425071373695984, + 521388220388788, + 246141018984028, + 1930874265159458, + 1609902356817764, + 659116875640835, + 854872438004862, + 121741932956675, + 2171206685328510, + 619477114474860, + 578897513342030, + 1860563430232101, + 117561360930803, + 1933666102170615, + 565118666147709, + 705741789777608, + 1855574424606944, + 366949272373232, + 187539105272123, + 1348839575986688, + 284355924412549, + 1737521296514463, + 1133650446953579, + 2203241217906365, + 1801307871553276, + 2213543384466078, + 1586266055868232, + 18625201303667, + 2141710296802940, + 418977739887080, + 675773830799218, + 2084671377194807, + 563099922247250, + 1848966784044399, + 343974290137681, + 130030422704411, + 423628605903009, + 699620227200400, + 546681717102268, + 1431586933738297, + 1883845240261838, + 1490610089035978, + 1184205272252841, + 1200230408496194, + 446516136667322, + 1149897281319363, + 2245498643116415, + 546605484964330, + 2108339605440717, + 942925049251090, + 2130060209723129, + 1974085250463180, + 864404504270239, + 2010266478525296, + 450511159423492, + 310545455335908, + 2109880169245490, + 1913704057094277, + 1565297716503197, + 1927895006027771, + 1419061509792241, + 1446594703307869, + 1362069504843250, + 1677430936478969, + 512495370393061, + 2250867738033555, + 1403685857030230, + 1967088482332648, + 1411691713903971, + 1555214440710957, + 1706405402432597, + 1119319862611377, + 1712119718415165, + 2026470770080477, + 839885567645871, + 588951858676076, + 23053313652588, + 1168664920372337, + 1175851031019112, + 2019849050099843, + 1497771896110769, + 1761737778971567, + 2193687936238251, + 1171630706967225, + 946130295042678, + 1379465329580800, + 763010847716399, + 359258317943571, + 150133846358247, + 2131024531931911, + 1937024559774055, + 1521473767004340, + 1565178025874207, + 340963256853094, + 2166820928532425, + 429056051617237, + 1481584957970510, + 2027620966658972, + 582035519577016, + 949871684705562, + 753661507106306, + 1943292081226213, + 477611756950731, + 1750929390538248, + 1190957963498324, + 899556425423692, + 253119069730188, + 495090765444668, + 971028059712595, + 338639750285224, + 532973017411248, + 2102962461977355, + 1083461755699982, + 1048250482614718, + 502409108760716, + 19681488014477, + 54088540310444, + 1610649393762203, + 1467730782263453, + 544046740425525, + 446848489924747, + 219138422410967, + 1333191184715771, + 1059270294898237, + 740862831433502, + 1953706241237326, + 1381428739674815, + 910137620593193, + 1074525523704321, + 484141146966624, + 1115662563454570, + 257734500281818, + 469545670991146, + 1367030463070499, + 494480753752923, + 501846538753073, + 1923552114846238, + 2233551352621964, + 1299183605223156, + 583137307396903, + 1289340546329377, + 927586928815565, + 1297443341708019, + 1939060815776081, + 1131723328780462, + 2130129613336314, + 2193161347064151, + 1158934204373004, + 2165759269021088, + 1546333158153167, + 1928195711197390, + 1894834902499338, + 2042657699936941, + 1098638753787980, + 223586524541770, + 1505580617431065, + 1202706208236358, + 71650070448043, + 563360008966053, + 1460673567231153, + 977466601266865, + 847881447667045, + 876781552004632, + 2055732136878151, + 1546540309010355, + 1875297995395300, + 1785859771047053, + 761496915874572, + 763987765674335, + 1116182300986860, + 172636724024370, + 1716506187017886, + 598236242625861, + 296480598621975, + 818023116821466, + 1505198185223587, + 1935566532240414, + 1104494984692907, + 278449763075708, + 1293633090652115, + 1239638264380363, + 970731418765706, + 1082538616179086, + 1250708361245995, + 930789526238132, + 775955337585701, + 1083774418398882, + 1944408113596470, + 2118753357065350, + 1176871704095843, + 241401811385643, + 623764502436132, + 1641842325667079, + 531590092570360, + 1795401062911425, + 1786862232205213, + 1683648890946943, + 2140602846636891, + 34786843538729, + 26774124277180, + 1000868279412725, + 807905019385781, + 643359015890184, + 1389643663678356, + 684353078489377, + 189950430397904, + 1242036561145992, + 1950891239038539, + 632617009848902, + 107164499255727, + 778453485901099, + 979063391072485, + 2111176114831082, + 558270331279053, + 1894491286934179, + 625847625149468, + 1390508438578394, + 572613458917156, + 2208202099916720, + 827838688358473, + 346318849848471, + 633449430635522, + 975231015718976, + 320328042870856, + 1259468809015249, + 2147631185892444, + 41812312102382, + 401404893580056, + 1342109151189572, + 1961845998085600, + 1944193726047452, + 358105862752428, + 911249124245277, + 235531705310886, + 1462836461569466, + 1381590977955769, + 1386485196697614, + 1428618249036705, + 2153438961178875, + 1770935666826762, + 1621831919098979, + 1009311328960623, + 1839288719007140, + 1109742390497958, + 594791284706274, + 315517501452171, + 1972740642195381, + 974950830975471, + 478832209304900, + 560800109180906, + 1140921918055955, + 1156486717318624, + 328636385539241, + 1503524631855129, + 16173159997122, + 303658873889713, + 1643008956631702, + 716000835623883, + 423950614701377, + 1361664554289091, + 1815039480739698, + 2017463554677654, + 851364468484832, + 896368079412624, + 287459942220769, + 700863089985460, + 184146905982079, + 634171742394642, + 477033657960189, + 227038922200981, + 1817816413999942, + 947204683798372, + 423195408657707, + 933854025281440, + 326040381479301, + 81222954973014, + 434735814565402, + 1350967982854192, + 1942197324333847, + 1901007574670371, + 1853039344658716, + 1123608690816603, + 866918143603642, + 1323488280935231, + 2088611849093303, + 2132476680432338, + 610246150320705, + 304232080227, + 1611377495731090, + 769880673735251, + 140417204205621, + 434002694632437, + 1704351165254651, + 2182217337771472, + 1294378628569387, + 139210418209496, + 594501503375048, + 305559767507215, + 37254384510198, + 875655569467230, + 730797229050911, + 11005706539650, + 576309814207447, + 1467974665982511, + 815677887586137, + 1576248450939733, + 396242935604756, + 896218467592110, + 1108486204167048, + 603982956592658, + 652757105925, + 1605899114707001, + 1544184345445566, + 880013364271843, + 2130479936151607, + 1346555786188161, + 2176020580739272, + 1762590016543961, + 424283191412154, + 1681353985019050, + 1760015687967176, + 1985098998403040, + 1874885618670129, + 1711488129854980, + 1756955416945470, + 728260581120105, + 775202733680440, + 1739419700227908, + 1618215835583842, + 604136048073125, + 2061708434511366, + 1290281205734969, + 805676780001604, + 1450421332007900, + 131609254254169, + 1689440763201219, + 1463257791021021, + 177902545367397, + 2226002780785260, + 1374325790450271, + 2159040592331659, + 1039291011492766, + 747281127036539, + 1611588591610397, + 3788907551028, + 362395240511356, + 1786693362964407, + 69573901424777, + 869343073436306, + 480779174900877, + 530274976250313, + 6350019963140, + 647204773639910, + 218408534196692, + 166347089118354, + 2088685446156038, + 380607863227328, + 681199050366632, + 2181117249999973, + 847551801545978, + 1224269268365841, + 944493211322211, + 716375556522385, + 685754964110892, + 1391510765129071, + 1992137712068539, + 601792511425257, + 607933784468273, + 1714187900086829, + 1866937154572538, + 303265310618625, + 2098620963521165, + 1912774384772168, + 771933348289565, + 237122709970135, + 803422543558163, + 508196438982938, + 805028314768234, + 1027393186065638, + 2016539904690769, + 162379667394974, + 924779190879483, + 1851609971044804, + 776588560532879, + 1279167098105417, + 1322968685033139, + 1419822453293064, + 1362794262528076, + 479288197460664, + 1054585537834845, + 1153157163761256, + 916112630341590, + 829030017110311, + 484256855753580, + 1512683178429209, + 1743645361943538, + 384869762780378, + 991134572880792, + 311342158292950, + 81514372619180, + 938495739661094, + 185587118624098, + 13033509730314, + 278995838746273, + 1232574332318748, + 1307332271474058, + 1167833906171543, + 1600592665056504, + 1017488898226629, + 436677030716431, + 1806012227432266, + 771251894102786, + 1861361665340752, + 1790466769713367, + 684041518224810, + 1685463648918978, + 1741166626479418, + 1553497625133343, + 2183076106599044, + 1574625985183719, + 1743945574473429, + 2204397407109549, + 1334039042306088, + 678958591402381, + 55772194225585, + 1047723980800997, + 364247727906435, + 807477736061711, + 193358111199817, + 1010333355580248, + 1414462220131704, + 648829889663638, + 1487271464691557, + 2142268122285407, + 551400624571927, + 1395805537192614, + 131647382771044, + 908553295686383, + 836692969641734, + 1107766000053538, + 1203962002277331, + 854916549412013, + 1999128466759024, + 233305328575747, + 1921751289273631, + 1947956074668277, + 428722831409181, + 1177777690859899, + 1405776683501600, + 2091718314537919, + 590409248619682, + 653804968062261, + 404891563880329, + 202397732681106, + 1292155728278715, + 1077805846939036, + 400786686852609, + 289133180784220, + 1964439652268169, + 257949620178319, + 2031650201676300, + 186092276236049, + 872729853146581, + 950604690054962, + 15385254880941, + 1448270972467101, + 209679066426503, + 911687603133330, + 2029392349657165, + 1392703247453796, + 2109943517605290, + 1813494874734954, + 819070689064123, + 413292066161430, + 442391797851784, + 659072804515946, + 2106206034537769, + 362252344539475, + 202719540028999, + 2168307670541252, + 1990202745570402, + 1073803477438670, + 1451038671774266, + 2249010656500184, + 1147901261497742, + 566422114541047, + 1367099620250324, + 198913059725242, + 2004093567312418, + 2004969759644760, + 1094189858506405, + 1899326421012925, + 1215742795512603, + 567250548481776, + 812542249824717, + 2162715016774435, + 330353477793709, + 350196390124860, + 1366598742238062, + 335547325471992, + 1545968777189284, + 710414203108814, + 1793128343136895, + 1248964803636625, + 995018828636987, + 750724629750103, + 520801085976612, + 481029797376885, + 774283263884609, + 1676791061546593, + 606557163854719, + 1427958094333220, + 767402949183276, + 55218244556178, + 736087264380735, + 329828381200679, + 1515680295459834, + 39166659054298, + 1879761952462490, + 291240464597318, + 890312962129431, + 351962509157009, + 286689025736816, + 1223382601899002, + 1258536226432397, + 1742722355428690, + 919116698134749, + 280790963453534, + 1328916144168426, + 141050990363320, + 476158769215675, + 1000683916706551, + 1920010476823536, + 800423977577617, + 362913751886016, + 458267763106213, + 243357029051686, + 806152036972619, + 1802640961610522, + 158079152778612, + 480304019308400, + 121641244989792, + 1379923799239383, + 1727495891472798, + 2227788865800615, + 1048048905079647, + 39436127859690, + 966842497390123, + 1627243054946695, + 874206020758219, + 1840462859056536, + 1684446849472301, + 51327958350643, + 2178444618916444, + 271011330019078, + 132059664070039, + 585878469489854, + 323259036194085, + 558458155163926, + 969851138406424, + 615128640388696, + 1957467735487966, + 851638273514153, + 89443354175051, + 1716711667199298, + 1228314019996140, + 229921000013267, + 1063167098889988, + 1973728435537812, + 218462117346168, + 840209662283125, + 443537325919807, + 202562671168923, + 1998565354220018, + 1117753844033107, + 746207155961302, + 2087257884238526, + 1069211956817699, + 383084795637148, + 1122800014938639, + 1632020292802279, + 238440458350906, + 1120554232512413, + 1746641186181228, + 2041011354783950, + 595427480383488, + 1235810558424371, + 1895797417927939, + 2026194981072159, + 1854006588378218, + 1505750296889273, + 1929358301437116, + 1745264880052498, + 1183641767326839, + 2223031451498332, + 1866389632794135, + 905824139836848, + 577926602228372, + 229651350100395, + 1438014367014654, + 513158086493292, + 1088864282769897, + 1865091219894131, + 32046922379187, + 65652324943470, + 204883785067889, + 1515627432698459, + 932810087857587, + 1397946949488904, + 2026344810447210, + 371007082700741, + 573544227779200, + 1893217759458096, + 1805681501430484, + 504334228911944, + 1483523898312457, + 953563276799060, + 954429796983541, + 1889848953719862, + 335288717070206, + 664287747112421, + 45739616979551, + 209571899804324, + 343238815301715, + 607753233146631, + 1391117712427219, + 993208195939064, + 1024562569371955, + 2196832717587298, + 1997110925614340, + 1644949035204421, + 1176199188727842, + 1269426539652472, + 654357972718819, + 1601038415383111, + 803921193772110, + 257591728353698, + 461685690587408, + 1327666367435741, + 2059210950312340, + 616510297745452, + 508302828819465, + 1587548179419391, + 24580195602410, + 1262200715213997, + 846660547659649, + 1965274931761066, + 70185453098150, + 1922366532932117, + 143137420413957, + 519953876818474, + 1178027254128794, + 1679736935546903, + 2146603742751635, + 1534768984607623, + 203611195254337, + 881268493572356, + 1396874425863461, + 506715015278795, + 693568797548133, + 1255173409878381, + 883941787155689, + 1952187125788227, + 1241489366732021, + 397738112551571, + 1649595576870346, + 2119522528071918, + 752304666792128, + 1588582525013647, + 1483328123793433, + 184972083966125, + 1082772993496432, + 616370190490137, + 817842192343334, + 404496074891631, + 766352977487536, + 638789241379435, + 943956387543240, + 1535744807766586, + 1450362200230565, + 737266588590517, + 471384886351814, + 6556128939795, + 2103836828431254, + 1276754121937970, + 888284635692622, + 1716758243728170, + 1519089200952774, + 1350576468637026, + 1551506391806690, + 250230246648284, + 2228184593338680, + 1579802361799055, + 718546051393810, + 942321266968119, + 1691687494503095, + 1117614940636986, + 398147105171897, + 152935145747521, + 1522631986419822, + 1848229805840067, + 824276114593707, + 930678242266670, + 1704649320820529, + 1282438714645597, + 1287782093861763, + 1326384660235556, + 1403598342614236, + 488609221331099, + 952453038287508, + 1701849023252300, + 350764689584018, + 1032582584568299, + 571378484702601, + 432756810619768, + 164448115668111, + 1314002183708850, + 737313267971340, + 979418508357453, + 913625299501626, + 1640850141266701, + 1757436130928618, + 1445829939604592, + 2010671301785637, + 1726968647943702, + 217739583793006, + 480938117014001, + 392010758569804, + 2249599814721454, + 1840358047362364, + 1568707048768103, + 2192623533461599, + 1492744025728513, + 1110510062264043, + 1591867808616496, + 571289029306753, + 906341455428846, + 1695978377615710, + 809551962318209, + 263556720580328, + 1088337953800232, + 485075803748036, + 1534205588226069, + 2039094224167669, + 502084476429028, + 235006808625517, + 1994865774333160, + 1490797785545581, + 674643474649720, + 1607058676416759, + 794117791540033, + 127462919420886, + 433961890014806, + 2079752149524602, + 2043621302852222, + 951001982065143, + 1314100917137030, + 240230081859704, + 1225666049693549, + 1839445257385985, + 2119155489794174, + 1412120901217643, + 771631905454787, + 1855737835337656, + 1407148563966865, + 2051405258357166, + 1825199886105569, + 2229905422503048, + 1902669586188263, + 1258751584332626, + 1815416545299262, + 560988464803287, + 1945761866881299, + 1082093290806615, + 549747374233918, + 506691276905612, + 797944998579637, + 1838124406223787, + 1597216299060665, + 269242338119758, + 1884204574573792, + 1197046859812931, + 1085842042239307, + 2137178858672686, + 1878842860710339, + 2120156999739968, + 1053284490048555, + 88806488518451, + 1618423612568927, + 1676386394593644, + 161064478366048, + 171671166044865, + 701285498126610, + 662627541653597, + 585324213145676, + 452682396775056, + 156997052695484, + 1994064716103851, + 797450956780813, + 207588471334388, + 638875059797506, + 655052305157656, + 1484360484564617, + 1904652811183926, + 2162356084609696, + 193043121388468, + 815126391184120, + 646379098021154, + 2224112830429721, + 675044288770603, + 1449646991364626, + 36755855641427, + 225689672958732, + 2035289269102064, + 1396220373203194, + 765077959843859, + 276378699300213, + 29472168004986, + 876492324305583, + 1374845530365534, + 719048482914196, + 1053499562471944, + 810635238155239, + 786939874556545, + 560011946969121, + 509582658929464, + 626023970816947, + 827811818006940, + 1001044530948484, + 1691083335535244, + 843799784932422, + 26307050415983, + 897693179002494, + 2073327829050414, + 1475204204904878, + 455550099035508, + 1943944601312238, + 1867910729710935, + 1506223143747658, + 1250642586068763, + 192250930459842, + 1699370665860486, + 1140679282944837, + 76439709546619, + 465569514579346, + 849540744023800, + 2062487293760576, + 1313000522610554, + 1556979923492867, + 2013125187923958, + 1444529268533833, + 360436865590319, + 1671870651726137, + 481570815298912, + 208164594711193, + 1916717898628421, + 1425099067372172, + 1889645896086356, + 1732319458880407, + 58113826006938, + 663439461538355, + 718470553603305, + 1900568924777262, + 1616168086012866, + 910359699340211, + 1590970554368235, + 277598655743050, + 1476512199627260, + 630110692478625, + 1404172500042719, + 1195928652215577, + 1484591710828488, + 1763173890637334, + 365497370816288, + 1467817875644606, + 1684504530575470, + 1883834417232103, + 633189803540568, + 1869881038597811, + 1042728550926086, + 1276649108436336, + 1620757675148501, + 1657916693317941, + 1055702135224517, + 1036944117703493, + 51319163427145, + 1106413188640971, + 1173579027285933, + 2213443410342655, + 1967062739830652, + 323325120809869, + 858183574625121, + 2246548775349928, + 163062602857216, + 1370684377730551, + 1405965776767109, + 757537374293239, + 2108992011622123, + 2227980143629149, + 1887696624944144, + 1280766535968771, + 1235134322198662, + 1587037148681855, + 356207897976503, + 1628410275023331, + 926329929314995, + 798572480306776, + 2209541643678402, + 573596991070753, + 1496205746119245, + 646798586338537, + 1617237874844942, + 2229595074697997, + 596654871350984, + 2151036790140260, + 1693912987502991, + 2163597633746095, + 702154562872667, + 447715680373437, + 939949615627240, + 1910332795083436, + 1486621989578134, + 297908100799240, + 1222431550474945, + 1789812020087087, + 1597894229720497, + 875917183269112, + 1581690259345297, + 633463156031463, + 1933075889438354, + 2035734031710227, + 1386002589137707, + 228473430305785, + 70774541078918, + 656141353515355, + 1022663483770016, + 1182932747484398, + 2121510770887976, + 687379175706373, + 1141467685665855, + 1838421169869399, + 1028003001846630, + 1012608298977255, + 2001052983784826, + 1256280694686393, + 1853657127247554, + 271850054471093, + 655466597795619, + 257284713651297, + 471019157357864, + 1018103628837359, + 1363932695574047, + 1548828827065066, + 510529092985978, + 1945022310703073, + 1031232685309007, + 1429457796738056, + 1948587667662303, + 1648997745242133, + 1297962929324296, + 1070982364799130, + 687096446397165, + 761948071243685, + 883024100186782, + 2095289970520986, + 774503213901117, + 70093709295731, + 1547946252280788, + 1602448164862824, + 182045377488172, + 1782522199244443, + 1785922864532218, + 1080617482654714, + 344882789593977, + 937580464376835, + 1119429931488217, + 299256869148943, + 1236913392413630, + 1613162143064126, + 1507133265768418, + 1883501363211989, + 1959850167716871, + 1697268504385474, + 866365579052277, + 1830550116845256, + 810782115658372, + 1765763590026053, + 2249837380520078, + 1123510717993082, + 166867293101536, + 1804108444678686, + 384283317705372, + 1351554814516103, + 2049063264719533, + 2089576782963396, + 899922636196445, + 494355321328177, + 874213687099205, + 2071437882792927, + 406509247799670, + 2051499599763271, + 1509937846969622, + 392968100383756, + 2231137402598432, + 1143918466498245, + 455764453956102, + 1516719110619634, + 590656149493843, + 1223934054170013, + 1331907387041023, + 982440482579438, + 1961682959079378, + 304926424612551, + 131143837433004, + 247419455739463, + 133679341334832, + 711433287246242, + 2036995532462062, + 2121345046099589, + 985348460832936, + 624799398104458, + 1756798923344766, + 1025350708231762, + 634181161068469, + 1030319025258800, + 540195559408847, + 1472661578040456, + 943443127061368, + 2125268933393959, + 130212614966937, + 2083946711849649, + 1592462122003555, + 509276735334418, + 224215241062325, + 534138624491932, + 172052000895568, + 724889140642381, + 1814894596151740, + 229800674901610, + 647252950573367, + 504495821317203, + 2202749062439973, + 1793046570268971, + 1226009211248343, + 1033272628282252, + 257853487715261, + 1552128800999, + 1794102758869205, + 1253433861073186, + 1130239194458025, + 482218919933170, + 1717907346122885, + 2087001566146470, + 280145159975422, + 65616389579361, + 1181476066327836, + 1353877167228162, + 943046026774724, + 1732542924923707, + 1490721791275594, + 654295103687741, + 743960272633466, + 1047827907768836, + 273020986730895, + 2115731557827735, + 1237925753938034, + 1870712261430893, + 1689645839752506, + 890529458298252, + 455401677340318, + 55305906345546, + 913715747331471, + 235584532767083, + 194904909256321, + 2227928178771559, + 989315538069315, + 1805076091540347, + 1345425138071713, + 221980864608480, + 790034086591273, + 1375779434242440, + 1256315698946205, + 1303700448088286, + 177938211508191, + 833445543429169, + 53920079007711, + 1497307193491412, + 1140431202686863, + 431975591656650, + 1498048419040830, + 1263571581347401, + 1808574611863686, + 906284703672618, + 2052102171531326, + 574541983857316, + 1369074895733083, + 1669064451471103, + 1632966961856541, + 1117189113874925, + 940181985079439, + 1665676843711680, + 1259883181017292, + 1863116548272467, + 1827587974925852, + 1492023815875470, + 1109739207266649, + 679169831801208, + 2136925629325193, + 196771045621920, + 586726791541617, + 1843072237990537, + 1554016967804658, + 86625701444752, + 2048517692357291, + 338747481933217, + 2149958343487348, + 85973539766761, + 2073222409363903, + 262535118084326, + 155183765810430, + 247709135580871, + 1169304731468238, + 1177021153749590, + 310694998635352, + 1133355264130110, + 412303427776994, + 1722729740266551, + 1589775948493809, + 1446548105380580, + 1856052934768302, + 1072988087532382, + 1434994519520035, + 165490251750480, + 1808847073029159, + 379940084266937, + 1658155026036100, + 1062484890618374, + 486530925195067, + 1863986344171869, + 901399319915821, + 229369319633498, + 91390206366920, + 1127318670570912, + 83070880892452, + 401372908517263, + 2249700310467891, + 1858258810256129, + 444258055828445, + 2075039323066060, + 558603620349501, + 1831040576399260, + 1943222850778173, + 869053085023365, + 2070224636838944, + 933208574378069, + 2026559249680578, + 1911846385064069, + 1858174033004527, + 1303159763452852, + 691887011003306, + 56625471435654, + 757183216774894, + 1235911469293716, + 771717624043485, + 817793177226404, + 1719004742206933, + 1033496981953625, + 1104465918461354, + 1735160146282428, + 2007626334629306, + 2179974513010916, + 2011174224572003, + 586360150665970, + 798747888868667, + 1105027025903115, + 207424280777772, + 2230603680123799, + 1739584701182552, + 1490178630578824, + 1798514464172109, + 756090441154725, + 538152586385346, + 1551731117031174, + 298067897337548, + 1458250237107493, + 104007921507195, + 981634605354252, + 1553235027734086, + 769123100496402, + 1247096752659920, + 2033135339928478, + 313445823211107, + 348576827843358, + 1073521978032744, + 18574167252495, + 234634197624718, + 571473031006103, + 1627151825559916, + 359508006615160, + 171312898153442, + 445513534743545, + 1063175392553660, + 799517208857222, + 1522285998316178, + 434073321993143, + 581886290551844, + 1661565947218143, + 1512623143518263, + 1530655890199228, + 1453948988076140, + 647250872004678, + 705662384283423, + 2144999691096824, + 613067470203927, + 2214377337657757, + 218060699488358, + 1532236262435901, + 1746578118949732, + 1888273150783634, + 579661210540970, + 2085912757643817, + 1626911571618556, + 1781313102974630, + 1249516692551012, + 1543382114526748, + 364764268176406, + 773068475546342, + 2062714885408705, + 2094716458475106, + 1699179212500587, + 578807989657367, + 2119581270519334, + 868570919799103, + 1036234836677592, + 1796509988569798, + 2167957976332275, + 1332741142745193, + 1873581820905578, + 1925612977587332, + 1417462064749958, + 517243202363064, + 485671835867573, + 1831522836659112, + 1694759707578492, + 907121745504630, + 880449366847136, + 368327519683472, + 986414033166558, + 410492806622505, + 352564697974546, + 1887901526546148, + 1676028380229445, + 644057921265159, + 486673985273816, + 128189771802490, + 2073266121291745, + 1056913767115102, + 1684731156942194, + 1798650214461161, + 1501299272260075, + 1467129292253006, + 781255057116748, + 92093079999629, + 413628199602335, + 1879385517042829, + 2222808082862083, + 1316012986259287, + 417750088782074, + 2009955573945665, + 1506177843974751, + 1715849530444032, + 1181034298129969, + 1872240324881345, + 1885040235128968, + 615133886047494, + 1653098185731810, + 1659239628371762, + 2211854117215983, + 1957112530585280, + 1443844290720276, + 690460357873105, + 422998056325305, + 1201889936104927, + 259439994801644, + 793578619838021, + 677824268471001, + 1838895589774325, + 252957805457005, + 1172370314537250, + 16988343689141, + 238210144786224, + 1947998670132555, + 1354646374814550, + 1618105819976582, + 1050711634028179, + 676746936578202, + 1580149954529177, + 1987523318412875, + 1778487573000584, + 1784960020441535, + 952769506004976, + 1539541948281655, + 550703040765871, + 1899034661823386, + 1963353596051170, + 871027796878825, + 1118538994591826, + 878948850839635, + 1646708128874350, + 991250675630855, + 1189815772922292, + 2027302736805512, + 408820887512907, + 489144297353260, + 914835868651199, + 2117790532450569, + 1431573356986878, + 903980711228200, + 1087800170384713, + 1619184454534261, + 721232816386590, + 1363643374092707, + 299826469016077, + 1696029908663594, + 1647127757291308, + 223799344382131, + 123466103242499, + 1858804609524356, + 1197756371230590, + 301455183533018, + 634697785575422, + 1600754318010421, + 357495564274842, + 1100367960680358, + 1491029792102100, + 1954824548130899, + 1644527205540613, + 552673099359662, + 177964627324916, + 276096445750515, + 1325863537090819, + 2156444946876787, + 2248804887527585, + 1345507629721506, + 2164473066402851, + 623607550465463, + 1275289349878778, + 227625305935230, + 993782217848444, + 329007665001878, + 222887656751197, + 1367700882480599, + 1356656603853228, + 1259160968255251, + 1730040884952752, + 94365546216632, + 1556009404089383, + 1248482800153757, + 628881630835572, + 636687747612477, + 394326432092553, + 2183877659857886, + 1458959658183073, + 2131366518676652, + 1537302359339712, + 839449745236728, + 1000953882372213, + 947882949373457, + 1333865122659033, + 1492450320045818, + 151639440903763, + 126884516313113, + 962246782126042, + 206852967173999, + 1641986040303233, + 1532732910932286, + 857829038627651, + 781790288458580, + 530518393818180, + 230212302078738, + 1628763521311019, + 950831941966048, + 875893119936067, + 2241787739394238, + 2029122241242747, + 1598611754065023, + 99544551776305, + 1106166241350152, + 1876859922640422, + 2191040403593880, + 373646734606261, + 1708979257205275, + 625417269345804, + 1037541848757542, + 436009611597573, + 1567671386135717, + 820886424261286, + 616939090176639, + 1420551634952416, + 650760667455082, + 1988421262942730, + 247479225847601, + 2095719247009182, + 1675159042722211, + 1257210371280953, + 1130015644384328, + 1035802820453454, + 1957109056598074, + 1662071758477760, + 991468980443554, + 1055900178539544, + 2067922407933222, + 2056607631806510, + 1707216413570178, + 702829456514162, + 2093023810070138, + 27149909273181, + 209904782909040, + 483144487015442, + 1227388879709278, + 703664227411976, + 163777442399452, + 166772946066388, + 1347996447271274, + 897008720212362, + 1730952476903100, + 2157204809058904, + 1286546080632173, + 1571325783328937, + 715857878900738, + 2021429447855638, + 2116364277029630, + 2204840193804379, + 124337759076877, + 1067816941615760, + 658309882010351, + 2090605481257309, + 194912821252313, + 1982857112669639, + 1955442497203830, + 307198208513534, + 2076676340522593, + 852544670398523, + 1836281012820383, + 1774406207206238, + 1575003302774052, + 1406461879598708, + 2175125275376835, + 357496431254726, + 1086725541784577, + 1672462746054531, + 15851895169959, + 1467144369200970, + 1961150557614738, + 1500519058674173, + 297645439847142, + 1511746679559861, + 1231222450046567, + 1678852492874741, + 1906474671303447, + 1021145398031120, + 1722930479413178, + 909626014114396, + 823725429464930, + 1853216959391398, + 2069562851750168, + 60725160722700, + 2076451905431626, + 2032532261374524, + 1569565524844489, + 1268770958610337, + 2047428984061800, + 810839257904885, + 1801908151924559, + 531846097993578, + 1583149644033701, + 1682663999160165, + 2058221758126865, + 1328113255889594, + 10940074029657, + 27590702206455, + 635207789583388, + 1642969850310003, + 1874307547143640, + 1373593469510857, + 1268114001661905, + 1978348188434323, + 700414183333042, + 1661727093574943, + 837245133246396, + 1203876791624117, + 257996725277842, + 516674275824073, + 2017572402615340, + 327105836695675, + 163530686251532, + 1278163028018636, + 162923407506850, + 1717491760223119, + 2065204922579565, + 2162828577362942, + 2220204060431861, + 2152859675295020, + 1413072612708145, + 419464925649127, + 732226687541059, + 524594006482337, + 548296095678200, + 2006821041967927, + 1214921752454758, + 417251853774256, + 851988398255718, + 1606971630858943, + 978171702334846, + 1391107482202925, + 93205071283571, + 1089918497061751, + 1911782267919960, + 220755755981220, + 1860959815006160, + 620855950212405, + 1868746112714661, + 1489693422022084, + 475861042444294, + 606238229940521, + 584714199538690, + 1625228165994048, + 1833892437035459, + 1758746115069905, + 54327646188591, + 2021127911004006, + 1885694992342033, + 2027307555112406, + 376032973828305, + 744774050267126, + 4865120824849, + 779503497979018, + 913252552289600, + 527572436491268, + 1584107869826258, + 1816356254405639, + 1791740026392915, + 953819887692802, + 2165054149498908, + 2191557032677583, + 1368681102534098, + 2111787968367874, + 1947569977928863, + 2230238552666516, + 1901946719169136, + 2102649617604500, + 609422920549216, + 1906135961943144, + 1813695413413622, + 907792302642530, + 188204042863261, + 1286859074122359, + 334879760449506, + 921565982020647, + 1351581395782470, + 1808583476578436, + 1266855264163064, + 363490517596561, + 1410870424334997, + 430780703994066, + 503502175789204, + 1224988136942076, + 1578164414638562, + 576745057345887, + 2198777298178079, + 53587369271918, + 712051334976101, + 1780639915463797, + 1587672535784631, + 379176465645950, + 803845070117350, + 766746722831061, + 1173360365063096, + 1367064935410234, + 2103072943497669, + 162129261057499, + 130574543330449, + 541731293139886, + 894664494606846, + 1118785919651189, + 711161335414105, + 629236560677188, + 1042016657461366, + 1826781176401372, + 423777907076189, + 935306925169272, + 1476182856522844, + 1797050238480382, + 1645357435340051, + 796291858537042, + 685935225809220, + 743900120512333, + 1395502774590936, + 1732672707739325, + 1402255505548302, + 1233769021343843, + 1288888745130915, + 2215651324027406, + 1056815865177230, + 1526398371386072, + 1315426105122564, + 1152050044343622, + 1747248313154660, + 2043338546130380, + 448861315938534, + 458266655431100, + 475189719639069, + 130711138992231, + 1348205149566938, + 129245452943626, + 1142896302822437, + 1873521197489801, + 2059089375483635, + 845785950033864, + 1383520097977359, + 2040994751932984, + 363638433332134, + 2003455807415943, + 2016714530068470, + 477796800694639, + 186296725443575, + 891492804904493, + 1713277781825176, + 1743335355990948, + 1617907258362109, + 1538518717963182, + 551021815652234, + 479171710675534, + 802675020651390, + 1008358947211638, + 1527586884733369, + 1129248642233939, + 1960388141417588, + 874464150289413, + 1777407608031560, + 2220864643176262, + 1545700657893270, + 1344094783309675, + 468555362744787, + 1468954876293811, + 1097991907112176, + 1489436471816843, + 1583949746658389, + 492426853267227, + 519226284206684, + 1802702546429583, + 1822040546846346, + 1098107453827847, + 997578782903481, + 1327103066449070, + 878920554904561, + 1637688463211001, + 1558288837970092, + 583067116933567, + 1789376124308794, + 998549951051051, + 1479411900851637, + 808204270718289, + 502443728170798, + 1715293208010279, + 1607311660249167, + 1514433709098963, + 408920172709105, + 589129816543120, + 1008579739390548, + 1911926091714803, + 1770786063383616, + 682438131798724, + 1614248386179391, + 1567559073720299, + 1313164593223380, + 1405433399092467, + 343751289909742, + 322376335240343, + 792745947900770, + 1881054177601862, + 1850872279667563, + 1370483047129125, + 54871355868916, + 1951166985955103, + 960440528657235, + 1867672130726992, + 1133473706487654, + 1157793268768527, + 164113145461743, + 1932573136674408, + 1304094193129114, + 251237795509111, + 1849290576201297, + 1013558493029207, + 1627836921425544, + 200477392431988, + 2113625323799547, + 46917659850143, + 1319166973337801, + 2125235077764649, + 1514176700814432, + 880676861139204, + 1772969589660240, + 213869988914502, + 1380721985146457, + 2151255812799095, + 602158605298019, + 1197918100524502, + 568967756287881, + 489862156337379, + 1755455993207959, + 1328410079857647, + 356686701607295, + 1891771203662472, + 1284811619679744, + 687356995290128, + 2071367057386036, + 1771530989655973, + 519456182313819, + 1496752798490786, + 1595680270662634, + 734157536164983, + 1542601164726718, + 887605258272202, + 930407677705477, + 909658499645997, + 1236250175037869, + 2204932777060764, + 928515026667418, + 95934733654981, + 678789729947434, + 116226351136793, + 2247990116098929, + 1217150128889561, + 1593303640749186, + 1201766844817070, + 702289986166633, + 1130225695678477, + 460395394474252, + 1794347474870201, + 2055489551993328, + 2187558376738047, + 1655443656362738, + 887431006545402, + 1602766164625908, + 1413351437546163, + 657018421592546, + 2125635416292984, + 2161839823204107, + 1555553352681271, + 172352073759112, + 1586514115274250, + 1905284562620857, + 1436206157818260, + 1991716135762893, + 814467231603263, + 980778874106183, + 2231833735649207, + 1633922164527088, + 660969542728609, + 1679767638489463, + 765811986243919, + 837860973589351, + 1766774051335379, + 1065746155514168, + 1275130355123629, + 2053243750054889, + 1870391654541167, + 332689769125771, + 388606928871679, + 1163752256297336, + 34427368721778, + 1359364126588713, + 830846202148014, + 814821976298760, + 1815825593586355, + 226887833195915, + 1579493405416108, + 1750194701712200, + 274888251321726, + 905832493598956, + 1521885989370220, + 762425703170546, + 957776951781444, + 637304313473904, + 741717999898015, + 1321931549714279, + 669865391328921, + 1487313438658842, + 2115270558098577, + 2233635910456340, + 475148420627647, + 307047043065802, + 1129549532832290, + 456364703407839, + 2176503465409086, + 1463132731526934, + 55794441724000, + 2078155772458412, + 2065058148679378, + 1618402486478594, + 1169765266984508, + 2095184582873994, + 2146696220999022, + 2073716790933782, + 18401640060908, + 894819357643053, + 1602284434271677, + 1772486583013215, + 34603679786118, + 2031318250944694, + 475188042516187, + 1023087217725608, + 254649032071636, + 1850533456504316, + 306074224273003, + 1248401412502505, + 336659763797150, + 1940260246999945, + 1875075374318481, + 1018708751228845, + 1041701369590575, + 863923678739864, + 1651483785822803, + 28688262117133, + 862973339085232, + 1900708166260798, + 413893618955956, + 718963520736422, + 2048697123495335, + 1410298046877942, + 931900065397660, + 986244075672199, + 1740113278534912, + 891824087568873, + 1310729963840329, + 571849374888959, + 890252048496444, + 1343384344988539, + 250412560557307, + 1596383952701433, + 925721490857134, + 1946805285782442, + 1263340274610388, + 1668322183158303, + 1683246567387197, + 1399599579288065, + 1844900859567841, + 587367616267585, + 180578484925552, + 1032268387541437, + 425292251582857, + 220192757842525, + 1713022800920324, + 355474771771821, + 951843096544849, + 286157840528762, + 601521485822414, + 1714492956801809, + 2007643358317368, + 2064690381406984, + 1827772719877493, + 2090406021842028, + 543361087497089, + 986972570226073, + 1777485542055447, + 1401102603364267, + 735682712518455, + 733075652293587, + 1931605205036606, + 378729403137818, + 419126409248187, + 1694855488432917, + 947626678001224, + 1107071842754613, + 811120213466366, + 1114411135086331, + 2125293270729017, + 2152851983201615, + 855610201172190, + 479646361474722, + 834541858434536, + 732681314191353, + 2009669174901345, + 360491694068542, + 407592006438450, + 440788841215142, + 558616442409822, + 2221566173154062, + 675772479911683, + 1001525526490698, + 164556240837614, + 2001671692904631, + 1588845567590666, + 1203611885982172, + 57768812421538, + 1886962485954177, + 193062995774913, + 1937236960185740, + 997540998970865, + 1897281740455388, + 1931029909357632, + 714519576005337, + 884545026329578, + 2149709356091628, + 550115334250590, + 760532155108080, + 794827603434103, + 1845196344317071, + 1973262154270081, + 1137448609042809, + 189721205429140, + 477135585047983, + 345523185537831, + 1848275117343768, + 113565772863208, + 1681564107808976, + 898267873552828, + 1035130951184207, + 712251143674735, + 1918535947907172, + 317513856894966, + 1647561347327429, + 1434942685478238, + 887900768757510, + 18096231079994, + 15980785307270, + 2016730439533552, + 1059347632893494, + 2137655619919275, + 1292123516332140, + 893473349866828, + 2184101059822902, + 301404887626154, + 544953084903670, + 601083888039924, + 469389677799382, + 1119497230329356, + 1852395315833121, + 1602057435652492, + 85467403151275, + 2152542583534944, + 1424120440264317, + 877259173405150, + 1415739479941032, + 1875382823034389, + 823961413830351, + 33519654428630, + 938165823410501, + 1465639542208676, + 940007061951947, + 2021729831412284, + 391676826927304, + 1888453204954273, + 850353194214063, + 780509476328460, + 1171313827875722, + 1524954945619124, + 1346566365398823, + 571670411545547, + 1977036939046997, + 1611064818672568, + 59551204233345, + 50766930847862, + 2162218713315334, + 907210599119298, + 700970327305422, + 576830255060662, + 1019212433586571, + 1524815327305006, + 2066129675709988, + 710782859982608, + 1107397773073014, + 1979162284047202, + 197106188080247, + 1481274947834443, + 353542426729461, + 1506093657974452, + 1918232993169028, + 2223978715758295, + 286779974507505, + 2063594446272032, + 1353619896375030, + 294574185842533, + 288489266699320, + 1121680215792022, + 1229373206504974, + 884681857603054, + 1289454161889989, + 530893572355669, + 1391292544187987, + 1045892556029569, + 1563497616607342, + 170551006051419, + 1535286806596885, + 916806094016473, + 1872363734523235, + 828880164102782, + 1542466083372977, + 655784738574767, + 597210423093634, + 665381062051502, + 1479522531516454, + 2136652479866470, + 695980872067744, + 689972034106787, + 1877724181515108, + 2134762718337433, + 371920567707532, + 474877812405562, + 1708455774463704, + 1542243004917149, + 1354880475595089, + 17749351709517, + 778287524607766, + 872102201835041, + 1413897234115131, + 844794179146301, + 1656726492373682, + 451384104287724, + 2245727081715094, + 2003983145209421, + 154728689736900, + 667891844656814, + 1701216959747802, + 2000973304188140, + 159279266591622, + 2175696408251092, + 1101771660556467, + 352830313300410, + 33910300546349, + 440979135851858, + 353112347681929, + 1792499744482068, + 870161059072380, + 1364051255200873, + 1198668186980598, + 2245311861469234, + 881254480413633, + 819863572707469, + 1096090431400964, + 894182502468459, + 1951040499024078, + 2201715321038863, + 2240970482886472, + 146829093475148, + 1725647363610152, + 43743854951696, + 144052653047346, + 2037536264451518, + 853801616943619, + 355488856616778, + 1278628750727239, + 1984591560552439, + 1486510982549044, + 1496396283451966, + 323646578648385, + 190741652048536, + 733403747040018, + 553827611053444, + 1952358580106374, + 1517372561544475, + 1855675992208493, + 189241040547789, + 376337361202164, + 22429533006510, + 266741477458960, + 110800902160947, + 1061140562562917, + 2146920466192200, + 1443918216976721, + 2088152721329429, + 651614434556694, + 1761913443294472, + 1390420648716936, + 1928683963139202, + 1338986446747773, + 1814159741089589, + 1026872998792559, + 1388595138948308, + 103095816032998, + 1837830526117883, + 2115635799368600, + 1505799099354807, + 1842863897660169, + 1072150513418248, + 1496069114690031, + 354227136623424, + 1164429477112008, + 2138539569397858, + 992761274786074, + 1865535859233996, + 907719048033303, + 727863740925515, + 1483630034249300, + 1738597744696863, + 1895498218598973, + 1601860351981287, + 1477937561641415, + 733058382919996, + 1124035302913502, + 672384954141304, + 1448278006780748, + 926242983745563, + 217520577076331, + 287461524232009, + 852899857216260, + 2037626233312223, + 1921726605453743, + 337285205239977, + 119715386190846, + 1839622914837944, + 1522540827438132, + 1103182209190767, + 1849013181504708, + 2076400372677507, + 487097256487154, + 568140461175982, + 2038798417144770, + 612852007319037, + 1593504821547427, + 2099444452771625, + 222844587163677, + 2202720689566299, + 1954107815848315, + 60686576494400, + 1716739428546198, + 341573152895915, + 1090196487211203, + 1596649322027983, + 583301219405904, + 1382087508558033, + 1253570380250128, + 72671406414192, + 1640409473906392, + 2160881018126651, + 671475246903237, + 671651858169952, + 538460620272499, + 1865342510701996, + 2027480205184274, + 1800018813262674, + 1213076866051877, + 1153788657123785, + 1594075899260805, + 1377072195695114, + 1278476322928290, + 2165256882702132, + 135959699823765, + 1774080138278614, + 2246516831737151, + 1868797575127653, + 1606250828680295, + 286309189956278, + 1663374908504615, + 2079748707194831, + 1107729858250519, + 1078930013795406, + 2006750560402962, + 380874603441408, + 1408900718734566, + 126281003909474, + 2009997567952386, + 82573566200981, + 1320362437896749, + 786228443606993, + 2088538753347773, + 2223803300774885, + 1238683579201201, + 2042382277476825, + 1718032730601426, + 271363963439513, + 779102829710754, + 1430315792493897, + 1939775687830446, + 1627835364764153, + 371075555102934, + 1829699444933403, + 1122414553666050, + 107514529950110, + 88050355231023, + 145816234608527, + 844739257813313, + 2077413153951246, + 1840146432272292, + 1214210388695467, + 188767148643303, + 2205009725638390, + 978407038619331, + 1101172441178804, + 1781675005553726, + 1492460914555029, + 212395655932362, + 143161315904704, + 1966517637650922, + 2049858263702551, + 840165543383969, + 657079585355095, + 1267502989831940, + 37338539213732, + 1810783405347886, + 1856836558621772, + 1227692192422225, + 221581392081597, + 2126893046365570, + 1464992312731896, + 320257623716002, + 1000543335833847, + 651716061797957, + 584901470747851, + 353179663849427, + 1991594751370722, + 138068125684358, + 1239528376916134, + 585425965909100, + 753595282106149, + 1453965604589141, + 1760626925865163, + 752351854135889, + 1055723098064268, + 1092759955570544, + 1119392898760976, + 769654000644298, + 677176593994172, + 685303045873728, + 732882758226248, + 1812621700248786, + 625068298003916, + 27044662616788, + 1377986508354887, + 598759549618124, + 1593415366881603, + 816643621558377, + 41813269054074, + 688694134890461, + 2217818476266317, + 1443142441580997, + 1778235997656945, + 811989451562377, + 2048235121515557, + 140863880451363, + 542254093462068, + 1971094837006500, + 488557214145378, + 1900591079710651, + 342853757336897, + 1693290178078723, + 1553661715280119, + 1947131903001851, + 196870459361546, + 1420106655784583, + 1272521873290703, + 241335423820852, + 477300828679739, + 433564780264940, + 53425954668004, + 1222069930383617, + 533639179436765, + 1795717383548421, + 2011553661444240, + 2042911230442586, + 500419652913615, + 2007206664251371, + 1616155455142617, + 539345731167690, + 1571325257375928, + 1517068404065505, + 2079720452408206, + 342174935798873, + 1062143278401422, + 1235204584121693, + 1215222223465195, + 454074766802669, + 237456698165717, + 2236757536907225, + 1369852722404858, + 196043080575106, + 1296018217835679, + 2054075163700782, + 739503825082483, + 1617386912676957, + 736581313422022, + 2240612956091297, + 1469471590461597, + 391447980481355, + 274730918801237, + 934799624003174, + 1017036169594440, + 773603414958079, + 1101228915547343, + 1631572474801303, + 1316109163618242, + 1281955842137892, + 2218678387747322, + 379918635022093, + 1614126169195930, + 1718027449774176, + 1785221327860728, + 886256870764973, + 1740153358098898, + 1832055663918321, + 1775500563052986, + 391715655675697, + 879324912978107, + 1119283185764508, + 1587223007364086, + 2236647628868808, + 636156527697896, + 1571985153743119, + 411382728989014, + 234965162141685, + 825642904378818, + 2105252205592622, + 1209377679892149, + 41599181969399, + 609348204696258, + 20618969142545, + 990151274395282, + 1169516567728070, + 238921680733332, + 1737461598178350, + 1015157655508879, + 380862363390806, + 921714624978790, + 1163760088711487, + 1954556735740347, + 466021981034916, + 1269522007245260, + 489783062112880, + 822374972626630, + 621841738520784, + 1535727400833111, + 1708679596134059, + 786517765659183, + 1997995556049397, + 650731232430468, + 481777084142895, + 2018724868972546, + 625011679919055, + 1576439907112857, + 1168249505123851, + 1699589216102779, + 1386188967431822, + 1904398931154186, + 1263710535081216, + 1196850280878423, + 1276286946122316, + 370694804010216, + 1586952228709535, + 2008490276304998, + 1469867680978546, + 2017390134608718, + 807595561330576, + 825857717200465, + 546885778501935, + 1591953986553901, + 1355830728220763, + 2207798034575848, + 1785590564910076, + 434607678717906, + 959487211594379, + 1238216096908505, + 2036768667036911, + 857669942609867, + 478268023708056, + 1545758774991610, + 2045768359884170, + 1273954866534916, + 483188802095617, + 1301441282175000, + 366777350218012, + 205660633668351, + 1933348238173467, + 1731378531885312, + 449887348138806, + 46392121239561, + 459729872009925, + 1409580408175972, + 2094124616488056, + 2236297781977819, + 1777747383651234, + 1663130157823141, + 1142305938540827, + 1228375447824297, + 171894878814119, + 2242117776570473, + 968858103549488, + 692584887391382, + 590671452302114, + 1324845724665360, + 884347890079429, + 1576895229146375, + 2076451419430620, + 927542320540095, + 214268225942799, + 452962518676248, + 1127548442696267, + 1758622803758061, + 568626774192156, + 1145837486839002, + 973064669003822, + 2016916478142889, + 438568529639486, + 1025496588815372, + 767770286800679, + 166997568048298, + 44584699335991, + 30584040762227, + 1374813071433946, + 1866823558977639, + 1292289360561568, + 467825558753650, + 29072445359489, + 759195430430420, + 1844296774442657, + 1699929771246613, + 578087517126698, + 684820900292240, + 1748225110695471, + 1385435834386744, + 1389108304376457, + 2078670155923995, + 104361608569883, + 968753899321006, + 150965941100616, + 654419969537080, + 594806816354321, + 1039989504232325, + 533878833109975, + 1341394705088165, + 1360817559063982, + 321167144136431, + 30299703549354, + 2155705974972631, + 1790696112709707, + 1257172815603289, + 593684896528314, + 1215807454763120, + 376139312012489, + 1741166081694982, + 659872068584919, + 1235871109874293, + 952243505023190, + 1096580548190802, + 1925345172752104, + 202248954695285, + 1803476049412808, + 1831130516736788, + 1545788029866969, + 2176455482324740, + 323039584197349, + 1410681000041307, + 2073291482745834, + 663648104874333, + 756003272092018, + 251361083048650, + 552267426891318, + 823845658577970, + 1692953577225235, + 269077743992777, + 516562942847860, + 2092088427789392, + 675059280053898, + 2073426171590968, + 1330592725276675, + 1606369105300487, + 2034543410414447, + 1969004035286411, + 1561727153381359, + 2181840639424820, + 1860904964416165, + 1550754328493418, + 319599199799784, + 1253479306142441, + 116946237696022, + 1999739761383328, + 724918210986756, + 565950311973749, + 1113241605700771, + 325199761298335, + 761948827356970, + 1143612283972176, + 1196310928281027, + 776020132286484, + 375661428752786, + 1761585746912891, + 876612558317670, + 1495600749706435, + 1176822761729418, + 2222121709279567, + 696557997095722, + 2121092856957876, + 1889733315590062, + 1133005110091853, + 1937788510535736, + 2126523402268949, + 288985380658216, + 2237442429994566, + 593034197838189, + 823430937404234, + 687093668774670, + 1083779100031805, + 2232511824310549, + 397364787366900, + 295848775242940, + 143787449648054, + 866845009009842, + 1475038877662672, + 1852923792882111, + 1027513783163324, + 699429548298034, + 967810610903993, + 569073092416267, + 1676135223421368, + 642548642581319, + 311805678010623, + 1065318092778096, + 1588972543023662, + 948592218709098, + 703266956022525, + 2224719026247545, + 519505064316760, + 1060167005802352, + 411528370229052, + 2102865101352786, + 731097043714967, + 22810962457491, + 510878067676624, + 2005034194979111, + 883471665805419, + 1176401974566908, + 1349841791884230, + 970164657197190, + 543433422371201, + 114974809514361, + 1704765763890168, + 2115815024690741, + 2076029280477371, + 1532945794766956, + 1622170434637614, + 1099335928188998, + 23397538652219, + 577220858910762, + 1979807633718129, + 2150919616292974, + 1947652396997145, + 1857953460041598, + 1778065053001284, + 1167284016200834, + 62260053610832, + 1869348366452413, + 915030432643854, + 623743688609680, + 948223943935960, + 147864462697592, + 1750373341204466, + 1975691662857702, + 1400805773588285, + 252727330058414, + 308892488138105, + 2125804419887042, + 22651626542390, + 1016561828472277, + 278754492675737, + 843528430493385, + 1073717570214394, + 1773248994226362, + 1452045808600291, + 511794958208882, + 1055756167764772, + 174110404793005, + 198342556815583, + 1496761362657223, + 1763351706841185, + 1369148227089177, + 532834825293801, + 531670810096061, + 1595300996967187, + 1487691483475032, + 108860254083851, + 1973748933361534, + 1527063507819224, + 237079151918217, + 669825977182675, + 595806188623534, + 2182002463870780, + 640804823372408, + 657248587987624, + 539919172171828, + 843671092468068, + 1874671790022731, + 690262750557824, + 10023220770862, + 2110445471858163, + 1974852713242033, + 2074889553471939, + 2006117547565475, + 1739092126513127, + 1861870089701259, + 1285570258957349, + 973344426954143, + 1862342141590572, + 255934740526134, + 1857952954960465, + 1191026342627421, + 2070603991151084, + 1287598080618714, + 510340259598847, + 2134590552240388, + 847084305671625, + 833482335403921, + 601475200451060, + 1788117614954912, + 1636624377401063, + 382203600000171, + 221905956538447, + 2070535550742075, + 1281937677294304, + 1994148459331844, + 1364932069609115, + 1199259589133842, + 780344084367844, + 2222246275010285, + 213312011188902, + 862101327041862, + 1991930033246159, + 1829129305626686, + 1094906762947855, + 1733485352353806, + 2121202443864366, + 1356594494356474, + 1257475205769899, + 22854593083041, + 1202532917369452, + 368652480645625, + 1582445586450937, + 456905203296869, + 1184856146557271, + 1251840826185151, + 2078956681496672, + 929010191496816, + 296764389967781, + 1187349289903065, + 2081532884455830, + 1813258826259852, + 1744262316345748, + 686655866278048, + 481942812960261, + 2110993761977908, + 1842276975158574, + 323594647245498, + 936740721786223, + 1554089634403401, + 1974672664462565, + 1613181858092625, + 462459793249570, + 2235869449288602, + 2111311690652828, + 75183789400206, + 590977516660142, + 2024075923790928, + 724058390267419, + 842013536162288, + 1793680121129812, + 1829980298695592, + 133268747555316, + 1412197556496376, + 1677081524710553, + 1881436637151804, + 1984379151008524, + 2234259437992701, + 73967408975480, + 1883908020988981, + 1157256889406665, + 1093310747969739, + 187266608856992, + 769129407959081, + 90188095516835, + 644377612780658, + 1297299861739055, + 797181709727261, + 1706905831898513, + 2159386276919093, + 1963426608653832, + 1267661900696368, + 1106783509145539, + 1363659587263085, + 1140274283103533, + 645360032414486, + 321727348860321, + 2204739654556418, + 179767527173276, + 1378890035686957, + 341659277639002, + 642698045258929, + 2169661721942075, + 1071915342677052, + 1322706658559982, + 227135907135590, + 646203508308187, + 1427238209592167, + 860176510238195, + 1577591940168100, + 2170967078519990, + 501205535284072, + 1301040118841494, + 444700834266162, + 2087285643958594, + 1936687928040577, + 1739989363503889, + 1755264093745938, + 763655433856527, + 1676338778715842, + 1794610101255230, + 797788346732337, + 1282411629876583, + 632496853485292, + 256975817052097, + 587453171434156, + 15603338677212, + 109409380912912, + 1781209646355947, + 1353170966702186, + 2095274730613398, + 1605145292446225, + 746856777169803, + 275448022158821, + 955969217251600, + 1323122602292519, + 672937280499922, + 1164474369432939, + 1624253974814718, + 1068351944762822, + 1518974807750755, + 114368060253159, + 1693534681643294, + 177756447325404, + 1929036589498311, + 1384334236386786, + 952516782842357, + 1228498324667454, + 350982853585353, + 1542085969845802, + 1917695276298767, + 1927180182649234, + 1664550812279413, + 66441056365768, + 1451348222892213, + 1847281684823707, + 428398651033339, + 899074378641953, + 1353571930888204, + 1176369331042357, + 1733589949933121, + 139368169471219, + 564841238119409, + 1156424465734188, + 1869835963134403, + 202288811686362, + 290281567905191, + 1541773288512013, + 94568042601534, + 819774950829741, + 15540870782812, + 1056739627239397, + 964986913817445, + 1451532981012059, + 1666892859839651, + 1158607392449766, + 1749268063567115, + 2068313383268806, + 589748717437365, + 1007860163510957, + 1703332843202357, + 323678512998827, + 574234814343886, + 1337675363880019, + 1044462856120813, + 8286394427600, + 861311509395282, + 1399584478700932, + 263646762795959, + 177036206366574, + 898774411290570, + 41755756959415, + 649203688738511, + 2031730187949171, + 997459166831170, + 167804680715661, + 608747109502679, + 2243231897259442, + 332249752416869, + 1081919002015497, + 1617018214641323, + 847275497371514, + 56427350256101, + 45326801120984, + 910938999112983, + 917707200255668, + 1297296204221694, + 2082497929125130, + 1043563669659904, + 6481522774539, + 2074585720804584, + 244653379831815, + 2119583532855596, + 10721821112731, + 1226380491487319, + 665422416768049, + 375934031198945, + 1323708512656043, + 1503691038080914, + 1108675186250666, + 351410525783850, + 378491911098859, + 61127364279781, + 1525469358892439, + 398648365631005, + 1746867078316592, + 298820309217668, + 819068056277167, + 1480838767327654, + 357224410631269, + 1916727379015091, + 2045462206865796, + 141191196887736, + 1964365006520646, + 954719595298940, + 411111549144922, + 20703616339317, + 115035497976003, + 128351493993056, + 806222741630792, + 855377698307073, + 230064539261422, + 1978339445516470, + 317738000357480, + 1705132916627427, + 422865849260962, + 96585563984771, + 1647542147235250, + 507262707356261, + 1128369855082937, + 291268132986773, + 1950943384991768, + 84403350514852, + 1783400896785043, + 1239254431408558, + 10653113165090, + 870588442607601, + 1966304382690587, + 9443542891707, + 567661276281137, + 761163234397210, + 253021767500110, + 725747278625794, + 2198024377965160, + 859790692762915, + 1569184742027009, + 1429355494984552, + 986473032045675, + 1610282087770695, + 2206680470516762, + 1554033929677536, + 874997371580054, + 837239982119644, + 215121634401996, + 579132173059736, + 846897769947764, + 1872168141361443, + 1236374075509431, + 982857540644788, + 181347534994744, + 203431556904682, + 523524980030020, + 235965096586474, + 1108963204027478, + 2251429923638526, + 1327414977595947, + 1060887382108354, + 1781738252505102, + 1127030731103895, + 1647936489715825, + 685433644587105, + 305112315681909, + 1424132804456770, + 1326537463403970, + 1686106895101024, + 336977521128506, + 1393657935540721, + 815906805850711, + 372736352447812, + 857465632426929, + 1327298147633553, + 1315046561462363, + 804789870747058, + 744443327209961, + 465090400283168, + 1421144080501562, + 886455092213230, + 1638521969038651, + 658726847890157, + 1646592832295405, + 1393084257396014, + 356193526300759, + 510105799945358, + 655732705303072, + 2024786935717288, + 2015912231090058, + 442372257276416, + 1383109624900502, + 716799857703335, + 330312008070200, + 1600507595860404, + 272930620735186, + 1334851104852482, + 721364276529214, + 1395443410083725, + 2195864542962312, + 1950105332885607, + 420933956566928, + 991323263594758, + 1237930052565992, + 1120581264606900, + 23485536252046, + 809210933616834, + 287279223712402, + 63377404404589, + 2015207608270764, + 2149505307643974, + 1066243757078368, + 1982712012029952, + 2165341672473411, + 1662185695167582, + 1080277817854036, + 1648041306051439, + 193777439450487, + 1498610420678739, + 63684749450783, + 1297466715425326, + 903890485373215, + 1168660596280971, + 315361872326896, + 1098867730741283, + 1678422341033115, + 191612635605073, + 391327130618613, + 1009611670583693, + 733141461645876, + 2061754536840227, + 1313139656618736, + 1957676670051333, + 1048692107787629, + 1360941915071013, + 1960944413898151, + 266829252006549, + 1962835573146391, + 1611538713681781, + 175164886862715, + 1585663106739077, + 1188066775995037, + 1390224098363859, + 1494488915934949, + 796201314386755, + 970955419647285, + 1024967847623009, + 60215466446807, + 1917743825018021, + 1689746010210066, + 473778040020127, + 549175043084585, + 149585849597769, + 1323274081388307, + 839046480661264, + 948469601235558, + 1882378499794459, + 1382435403209482, + 28273907959553, + 1217183069274241, + 1130212738104297, + 1151781256862548, + 1172865377317291, + 98457579249972, + 2085130920251102, + 960151743790354, + 1492951525995221, + 693046247760398, + 1169877249489870, + 1819520849906365, + 140285878352018, + 1101920497966825, + 1769987298534478, + 569687742106463, + 1188423873414006, + 362948288038555, + 150937470016884, + 1229539082642010, + 1002316834807507, + 2102300174671324, + 2172076624840350, + 1126317623224778, + 577800807208041, + 457356627677650, + 858803884361600, + 1394580152381679, + 294938896458996, + 1354054573667176, + 284372117779057, + 447165360212191, + 1416990517477711, + 681242260209873, + 1935578061377844, + 1455632410721359, + 527929630332245, + 1152575227164744, + 1067202657730382, + 879138686251103, + 768210503323053, + 660643278363099, + 713402613972910, + 1469965671872039, + 995866124215083, + 1986575067091793, + 1026615062533378, + 974372013161582, + 1027889432703476, + 283367416366094, + 1986872107315980, + 1947625614739606, + 2108416022288618, + 1811015955868872, + 457465504614135, + 867186596192801, + 1636357062838565, + 1284398761611287, + 368963712023295, + 247933119527967, + 439076467303191, + 742158566734918, + 1728882438506135, + 1751987517845513, + 740952709081707, + 1588870281559295, + 166339774206923, + 1024090483723848, + 353638974735778, + 1052126831069536, + 747783856468520, + 1494215521297899, + 828382362048000, + 578285684509770, + 399273165080494, + 850279616557814, + 1603917739196793, + 1659280028862004, + 489843966948381, + 5696969802585, + 2098220247686387, + 1634986569812898, + 1915166199536450, + 2054850185620236, + 2120450500469028, + 417116988465838, + 859463241695803, + 278566780332582, + 1874520178920454, + 2142131410145296, + 1835923544795683, + 487974558810532, + 2124269760857459, + 286033034599429, + 1222751688532061, + 2163310097751572, + 168679277693261, + 2139170680640116, + 1171388977172661, + 364565569948716, + 54511014858398, + 77500797322134, + 1852865400820486, + 333072014652072, + 1925977242933347, + 1729462252502319, + 358075061960909, + 506389056403206, + 153038164805217, + 112294735668162, + 396576221199027, + 1163774260161952, + 2097280736362520, + 256782997133154, + 79949645951251, + 1073473161057501, + 554826345605360, + 176918446171350, + 76228539254850, + 1088735306334752, + 1314662382285634, + 1757108250687965, + 1802728308477558, + 740543652928965, + 1621478331328750, + 623280461813278, + 1324095157357706, + 1814509023967968, + 1162448266372271, + 580384480307254, + 1759410760807044, + 1685456216032717, + 725193067795277, + 2210311621470250, + 364187982997091, + 1638603327689038, + 722053539996012, + 1024590977392268, + 1058769239531460, + 565120384584711, + 2172989025542298, + 1564052046449843, + 1212960342732192, + 434842578395080, + 54318423683021, + 800541266731649, + 2194833686880384, + 2020708933633543, + 525521680899675, + 1296684649112710, + 607867165066500, + 725851265988002, + 74265026493233, + 938279165099196, + 1997464300020099, + 1789177433811303, + 1895870609003884, + 40047840686281, + 217022900783209, + 2145064678809202, + 2244770111471687, + 606399084383209, + 224282252953255, + 752756881841693, + 1733854593673293, + 759676539814665, + 100255841997308, + 1318054144080474, + 1813444572799062, + 2075009228034035, + 20019976383698, + 853472692855155, + 422189147350480, + 42895693609554, + 475883662526894, + 880255498707319, + 556350121117059, + 646746251209634, + 367031473511370, + 256760585078426, + 156180746253457, + 429109744351479, + 1291198218200915, + 379271636933129, + 1022293025492881, + 1166775147537181, + 1426948879227376, + 1725064288903983, + 1640404194121573, + 640187687201547, + 477971490346475, + 888914401568550, + 481973383279436, + 1327168483529234, + 138429276632531, + 2213445661764800, + 1060691513969516, + 134173220769034, + 1457059214446032, + 202420989223491, + 1400272357319549, + 1584689098951265, + 1258087882016277, + 1943560456488657, + 117248470159167, + 544247534534818, + 1672648085459196, + 356034768200342, + 1910171825608780, + 1809491796873913, + 1098285281114951, + 531600754269595, + 263346373094523, + 227243057668747, + 1139433479311289, + 1121442630031930, + 1060522045521962, + 684205849725401, + 643223517350448, + 2043715517330795, + 2245825515570544, + 234008573138721, + 1948692970343810, + 2185751812306028, + 810033178655680, + 433077134169496, + 780841931457340, + 1613778991176697, + 1772384759934906, + 1326976161425356, + 608917078302274, + 897474059950611, + 1834137594722182, + 1690335491672116, + 41271251820273, + 1990999670360991, + 1381806533544270, + 856252742222801, + 1133825801171522, + 1052390438168599, + 1052911548064936, + 569335593027093, + 117653846902121, + 416473175222776, + 158573284224398, + 1976980669864425, + 1763485306229046, + 1361876242821875, + 428375233430165, + 1981278536895123, + 2086907134804791, + 1360454237004416, + 177235648918600, + 630591828544199, + 1486928794137524, + 1038037676881998, + 524783196897334, + 1954240825093686, + 1662176018268873, + 254228698295611, + 650083102825391, + 739368430473204, + 992401327853593, + 1573852071959745, + 57075168204560, + 294165566180211, + 908513049289960, + 1597826175131287, + 1352269114382629, + 566961598477841, + 67151401091456, + 1361375313695886, + 847980273790683, + 470849524995049, + 137507355658033, + 41869444269602, + 657186291350494, + 1116090192648855, + 292112328064919, + 1477507668311536, + 753621385271629, + 1691773025619589, + 1835261663352659, + 1415259538527082, + 1405670744313489, + 2081107738172460, + 106759713385886, + 2234313778070411, + 1994774258420185, + 691959099960194, + 342130820399080, + 1896715017107256, + 1252973061684165, + 1705324240260887, + 1360354961122387, + 125335754319299, + 32809465665197, + 679863683101586, + 2065456696213874, + 1695497550847331, + 1649740355090889, + 1922663373515353, + 1816378797135079, + 1622039155675130, + 227669580673079, + 315371780465974, + 1637286264640919, + 903918392232334, + 2150744271357166, + 2029805730267829, + 433034573129909, + 1852721803154019, + 72344476169712, + 98442854315618, + 1842315651093695, + 274269736061846, + 1220043813680040, + 1284388014989571, + 1430196870211953, + 2205416515130708, + 1236463098655745, + 313459651247161, + 935821269260435, + 504747312611373, + 1054258153035791, + 1684145257158285, + 719431177748865, + 146497171332218, + 1716368012438973, + 1432400415026640, + 203479229640317, + 2167237470925641, + 364507147039510, + 2068984833069983, + 1378178602863940, + 1597925741505659, + 55410710016923, + 1419773169525618, + 2241851769431182, + 713273705307033, + 1718768787637863, + 266343340564376, + 63986198386643, + 659288661637867, + 1711796074176689, + 1822940073835606, + 1708520255612798, + 96239094585070, + 522881691463722, + 271264627687826, + 1770715175162331, + 2065016513944662, + 1772544127725923, + 357402610071748, + 548116306624580, + 309803498132073, + 284668606415350, + 1917683914259391, + 841677494676684, + 371476145936277, + 2070293535225539, + 1839819992265038, + 881438819745673, + 668551277530158, + 661247202761499, + 979249601866106, + 1706149044674186, + 890988119871956, + 769743990204831, + 2182798623228844, + 739887283417503, + 973393529343378, + 1275013904081901, + 1202286990174758, + 1674925160995261, + 434879777267726, + 339928130509248, + 793920870729111, + 1269480677980723, + 172971738656484, + 1339879553451740, + 1121607379454371, + 1485825539667718, + 1262445866737316, + 2250631060636753, + 543274966420511, + 1138602995764427, + 561941114094104, + 99861319076379, + 413559613765187, + 523166849244404, + 556213131040250, + 962134512104952, + 1165707639613945, + 95153835914662, + 2126341934221675, + 2052356554412583, + 157624564793264, + 864359187149056, + 1076084669471502, + 414708560361851, + 885734268100529, + 1763378624641198, + 2014424902720656, + 692508275743715, + 1558506833488763, + 1963765659131466, + 1195409884095824, + 621522810000733, + 473280176577785, + 682688706276886, + 1257501146336303, + 775934311398000, + 498650061556401, + 281158308243099, + 1346809368824078, + 947871327317302, + 1179956558592518, + 928678648169714, + 1293868876403015, + 1069097885335216, + 1774986622303290, + 1593942983708460, + 2222473658332172, + 2040594522642086, + 2154662009826149, + 602982438841745, + 491849965348774, + 1738560977408376, + 1181668032361376, + 1425042616761897, + 1166969683985094, + 2131962358646754, + 1693117879920987, + 394752148983591, + 1387625497323572, + 1280614467534956, + 1381880052161734, + 910079189460476, + 576160674299506, + 1581346262771176, + 1575925900380251, + 1201401663576168, + 237000836395814, + 984954721514832, + 1559107708077694, + 292716378124353, + 1510036412178464, + 1902007052885159, + 1849289462620965, + 1807112907227226, + 741454838102156, + 79234779028121, + 1096367906798827, + 201447850153669, + 1380397543434447, + 90601060830526, + 1253534546130986, + 555623649251401, + 53875731195576, + 314800522284377, + 1633408796041674, + 1312403304086141, + 1481125779886597, + 1432650719778455, + 1169005827865434, + 581627535139040, + 868135267978972, + 529696392055634, + 938853726151858, + 1189166964777710, + 1010453247918501, + 1076040638772770, + 1118299705032967, + 1572033446192163, + 1170214272009134, + 713890607950478, + 1552768224725119, + 971476294129437, + 310791841199398, + 2081086625035364, + 901925820445898, + 750276405583848, + 1071240952429811, + 1935376472318483, + 1008250083804028, + 686356634167150, + 475936643197736, + 996546121857502, + 1429527780492622, + 2015751958393168, + 1053361672503851, + 1103634423782273, + 1345678658713868, + 541366845682207, + 1539275632532127, + 870032174408613, + 763250528873947, + 237655987387049, + 1374043551571151, + 2173270043782359, + 148942177718604, + 1401065292253106, + 1238818882798465, + 536171370721026, + 1808812952133017, + 1727131256148805, + 1769244179713157, + 910442025927778, + 1068672139090985, + 1961742998401670, + 1728232920077395, + 515833269001291, + 1274145505923050, + 349835724422837, + 987110640109875, + 1675290915863615, + 680705330526886, + 684171596766771, + 1480207521329200, + 2160871100822743, + 1846679432522826, + 843534355812345, + 572790853686720, + 1639325719307435, + 579985412104604, + 725627989817617, + 1908848807917022, + 444278982605521, + 2130732351813053, + 578677405522156, + 1220565158399094, + 112509210586405, + 1698839410187778, + 875789792474578, + 865632580292895, + 1295528328873046, + 610620355237056, + 1491883015175086, + 473801161410911, + 336698799201813, + 1876672795649817, + 179899184816205, + 947860896372141, + 1282698777289366, + 765876328863400, + 286276841088194, + 1761131703764477, + 1856582316129872, + 1896318009527620, + 1888262706057503, + 1880756523288213, + 1345047984201210, + 338642806214257, + 131582392146864, + 595020508534188, + 2177993120902546, + 1703718235998578, + 1978687675878390, + 1993415901591924, + 1505397250206806, + 957679065132434, + 1839599399222610, + 651239105995313, + 663222913897511, + 1924660453727350, + 1448171701909035, + 191309601993115, + 2153318763597069, + 1477212911428838, + 154879451221656, + 1917276786931716, + 1670646289395674, + 970115757455168, + 1949386484795364, + 863099319703699, + 1557845687438646, + 627685252035968, + 2148097138355637, + 1056115100952859, + 1307350466795570, + 74553794724474, + 1866145157483005, + 975205390225524, + 1247063261171555, + 421175569794064, + 1339095812529204, + 707565152603507, + 1144575490331849, + 2139754416931056, + 1142248669526225, + 1861382155774910, + 950688984809243, + 416370202422550, + 2237344962038736, + 2235585731124906, + 2225924767528691, + 768920488168888, + 1572119372918737, + 1197879383147514, + 518581128659725, + 189299907836446, + 24953102209804, + 444190313900175, + 277396144334791, + 689972373150987, + 1358046603769997, + 1436774931141960, + 1259781898553925, + 689130394073413, + 381018039080829, + 625964427562209, + 1242398249891181, + 1404387071750826, + 2131207347919205, + 222294881110448, + 2179157137201662, + 1276633705216616, + 742095444602724, + 374730116502301, + 2200039269574911, + 1693741768685078, + 1991092412251536, + 1059992815943753, + 782466913033434, + 1329624907681082, + 1478078345451941, + 1027899781248354, + 842337302593663, + 504288720653602, + 1657539679653599, + 2137526880996579, + 2232538563442229, + 2190851159995972, + 67688290496665, + 1853334605238460, + 821971852397374, + 43270383331470, + 1192264958403679, + 951598976436869, + 2156678381493784, + 1342986811016714, + 1734154341595345, + 352542534607021, + 332460641440732, + 1840558648665374, + 292201487362461, + 16862651380272, + 483551748029494, + 2204932081479396, + 348016664647507, + 1474234807172982, + 1227150887370240, + 1290928424709803, + 1419678652228813, + 1035847173510386, + 2159125547886311, + 1658581962719539, + 918011558405901, + 987387146507869, + 103396149085754, + 132992296876882, + 1542472032900821, + 1694774966844931, + 1987036730044915, + 1301987839396674, + 1753155342610875, + 2106006084148657, + 1991569499517981, + 1424881755617172, + 653463748024474, + 399781974732459, + 2206793311332892, + 1751418651437707, + 2127142346086883, + 2135624362339432, + 1012110914457769, + 1843993514557139, + 1358025566013963, + 1238645712312730, + 1100078020793445, + 1238922612191163, + 1399704171974622, + 1089079547428982, + 2016856625956422, + 1807176051088525, + 405788006849686, + 633349826465671, + 612929435976899, + 862093567666561, + 666224561700212, + 1130998236264137, + 2027048744408750, + 1016758983102261, + 37338839761284, + 1611341315329333, + 2099594930345241, + 1933305630688344, + 123942279338131, + 686987256759834, + 422077936600826, + 1276065315946919, + 1577102899913990, + 1272681357246687, + 797434258272827, + 265925183433035, + 966630761678749, + 1259293203945121, + 1081216598576012, + 856487309044582, + 666992166825281, + 646467060290255, + 1022962301992778, + 1916280902006833, + 733491945142982, + 600282065164620, + 1035460990124120, + 1257214892636429, + 870616289078825, + 343651599867176, + 89066884379678, + 616754860451350, + 828789275238374, + 2114845812126754, + 790360204090503, + 443563279378690, + 1050205008836041, + 1284032862419589, + 760260346809862, + 1526880505924359, + 844030418931843, + 701575969632190, + 923439977935196, + 1481846912350791, + 461822956591382, + 1412994971560254, + 1915499290258328, + 1921239538775444, + 790879982027474, + 84760320504878, + 1323366182091826, + 840032905929627, + 467947840544267, + 661657592689669, + 2056560426333284, + 1244006924611996, + 146937038372908, + 1683572712358685, + 849020342236053, + 446298484634513, + 26520770041161, + 1409740585575432, + 1295536593999174, + 954544974301370, + 879591144826685, + 1688152182390891, + 335632393616676, + 14693450708041, + 174048225796159, + 934622331223025, + 1184577607707563, + 1967224144805463, + 1743868456523896, + 2011214625960327, + 649733619515222, + 733807384731268, + 1912315353514662, + 159283023347058, + 1252543150009241, + 2171470445448022, + 87926464990846, + 6976535740557, + 333158150203831, + 773041867128637, + 1609627846364510, + 2172825401250829, + 2187219040754887, + 370690110731640, + 1167956422169233, + 2213460161173920, + 1422040411083174, + 881492907653317, + 1317092673852971, + 1055604673033562, + 483541569912518, + 1760405587585076, + 838648779985076, + 1671091722191717, + 277553832221681, + 943255152585992, + 537980208821033, + 1118468080665837, + 871289580229780, + 1135012930773560, + 285850837392667, + 684119054139708, + 162216619130910, + 817254194027685, + 794023329716492, + 559639275666891, + 1102603267288027, + 574744103735760, + 2230136869536369, + 353525791231959, + 2146015235564474, + 544649731539315, + 295910556562955, + 443436765742251, + 2080783267294226, + 1994148300271022, + 2110171615264892, + 2220634578618434, + 547870792692084, + 1231912591770578, + 1743249746219556, + 315751432126332, + 1332135196147685, + 293103242100540, + 951672816006846, + 1229133530008842, + 1301200716704783, + 1215677005748240, + 73050044153345, + 767138636996291, + 300940034977426, + 554684708990042, + 399848438968297, + 1808599629662912, + 1199939751681632, + 910098402171679, + 1091652700915858, + 719935962566980, + 1412697099700193, + 1452651664343678, + 1823576920173218, + 620327428878648, + 1490081707870068, + 1882455492153835, + 47257703992867, + 1746102913799138, + 342913267623566, + 347762289191945, + 2048632416192598, + 980532729164612, + 2093633748757131, + 195315183601675, + 471491008157944, + 1916170568802117, + 1063198845920033, + 55612670674214, + 1825350924948673, + 1337806751781630, + 193802818276085, + 1890832512341655, + 1853755881216249, + 2139887262428227, + 1554990764901431, + 1140427340934706, + 925159123592098, + 1529390450507342, + 580812219023366, + 597654253836184, + 127519475894566, + 2016610466582264, + 1812336717034251, + 603864719838181, + 57234211376708, + 1475954719980917, + 2163388739325258, + 648056728796313, + 290939902229166, + 15463945824955, + 1268180466520976, + 1208962494682106, + 567211411099685, + 2072259182457790, + 515029869454459, + 1117339791915307, + 563143430033705, + 2136867462729569, + 1652167408856211, + 1500511108605378, + 266469257813466, + 642092936454362, + 1991550512762785, + 1582527536395010, + 1699232954371780, + 921476862213963, + 7659097747201, + 1392361357935445, + 2104898026588971, + 1611640582899208, + 1405016391235296, + 509889298279509, + 2208035674038789, + 2234233787319511, + 793694037120096, + 1773534880279248, + 1706573126006024, + 1353534136381762, + 381590494041687, + 1373754707841973, + 399050336845872, + 450768381415057, + 2106339733016364, + 1858947597408321, + 653221052695145, + 1861953020675196, + 1260249109774336, + 1508299359252768, + 2071387445962, + 1352090326803457, + 757785222856772, + 20279310215407, + 1571739705446653, + 575952068901831, + 1672743770327815, + 424396067541611, + 612018196294125, + 1491974868814908, + 2158404434722306, + 1343230977428032, + 519952416602906, + 77713637511676, + 1251631168549077, + 1060926661746614, + 125261670629526, + 2169080785117318, + 246721952605137, + 444920055037430, + 1494543288879328, + 652676110444949, + 355488130917432, + 869210572870823, + 357818227227892, + 300540029604029, + 1440569531057583, + 479094985836576, + 1643502391912610, + 542505986627519, + 1769945818414781, + 1148483752265389, + 145767895397164, + 1210168470551769, + 2229796798021106, + 1412244453942689, + 995809747347020, + 76314409530049, + 492422947673186, + 1094703357298795, + 2187759722465629, + 1024811974624353, + 1041092266917116, + 97825815858655, + 1124211993461252, + 1146298058265458, + 1301915577178896, + 602185418127395, + 529321957315331, + 1483446598481361, + 378906508164951, + 203921283010404, + 1612775446255348, + 1613815443895256, + 1172820803743836, + 1188146553485039, + 95705561312368, + 2003624328453848, + 1556486713160127, + 969879430920173, + 1813490252015121, + 1494539418463416, + 20480142027597, + 1868498587002240, + 283306455705192, + 541090135800530, + 958111004201587, + 1687893673787304, + 774364518266062, + 754660811831464, + 1590347275895027, + 2073367064073372, + 1853901400630864, + 2142730393450573, + 1775070030986579, + 1612619887897650, + 1166353467259407, + 953361515483948, + 296457772392703, + 1321702201284790, + 1441652436637242, + 1438611849386771, + 1143094225499788, + 1887741249174433, + 576253870429198, + 1218320345624585, + 1050642816181032, + 1951209349594394, + 341956373389472, + 412014528268912, + 670157550968587, + 1862996529771802, + 969703769856407, + 1699481097464101, + 1358924566701510, + 203411575306637, + 2056628187004419, + 1246597374715197, + 233074273443513, + 1716080223610865, + 213674688316688, + 515663382936586, + 949247114441776, + 110806867577833, + 826290951996036, + 358173203138117, + 772632853411892, + 1297505600365311, + 525598970942278, + 1469280141969290, + 1141406218903727, + 1399731896405632, + 2177285411821432, + 63286639329810, + 1431536192736570, + 1193892277365968, + 1791405627595197, + 1694463876456874, + 898036679484964, + 552897448127698, + 496708817865070, + 155408398419773, + 2245283504588441, + 1332716803885528, + 2243506059653537, + 1377548262655877, + 1542428473164048, + 225343899583009, + 1589324153581192, + 1996772342211306, + 1721658946043742, + 763509765007221, + 1228766770591867, + 1018131476372041, + 758541093917191, + 69252163648537, + 2102047040975772, + 1042890221609625, + 376837060289004, + 1096803697750096, + 88299074560151, + 878632914698229, + 1185032272019147, + 978105931227896, + 1290374257787173, + 514774756341849, + 886786572847659, + 2000806131303848, + 756598472447090, + 1341616412263945, + 1901535869179320, + 448845292629643, + 2213394677334884, + 531793987002111, + 1976522809612474, + 590788621276107, + 999069111347732, + 1526091908868777, + 1561229017535156, + 871640989287714, + 2144566051064478, + 1315259131643158, + 1729402480277169, + 864184498841540, + 1490599251562942, + 893837349630575, + 667155321776491, + 242925630061426, + 1572278790785556, + 1334678522291019, + 1882963324692216, + 847670738782362, + 41535874080222, + 2137212203104470, + 1406558245002594, + 1031704542074704, + 1511393001045650, + 1779762963222881, + 477558759907367, + 1478159837163862, + 1631402972430218, + 1073598858438992, + 1564295591805528, + 1821816574260459, + 1933298469659743, + 428633914258403, + 1884045417001923, + 1018956794760615, + 1724524503471581, + 704973034599228, + 27745313686720, + 1693149501389958, + 757011186436810, + 244958474272071, + 1401016525715103, + 1911051204022127, + 483164640828965, + 1097400479848254, + 1042124117989036, + 2091386373445330, + 953200199407918, + 1099223298865752, + 1437574669744352, + 640413928402934, + 340578090929527, + 1358233449919571, + 1859339324781858, + 169877347149848, + 812589624232732, + 1030130245003922, + 188251474007186, + 832210741759539, + 310534657488202, + 126310555925754, + 615813949678219, + 527240649253528, + 279770004133403, + 1476996551399392, + 406179584352720, + 690722740803, + 1835409053332789, + 1536091821825053, + 544406877017620, + 1401018656055534, + 1459306633615405, + 1169699162463102, + 1570963581408067, + 136256274651976, + 1990978128847446, + 511035779466040, + 788997104002606, + 2180261225576883, + 1656055454096534, + 567384016807215, + 579886933344830, + 1944522231157917, + 1405247119758384, + 1692817260570604, + 891069046564447, + 2228217697424762, + 1259844443081181, + 1584924682904197, + 718330960438869, + 532232508022728, + 1896329721191844, + 1145000391521745, + 1718843298162884, + 1776510752838204, + 1504020931861973, + 539614253513139, + 1248001302240929, + 199134836310835, + 886844911261870, + 1589498034440683, + 128246733708956, + 919306312161925, + 1650997785622418, + 1081884990578805, + 90435284118999, + 201997186842898, + 2190927155501591, + 328179842958043, + 1628490893922114, + 1730920762288071, + 1384946881328815, + 1051340828149556, + 1037576264976049, + 1137288421012826, + 1814189168975069, + 1759203234016454, + 863654662806363, + 1147534179279804, + 1887068086501184, + 566822892010032, + 208968777591091, + 1030677463028954, + 1349510016137474, + 1839189497551297, + 841694847303387, + 2250377055603691, + 1806937076235085, + 1868004133774155, + 338514057318808, + 175406982384412, + 2161647576309825, + 124197358745410, + 2040361284468591, + 633000769356823, + 122575042855356, + 1977228407719200, + 63611262144072, + 437683567381558, + 296012381201979, + 1863133065698240, + 712095007483032, + 1563654041987778, + 2173341602921581, + 1591016004395790, + 1859980353962605, + 1340166812660733, + 104288108116544, + 1768763745453532, + 1883451928146579, + 953323703453781, + 1638876326252478, + 922876775064808, + 1039469870943160, + 261202450205414, + 1832723102680972, + 631393743024533, + 178114362107991, + 214256867029074, + 1159286759633111, + 336044176342469, + 1876856714349077, + 2193099955083501, + 1317254874240790, + 1153399365108388, + 1182614751694119, + 2094795129723113, + 816799598084931, + 843953515113904, + 115818243422110, + 702426625809939, + 1199131026642324, + 664362036309642, + 384588495491617, + 1412640796784986, + 982679795341731, + 694171779795128, + 1916682601450534, + 648892518492774, + 2027039462134975, + 1475976427431723, + 1075382736952400, + 1386140639991431, + 1644209975710903, + 577597451191174, + 858389121982390, + 645011587124824, + 1059407442927141, + 604977905207379, + 1149874207069035, + 1425221641176383, + 2239657275159364, + 2185632106319294, + 449319914888494, + 1180157722956748, + 1063932831336860, + 1002682319963052, + 313558495685019, + 313895258002814, + 1375397163041952, + 149778833286397, + 92931652964790, + 854813692786135, + 147129794158378, + 2172825313889905, + 736665953066125, + 1610919202284437, + 241710460846987, + 267707864184975, + 1687774237279700, + 704859873116877, + 155437072493669, + 1061296365927254, + 187201961655352, + 1726629297621278, + 1016467933310001, + 1983839298884762, + 251341617004392, + 1915593269730859, + 1097403450863598, + 301439991241350, + 1941050322386574, + 775866081363392, + 1175285184198408, + 2001779827151541, + 1883626043249563, + 683732198590601, + 1097785601759184, + 2080884766363029, + 1977461066629484, + 2117633575216775, + 1602414936805863, + 1099784104234516, + 2198947490068354, + 2094503599315979, + 865784124495068, + 1639611630810994, + 864180365759953, + 513950310519751, + 2222737702951276, + 1664362526728699, + 965151425729239, + 1043163788527905, + 617329863650894, + 1427795730148617, + 2053438283646042, + 831888540626390, + 252023454778423, + 1141064170627656, + 1403196053035604, + 1846678216548398, + 1946312564501686, + 1979469346538315, + 1661550034308298, + 714715874443270, + 1879135477889768, + 1406323270628236, + 620867018084333, + 1415761780552022, + 1343821051931516, + 1408213204891193, + 2055736758457821, + 955770728011115, + 490461849390518, + 1043404858468971, + 1528211059634510, + 580248958898081, + 669830219618888, + 998430864074803, + 895436566748170, + 2103815875627745, + 1329987775105481, + 505408903293554, + 1975838869595880, + 1025290692734556, + 1351379387694553, + 999512206546785, + 260304977663013, + 783971889821546, + 638363055764478, + 2046755205323711, + 1971934839236824, + 2003194398627025, + 1584122045777170, + 115298992418733, + 1647544816216277, + 54145846286399, + 302396189070623, + 1322383735006549, + 504615599172520, + 1793257265559946, + 2000174572704233, + 1205489494434454, + 1926679835839332, + 1015875717965101, + 1666347023021824, + 1673202066217178, + 1840981345327946, + 2062970047223561, + 8069075237202, + 2176650396988580, + 462651676637400, + 1462667068976760, + 1293515701481593, + 217935585381642, + 228823493301712, + 1809932245544539, + 1740538823541980, + 2241815571406021, + 623339357129552, + 1659375268058604, + 69688996372979, + 1331334615568553, + 1601678255612207, + 859939715267546, + 190385045394789, + 26337541705638, + 2151346327682427, + 922126455401937, + 1713484560609038, + 2207190076330558, + 1620684600897126, + 575557395313465, + 789063040213040, + 1998512018861214, + 1452973494431149, + 913505510551188, + 123635618749345, + 1323870218305809, + 904541411044308, + 521185216497100, + 1861020652502933, + 2114482843512478, + 1595845536684917, + 168092803955557, + 588078071142320, + 1259580523833514, + 1681574811324363, + 2105612219373865, + 1900415905254493, + 1071899388772955, + 1666560323570572, + 414025892600644, + 334323716172256, + 1055859912773872, + 249513136159729, + 772561240258928, + 1867177546540323, + 1237180242770329, + 1664248537608379, + 1908861687861722, + 1950420851528829, + 1694573673737078, + 1604025862250389, + 858565755703193, + 1469219428140051, + 1876673665430627, + 825067895237454, + 1050684967503440, + 1025816783438689, + 166625159472448, + 2165620748463322, + 2248686419580745, + 1249537831446292, + 2225246296144990, + 2126027115704332, + 68901687194416, + 769757921637373, + 550244421748899, + 632353031868905, + 61446779975807, + 450516606142305, + 1212071372511944, + 1264526707789056, + 2010220274652701, + 1795539823544184, + 1038823356678359, + 1103400141390488, + 47291775158451, + 841223041485649, + 781548059167708, + 22439289918172, + 1644512137170382, + 1390430224834960, + 1825658843319458, + 647919420446563, + 468375387324790, + 462256967669103, + 1620593201863095, + 1054871455467801, + 1285131212755873, + 535685428992842, + 971192350067485, + 1244344692472693, + 11271353152911, + 1496566185250965, + 1856725464093487, + 399209233042493, + 768160666895152, + 47031091997740, + 708193903241781, + 77114676086049, + 1327235631925349, + 1235468680457900, + 789108599814362, + 703989418864523, + 231373480498361, + 811615851358609, + 982569991844788, + 1550905825383108, + 561603217339735, + 1709159716808635, + 489358773784111, + 2122865685435245, + 1263311149633060, + 373367872128460, + 1131087147831025, + 1762873816804635, + 2229844361031764, + 1838322170890473, + 1475288991856012, + 649584864416490, + 53808516268224, + 1072504598164053, + 516138547598844, + 609470605934864, + 868801811331692, + 2088154804656697, + 1695439288727515, + 699124097144637, + 320068186352194, + 569150118823905, + 1787253636423983, + 1810863504259989, + 1714500799312445, + 2197933662474132, + 155435340387532, + 243016399840041, + 1992913345264568, + 1461114695779089, + 1504045305644893, + 1544706849577353, + 779152286024444, + 889012019779128, + 2054652042046263, + 1158155528881987, + 213467371618280, + 2156410871034, + 336530240437204, + 1536886803379294, + 41551651468672, + 6101032445240, + 1052460170099237, + 1813186919900706, + 1274722306804443, + 1242375361679893, + 1964493477013244, + 612205584172004, + 264731725360, + 595222403226907, + 467271325644822, + 1835388627476092, + 973962619252745, + 706953975074263, + 592478747153158, + 877391152375870, + 681920894271545, + 952459613314684, + 1081993623408285, + 343425550893119, + 2196695620176418, + 272541113702959, + 773565672847206, + 809739873007276, + 1705717249797569, + 1831433177044746, + 1118275920702723, + 312920388385996, + 1189341770620314, + 736806407497327, + 826364621341849, + 1608380552458608, + 46568979763936, + 1740119994781252, + 1387798314751131, + 1048186508286752, + 1651594900696582, + 1373845035558950, + 606512565667745, + 1543720248279939, + 1155153903676507, + 2068075524865483, + 1267882797686567, + 858958134086373, + 100468216334874, + 57371303006978, + 91547897382520, + 153957516111772, + 158287825398699, + 447773975612556, + 417990988516079, + 736385915800809, + 1021705799263112, + 1233704343939643, + 1644634747631112, + 1800273542710721, + 595551846650345, + 1090783412315015, + 132261620607179, + 1669534490133779, + 1482963201943375, + 459938024414975, + 2185027328856786, + 117310409449128, + 514444901957838, + 44259298200148, + 1530972395389069, + 297113821563275, + 1443136443231954, + 1191107273684459, + 1221501419072208, + 398650716562266, + 2034268556637599, + 148012368438740, + 1494343838975793, + 2102715600189566, + 1186157391068792, + 1354924358323562, + 1666204848544149, + 167975360605387, + 297651652081886, + 80795328327695, + 155690429441380, + 2174401168531230, + 1333660929756136, + 216559153803772, + 2220939115645848, + 1794935626654641, + 189662083563871, + 2054025761949181, + 1846451251560744, + 208881068492385, + 1546710661134309, + 1889296642990369, + 957158422089474, + 2118764265789262, + 67460191562646, + 1081655409776800, + 67420795139887, + 759895026109113, + 1950257825182038, + 269804010075373, + 816662657730804, + 881279095598429, + 1016690828043461, + 1661285058168427, + 209785010163064, + 1220411993429388, + 996062336115163, + 1678691190406031, + 736412329633035, + 1206338607740841, + 1640896601613082, + 1537566976845099, + 2172645229340334, + 428490076272604, + 322284112749087, + 1484871474729169, + 1404362653060713, + 63891444964546, + 392197236220219, + 295664371174790, + 1357934579195511, + 1059091943013019, + 854591713944881, + 766787925928206, + 1884176298524890, + 2030194433530297, + 158172732474007, + 472248656485154, + 742625474459518, + 1795551391827107, + 772133186318310, + 225948028723619, + 1298109275165715, + 1079295326430890, + 30353040417115, + 1724880372504602, + 1089681892305507, + 1552541479103404, + 1563430587516754, + 2242529294545094, + 499957330801388, + 1454349673053252, + 1907351187154056, + 984957532187462, + 1658972896752184, + 1640885013849655, + 1847210350052446, + 1110062838734955, + 1978588157152846, + 962035763897520, + 1885979751385407, + 471126121147193, + 1609908843085850, + 694815661820354, + 979735707723059, + 772895097459730, + 2236650131157554, + 42083659183006, + 662250870688701, + 1050214311335952, + 2025595229024164, + 74578641182670, + 1237011406367288, + 543880121469974, + 1660322063227604, + 819163589557681, + 1344586493719659, + 2091191764628847, + 1448798137493691, + 596721605768830, + 46975778334198, + 328160101956475, + 358803858452663, + 1251838310890030, + 296726470669133, + 304462498854671, + 100821731709827, + 772684826972493, + 1277066799296989, + 1160756263538035, + 1920036957236641, + 1302436709575634, + 1567829178643313, + 2048839457821441, + 2152123632814231, + 1285579864532206, + 1250542395360583, + 1297661738986650, + 2178002073274929, + 1532935248039786, + 1194530102222725, + 555742909720991, + 167631594562525, + 1745127909896946, + 1696454752259512, + 1313899089601152, + 974609062550802, + 1778605278101348, + 87750645793651, + 53703754896749, + 1902869094456274, + 1632374541641409, + 160487221461865, + 843039022364384, + 1334808622037305, + 1141730535065873, + 533640268945489, + 543762188139145, + 2100265981909981, + 955549750147973, + 422492210513842, + 1671875029797221, + 1599249831114682, + 1206731711715936, + 2078174550961176, + 1030063533586159, + 1188561658435273, + 1781068150072074, + 596906940748270, + 1227459989969490, + 782357425810206, + 1128209173615924, + 969604050133892, + 2070037263983077, + 1849966301296123, + 1147103697680618, + 902999074582557, + 1676495757949693, + 1028871198249177, + 95606572570668, + 1917331890749400, + 217341287235949, + 821895607472395, + 240766587938629, + 24004363466955, + 1844153858665547, + 614181815285493, + 1545316892993595, + 1644442570024520, + 1110791157972312, + 1613798672893592, + 471013746007251, + 636510895213586, + 1448724983543581, + 993769304293025, + 1504032525475279, + 2150052604288835, + 1485602668957749, + 508829345341850, + 1247491039322213, + 739698952630348, + 1938007467843951, + 192206833421082, + 686558084195875, + 1347203740856928, + 1567835718643478, + 1437467711223685, + 691808260400350, + 548576553878188, + 454303279477920, + 1469618132429248, + 1005344227075836, + 1936718825838006, + 1650686823701895, + 903146550381416, + 1105305081978192, + 1308233401100243, + 1320876532301775, + 1150046496300895, + 1185976608060083, + 1054239645756741, + 309396741884350, + 734080663140916, + 1408141608605599, + 2216373413145907, + 2148747555208263, + 480032819895467, + 1551090928351943, + 2121318212010134, + 1290471524944909, + 1412477169070400, + 1869701473760593, + 1048482008320591, + 1990537302156593, + 2037386831730786, + 1196082666996450, + 324188108372025, + 1284045824297483, + 845626075968511, + 2090309489151476, + 2059119779684025, + 305228006679434, + 91173624725221, + 350940005305469, + 732825424170748, + 1102964407488581, + 1136197590300230, + 2112097699570699, + 240084629558480, + 1496514088197141, + 1843743733262000, + 1013943003798450, + 732588963062380, + 924225630994473, + 688809820597221, + 1387937732579252, + 2167309569941066, + 435163008232157, + 1302492373232250, + 912751887929627, + 394937157255055, + 422027568946024, + 67827874641954, + 257294933121240, + 902541643969974, + 1351208891093288, + 759736579421940, + 1282879004062058, + 1553928635386448, + 1356945557037289, + 828156586084550, + 578210513783898, + 1556750187478205, + 1703409879986300, + 1860269579168143, + 965110598948547, + 1203521362205845, + 1457181927583449, + 1147930353601910, + 1843822301989657, + 192906971309816, + 580472082156830, + 669178610275786, + 836718769215990, + 555359488270665, + 839663486345576, + 1260678291611633, + 215046397943797, + 736780337515343, + 258594263654888, + 1705580920866699, + 1186626522361473, + 1108738993189563, + 2057312112149637, + 2135861122334295, + 984986724024819, + 324166885072808, + 1441331078315487, + 1356873323017612, + 694615806313825, + 2162802597223833, + 2132947896595196, + 1551844040207956, + 1855928468627297, + 1571625823377665, + 527657219642936, + 1344094406427130, + 1511285127100613, + 1809575150641675, + 2136890812899833, + 431366915438886, + 1508428409160171, + 1087640158108345, + 1331755520144078, + 19896239330113, + 1525252886198035, + 512507506085760, + 659117694784222, + 1665767607683012, + 1452924229002559, + 1221691842710556, + 1839477996524511, + 270068085631753, + 1585781199941279, + 2106577992750440, + 1091164308619709, + 1192363623669432, + 594516955296602, + 247663884361228, + 1003385778261489, + 2227308446286437, + 1016768537957126, + 77237428260876, + 1995346831147029, + 1825587030698533, + 649818098661521, + 2035981486049821, + 1604912069922700, + 1180388549351087, + 1755366598239919, + 132159864523891, + 179776293030365, + 889641873546801, + 1457769303784851, + 154726529069619, + 487721248378910, + 2147894714248822, + 1668042040679734, + 1569542034104490, + 840204807382204, + 750592826011354, + 60803781108136, + 2246941409370280, + 1418124961247850, + 1562375405366778, + 412046613436016, + 1938032057205318, + 976303866492107, + 1025425879097751, + 853819795666982, + 793784879152002, + 1839903771224004, + 1862858295936720, + 1669135930323415, + 781299408809730, + 535904255879790, + 1038532252158782, + 1527575574385621, + 1503292780738602, + 362251137586648, + 206685287458636, + 462100264290061, + 1711861994272493, + 414558681978618, + 25332157558949, + 180711980146291, + 1050090358216780, + 1649851010523721, + 1758303792213344, + 1387873856871930, + 2046794048056426, + 612543989453349, + 1365593607286520, + 1267756863798572, + 810939390617131, + 1284125305152556, + 872161583939614, + 465701290238819, + 995939363957103, + 1023250541685259, + 623208993312520, + 149407114157640, + 1927298915651941, + 1742135883884885, + 570488155693313, + 1943037396952824, + 1931303564769045, + 124101663296546, + 192654307804244, + 1845206704792575, + 623239206736982, + 1346606181465256, + 17057562311964, + 1867487730482438, + 385221456591243, + 1881595456793715, + 1521258278250475, + 681345551386378, + 1349477842383474, + 1697242147432733, + 56411919144995, + 2111437185624452, + 1531222562926734, + 666873489029111, + 434261958958297, + 54976744357820, + 1305769983613916, + 111743311392853, + 2011467373484356, + 650714360412934, + 335745008075375, + 1437574192282892, + 1117945359301501, + 252048099867763, + 1178988137560534, + 333755428356695, + 1564770535415939, + 228629656584535, + 457045402114441, + 887945137446455, + 1255197700543608, + 1316969446712214, + 1152588259509506, + 2044308368652991, + 1356005941558938, + 685206270418585, + 411620920808561, + 776354754469933, + 1202508700581776, + 1822090051905952, + 1307182163988692, + 1508418330135585, + 1937415653837596, + 23624813726301, + 591728378812797, + 248727980616554, + 779948852535276, + 2210007672231834, + 2129541556944075, + 2119790784699039, + 726258513750641, + 588547725025185, + 151471168564824, + 503772765401357, + 1884597186538027, + 1582465226610249, + 2083838973080546, + 1580028904829090, + 989838202461051, + 1740264669974737, + 286676613435273, + 1202081405778958, + 1164817003895652, + 1393324394587671, + 285815202151883, + 1930222962015201, + 1680853578840406, + 2029109075596480, + 495018509594851, + 1289301230689414, + 1993163025743322, + 1257630328680938, + 1135791762649335, + 1126352342439040, + 1448195522379483, + 1812251560600835, + 779395071615556, + 923847373321421, + 1523930387188500, + 212328786209983, + 1753772749692913, + 2215901841841376, + 49101542926143, + 1880754658541827, + 1735450394153015, + 1630630626130749, + 2136790268421344, + 1036044685964685, + 1038733415942148, + 661639423255525, + 1381985366184482, + 1814207919333938, + 1672385973504510, + 1558337682047093, + 2030141897002251, + 123521672515662, + 126681057590974, + 198243938690243, + 1573490823964382, + 2129199319718812, + 1192577143434650, + 699925998629085, + 1724091365245899, + 1723304129714659, + 453239986977553, + 2167654901471277, + 2003223680613792, + 495213471482963, + 1542496497215257, + 1799647910454351, + 1104478409739943, + 1887167962834470, + 364848587194266, + 585934525337184, + 182442263465332, + 2215924739659302, + 1280967482714101, + 807466976262787, + 514755405300849, + 1216101194156547, + 711588728431118, + 1233324059085208, + 2150369729598330, + 1526940013054453, + 2120136702898299, + 1167116486403088, + 1929320592682733, + 36328436471132, + 1049211952295733, + 1216523802947812, + 1763050822810059, + 745344016968095, + 2120245558022564, + 2006171053284170, + 1176192764505848, + 94471483285159, + 6988413077789, + 2071083900636500, + 1088125452730806, + 1750009603933615, + 1365963112611749, + 1535809663169585, + 601847631686869, + 1645510164819062, + 1295941553966802, + 1740305124438270, + 820573885348082, + 835166806979107, + 556036524068134, + 1847560078802035, + 1972426717960420, + 1717435501615618, + 2071769961883805, + 597280432120536, + 26186010038278, + 110538037417931, + 352423539649068, + 305201376980265, + 363854978782178, + 1321663809302880, + 648892313872499, + 943068312041625, + 570293807960389, + 221124613533329, + 1532225894325811, + 2166426322120421, + 1995180343795843, + 830950019760295, + 680449627008641, + 1684857897727868, + 2239941579941011, + 803821278055727, + 465647231465303, + 834523049858470, + 430145313763876, + 862336364852417, + 918342498576865, + 1100605674010514, + 597142347186573, + 1872784555846805, + 2210893720810600, + 2231984555456307, + 140777025399138, + 952777536408455, + 2022835104322907, + 306012472377565, + 2124008105182908, + 1642701517355752, + 1705938647582999, + 122905466461269, + 582062114505960, + 1469454006760675, + 1534206299937052, + 338895708174078, + 1684981618108298, + 2137808658420826, + 1014472491999904, + 1717145784513610, + 2189188548930058, + 1925166687404496, + 1658265280941007, + 397058142781328, + 1719960900953904, + 1366831763738771, + 1901415978967064, + 1441347896143252, + 1992006333620748, + 134188077731428, + 1213744692335021, + 1744424745450017, + 871962869747349, + 1647211465453121, + 2177213894574095, + 749752595419211, + 300037572884220, + 817541882731463, + 1410060331558887, + 290561844549239, + 630943406824177, + 143660528183658, + 1850971921715609, + 1363557024363157, + 1457987174563278, + 1882314123181124, + 2168990213312930, + 550389181596611, + 484752012550933, + 1176464512830495, + 862208532700959, + 485104095869576, + 1593273175458054, + 737772217666484, + 94341977192372, + 824436047394079, + 1963342610061549, + 1594470063277504, + 1011648008616303, + 726210532091876, + 833562891188051, + 1232109859188466, + 269684073494129, + 2151145632029077, + 1047559911591627, + 2172706224493655, + 1829412454375928, + 1839073373230533, + 625813484230417, + 1465743406648940, + 1392852287842859, + 749107973591631, + 2022447942925744, + 1814842323060183, + 1063542339004734, + ]), + Polynomial::new([ + 2118343962731743, + 1019717792455955, + 34012379789631, + 2943349963461495, + 3419138534090066, + 2956407817829646, + 4102072798341600, + 1169631730692581, + 4434428458014976, + 2303703729283382, + 3736817222301148, + 277122461401965, + 3544661442608190, + 3142286285204949, + 2437929514069376, + 2641539111156956, + 1842991996773051, + 4396677246180841, + 3702784598154120, + 377481831911877, + 299236085296745, + 493672227601314, + 4123006534778760, + 3518258291116015, + 3250670818727977, + 2540769921689081, + 3784349223160734, + 4289894025986484, + 3652050700456841, + 4425783778318249, + 2116783582581411, + 4353870806672095, + 553559997945928, + 1800567054304780, + 1676118403541598, + 4199533222434749, + 3485703265319232, + 1593096815350940, + 3507985315241188, + 1023100214990383, + 3325391343200659, + 3027350868960670, + 3093895479440783, + 3860989674040429, + 1029350133294776, + 1085100594656866, + 1096185512751319, + 2102824963872020, + 3433053055606867, + 952186340213058, + 642016311950414, + 2194911478668169, + 1781229895528657, + 1780775626443732, + 2750102344567399, + 2884147167676892, + 1819548538401580, + 513664642582848, + 1686386175198335, + 3461483946212234, + 1341855717829450, + 274301458976745, + 1819659745167122, + 57051955646375, + 1313202523073408, + 126793617927924, + 1414013580637386, + 2007415854596129, + 4344185225122772, + 400590590322649, + 3322574152668056, + 952978137944109, + 3647718453333740, + 1674696422987579, + 2499937460021313, + 2657196950485954, + 1264445308978859, + 3036140857679464, + 3501986105167061, + 3553348618299870, + 1391051260021017, + 3716857457506880, + 582541168678461, + 2250413332511509, + 3915618697703229, + 1443215181250329, + 228151488082467, + 1545620772223502, + 482643184196419, + 1483661382043882, + 3949349557591007, + 3259106880307062, + 3991673960578449, + 1918527914506162, + 1750258668307094, + 4320473185058314, + 3631343019383705, + 1988170583221230, + 1275433410825772, + 3384164158095404, + 3091386181114456, + 2184289798276626, + 615469185371904, + 2223569261884727, + 3512240898818374, + 1564052133585432, + 4443746928379, + 1432704423924356, + 33209620381802, + 2951773086309218, + 248257473024183, + 2333197470785868, + 1353555246671967, + 1637512077862232, + 2604834801688904, + 3471710066256800, + 1925610628714693, + 2908169283759814, + 2962997691540025, + 71732638307328, + 1704377902664479, + 429319656139734, + 807192639290840, + 2325059270854220, + 161735535929948, + 2156789540428964, + 2735500910237316, + 2284075455728596, + 4002995174933328, + 3297654542730260, + 3449621361386978, + 247423815248312, + 2724195722684919, + 4170033107180951, + 1163270924409088, + 1527600996449959, + 3871073462213396, + 295724059132315, + 1612865713961232, + 1581354845407761, + 3141968994954816, + 2103482828676274, + 472878174824511, + 2656715139280727, + 145653803399292, + 1181702422506247, + 2658586780693019, + 1014973078694320, + 377642670991522, + 1429177035621448, + 4402108889695732, + 2882592813990157, + 3249935652246729, + 3029640178679400, + 2641247157916620, + 4213440486963647, + 1485972029452555, + 2979823002732375, + 4094363825461613, + 3953541172423747, + 2709938753096965, + 3690418223418335, + 1763080172008439, + 649573912252586, + 3096456311850507, + 4246508631696509, + 1907357176106080, + 1554613958661361, + 1663940601168065, + 1478522630790036, + 766904270583735, + 2577114022842430, + 3018507001539164, + 765358947271617, + 3002102148426399, + 1609505853383415, + 1291006953140595, + 150749557405638, + 3213440140759838, + 870891387096087, + 1432202624611532, + 907254100798918, + 1796595867219463, + 2517890796116244, + 3032386170013420, + 45190885969356, + 478288232918393, + 3005893902353823, + 478939312432020, + 1563468235376598, + 3494535066462095, + 2135582721257392, + 3576101822068216, + 1754662220054098, + 2118817570453877, + 1438765588325092, + 3385293234062854, + 2490488813963760, + 4277201147244346, + 4106377826643670, + 3768837018927502, + 364135732870578, + 3267404718946325, + 1225014401116626, + 1438744150655579, + 1338155822773667, + 939733948505210, + 1767455852342572, + 1792799969666869, + 805432877250341, + 4332161079889515, + 1788317667933237, + 4047001441141703, + 751609689693833, + 1631012863591334, + 1757280553868836, + 799399976787121, + 3440098245055397, + 3487135040009085, + 2548945453035664, + 2354533858410159, + 1775866211937398, + 457227958907176, + 2531345243316151, + 1843629819546346, + 3534869212373294, + 3452445571816203, + 946385091914442, + 411255903180745, + 3392034208434132, + 1266530683973297, + 2367253766863489, + 2603022522349226, + 950026177362377, + 1168898556357532, + 4492609525362271, + 343239629731805, + 3080364546501655, + 3565304545037435, + 2259187013606844, + 1310675740357722, + 3798831358284087, + 1855830254767148, + 469601682575339, + 2946049955808560, + 3731225931609974, + 218453434042461, + 292743515480998, + 620215674064716, + 866324344619532, + 1665969045650900, + 1152033034500505, + 1719934250247912, + 2904269197290148, + 2538211567240691, + 268797532193200, + 3262021100001584, + 3300562965430973, + 3192525760152249, + 3289584218366999, + 2122845763196365, + 3279595458388326, + 589278495980785, + 3409094847088345, + 3453698352056566, + 395079883700210, + 3993855325991985, + 3286714934511478, + 2312086303535827, + 1185769814679377, + 1953112846066343, + 4165072485321269, + 3234962683307407, + 4224115166311261, + 2659789685641266, + 20918600127472, + 873340860327589, + 2012426424743885, + 41295433179913, + 1814048311578389, + 156604170723849, + 782480307359606, + 2934881250312407, + 1878282672072136, + 2301380715851358, + 1857630956648339, + 113933001542152, + 381457147417051, + 3834653737160287, + 3679484767329080, + 1705088306434939, + 2098188395506227, + 3661025168616617, + 3153267934524116, + 200552146805755, + 541113780006847, + 974353282538665, + 3636061829082358, + 1868150297358538, + 246053586815190, + 1827932194426836, + 3735325814516842, + 523627131172919, + 1173006407350799, + 2871496731432758, + 3754325942282638, + 3094989462166791, + 157097333644095, + 3065361388263981, + 2191081176927852, + 670640915462641, + 4319711752883502, + 4367100260465197, + 4310531650478140, + 425181681244760, + 530497606298388, + 2001730935019035, + 3466547507749480, + 1686958028128752, + 1589314611341684, + 982959816008650, + 2619009268614561, + 1202661014170342, + 1874174441434625, + 1460900637354197, + 2249223984363436, + 1985120841716216, + 2474955427754871, + 2042133995712545, + 1437417975865558, + 725734340629821, + 885382759768426, + 1707699601726873, + 3955717444728056, + 2989207719953259, + 1891160288597393, + 705504047188747, + 3908295736043000, + 2729855078256445, + 3538314078227013, + 3907349516824310, + 3397099794888980, + 1495974568229722, + 265584549999166, + 1673374231751074, + 3520532207288531, + 527704985264254, + 4084689030988143, + 2531427865187871, + 897877630369920, + 2610981601864140, + 1068937039655307, + 4267365930647582, + 2947766849148751, + 3126794053090390, + 4354144618602601, + 711208765702515, + 792608927562808, + 4472299452686219, + 1268799530961853, + 2094590841948702, + 1761134382142128, + 1963172845910719, + 2685624919422873, + 711141499175943, + 1600309339602920, + 1595159141142374, + 428139741340326, + 654796515582599, + 3605493798764468, + 1220984735224572, + 2224462654190039, + 4297581312202447, + 314724235339195, + 2831321828302413, + 2448860237631110, + 3522305392026664, + 1233237281936258, + 2836255137409238, + 4316784235539616, + 3926989827345371, + 4044884818220206, + 1523509714120605, + 131593755483213, + 468327038822001, + 3358851136498131, + 759986845666431, + 816720812577511, + 1398634466159645, + 468589526447011, + 1150835085896104, + 2702517854253920, + 1982172154606133, + 1877388343559676, + 1810793044865233, + 997540870614680, + 3414075331495216, + 111614526397729, + 4111721248048480, + 28251623297883, + 4224358802407957, + 1970431067945883, + 4047776695323735, + 3061985870087222, + 471825365201060, + 1804122050841371, + 511730260366255, + 1575824262573135, + 4117848598662790, + 3850328604769625, + 4222479411837260, + 199045433749715, + 3274796145501722, + 1589545800514481, + 2603670272806864, + 616098749653245, + 617983652588954, + 2730029420614326, + 2075634348738290, + 2404826583338091, + 3060691593695290, + 4434396914833903, + 1623781268478798, + 4492486293677584, + 3600770325340884, + 2790951075574138, + 664007131324437, + 480771447832994, + 715969507433920, + 1066619023583825, + 3194601321283153, + 2512496479564904, + 2873425475304110, + 2726592184746862, + 1799265915477273, + 607289574084896, + 1020116338171348, + 2190266419270738, + 1187267470563505, + 3907677192486333, + 2365455999561710, + 349621251913423, + 2516364189349622, + 2673034818521952, + 137110760681915, + 4108729041345120, + 2871132671823685, + 3362126334431717, + 3475528159353135, + 1303919898219413, + 1040582887804332, + 979557576288775, + 2329383410527079, + 4311335212430257, + 3797653092194246, + 2484614573877187, + 3314916954234734, + 656369278018670, + 2717724565734286, + 2459307411194627, + 3456247278170361, + 3679083033155853, + 2099387890687603, + 1427808797607046, + 500545106400972, + 1444664556739739, + 2201068687070347, + 2213241795387114, + 3419634758887780, + 3656145999110019, + 2372308608697279, + 918519772521724, + 2679031360749865, + 2398688115005104, + 1409526732103575, + 3637685815471439, + 3094023378597028, + 1192837628250212, + 4294075740045468, + 2626627082140613, + 635759304008331, + 593014422107381, + 418807865097042, + 2235548915295989, + 1428387358223534, + 2957318075793229, + 1823201130983403, + 849611828504907, + 1540753942898962, + 1593743715699526, + 4412045087685594, + 3146109931830205, + 818329119903453, + 2158507279648140, + 1937396103066770, + 4252257963229712, + 2837877165737762, + 1486410098971542, + 3911558301284349, + 2742767118888364, + 2814660609376577, + 2521629463303803, + 835931819158832, + 988402657305232, + 27918844009901, + 1409320300758333, + 2897848762824963, + 1033122678714662, + 2520811548936588, + 3498159318839631, + 4422229604043951, + 569448879406883, + 4244340736573759, + 2475743990419402, + 540024792443553, + 2976167751295323, + 2123148700992722, + 1102701484805643, + 126354320551025, + 4432910043037901, + 1789808634292908, + 2515135352270853, + 1376536021637045, + 3410670684381957, + 401529407872027, + 3561716166732482, + 3090093069678881, + 1548759574240053, + 3855664402025316, + 127259206656621, + 625784485950444, + 3698538489481773, + 1710328912542643, + 1986388772696301, + 324437331416268, + 2629671728394238, + 1675655323591566, + 2579366035762593, + 65456324487857, + 3690620481454386, + 3146828668929434, + 694982447957077, + 785825976120100, + 3950911840713603, + 4047885102102141, + 1829450731695783, + 1502174047603917, + 1935916107641128, + 4489176944267433, + 1649318085604482, + 2684940537399612, + 3797486350139150, + 4256914230350016, + 1690120282393026, + 4299482138867147, + 1642257370435619, + 1308136204577066, + 3028024858223987, + 2464771056329878, + 4288925604617777, + 2630631142323192, + 3305819221086599, + 442645102896493, + 346959993549361, + 3782154698156209, + 3954370651600396, + 303968527993501, + 3359737728397478, + 2270136648669637, + 534137308792945, + 1634869965246732, + 4140993959374829, + 2342773201022904, + 3546342800418112, + 416164099047294, + 4153407703599652, + 3502505027790490, + 850192472513582, + 1500333211286159, + 33464857198901, + 2250075518174365, + 1476248073535463, + 1634094067497206, + 3617750458358882, + 414669447470745, + 4387091296822774, + 704233343304936, + 3049676518418919, + 219021497945415, + 3273031354737780, + 2744707641505543, + 2925596368416979, + 230860325948479, + 4012941440396484, + 1217598316805552, + 1825636854997798, + 3113021200545486, + 3226140597229955, + 3332581901432963, + 1092052445043192, + 3394133013331233, + 267386537574429, + 3595031946322491, + 4197755799480918, + 1879156207927583, + 2891044617841325, + 693888529410568, + 2404301159989932, + 2669123695131546, + 3787838292551228, + 3595267865024971, + 3132370607742343, + 984625223002309, + 4228022661428237, + 3027135735157889, + 2529995997153401, + 1253390395684815, + 1579662429327919, + 2905072561336716, + 2189908261508651, + 1867869372780110, + 4080375489484708, + 3215276265441676, + 2383493075700085, + 1850856717607255, + 1305452182818230, + 2489336975513367, + 1479675637722073, + 3352116692029413, + 3333661210642060, + 4496546848349721, + 1310177548620138, + 3439562273785475, + 4108668267249656, + 3562243153284911, + 2968693609991460, + 3581399962382788, + 2257234819700783, + 1502047467829418, + 1930415194162397, + 1769848244515452, + 1007748606814, + 762829930637240, + 2132385160272122, + 4233116099019325, + 3883739893788609, + 2281973804902881, + 2654330549427160, + 1264902902501266, + 851481930813946, + 4094959681554677, + 2113356339387060, + 2309920546672068, + 3727651699267167, + 320926657288010, + 4197750206709232, + 1720280317668158, + 1999304443998219, + 3570793849613283, + 5174811826616, + 4448748512315802, + 1825083102822107, + 1441413426507152, + 2651019020898537, + 1198220075836161, + 4308898507908926, + 2571636050740815, + 3305288889312867, + 4255992451339749, + 4142564316623289, + 1490689637787235, + 3079634426428205, + 2637311206186061, + 3401489524285607, + 644785117135046, + 1086710270172013, + 4208035886509627, + 2065264571590560, + 109670409479614, + 942796989210366, + 1868653989698632, + 292276197749467, + 3508126896948033, + 2157099113104235, + 1990842248313844, + 3308641452596724, + 965650639045913, + 1135530808252008, + 2671795689834172, + 4481421048501360, + 2848266995680723, + 393524149710508, + 1825863942720547, + 1932034394012512, + 2615982921828507, + 2549290322609095, + 1124732408873797, + 51119621054239, + 1665133045686940, + 358348941392399, + 2054249309557432, + 4303559922178122, + 2047831233798143, + 2493569679935800, + 4153035237890067, + 3092778242637653, + 2774624235149789, + 42625890497408, + 72715811381520, + 1670831718706428, + 2620455329093520, + 1567489406575886, + 2235327959562310, + 2367793308263847, + 3440897742005027, + 2677886947664615, + 1071838694398155, + 856761547389523, + 1383821880760892, + 2877271849119151, + 2319623552055481, + 1597763719310762, + 663471853821741, + 1170527632589669, + 3307082519273312, + 3482245489482386, + 3427546709621916, + 4262276600345516, + 2590625050492349, + 1285670763801980, + 3267257276520605, + 3289911974642645, + 3036803542557770, + 818427527909015, + 3340650029958064, + 1348302325147558, + 2054518598309304, + 1226269354509830, + 1078388697138164, + 2381044906207261, + 1431186888790701, + 2681767199926806, + 270252592237011, + 3678509200204352, + 124493839645619, + 2333243386020458, + 4500963806338354, + 3241547639166326, + 4129282267762867, + 117759556286415, + 4098269818203193, + 1882585124713112, + 1215163522243392, + 4148150029317441, + 3320391251501710, + 633667438209566, + 263837250274233, + 185713983475683, + 1111105964220169, + 3912106401982889, + 3057215010559727, + 3447887655407132, + 3271010322101067, + 2700391378419846, + 105311689432659, + 2369182776381164, + 1877686664335902, + 3880588997787778, + 3218704496556890, + 2668547442015069, + 2848093553936306, + 2821724782934389, + 4426007900627086, + 2595137805326329, + 1506838997607717, + 4443686635565671, + 101223356683652, + 1091362883235039, + 621652082152973, + 2791741504613115, + 2544441070610256, + 440334731682512, + 2219354038027648, + 1044230943183280, + 533821791950591, + 3884368544965821, + 312086549613718, + 2928225144645102, + 228943183231248, + 2308410777784465, + 3150443514398140, + 2184583858488833, + 3770017078433651, + 1139848439888608, + 2793291642434822, + 1919059437790868, + 3867315410427572, + 2882229190769212, + 2554948831818522, + 4227164362988865, + 4427118261150254, + 2501831412675556, + 4237002100300906, + 4122843133103426, + 925044107880171, + 1467030136223987, + 3273176423195765, + 3361621354503468, + 1210328583605600, + 2999902733544960, + 4125529654136782, + 411657026925263, + 608415437951768, + 2843638133901017, + 1041747092282432, + 1884163421054307, + 4362658578755220, + 3794462802292005, + 4306595479988219, + 79760119798128, + 2585251350138655, + 2168050841260492, + 476591156671192, + 169056292773498, + 957565012844789, + 1589733223523330, + 4255705233899264, + 3185597432281977, + 4323475576266566, + 2720098466715220, + 560264374615789, + 558067697360870, + 2331352594075155, + 2687509570634217, + 2229033493368685, + 593628214088414, + 3355589067118406, + 506846778365619, + 2475323391430938, + 693343727309222, + 341423434621227, + 230990735773837, + 113561165821619, + 3444604797117865, + 2869665974725174, + 809832441056230, + 3344741246189990, + 3578227603028518, + 1542769662187132, + 2706275796624279, + 1106903448268640, + 574090670638413, + 1681650969144415, + 2075796394758754, + 1203912501407512, + 3747089339839404, + 662272013201702, + 1908683407098775, + 706742208487431, + 1403870493290747, + 2298191097879491, + 2837970893925736, + 3727543514728984, + 1924373650924459, + 2346074950206712, + 646130348066415, + 2707642667830913, + 2254253911896172, + 986203159146752, + 1874751408521655, + 2873472639846524, + 614131881807121, + 288616907164399, + 3955893374533768, + 376028336624428, + 1002488718193018, + 4130672759215562, + 2307840055746729, + 3937932915951077, + 495903499362916, + 1968603650396154, + 1300749752425792, + 2580961462442187, + 3575096008909080, + 3594673059029819, + 2711047780656727, + 2419192140433647, + 2199694370032941, + 3447357884721260, + 1228820128815576, + 3965855176767547, + 1506456061014397, + 538047312514451, + 1022449814619475, + 2784036435176028, + 3630106587720577, + 3431962581415892, + 3183319416186215, + 1747783964832358, + 1918635506209138, + 2396930635737018, + 2015289955728382, + 4022176584412386, + 589601948148532, + 542971780511780, + 1512176783351858, + 2178500843362702, + 2644490822723311, + 2218619807256913, + 892042726387793, + 2389625949854478, + 849907546027828, + 3181255821853969, + 1746424660930241, + 3762202942101376, + 658242164094334, + 4387685365782091, + 2683493692503050, + 251444964609323, + 1255326617879506, + 1177116814650126, + 1326209315465387, + 4110374989637319, + 2029174225211906, + 1988988659005184, + 3399189493327748, + 1788709342433149, + 3680243139558927, + 2440217409988079, + 4129711571872669, + 34378960708485, + 1625588387069642, + 3066547495780424, + 3316285871700182, + 2222793398452401, + 489434251051641, + 678025635283548, + 1867679633274257, + 2770703192904795, + 4992410112939, + 3403475599303088, + 3677868427678030, + 1666715322053908, + 3364637375133539, + 1430247377560146, + 2696659691041142, + 2715380442295721, + 3518520597128780, + 1994449723633159, + 1270696919442560, + 1952074785569864, + 1377615659659643, + 1971221486729540, + 366328278965346, + 3445286338573344, + 4203913443128432, + 3679891932550865, + 4392924275805560, + 2786627598839405, + 2003988823496437, + 4481370620191406, + 3833004359681330, + 2482008347981493, + 4079830814385929, + 2023699571185067, + 2984698448841908, + 2773184322326134, + 4276203556249316, + 3332559195883527, + 1266969494835078, + 765546091757204, + 1973733366778546, + 187417206633827, + 1594962351618996, + 2984750775932386, + 2069522827765077, + 748199238888155, + 2054490538463042, + 957040552147980, + 4447077520726664, + 2382530125455394, + 467084127596369, + 154239496405173, + 3184964256594620, + 2110749814855695, + 350262100133177, + 3421208866178553, + 868253109612062, + 2916722327149931, + 3331380222099059, + 3300649892526074, + 3234715489638968, + 2018706553869741, + 3075413098888995, + 323905296705835, + 3307060110300368, + 2368855490182516, + 176785290202722, + 1510642517409131, + 1501863575264790, + 3678198434386744, + 712124992792173, + 3885763850816361, + 1807618378442033, + 2936576945954233, + 1736718779809125, + 1705107262186766, + 2213515310462843, + 1216564029579295, + 2480831886060412, + 1286826889185407, + 4068807108381143, + 3256781417574745, + 1227947299933744, + 587973224292957, + 1548230988620868, + 3839764199543640, + 3655268257076913, + 2196593026814316, + 1310986187802047, + 2939880632608460, + 1901357219326314, + 4434458634258540, + 4343484786265601, + 4084898897460318, + 1516930466216917, + 3551150633121499, + 486211655463167, + 2924155325220085, + 2733719010296135, + 2148062139748764, + 2685741980703601, + 2656679868619861, + 3622969005254540, + 2659249048923437, + 2163920101950506, + 2403465845195093, + 1210840436575993, + 533828645750594, + 3008244344797978, + 1727231619536599, + 135608010901782, + 190749795760301, + 3251597738338454, + 3013247006705269, + 1616245439688387, + 4467072063804518, + 2256927028935003, + 4424228459861442, + 1795085820132884, + 2866343086447908, + 1933351679723499, + 1725745654209178, + 885938141016896, + 6899217349338, + 3684921344438981, + 3330816758627054, + 2410310112128876, + 1290227834620107, + 4274047794166638, + 1969575092639473, + 3515331474598783, + 842615061634228, + 694493951900226, + 985414860878263, + 3320514484763468, + 2055826971348805, + 4447151135486097, + 1687584673949869, + 3995987819733057, + 1226695717717788, + 2079288660453323, + 1577951738372652, + 883413754931330, + 4124803770282025, + 1727684766254847, + 3061042308152111, + 3379697003974645, + 2127275512555089, + 3794081530848297, + 666690033769756, + 365594787462126, + 4450005986826179, + 88579274474534, + 3707179024898789, + 1002687739323790, + 4382277439743840, + 3412413140849874, + 1288756254422977, + 221693809511588, + 950755044674174, + 1894670034115832, + 2500647997289737, + 1769703672831920, + 4085360771311522, + 2737462712493497, + 2584045433154961, + 786729790954816, + 600497162768873, + 1958511064769372, + 1059289934476248, + 1011303497316695, + 2909622141122508, + 1149582084824935, + 1008156170764228, + 1111366729343792, + 3553664735949094, + 2182433700331731, + 2309433936167694, + 2718065222399848, + 2843132095443401, + 1042726741709031, + 3261862094839280, + 493906136840867, + 557222603254176, + 4347412607782812, + 914571238615606, + 3666456773629545, + 3523613286979665, + 4188056026599376, + 3148023130285414, + 3970182761273859, + 1625250658979800, + 2620209762325165, + 4183953176099929, + 1558650703000700, + 1200593338862909, + 324769991009784, + 2211155393650727, + 3453320204735206, + 2197161560717243, + 1000546851276370, + 4351620504095976, + 706470181418896, + 2937097907038941, + 2201338135456956, + 4085984645895742, + 2902499309136459, + 9450401180806, + 3785347630065630, + 2877561169917552, + 1131624144083528, + 4320882794063210, + 675360578298726, + 2390939754507012, + 3965387648869356, + 3011029022032372, + 1273507089145151, + 3336153968372912, + 473864817589954, + 89530724736601, + 229031847873212, + 1086388623506277, + 3924606475017996, + 3100939511134884, + 44589493549808, + 3240648995776140, + 1613695947689352, + 2584800901915451, + 2345832699249992, + 4157482123968866, + 1588070763603955, + 3390214949165084, + 462034589015470, + 822737752099048, + 1057172170906916, + 2398191986903679, + 1259510434603259, + 166580359876857, + 1054478557328060, + 26226445067239, + 4248307959715973, + 4173598348985854, + 3847029800936604, + 3393367028414171, + 2765387456778114, + 1594439871926689, + 4053327151114461, + 4281695670576382, + 2335129170784487, + 3774859935169016, + 2830196123379510, + 4322762318283001, + 4006894894785637, + 2283776389401011, + 801168131310317, + 3719318028711641, + 862400334421329, + 4007091346868924, + 4144313097868063, + 1969260579941295, + 3479853845912896, + 2548569150571150, + 1634929022343091, + 2007500574352418, + 2333874287354636, + 4179858199814448, + 3478321555441239, + 3184792352377411, + 1053750039048913, + 1235768543532776, + 2132185534386267, + 2931673033366879, + 1644963329876037, + 4326326761788357, + 4190942762855323, + 557610830878915, + 2143373675373064, + 2955130829394168, + 1882072829469398, + 3835171826587457, + 4432513560248347, + 1122604083084061, + 3128583320837433, + 1326640276574730, + 111454556842990, + 3273236637626639, + 3176083232391385, + 702409150508644, + 3027940427757840, + 1505058696637229, + 2886543819452820, + 3210554161249242, + 688361371369309, + 3219409727392237, + 2540505101134087, + 3734591267214923, + 4235574149932298, + 2836167941398338, + 1651872126623535, + 100041170759720, + 2113708314969778, + 1377585035553891, + 2682785181010705, + 1067757545967714, + 3231286903057868, + 1734120853181531, + 904782300943764, + 3329918215428829, + 535532201770697, + 4151447295415235, + 2120333269138717, + 443489388534789, + 578380080668630, + 1612373129763199, + 2467566911488798, + 993843361400267, + 2562717838454820, + 807509991954839, + 870496772818294, + 3850473342130726, + 3192645219771739, + 3223581946830000, + 2809467710000952, + 3491931793557493, + 3884735483119776, + 1025727693716188, + 3352630689457354, + 4320594379015713, + 3523457977828945, + 1094954908262331, + 304859528856874, + 595950582404400, + 3391742770032145, + 2344387394837833, + 3892114945788289, + 4194747080151330, + 3315449371783537, + 1568269088541762, + 1415363529491939, + 2553057974500222, + 3110796783230660, + 2816822297233648, + 741333094675837, + 1309728727609320, + 2171228690245842, + 1210571028863383, + 1388270556442530, + 2709296925792071, + 988844879759394, + 1949031869712314, + 3603449598559015, + 470841725171644, + 3223870428556796, + 78935791889114, + 890063167968616, + 4447244016258163, + 172433314720429, + 4316433988973751, + 2256912892516681, + 444089545000780, + 2974752118043990, + 1166759540419218, + 1594700189277284, + 2347497873276894, + 4470222586123988, + 658795910994200, + 1484676621949912, + 771931332567430, + 503791037127040, + 3461738630623618, + 1911936734560207, + 911305111574370, + 3459342252918471, + 2447643648448640, + 272187267540684, + 4333928047133591, + 2493461977956560, + 2534958166607472, + 775704177702392, + 2446278776043798, + 849446054639675, + 3188602894829107, + 1659007273679237, + 1220155824884311, + 2425285833776024, + 3257414849972363, + 362194601747206, + 419684292713716, + 2031283430692894, + 2749806843306905, + 1623286070947056, + 1913643369267354, + 2827337715126678, + 3398675076587689, + 518550909540392, + 3450890336426085, + 3541016824601433, + 3386412097083037, + 3808865189754660, + 2075251664969326, + 1448153064578563, + 3032816756180968, + 892974495876334, + 1141882059494655, + 664365862199843, + 481370117104923, + 4323229784034397, + 1595736836924249, + 3207801784522691, + 3559608766352408, + 1520580147724202, + 3730550636951140, + 4081900282314194, + 2188212454788797, + 1020900975321306, + 4243140586985214, + 1302769994688587, + 2945308305543370, + 4165785293528094, + 3121902860166832, + 1362005775568747, + 847307628194258, + 3975493257112856, + 3887669375509859, + 4244030193918290, + 2101737385803485, + 2486375348801264, + 2034616918659798, + 1598109205616352, + 4278472754711837, + 1623195257285150, + 1179103904353546, + 4407458732523646, + 2663200845639805, + 1638378700237550, + 2566840060945502, + 1738951443714042, + 2389257508140662, + 4214582865563073, + 556211714932970, + 2742038268485367, + 1443435148869672, + 3814983365047271, + 4334035302367151, + 4048682686232234, + 1133413222766537, + 316170248563537, + 642399158048698, + 711540975219490, + 3710012630357368, + 1482392341002702, + 988852166217104, + 4213637411956721, + 4287597847233803, + 3813755217646822, + 2450198124651235, + 3900308432362921, + 349981051209627, + 4016060462001867, + 4052479232160568, + 1676484451849289, + 3264149537722309, + 841505488706179, + 886655834907981, + 2065957107845217, + 2050510396799892, + 3016228243277049, + 2910213274171936, + 105417409315459, + 3280747710798813, + 334443930751628, + 2251310152424466, + 2174746104722975, + 737677972582299, + 3498618665848761, + 4443984718533737, + 2846363350041760, + 1495838379635886, + 4029466098672290, + 8990134965207, + 491153531763809, + 404234687840035, + 3996030304137477, + 3874655117341738, + 4088755277072784, + 1526864166595885, + 146398810882592, + 1798574022384829, + 892897939008047, + 284553686769520, + 1501956114913354, + 1764086104604973, + 2709383675267772, + 3127813585410571, + 712041076869373, + 1215992655137239, + 4372513407383281, + 1380773997024834, + 1186158114888129, + 3372049062728280, + 1305014119295881, + 1886481656062685, + 3076709006144754, + 2319476831132351, + 4329153799270945, + 1012076268992936, + 3187016785837406, + 1959954005218679, + 3529588613070346, + 3853840902839621, + 2788785537830630, + 3431838172657094, + 2263479785211735, + 2495177062882790, + 3313934509510368, + 4452653163657093, + 4099114252380959, + 1192162144879324, + 4363256745581488, + 413652708118945, + 4349303562263765, + 100535607955729, + 1003485143158531, + 3599008326744441, + 3271326658977227, + 940237329594405, + 3569295045107446, + 1028717259820589, + 117035609890385, + 2263228718263443, + 568916961405833, + 1380879813804459, + 1988648838489424, + 2886263127395920, + 3449672219359001, + 2385524492861954, + 1060742422550335, + 2202104671560204, + 1463100012098177, + 2622160837016711, + 595516830266150, + 1426676262493452, + 3772676349640864, + 1043940577904676, + 2980164363203612, + 647459019430299, + 1059704091589257, + 785401047290219, + 1924320064013528, + 3604520725220602, + 3294140663259356, + 552181252612995, + 1942343415755458, + 3563659312464300, + 1664955523020391, + 1723571725769379, + 3329484869969459, + 3913384445442995, + 2950400052017501, + 858724638155103, + 1312498444292522, + 1767024193237854, + 1542135326957175, + 2839671119241767, + 2085084703088564, + 1235977199030312, + 3794743099260141, + 4457173607877299, + 3660398877384011, + 2729279908306715, + 3545294912206188, + 4285874556331811, + 1313410026589318, + 3443215008943866, + 3582392041491135, + 3597191055129272, + 3049406803610778, + 315103517460416, + 3786852561948645, + 4366183864988211, + 2567780645570211, + 1511575381407327, + 917198187928848, + 1554331407571715, + 1266541558983462, + 38064433166335, + 3962553145400296, + 2239808072185809, + 1486205064268698, + 2497681154943012, + 91108277022740, + 3059590860719363, + 2220758232844730, + 4360907311520110, + 2219048439518923, + 3859545319338491, + 1950750048067264, + 2052041342777902, + 1429413500797205, + 3411852500706926, + 2516962777955586, + 705291950974941, + 1960321781172172, + 2579568294108331, + 889345773863307, + 1303616618928727, + 2707376538912593, + 3249553905492770, + 3425659498558450, + 3603230732978112, + 171484554772918, + 4244760084091322, + 2660980087282082, + 1879128164927574, + 4247908368950568, + 395507124001093, + 430410851084573, + 3126507379017919, + 2650890149309060, + 733783798854539, + 3201018797234364, + 1632428845560125, + 2920523782507738, + 3878378319609733, + 4429424855511189, + 2728484066236081, + 955111464573213, + 2796184156347613, + 169696795916284, + 2468267900971632, + 1462108979510339, + 2100511686041561, + 718727305402494, + 950856989953543, + 1948322439132972, + 1072864903096993, + 1315158305694970, + 355390809220177, + 1194982056876454, + 1322067119001247, + 2264019122311606, + 4104078532262043, + 1289349214649026, + 1754299858814510, + 2490270091874641, + 2349205860096879, + 1404196882210509, + 1324388134506204, + 2361768253958093, + 833936027618404, + 2184915533155244, + 3852010803408294, + 1031144347032540, + 1677083360955475, + 3286731363637511, + 3799612319318958, + 285530775515131, + 2394688908604446, + 650030710316988, + 640736736065831, + 3145413201597965, + 1533574886071665, + 3710628787038960, + 2068158683357637, + 1697052185936349, + 4057662309970020, + 503486427574679, + 3048830267221314, + 4218379061335721, + 4494263057999000, + 2317737189509569, + 1959526194166765, + 4214243152950614, + 2205777402470944, + 989930169207523, + 1181308824856336, + 1696271256610143, + 2820278999925883, + 102863981099806, + 1346042533815337, + 1593335441867405, + 3070958528998781, + 3171885032950885, + 1976824558926772, + 3376005258571119, + 4404421790007198, + 3574943341491554, + 4307460227650870, + 433140521780481, + 4370264972168587, + 3967481263638654, + 1666367984110839, + 702366841280860, + 2886013001966872, + 2128242801518397, + 3974206228782688, + 3482161846934147, + 3920606637609124, + 3274288314857041, + 3119846132803519, + 1532898966469225, + 1195861990519340, + 1993436914558169, + 1968116183636849, + 3279880501525724, + 2688061523584157, + 48548564159080, + 3554607336622151, + 1179916789248911, + 1457097074436065, + 4495451732211120, + 2407775750871383, + 4210343143901510, + 3707590915548857, + 4026487063456365, + 1235437857146926, + 1750687478119146, + 2195723389326369, + 1001522861453454, + 308365225617372, + 2659827874155045, + 1657201989546336, + 1044935032662582, + 2167983639296390, + 280997282491371, + 72861714489436, + 4406933625762918, + 2414414634858848, + 3036237051186366, + 311439570322450, + 3724395738109947, + 2177099540203880, + 2088243246427534, + 2090180510153206, + 290948044975478, + 3039740372072437, + 2393348764826300, + 455082141394866, + 3974894629594511, + 632468662973925, + 4384139389862678, + 1113210218143795, + 1342088487199242, + 1252483105073914, + 594367726586754, + 4020098840002628, + 2357391303877966, + 2553104449577313, + 676255519331036, + 418171248046337, + 4138498024557706, + 2575207363649155, + 3778035418279225, + 1949832926451453, + 2473427370587476, + 817950902316028, + 3343359902824445, + 3579361581578480, + 2496073148083329, + 4231119412735399, + 2483068755228691, + 3635377340057020, + 940148856135672, + 231724867325854, + 1101478596359661, + 63590669505712, + 2354909402796423, + 129523751802902, + 980702425814862, + 3591844543793429, + 1898213295131618, + 1718880721072342, + 919750635730607, + 911729057120114, + 2259951334058414, + 608195813521606, + 3781008204500415, + 3071850902116963, + 883976933923662, + 3836580735043953, + 4030228841613022, + 1818837918610212, + 1588433834792323, + 1102996060827120, + 2131037051202603, + 4404276608917523, + 1957330079181043, + 827025549355741, + 2234867112448009, + 985670348164314, + 1360971082760998, + 1505225365467315, + 1070039015821868, + 284574848622273, + 3397626470994094, + 3437891566310941, + 3295125237895525, + 1349762255355231, + 131592618349880, + 3375236458374575, + 878449788425875, + 245005043744069, + 2216638913270428, + 4067393012629877, + 647233344906271, + 3415969869676488, + 3386030187065585, + 3808038557320066, + 151716314633451, + 4156094633646129, + 3569465867918116, + 2131389292746523, + 2592185895638939, + 344706564149798, + 3324071865611959, + 1943283133838241, + 2038895513889705, + 1639227663368281, + 551164498246412, + 501637625706440, + 916246764513149, + 1350125361994666, + 3365842321073248, + 3703930579945738, + 1702034537880954, + 2656884579328387, + 1366904308376972, + 295659666049910, + 3046559262479701, + 1104657185607837, + 1244904599983896, + 1913830212993009, + 1618655697266086, + 2179026612253262, + 999962367386944, + 3300552468411942, + 3220388905516413, + 617567503209787, + 1060018226086352, + 3891579945278149, + 3017714758012410, + 3403943041639160, + 1710585454935504, + 285013075958424, + 4148647282347070, + 3200097839042322, + 700273730713558, + 2464987804335822, + 125843009195375, + 4132390460669267, + 799866448977621, + 1988451810187388, + 4193262691805581, + 2064902013134976, + 546692450363518, + 1849165124903650, + 4477861876812066, + 4278858229250237, + 476846093329063, + 538370063866817, + 526080804641710, + 2513254443583328, + 86825548319214, + 2939399892578059, + 2398260766336452, + 718065851667321, + 1161840039243022, + 2512951346195665, + 2748733449259575, + 2671701455444633, + 1571263785167330, + 168416783314682, + 1511154960957740, + 2227768806816911, + 913894267676040, + 2583385714549201, + 4242420088108029, + 399530871420588, + 846535603513902, + 450321692228756, + 3541065380148430, + 2994244620958698, + 2208841548298438, + 664604707316301, + 1778252141296186, + 3341735715906082, + 3359292201176962, + 1970624694593881, + 865561336550201, + 2629416206402319, + 2685662725124269, + 2309985539236940, + 4284195878715432, + 1710839971725294, + 2791163000519676, + 249378052270135, + 3473416999707077, + 764572929060627, + 9048381695619, + 2408844359142183, + 950192335115007, + 137629383725430, + 1932051963712391, + 4363388826113373, + 1712409139911771, + 3987583105126903, + 1279204613079463, + 1794576835542286, + 1956213740636851, + 4432088651362365, + 3396049746017561, + 3311572462973590, + 1515294242075476, + 2574605945734530, + 3016383084433789, + 512332391698785, + 3207939045642884, + 3570147317106849, + 494537092530272, + 4386094665969106, + 456250225980097, + 480622731862232, + 2518672915829820, + 1339524666700120, + 491219423433877, + 4043738016233736, + 2244709481405585, + 856808370983053, + 3830647771633584, + 3913874936863777, + 461812147035609, + 3158488711752837, + 2705421864519889, + 439485431569648, + 4156529781903522, + 309993107354233, + 429870609478472, + 748957212053759, + 3739971528054212, + 497526749182345, + 745960801812620, + 3632987142372566, + 3720132070565138, + 3043605047600303, + 1734996423927570, + 2308948138527734, + 3047165854745672, + 614180285234785, + 3537309934780792, + 1935992874077029, + 2796617054194177, + 750722902006553, + 4127823029595433, + 2076701151791842, + 536583020985422, + 2326376371479214, + 931741005079153, + 3476295022971287, + 1049875595985825, + 753467462686657, + 4397874029644380, + 617900962976886, + 2774682882535734, + 140600841439977, + 846725474255, + 2132683636928425, + 3862419263992316, + 3341591898907839, + 3046773075167480, + 301383475267097, + 342748790094535, + 2598552327985414, + 3301729049668249, + 4495609308610241, + 3805686240041457, + 3000753149659638, + 3078464382010965, + 805428662354935, + 2628111707005387, + 1349101071758276, + 2841608760024278, + 1413029828012988, + 95013476147298, + 1157819273549223, + 2468805304781415, + 2817160042468210, + 2716629271824822, + 4166859480408545, + 1603038899251127, + 4030916495444217, + 3537992242251815, + 357893082638101, + 3767986707113202, + 1440270406084256, + 4188091441869533, + 2469820292294035, + 1445957810358740, + 644326575749400, + 3041282511437981, + 1969982610485872, + 1653668694334877, + 3463779809570518, + 2809558600772435, + 2762410004752895, + 3908204747874173, + 476657892050409, + 1005048485990272, + 1118161385254060, + 2307114314270317, + 2519302455630280, + 4331296718711076, + 317647558500708, + 4122613577475372, + 2180639541566515, + 233806547341284, + 1305719507125634, + 2307709469787770, + 4420785797413885, + 814696934814230, + 1929599420682351, + 3392805229095665, + 417506640486191, + 3221534067368934, + 2898868621808147, + 4129981095807864, + 3142353385618024, + 1717960584338263, + 845372913125996, + 3797849288953161, + 4185190104623980, + 3005005644263449, + 3817214131998265, + 4248409450639986, + 2947044917004314, + 420202012176601, + 891904730728987, + 347582770206596, + 95058528644983, + 1474983069013288, + 932419088870835, + 4448696677828518, + 1952848719902514, + 525780267114936, + 3277671039322554, + 4062099839403426, + 629990505538401, + 2457459070563429, + 987692744544895, + 2105527649579746, + 3654618816857105, + 130140183522125, + 2288880987458447, + 3745515984712744, + 717998123823806, + 226928562045616, + 4076651057940340, + 990334520342843, + 297930888094812, + 641065683004972, + 1050926617306297, + 4414996160023131, + 1214764934488612, + 2786725463432233, + 145623747710418, + 2062796819049608, + 3187270216544108, + 233419164691372, + 2754714592181533, + 2347213416281974, + 2441368946154292, + 1430472388244163, + 3008616043485031, + 4087778001112524, + 1878829831177774, + 4210080478115188, + 2226626144444699, + 1525464924173015, + 3958706648189962, + 2266111362864343, + 1383226317965068, + 1619056006311092, + 1894454002151170, + 4376245504678244, + 2716016382781934, + 1838971473706303, + 327183713876080, + 577677031377998, + 3339003826342514, + 509044678385478, + 4052787979400830, + 3296059784926744, + 1256722234510052, + 3979831889994420, + 2162865253957394, + 1131764933118037, + 901667668757543, + 2383372170882603, + 1658786842870042, + 2325145433049645, + 3208674239343826, + 566827604240067, + 3681673520425415, + 2402502497894931, + 4157710262967264, + 1612164281351144, + 105720420098139, + 484858603624981, + 201034244274521, + 651441629026850, + 2783406290169688, + 2670218596722273, + 230939630936618, + 238268588913388, + 3894341178372693, + 4403693091446419, + 819137909180817, + 360990165860658, + 1081479288410434, + 2773952751242280, + 2266216411179350, + 1346780536566008, + 2431450184284562, + 1692492659815742, + 3366112520203731, + 1163894714673025, + 4434029134249189, + 1133257543886761, + 3660973350282996, + 3379865865249558, + 1187243059345783, + 1427890749693717, + 4432670672829832, + 2425326157269180, + 2580222708488410, + 1588337967612514, + 655071003833531, + 3455922400837149, + 4210500031357214, + 2688769126212498, + 1625182064809042, + 3653526889284316, + 37318518431247, + 1097373580704623, + 4200786916496893, + 556759748789491, + 1839992384278824, + 1092525482186296, + 3293388486553726, + 1843750639465219, + 3247107852833584, + 3939664282827905, + 3881784720911835, + 3971932620040303, + 2123072693755088, + 2806146679395771, + 3774072518897625, + 1671007596268642, + 519766491598809, + 3262907680843107, + 1080150135484356, + 3728630571837983, + 1536011278652731, + 4401008298917362, + 966426904825619, + 455452982925389, + 4246001560332270, + 3608619354032040, + 4435888206393356, + 943589119432573, + 3497613712048084, + 992322662094525, + 1840668354407500, + 3849575111224347, + 2164069409870203, + 1740704278847231, + 245792559307636, + 2307642903883646, + 204382793450424, + 3250322073107176, + 1672494955759343, + 1596700875802612, + 3268892811802566, + 4227917366510158, + 3360257333637872, + 3447546998185245, + 4049053537829082, + 4331358183517233, + 363935857513168, + 4018030050784879, + 1302774277001057, + 4237926613556041, + 3469906348616189, + 2810293499068564, + 1644068921956930, + 1472073400781237, + 704645023415023, + 4228554183326795, + 2664535003574646, + 2151336080998324, + 4031302611992889, + 3608937303294182, + 3333342869723797, + 2119565716415046, + 3844991540235918, + 2394648681514827, + 4199337780147534, + 4398959669943098, + 1809580212214782, + 3002083038787449, + 1768339715771232, + 3490872537612591, + 3548307103287718, + 4037700736566018, + 3553109642200485, + 62211193704070, + 2753821494109503, + 4134647328389347, + 1257528236080618, + 969401825890117, + 2261836892047019, + 2808513316982821, + 1656420198901771, + 954480145837589, + 2809694768047719, + 4498525586584187, + 13161213120324, + 1723506014840119, + 3809182298515231, + 2567622979393884, + 4294032921022068, + 4305634471267692, + 3454525693250156, + 3407936335726243, + 3978478379082639, + 4027579417735033, + 4433627867221022, + 1728855422388289, + 2560418383054070, + 1083605698318355, + 1302250039221557, + 2149722974135801, + 1564861785222633, + 60104670991390, + 2675628655371847, + 4397355695931454, + 2899267146821518, + 3320706142416526, + 3281915021369491, + 1032258589685966, + 2859599591881156, + 862032273889793, + 3416826397358772, + 20383308193893, + 3953565004155539, + 1598175186872012, + 3391604431378333, + 1857208710477246, + 4223117381196055, + 2010298827362433, + 2691789062344585, + 2551919492513635, + 49843751735166, + 4236615031566017, + 2062799121307568, + 1706498676192598, + 2028079824142363, + 3053518048145185, + 3675747522577932, + 1927622119235055, + 1922913648367809, + 2443754061957614, + 3469347533086809, + 958785592673555, + 4441318035216335, + 3698546637514555, + 2713016498352156, + 4267703345893275, + 623714535627198, + 2993146593078341, + 923164478110871, + 446051841260886, + 1851680450496710, + 2949464102121696, + 553296658711920, + 1493115257126642, + 3146503273629723, + 3365984237573944, + 469487726325555, + 473181087870603, + 274935267543619, + 1652846617591217, + 2263781954085040, + 3370556068981867, + 1131962279042278, + 2143845248365432, + 76166921839705, + 3595531822353076, + 562809382454947, + 2863409588620454, + 3330355418433792, + 198567811913472, + 2334031029351150, + 775460769035321, + 2736935350267400, + 1204293673591941, + 1463917475712399, + 239089031708833, + 4644366926400, + 744163110559595, + 3695462603674505, + 2188386594933735, + 2932266457332733, + 1309114204860736, + 1786407308237132, + 2071568231768759, + 2067251446485532, + 1667161490056827, + 2130206466611015, + 3830123607424446, + 1643513996373810, + 339650416174005, + 322818947761589, + 4017851793824613, + 2196152628636105, + 4448558091681806, + 3298737137446259, + 3755975681342290, + 278299668725278, + 2474660505114669, + 1122400482615889, + 1049504313980498, + 208516429677989, + 4178958270780889, + 3845831130170724, + 1836225707473956, + 1209919564298574, + 630249626632810, + 580963487506352, + 3106899760672398, + 2218090601061073, + 480732684666306, + 2809466406112635, + 1960089951981008, + 4003702129542454, + 3198157424099237, + 1547143346229736, + 624265971919306, + 4029331647202760, + 3949077325588640, + 1325721998890029, + 498081115826730, + 964091578049826, + 643275614698450, + 3319747865729244, + 694082759477294, + 2685770054354076, + 2443722901480967, + 2198122094398149, + 2175879838626520, + 1816894129081586, + 1208121998049505, + 4422863196861458, + 2889110611947852, + 2471054942723815, + 1556342011290962, + 1317866241437399, + 1158529810133863, + 2497179475452436, + 386402025366186, + 2399050906490320, + 1395821041054981, + 4173022488878379, + 1873771554518775, + 1230327584095312, + 2714900711412198, + 975405597361692, + 1695205407313078, + 3938746779608283, + 3975230956954132, + 2272628769959047, + 148757373446977, + 1237291971553717, + 3201297795962551, + 4469511724371431, + 38988306973157, + 2540832919461905, + 343976530110533, + 1371065366528053, + 558328316260868, + 1815651515654535, + 467032636737579, + 1335509010846418, + 2921355409462300, + 357337288735838, + 1342622451141319, + 906137323552348, + 1925748097341601, + 3534363807333892, + 3251426729321981, + 2688943152293342, + 1828778408302871, + 1597122636583043, + 4190132934026641, + 2638809491485351, + 3807850299919594, + 4054335525566812, + 2596168904905260, + 3440452207045801, + 3814795434636583, + 1163514872090420, + 1958249977209177, + 93123020761693, + 1786432488878191, + 263319165432134, + 934875064603223, + 2843558558186249, + 2806129811733923, + 2657540201560409, + 2630611574282470, + 1870051678572259, + 4138783248917078, + 3453943057570012, + 2693394562099778, + 1184102267375929, + 3818246184681643, + 1136891631964923, + 1539887917401886, + 1996149915702663, + 2894727481395156, + 3116108479145717, + 2337070371966918, + 1277333373554878, + 3725179990299957, + 1877097376473581, + 342109979385049, + 4124100512239691, + 2801841238204426, + 1483029351093991, + 1995819474418243, + 639534653891540, + 2050661153239407, + 792285432173439, + 2159240393365445, + 3139587458626374, + 2498355844465426, + 3616927499436425, + 185737018023819, + 4268852605426992, + 1395201069963317, + 1972701807725427, + 1781833305331709, + 2227833430978267, + 4120378022341474, + 2325127852364672, + 2844303452751783, + 3699094594315313, + 627221280345986, + 3001163741098335, + 3295732567005814, + 2763795026912642, + 1767173541887422, + 206034526635169, + 1568917123051710, + 3055334644844942, + 654610480723093, + 3772291445747099, + 3275306222104236, + 3389368164074716, + 604696335488804, + 3229276664465365, + 1886695446980883, + 4433107439645329, + 3191956018786260, + 2690869092727988, + 3417774715639102, + 3657017503578478, + 654644753436196, + 1698395890355242, + 1277408727850288, + 1411809897337544, + 3502123069892268, + 1683177162283363, + 807908397482407, + 3962188346366101, + 845411317710332, + 3183912890518706, + 3357642552921209, + 3110323574683558, + 4405259862622334, + 4344683336526651, + 957126655613921, + 3203151431351851, + 2505123386853663, + 786404414842002, + 3550610966149916, + 1383798883994572, + 478836810732811, + 3298219997065836, + 2599027658666276, + 1760202263358051, + 448890972864410, + 3729434859698014, + 1497892390347233, + 2375306673194748, + 468009100248994, + 3409353863010205, + 1823574557819885, + 118505136692308, + 3315325488541372, + 2746857978218899, + 3468827501853520, + 1237139685064271, + 2321714606154753, + 2315424371079981, + 1498393664481729, + 2949737375345288, + 4459799583453876, + 3544185513251862, + 3740178336512368, + 1193578095988476, + 2877260521291884, + 2063402321082408, + 3592211736788830, + 2982922990840814, + 3502779068237782, + 4038066121577346, + 1871357607741718, + 1119793332354475, + 4164516334747782, + 2410334872388830, + 849951537137992, + 3224050507699226, + 4454809319987641, + 2186875030450215, + 3984168658494431, + 3145318057338390, + 2632545423267018, + 1977306330095000, + 2837811148566783, + 2566666939466235, + 1312015403727311, + 1280596170686163, + 4061980186230060, + 1190814414566468, + 4330141345309601, + 3360945914078699, + 1388783181967523, + 4331198111103686, + 1482302785847668, + 3485542180504467, + 3261717429402767, + 1958917558561587, + 412511109417166, + 1633205427911295, + 1239636554197893, + 4451458154241385, + 151979325996431, + 3597965022330706, + 3768057800298690, + 3340242174039776, + 2903320281464376, + 1725946146882669, + 3574576673611079, + 2194097546938102, + 4073588663344360, + 343573142595369, + 4123868425378684, + 578558584795698, + 3653746133179919, + 1077548988776312, + 1569541397805774, + 174619175782056, + 3268491253001894, + 2314563348461995, + 3953031995810196, + 3163217871155963, + 778469378371249, + 487302396544479, + 3755356508960851, + 1812316544933858, + 1486869872818455, + 1505194696055874, + 3662482850499811, + 2548308506755862, + 1144390275248386, + 779429388806280, + 151272806246497, + 3554241263583610, + 4440248922512737, + 411342092419115, + 430325114146722, + 3002482844623032, + 3690235900792032, + 1055655335943503, + 3300701233149463, + 647279151996800, + 2072436913455788, + 1728270371090437, + 638823862421289, + 1326771014114491, + 950491580142343, + 3769443659040696, + 4047858628087362, + 958894189263385, + 2010164426970532, + 1056306802081389, + 4207815876055089, + 1694885802278115, + 3075279224334853, + 3561519724649807, + 485705112184008, + 2127140566313721, + 3933948447607879, + 4159809699316074, + 976534254729255, + 1281856529357169, + 183726257326873, + 702906081129133, + 3253748569709827, + 1606617098167261, + 4435145537242084, + 4450752291266865, + 3167264021816273, + 3718626213809212, + 1799004305840801, + 2947651921731136, + 3621909569434671, + 1951137768831388, + 176089692374125, + 3889493529631346, + 2717269421771609, + 3302655567039395, + 4440877220369297, + 3295886922064958, + 3821687695424675, + 2501979588177185, + 574127708982751, + 4364485130895861, + 1047727999866985, + 1273656208486300, + 2028272891555509, + 2524833420550291, + 4042801432959012, + 1167134654587594, + 2832471376047071, + 519610248231764, + 762686976676026, + 3581325155673962, + 4285599999960326, + 2839980574366497, + 3591329582975519, + 1229518395139416, + 4423101968883024, + 2527249446115787, + 3649724454947968, + 1445118165994903, + 2601289467158987, + 4275496109110676, + 64151543353384, + 2258578120556897, + 3629234416453694, + 1507383071268670, + 118430722853116, + 1654788880415732, + 137436071570064, + 3093761464719756, + 2077639430507728, + 3776420737976276, + 262555839196096, + 1304972872766068, + 1082504199185592, + 3695416431305950, + 3721590272311679, + 4133838643508920, + 4057908276544397, + 1639905042596447, + 3754336969329965, + 47586408449476, + 4452074141193213, + 1992475990757299, + 2214006188704085, + 3172879965867161, + 1718776517701971, + 3090719442217385, + 1472693347907434, + 617385483644785, + 547524377505544, + 2498564926496677, + 3507012861452391, + 1429664999076980, + 3186450853626072, + 4007697350313622, + 3401651378501367, + 4407559413868371, + 2093442255668839, + 995540957554340, + 3954530498141116, + 795951229606249, + 4268877850782369, + 1904916143476237, + 2373020389549496, + 79697203417572, + 3001910169018825, + 3385748876383251, + 4070958714510426, + 4294478860564181, + 1836494548533298, + 2576375809085657, + 168816356897929, + 3246814194378367, + 2136490534118335, + 2213809324156288, + 2526754782336930, + 2376496281442772, + 3833623451919393, + 94309483618343, + 4328377769643843, + 1326887805816682, + 1933527300276073, + 620159957239074, + 4188193468381672, + 4149658254227053, + 1248473568445059, + 2126797375902890, + 2893772080000890, + 3842922075278288, + 4061650860636650, + 3593520543502201, + 2878817651979729, + 2824934399923781, + 3730740484430944, + 3531008033814845, + 3791568346289476, + 1008379175383478, + 2388543321315813, + 2146358608954591, + 3074292764429579, + 1657313107827379, + 2262896350173772, + 3918390783068063, + 997770127874716, + 493516997056562, + 4240741392034716, + 3583699361452518, + 3586821361632122, + 1015076302045108, + 3659595036492721, + 3834825009893496, + 3485879132480380, + 2686841628534916, + 3344607864191250, + 2157016882168876, + 976013716214426, + 3116283444425641, + 572602915385600, + 1049509546275963, + 1788241308922528, + 1687155627024480, + 2876748856682465, + 3475536963732277, + 2172544950802351, + 2620352080379092, + 2941315140545344, + 2917105071659318, + 333088339509781, + 4371443296097134, + 3310454783035596, + 543506509230683, + 3145215154544752, + 1794659593946012, + 294771623954007, + 1753028172549119, + 2483734965796958, + 2896650232083953, + 4204672882409689, + 2392279071462671, + 3189771629360761, + 4468560157257699, + 1109958523921409, + 4382805584910352, + 3230882051154109, + 3411225331097955, + 1515537543122489, + 1946612264312027, + 1313634666923323, + 1940876849858611, + 2663215951211261, + 2847051038508256, + 2105692810950933, + 389771178277883, + 1585413961820499, + 3103635096339124, + 2429476713509050, + 303647279145152, + 3836955643134233, + 2212761003277426, + 3254306915529969, + 3294433261187485, + 2433931852527408, + 847726915116486, + 317757699045829, + 1836818189620810, + 30716730569267, + 748174842584743, + 3795759813226407, + 843846112343149, + 381202651701083, + 1851590588061535, + 2067733337779144, + 3184572897388386, + 2041627760704097, + 1871129868784576, + 4018516339868048, + 1475699785788805, + 2478621361092040, + 4256599945288168, + 4444257458358464, + 1999475413563604, + 2523654136807197, + 149722323442065, + 1138565573902861, + 3544963199019547, + 446747766760534, + 2032481012862094, + 1117622508437623, + 4319051540908957, + 1411361261224137, + 416437257912189, + 752646796613383, + 3275219169940714, + 1716197877071894, + 1593975841723774, + 2809573173513781, + 3256716634908796, + 1426366083123874, + 2252208579377649, + 4198308903951577, + 2615474074034641, + 4068023746706221, + 1907679540068573, + 133758430238770, + 873035476697374, + 3670655486869321, + 3954522982647182, + 1474582447086487, + 1195669908952324, + 3351882550748298, + 2210516432577185, + 2311533543917719, + 368659555826797, + 1088414059020555, + 1979696447699882, + 2054773960674265, + 3538485642638024, + 2733155243624895, + 348631875000849, + 1658176436537559, + 3495003074800061, + 1247289240742826, + 3473304446178911, + 2588437894225459, + 2409385215681641, + 382189167950198, + 2647962006952051, + 738344547190261, + 669662367312209, + 2508589832112158, + 3061243754821686, + 2112995365205623, + 741481240178747, + 4176266168224988, + 552424594384297, + 1977593497770244, + 2950615544059949, + 3899771006731259, + 3025939709854076, + 1232730487678470, + 1786787546194727, + 4267436660843564, + 2499147683528288, + 1349655844667195, + 105191202932039, + 2364862613598514, + 1586107063829052, + 3637791096214504, + 1034578427498865, + 1286619615337066, + 2340989394616406, + 2607774084666500, + 1050460932467538, + 3345459999546362, + 284028432884992, + 3251374789177059, + 2884408060859960, + 2759904421635826, + 2989286645619957, + 2247387766259720, + 1431366105517330, + 2136454441973359, + 2703390226581481, + 3233654010669677, + 3181632571062017, + 3426780225984303, + 1352707592532410, + 1369141974658159, + 808500714654426, + 3152242444363530, + 3230578075767345, + 1798546692048309, + 3587921281252650, + 3926555758107341, + 1556966781278594, + 1702284718575404, + 31480426682277, + 768571516681775, + 43375104314638, + 2873389394875696, + 2079381461369071, + 1135436004723642, + 4438254206887111, + 71598802826351, + 3236653323147636, + 4097783751687995, + 2529063344525879, + 148377689752423, + 1890283825930481, + 226276366586564, + 2429685247323716, + 221081402590661, + 359418684380580, + 577160116765397, + 3590037523795615, + 4464187813812415, + 981585420154296, + 300416155175862, + 1326019114428362, + 3388172932608679, + 3155729148304075, + 4465496332326952, + 676959152063724, + 267361864807355, + 160308723106705, + 686224916613180, + 3211031188913095, + 2507784012238323, + 3901260957455400, + 4480591722456405, + 4284953753647239, + 364772079324455, + 1409970137907585, + 2129956235929459, + 2686073215410038, + 2330975940491602, + 1529669699174422, + 2050131359065739, + 457708092782349, + 777320566002372, + 2599968165753369, + 4500683651952702, + 1489303356828407, + 4426176215485728, + 4250817728113396, + 1960460137053481, + 4309817278079601, + 3210808568448680, + 968127281215704, + 2996985876296505, + 3094368638784463, + 4265924063770608, + 2568595119009496, + 3135156895756419, + 2210988348288972, + 2217076958061339, + 1417888910973672, + 172249043450031, + 4082652486221447, + 1381476312696242, + 3937493701604965, + 1225462155285994, + 266381204225078, + 1596244745445169, + 3172356902370369, + 1979673458560503, + 1843656321531734, + 1745926166985284, + 2337432856779980, + 1099750130381244, + 3046601275323031, + 726629490596987, + 1472580715309729, + 906572560477016, + 1880627141617638, + 1837446966003820, + 3086084886808935, + 1902456989836146, + 4326533654228241, + 789571415649540, + 484618849858351, + 3348821305161584, + 856889433026531, + 2647472432594882, + 1998832169348002, + 849560750181887, + 2417242448870385, + 1777079092010227, + 2544464618230687, + 3462567256956219, + 1842931807278912, + 3203229558928906, + 3914854458556388, + 744149049504538, + 784517985042791, + 2693433912697693, + 1033291467591929, + 4109993395182099, + 4043563089565384, + 370092361623281, + 231702098980020, + 1917083680380779, + 229541578460991, + 1733607404058966, + 3144078056663885, + 4374817195761282, + 2497516616454693, + 2821123140413029, + 3185566731164336, + 805001381697165, + 3021364582888304, + 2953662289257106, + 1282170447833663, + 59880980904302, + 2806157844140126, + 95899453393654, + 1664066124017068, + 3194622567718836, + 1249678642730327, + 4459895965611167, + 832139748664847, + 969787424973583, + 420233865879614, + 20043582471965, + 1842105998754090, + 521596295393720, + 4462263211851676, + 4375996367253952, + 2792838006699991, + 3321538047422515, + 155331246500938, + 3617831119970654, + 1827393529474349, + 2043024309798390, + 1130024466780234, + 2738328149773119, + 1386456118067422, + 920776513989528, + 709063416985560, + 3426843855695499, + 4045849350162407, + 3119906060035367, + 1844320799280231, + 1695988392074925, + 297568129429301, + 2954765021355237, + 209285747361431, + 2390516822354605, + 922786467229736, + 159816557405487, + 3894286719954830, + 4032669305462525, + 4069814994859403, + 1942685257534142, + 2647245087992089, + 3875577692083612, + 1329305541609611, + 3019777268425417, + 1632061917176392, + 3804339472419758, + 4035239775970404, + 1268690292857253, + 3858967751410504, + 1788811308664699, + 802348220225794, + 3959766149858767, + 2974944938370642, + 589375791825538, + 970334836330088, + 2890580767254412, + 1576046882187840, + 1351344226668133, + 2782314140063403, + 4127736066721561, + 4447338462390800, + 3416948548733194, + 3328449823662664, + 62032733874459, + 2726903266326068, + 3993017548644740, + 1414341031392396, + 1689309272110730, + 1618291609389321, + 402285663415001, + 1230492716711508, + 55716160353758, + 1359445717352099, + 887636659439712, + 3513849878820992, + 4053694617825277, + 712455516446900, + 801682615789978, + 1372357180898205, + 1865678199919388, + 3631980768408739, + 2625037152948516, + 354891021280992, + 128059249686067, + 3664644354557490, + 914760332473932, + 1638009071087027, + 1060088721475996, + 190806972172954, + 2556952561458860, + 1681590725236767, + 4472538320840218, + 4024085981514826, + 106400026529155, + 1976386587637003, + 3293352029733329, + 238341633778941, + 3397951101571523, + 1375751503458176, + 2649926529563544, + 1327547999278565, + 2621837286238713, + 2624605432273964, + 787789368429555, + 4438160992642406, + 3671344588811078, + 2641242140768145, + 1128266970238863, + 4002137050828170, + 1917451257280263, + 3671364778323794, + 4484427048793188, + 2452705375125287, + 2611427368259942, + 1340641316933584, + 1101095833055421, + 322625737628176, + 579391528135553, + 169356029320179, + 1629248638193613, + 744501752172228, + 479850235585272, + 3628572686887899, + 1299982676485267, + 2350701135373598, + 928719391954495, + 383583323682137, + 1295206212143444, + 615771124375220, + 1366407624003321, + 957212282573236, + 3796276690955108, + 397343262743408, + 2082473990480731, + 187776641633476, + 3790087563219900, + 3475307840020348, + 3598050927358672, + 1273984181812664, + 3908302018912623, + 3974019787167834, + 1324213951820845, + 1272965450162060, + 1513036904668130, + 2061137044033697, + 760935240028907, + 4110655307302084, + 3023780516113490, + 3517403771684812, + 4034016162059415, + 1743463280535976, + 1861624589080397, + 1540384008017634, + 199132514627631, + 2365225621985714, + 2970949781721713, + 3120820744791087, + 745134557819016, + 486868843867956, + 3163982944672239, + 3030241177817901, + 2826794402231020, + 2939989748692398, + 1397182601678949, + 731147289811776, + 1793487069963432, + 2356636486258353, + 3136944684231817, + 690009773220882, + 884972804064650, + 3652484156515699, + 3563169845340194, + 2537853862571429, + 418688911466686, + 2246522294822755, + 4690785347425, + 921528145693064, + 2409300528885940, + 2068117066226655, + 3316988957483222, + 4471419274504725, + 2709449155335021, + 2603247132558865, + 613336365917642, + 3426904727495936, + 54094807864935, + 69127885581766, + 4231547170139191, + 464105857110647, + 2552849463087937, + 3703804778290640, + 187495302549386, + 3979777431533602, + 427337997807371, + 3538672250011715, + 2488991134197136, + 1996552883968696, + 190636664604229, + 1236920768320072, + 2961116647347320, + 265493355557801, + 2081248670345817, + 1149669284737009, + 4220051056304249, + 4073055855405164, + 2873921126184957, + 4102221672729996, + 2950842389727502, + 1783374411284275, + 1504991511190089, + 563533522411625, + 2259637566054148, + 3944563502135757, + 1263533283282806, + 1074855263060138, + 4060569617055082, + 2328558076062920, + 22132049278243, + 2456083641328907, + 4062987610676339, + 2232715881272996, + 1438954450802448, + 760249769696854, + 1960219216562901, + 392728535621841, + 3295509383696835, + 3357386983989945, + 3660976281558944, + 3489619329902976, + 3871116815783962, + 1799678538572967, + 4344152479076159, + 445976260101494, + 381549488186185, + 3173349091295105, + 3409169814827307, + 2253315712850076, + 1987060761168950, + 3565338781923715, + 176122187706176, + 4156012104538595, + 4021451751188004, + 3958047853889805, + 2230522851325044, + 3723088506701590, + 3002281467170379, + 3663495769302399, + 1619267339459288, + 2556736231049951, + 3939064794363305, + 1836807005804056, + 3941146196412951, + 1397279335370925, + 2008278390829158, + 4012248521264209, + 1570906971139382, + 4192870305447605, + 807126814408885, + 3098212271816679, + 274385786742883, + 2721066609395651, + 4007525319075887, + 3335829339644464, + 3028471039437212, + 2632324111492445, + 356764951907662, + 4455844198392862, + 3902228380057805, + 636394696757605, + 4266342935745532, + 1511511993632127, + 548760289449913, + 1931788874758655, + 2271255285792977, + 3529168456408997, + 1263682635832709, + 3024746516901908, + 4484345849253170, + 293401565582385, + 1842743447693104, + 500251855189585, + 2764855238329048, + 2292775999887810, + 2807180121166931, + 4258988351997282, + 505559037019473, + 2247169364067263, + 577555423704346, + 2781646708241827, + 103734558716638, + 3859381335309766, + 2121461165695385, + 3468017885546234, + 3893637744408825, + 225131421359419, + 1711374677715147, + 2590999586217164, + 2275535373586226, + 1626290866164048, + 3484481294205975, + 3934024703562388, + 3642419708126047, + 1233559903351759, + 2817740322473778, + 2287283329740731, + 457036282172206, + 2876255689982645, + 1279481216550025, + 4172104668317235, + 3678820116289732, + 3822380975245389, + 2100443180062593, + 3807426284433230, + 656029417637224, + 2163137383950252, + 436842197032306, + 3088298988497520, + 672824168356515, + 2933175021167591, + 2994135178212904, + 568120015144382, + 526218694530270, + 876762874547613, + 4278372247297722, + 2739998621642120, + 3955244283720662, + 256796810831977, + 851116187632245, + 4005410662597627, + 1616869951564432, + 4404464366783950, + 3333838668268728, + 2621229404627186, + 4443251520230859, + 948631702550733, + 1930383071033603, + 2691074273260174, + 3723558567945055, + 4091855476793901, + 3667299600087686, + 1570083656136194, + 1481574837578885, + 3862755889521743, + 866897580648722, + 178242622643578, + 1395025948049513, + 2150789846864733, + 4248973641010703, + 1348368433839758, + 3830559837208227, + 2465556979894911, + 3026143604764422, + 1072624557567768, + 320538337619996, + 1253888618877376, + 3370769140087768, + 933769324909332, + 1394436656863008, + 1000332902252882, + 3516644244793172, + 2559997090514611, + 4296353656769022, + 2464473966033451, + 3282914029895361, + 76838719250773, + 1904898812963934, + 1571492035645616, + 1488350830067600, + 406351276315047, + 1373464439063110, + 2040620188693648, + 1024946896415869, + 4095833607470276, + 2320055707874915, + 3685537743812721, + 3836125852181713, + 560897704094595, + 4181493833175997, + 2648161404538903, + 1057159861613904, + 2968798328460752, + 15411560356159, + 943968741897884, + 1196026567586527, + 1214526219563882, + 831045708019262, + 2739136875028195, + 1180826196366205, + 2013367121946830, + 3775443252057709, + 2612438146600297, + 3230080724213518, + 912278988179830, + 3654724680217841, + 1823710790516169, + 2303288795422592, + 3283223830025154, + 1246754113064987, + 2458143869545914, + 2218596126448952, + 2176647345519364, + 1944704619039432, + 2088746459452934, + 4203033501381707, + 3537085787414494, + 1719046890876782, + 3622474191511086, + 301901821530924, + 3302349895449699, + 542402003882708, + 3680671268126381, + 1807271966658089, + 431761616477169, + 514872000605378, + 445816482358035, + 1342020040589750, + 1052960372944802, + 2374064464762726, + 385461861652926, + 2468644189338901, + 3719329393885259, + 1667457766053047, + 2240946942393981, + 1050473616666974, + 4022673987725729, + 2896828516565458, + 2423920869642450, + 2331978813580675, + 3553962648072574, + 2137357059140851, + 4452971618835104, + 3892617334036477, + 1928040700819151, + 2901097907019684, + 1997330948121800, + 3291518141860504, + 3318530743408921, + 3387026123375915, + 3972502279204158, + 4377705076489277, + 3255007435675650, + 2488091264261117, + 660991754475976, + 3963263843425753, + 3895762750328450, + 2477990510266685, + 1173521299947626, + 3876526380666094, + 4367770461694625, + 3080918167607328, + 322760148333455, + 4393344982989967, + 1953796393720430, + 1920259095860570, + 1311722789389115, + 411113166791799, + 1816838402787216, + 2956920029245898, + 3419094699704632, + 364180755082900, + 2248253409634916, + 193061056807023, + 4455421916998351, + 290809984557600, + 207969951729813, + 1657960115803247, + 3334490913950271, + 449952954542502, + 4240202099726320, + 3378270389690090, + 2283496901276389, + 958000212534433, + 2092772342281692, + 3628488017106218, + 1333316556055094, + 1334355143049350, + 2892502010741241, + 731725509081293, + 1085222383466175, + 4138100349386959, + 3475671658682740, + 735729994214124, + 370098218491804, + 2085646804588013, + 555123198160834, + 4218892234958101, + 806591780234503, + 976812854330116, + 2688983089240475, + 2761943941651374, + 475070684342107, + 3394146804540761, + 697243041481273, + 4295572091000953, + 245505962895788, + 1307368138861046, + 1819753009243717, + 1392173811233153, + 1490556058343329, + 572449671655327, + 2179643228965278, + 830805886588324, + 3583027053349205, + 1211346547484241, + 3690763377171161, + 3325494197545086, + 3142552582400353, + 1804916795868544, + 2119799853537461, + 2996830152690375, + 2239643827002616, + 3706140298639187, + 2464252428084907, + 2443261661273472, + 515522592705588, + 121607984346950, + 1705700278339445, + 322899632474954, + 3581481474194868, + 4017529433625275, + 1568682263963880, + 3267237497254312, + 216705652232351, + 3338279186962995, + 3446892921457643, + 1107184762561031, + 4485645819411184, + 1236955810939701, + 1090838610496187, + 4247019412531723, + 2027880851615299, + 1859776918832227, + 235331009286527, + 2691616135760209, + 1388620611988387, + 3592257320402991, + 864023425105910, + 2876726967411827, + 3745358741766878, + 945063042199860, + 695943605505888, + 1434541255490003, + 315676288488869, + 3653908096494669, + 1260154162727004, + 4284265060453560, + 2398906992305917, + 675615141672997, + 4406107436193163, + 1803592963684806, + 1962527980603167, + 1514094360195847, + 1117535272000248, + 4356661174813750, + 2373021139885644, + 3808250357010566, + 3147166336086676, + 2135740769290342, + 1154460333373342, + 953384429306638, + 2289958551447844, + 3560089056497641, + 2566160801802725, + 3853654430557187, + 1299139323590396, + 3813115101659662, + 4292144837048311, + 3241377033657655, + 1834469730158016, + 3668271227148148, + 655079331969008, + 77895322069524, + 609452447146649, + 3764255433790383, + 3556250466070445, + 1694188775594145, + 4312504342277782, + 1797936626985411, + 3710844059997082, + 1340598712011365, + 1486698217460772, + 1619263276098949, + 663803738079834, + 236022119101983, + 3865061491593665, + 920772254733094, + 2962850266534024, + 753147448867431, + 362638799089393, + 1356380542666836, + 1748541494236152, + 826718026871844, + 1552696219808575, + 2685113370440855, + 4146230837298854, + 2725507016878353, + 3132468975836529, + 1588267313797040, + 3019271158382954, + 3171473727329771, + 3231063264936747, + 1185054929326739, + 956854406729608, + 301574069155807, + 3604900983867912, + 1407138411785281, + 608378799465785, + 1638385091611886, + 3475446716108479, + 2043092957626536, + 1726211123399416, + 3633485105796568, + 2065060864993232, + 3758318918776688, + 907930848247215, + 3436127001096281, + 2609326445721457, + 2596555304273557, + 1033147565407768, + 305240036150044, + 1999020212924241, + 3538369134225880, + 3806426763689990, + 2405830248618182, + 4058288943642342, + 3192817434729890, + 29043213235628, + 2886336396352448, + 398921597095561, + 1367628278605540, + 4093860601285507, + 3881633189830730, + 1049657071634300, + 2530714514917036, + 2569154734948230, + 3937889563775350, + 3022313112268745, + 2873867711730015, + 3238833725948062, + 2769314809213474, + 1637878405035871, + 2840839241111536, + 936146135902706, + 764771522836978, + 4078347135742792, + 3834154914650873, + 1717006220140518, + 2215513996568074, + 1432480784895783, + 1262915754367763, + 3641637197085972, + 1221992585042300, + 2829377837006800, + 1357361260266635, + 722728472079138, + 1261144656947964, + 2283253548964641, + 451401024952371, + 294762451325316, + 1828241114891840, + 2853998271649954, + 4120616424276515, + 3650409377375256, + 650278579562885, + 2939906290805341, + 4301414679196313, + 3414194629804068, + 605196196298145, + 1418159540797089, + 2658519639931251, + 689775468349412, + 605389921862597, + 3448915624861166, + 797034141719707, + 4034883238701952, + 4488265928474392, + 355609730832079, + 2035367601122774, + 346704658601979, + 1732505062737997, + 2007537297182285, + 4151205212928577, + 3611415642541792, + 2137511075676807, + 1061191886214839, + 435782852981549, + 2150893137850605, + 2322152450233101, + 664522251323348, + 1511141064089823, + 3830429004673468, + 3837784839219048, + 654844779592025, + 2800233416054446, + 3582220746450833, + 1432662230969931, + 2732689369008285, + 2421984164284362, + 2379450879401727, + 2445549929774314, + 2802668868395124, + 1432056175972509, + 3940520287571694, + 4452513171182327, + 2366303366875261, + 128472822327237, + 119333524267205, + 2959454012846092, + 3094271369019360, + 3620636228726734, + 49079440500630, + 2788508251973578, + 2218910528036236, + 4478813882133237, + 1914890607490427, + 3514412147769795, + 1961686068868993, + 4225047748238458, + 3257889061321993, + 2604726469975885, + 2492721142309988, + 1149409590787061, + 757529805836027, + 3213378261638426, + 1466691589159850, + 3235141047265544, + 1977169617740017, + 486013072340399, + 2525013246706208, + 857877145918110, + 2275189355656661, + 3077741552955774, + 2070470285889298, + 336420586135990, + 3958838198017069, + 4015573418441969, + 1381675207813163, + 1411515330496473, + 3124093515812309, + 2536900587873821, + 2023450797398057, + 2697959027890994, + 2744674106372598, + 1377222638594920, + 2304669353683219, + 168701923467185, + 2924342140322745, + 3554281554345779, + 4498418611361128, + 3806593389974495, + 2780897670319997, + 576973530925780, + 619179450010119, + 2655429490850129, + 196931187292677, + 4364607665233483, + 3215248925203467, + 471506498884918, + 4401658302847154, + 1688677603907594, + 1665771245641623, + 1189298888020298, + 3999936806931639, + 3716718672461265, + 2969831302116843, + 4120263589729738, + 584501321875758, + 1630518417840499, + 1735550923155411, + 4220753273310963, + 3525599519469348, + 3786103134699489, + 4032001319104358, + 2954393880852611, + 67603699033950, + 4448610703054281, + 1376880508942757, + 120790476659579, + 2888876786659829, + 3649284031377865, + 2179267998750678, + 1551913921864833, + 4347322289786208, + 1039881836479332, + 4424990306385917, + 1486244894869641, + 3780925792939837, + 297188372626608, + 1060670530492436, + 2872239049106889, + 1556856669206527, + 2846184937569641, + 2722156994798173, + 3654974514312401, + 3444802294937971, + 207503946010543, + 830212710899748, + 2846416687845582, + 991804807544097, + 1331211051298555, + 1561016207711, + 1723132208002922, + 2592213301205444, + 2180716571788737, + 8895961061816, + 3246692976513983, + 3956183637573596, + 1321536812993355, + 358593180800956, + 461774096142465, + 3436861703593677, + 2328632857219279, + 490295052173591, + 2275511956714745, + 2303613298953761, + 91627297035963, + 3891740038579363, + 2346911437091285, + 4456846865630900, + 3370068962728276, + 1213265777111685, + 2197021895223085, + 4207365840324934, + 4148591714059442, + 3851053863290668, + 2736698006815516, + 437611971635245, + 2633549657642496, + 898662711725053, + 3204509352790365, + 1600353216924329, + 846498780976248, + 4383920584705560, + 2056225373371449, + 3403325096565795, + 2650955984878654, + 2573193404766646, + 1923959561184838, + 3305141756451191, + 2554193009608388, + 421287236766891, + 3842265614791457, + 1264648483486593, + 1573052582319357, + 168132828163158, + 1900923706501240, + 850380246737717, + 377508436056794, + 2896968609768349, + 4175734134029211, + 4468908493650763, + 7148058066244, + 2108371036108448, + 906216485482891, + 649983085273164, + 551182624515459, + 3244952632240998, + 2258790426582330, + 1142655041068401, + 587609109857442, + 1321545114248108, + 102199966117210, + 12617936788344, + 2031325152390469, + 500974781379410, + 1721388142519540, + 1974793706238064, + 3577868397494295, + 2858532236844084, + 3503669923765685, + 1873131813157515, + 2483960198897924, + 892752059287913, + 548902953326857, + 1035021729037825, + 110746367245452, + 2968665124926666, + 2655062604253142, + 1561280468558543, + 2688786547649985, + 4316884868951370, + 3067929541983624, + 2765755518782091, + 3725898468061777, + 233804769401472, + 2620812948991758, + 2083825335638306, + 2589323358822306, + 3576727623260997, + 3042415679750795, + 370843280080720, + 3148895267311950, + 680694392018303, + 3040706544180770, + 3829338904171915, + 3480209210645828, + 1568022856888910, + 4356576742005121, + 2528802877954135, + 1031315687133302, + 4239482586925286, + 2187740616969964, + 1432313444545384, + 2312476941892490, + 278249923763425, + 3749154659820440, + 462808221844745, + 4097310781210134, + 2965551487185427, + 3335221142110177, + 2960836512712967, + 2221834753184163, + 1026621083249490, + 4406091897517720, + 1668908468372507, + 8607047115553, + 868975124342157, + 3061605501910752, + 348914001532477, + 2767698863686519, + 357454750056716, + 2627729581739569, + 2002796150951846, + 2811737861751990, + 1972554767282335, + 391438805049174, + 3043484582665547, + 2746985926004222, + 119595563913178, + 4117392811624528, + 421943883472300, + 4219610133487713, + 2664198931391887, + 2184208421399631, + 3531493748954926, + 659553183196036, + 872564142123788, + 3694356865454966, + 1425069180062681, + 3501556686081844, + 2749478912223489, + 566253485408598, + 1767771213218070, + 235864307924895, + 2121049983070308, + 1282480641882216, + 2497469603310744, + 3617861564664889, + 4161449966916043, + 490299110860878, + 2838124364549814, + 2008599667790304, + 2229508067287625, + 1663150075682857, + 596780274497605, + 3512469517456671, + 2399970998734747, + 4054251990035603, + 434808844669919, + 1580716191864060, + 1519132402640144, + 3801602929967070, + 3543776201838056, + 1331741047332803, + 1502837866248824, + 1719364274700501, + 1604436356471664, + 906061230359554, + 4147702952779059, + 2544544417043955, + 846288363049498, + 1020141670529207, + 238507618876571, + 12489173957271, + 3611792390049613, + 2039216830596736, + 1722118184492438, + 1034106151715818, + 2038797193043735, + 1424008750926576, + 1460306681065192, + 2694766808077733, + 1603201982365555, + 996748920675725, + 2946591454964974, + 3724773130290656, + 1205902576696624, + 1888342951321258, + 3764225913307225, + 2958431787619382, + 1180770594954544, + 3025150439365561, + 2523283624713988, + 3296358873488501, + 2878069254965922, + 3912222364933585, + 2355552521971834, + 2346171505469842, + 580713616355048, + 964732408191104, + 3606048199514284, + 2040707409214080, + 1520952415536893, + 406869077781410, + 606883569002310, + 2795480891945733, + 3234882057109864, + 2936464312386308, + 477924062485886, + 1761202968225346, + 1706236335068784, + 3138989381109670, + 2882504771401797, + 2150598421158153, + 3743799401625504, + 413723538847439, + 2909537248814237, + 239337622087374, + 1835043127154592, + 1635925243381768, + 2557769236867893, + 3187995159956774, + 1702151034185419, + 2742995165652355, + 1475205832893178, + 2780236741328497, + 4011697483338770, + 2481601432485715, + 1439545212972307, + 1291326524437877, + 1735755078899249, + 1183135494467394, + 1763790818726863, + 1804407326846683, + 3524951308839450, + 3773150600136209, + 3998665363237903, + 891158207085362, + 1828223651041592, + 2884045889204043, + 2965781403158371, + 661960131502280, + 1391652770000083, + 4271916721884489, + 1177424007939210, + 571677916472965, + 1199737314114124, + 2556188198119085, + 3106983390073475, + 3668683597397368, + 2256691972152572, + 1745213441769230, + 2695727724634490, + 1129689983716016, + 2553099336312505, + 3694300039147906, + 2083649324625322, + 215644288965639, + 4097456667128619, + 3489844031884178, + 3339636180682862, + 3311386773888732, + 2529935361448154, + 2520316168909767, + 4405886536038185, + 1665056245810967, + 3391353600717469, + 793094097350517, + 2392413520195058, + 3544686385258091, + 1834750432698581, + 4132027723288056, + 3913230093596960, + 4116435642201596, + 4220541285209542, + 242658838596902, + 3083166146543141, + 2317052243400769, + 3668955218371607, + 246296711459260, + 559226005660158, + 1072149970284601, + 1141249359323101, + 2253251071493966, + 1099467424143326, + 3405008353410241, + 158150079645093, + 3555630359944546, + 890486276099195, + 1210111407671419, + 2711748315989082, + 660453419012512, + 2244532879675403, + 227890000607987, + 1652367909352058, + 2445788696230233, + 655090784720655, + 1957887433367550, + 968210240510711, + 1724760539530498, + 1978881039257674, + 419203540146888, + 132673213965450, + 1208925008184788, + 1648879548098515, + 1388460997821792, + 2712822353150420, + 3748458985631638, + 1238552629456949, + 3566933386641076, + 607219514019123, + 3197298303771119, + 969382087738080, + 1267457808164078, + 3563889218121828, + 2234859930251202, + 357235426267531, + 375350154099473, + 1537994287504071, + 199579825327790, + 4414715984670606, + 805612077357749, + 2855964794181779, + 4261217369642687, + 4376381081271645, + 260282080715170, + 989920013390184, + 413743398252093, + 1519361370657575, + 933033157249396, + 1438574483341238, + 1071419260489649, + 889735242632024, + 427791700418823, + 1160874469263511, + 1340898993944939, + 588945582631714, + 3558432005154658, + 529054964926587, + 948765856849833, + 3649638201053515, + 1114383234682603, + 18362885297357, + 2707939905431937, + 1816792220575110, + 1613356490535873, + 168441717544553, + 1363476782819500, + 3118456313272022, + 4269207454742631, + 1168886184835162, + 4464015189828393, + 3423143257362228, + 1275012389295235, + 154532055292694, + 2141605519685246, + 438085167083421, + 1554478413053432, + 3245124208686587, + 101715771950756, + 197789656910395, + 878237244444244, + 910142270683417, + 2529566206355705, + 2821966793906409, + 4188886914057701, + 2283085659763604, + 2398111800664351, + 895201164253676, + 3130355326130535, + 2257045847996728, + 1793348793612253, + 220246104842985, + 1427049124412291, + 725250186941083, + 1038474631031599, + 3964809785162600, + 3375460355294704, + 2194121035666762, + 2103029192117183, + 508155540869185, + 2201499287385765, + 1189659108955516, + 3475104268301785, + 2828275522475840, + 1554644810525204, + 1197553737230723, + 4479990416366339, + 999477533367334, + 1355743794962973, + 2617515128934105, + 33337830226296, + 3930914666672268, + 4176178034572257, + 3371910341739240, + 3755093732689349, + 2123669996593404, + 4388754114087476, + 1001632756351823, + 129964765413069, + 2342608574750018, + 890621861575346, + 1563290324083255, + 3853850101840767, + 3790969927381417, + 1653823348449454, + 3462382937437451, + 2028040298660974, + 3994801689721669, + 7969116724931, + 3389928826624241, + 2771290003779949, + 2849335783806545, + 464972670217369, + 801531485468937, + 2262962638874569, + 3780336625306479, + 1994244183801680, + 51478306865580, + 3448754906362245, + 1002348239997396, + 1225327106093315, + 2110210424414836, + 2046014651714735, + 1628996050123206, + 11545788335719, + 2091721751381649, + 2824366812291261, + 3847707355237938, + 3521335804356577, + 2809106560305208, + 4441985669619871, + 1529544149505101, + 3909104429341827, + 3657017147142744, + 1024761300416646, + 2600139286753380, + 3966998122146270, + 1858817410659453, + 264120050150359, + 2390120327931817, + 171634481365279, + 3956619216627763, + 3123218738534352, + 178426133754468, + 3434359746043359, + 3683587806636910, + 1365594745154720, + 2783310052052180, + 1089237438019929, + 659900288310616, + 136150642621181, + 4127047761470806, + 2517998602367655, + 1312837973950240, + 361853997529241, + 3176282972376499, + 1302935669911738, + 3033404816342584, + 3646849397241291, + 737942217323596, + 2687318418136648, + 3027604866074276, + 4271878259137794, + 1045961153662219, + 2559601846702842, + 2112845439726180, + 3162384507672702, + 3638915920822081, + 2226520859301742, + 1967813633761796, + 1691839474288270, + 3437846360693925, + 689410263596440, + 193934176463890, + 1997576354132723, + 2987010843950962, + 2538836386453968, + 3568458049565597, + 3580478185691452, + 728433799449793, + 3985782907081045, + 3699684664224353, + 3106496013909290, + 2357448228197011, + 2849539731055102, + 3101445408786489, + 1051024402779159, + 1226609091267431, + 2028655914222727, + 1158390567736728, + 4364406674528799, + 1189357200212825, + 3844993389119551, + 396657887016266, + 4329879555818158, + 3084747348235364, + 3467005621419422, + 182283728245761, + 636863901173518, + 1765935844906604, + 229610714888766, + 763391435955410, + 1267060312978507, + 1658880995512626, + 2593698385657042, + 2007151300305270, + 3077501677362976, + 1231670053467168, + 4088742818053689, + 2142910367204727, + 4160559221533498, + 4211724833960079, + 1449125783041377, + 1035600617252746, + 2098324064592890, + 3830406494231743, + 66635472178406, + 3588871239618375, + 2826091864441701, + 4490756672172968, + 2271244795145432, + 2324529835433458, + 3155661188266141, + 2997971938659910, + 3763969084351747, + 4195957115467144, + 4373146838777, + 4069635960169782, + 620270113187943, + 457600252647067, + 4331231751247265, + 1349984936266464, + 3983925964346335, + 2351142709379003, + 3115966129037358, + 56320177253106, + 3503643165581608, + 1129430661638994, + 3433879030367765, + 3525568506718066, + 3291427719290500, + 1273440958602703, + 2912119936292370, + 982718086625278, + 4417270764688784, + 4380554690666755, + 3216000704044552, + 1053466360581053, + 1228731469717111, + 2807711813692519, + 1619856811092938, + 1840191593598630, + 4151301200419116, + 2095124993931234, + 370530513815903, + 594627214057428, + 1581308920012682, + 802092887504384, + 1254256832958865, + 140926620143938, + 1447496304993582, + 1324960405130524, + 1458053834646286, + 3874683859127421, + 2648130102492977, + 3268174024594984, + 2282550351335253, + 3076077248168062, + 1900556086724869, + 3632710293668010, + 3622538994017963, + 4331338728264331, + 1290325104258232, + 4271899939449678, + 115860618622347, + 947367895722709, + 2847606381508572, + 1364311618461388, + 584475396277929, + 809057777823187, + 2377101992468693, + 1983448274645113, + 535513636184074, + 2673541354746934, + 1482338016633897, + 4468731885768087, + 1047611761771828, + 2307348725218514, + 900742097381211, + 4124886317400862, + 2220455550089196, + 786065882000019, + 298265805766644, + 3285670718191646, + 264039383780961, + 3397630976386936, + 4346025644195723, + 4408985459764297, + 3589334668900727, + 3532299404647648, + 1455570749701517, + 4331520248674843, + 1001058918940270, + 3481133364819081, + 4428203299903701, + 3116104527792411, + 3607360129776778, + 1126004631142632, + 821672043504663, + 154954400608372, + 1622765949475123, + 1803271211627984, + 1953925246497039, + 1125301070480442, + 3439551703758747, + 3161664938171484, + 2942447774966131, + 1193574777709670, + 167808936067160, + 373913447613044, + 4040678419842408, + 3270128816667501, + 2366135322277983, + 3617934731783022, + 3172959529564522, + 4381070968866829, + 1044375177036033, + 3869395676551655, + 310331332797913, + 854121670371870, + 2939193790805386, + 3275879620631477, + 1713542960288258, + 1850507022692119, + 761456399346996, + 2761668035831349, + 1182379888420059, + 4122218873786253, + 1889412191054202, + 4177800267038972, + 852147084119570, + 2698862075082690, + 502162362115843, + 4360973952964962, + 4300761152647134, + 1918116331579755, + 1544066365711575, + 3705367481129958, + 1858350612603420, + 2096186669595745, + 2082244706151411, + 2750688963637677, + 2115442034485599, + 4029185543485075, + 3275831686495614, + 517268578431915, + 4242359398745345, + 101834048830589, + 3064455227999149, + 4322162464214809, + 954317818863136, + 85772727522689, + 540457730761378, + 2074592331052982, + 1697354863812141, + 3992769740466565, + 5398144113414, + 1376469177891852, + 3982636456917258, + 3936275497440056, + 1696889301109812, + 1135361390625671, + 3404062449517041, + 2895254472472829, + 3960341432232524, + 1792436688222059, + 31172144756993, + 697124083183682, + 163154279165662, + 3774884200539485, + 4450040714655754, + 13651702142531, + 1669443935367980, + 878033218285559, + 2086900697618270, + 2453459714255873, + 3644930627558332, + 62441725631781, + 4478572462110517, + 3152513639265736, + 3121168114601260, + 2820595694460092, + 1217125866801548, + 3908296724015572, + 2497154655914369, + 2264587810326870, + 369409792742274, + 167148532636938, + 3413816042651095, + 4211811067205426, + 617443640296758, + 847932862356070, + 4333660097971177, + 4197037695002348, + 4467585523476241, + 3005803493829985, + 640019978623383, + 762623777017039, + 4451506080624640, + 4238282454279517, + 1613157497203000, + 3265699881016239, + 3921239193334856, + 242264700443156, + 493648755128696, + 2028022603011854, + 618765929949553, + 4329126206376413, + 1252074263575726, + 2853176302249477, + 2617451333630334, + 783908932937515, + 4134421222229125, + 566309416341647, + 3194856313200900, + 1343114371298716, + 4437455127018165, + 590143402746786, + 3563472727118010, + 2445557233010770, + 3264231646229115, + 4009463897975697, + 2392859230923724, + 4414551547472514, + 188042305246914, + 1124121853073270, + 1255010266759525, + 82220126088055, + 2415872375775363, + 4187290128707177, + 1811543406636325, + 3908614819756781, + 3112829986083069, + 3156695003328775, + 807183896362021, + 857963173931499, + 3695058006778575, + 2961319209548106, + 1766670560098351, + 1886367757320073, + 2433049011287178, + 1501691050250624, + 569779532532471, + 25404902825476, + 197020295073313, + 324525432535677, + 619686883699213, + 1983682278662263, + 2150755003234835, + 324318645160472, + 745875829518683, + 4335786499144720, + 1956461600204443, + 1256790925642383, + 3768192755531929, + 1102146739512303, + 3205981316777618, + 643340000584138, + 2665375401573830, + 2208996640189707, + 3901526117936276, + 508595466030348, + 1397723831436223, + 248443353287076, + 3552243294679455, + 2643917765235985, + 1240643921480282, + 1656032417700519, + 772755434390372, + 3765507451483530, + 3562772720095683, + 961615144065002, + 3126559368521162, + 201906880772098, + 3570108715194567, + 4426246684451471, + 2977785754715550, + 3328193985331139, + 4047951042327639, + 3596224618007146, + 2060311345151526, + 2666831275810304, + 3974143823555685, + 2902109297361880, + 3846219136369571, + 855310939404441, + 2276565616340173, + 668725105136285, + 1248116255885695, + 4430946012730713, + 3291503253957624, + 3449116831637109, + 3928212980792934, + 998041852115558, + 1793532838904065, + 1158935080286040, + 3845238685441790, + 717822438598709, + 922576468221784, + 144988472879948, + 3436858213520785, + 2361755888397309, + 1300230559370336, + 592371039739291, + 89415997281416, + 2241900745838530, + 2114683617300923, + 842620743198494, + 1863596528543502, + 4490693460445069, + 468321565294030, + 2874069614543881, + 2417085732096636, + 1109799751704139, + 575534359615980, + 4126018181523050, + 1782695461034653, + 2034394363519559, + 2048175746243301, + 1294135038064395, + 1842728322451539, + 1077968083541906, + 2229618823917742, + 764158583558093, + 1988964214608560, + 1275501313577458, + 577902367991723, + 1257504613927195, + 4371802909439768, + 973646956260238, + 4157559169044292, + 4109286191324353, + 2114484588115917, + 311562204826481, + 2381598871816384, + 2365142676533639, + 1952309745537459, + 3881188356803966, + 1582387244705510, + 4393273971656941, + 4314182997006698, + 4265524279712326, + 740365842213554, + 1788916268794249, + 388535584210993, + 423332336902208, + 1374749015291110, + 2855950857401327, + 3692914172234128, + 4195135835890379, + 1728498913176754, + 874235471242089, + 2675287006879328, + 361192016356646, + 914393709173391, + 940842938548084, + 2274837092486266, + 1942925760943665, + 1086710711346984, + 1467390600049694, + 2351912162128765, + 3393378978820713, + 1812818026318849, + 3701892092446909, + 126131505299235, + 686630902278988, + 351082562691518, + 3312285704133895, + 2623435799426742, + 1909422939615314, + 2010370243138670, + 254600066241853, + 2503539219947976, + 1786121770155411, + 4392099430654324, + 2463475473904875, + 1258049913825636, + 4177966024358806, + 3088866018334370, + 2641533346130174, + 2932481671419932, + 4107416666279170, + 1186211525895305, + 2260384410555793, + 4082124736527397, + 962351073262412, + 4142221734121800, + 1947327285322697, + 989490657684305, + 188511314448991, + 4300287056024425, + 1192387987304887, + 1839075111715266, + 1913369847905808, + 1367921191056061, + 4369944266301334, + 1545136479924052, + 4147622119756917, + 1380504364683996, + 2811168038249428, + 4325413443074025, + 721601625962648, + 2966359926567585, + 1362557345642925, + 4487356374166943, + 3106765186045250, + 2156857946764284, + 1634883589837680, + 2233969315638472, + 1835099592197013, + 4175954808022432, + 25710214183119, + 3318617857454253, + 1825216776342480, + 499290160062540, + 4423722351426760, + 4378285679697169, + 4227982501402365, + 2508650979030785, + 2992972015000840, + 3057053393768370, + 3892252522892567, + 4464302145710196, + 875564871312995, + 1339094939464836, + 2044523442475036, + 1414121749553204, + 1457038306584111, + 3589362789090933, + 1885192625254695, + 2389686804843799, + 2462482666741436, + 1613675461067806, + 2719697567724499, + 1408198787078522, + 35254265758446, + 561754896578431, + 336171395852579, + 473835232071261, + 4077284626400168, + 2597029436066810, + 974298390985115, + 3882029795272910, + 3177463132421160, + 228258775954980, + 2985556095732963, + 3189437665036106, + 1217125949946131, + 1645641741566200, + 511402841725395, + 319744879951909, + 267336013492237, + 2329736620880947, + 1913316380688907, + 14478668353534, + 221119884933291, + 4148631753338282, + 3596946344898375, + 1620627393425315, + 2935412928103793, + 2467723416954179, + 2637083821657928, + 4035101688925936, + 3918788621045109, + 1506938503457899, + 591911024351279, + 537528711355539, + 744849307582254, + 2892681697105967, + 1077427102937158, + 2099905885477697, + 1725022072499824, + 1344972628711749, + 4235676439807210, + 1385127365900034, + 504332527403848, + 1274510472602935, + 1678364104996367, + 1818776189630955, + 3638357336494739, + 3789671318435346, + 3384069329682979, + 1688925472965646, + 1950491783694162, + 4222384854313421, + 4091431722607782, + 3138567365052920, + 2142560197123998, + 517281239722145, + 389243162787612, + 2571927455010786, + 2204169238055515, + 461252547767629, + 368663076201555, + 24744771482216, + 2324768378279199, + 2393865041449793, + 2534073426116310, + 1748143785364810, + 1684005612783119, + 4264186973444028, + 2601747783827656, + 3449484157990094, + 3578126744982424, + 3640590837295384, + 3595209207364659, + 3818940729719582, + 260642595944291, + 2025087634783078, + 3526109435152389, + 3788751148890202, + 3488269526611610, + 2799606024356470, + 2502496189136279, + 2751341042602157, + 117865356164540, + 586184967723460, + 3740945346634901, + 3262211846738115, + 3630705079416994, + 38881076092002, + 2830129285170727, + 340965127522597, + 2659958631269800, + 1090775963562149, + 4318186355881013, + 2510758948427733, + 1047652033403632, + 999137575650312, + 2065428215645548, + 327551796030852, + 1383184891058933, + 2803733377437233, + 3188042891477536, + 2523434615840562, + 3291916274806774, + 4383010602533129, + 3965045514210604, + 356254656383911, + 3311711909305393, + 2222706897314721, + 901973536848630, + 898178451241778, + 2160137224533190, + 2872807030204391, + 3905989691698417, + 1900936237111009, + 1107813078450620, + 1149266009866256, + 78318379665593, + 4060167110631045, + 983534926918400, + 529267710890543, + 2384238378655736, + 861816518816970, + 2365047175613025, + 1776522009482316, + 4099913299570297, + 1933381440029281, + 2557716108418869, + 2111926120677064, + 3541620129532468, + 4132356749395930, + 4467235321998228, + 1208017699230338, + 2646564356766826, + 1562400907890763, + 2595239359365779, + 3124283320784011, + 548787715478477, + 1248402148261947, + 3988102384381838, + 815168838706058, + 439052696603534, + 563519751161244, + 3222803763251415, + 687580113118368, + 1876311250903315, + 2819987778284243, + 1753958689017490, + 3798665465116895, + 3719009305682178, + 1279621975376081, + 653339970735023, + 2860622060516630, + 2585068733292474, + 1530661703980704, + 2381460186947465, + 79397558537812, + 3810829590937155, + 1332931104277076, + 4354829457047524, + 869729358833285, + 1389312725901311, + 1400385546720445, + 1724374345585428, + 4286448805979746, + 3059289013687447, + 1674441022152927, + 680289767677992, + 545477701809415, + 1072215199525134, + 3115368009591255, + 1041987072702992, + 4227813329082478, + 4465873290053778, + 4035181948665576, + 910835625890641, + 4040322475724867, + 2020575792780264, + 3279875738755450, + 193206912890704, + 1631926290649540, + 2125363919912808, + 1840473076834336, + 1132209559406939, + 2598557814762799, + 2579573696478454, + 1178839202705793, + 1493175804189359, + 2492050291847951, + 3544942753384404, + 819707375740860, + 3945381502910590, + 2548632052325463, + 2354593367781535, + 2786202848265389, + 1261214486381042, + 4067323081949101, + 3833148259052772, + 4270346451884850, + 3610990830026087, + 2069085375586135, + 3350803584622618, + 4114914720615934, + 1582794714642124, + 3004872896359657, + 2599014069050465, + 11703912481401, + 3328532843153242, + 4264410827912454, + 920823464348971, + 3419062672942414, + 1520461555088256, + 509341445749776, + 1206158962855852, + 2724339228578869, + 1605094229277297, + 3277420960918910, + 145780900345846, + 173283295317039, + 4071003104476898, + 4115426604290649, + 2545984438958327, + 1806366823994293, + 1867387718688218, + 2063994566724796, + 1565462658842392, + 4460385019783182, + 2378016421155228, + 822425720448282, + 281072777278927, + 631870609919827, + 3148411400823194, + 2431216718380604, + 657108074059440, + 1483558890586041, + 4185243774321898, + 2218481413147998, + 2850585681983433, + 1362077900574276, + 3549666056482594, + 2475158693074283, + 3063982972857607, + 361227724094829, + 3552108273859184, + 3063955072198643, + 3725678590471634, + 4249007475456607, + 3098257751710999, + 2178529478004290, + 1141534766236917, + 734877076950842, + 3673821541151942, + 918091753968317, + 4097429031174262, + 2862080717167656, + 966659195851263, + 689192341277285, + 3727201660176775, + 2609394502070562, + 874030501182316, + 2086493585152128, + 3024497056540500, + 1899493189389982, + 3253010542961041, + 1204325293127630, + 2131823571938454, + 160943054940909, + 176220710467048, + 1959276097478654, + 1849929431781613, + 1345274953404619, + 159450535385503, + 4371681852745818, + 2393215912588553, + 1505026991937330, + 1238824941158405, + 1584337501277441, + 4482828002900808, + 3159751534018669, + 221891573877714, + 476280455824747, + 2700055462125855, + 141679765302483, + 4325431297009965, + 2731510512919984, + 2574452161477199, + 453742961274916, + 2840971015336214, + 2929414951576425, + 2720284613888488, + 3549784044832350, + 1353328799953429, + 4202933926622829, + 1971898674670704, + 979954649243235, + 2858752873671245, + 904508230672352, + 2444374233195235, + 2824577675225846, + 1043872585934639, + 3291278622514517, + 3300408334289482, + 2841742672026879, + 4333963508057294, + 1676442809403697, + 2027189703045676, + 1401594283989741, + 1377158584808611, + 3699358695946745, + 1091386303518281, + 2742498672837039, + 2650735428729203, + 1296199387107473, + 2558968956851064, + 19414009436185, + 4438836390066928, + 3265313663511325, + 697206982944424, + 2157804829504419, + 3947060571948372, + 2053119179283207, + 1232441818534331, + 3465178049967723, + 2577520287150280, + 3769833933473119, + 3594546664564676, + 3856466920611426, + 3380405477869519, + 1439460218845256, + 2979847145470084, + 3799338779293728, + 2497264690721936, + 1124551579962413, + 599890006058707, + 2048268694807796, + 3363174130430293, + 2781476132609242, + 285867631598314, + 971042396385348, + 1022794999763985, + 4438701519798645, + 4221430178614165, + 1882601172855219, + 2889355621049980, + 3141993051227518, + 2202004862642957, + 723739421302957, + 24296048922875, + 3340093654255514, + 334925103256230, + 3249357571495788, + 2465776335902851, + 3972133072665893, + 1228487499361441, + 38953910913278, + 1050234968127160, + 3432342083628278, + 1882516932110216, + 1084038633203718, + 3635553975155407, + 2686339196347908, + 2498447913641051, + 1950452891931459, + 443225268998378, + 372461206173682, + 3902973285329721, + 1063410947217362, + 2270986043509311, + 202236589618662, + 2081395442979016, + 343086987757348, + 2162376866077028, + 1732539228710233, + 3239227985466771, + 2836347572251772, + 3973570424013795, + 16236424064843, + 1584641560995860, + 683347129427172, + 3189444593085381, + 2145110785942566, + 4377682321118225, + 81145076505985, + 2774946564626719, + 1437362130617883, + 4243478372152477, + 2846060853926, + 1390096903992065, + 4012857394763221, + 4447966552265210, + 2783393161370080, + 2781260198771178, + 2357370814040908, + 4328359848834722, + 2501834242675427, + 1189346599645063, + 3518648842910282, + 3770071625549590, + 2869207056800023, + 2073354803733698, + 3103988020513171, + 4027439058661414, + 4448007168253671, + 383629522849536, + 1294019937970371, + 1235216100427752, + 2059762563774755, + 1124220654300028, + 3042090575217621, + 1718208292043114, + 1613498413750996, + 2186143037490265, + 579816738210132, + 3274302703995917, + 3921549877136296, + 433074897361180, + 1149560476361004, + 4108755555924985, + 1895814864961104, + 2377623372435133, + 372419334146172, + 3701825451078669, + 87950130021503, + 2443263473824772, + 2720835539465748, + 942626686426149, + 1365821388160630, + 1914954024438553, + 3133829736464959, + 98805165961137, + 2268142278673092, + 1851603644031212, + 3135585332340864, + 2107527247644274, + 163430742866354, + 1261594183135819, + 4022395010464220, + 3271993477144366, + 303173193775247, + 3901245007461907, + 3481731083200818, + 3833157165279866, + 2997549232560944, + 3005648866298553, + 4029118733351948, + 971476813467242, + 2547356078782631, + 3769330916437327, + 2089543590664457, + 2503672076080222, + 2245515008194809, + 147019970301502, + 2432154757403602, + 4084564854391740, + 1985499878856511, + 1234833586334355, + 1580039139671944, + 253358337600136, + 1727794994132107, + 1588009579683631, + 2024357618538812, + 2462612018147600, + 2870587046760647, + 4154443034174529, + 1023083900069650, + 739944246812475, + 2266438865239580, + 3231257677450751, + 3131088572778495, + 3748491146652837, + 3849921509791410, + 3370665673108389, + 2372655716282692, + 3222856309633678, + 1233984330837118, + 4125786753537936, + 325789446347459, + 1047537590097744, + 3919270465429451, + 3006849474420691, + 3797282864004836, + 3053183827109850, + 2210521763053912, + 3880069013896701, + 3903081607144979, + 801776092362456, + 4416822454351378, + 3217350483395926, + 2792964992925934, + 205115640586715, + 2916844474408235, + 1946450100007635, + 4202327262316990, + 3416793966644802, + 4353422344370579, + 3898704503979584, + 1055572207447903, + 1011476142612614, + 1797985206117699, + 115622798270086, + 1352874467699, + 1981251387152228, + 2348556738949086, + 95595922409670, + 3108161155929891, + 129263206658531, + 1199107334614110, + 3775553878832200, + 3197385419889524, + 1154381908032138, + 528692245796597, + 934147925995574, + 722384000960718, + 3221667216853702, + 2306094320519006, + 2154501629908954, + 3531642897979455, + 1334590734184936, + 457100856266153, + 3040196436734062, + 3850139352024528, + 1127392962639646, + 1090113024130949, + 1039908084967588, + 1332531484894475, + 4044460461259866, + 555060870618699, + 1917451458137460, + 1702512230967525, + 3738295027047415, + 3800126747607084, + 1760679632202860, + 1821991499967680, + 3277527315776343, + 4304175842611959, + 3843674805572483, + 2238479210282749, + 3682507815173502, + 2905982843271784, + 1230248743809024, + 21102429647813, + 2657329155089277, + 4258399526825268, + 559752203842916, + 480165725465450, + 1731706615556542, + 3398542331017314, + 2218846590265767, + 263414408097647, + 4003964468418908, + 1499698708390070, + 3212711327217254, + 2119469598109615, + 2676808578798728, + 1941590600543572, + 1757082392141621, + 1937680144921318, + 2615153752165170, + 4283850870614189, + 2272685284116096, + 4342575823749319, + 1524016542907302, + 3641951761088756, + 3005537938271075, + 3335308663679100, + 2083050016308152, + 2429752106883577, + 718418134321536, + 3987507409828668, + 4243316627762288, + 770831814956101, + 2732731310606886, + 408530388652431, + 2251463785386554, + 1843674918618237, + 3744585181466535, + 3535765261471067, + 2972147939646584, + 3484735287472960, + 1390182315151321, + 1638045824346795, + 1406302716059312, + 2764672503652027, + 840624201061971, + 2439848462456622, + 2304589997399578, + 3955127141491830, + 1301809256681397, + 2968680022572211, + 158981833473978, + 2174162343030268, + 4260843768482428, + 2919688184813713, + 2066698262355378, + 4280932210308682, + 2734573588359636, + 802347277123386, + 4439870980470220, + 596418427214672, + 1195293398477150, + 4103062813892635, + 2376766831970327, + 4401136158818590, + 1441778821714946, + 249682341307331, + 2860537695930707, + 3503939478547629, + 55982972650922, + 1282135180703393, + 2767447167111268, + 713251252177428, + 1508993131453563, + 933395372507956, + 762403707909004, + 2216518747682727, + 2149001226163720, + 2073980641369113, + 2302400423898545, + 3196765439661270, + 187854009206219, + 4395865566415713, + 4185277298969605, + 2152521808774257, + 2581964109954835, + 529776624804417, + 1762007916647950, + 1105338617604559, + 1741762858135761, + 3380224825764055, + 3137567569622143, + 4185536273913441, + 1094139518397505, + 392365795415769, + 2494753637918091, + 4464470618931255, + 3705483747292691, + 4433108297545636, + 1945920454392807, + 2047915351386661, + 3139261070697656, + 2004559107108059, + 3095878531638769, + 1005705833567598, + 2762706049875113, + 1621697964762630, + 1084995409528052, + 1546620855418249, + 1538509899732871, + 1070089265981979, + 773713194652193, + 47846731460477, + 2488598840850072, + 204816881377237, + 4240254464289510, + 2159075043908096, + 1477894035760757, + 1897636944193813, + 607233588304272, + 1156342830575378, + 1678060082905752, + 2178765648779984, + 312978521983365, + 3699611743127295, + 4040951370594237, + 1145732354935184, + 3208955675783951, + 390101593345922, + 3215266145557942, + 3338961845870732, + 1635033637760431, + 866851746143237, + 4460074218934124, + 2587491276897457, + 2178649531265011, + 2899466377149123, + 2964622001812762, + 693239016278625, + 350080526176032, + 4262950858529250, + 4021909384924081, + 2495675849610705, + 666988910933558, + 2750430867933111, + 3824587934685303, + 3423407344461647, + 320242751224807, + 2418189281526708, + 722333494220528, + 3665735588235369, + 3282437566439750, + 4241639464319827, + 1919852261498926, + 395956626327388, + 124986578844226, + 3914874941314944, + 4024731326590515, + 2562550686160242, + 1790583794972316, + 2502007231456166, + 2257422515627916, + 2328155938821010, + 3026970569458515, + 208695684701703, + 3862523192032761, + 328279211128375, + 1728196131170425, + 4341868409705939, + 2426034227683343, + 3392358901602751, + 2181573968140397, + 3942088848047133, + 3775888472836108, + 2196874642580021, + 712739499494028, + 3341977321023338, + 440780029263763, + 1596553166827354, + 2070928664001356, + 4122448327977188, + 1928465017920370, + 1467364762887149, + 3757754800029224, + 4281595743897075, + 3231870077999428, + 3935728262621123, + 2568043324687806, + 2566409063105487, + 2989987864043212, + 2865809989871294, + 3880497681541074, + 523619793346884, + 2423978181383716, + 4315341952706845, + 3046748529070174, + 252734889574026, + 1081354969121526, + 830233848041493, + 3159889504954145, + 2763022769970069, + 1032304205852651, + 3771267318759756, + 1842138164379237, + 303498629967416, + 240844480103652, + 1963611632023943, + 1945361856319122, + 1722928572836073, + 38508218283025, + 2449962569276104, + 222817378258277, + 1910106867609962, + 1794404196133620, + 588507680936113, + 2910802361198888, + 3865467851926667, + 4336036152868262, + 3246033491452910, + 1402186328527149, + 4001286871370900, + 2866580344599329, + 2101110252298465, + 3231900482555758, + 1933849791558622, + 187737282723018, + 2342026024275479, + 4122461470898433, + 879300868037023, + 1574371172547561, + 1181138327549533, + 934646490776739, + 219568531382970, + 2559843005919150, + 4320028202370271, + 2785975526530646, + 3367308559960900, + 1488420745278856, + 2670984090616720, + 2578991641948636, + 912688193029013, + 2002730572527214, + 1307897027859354, + 1297328065085548, + 3399737581383079, + 3945845843606342, + 2947673818533202, + 3335322622095603, + 745693653763837, + 1490220114781042, + 4290098096105832, + 3377642513553662, + 4187739903402226, + 2713761641607493, + 1922894811266616, + 3349385480506445, + 121685720785173, + 618550686503722, + 4394384660634127, + 2280632156922347, + 1095224975144942, + 525383314324006, + 3875387663330724, + 4362204609982424, + 3423517600534208, + 848526571847418, + 4297307930405413, + 4441890750914906, + 678887063750477, + 4478414000248328, + 3142801796806549, + 1905220987078350, + 2390112490093905, + 1695717716299023, + 2306525163035878, + 1287193895782343, + 4220256727960637, + 3508044129893030, + 1839835466155859, + 3482156869477495, + 281047273053041, + 3893818901360010, + 4150878018502725, + 3017301455680861, + 4169093856697316, + 1425690978818686, + 1981817646312860, + 1823759713039073, + 3297561344449905, + 2176432921244654, + 1109697332047048, + 3234174931404853, + 1433573382523162, + 441859900058913, + 1765510473535303, + 3394797125460159, + 3725517686938, + 4417429587654144, + 485616805511177, + 1206449245781107, + 894159620682254, + 912443259302174, + 3319098622912936, + 1439711589337657, + 2363618569587371, + 2393738326633352, + 1845417593901463, + 3344277370317839, + 1749205971861153, + 1122243052872399, + 3078232347905638, + 4241006784948224, + 1078267134875278, + 2025835984749652, + 2203041722128630, + 2410944289024085, + 2681544402672556, + 3098693553801603, + 774885534006525, + 1687248930709877, + 2495162473484974, + 1437468199350616, + 525052210161781, + 4469295252001757, + 476236733545036, + 3006144066103949, + 1734530536069250, + 2761613730279333, + 2577030757550266, + 3815319859518286, + 773251316188609, + 294926673219286, + 4473564459274921, + 1646635595814155, + 2405341645698264, + 1481880763943734, + 4133602699912129, + 2740941632337374, + 3839915163169004, + 3635158715171460, + 2330506235302846, + 4403368368805065, + 2693864299620332, + 3490777973853799, + 3799700224772031, + 85774749020425, + 3946287832880695, + 2178340150827283, + 719979274003513, + 685039961366496, + 3775004183945988, + 613143365979376, + 1528429817179561, + 738502171093408, + 3859685552540544, + 1179458016746731, + 1938648007668520, + 3719337188156571, + 2508368169604889, + 1950538429716683, + 1981950911559818, + 1638960445456044, + 930236362455314, + 4493832818940440, + 1709012318475410, + 923632090619685, + 1416580039101997, + 2353697202341268, + 4173003131210081, + 584594093904621, + 1889887134469600, + 2498804358690268, + 3510200340401495, + 466294205673314, + 3673178792811779, + 1346371238877866, + 593311381607628, + 2400419397083038, + 3447687231289121, + 1621068935327743, + 3551872420951824, + 2601945616904550, + 185273409827972, + 3369858779963660, + 3578808336609270, + 264501413359001, + 2921116795542747, + 886780546468989, + 2954398321801038, + 2143807453821279, + 4172806944840222, + 3422326329180153, + 1419757476763889, + 3926512345056832, + 787246055285569, + 3792681812119080, + 3305556433251942, + 249746000802376, + 2244346251209274, + 1733679458047985, + 2919266476381910, + 316684997538669, + 3082048132218148, + 965148566030549, + 4363564740717396, + 3040469419803620, + 3821719354380342, + 3348806872333946, + 4478232678577704, + 1574415028088990, + 3312796913888535, + 3312451386336738, + 3232006250177061, + 2643984045687813, + 3260176537969775, + 340222719853840, + 811412040243414, + 2162915807272264, + 4479348811468884, + 2405231619651289, + 2952493536284835, + 536877843734544, + 3772210079566855, + 3477510324225426, + 2018951701187877, + 2223520183473591, + 1963529698033716, + 4105481028713339, + 999870256401338, + 3051561661653176, + 4080600887988433, + 4462849290733298, + 3009232403448215, + 3762527208098906, + 1108291931316513, + 2918604243392423, + 3562816118792275, + 3359929474257898, + 3272202705487087, + 4364483029487592, + 1222501306591758, + 1912029380862414, + 686053263048079, + 4050943065122215, + 3544663151090091, + 3210692626280018, + 3441691519315851, + 1457106720062604, + 3391358292180318, + 1573755398729111, + 2929264295127291, + 2110409184766248, + 26698799162631, + 3983314390040755, + 133474141299563, + 969077690210218, + 4129197398040888, + 3350381508171469, + 4266756069389155, + 1276094136778124, + 3037805782916399, + 2739031164382694, + 3896810275641877, + 1784742003017109, + 2702079546979498, + 269496755425023, + 4144987366366276, + 2992463731731832, + 536444943962210, + 887682598087999, + 3210421582480335, + 1665207493672561, + 4287342125912223, + 1671703707566470, + 2601457105423352, + 4354550839094046, + 3336665779427673, + 2757002436894307, + 3261035377029864, + 648323477352646, + 1512933312855927, + 3824328747398590, + 3474236703535343, + 1145012873880687, + 2185319427330568, + 832853210439853, + 2040276604736871, + 3932351103947674, + 1641301201542589, + 2870751685069495, + 1122172237570054, + 1031522960541625, + 1970047623829077, + 2731114345841166, + 1668576491328135, + 3294009155220164, + 2649453413745611, + 3262016437000150, + 2749383402159276, + 12762005256181, + 2834927115828625, + 2741750715096770, + 1346387120664568, + 434466345813702, + 310456459332501, + 3397645462578596, + 4469524325144960, + 3320101497603028, + 4362362898782516, + 4254532679384532, + 98456087015475, + 2607621637699142, + 3987660850493131, + 3133662732041026, + 3856489345799469, + 4277467542239483, + 3374250530515206, + 726873477398232, + 73928963410843, + 1060119562055043, + 2827777692444494, + 1656100036979148, + 3835390786153726, + 715225561102790, + 840638960329429, + 2602133543792675, + 3302910131997649, + 3817095768038260, + 1660081952374060, + 2873103056719613, + 1871600476165862, + 3552012074686405, + 3262985620474031, + 2303137893959624, + 1539569218810867, + 4206393270077331, + 3043962423470932, + 3506796566716766, + 870011761446795, + 514324829156997, + 1539438832620923, + 489991633399780, + 2960301567080382, + 2326153108750354, + 1051664204360647, + 2702790410601976, + 1664522017117848, + 2735300851080764, + 3646547612768222, + 774349479460540, + 4331980281381849, + 818971650024547, + 967244234686110, + 2030293686353742, + 457266583180731, + 3668023537421906, + 453563176816299, + 3151287641972818, + 1158381024106046, + 3004165404683281, + 4327489441824096, + 541659682761655, + 1107432967757484, + 1375931558726735, + 4482280477292531, + 4432809259107631, + 3233026123544698, + 3922838656568126, + 3196505526521600, + 3058698690088676, + 19243752992128, + 1682830132519490, + 1469279591586520, + 3877031118356799, + 1149021057928165, + 1767936343881074, + 2697484416559834, + 2110599071850897, + 2215316050259536, + 3818444893118478, + 147245473090103, + 555047315603054, + 1680102611856507, + 2606508225587756, + 3838356049854573, + 417354584609456, + 3298933175840253, + 2884465696073528, + 1733753983288200, + 2524569304259049, + 206280338432856, + 3206538190693807, + 3487593075957153, + 2310296501846340, + 1181120617837296, + 2785997076607990, + 4260608071355446, + 2466887621243555, + 590320009986161, + 2465150371018413, + 676229689674376, + 3806160431830531, + 1042725732214044, + 1595555185982768, + 1299498094774399, + 984098642783592, + 4439133066633238, + 2198138875685485, + 2547721505786121, + 2468650493555913, + 927176467115138, + 2842858705486080, + 4493642953456620, + 2047839092472093, + 2950943676882539, + 1606117996680662, + 1942793084457365, + 621560750633217, + 3193763134310407, + 3406147237461936, + 799587465753129, + 1491905216111548, + 1238405460316056, + 1375294465104294, + 544809933364609, + 1771413469506676, + 1582285505225001, + 3439189001981299, + 3768069234551602, + 720026331865434, + 747026966190746, + 1190690718365080, + 2531880119193266, + 4366762242705702, + 2926169800196069, + 1118433512355774, + 892443836629134, + 2343431665656105, + 4465913149117520, + 2844350193487342, + 3193737680358111, + 4351200088276043, + 1000166086498629, + 3331085857458008, + 302946114672837, + 2094764543328627, + 1820212114166119, + 1724854082176965, + 1166386966499124, + 3961707308145200, + 2300552490907422, + 879608685166431, + 2706089780031679, + 2917418027584249, + 4261518262960072, + 2209332710770723, + 1895786695591504, + 2328365642581300, + 3257997784763637, + 4182848818603142, + 1419878866752513, + 2977895837676439, + 2292297435869422, + 3056015751252487, + 2749975482865192, + 1382959882530408, + 4090427167024486, + 3904268865850129, + 3414625422307134, + 2612794774541156, + 2988462703100146, + 1693860139076261, + 2429779880457854, + 1409860905364401, + 463616165978470, + 3582014941563008, + 1383594090021196, + 901241278081006, + 1101793192942962, + 2438513037225510, + 2914016992115749, + 2030887162603970, + 3908102755593810, + 3329122796777854, + 2535151596162600, + 2462754215142896, + 2420136328514899, + 3812996005974724, + 3226607262866743, + 2259889023991568, + 2389383358981141, + 4434297901665824, + 556592300021400, + 2261320993201391, + 4453694931363534, + 3701615544761213, + 1518697566051085, + 2770269017839406, + 130821760404280, + 1030435036739615, + 3902483613486206, + 4049430560170624, + 4141980247086160, + 2853594542329379, + 603387930064668, + 92068627237621, + 603140560528069, + 3479879288544744, + 1127512129958462, + 413289962473516, + 144652058754979, + 2302271207855506, + 3493144049083527, + 2621048061641807, + 3494977379843790, + 506844653416635, + 2333720997301125, + 1359318952385231, + 1206664377698492, + 4085989698683377, + 4074577907641672, + 3620246788115582, + 347402917320416, + 3474539179075425, + 1159409208851856, + 1953955588574863, + 1094275413089765, + 4162170989636266, + 1979010338341955, + 3551702164112044, + 3753092896027389, + 220352963625316, + 2709775758713883, + 3155365360000586, + 4427861218398096, + 781343201426632, + 1962547077928485, + 4459563986586818, + 626415869760217, + 3448341174493875, + 4174679921023709, + 269341564968786, + 824614955837027, + 2676126053819521, + 972784606404481, + 911305871259951, + 2527886577951186, + 2731275452977578, + 172886167537662, + 3383191611041676, + 1624946965500017, + 1516988298439807, + 4208183605239413, + 2911242059336192, + 3633358004643408, + 715205516022776, + 3446422353036524, + 1698700051914085, + 2053639841483901, + 740633490632942, + 1096317900873237, + 2115897807768880, + 1643993709464573, + 4076783259096890, + 3398496873712189, + 3498200806433675, + 1841796321770175, + 2852695282806872, + 1186865294003242, + 189001907070858, + 3970301014048331, + 2677051977442094, + 3093011610813455, + 2036359201347576, + 2397911781967303, + 2127015377364820, + 622321300742093, + 1163665096293358, + 2149506780976717, + 3113580928990592, + 3220515893818625, + 2306271182024501, + 3500013641121893, + 2214021507636225, + 494206167480631, + 2449891180823319, + 3958494726325386, + 1104343479300916, + 4298942434679495, + 3973190079273504, + 2823579951346146, + 2731772693599878, + 3027906693209190, + 1126656419931299, + 3878225632019654, + 2144302209883788, + 1179359089076704, + 3133270654767318, + 254682110936612, + 3831320901986367, + 2025519874498947, + 4015064533915273, + 3262488141807536, + 2122189159343993, + 868162194520667, + 624786794630433, + 2224090788761516, + 28645855236219, + 3249921599612557, + 2463383377536656, + 3338707046266975, + 215346393954070, + 3635213748629919, + 159042649533494, + 1901278023290845, + 42000503778136, + 1929432003859616, + 3593567917306980, + 2169712548033730, + 1279762889427896, + 57086664809579, + 2153795355120875, + 373301540255774, + 1965046486145958, + 213117695628594, + 2840003877436518, + 975803355311907, + 3011040561396926, + 1891576411717270, + 636794592436354, + 680202128462857, + 2482208741090116, + 2890361818646621, + 311316314416161, + 1765822371806770, + 1762754069572857, + 128308328649421, + 871685144500438, + 1352654396979974, + 123657428307829, + 651823297561226, + 2961471615919138, + 3382971313237999, + 2563674711797494, + 2257619940072720, + 2753159194715680, + 3759911116574397, + 911006560892745, + 4054448315755800, + 3605258525325657, + 819379130272609, + 2385422408406249, + 846425002889619, + 1359927858977214, + 1985504970969078, + 4364115465821825, + 2071612764130146, + 2689744378742437, + 4060968708934944, + 1211158561535614, + 3128059790441373, + 1794401056284342, + 4019773134916972, + 1400063286545500, + 943984361742505, + 913662606831844, + 4476509734181350, + 2835993227946515, + 1044530450979041, + 2879762069577053, + 4190070371362749, + 1843270160220233, + 3331427703194489, + 2960451802259561, + 2233138188710103, + 2736892789309684, + 2332111804392223, + 3107610019167610, + 4141677017970909, + 3057812746596849, + 3084338455908978, + 683916077905810, + 143105889417865, + 3714127365913224, + 3752184775919423, + 2667601641046820, + 586319745189950, + 903998094341282, + 2202731292538509, + 418905872470728, + 3374568243117617, + 2531839656763182, + 4381676101726380, + 1564440284772584, + 2115615415878223, + 1853705538555878, + 2403044298333843, + 657414906442164, + 2366818089463288, + 1177446764428060, + 28185754284644, + 4069785616074827, + 3837549360105316, + 2611902313446888, + 3514136281922835, + 3163853759055320, + 3332241936178135, + 734938909080981, + 2755061994858258, + 1025245055069429, + 1657145994347520, + 922078635427573, + 1369133948165216, + 1208724881590601, + 1241445071634904, + 2732097193484924, + 741869372695455, + 3508422881495489, + 3533254066854076, + 4347318004804597, + 282651880336166, + 1024182690719531, + 3852684332029561, + 1831518857580477, + 1508749177251672, + 1875710008363115, + 2790939837269358, + 1542306908643906, + 40216233042585, + 2720299342349333, + 25853469433519, + 2815255849225538, + 3970469185835396, + 1480618052787833, + 1638395572772544, + 3771697305732153, + 4463496372654636, + 3208688167403312, + 1028657110849874, + 4148971378919891, + 3461815237621142, + 889683568189858, + 3430950769479453, + 2598260311276432, + 3431398559309305, + 1929680561155256, + 1113133702064722, + 4087201530550946, + 82935916382414, + 534097170977661, + 51732478037620, + 439891581453903, + 1295471510379936, + 436562860900837, + 1447256765861616, + 498738634200550, + 2260014336138290, + 3519432639040274, + 649852264164133, + 1087855609394547, + 3920556175114614, + 4453572798062209, + 130983151259249, + 2452834050718529, + 3905477691813483, + 1666991267767869, + 3358753862820020, + 3087055202356285, + 3367070107184820, + 2999826089840632, + 3715343957478910, + 1513459938770210, + 1450385691599266, + 716748920524895, + 2535959231976309, + 564422967918750, + 1055197642326493, + 1818635322447605, + 1587636482111107, + 3971021531378293, + 489545416003994, + 1617333736478087, + 3706980685208582, + 326083388702131, + 648246808794187, + 2760867133222196, + 447203138894713, + 1627837267389597, + 3767886329006208, + 1230410009312517, + 1994981242176771, + 3365343917352300, + 3978597125994571, + 2085597909690503, + 23558050644579, + 2651699117545208, + 4157228737916237, + 65427535193713, + 733471114640471, + 4469632431179454, + 550576078616276, + 596161800808236, + 1311455130420024, + 1112884661023629, + 1617910433560875, + 1717114544955110, + 3656627069589344, + 2164433398331417, + 1991822100625175, + 2508760843235727, + 793161643218816, + 4277215712129436, + 3391115820647594, + 4421387817041758, + 592041266337254, + 642925845772323, + 736493145283728, + 1610129068308073, + 860262754374587, + 1753255146746085, + 1354854770044786, + 399208653101228, + 4436478537432008, + 1043733343688862, + 4044964508741911, + 3494187693031678, + 4165574209456975, + 1550938240015081, + 2806378123596340, + 60430105754204, + 3261075499359074, + 2663660041650347, + 1454391597617841, + 1123564451931350, + 1304128435354727, + 4497687088180860, + 1609050920053719, + 3482460431215089, + 386072957544717, + 4307888296077447, + 1449023787259472, + 748491699974601, + 2508340159756078, + 955234717485213, + 2377378911801534, + 4095038707547915, + 1474007996931770, + 4176702547317961, + 2676434369368022, + 1974743693330314, + 4352000820077584, + 8401034686703, + 2424035709265638, + 1713783891949283, + 3937412510317275, + 2765217086400240, + 1860838902061165, + 1407708494834229, + 1225852417852043, + 88995777354031, + 1379034879690319, + 3625985034657149, + 1696706152316485, + 4458471713395936, + 1374471110534233, + 2377725712214045, + 2146261631065737, + 1923987681610864, + 3854744606799792, + 4292331999871329, + 2829209601337978, + 1183169103115231, + 4377414763348037, + 1128175099992721, + 3250463265145455, + 2739996340251115, + 2492941810970549, + 2872229854732637, + 346171437340527, + 2443539436345072, + 859303137054214, + 3179462400698363, + 1411119702382608, + 1515363285221858, + 1626721842674207, + 3149942772388981, + 1832353399734382, + 431812078817147, + 264769277520206, + 1109512054386192, + 1649728627414005, + 352686837775481, + 864903797382091, + 983876734728501, + 4297354817124606, + 3649884924535755, + 980900579364025, + 2830403569014720, + 846418230568128, + 3381740846352421, + 1610837327548917, + 2183702009783347, + 2392114732167055, + 1195269302017704, + 3153318256105315, + 2659599255297437, + 1354880360608558, + 1347552927624824, + 2319151239836180, + 3888514558406242, + 3692978550808973, + 2801849853134297, + 2334855264702566, + 2922870269298410, + 974054113039063, + 1749065762216864, + 3346890590782414, + 2343183021079114, + 1000224583827517, + 999429921380797, + 4124811410959601, + 896718461320590, + 1090854709847501, + 1749058523962501, + 4298920407579747, + 2259729404076113, + 3511320599219532, + 4485870750398475, + 3807169140949436, + 55474410416150, + 211043387152376, + 2967081952302866, + 2048896771539408, + 3121415389405120, + 4410268502308171, + 1158727243510699, + 358416984860236, + 2945549883180576, + 166498865109311, + 2688285842121711, + 2071503945036657, + 1146307225045258, + 212054299936934, + 1414390009180350, + 1296059160128765, + 2985390689124823, + 3525403916205792, + 2860130073395505, + 2430962127897301, + 3562027487185260, + 880157053129543, + 12571339520020, + 3262225371874078, + 3638296278085883, + 4100277061513937, + 1872168054479193, + 2043549041094582, + 3991364361372932, + 3730685576895577, + 184379386858080, + 2102540155060865, + 2660455472893731, + 2188949000501344, + 622063069752429, + 3207610261009572, + 1028284262252407, + 3606846793538917, + 438667555432569, + 2977001797689684, + 3691059988339317, + 156575272807862, + 2439949861144902, + 3886054975446794, + 2175257617994503, + 4481596687396197, + 543417613829415, + 2420162253213928, + 2290565325872059, + 1010448820403544, + 4470332896952586, + 1022320953719167, + 2441503098061082, + 2790465615109915, + 68296580313170, + 4142926749991276, + 3625411111746104, + 1672250264244541, + 4240831780242936, + 4016641924585946, + 154288432652694, + 3100185791250536, + 1695023613497398, + 2158995296217400, + 2695706333179247, + 3481372714298094, + 1699517087877668, + 170927717337638, + 984060430617886, + 1133549629460022, + 1092449225769297, + 1460758141061893, + 2792232611609894, + 1573892014220619, + 3440559252503358, + 555382334808206, + 2999317076527492, + 4104028878776732, + 2550514094555534, + 1267788049883351, + 1656804182678347, + 4349190329686660, + 911609052586962, + 2099734992262571, + 779684700887764, + 2468196064295709, + 2683113788556339, + 690564260123386, + 968757175192468, + 2729045092733784, + 3829318602740789, + 1821812767589202, + 2095897519629977, + 167748443138167, + 2678018061183737, + 3043376219543067, + 2821275810317600, + 1105841207377980, + 1778227431150809, + 885954095230511, + 721199532803347, + 2344863555920684, + 1076173780402847, + 1933241059095935, + 2729016391522280, + 3652445874529886, + 1124847615368333, + 2833857849933787, + 3298492672884296, + 3373796635792132, + 1527077717978293, + 3013626869757261, + 2009863958277451, + 3711693795636303, + 84288261959141, + 2657915101775864, + 2775079749621447, + 121456275306942, + 4353791751202446, + 1955424989615430, + 391236540660784, + 375906445639607, + 2648564248331832, + 3551000809621483, + 246400956402156, + 149875547722241, + 480203645796466, + 1879927589975293, + 1345971690134094, + 598971559588915, + 4128132934524142, + 923809841271831, + 1051672304415479, + 3264639178442012, + 1707678737394930, + 150131631647982, + 3947772837236503, + 3822421978308120, + 2543871959584647, + 3527432635748780, + 1671796687877817, + 1155102209318128, + 2687108590865690, + 3584731146723289, + 4437769795003064, + 4390844821663225, + 819772663175256, + 243446487957437, + 783562875918215, + 3072313920499497, + 686004153189317, + 1794363517137286, + 3785955355751345, + 592480118992817, + 2962973235085522, + 3553927168332915, + 1543943921628920, + 2936178781682525, + 3881520527967951, + 1856070998747416, + 2433033629186659, + 1803278197707768, + 4199435946454855, + 4384859756270382, + 715195134691347, + 1079686025948317, + 622654410935964, + 1579852796424699, + 2716146568722960, + 2289947319329190, + 4426130013030365, + 2973360154216616, + 3400746159353912, + 1637962100618085, + 26772761247619, + 1137163393095642, + 2761500648689667, + 3343947158935855, + 3140817129787692, + 1144916897443613, + 2896175292664977, + 456056500623704, + 2630892918595368, + 2228264730657710, + 2840591360808469, + 1077934643521119, + 3452413054676477, + 53882470012626, + 3037149355419847, + 1509330870625634, + 2936743915200305, + 3652959261527466, + 1938378950554373, + 2139633444095401, + 4252786429374550, + 3621133816688276, + 714056210280390, + 1448410838026373, + 2203958520080773, + 4182093954082052, + 918461862053962, + 100559978216844, + 2795983001108044, + 2702833170335470, + 2389948465249947, + 4375405694764847, + 573657792205422, + 4299702496666275, + 3788801237712367, + 4145581085232669, + 1058409777517660, + 1313656513593463, + 4119172187425231, + 2727510195765409, + 2699381786832024, + 4439572017132865, + 2242742333342830, + 3345749890996608, + 487398803575728, + 229593348095664, + 3302358107611155, + 605194864734149, + 1040124562563732, + 4119189538943633, + 3727592048516579, + 449517063584101, + 1422622041059177, + 652764976657841, + 961597598172369, + 391811072084888, + 4280183926310491, + 2351903076931145, + 2250049332790914, + 4378167375100256, + 2299288809705357, + 2023584093720465, + 765520785819339, + 4338729077441543, + 1794807208679170, + 1874879115351366, + 980320379983548, + 3484280380510833, + 482334972176882, + 4458512635846358, + 707875301628057, + 709604473135454, + 3174201782055733, + 2475433929283803, + 1792431502921030, + 4063949953448825, + 978471596548337, + 1054473268081908, + 3111163891117094, + 1873423904648543, + 3693429350731651, + 1335286934785437, + 1514532691888590, + 3352244250210773, + 3027789158863407, + 331954930724819, + 1436832465841194, + 904065249059041, + 2229016375052981, + 4397262428235473, + 2644685288277330, + 1249487473762855, + 223615030785022, + 4237436621820780, + 3409854069596268, + 3136944608552191, + 2753822587397738, + 83173715811783, + 3825841730870265, + 4348128400836913, + 590591931502404, + 2136539356390366, + 831490412255292, + 2857709894923971, + 322895896030945, + 3219685262562403, + 1234716499270034, + 750178817449433, + 2719576905019186, + 3114321057900201, + 2638991125405855, + 987956148548209, + 4004709980661714, + 3872481674857928, + 1803708427305246, + 2952333353258246, + 2412740125390984, + 1037374930586991, + 1815216949815047, + 2625840589461762, + 56795196500601, + 480503785762075, + 573595425196406, + 1629034285294327, + 1003559427388312, + 1796059944867830, + 2226926327316420, + 1395732722222989, + 3098423466084960, + 2830833917301080, + 1178769933807032, + 3990381654067749, + 1041698873976372, + 1046593305406611, + 2305903005543998, + 1103531211374092, + 999127440024940, + 3186258885639918, + 3976328445596813, + 1333846503510516, + 2512715426898686, + 2905960538771886, + 1767265806421239, + 1873476542259595, + 4374638243288557, + 1672746444342923, + 4501820387287788, + 3339046277932286, + 2680236985517386, + 4015229599954323, + 945897635591988, + 3080842279106232, + 2309428197838156, + 2259780638897408, + 1817960923312447, + 2775155944015653, + 2868430358266948, + 216326399343355, + 875038248436224, + 1163305897282350, + 813210781468966, + 603499056392175, + 3248777273144287, + 2061071734102274, + 2809166635291709, + 4205864046693818, + 1757006457508742, + 3998873670503490, + 2978313295147533, + 1024794865720037, + 3694095461972457, + 3683537662398316, + 3275220746501231, + 1093688015870844, + 2178333492802070, + 1834475746743782, + 4090844912141594, + 2920679460926437, + 3435083904891850, + 2227624242617605, + 1680729666983001, + 631320995494731, + 4104805072801717, + 2004357567115841, + 642268509068948, + 272769564059907, + 3016894792340269, + 1996994974791544, + 1894044227044709, + 2318631886541144, + 1480771177739766, + 1506060546318246, + 4342128969715991, + 3649449725643713, + 3887940405260356, + 3928235333774895, + 1989366665208620, + 432804766920986, + 3208638209877638, + 2130148410442679, + 2774696802710726, + 856655236117450, + 1995261396495730, + 2143693137462879, + 146675924724721, + 2052662387451346, + 2599463227476466, + 2914796304141605, + 4353570011496653, + 4482152971332724, + 1736040548358020, + 154167197927719, + 1813323123495278, + 3081211196684598, + 1026798952902043, + 4360814961900146, + 501227211290848, + 2678090032449999, + 1267320435988700, + 3331870110771319, + 3370414904439720, + 444417743118100, + 737493753271530, + 4259463456619473, + 764053647680625, + 4094772842453536, + 534888578397224, + 747443103091378, + 576366015528530, + 2873646346770773, + 1968839131340785, + 983664685896854, + 3576072153148903, + 1681579760751584, + 3622365123990856, + 1259033182224491, + 1794535293174953, + 577166698948921, + 3067914961287034, + 690557683371133, + 2514653219126377, + 3260204135315356, + 3263495007663035, + 2633971883910704, + 392446344510039, + 4073936387611950, + 1156941491321288, + 1310609902573219, + 1617354884367276, + 1410661181768009, + 3705368519347146, + 644587380521130, + 3198347897013063, + 3476513996054553, + 268663258820661, + 348104191282954, + 2487977356351668, + 46919229565028, + 3932503628783649, + 1076663254964682, + 2255048151802858, + 4133995658869269, + 4502616253207646, + 12798744428961, + 3778294256295179, + 753413853170412, + 1849143776615639, + 4048765628321084, + 2674989290179044, + 489902440518523, + 4407642919510300, + 282628343113169, + 3497301738267428, + 3754866160126928, + 438464495778559, + 3904233341915459, + 3131263843226969, + 3900146136124002, + 310642295881397, + 1431195907370004, + 3773678487401960, + 793176267339879, + 3782173675420288, + 800975426567839, + 1286205933198178, + 4443755911549972, + 3274991057070084, + 3622720357197643, + 1307716264398775, + 4282912649954926, + 4221452530474495, + 733184714241653, + 396929175727929, + 3941949380249141, + 1481205071180623, + 3166039637300993, + 1003755387382804, + 4200672616703039, + 2042542996249264, + 4139056515006766, + 3820756364758068, + 4425239824349813, + 3563194627544534, + 4236101282018533, + 704610518495711, + 3447488761123792, + 122583855181218, + 463523368797683, + 2158999196190464, + 515075798032711, + 3594523994505706, + 211887645407968, + 413839541988932, + 1943255775370971, + 2339077564621738, + 1572855096444458, + 491982867573980, + 1822134918907912, + 692035671082325, + 4169108209917632, + 653203123810889, + 1164153913881022, + 279457007277516, + 394596192024893, + 1870232499386247, + 2542048705887419, + 1558562176340869, + 405581269084431, + 1688537163742655, + 3267010353617807, + 484293165687057, + 4478281719216663, + 3988229379250539, + 853266009550121, + 4449026390497405, + 439135507758976, + 671595762738800, + 4005397303620660, + 3937872414844858, + 2898587383580597, + 1678322676625104, + 115199102664082, + 461367385759009, + 1726755126791966, + 2018518944347698, + 2496147201294364, + 4377825945405996, + 778186836882106, + 4111902973238577, + 2497223273828453, + 2717739522907981, + 3806051708667441, + 3359088965040007, + 3349065140135813, + 2603626558406635, + 2487407273800204, + 1017775137381375, + 786731152829376, + 2514902544231632, + 3086690372643458, + 434767022922199, + 2312416318123442, + 4480830238764740, + 665495024380364, + 1317614931747379, + 3099368258160132, + 3367108779319419, + 2189349976246472, + 1962462053788338, + 1374715497462877, + 4399463926370525, + 1613560358583741, + 3297197168896723, + 3413021476253659, + 940721311626378, + 1754321802645167, + 3882351878764965, + 1144592445107292, + 4211015758600102, + 1709834671084067, + 4152097708261625, + 232843402357985, + 3120961916257623, + 465703123213397, + 2655602071838238, + 1801307511180808, + 649157648589565, + 4189514158885379, + 3056944456025674, + 1314238559559576, + 3787706555468755, + 559413591695151, + 2221402152752808, + 248621421585502, + 3513226062426179, + 4227702825110981, + 1886625709190944, + 3477607393367887, + 3095071370302874, + 4241867899740759, + 3739009270109692, + 31978881756981, + 1620412665574745, + 1082193604648018, + 2956631008876277, + 4157105101282752, + 3675607856577727, + 426350701873308, + 810335352328925, + 169293642546720, + 1953849370667073, + 2366556940771889, + 1701578231226347, + 3975255409202557, + 1243511963863921, + 1877359826622503, + 4494196706465991, + 1091056426763545, + 4240398318571713, + 3095601203643267, + 3523682860259189, + 857179133288622, + 252039544747565, + 1996397692191534, + 4050925906401800, + 2149995379228530, + 842351671397499, + 1198256389383709, + 3722928725521352, + 4067142938540728, + 2293442744442404, + 3934001903992179, + 1467792820989788, + 3434995331313168, + 3782093417420973, + 4236080131381412, + 3479500078707897, + 4194581376532863, + 4327032128774575, + 3140738751238727, + 852432263288377, + 1756410549317057, + 1796351912405067, + 2357674606863778, + 3953550515161637, + 3193586714355510, + 32780142224906, + 1882377644326164, + 1188861283215680, + 4147350215406650, + 2590393123174173, + 3698006133142945, + 3607825214686244, + 2838762130822849, + 2098816166592266, + 769555947411971, + 2359218672215439, + 2846308351281115, + 1188082853965774, + 3124259672229831, + 662077597763466, + 2189579434361013, + 3926898961758822, + 4405252502622476, + 1288140709936405, + 30494667104124, + 174171354933657, + 4091745718138110, + 3905322071623051, + 2646022120046777, + 1844287821499541, + 3946176632760164, + 1201787755363817, + 1677123669457014, + 3279339993486063, + 4003860506171014, + 1633918444309413, + 1650588548878869, + 960374602225697, + 1388280316284954, + 2009664231213940, + 2105422770483439, + 4020058266119736, + 4419080673956868, + 3818550505398906, + 287438472526234, + 289661421263458, + 354714946410406, + 3122754901325896, + 1997019717833957, + 1989440932283205, + 4481573478279072, + 1176301840300910, + 3569910067683271, + 2586234384223269, + 3747652784394588, + 3631326243904257, + 4185061962953160, + 4364431778365585, + 175584279937470, + 1446592213773458, + 1787114583627416, + 2357011475136257, + 4336325539712849, + 4203826766463161, + 3985757798033069, + 2404573164241165, + 3101091325614462, + 4340953158209475, + 2257419887691446, + 1352064756134305, + 2761479081612527, + 474124535046522, + 1855628394528489, + 1341520257671790, + 2480191191130798, + 3222389175493704, + 4303988815872928, + 1330355631667648, + 3845913890840165, + 1487684658487647, + 4110956618577442, + 610273032949471, + 672354023294283, + 637548525937278, + 120564876031213, + 56235237409807, + 1155773712336472, + 3326677685099860, + 2589103011584897, + 4218001500437338, + 2757121820624963, + 626837519366606, + 1834460557788436, + 2383021362669530, + 3751368855503532, + 624792058236960, + 3771993758863179, + 4023873308981281, + 140803444671911, + 3335948479218987, + 1629520822953255, + 4463048995021701, + 1256963015040847, + 4272145014357701, + 3780732502688560, + 706852161431219, + 1460908498077223, + 1425511276402374, + 1247918827467178, + 891691512874397, + 352379170982724, + 4231664693184905, + 408103776704705, + 415619812585402, + 109024633479613, + 2098000515740195, + 3957091356571902, + 2163426802672760, + 432579101545050, + 164033215273506, + 2421801459172877, + 2267817169939148, + 1133159857721986, + 1374177151179185, + 4152544028206256, + 212834549509510, + 1822092214999972, + 544037549756981, + 560575321625577, + 2294971682485226, + 3317344393862873, + 1412180777391781, + 3223012087109748, + 2269190684225831, + 4041984774247910, + 2897687483856097, + 2295530779959702, + 635186343788141, + 4048172993126736, + 1537955811230742, + 3463121759687133, + 2188157931542092, + 1321280691444908, + 349135244609502, + 2346948563426657, + 2761938412173128, + 1615864889167146, + 3164602162306914, + 4124100662167403, + 2343248533496266, + 620031168839886, + 1960312696808162, + 2603387636353952, + 283368736694338, + 3399651792140434, + 3983639924744883, + 3940949632923894, + 2841668126162747, + 3194982146538936, + 4114331317337083, + 973136399074041, + 1869706425364227, + 3356241560126734, + 686358088016333, + 3196471641997696, + 2457181032845413, + 75656024103228, + 2108912440267027, + 3936297523487972, + 4361730850969346, + 2209174928982605, + 696495474167399, + 3962382384560683, + 4393359096596993, + 3680625848008607, + 1688853534631794, + 3420454695452537, + 3147988500447942, + 2461973969410680, + 2600984253788867, + 2004929250792954, + 4032318225755130, + 3174490542419256, + 2661369689350733, + 4256539945954861, + 3566679546225888, + 1085691460612204, + 3613197971242841, + 3146842163235485, + 4114479549325845, + 490626837000100, + 3065960222505926, + 537667369718961, + 3754232909577875, + 2504763132486230, + 756599767247744, + 1768905865757133, + 3175179129704568, + 4287045792999392, + 1809607725013474, + 923573355544142, + 1449832425599826, + 2078506160694734, + 2169113576279252, + 352465098070440, + 275785740974591, + 2922052237667099, + 3419166628454671, + 1870766231232616, + 3331253788355472, + 1678917520980128, + 2096972867950798, + 874131400505255, + 1644629155777918, + 2082925296657449, + 32146781381855, + 461288308650908, + 1542575708968491, + 1179584652356171, + 433993880759162, + 2339935021547670, + 2098992876895660, + 375548610290615, + 3885740959806167, + 989066217314063, + 636221586782992, + 3903559295251218, + 559023928562329, + 3121005932342525, + 2336878068244205, + 2267436964492852, + 490636894473952, + 188631364199786, + 3815531433638840, + 4015592966085486, + 1820237187112480, + 760290644105919, + 493796241730953, + 585176500323406, + 2736987727026257, + 167208396276637, + 4224882994695628, + 1276587586326983, + 2802309951467110, + 1843770640756528, + 906825432811672, + 1348139220423980, + 325615672841780, + 2823923497357256, + 832838322857766, + 4301297905344385, + 823671261942292, + 4454143391455171, + 145205210824536, + 846181422640944, + 373102327659487, + 3227843104688133, + 2929068453523014, + 584928743065264, + 2986297129152326, + 3069493441070356, + 3370944357937347, + 2223448468747942, + 2165748852995177, + 2713262072928259, + 653784791478759, + 1947196487823600, + 2142585925542706, + 1978125182378224, + 3081379857637615, + 3570564539298708, + 178250374934421, + 3883506775437831, + 1789208779386073, + 1506830877099788, + 313923763756473, + 1713360627551456, + 1725115295180269, + 242075002563575, + 2936967116205, + 772754057121966, + 2388725691559057, + 1268616094240748, + 417568615014893, + 2682153334625466, + 3269648296220160, + 824361466209240, + 635322153494974, + 3415094452739450, + 559282704911593, + 3597731617285628, + 938223172765983, + 2203099428652156, + 2564315873916973, + 1114925567333357, + 2107820982141251, + 3237227644170379, + 2144402677744012, + 152017034351731, + 2562206062366584, + 2665720861755163, + 4292669120457056, + 3612134744266973, + 601121137281723, + 2042598647562893, + 3704133258984401, + 633350448012500, + 1945097457746193, + 3253159272132000, + 345633613533381, + 4217765544227688, + 894499833230258, + 4007500985929296, + 2642105623882789, + 1439281912903990, + 674862451903249, + 814457232474667, + 4151240899220773, + 4405926250153117, + 2858993601714035, + 1315046921579757, + 224348887764732, + 3456828901360298, + 3416671456647604, + 1092338129633680, + 2716633445542693, + 1700908577470057, + 669397836537777, + 335964309091946, + 4464376334777504, + 3284168545285786, + 2652358027124069, + 2826540428658365, + 3560408826898467, + 3387080125426594, + 2818433027482536, + 506675052394460, + 4330634266977659, + 3936276432391218, + 1183670443817538, + 3829313711390690, + 1286575784347780, + 202744222960346, + 3105048803894034, + 3316081458501566, + 5220892268853, + 3561634561335325, + 2244815296581696, + 1835251642819648, + 3716879720899755, + 1782458368301754, + 3695440193502567, + 2722872632374965, + 1191349732608139, + 1356681320864391, + 2753606321727513, + 1940394985552400, + 919687130011849, + 3600148786343375, + 1542345560198892, + 1408984963253802, + 657873926164984, + 1655304097719458, + 413253041235602, + 4137140299099626, + 1053782290060086, + 2921392586354556, + 2299991844412438, + 3706136731722401, + 1462846972331975, + 2197023138922870, + 2930014922606053, + 2353130677053250, + 3525573014110072, + 4003886672890273, + 1484606069420141, + 156036856893246, + 266811056082206, + 499161442773992, + 3079342127916456, + 3132075782098863, + 1101341395300944, + 2505500072153313, + 333692872170644, + 2781870866252981, + 1253122979828970, + 1211384045496896, + 1038875894187883, + 1892317252242510, + 3244200554517116, + 1087544149493368, + 4458223351496187, + 2898594196268905, + 539639895351644, + 1432455380262301, + 2876674154381550, + 650239137169827, + 3210170283383697, + 3970794546647019, + 3564172696887531, + 2327330521128779, + 3704562718059589, + 576474733254918, + 4064402511842920, + 4408254854059467, + 2379154237989020, + 1809874901639928, + 1685681093855809, + 3243659396696161, + 922236692194285, + 1314566374156051, + 2202474440616231, + 3015684818832236, + 1320058857786048, + 2710550895260734, + 1977089564522144, + 366676037006286, + 133961452639141, + 3802512271052198, + 1578719244345007, + 157692640721989, + 1905119882840441, + 2716765124951864, + 1678414112333781, + 1372540134221739, + 839783133090575, + 2146058383223303, + 1887236800681341, + 948924441583663, + 943681666759510, + 1173202809744638, + 1846576989132272, + 1057019560192076, + 2607468459916847, + 531625777263548, + 3107627130997606, + 592326812803471, + 3957231263863104, + 2632192272644784, + 3614064684427767, + 3442315431386044, + 1255277037153371, + 3122272240951132, + 1945451455830943, + 903425894996321, + 1348097868060302, + 1829399605677130, + 954051796485063, + 814587152502400, + 3335831242274774, + 583735542820940, + 3273958073180336, + 2113555615115779, + 1446016879020520, + 2075575686412193, + 1443931399160077, + 3332593103165828, + 2152826265902617, + 3681448092740192, + 3693134554139982, + 838354028170774, + 4130945871243540, + 3538090690583011, + 2876961079997140, + 3705092426997615, + 2413994163360968, + 4295182477722691, + 1382253157349428, + 1212187203814007, + 300528300092512, + 3034131672355588, + 381476820700702, + 3929924298774491, + 2714904545827421, + 1025252311571721, + 2698324328356136, + 347644572207110, + 1834547739380849, + 3761733565715879, + 3068282655489301, + 1148424352115727, + 3188221348462335, + 3953521928175525, + 4035506037966995, + 1702510812273636, + 4354234238687612, + 3370188725860141, + 2467929108897803, + 2741556896271390, + 1245976538938459, + 2495157777610902, + 1655942943162998, + 684094546021429, + 4080853102491307, + 3124513236157791, + 3530722881520097, + 2560421442161377, + 2886173711845907, + 4255578153215834, + 4232447360836196, + 2645189013075371, + 409955780991267, + 2930829678630079, + 957017294839221, + 1796244128412617, + 670081229099349, + 2628552203998164, + 2017177163565593, + 2387491199598563, + 1490193899368974, + 4074131129315863, + 1611252533686240, + 3141824612021737, + 4476524363762062, + 1199243831463945, + 4150823339616225, + 3278067513980067, + 4001336700742909, + 2533136246983417, + 1936465251370301, + 4179795281681719, + 4265835392572938, + 1536474819241650, + 674305507608039, + 4134465653294695, + 868002076934081, + 1296645833884661, + 1171182131708764, + 2886948810709325, + 4434774086115169, + 3254935965128697, + 311544159826356, + 1562490509805442, + 2397684910732688, + 4428313301122155, + 4030814925175754, + 984813469959904, + 3170707865465778, + 1507641402265756, + 55663951317925, + 3430761155846526, + 3976738747305339, + 1045239071677139, + 4465572938248819, + 3007776682119650, + 4478956560906786, + 4261924517573259, + 859867338796115, + 670679022873738, + 3042884038555184, + 924305604848510, + 323185786781514, + 322278530174622, + 1126942657420558, + 1377241539049430, + 3365311132048969, + 2479869020552703, + 2825372071654325, + 1993976443067312, + 824217434037455, + 3948015767598019, + 3836872030057358, + 856025204006829, + 2073426022862164, + 3213454938805464, + 4299056503587060, + 2545665612090421, + 1747768740138714, + 2638787167840521, + 4460004477239904, + 1443531557016247, + 3397864791052278, + 3498751205020157, + 1069856324618929, + 3899260953703031, + 4318780127404846, + 2361136132881304, + 2583405474923256, + 4274881453587666, + 1676440767735612, + 596948421493527, + 882817927339947, + 1300851782166448, + 3206854620297973, + 1072435558266108, + 4060715672101073, + 4487826599395626, + 4036180768904745, + 2317208555768231, + 2475919504290662, + 3109834211054814, + 584777968455032, + 4389580826008099, + 1351282205668992, + 3249739602343857, + 4105278929190111, + 729446273808969, + 3437242293842666, + 1898728898110308, + 3339862695227241, + 676279962352415, + 1393079639368997, + 123254283131299, + 286121697984460, + 1875280605768608, + 253690931393084, + 1002582327987702, + 1308214309316902, + 3360892316061103, + 4493675075191469, + 2541093220160141, + 2949112559101640, + 3264997213356364, + 1137672460347755, + 2906949494658646, + 3493917801855693, + 1339130620805911, + 3032218417158555, + 162916167378937, + 763351596865213, + 1710281765054958, + 3046127640201339, + 3220414874292510, + 2391803001162920, + 3990920774542579, + 1386686905387443, + 4262290406434139, + 691756854553942, + 2829959145686599, + 3760285366672735, + 630219482521224, + 537087880065041, + 3368707187909904, + 1052480514211001, + 2761098451315559, + 2394873711889560, + 3891251486062859, + 439083449550594, + 1216163689890155, + 4172308464323145, + 2087041298218413, + 2118005214552111, + 1602309128851193, + 3865749597812026, + 596457252361681, + 3400637492380122, + 1738915301337067, + 2193047555137982, + 3015056723747977, + 1889455891216182, + 684680873000669, + 4322337256357786, + 2134956542529590, + 1473005130224610, + 3650133601529223, + 3532057884048102, + 1376787781827106, + 3037180792722164, + 2660024971497090, + 2514414296439129, + 2118651098175163, + 3153971577039024, + 729397483551679, + 4407305162607218, + 1578898729356118, + 3042703111910750, + 1761285531794673, + 3907252466726686, + 2087856849773827, + 1554141561349372, + 406309737346204, + 212250058300273, + 500215586536497, + 2043761689356224, + 3579760016238111, + 2833203722092758, + 4213790590500449, + 2872190889017190, + 2760006259365979, + 1340257542230820, + 4043153070613219, + 1129055868016150, + 913150658744560, + 2364334742440781, + 464621420689047, + 2119916808490532, + 2043821903029159, + 3578889446555246, + 1042875854391596, + 4319381204449254, + 61610369517555, + 2825199595086566, + 2249644003358471, + 4174344245203655, + 1109134949054860, + 2572834219539408, + 763974803172582, + 1471768510318353, + 4458996828289545, + 617270138029619, + 3783201743326923, + 764143034130201, + 1850019437602589, + 2899721364472915, + 3291161783660326, + 2737925323385947, + 4374929142087267, + 4067629234721144, + 3830541365899030, + 1267533411150094, + 2300768152531221, + 4414888592322758, + 363945380214940, + 994532262297693, + 1504807080065245, + 867811620403859, + 206091576244494, + 2659961591516266, + 2746415609247111, + 1549401393758282, + 3848013150882140, + 1341567059687698, + 2680726783389806, + 2319854135639633, + 3854279324028646, + 3349013182214049, + 1250132435072815, + 2720361653784679, + 2275247812519497, + 4316492476782730, + 3213476096576846, + 2808206627604173, + 2013103870854525, + 484628955400208, + 1922370976918800, + 2750875930496118, + 2491667013289955, + 1821995078565837, + 4433738248930300, + 1854774109016279, + 949609508296805, + 4381180024145071, + 553291851150072, + 2105722433964949, + 2466888305135702, + 3228711504404936, + 3960507456034099, + 1385522176865607, + 1593698254790024, + 2003206434739031, + 165528600913501, + 1898436138013923, + 3766510472463288, + 1131006207303107, + 1439452249620820, + 3491721487450307, + 1730542496904976, + 591569837065686, + 1586801940023153, + 1523812175504643, + 913518050066933, + 2530804706523305, + 1100336760048545, + 1040090074009198, + 4327578363214174, + 2389143941634166, + 2270792115473138, + 3426050828623737, + 1725339336797507, + 3930007621365489, + 2041575820047967, + 2084120964728814, + 3742589714621013, + 4419143678203886, + 1075226021716659, + 2584864854316869, + 2831866998450357, + 1417919791822280, + 3714928786221736, + 4280804870697039, + 3437866986991201, + 3631313337690461, + 1768815151879864, + 1507796290167631, + 2675103133697716, + 4323298210895953, + 2268490234745230, + 3273386876985457, + 2698414627792310, + 3779097437911650, + 2182361158187266, + 2362633363942175, + 447908389153007, + 4018280184288556, + 3517396070001465, + 648161338194166, + 2702670335008804, + 88162942135832, + 837442235297711, + 2235305005422935, + 3469126033174329, + 2299859770175856, + 3519513019402725, + 2040344150559960, + 4018121616833744, + 2940301399249375, + 2922979631758086, + 2930572264942200, + 4172789608415454, + 2411756257098744, + 2209756797602737, + 3611266665572837, + 2112764933241716, + 3794525473406217, + 1417172383084690, + 949447002806413, + 3659503773505204, + 3934525620898080, + 2818898118345176, + 1444929896869876, + 4279308005183820, + 4405326190802299, + 1677707431178072, + 3377692230908383, + 1345007587565676, + 3185524231287785, + 2418469827513783, + 3501038535396494, + 3173493194925736, + 2166578817911295, + 2780754263745628, + 4273814301582785, + 3711967192020334, + 3179651040998205, + 885292222224923, + 3796847483176453, + 778168624592038, + 2264462241057373, + 3543503425575930, + 3007957907212139, + 872004867524602, + 936581135048499, + 1329985788380272, + 1549833225553365, + 4016474643301876, + 2755246478342067, + 3722483678438061, + 1515554269294107, + 547025559920392, + 4443392701890829, + 976653510601972, + 1285281539564881, + 2664103042122734, + 4020822390176346, + 3693908857265155, + 235914818535358, + 3830097262416032, + 2434928882588511, + 3777905553807258, + 1623606454891749, + 877271794760503, + 518705352003144, + 998427534068523, + 2287793454997066, + 3658034809569992, + 3468959563537369, + 3141380136415566, + 1394305009679886, + 3890788932381657, + 4275719310381585, + 3485712984916778, + 2527402683314180, + 1522369864523353, + 197147666504782, + 2970062936145404, + 2234599801127822, + 763459034625352, + 2159384044664255, + 82396110770053, + 947229408723687, + 219940295417284, + 2062953540902091, + 1155388173758242, + 897355958416523, + 2104145797631103, + 119754437456205, + 54782116692886, + 2498413666094100, + 2426504063292956, + 3382068674563789, + 3139217452795611, + 3128854221335829, + 3395052306710271, + 3867564606050357, + 3543153833134541, + 4012044087041150, + 4350070501302670, + 3922246073743828, + 3853071514727928, + 4292467563990792, + 4463797647721138, + 1387670453951947, + 689427364491177, + 318432519123726, + 2259691180411399, + 2182039232552838, + 928014786687669, + 625672531199196, + 4415373670814149, + 2281260092547057, + 3778870793719616, + 795016407973680, + 1416834789508946, + 2496677444965403, + 541091532725526, + 1086242671070185, + 1842406833346882, + 2848772693650743, + 778003620129462, + 1136698541681455, + 4098583952902754, + 570459117982311, + 1995809066297387, + 676163665426679, + 1351028215755113, + 2443010987907659, + 4082310761765415, + 4072982327811707, + 774538128265435, + 1990257065271535, + 1197010989491496, + 3891003926297777, + 3914106374267409, + 2891990503509567, + 1939458035373283, + 4050047811353670, + 4485923078988913, + 4280957681079105, + 895731100402916, + 1740901898059270, + 3892752998116483, + 3132511790154272, + 454153531222506, + 4372233453521544, + 2448911744168453, + 377393812711127, + 1928288635877758, + 1802880960023459, + 321261095173476, + 531795974850334, + 3568170713223988, + 4225259778269865, + 2947067256828885, + 1722993664648077, + 1206736585595587, + 137971590488413, + 698687583257530, + 3358197332313258, + 3395540731439290, + 3007355331311536, + 2460105124121084, + 2352421872470358, + 2663754791183798, + 263389082490530, + 2804272658274337, + 2884311245089655, + 2866004677553611, + 3962303895293387, + 380153768870655, + 2946629576512599, + 1498943138586665, + 1734977078445725, + 1666319977692954, + 2118173400507817, + 1824193067238471, + 2397606647675549, + 1742523714611004, + 2211635590548241, + 675064007128768, + 2630820559015814, + 3764591414223064, + 3836828768914544, + 819758970201223, + 4078042493528965, + 3771565006627118, + 4070879469011263, + 1342643700040538, + 2044728779973118, + 3397128767866647, + 1682306087996929, + 4144850346960312, + 1033164386604681, + 4495419166267180, + 1521713491641388, + 3565971939452859, + 580697601136417, + 301029865443382, + 3700918750557898, + 1436155166395599, + 2973966751568151, + 1928375750048601, + 729648318611964, + 3068043573848142, + 2144380258279091, + 2621977103351568, + 3817051340688777, + 4034230326643618, + 4427873318144892, + 3137565832259778, + 962767898349930, + 3122560156555788, + 116586242556821, + 2785465443808860, + 21951452041128, + 2940359096830360, + 4239698425377039, + 17541984883487, + 1894868449997419, + 993680329037137, + 4238031203765494, + 3887041229594447, + 2790297439284018, + 1975213983843777, + 293605672330962, + 1056925107366309, + 2238804549934606, + 1296218990710482, + 3992778000231203, + 823165501632341, + 1672716157096306, + 428166288387888, + 1556652076803083, + 1854970775898061, + 538650736265928, + 4480420157467737, + 2240968333099798, + 1907214063860531, + 1565149723077556, + 3721805980745389, + 640972027649771, + 1642952589355268, + 3074254156187149, + 1660047880264372, + 1542775558764535, + 4477810599763580, + 177400934361626, + 1744972106775990, + 3116937446620727, + 3394764595669503, + 3684518571644612, + 2797570578328461, + 781379074893530, + 4383176388176571, + 3693383775415851, + 3969086302191415, + 1474594746125395, + 461876659294935, + 767117398713313, + 3659156108515579, + 3057486897065481, + 1484830463377610, + 843668869224353, + 2025479651552983, + 1025470945222134, + 1081829234137310, + 3705083172714027, + 216841112869655, + 4201446063571146, + 1599782078617371, + 2536882925474425, + 1610487900064434, + 409127196317433, + 3836641139628750, + 878942811201488, + 3803097227688552, + 3764220112771286, + 2730584048333869, + 4004640487823625, + 1425282293830559, + 1072378561413482, + 939907075987381, + 1313828007253519, + 2665291642174127, + 46227740666386, + 3765395870854685, + 473575980351206, + 1326923816703473, + 2015400770254799, + 1536246408395848, + 2009001445919635, + 53789267588499, + 4340838296726466, + 3604804931961288, + 2487101103086496, + 1887046003795926, + 3269783803196273, + 3248353336910036, + 1152447061496633, + 4373280744414120, + 2341056489452201, + 1265543558499052, + 1838130303231695, + 2198225722013235, + 471268171871484, + 1212796152646187, + 3570608454027821, + 2410188767134053, + 1777166659146334, + 4331064999246205, + 233539360567079, + 1915737459731442, + 725748054989896, + 2445216576096089, + 2152501234434688, + 2540833218119458, + 4043795427182461, + 1241633518952291, + 3593122289536488, + 1668277095368719, + 562829602923455, + 1490254414112663, + 4437123904961257, + 2887046852025356, + 2047323324763295, + 807458223865080, + 1181826654099367, + 1099681881510460, + 669499693280796, + 390110212835302, + 4145032485472987, + 2675711121787519, + 3757618119618130, + 2364672147853384, + 2952680182678574, + 1508297145484197, + 3807181767148232, + 2939533361155727, + 1904933340499296, + 1612602547703019, + 3326490913718076, + 2701346397234521, + 214429189313522, + 1621997873544274, + 245811762689050, + 4124384128940849, + 3877927979263194, + 873837483899332, + 3113293299814666, + 1624380544902867, + 41626311311780, + 1328739338066508, + 1531562685146871, + 1938062018228367, + 1006308082549084, + 4132354270953544, + 2024678220512818, + 237533820829029, + 1204142882709534, + 4001034984879569, + 2029378143550141, + 4412960236350938, + 3939845385050724, + 1121590877284224, + 2163019973650831, + 3100445343161219, + 3885053823129212, + 1326892665672926, + 2088088907420038, + 2009819603172208, + 3842329350784193, + 1557244305820007, + 3877241002923093, + 2718865364887805, + 4223753311632471, + 4486554668562289, + 3700251280471252, + 2167611611564897, + 3602218124905327, + 869547957587095, + 1187658195246423, + 1203786232218947, + 2891546301467607, + 223542288376004, + 1500235398724424, + 278573580699639, + 890584305855488, + 2455942222601915, + 400579691626577, + 3933924109187825, + 4067378865660998, + 3281762820144259, + 1117936133988704, + 814495194156046, + 2317406943954553, + 4298390310625680, + 195993524243895, + 2828871994276082, + 3117419515788214, + 1736111207373665, + 1187426472899238, + 2414327098093060, + 1820161334258200, + 2610775380742311, + 1997994596049766, + 3819495568263413, + ]), + Polynomial::new([ + 2523532797293602, + 3646945143831649, + 890596174384871, + 1187287329669738, + 3649217327503021, + 4245538150704817, + 3432214562471488, + 340921876237033, + 1048600799401796, + 2785424400395531, + 4449279032556367, + 3757880420885124, + 2033945546343964, + 204428792621013, + 1156765953441225, + 2364650957555774, + 4013032206299260, + 1866093064776557, + 2944569304539391, + 2355437203861407, + 2286434232728693, + 2963448452173731, + 2595514561407289, + 2765987675452774, + 2616704193031261, + 2565381808822139, + 2358746916371989, + 4261233965742220, + 1444050339710520, + 2785294309332355, + 4259062186296978, + 2310039455900656, + 796935499273047, + 683211015170084, + 3636096541532121, + 946158737374237, + 1194617763486003, + 3120669736298727, + 85700600657083, + 477266469757474, + 538691790037719, + 1779917073110769, + 3307754290658387, + 1393956153493758, + 4200896259173507, + 4239521688906564, + 689102142246048, + 3674389746088530, + 3938089901195008, + 847367456657782, + 933536722306719, + 2629221372659659, + 4175295655269119, + 2058399509324314, + 3396479976062478, + 3842252813666144, + 1103588132866801, + 1865270480216412, + 1482710198573308, + 1769820311730475, + 2541093958161171, + 3970586814117529, + 1485025655639140, + 54676517886661, + 1175323007930412, + 2254430156944456, + 2563323549901579, + 1715592369111633, + 769638416718515, + 3062161040122535, + 3312440513667538, + 1463887269736322, + 1288315463664414, + 3477437304307785, + 1135595637990170, + 3452772113512664, + 2333545663884358, + 4408957615285188, + 1879826156345356, + 190806939083266, + 3144760118302271, + 3567649239534832, + 1707439291250892, + 3194070599968397, + 1855494970370303, + 3843641013563977, + 2141806218768204, + 4103205184254310, + 3587254941176030, + 858395068636200, + 3587762532486087, + 1630176293566888, + 844064278661590, + 3929331655989006, + 2569718718134980, + 713846279520155, + 2749695560098685, + 2607955317484019, + 1680470985165588, + 1830040986450880, + 3607966907983978, + 2599608317524848, + 728483011643691, + 1669039363647977, + 3667021280662239, + 1328771154363094, + 3670801112519897, + 2436637921540531, + 688532448489397, + 2215303101813356, + 4440001225765544, + 3076115785318425, + 1444253617746874, + 229598190712058, + 3874366266655652, + 3349679117826970, + 4115652081037040, + 1005582966409888, + 422784080556921, + 1382247784387310, + 1336201895121941, + 3056640753400229, + 4184017963326795, + 1502014877740678, + 2966809802311871, + 646019559974957, + 2363541417665101, + 3164614652218592, + 1393872150533140, + 3935491985167243, + 508090315034809, + 3079784498592781, + 1574498423487480, + 1046858080236652, + 496873174108449, + 1145613080051815, + 3236880373245992, + 1050468259659024, + 841836839047011, + 2715372254489766, + 422695909761551, + 2978777022530208, + 2073223662516453, + 4102737320592974, + 3340264368286266, + 3602581590029669, + 2242214362775159, + 3371603693117682, + 1674597516319634, + 2492954908932167, + 236732110893479, + 323947457694026, + 354722852507022, + 714637446792924, + 4290959956972954, + 2925280191642314, + 1825420689343611, + 383818838727226, + 3481419296333650, + 2146526432054432, + 1718906604086432, + 1485594914849209, + 3558448015451387, + 3787138310011560, + 3761645550403061, + 1828240712314064, + 431052263901607, + 2851198223984084, + 4256598458733506, + 398362648463074, + 1099307692012223, + 978530332886691, + 2484590410387648, + 1211431831204127, + 3781967470902601, + 1208874175209124, + 2513263415971115, + 1764345248799639, + 3953926553665143, + 1037793897686929, + 2182395242202466, + 79009426321007, + 1189717159301403, + 2925288811078815, + 64049405605600, + 3800684967149037, + 2245723022543860, + 2664034109261204, + 2282597864288979, + 1731259862576071, + 2029703998391988, + 1632763601557760, + 313722732940111, + 4073899603504196, + 239488859874173, + 3885479651091099, + 3755348233031532, + 920793372232586, + 3552130538203497, + 4353629736776874, + 3955198818092206, + 1078603112791812, + 1025324778132717, + 1086295676750850, + 3547909672256741, + 1981338758593423, + 1389435024918854, + 3072007468667776, + 936160593099499, + 481712407312576, + 2445809408856219, + 193569113878762, + 1106187729945655, + 1099281757224457, + 4188384072997242, + 1832386701693172, + 3597634229710206, + 572249664826677, + 3593823959358277, + 3855783891164015, + 107659516725789, + 1642475882646642, + 2840873175063751, + 728988448074721, + 66472166461478, + 2208933001503584, + 3004583606239910, + 1351371079555548, + 868013364956537, + 3664670538581443, + 3919343260535803, + 2646188130355017, + 4479244852215611, + 180693180155775, + 2870107871399804, + 4422982772086102, + 360667196701601, + 3496937903545203, + 3667601047060945, + 838645031756496, + 640662873289753, + 2243397138484782, + 449422259167791, + 822424006469054, + 3011948468598194, + 3734080506638404, + 4093718920007440, + 979338902302837, + 4230513849977122, + 1074700865846096, + 710597397223327, + 2974966340350335, + 2812601412210578, + 38596102428268, + 4474199589356104, + 3140356049915737, + 3348798027981559, + 2800706993687318, + 1693477962754948, + 2326438990189832, + 462993740704492, + 497906981042503, + 690001945409282, + 1510983242992326, + 530473417599072, + 1434855199988605, + 3538110141696558, + 920650809157525, + 1765244116398992, + 3308487130099926, + 1511735418003085, + 4024926672505139, + 3198725754556241, + 406436460788499, + 2636033359411047, + 3178262466082482, + 3678861569993974, + 3730607753036244, + 1784787295934597, + 1980847118536779, + 2863180003251096, + 4429287190148446, + 1867090295440291, + 4020341094157973, + 3437907727625861, + 3125794112405502, + 1528982498554828, + 1073953047924599, + 4394211014759454, + 3198662845472975, + 2910436217127263, + 176853376247081, + 227800663453183, + 481071805100715, + 1759231210360545, + 2541871620624257, + 544599083475006, + 4483024907204966, + 3072479425664815, + 3250358937954747, + 2740167732844811, + 2215200499899447, + 475833858280942, + 1459819437010615, + 2812484057027670, + 639956408985997, + 2949742930759644, + 1663028177193436, + 429493337250506, + 3169557435097775, + 876510793159270, + 3335210974252415, + 3102635130818925, + 4082160103218303, + 1273959427156057, + 386516825590857, + 3928770600446597, + 1632371392937447, + 4188050524788624, + 2006759264626280, + 2479105404287309, + 1331509488166824, + 2074636452508633, + 2021441451560249, + 4463836043597746, + 3108092387314597, + 1618488152000194, + 961284633358831, + 3377245342316524, + 1699539141807514, + 264285984636654, + 3361419743599378, + 3834911591841368, + 3631092647095854, + 486496874956218, + 223377179268321, + 773803047680582, + 3790771687071520, + 990655405926040, + 3678728930383946, + 1736918758227489, + 1116919732215531, + 2647364650428223, + 3393481436148437, + 2335175761935655, + 1258902416542908, + 1021698807881648, + 3994381885017761, + 3677326923459909, + 4414165220377239, + 1228088596510156, + 3022752213550240, + 1870715036702317, + 3869539554660681, + 1543589525192255, + 2700795368741301, + 2189267535106976, + 1886927755054352, + 2355017121080322, + 1650578283029782, + 729297391868389, + 492728088872421, + 2475015309714299, + 472064924411383, + 3573796647069940, + 3591999816480320, + 678278684551071, + 111034809704142, + 29122639330250, + 3381595223666362, + 4206980489423152, + 2481592727483128, + 2085893135298267, + 2301976816892563, + 412381394881056, + 3061149996820409, + 3190113627460163, + 2583317183768742, + 2977291029787069, + 3450789912787726, + 1538890984308754, + 797974136789420, + 2331449634105901, + 3348761410028181, + 1871941788945130, + 667371702351661, + 4032193987950754, + 1142371363514270, + 1328876803511712, + 2134987278363058, + 1255917774332465, + 1221052139530294, + 1189593040331400, + 3011504587449437, + 2368490919501223, + 963654322452628, + 1100652565457737, + 3170654862011290, + 2200565800647695, + 124702488412487, + 4236985758064782, + 466611104740161, + 3113254653060604, + 1016533849899120, + 4118598354496356, + 1421025030295429, + 1418343263606887, + 2086495555281934, + 2077637881805494, + 936009753400043, + 2527407720384192, + 265093767875492, + 1233587305352180, + 1815971108651656, + 2713267967563891, + 1590409170747838, + 1530035161601557, + 2113335015207446, + 692787536245749, + 3602458956658804, + 4163297140344650, + 2751439744789271, + 1756551047598166, + 396252887710106, + 3052787000433303, + 2149278989689920, + 3660395540850911, + 3583694210219831, + 4407631759487152, + 2920441428249801, + 3037315869945301, + 512112718114652, + 3409755031725649, + 1914786707438747, + 1330687718632542, + 3823922282856768, + 3642748214821654, + 2265846935416002, + 2300812127219796, + 3200313359912711, + 1134773602028102, + 4035058236238879, + 3815996697928623, + 3214353247951269, + 4292281938211297, + 1942844670891722, + 3602540756018997, + 4123142173686513, + 720499900061163, + 1488461441544846, + 3164003727937340, + 4489844567775454, + 2335264900200341, + 2448064558152563, + 2839211886143567, + 1775983801617309, + 301671480880127, + 2194770017210331, + 4490295430346239, + 3261368586982367, + 2815914787987632, + 2392482017255938, + 2473335315400280, + 35743181269741, + 1908791356349882, + 3949029626815566, + 3572723022732461, + 1034150732430560, + 2458619397146264, + 154510484239860, + 551139938979343, + 2249391072180707, + 3169971158366335, + 2506329738437370, + 1604237393620241, + 2786991853994608, + 1222235035237887, + 2930335276380905, + 1174305956216634, + 711481346667274, + 411045268541879, + 3316707215478234, + 3141923712072840, + 1418083149285205, + 2326466844433571, + 4057306066917251, + 2693047402448127, + 3482903223043249, + 3795761286029160, + 5055412376693, + 543859385444441, + 2749981155390338, + 1804497233223044, + 3844013796069002, + 3573303086410208, + 3091813854514273, + 4348613015200865, + 3219755410499046, + 2457482623550228, + 888927039685454, + 1287345238344918, + 659686664370621, + 2523062975832380, + 491855824258594, + 3250137862038856, + 2247793344488746, + 871702106896540, + 273936685272123, + 92136014912111, + 3316330255040900, + 2728558913648945, + 315034280074297, + 2805500301302609, + 2649964182760187, + 399298822861166, + 374167039383972, + 473967552306028, + 2736193760109696, + 2814773400195852, + 1857513756603452, + 249105302008912, + 750479576077780, + 280159857501029, + 846111464253982, + 4461359648449602, + 368199601546929, + 3255541159825182, + 3710184766952330, + 3056631968262641, + 2806259542199623, + 741952441285424, + 349410898618641, + 1232293673401953, + 903044002888671, + 1441228923211645, + 4083564321372315, + 1742799618652321, + 3484086915691751, + 299085915768111, + 1344689360574771, + 3844076009010802, + 1325199956771972, + 3138427033645662, + 3133679394877629, + 1978972322761574, + 2602330524857882, + 357731076394822, + 1725069753504811, + 3948576054951980, + 2490714341772586, + 944491091139887, + 2327222738225024, + 1547704337919505, + 2173965952348847, + 2857303206114866, + 498178055392239, + 2185516317511405, + 3887550490195742, + 1873403194666436, + 866191022266320, + 3240750089685147, + 3672802876183091, + 773933636347031, + 1135570944283394, + 3877715350609192, + 3117915294094713, + 2114716328748403, + 570492826708459, + 2218298948259701, + 947159539117428, + 856125311736106, + 998640326208270, + 2588966786666215, + 4415411350144517, + 1812876394923359, + 4328566794730535, + 3540790326757951, + 2761690437651526, + 1835763043291860, + 3330408220976861, + 3045098359587805, + 832949547477733, + 1002300112481262, + 297581722686942, + 3947632423936544, + 1357593608538891, + 3589993614049354, + 1947088111855793, + 2975205470339810, + 3342281451996169, + 3065035950553948, + 2826094773647571, + 970874800786661, + 2873739809798037, + 843592578729852, + 2022190668476772, + 4140952999768372, + 1811692224392701, + 1932388597704263, + 3270280426791464, + 4117643301099315, + 2327739495066982, + 2599721240738065, + 868170402126178, + 3543203224169502, + 305373468435299, + 4345372999974607, + 58481661722435, + 1508770401737453, + 334718957122206, + 44857277531904, + 1172358115705756, + 1715790358999582, + 684621911271021, + 1827619543061489, + 917825569386920, + 918356391754749, + 2903127280327792, + 679614450407833, + 1370226509433280, + 296866008790487, + 1507156291267409, + 61909982449783, + 2505000710743970, + 2801507934414163, + 4003616188150705, + 938990198414328, + 3261524585306694, + 2554896637340043, + 804525898631586, + 3039514241714682, + 1304592114239447, + 2741721895017876, + 4381589722432933, + 4410405565623766, + 746449224762381, + 367210715829457, + 1567553831143307, + 906211599021004, + 1577286606122673, + 3883692357527467, + 1844708097835750, + 244838003971269, + 3714863595280314, + 3841849034733096, + 1920530269573078, + 2960772969602892, + 3605307980411150, + 4197937219681678, + 1189843241163303, + 1372859879070632, + 1446669877263362, + 2274740386598360, + 2861295080343610, + 1072549065080792, + 2166379711842335, + 1554755195664, + 4384815093073490, + 3532450088535185, + 1176464637970662, + 2096240081730696, + 1150573696263128, + 1448855133206200, + 1916159507292021, + 1082285247779717, + 4329993909889589, + 1401973656852075, + 3170318382890013, + 1658132652692839, + 3699318188664684, + 996576632022512, + 64685856404175, + 1136576031921417, + 4483862651102968, + 3788173139040981, + 1189057734795961, + 3651479596338756, + 2170188495014331, + 4170861101781157, + 3378252073233413, + 4456839486715904, + 1020716000489916, + 2603784186456385, + 1830946264273582, + 850194857979549, + 169052607602540, + 1243964516164687, + 15483696705578, + 2930906020214985, + 2054088380079186, + 4018017801587392, + 646547762257010, + 1467612911411900, + 2047616967546944, + 2557918289389800, + 1525842849502081, + 614686075549956, + 2132138880888514, + 2264997985020569, + 3196617195363476, + 3420957479140680, + 2888918001138127, + 3170661975878070, + 970028790640066, + 2847452950617311, + 3093453679510844, + 3038539128925539, + 3257852582360317, + 3544458571591020, + 2353441165075759, + 740747103119066, + 1095177616360346, + 419892822311597, + 1665721853219841, + 1132762727893195, + 3926368958143245, + 3427432664833904, + 3266308677581185, + 1628865777014822, + 3261434415582412, + 538322507032981, + 2143380690924744, + 700754790837365, + 2069417622465028, + 4191269303201553, + 3495005966006281, + 451206084386786, + 4302472494292334, + 1362561334178416, + 1821995473622054, + 4108761217212633, + 2925312323599046, + 599825637288552, + 334082641200229, + 2787850135643348, + 620981471502948, + 2864738823852302, + 3975603964193070, + 1007360739362061, + 523818303153087, + 2367275374824516, + 1353230558717779, + 1487849472117301, + 3098052928416398, + 1561540915814755, + 44863464251561, + 193668352061684, + 4247357541857387, + 1210007251688936, + 3005526469691481, + 2712293047922114, + 2694025627488239, + 3427889125491152, + 1690386724457759, + 4378151276847234, + 4186496804042164, + 876921978717713, + 879768069132028, + 1443456136725062, + 3886639730890904, + 807797308029262, + 390727581621927, + 3178286803003906, + 959936906418067, + 3913493584664113, + 2805820242010696, + 509542657212414, + 3150631479886632, + 1060704868331701, + 140137095713894, + 246902671713185, + 1578240401783002, + 2774936287925404, + 2622976560677104, + 4471886888796125, + 3477374161696152, + 2453837802111785, + 1445888538647264, + 1198127299945747, + 2067192322273604, + 259101239316605, + 311932469461496, + 3452951250585786, + 3814585472817188, + 556066074110318, + 4334401378686552, + 107237888916943, + 2625798123435562, + 3308202091979197, + 2213696308705391, + 991765716960243, + 1326077676259758, + 1032604896360154, + 914557270163409, + 3634056342332670, + 90419333592207, + 3838123947079807, + 2401661368909648, + 2740871350143626, + 19983450270715, + 4465957997158564, + 2876259284155654, + 2549291007023009, + 3385733331085893, + 4322470920878751, + 2500562268923359, + 1920267390509899, + 3320857664385601, + 3112986167729718, + 1185370262641865, + 3741237164205574, + 3954051746448325, + 607787471662257, + 1228069442759232, + 763919683741530, + 4032331790281267, + 1167719040038249, + 961640620720561, + 3331981323976498, + 2982903684792635, + 1794710438191758, + 3036079296336490, + 987218076910109, + 2804991490237596, + 3995995191831077, + 3008236001513469, + 4171351446795840, + 281381511108770, + 1372471732146148, + 3108724402501271, + 2020475141769145, + 1091146827021324, + 1106219932381130, + 56607296092733, + 3259029039610819, + 4129642407097205, + 4110146188206065, + 3942283029602477, + 718066686056432, + 2609589382941563, + 3158087891935822, + 2989677613004621, + 1810618196850368, + 3952308463503947, + 3439321271006886, + 1747923577208517, + 3240996866834487, + 815660211731232, + 1185596430034804, + 1406966407674745, + 4186835076312250, + 1819537135913926, + 1549391697093018, + 1383174166477116, + 3982388488017916, + 2636171056494320, + 3301100717372299, + 515278770959763, + 1445207801936575, + 2878813983040292, + 336072589995539, + 664786002336280, + 2841295669840470, + 4468547081225644, + 3639671960373175, + 4394132923727812, + 1923050360052136, + 2457690070031722, + 120487966414391, + 3784250440350592, + 3247048893668514, + 1059478825221729, + 3398963794948643, + 4256317498673342, + 1540227831530079, + 4134765939573230, + 3483144120280820, + 3434060594869149, + 3284433480369150, + 4254060683039818, + 4295709297663042, + 1585463327224836, + 2427743500866412, + 1647661571060362, + 2439062563103207, + 1633342988699353, + 1869103213497284, + 1844255565292068, + 646466500436117, + 3991372319247161, + 2893888456117693, + 383699324960372, + 3794257057351597, + 1538503752810922, + 57110460165263, + 1827569024603281, + 3162726854537234, + 933262392682469, + 3110316708680991, + 1093413900753455, + 4062032293616373, + 3899060932946549, + 2125866709199349, + 3896330190177312, + 1016376478383894, + 1923415500264940, + 451646349441714, + 1518356965606413, + 243289262762168, + 2658918343512179, + 2051290194419443, + 147986115927492, + 426950767840093, + 2100887815433209, + 3600658808472283, + 2946666076165124, + 590623203603046, + 3189278184953668, + 293430971261797, + 3544071873112077, + 3370590760433178, + 3744190914650876, + 1859240321023034, + 1209494958879906, + 2852220393139676, + 2893046183406454, + 1508455465129095, + 3230726870238007, + 5506962743028, + 1375290393816428, + 3912328952639531, + 15808119113715, + 399296118411138, + 1029551542146958, + 889011446123824, + 2460135832268567, + 2631922443982340, + 3955825110311179, + 472449173058045, + 1807533860951905, + 3230503757858804, + 2229998274559333, + 2493286620391745, + 3194693520616342, + 621691526139228, + 118847133575103, + 1134346363653428, + 2257617062120425, + 4401469080215034, + 181114448566469, + 2014085018672575, + 1022615531952822, + 461455204385884, + 860848242578713, + 1652054109161192, + 4219760834985177, + 3370947878499372, + 2355506008056274, + 427214036061191, + 2766901387149485, + 770872318410640, + 4501813981191014, + 155656852204275, + 1629165822039949, + 200855459309718, + 4358368936621200, + 3105312354904337, + 1764281618551557, + 3433662265755339, + 369249815150455, + 3302776521618152, + 3344448920175886, + 2779026916958585, + 356186313097230, + 1017749878870574, + 3127744620503119, + 2997113785689625, + 3583426187904659, + 962947485935316, + 662243383040111, + 2125100309971349, + 3029773879231332, + 3643496305835986, + 2047390449145386, + 1660168150556295, + 4263617057703768, + 1648382197548182, + 3941936055559148, + 2364473445632873, + 1645558648126038, + 2275280840393041, + 161509682421001, + 584890355071832, + 1631302278922963, + 2730940805236521, + 162596270562261, + 3670839054940207, + 1818353203334739, + 496481400926360, + 2729619522943122, + 2643671972599702, + 3033596235717993, + 3931430711369987, + 2396280888336711, + 4202008566568312, + 858319525173707, + 1377036035432674, + 1955807891037568, + 2341591635220708, + 102682936250597, + 140078821167186, + 971180163888631, + 2811610676498878, + 4260950559948701, + 1355858425470842, + 360932284759847, + 248006277221132, + 543983687731821, + 710712428677548, + 3845215636884372, + 423570489539782, + 893140237139264, + 2936913361852060, + 2917464653652590, + 2492426147813321, + 25330276996280, + 2851645686686201, + 4102944020418508, + 3134247236888924, + 4266096078412821, + 2241497081769357, + 749798416900530, + 992705592279163, + 1572512127685299, + 570261471285174, + 788331685637567, + 1982517993476147, + 255804031363693, + 1873259056193281, + 239057418560238, + 2810706200249727, + 3616259195663934, + 1914701615857271, + 1531868743617165, + 3137927259543631, + 1748266138501326, + 677688076430864, + 3295734196433657, + 2905259769566113, + 1103514348981171, + 3479603754492759, + 1616628709427641, + 798346242198042, + 1096506629312563, + 2203001787795222, + 341919500918781, + 1704056141969998, + 4400216623035263, + 3326581544037046, + 1318973120218079, + 1471151639094282, + 4350519416606571, + 1974422624074039, + 3790185089294430, + 1029759150766067, + 536712330186860, + 922309526586221, + 902326284257779, + 4036407900989604, + 1775157638019159, + 2595501688621231, + 4093336675860839, + 1822420035658425, + 897996569706741, + 1808257261523862, + 3117060752317988, + 2595525149872, + 1224388959359079, + 3781694680821242, + 128101388160688, + 2521746540844866, + 2497703865016926, + 4192453757895355, + 126338655224233, + 302366828162892, + 2199106294169218, + 1660092409693826, + 2771488265437928, + 3667692515548805, + 844856256998084, + 3336329927509299, + 633528909482046, + 730939592337677, + 1460225690256426, + 2292436515979249, + 1797944393852232, + 1735377376794414, + 353772066644668, + 1761051057283506, + 772677245567871, + 898101364967953, + 3007456138527205, + 1532750883033632, + 694479606747501, + 2001044916508141, + 587479823468930, + 3681579458288430, + 4414776882989200, + 1264139736412429, + 1983897676225124, + 3133008040467742, + 1573650831599884, + 2786804633715200, + 4043794214006268, + 1088657782417749, + 119610391147755, + 1868698621907056, + 1100461407646763, + 3955265482971189, + 3233416792633175, + 274810311584459, + 1500657657883658, + 780270169682072, + 4155696193610237, + 1331190056897299, + 2070598889710606, + 2916936043493516, + 175086380576279, + 1393688669049942, + 815752392038127, + 3465375722558764, + 1902464646833403, + 1889013561082827, + 64905979765650, + 2588319722075939, + 1055392990904400, + 1984757020691321, + 1358168578372945, + 963857116180300, + 1351398916549423, + 4020436140373055, + 1845410654681615, + 507478239204285, + 3533158354416555, + 2170880354906754, + 1347257629941825, + 754792497870507, + 1117121296658380, + 2296662184271995, + 307477648664920, + 3821016249812482, + 3367897335931246, + 262895341524894, + 1500671401706231, + 4028405682088893, + 889646576345425, + 1981647238167558, + 4473062532076385, + 800616589626998, + 666425078780716, + 4338219536437578, + 548214093766607, + 3571300754578978, + 2709452781852190, + 282408919732637, + 3114180210960673, + 1220942283891661, + 1633601302262636, + 3414655005262176, + 829587952354267, + 1003958785798196, + 188914404407911, + 3431575571668547, + 3508246996922625, + 1844045864323957, + 1880721559054446, + 1904260879471742, + 3229855694298588, + 3663620120853132, + 4234680716887698, + 3322058209962661, + 2182477557345093, + 3802431412112928, + 4380446849774912, + 2204449723163814, + 2987966577035696, + 1714219729576408, + 1014771909563195, + 3334734087951262, + 1686955272288322, + 3306387762134242, + 4381533538346193, + 988149462558278, + 2228100125052415, + 2393280660264739, + 4448003945752030, + 1365405935329343, + 3575010150684633, + 655079599997094, + 2517907754483596, + 1217316334794462, + 1940390000253948, + 1190512861126779, + 3015379093436957, + 1377597362607487, + 546454601216356, + 4305858906442810, + 2624201415522279, + 126481743235929, + 737362991094944, + 1536074786808870, + 4464987978070053, + 1008561395833428, + 3872891618462948, + 3404228765336231, + 537118585914081, + 887449199209665, + 2521269369488575, + 1408888724468848, + 155014446606421, + 559651394817590, + 2727025636002454, + 1256250777524272, + 2317765809223369, + 2868259899059168, + 2161997647961763, + 3457424106684984, + 2004715685002866, + 1657526037344954, + 4239535646149451, + 764187523339200, + 3457269956048763, + 3661842772126066, + 3711688753877394, + 4361300890186678, + 1566559861929691, + 1742777937345569, + 2275029723916961, + 4421773503848925, + 1229742766671528, + 1559312618379065, + 364373671769634, + 1824869031810436, + 1101287589609647, + 1072243686589851, + 4306262793406145, + 2667366249771054, + 3044128489604632, + 97163825177164, + 3055357589962308, + 1651307740844031, + 2984882119230219, + 2000079737127973, + 2416149600903381, + 1781064129514435, + 1913763633200566, + 3704247112135277, + 2155547220077055, + 3666695856424727, + 294245240044486, + 2137466266137915, + 3602489607036744, + 2920385009985058, + 1962765100281867, + 2819028910630953, + 3975610490575952, + 2052329417123917, + 4093545510849270, + 4425560023507782, + 2837014132009542, + 3929543121362580, + 2354252117629219, + 1405752370313624, + 2011125631330040, + 4280354475006333, + 4275703174206322, + 790377578887842, + 1262801162260766, + 926711901283794, + 1525172623600320, + 4265389109707196, + 1331881781399725, + 2709938690608081, + 3840154972882641, + 2124366902167358, + 4412101108030364, + 1438653825289896, + 3730901597900770, + 1924456538706931, + 4470499536086334, + 2088814318139373, + 931827934604539, + 3055577220225936, + 351809871766627, + 3718195754384309, + 2645406472825410, + 1419997025452681, + 3809104236949577, + 2577600687978724, + 1923146087844757, + 2867683022426957, + 2989150974829971, + 77946594870364, + 2894875909115716, + 3463283955872073, + 3844350402352354, + 856608579122867, + 1687674663448393, + 4088534816876066, + 2808328216299824, + 3096859885249273, + 3727697386036716, + 4044967187549564, + 4343168607719005, + 1101494569322387, + 1435088190569268, + 3869040684051665, + 2533920972287250, + 2044797063255653, + 1983494168144801, + 3721801741894812, + 232589355391767, + 2818620490925764, + 846329220454583, + 4170482522979726, + 3227728253137698, + 862595222556729, + 1121886328982341, + 358432439832984, + 2543716864582119, + 3078224975225601, + 2862243020189483, + 2066458511952008, + 2922319012519139, + 2230585878822688, + 4034682759561244, + 4081479635461682, + 2383978861163055, + 2328407928140580, + 1585587007250391, + 2267998019041915, + 474770164666171, + 3184461942385046, + 2119412987845107, + 1609648590454500, + 907389734408070, + 1280614336418685, + 2962964254534740, + 3743340872794059, + 3235883365154988, + 280261218675508, + 3113511433187112, + 2573064089379539, + 3546908243368572, + 1045133528305499, + 3824531735818561, + 204349279465813, + 195483365338749, + 3260477642159707, + 3281871446967283, + 1628540157492603, + 3626452836445968, + 1469302936490760, + 3354888250077914, + 3476841856657437, + 4320628873405824, + 224124732025763, + 3799477123792516, + 2763597879362271, + 4062659124785904, + 3051633903497905, + 768177883447179, + 4115896770635277, + 2426187955832602, + 1928770928637458, + 2312881846901819, + 1438289512769337, + 3384989141830042, + 864869322817396, + 701880863261242, + 4010490205475845, + 2678006326090247, + 388086242212082, + 478606574217098, + 2079948519777799, + 1214778166490127, + 1290728576868812, + 989576628949685, + 809157300612805, + 1257280238455448, + 263373647814182, + 1866875820553762, + 1947080845042964, + 142616397539839, + 331898601527312, + 487893373637277, + 4062894020421526, + 636582161540729, + 59703808976645, + 1556446140497821, + 1639283142147932, + 450004449188118, + 2047083094136696, + 537524186603050, + 1516624319317116, + 1504267207758997, + 1100648312934671, + 2319548777442618, + 938534474315183, + 1410814294780765, + 2069901505914042, + 1953809899664927, + 3228835133598146, + 1622741800558956, + 3867877663006387, + 1540878734062818, + 136721384768608, + 3373335704255443, + 1549507121404452, + 1429534752525673, + 964035906309419, + 1922439553097454, + 356504652106743, + 2359468821679519, + 706445364584977, + 2500561427215853, + 3052227158355010, + 1459360023427811, + 720854682259470, + 1260921980413089, + 879424505183323, + 1769256636732876, + 4286901550141609, + 1391716485328476, + 4134542707225033, + 2052097720823985, + 4086433514463238, + 3389485485980460, + 3152815381473665, + 3784302057662539, + 3537035435572541, + 2569445481465649, + 3330846215088133, + 3046613441891466, + 3706310989462522, + 320622996894975, + 1666033733778013, + 1992270064465456, + 446742044348497, + 1231038002726691, + 4384104269678128, + 2660449052250717, + 3591817044359235, + 3813259045711189, + 896197499699799, + 2539678558844490, + 390514552305279, + 404891105146433, + 4011190374505320, + 3523990047118339, + 3490281896311876, + 1850584928826136, + 2475404464699741, + 470229902817712, + 1356371731825956, + 850336952553870, + 3419288820467650, + 2364383175578428, + 3590620126327289, + 3032124442202121, + 811899671443569, + 1599095205786780, + 1691546918750614, + 471978971640659, + 1591357074044914, + 2611795554995926, + 993471813422067, + 1350865781873902, + 2173547685571818, + 2896621392929657, + 1876139235784435, + 2014094160345967, + 1563303645095170, + 4070462716992413, + 2245294938682294, + 216614176230387, + 3958970276492746, + 2242893162483239, + 3772577816083836, + 3623060346351586, + 1614432443512509, + 2420237027852908, + 789969696482538, + 2927597540913271, + 94708010591607, + 2815033345174465, + 963226627912711, + 797718063837428, + 3589550882955996, + 3025230936057376, + 3374116152290947, + 3257803376629230, + 3011460559326844, + 3624776666002426, + 832015194015815, + 2829339488844258, + 807779269846299, + 3248084958399789, + 822269192758094, + 2376142135191412, + 751594488541133, + 2202529042507775, + 1094039068396429, + 1020475380775994, + 2990356488980059, + 4230878635319638, + 1473153986303248, + 2364174757167882, + 530811623704354, + 262442786351603, + 2894059548379242, + 1459613248458943, + 296144763692087, + 331251433342889, + 3861954809093340, + 4397328558890921, + 3290821317531616, + 1958041661184410, + 3537792046807037, + 3171361746073907, + 4127830625968640, + 32846453337281, + 3954178946630342, + 4057825868925840, + 793938740208073, + 4058943672542564, + 2706410299196079, + 3209235715068397, + 3880382572578334, + 3146396682389114, + 1237629909298082, + 3809790376702179, + 2082066203382402, + 1254988172044867, + 4102310316844040, + 665683804081887, + 1711503553821557, + 384684588290361, + 529449539954032, + 4016207780880971, + 1271129139219910, + 1491345755419460, + 1446172954030136, + 814919807186393, + 2317904527502876, + 494686130190402, + 776647397012024, + 1932551742903415, + 4470706775363966, + 3759862352213486, + 668519962590579, + 3166002322839377, + 2149153209317834, + 2600820688534428, + 2713790817801493, + 907065830073479, + 2370921344583998, + 79134305963293, + 1926183252907969, + 2790132891789165, + 1215773244257333, + 932283027359118, + 4189025927791964, + 2534536595033475, + 3244795748445441, + 3760876888416129, + 2520579000109656, + 1297792578250349, + 1367971809751788, + 2639084732650411, + 406035190025547, + 4437818609008848, + 385841934543128, + 2286011420144137, + 99310898634923, + 1089083968401068, + 1480967004542501, + 2739540609402774, + 928947660078083, + 3105170573517340, + 4411216749967177, + 200341660356282, + 4484599137616995, + 3788406963893925, + 3115905193612239, + 3569401636462158, + 4440267067775726, + 4369768140920931, + 1223736650229660, + 2911710084847093, + 2759170483896340, + 411795136271832, + 3993759750213049, + 431232806188924, + 174468167312999, + 1082189946669173, + 4312248088863451, + 27714895021821, + 4089431665431919, + 3973236517339654, + 3072904645687655, + 1158364040174150, + 1349761955635293, + 1357681693028571, + 1053382981534758, + 4095415175610791, + 1283923255430299, + 15130781466357, + 1524208393940323, + 710698719164499, + 4233676782373692, + 3858470935343494, + 2268245358530827, + 3821051083014201, + 116920584400524, + 305016925007572, + 4436926041954314, + 207708190116209, + 567132079058777, + 446842054189728, + 3361885365165834, + 1475223408857898, + 1264110990345519, + 4480291821744573, + 4133825175646237, + 3061829655580970, + 2285455114355324, + 173716245304092, + 3676681583694053, + 1074793077219264, + 3903146262846826, + 3147485257059314, + 3127806598729156, + 639962899381831, + 2741250712960621, + 520641988373448, + 3904094096903041, + 3561233211834312, + 1671594034349433, + 556914038872847, + 4036064624740365, + 3303116686706542, + 3264834199492321, + 4451912867321509, + 3533442822156566, + 2431765231221915, + 3685085442567973, + 158779816667819, + 808502621908626, + 1695963020597481, + 3671639864567874, + 3025695339863206, + 4401838612293347, + 1456492757062454, + 263094372946306, + 1567870867784006, + 2117752446574128, + 3706951821120873, + 3515514808416607, + 532680209454680, + 3686879662313135, + 3946115476978983, + 1616479306453723, + 2368750331450329, + 1947069123679191, + 164787137322110, + 228505587394858, + 1498378408042397, + 965297919509117, + 4253192375715362, + 1644123993629922, + 1222950896519312, + 1377009818576298, + 270908894047732, + 1637840118381794, + 1009999126627757, + 1729519493812738, + 1440971934662400, + 1342825276143518, + 2809157529815888, + 1619593522790180, + 2205756955497860, + 1282981323018971, + 831658726359322, + 3603268210417850, + 1581174502141845, + 913308795450934, + 3637804209649492, + 389091675124158, + 1035965110462909, + 1722815584694820, + 3317816209605525, + 1090956004077913, + 19974008703097, + 3929224226024238, + 1132652777914309, + 3717766284584906, + 1987400164742517, + 3858810442545595, + 1568908861660494, + 972407173732611, + 470488523759210, + 2831657794929706, + 1561100439886459, + 2380583451534144, + 429989453510845, + 3515558326960237, + 2898720598761166, + 3921165870023960, + 1122225518017834, + 3539119508607192, + 4044309927799852, + 2874462692026268, + 3977196081078859, + 3387104388876935, + 3401263521247479, + 2548966644459888, + 2017900511663048, + 4416009714463946, + 4029668143356838, + 1443339250132868, + 4379296343819288, + 1645381449879835, + 1384510289716664, + 4146228013052034, + 2253538482518498, + 3978447596930615, + 1772884361184293, + 3477964686731076, + 3116295928839981, + 2838421351748820, + 577821740259400, + 2981309029831172, + 1608854035961946, + 1925158005814233, + 3873784951123135, + 3022234837051488, + 3933217078076587, + 149801280756591, + 1799009933348451, + 1002151514722068, + 4204675717912859, + 4062339015594563, + 1983061729420439, + 1577353903010017, + 1747901980058880, + 1796945056190832, + 2109405675389263, + 1295534891069916, + 214524822004658, + 3429165747302697, + 307402375332328, + 3596812969996667, + 2271088793307099, + 1964815698511438, + 2474452401214093, + 3818604899347167, + 564678719575238, + 616162535682398, + 3786658858678322, + 4388211722352924, + 4304634806922803, + 2157991613719631, + 1730472151830952, + 1192454999225394, + 2404740766802158, + 1141126483375001, + 2664800346418642, + 3507771410315841, + 3749523642416215, + 3749492647946424, + 1943749133028761, + 3699872013753824, + 3042408195498265, + 2619905577512624, + 790318550008356, + 3798969982455062, + 3930696693286258, + 2305209145273794, + 3438263723848302, + 3630427218119072, + 1919945210232069, + 4048508759112470, + 3306459744573711, + 1586417420482557, + 2396775916286639, + 3167399380996683, + 1766589770954659, + 140809165144641, + 1761342577766593, + 2020807429123850, + 1546140680157454, + 115101129401267, + 1187873939365294, + 3535209712453316, + 2356110054719839, + 1996038660406594, + 4259983708090779, + 406565501934588, + 3511884609190178, + 4366946582048712, + 1819141097548328, + 3336145396587623, + 1179729985901662, + 2676096414694034, + 886409516751538, + 3755693870856466, + 3292832806009615, + 1756285173420451, + 1744960681250386, + 2744534088764602, + 3686342317328978, + 4481905432576554, + 4004518280450648, + 702686338808539, + 1844446001902098, + 2258832758893139, + 2312931253761109, + 2123865611870761, + 3013061797012259, + 1253159484349048, + 2384168654666564, + 3322359400192913, + 899283344317461, + 4119176819221467, + 479656132097595, + 1709734488108132, + 1939335914067250, + 2410567797389267, + 3925247709067363, + 4448031132955243, + 3095809567614617, + 4178066250014160, + 3984229756663991, + 3877935072223597, + 1043034157809422, + 3135226628114249, + 2374381825475160, + 2376043631541911, + 2509621265171851, + 1297976803451617, + 1674981421444997, + 666171874694905, + 1986425626866260, + 4301148266127392, + 134026951903809, + 128774291522997, + 3393729171129762, + 3677334431404846, + 425165020141917, + 1293755060777408, + 3184189804786589, + 2729142175020967, + 2822628626923512, + 4014851951749587, + 3802873934966068, + 1121372120777163, + 4199330514747707, + 2752728514514601, + 3708216197249901, + 86255552322522, + 2326212103524012, + 4037327901291770, + 2772524284158642, + 470694028890308, + 338287509365170, + 3586839135310037, + 304980614496256, + 4380920243344684, + 890290081577416, + 568748528107173, + 1036709167479730, + 3860839708654900, + 3274280929069099, + 1287879983076043, + 160773701709798, + 4473048346002141, + 3579883779192132, + 357086402465740, + 3866998402948219, + 937877575874774, + 1584633244463060, + 279691591025914, + 301784775710479, + 4047133273863586, + 2609384175241813, + 2413085333230918, + 2172094237580800, + 3320714467782968, + 2257726727695119, + 2855038362748124, + 741427708527684, + 486975606704627, + 1107580810728038, + 1547468457568768, + 3773205856946658, + 3457535030210188, + 1871601547605379, + 1906205252036779, + 1452810793524574, + 4133261797414645, + 3620326249805135, + 766909536154001, + 3941706394386894, + 709999315299852, + 2013115321041959, + 4159477137721581, + 1475146449339097, + 2929869052371658, + 608436133020522, + 4340213539765720, + 2300440729395978, + 1423228364889630, + 3922691822051352, + 429682707993676, + 2341758778070607, + 238291726443618, + 1200050400634408, + 2971921498185758, + 608426961794684, + 3968410015657247, + 238742135762294, + 3689794906268557, + 1749443221490376, + 439369799694805, + 874063731918196, + 3814758513696415, + 2737801813751748, + 593940516503151, + 891242771462511, + 4176401191406134, + 240502287870858, + 2240030237025995, + 1407279612236171, + 4347826634015577, + 294203204989898, + 2531974066743905, + 1933045935469792, + 822047396501941, + 4387318539019505, + 2773289836999179, + 1619100871423805, + 3481824133527366, + 3171684467475200, + 51958755260397, + 3535179019094553, + 3893807336810543, + 3155912310846631, + 3202631647076071, + 2581594547420613, + 3145952107716225, + 2328971221782964, + 3906567647239008, + 2638521685482154, + 2395971480605818, + 1829472915136553, + 718020989929737, + 2569786969108394, + 3185958489837046, + 1931293374972903, + 1128031789499721, + 499735153565259, + 2563829893037961, + 2842965229680869, + 2225115595520455, + 2308750838618493, + 933072067886867, + 3442738045919088, + 1717724229395832, + 2687925774973182, + 4314546954798110, + 2046697079646674, + 3677060851894540, + 2101452971289167, + 3672786954931088, + 2989475356706711, + 3970266290021010, + 2842205159805315, + 2818688092305111, + 4488992342324127, + 4071023728682981, + 346522265998285, + 3585781706567541, + 1254006674884795, + 3364133288920598, + 2678323021032490, + 4162721264986075, + 3902367059681053, + 1699955520791395, + 3667340240259181, + 2277794123606033, + 221197250422168, + 725073256506412, + 297227479782812, + 2737339678798013, + 4099272359085846, + 3771894975267643, + 2444693720377489, + 1110851840904798, + 2991821927344000, + 1912625915544628, + 71803652058542, + 3864490280766849, + 1155544166032667, + 39804664266458, + 4095954471466609, + 2247306792008601, + 2599146342918547, + 14252145138272, + 4400818716351115, + 767892495535343, + 184971846657203, + 3750150609747384, + 1060108400973750, + 1107386118421037, + 629280532890728, + 4088234704636928, + 4132460515545727, + 2706909930494762, + 3226937553922347, + 1089823215110505, + 1725452393506331, + 792223085356473, + 3907797932788362, + 158247731642717, + 1431992288480196, + 2081806242844110, + 4442090378211735, + 3071314435530792, + 4257938914010605, + 1510015570703676, + 4268690430946594, + 4411236883778716, + 3871666661384370, + 3685239087134172, + 3239295854522645, + 3326761575405087, + 835394262963145, + 1733595830339593, + 525363674418171, + 308483776582911, + 2865543722388470, + 694373115375271, + 1473973107108660, + 1988522481185199, + 1676266137181869, + 4366685060553315, + 4198084598215843, + 1923103294839110, + 2388151135891943, + 2325490282250723, + 1838399318022276, + 1014832383194350, + 104246145235988, + 3695732213320256, + 4424832374847903, + 4424523616155365, + 3253381324731396, + 2403473860144024, + 3257213391855196, + 1492295993702732, + 1192027590889021, + 2675199567852740, + 1589616037524272, + 4359306643024280, + 194966075628990, + 330918991175005, + 769352180364694, + 1400521375017959, + 1242621343874264, + 2705337091903216, + 282144298131106, + 3395532950809930, + 4487690022545487, + 3548837930518264, + 914790790695515, + 4225973100763342, + 3591220097357741, + 2029021001068764, + 1401530866105525, + 934228234042203, + 3643376150055946, + 2200506847509166, + 4201265691554605, + 2170409205917674, + 2484078326634336, + 802232621555063, + 2107114008065261, + 4310016779971425, + 1979609513826484, + 2751075805757, + 413822779135031, + 1123482238512857, + 2569753449340867, + 3289052418527657, + 4073559109839939, + 2939465256328668, + 1226670246318324, + 3332739647184568, + 3382717539306222, + 2733803795964088, + 4197658452176026, + 2439290142070294, + 1275877574140414, + 2107788979807440, + 3322169162237449, + 45849191967713, + 1824362597907256, + 1251745449211428, + 3152655515547355, + 2726825429079899, + 2558947382820583, + 4141907651728325, + 839413837331315, + 3590819604024611, + 3997387318968621, + 3742508539949602, + 4127481863580402, + 69250180753456, + 4202969927257485, + 2992594922548699, + 412544256429266, + 4288440637748584, + 2231499425235960, + 2727034722650984, + 3213893627493915, + 3004740426833426, + 4459099958265950, + 3670361925456378, + 2064596134445735, + 1286857203890653, + 338666779916267, + 3688641581201724, + 245383264994449, + 3942818177631190, + 2287049198062762, + 410904120816288, + 1116346070912974, + 3835904131149965, + 2974664843058391, + 1671657195748870, + 3363155918712423, + 1997847860716404, + 1071179650928193, + 2083932730406312, + 319542383738584, + 2222139625776580, + 1336531505659018, + 1245901366894436, + 3333983080026085, + 1373738896855286, + 3739688275368124, + 2984428633479969, + 3644535537613117, + 4405229648469051, + 1582256770998851, + 3535701833805230, + 519123904152813, + 1690179613147804, + 2836995739041096, + 1190708942539266, + 4006842048757433, + 3890397302062891, + 2438335369383419, + 4153683134422266, + 4076386561610721, + 2559641736615480, + 3742219800134999, + 3843000822912337, + 3496062458461529, + 831878586373792, + 1667322311235090, + 691341314682173, + 3521129265798486, + 3141566870859755, + 1214695700599925, + 2312160637774708, + 1547542447454171, + 3048498815079612, + 541181497032934, + 4210237749305484, + 801520039423899, + 4076069674037769, + 66284422029598, + 3734721918608857, + 1595915793351099, + 4029731296489000, + 1372601954534383, + 895338875559801, + 1550076643942551, + 2715181220852321, + 3674436776896535, + 4072350277881670, + 3588483971457551, + 3852851150266249, + 3666985337524929, + 1668044506236770, + 2176968819420847, + 580750541092655, + 4432729038843644, + 3784777350379434, + 631367896256625, + 2938634861743890, + 4039449265171208, + 861953147361459, + 748191648318493, + 4028708463403122, + 1983306977312257, + 4307843195733558, + 2758812271001721, + 3503748178892379, + 1416072020683334, + 3513716751959355, + 570888110105325, + 1141780965895221, + 1615111545987896, + 4370853533066044, + 4340126994787241, + 2107237299780431, + 2661534002001160, + 2614899655540487, + 3544599316644559, + 1585022016534624, + 223963598161274, + 1968908111058977, + 2652562610190923, + 21538908017792, + 3510436119012432, + 2452170878941113, + 4024150839184393, + 3435781404734245, + 3204864093327928, + 808663671801894, + 2436328830479094, + 2540708242044403, + 3007671816631745, + 4041100168364753, + 1985927863861335, + 4104537271313960, + 1916766383251200, + 3095359239717244, + 508398597941289, + 578410429345029, + 2808684177998127, + 2665835178261860, + 3163640618229426, + 3991623625527644, + 2929314998173950, + 3512415394001376, + 193162095940555, + 1041445820047667, + 1543726930398842, + 1800963350485511, + 3772030518492721, + 2137579962886331, + 2902607851398407, + 1750313506899628, + 3743569918909263, + 1816068502881571, + 1503988981975536, + 134599285613436, + 626608161294988, + 3188960674210110, + 2250762200664177, + 1499917379095341, + 2937129615110546, + 2784586431255127, + 3038891306311203, + 2050735797978588, + 770364849543302, + 1603572428079354, + 1579258109791308, + 4301133110079546, + 3212019736150526, + 1555081106739159, + 2288423491695904, + 4356246270134619, + 980752192789096, + 2720658910530641, + 2081270935304115, + 428972051583089, + 3683148222484443, + 1088531193559993, + 1830626801836339, + 1034675737243518, + 2835871786079686, + 3865514250822980, + 1286909233534205, + 4136685610292179, + 711314761896403, + 3154904116614898, + 1745967680418604, + 1365400654762507, + 2421733313664297, + 3820491528133203, + 3045301849696853, + 4331215274663842, + 4172719560212644, + 3089453049835464, + 3177306420689696, + 4436027538757312, + 401530660383671, + 2332925153229268, + 3685060798637660, + 736410973021904, + 2350846666986072, + 1643179216430766, + 4026410778597374, + 3459992602470395, + 3381286060792513, + 76331579353392, + 3191252091087819, + 3311702684373967, + 3159160223478121, + 4200836429667553, + 1053814471835230, + 2602773745009250, + 3447363085163342, + 1348666175701622, + 2950202063691932, + 1795098694996986, + 3916105975939767, + 906648731646237, + 2563130370294201, + 2847856130535589, + 1731546005932393, + 1346638544055786, + 3008999312405165, + 1642493054082006, + 1384232406591830, + 493272880851561, + 1296491607426176, + 4118695457175405, + 4132831288742233, + 1608751385675502, + 4171530469584149, + 3130323585911010, + 4114693100344374, + 3105938634448050, + 2223934583705501, + 4455605660124800, + 645226724568976, + 3541477441462167, + 2417427732110621, + 4389071284808444, + 4109758620218139, + 419915640428423, + 393015745730316, + 3830176873579155, + 2239000015519889, + 3056451545633883, + 2790626241066658, + 803092690147893, + 1128978717019415, + 2614276083580355, + 1913523885366111, + 3605583858565150, + 1865516934402143, + 3681593299507609, + 357871505323640, + 645466753245704, + 1117561876112877, + 4299467290271495, + 2730579787519234, + 4061002411595620, + 713308415500473, + 3078641969311876, + 2253864063731295, + 4112853904466884, + 1513970152653717, + 759686033161814, + 1408316713966416, + 2522801783331384, + 4013486287389800, + 4332115627118241, + 1439679733425886, + 2928721318002315, + 1818668138277570, + 3027114577365368, + 3058122599794934, + 2687601795118109, + 3852558646025873, + 274310963523720, + 2123422721656281, + 18656451796028, + 719951062341107, + 1542995363623473, + 1729657773927649, + 1624882225462408, + 1454787996784520, + 1643122972248624, + 1835839121944501, + 3662445467438069, + 567050796789980, + 3961238186674736, + 1879174296698754, + 4278794421167112, + 2025594602583576, + 1838628529950333, + 2288665012275024, + 809989459775507, + 4000091302757300, + 3453718534449837, + 3081888671063653, + 1156685340847654, + 2554511101966371, + 4434886141145236, + 63819965834180, + 1566108144646801, + 1645098339375911, + 232828361319418, + 2442953514937738, + 2602769867886036, + 3208198497673916, + 2804977873655180, + 3240067844997451, + 4307011595870285, + 4439220101572329, + 206901406568736, + 1557495498496675, + 3214358627952355, + 3311962181028103, + 3324901072388567, + 3136170518732395, + 1294164430069728, + 2352935288564089, + 3891774430871058, + 3937722360135108, + 2171136264307230, + 3035589066437583, + 3299214451612111, + 1091774674341790, + 1683804567504397, + 1063594941159799, + 3258854443947949, + 3228173234496494, + 1723513088029180, + 3272069914418499, + 3425554364863804, + 3991075086652151, + 1993857933920336, + 2665437667148523, + 565684875764683, + 835341537272686, + 2332095557099151, + 512793804599204, + 2159638120541491, + 1516340256546720, + 1831084181162830, + 3644731282176883, + 1394632774563119, + 3036583907823894, + 1243110249102587, + 1058477036482043, + 120279311986795, + 2834810492056714, + 2836390464880697, + 2807553554194412, + 1811361577545933, + 505288460277328, + 1616832607911639, + 1975421531288183, + 4344288811326759, + 1808797777417529, + 3360507491422368, + 3766740849938183, + 1580681465578750, + 85944058939851, + 784352307779193, + 2651087103227768, + 993475716879936, + 3895015726659055, + 1765675689783456, + 3929599696672032, + 3929076804802799, + 1933791511164324, + 796316489936026, + 81270505944257, + 2789791532062627, + 2931219831173880, + 3988617225271849, + 916643856925923, + 4449503949919710, + 3149617458153191, + 3407409351524097, + 2170534067137955, + 3207247710033326, + 4331097310544355, + 4474146471073350, + 1819637026644948, + 3235248375172389, + 668063521856748, + 3933938056860130, + 4064838034560597, + 1153863820949875, + 620340630939016, + 1279574217272855, + 3417985026378489, + 1470267910430650, + 1582020672353192, + 1317520664936951, + 4309467534306719, + 2402138854341535, + 2927512134644232, + 3713875505573324, + 2352128153266695, + 3917553505798424, + 4267849906216956, + 2544973590168274, + 407356406061184, + 1178565033228825, + 2340918325880903, + 4080510027972253, + 3794521049011746, + 3226192623009453, + 4058004756976362, + 2037978629108324, + 589314413265651, + 1917863910898084, + 1402909507028797, + 3506319805519773, + 3050681250107704, + 2949497224544767, + 644820466125348, + 672347013823531, + 305266868231522, + 2428140883094559, + 1039285979408133, + 532899695194987, + 2481073602928733, + 3507664279173177, + 1474617046091323, + 1204520158956935, + 3147232690710627, + 647230955452099, + 1132107197139293, + 752278135652279, + 2904953377871750, + 1839686800748325, + 3694063562342351, + 1219138764696837, + 2927075892694914, + 2123721284112440, + 3080058698096185, + 1083562641708608, + 1951429616133750, + 3986548495410068, + 3379569104751795, + 3177510765949392, + 376526454763774, + 4048818207030662, + 4244768183282359, + 978317084275696, + 2941388456763662, + 2011805725485248, + 3615916996007936, + 3645827147832783, + 325115440545208, + 758436833439706, + 3339045013540984, + 1096950324395854, + 1226489231576782, + 3297396603010072, + 2177492902144911, + 1424096649269475, + 1734174121878510, + 130000928431440, + 4101862961138730, + 1040410896288865, + 3220201298440780, + 2528181697594228, + 3133383902721192, + 2657477495718547, + 2112128898053811, + 1527535931755684, + 1470348538689465, + 546663563407442, + 2697085569381737, + 1643628667782651, + 4036786160215821, + 4252465160882708, + 1762414412721535, + 1163162685077149, + 3688046924114191, + 3667660478469087, + 4178925201210826, + 3135346032230464, + 3622983934640717, + 1286111237918078, + 607701192082599, + 3334514792772920, + 4056608820398655, + 3571540188133397, + 1211975692188543, + 2791491857304658, + 4149079987622850, + 3980167653604205, + 2160778194029934, + 2674591830739727, + 3827616715595955, + 4405370146170433, + 1103610622918726, + 194703864718677, + 2723308911827720, + 3629008693714632, + 78439531967758, + 1044701768576779, + 1441297395756417, + 2907692554603446, + 2633765869724697, + 2027645918497575, + 3698464146143638, + 1507634125555447, + 2520293706747584, + 1701704749624157, + 2085036359223683, + 4202390358627750, + 1035047530122273, + 597820995606561, + 2865956702009942, + 4099185335982839, + 1988543811052310, + 4487146807755359, + 315299765566329, + 4212535361353529, + 843999828078436, + 2613522100601028, + 3525844771918388, + 190650701351198, + 297680663974768, + 4100903710821018, + 134001471291592, + 4019444804736796, + 2476105014245870, + 3156609812707277, + 2298027702742652, + 442584760160928, + 3030861057698477, + 4231386004775844, + 1882621625257965, + 4352613993103070, + 2704591243625104, + 2314171298359757, + 4166758648000118, + 2126950314223617, + 2191123256788934, + 3141125976239260, + 538574236972590, + 1381670029605730, + 1061878524594633, + 3432787813840818, + 1193220456138781, + 3673815311323328, + 4167910857827149, + 3373385126227602, + 1053339083868972, + 2995096189205800, + 793250247972966, + 1405572619260627, + 1073221834829770, + 3969661715870347, + 1814709026813013, + 2148071912005303, + 4342460246726648, + 4416374299186595, + 3804461286503791, + 4475011775743675, + 4351979225584050, + 2297805958680182, + 2078766617718293, + 1362569392565319, + 1028849157840187, + 872974288725090, + 3106972257276531, + 2902888106307860, + 3182204866341424, + 380183892736347, + 3051327354210027, + 174430685682590, + 2876391819898676, + 3462278566201119, + 3253253717492583, + 1087731057532649, + 3248921036275716, + 3796144229383697, + 2857359720712358, + 1783056836286925, + 4096743384414231, + 378003439081230, + 4239880694269639, + 568103048131492, + 1895908871466521, + 2163418948138264, + 1935338768866715, + 2757654146857124, + 1966598371721587, + 2498978723866910, + 576781650052844, + 155151015086885, + 2353671849127650, + 2531149660916838, + 1030253275360889, + 3856383689683730, + 2241303429272726, + 3416725255366995, + 2583538053362180, + 1900296036445591, + 2594312415016136, + 932587499179945, + 3192645362073698, + 3364919667646556, + 3966020326256073, + 4270066269105382, + 2303400572948461, + 3730136076219543, + 3412866851253454, + 3590147015516112, + 1467822984065970, + 3717248615258592, + 2903193825701327, + 492261031118286, + 3502883717065725, + 2575297684417522, + 1961112741273428, + 1660385282882509, + 3770152208003335, + 3514431997223866, + 1329998916477305, + 3536771259374809, + 841819466651881, + 2547030674991701, + 1824276603743906, + 3798388859841477, + 1592746240313007, + 1808598734393876, + 3669739478057369, + 3080155939480289, + 290547014799766, + 3178548935343046, + 2421941671596432, + 2994605702110330, + 4145778365583136, + 2715865057689803, + 314284459929295, + 2710251865045167, + 4129800150742660, + 2868782094866124, + 8230764696338, + 1525392143930527, + 56521519387758, + 404201147520390, + 3248257691495369, + 2662415717249590, + 1234149825654479, + 2811305713424790, + 1567504193938259, + 3258608959507531, + 2276303177018072, + 2039939153526796, + 554292523533045, + 3643429665368416, + 4358421980202856, + 2068923501016276, + 1739167169458282, + 763337966621783, + 3624381998270130, + 3905550813625664, + 3738898555140298, + 1249822204487584, + 1239035320227507, + 3383255662127417, + 986185532551269, + 1181270652540932, + 684906755652501, + 1225753554293789, + 2603485934954444, + 715448683425617, + 778030028646155, + 1698734307439161, + 262017782682922, + 1899783072478001, + 4320172701116924, + 3553714524299174, + 4253552932386882, + 4251182725535189, + 3078849383830617, + 4136186009095652, + 456646952836096, + 2098199459843938, + 2750961478777118, + 4209732824348229, + 985040025683301, + 2547547105764984, + 1003706429879633, + 2120884076793782, + 757073408431061, + 2041213664758301, + 1091702225798232, + 159092606383580, + 2383378772646723, + 1161449179565420, + 1559838128984549, + 3048543363189444, + 3750577433806058, + 730617121283147, + 1044013089261540, + 735221194565697, + 1795737176915129, + 1162533146380863, + 3708882064971949, + 2416697120801830, + 3011350835159872, + 2710586246840947, + 3038759060768087, + 2420951590451716, + 577991291039920, + 1030332211250198, + 188818530001872, + 911523308410675, + 2828459786491477, + 2455338054112502, + 3371755494092500, + 998508025267932, + 2236578472586352, + 876625339359835, + 571500609370373, + 2932872946000685, + 3660556757068475, + 1131427342561421, + 296924314628569, + 3941882273454796, + 3783570485126801, + 446934536167170, + 2700491612639070, + 3810170573580750, + 1966911304833034, + 3371100169996325, + 1661323551119636, + 1480998169963277, + 2660842646376660, + 4072163422822269, + 2272335557122299, + 3021313885289846, + 1708702502266501, + 3139490906139668, + 1691513293466183, + 2728124395070054, + 2224247333755366, + 2486845955181284, + 2253746080535246, + 1665693929649513, + 796225262699521, + 3927581425103827, + 2805348833233165, + 1990774819326843, + 47811753658675, + 468301173967300, + 131956377353816, + 4465102955056883, + 3661095144719493, + 1685523604208135, + 761830137987761, + 2213842210097793, + 3622028006163909, + 2003229451926631, + 3105057403519617, + 399996013455300, + 2928634766307586, + 1429849970107656, + 2483061910555211, + 1542685741011265, + 336563227649230, + 3399656639095466, + 3155411557699940, + 4303603350537094, + 686794388266832, + 2192435756474273, + 3810708773868685, + 15689405641573, + 946837479536508, + 266172618417914, + 4107681563594332, + 3963760729755673, + 1479869786217729, + 1000447691171958, + 865877963828320, + 4147101329258204, + 4313128219815725, + 784939986106639, + 27022717574384, + 3923164246470925, + 390779911918967, + 885128439819061, + 750055176438737, + 576182848411339, + 690309660854338, + 2184922716089209, + 3643406090245728, + 1903356573474580, + 311715382542990, + 1581528831388891, + 572336474395046, + 843484793650010, + 3109429493559956, + 1798068421475220, + 296714137654542, + 1501248989041337, + 2039772409569850, + 2287631941608192, + 3372647608746644, + 967284346889436, + 3174600807969836, + 3623238490056066, + 998363362858951, + 2950401450470151, + 563328249606146, + 1571575427999553, + 3944928848516175, + 2100849361026018, + 1075387251610455, + 878058655603630, + 4149836400885263, + 2798448711495836, + 1514383160162566, + 2530878247417269, + 1410977084394820, + 3487057393797080, + 775216465442364, + 1102375549471238, + 1667232087429790, + 748295287771929, + 3341204399804499, + 2236587035892177, + 3646001386156579, + 2354029560732482, + 4165321142918695, + 375605781735096, + 41127121313353, + 3506469638110618, + 3277932464823197, + 3005395977317654, + 2990158969735052, + 2994117998553780, + 281047104477645, + 1432511494718094, + 1589495381482844, + 1030265179733102, + 3867642413222656, + 2727642509514593, + 340161590842583, + 4166213874808567, + 1760466261223043, + 2924343535934667, + 3452766516126535, + 3004917366503494, + 2828017479589027, + 1023522664603373, + 3030142618660892, + 4263381674603348, + 474372679089685, + 1538526396425100, + 2599789029022973, + 65374728414182, + 207978725436738, + 2039942249879401, + 2991685462670374, + 39486606808238, + 2019688014352609, + 2104676250095253, + 1264732307790498, + 2895394891000559, + 1486332425354597, + 3146814329103526, + 148008243244960, + 774651853354344, + 2876137641810652, + 2691013248071307, + 3751855707677732, + 866019525130277, + 1118852543143713, + 1604714718539536, + 60366603874349, + 214467741319759, + 3058608206372266, + 3549136768691444, + 990645539305486, + 854296764142265, + 3862062032971514, + 1291057774818205, + 2020419140415628, + 2736156398610448, + 4070650394741271, + 4407644039234481, + 969961176311553, + 1874410402203982, + 287356042142667, + 2295080728578858, + 4210418766424964, + 528287674528292, + 52312394741412, + 294921409833173, + 4011978614405436, + 3662255509689093, + 4100852680394461, + 882905101705276, + 1065973751666192, + 1848039640745444, + 1501774869104330, + 796325769538259, + 1351614559851297, + 1012040660615643, + 1543485657397858, + 4267160236412266, + 2214843899292913, + 1238814314894742, + 2381489417839507, + 1860493541049856, + 1649485734642041, + 4022670230847369, + 1854594097463943, + 1057348059932421, + 78286327320376, + 99044311266018, + 4019369785750849, + 3761158855191290, + 3704026382352447, + 1141414940899833, + 548096675128402, + 1489606438633777, + 3143401099737548, + 4195751950294511, + 1584269414510164, + 3400586677072187, + 2124819435241990, + 1517237745207911, + 2948710439776202, + 986927035615247, + 347600316325484, + 2763108722848788, + 1952271926745638, + 2683168429249799, + 3154686123442333, + 206644469656959, + 3645351750649454, + 934607655435723, + 3064635363665188, + 1482407962746939, + 3048407440102562, + 2575920914950407, + 1639591818392839, + 3734111993556376, + 1684047272948366, + 2185411269843216, + 2867998689168203, + 3503361133732391, + 4082939466280181, + 2569918183846554, + 1251997551298097, + 3411206631119664, + 3373592490394522, + 1921415724640032, + 4169629984405896, + 2821663558192242, + 2779370865175118, + 808342973625898, + 3016358635429476, + 316680276507146, + 3389438949630215, + 2450243213843408, + 355740904001804, + 2671808357838355, + 3017609412352609, + 353075355404946, + 4361574695641578, + 4129394641812105, + 1777375024168152, + 1300184334230046, + 1629636491660591, + 3020666871263128, + 4192346786692382, + 280735296942627, + 3807566577340177, + 2075410900355583, + 1077986948726697, + 4284907314566767, + 33446682150958, + 2768770127464609, + 478221521333831, + 2197517193648081, + 503656551640150, + 1235674744642846, + 530032739771510, + 720513527579961, + 3573905548733355, + 1262868310650142, + 1566235835851280, + 735825501380721, + 1305088464023720, + 1341880080047916, + 1172588005317889, + 3909571820374190, + 1112691127236482, + 577688773246960, + 3154150151099820, + 1451299648661431, + 2042865459280337, + 3880033383448181, + 3875145641432305, + 4038837185675668, + 1187474070907655, + 2806262753757586, + 1144315020162017, + 535105713862587, + 2390168736196997, + 2819164284709497, + 1485842554705091, + 1539605496688619, + 2264199263990772, + 781996661068950, + 4381202224834662, + 598111391073445, + 3000772787733360, + 1941265191904823, + 2871145699744811, + 354016399158034, + 216927146216232, + 2103844298572644, + 3159489931546154, + 3684650249037825, + 332273310365196, + 4386121396037588, + 4241782880987789, + 630290792267970, + 27578750065375, + 2087899664921562, + 865592830319171, + 329129562633721, + 4057367867415574, + 3079856947309697, + 3725478705552594, + 4090991439420266, + 4070661114524316, + 2019303963164157, + 2976028343777059, + 1224568125231793, + 2525987429712127, + 1257644046456340, + 34884976952249, + 1624070312179284, + 314513687024615, + 1218142963310318, + 3434189695404388, + 2510369230828031, + 1779128915284491, + 1852362888155757, + 4393053489445647, + 2266408476602398, + 2499590420060973, + 2301548329170050, + 1802905497905369, + 3509542215481789, + 1840580687393321, + 3535391934653725, + 848502568117846, + 2264538358453602, + 2032700384152191, + 863955045104057, + 959139549345746, + 1670911294345116, + 3933458654071959, + 3662961906715587, + 3116773564869131, + 177065822539544, + 1529277026297316, + 532901720912082, + 524707352212448, + 2628917597093375, + 2922682418024569, + 2081931119602559, + 978693471566294, + 989149526760025, + 850542588977981, + 1326277586939697, + 185971189825425, + 749412936188962, + 38000345898360, + 3543290124751445, + 1673309626903172, + 2475623639122409, + 2046874078562040, + 4264088009132916, + 2714063306380357, + 610183494228160, + 4256602873603796, + 2854393476271880, + 1512529495469134, + 2576092804172391, + 3525859565932160, + 610161536035179, + 1657972390722368, + 1835796525422130, + 3410459466445210, + 2322240564304122, + 1020727736829697, + 2339318267929655, + 404964179637104, + 989517446665469, + 3345171446743574, + 3616030172764532, + 869443443522286, + 3317664670751187, + 352678039616784, + 4426118138116791, + 967509063244946, + 2255215442757274, + 2201839577854379, + 1099405450389678, + 3177683317044265, + 703921746919319, + 268973172989594, + 2435892732433989, + 1940035979829112, + 2049611604122876, + 4083633374373329, + 4024576972948652, + 171072535061388, + 3120161342731621, + 4307386333195655, + 2146045613791406, + 4391352844402715, + 3487661921030303, + 1455941555213843, + 2603665311311066, + 2572519927081048, + 3165794326671120, + 205006377176520, + 2422398166541757, + 90805114219159, + 4473343462764886, + 613817332920707, + 4136240489385387, + 1386061012364724, + 1169567765885931, + 2054568984630068, + 1094985743555426, + 2181472607656637, + 4158970698623601, + 4494735433041313, + 3538327308948181, + 320519505433889, + 1481058313767597, + 1894745580895552, + 67676310314332, + 858429628135235, + 1395055849739328, + 216443212777419, + 2180413735341551, + 3713205102484332, + 4261834464757974, + 3262333929311666, + 1240579066497089, + 1374886998150625, + 4360589684034185, + 2795770284265575, + 3018935231951700, + 598917203026612, + 637821369738001, + 2026262786618378, + 2066195165513387, + 1229324566690213, + 2374146785376419, + 1051764091698397, + 1788022209130301, + 4191464536892820, + 838398368720249, + 2932375965782164, + 3370708065414666, + 334831503936060, + 4291861901673909, + 1190711725890772, + 2402999874135115, + 2255864148788791, + 3896616771052491, + 4493346210535881, + 147814057470667, + 1338596341839659, + 1736631030125169, + 1269200492067748, + 1265399223473724, + 3525894693166928, + 3374295925256428, + 3947485588241573, + 3862294208830340, + 3930374065938514, + 705789543672556, + 39771704027442, + 487077177511302, + 744670074251886, + 4321084475009590, + 78681666776661, + 1267934511553248, + 4042137873139309, + 4100923488496600, + 2584161570750580, + 1695466187089185, + 353759289692437, + 4406226483586668, + 1461258925123458, + 2152353321508290, + 1609113952035245, + 4392296107875789, + 109690530224861, + 1681324155011766, + 333748479929195, + 3581823391053820, + 2242305153501009, + 4103926050107392, + 942843898862604, + 1938985260222614, + 4428832932294506, + 1147048353886984, + 3341391771960919, + 4490528809249273, + 2469331965196111, + 2737142966445105, + 3820048866959834, + 2508188264135773, + 4331542164289167, + 1962754349944838, + 1258686721788724, + 1712750206378705, + 409360387682985, + 623653673469582, + 1886831506122793, + 3155264267353354, + 1825012948455867, + 3857074370889690, + 158075793832886, + 3621649273074800, + 2934245434060562, + 1038927215741386, + 2992020598162885, + 2079989038060061, + 2016417018866943, + 3909464257455816, + 123594903872406, + 2207724223600134, + 3367087554007959, + 3089386885166282, + 4350648940178874, + 2168363777772854, + 708742850244215, + 1565523742709541, + 3721156584348400, + 203720473204936, + 1528104761740287, + 4265738488537977, + 3681421528018457, + 2213667147248929, + 1973146285494266, + 3169315630761647, + 2441817602911383, + 322081151343366, + 3155277405658624, + 920169691584348, + 1659076524923592, + 3426962037924476, + 735590526474857, + 3237601490477125, + 4114291201824404, + 3799271270205766, + 4470969791037434, + 3243313357964321, + 857770744185942, + 1343041294522178, + 2074194526581289, + 4316533921618312, + 1469112945423892, + 2105051252859236, + 556606176971960, + 3830058880078077, + 2510557040189466, + 2670986555363275, + 1267996294150940, + 36463786406480, + 4376693849096192, + 711613194681024, + 29223378948845, + 897861780934676, + 2350014693221385, + 2880051318234414, + 4473650163198152, + 109085257730823, + 2361601910632816, + 2263850940808797, + 2597782879568895, + 303398225740914, + 1583275811208766, + 3657561784591174, + 646149254480283, + 1869196595546189, + 1929161034603021, + 186999270737976, + 2819623246292962, + 2601000689427482, + 1085919914798985, + 838841469197976, + 572368624113874, + 2021835818038844, + 1836592300772039, + 4287446189921937, + 3867138331835377, + 1103289511417494, + 902771760518016, + 799181888381262, + 262449879514633, + 2168877538330199, + 2399567663680572, + 3555178054382619, + 251495034276039, + 5130911849868, + 1265468506146742, + 675548166583986, + 2332827889963008, + 225902449698000, + 2858740658223883, + 1206703258767569, + 3405924908574833, + 148054434375438, + 1462206305990092, + 3778027306708183, + 2771229014634536, + 255909358018010, + 255394658654125, + 811080256499888, + 2797426649018935, + 3148792533422061, + 2845822080609052, + 102028894782519, + 704943474112333, + 2867694773110896, + 3826847740325997, + 3208191010142002, + 4124797235443785, + 990593764715016, + 2426098770936282, + 957643840161241, + 3666071730743678, + 3411214032609289, + 1532016606251279, + 4171352658029401, + 2195064946884680, + 2048098516491890, + 3746218314768503, + 2948468813233405, + 2168786200139920, + 3864997726145382, + 2633120245887411, + 3061127471634761, + 2699995509393523, + 336217425152780, + 3011819536795218, + 4239809616039494, + 1999215034963563, + 4452083781371166, + 2838759215496769, + 1905377662817756, + 3490479934770225, + 274480308844847, + 139590887524848, + 1829195088653488, + 3619092786712281, + 3969657254009307, + 1624036411023016, + 2717787044841798, + 674940723684610, + 3489182462230529, + 467383913732368, + 3641488963220428, + 1189989004869219, + 721473935481209, + 532831486594232, + 1559469542534475, + 4093549189990804, + 832165508997310, + 3723499303401658, + 2427420157124780, + 4361659752873284, + 1369184645412358, + 4258358569768382, + 571108452037300, + 444481521230728, + 2396872953274308, + 463516023547557, + 2155615786660242, + 191666317891543, + 2326354644477916, + 2097571567451264, + 2003884850958200, + 4455863836251333, + 2611837572595064, + 4136514854579611, + 4405551575562953, + 1308727555171010, + 3916717984457354, + 2346119043383701, + 2385001167403352, + 2887032454803572, + 380760718782591, + 3135111749809685, + 3055291183104135, + 2324689427694957, + 2944464677713810, + 2945342915536687, + 2784986680514307, + 4001977979081164, + 361112173790015, + 2899867979219890, + 2553331757462477, + 2783535015499123, + 941080788736333, + 3073838113542800, + 2730717327678052, + 4172696314775485, + 601943153844029, + 3839904079274953, + 1016113535255440, + 3980047437111236, + 906538528105888, + 3220330167902396, + 262077927986089, + 3537798683351341, + 958872386262258, + 3578911427205582, + 1456618169691242, + 2397141157363085, + 1252118203595499, + 2395841282992139, + 1256926635107588, + 2225981523975363, + 479331765182327, + 1282346335057894, + 392603582110445, + 2266145116697005, + 1390956399635579, + 3719335644657966, + 3221597937799011, + 808052232317761, + 4201612908359100, + 1028303340879942, + 27503004146122, + 4099436210668830, + 4035196333850217, + 324452105295974, + 1493149910409881, + 1936518018172856, + 4389479880868200, + 1582768488670727, + 4244912251812925, + 1019570940905529, + 413426582597225, + 1281413845507887, + 1142638408361664, + 3475286638024907, + 538411360924279, + 1536695777047430, + 1177217072765854, + 2416579127104664, + 3483055677557642, + 2605699351485726, + 318933527465731, + 1250206705980948, + 3524193187894943, + 4254093376952686, + 265697594193871, + 2583843605660971, + 2199130912702112, + 4315003113747130, + 313942815219113, + 4343898771294513, + 1306716927146798, + 2346527024300561, + 760003223668080, + 802318129574488, + 1791375574959052, + 4242388863122292, + 2466092091213904, + 1885272156917932, + 4124792154265237, + 3126660637484453, + 447872991403869, + 713895436479171, + 1232873393341539, + 3176351331602110, + 3801113217719862, + 2421298096083693, + 3470069665977886, + 2675808960452205, + 1186393533789325, + 3273827851822504, + 3678971543705504, + 1270205959711214, + 1442363841815403, + 4499750591703349, + 4457154968712498, + 2131235348357902, + 4227481000621290, + 3921295671171863, + 2375851302329072, + 393180483828501, + 4303700767340878, + 3297605261601930, + 2470252370131156, + 3425014980403658, + 1651567769210510, + 3898408809962202, + 753190535037931, + 643107143818520, + 260344062445006, + 3950932434359891, + 1260175081234905, + 1226366207539325, + 3314628222372147, + 4225147107711038, + 2545372101084353, + 3674415264750251, + 628698418366873, + 2800622740119967, + 3090789270424848, + 2099582612068693, + 3428551704425511, + 2591889334558098, + 2617337567565114, + 3578900913005900, + 2799100164008375, + 26142534818441, + 194211834723759, + 1637905244091430, + 1542025945984007, + 1811477094876355, + 1942054586785109, + 1650689984270352, + 4310581284071729, + 264810973185306, + 4025561174903797, + 3233721835314868, + 99969289234518, + 2924111353690307, + 3893816431970899, + 909451342617021, + 2239587158324934, + 2666950814179298, + 2398157354439082, + 3268751534543952, + 3085842112171070, + 2543057682413291, + 1245113950463665, + 2339553833394450, + 3259731911929571, + 3891562020490141, + 1838863803854982, + 450522880319227, + 1213455443337056, + 2664909597484822, + 2093053577616598, + 1560875620758331, + 1500346153861892, + 2852832581944182, + 2099942592829973, + 3351289805816015, + 3942539610941293, + 3643827499319257, + 4460309901495880, + 1406419200802831, + 3938461844354313, + 3337778650347464, + 3620586930309475, + 2068225786702739, + 2354675079833012, + 3755966278223770, + 1227140772740763, + 1787095113151345, + 3550649539336379, + 4456385273058745, + 4314926934549205, + 4123975350418943, + 3915445557449807, + 788472833112144, + 3353858515814725, + 1382761619653453, + 1400602005114417, + 4191952629111004, + 2202985025049923, + 3316955453165113, + 3223484284738313, + 1434594353255932, + 4055496901490003, + 2305326644930436, + 2994800107441694, + 2256493389255503, + 2722499003458925, + 208948557088763, + 871456410975338, + 1435867765952746, + 1470923032332090, + 3931037774868547, + 1249336962355495, + 2521976555513814, + 2506317655213455, + 700138130277751, + 510782646651012, + 3109670454469769, + 1834893438742660, + 989669345115029, + 1562477437033985, + 2284009931538323, + 2467759787208009, + 218317906957304, + 3759571795212802, + 2405600933771814, + 977872606536236, + 738513179201231, + 3372429276845938, + 4354300491134676, + 3937261159401246, + 3860147710125525, + 4311845373543843, + 3613714801483923, + 1755030149343515, + 1924479379936351, + 1351242015677585, + 4012115390776220, + 3771736612178737, + 2473746112217975, + 15597785107929, + 2575823550812521, + 4268646770106589, + 982865248817241, + 1706944860350098, + 3292584138226046, + 4333239412560353, + 2351840393556027, + 1185840488012567, + 2722033223687722, + 2328983260828605, + 116181243478490, + 1905555298139195, + 1267316057197537, + 286314623805993, + 1683480756973686, + 416825901951428, + 1858383945452265, + 4258058087293336, + 3361844273302744, + 986497654225728, + 3493306869691138, + 3915980952945898, + 3746602698004539, + 3406307282642245, + 189986470234558, + 4301128345723364, + 3160782210603799, + 1751574462255615, + 4354647096524526, + 3933938693122225, + 2199792574464514, + 1850465278393464, + 2067430212633022, + 2821787285627147, + 3608293748183637, + 2747867258212678, + 1339991920321587, + 3902452038526161, + 1173569233676589, + 596688679233625, + 3495316029215101, + 3612739000099307, + 428030839511441, + 2747064974372866, + 3709817730061540, + 2921739921772243, + 2895974734955874, + 2092836729744247, + 968593705784469, + 1388680773473264, + 360030269405619, + 744995246900441, + 570604908454853, + 3187616399973886, + 3778073857824246, + 72262914432521, + 672785461818174, + 1149014083258797, + 807627805529123, + 2395036251958548, + 3819546107191715, + 320819732344829, + 2176003579409020, + 4236442641274808, + 588167637274468, + 120304519336506, + 343988488606700, + 2237224379545839, + 1820475484164897, + 474414020845893, + 2215881862315045, + 2050256970193321, + 239058975487008, + 2770690667374827, + 3712232678350461, + 1363857702413252, + 1790040599657918, + 1417410234095220, + 4056436688707297, + 1917737679867760, + 4083589877449678, + 894765314129446, + 3203340001759396, + 3753818312707311, + 79268034377773, + 193295413079993, + 508415446038806, + 4152002781309028, + 659517435986094, + 2351463286097182, + 4399038812532997, + 3671560367729152, + 2066861072158136, + 825778653604900, + 3652977251824281, + 2604962025261872, + 4325542045493403, + 4394450699733621, + 4298551645363079, + 3153379150411831, + 1535873460090821, + 771464274867233, + 2490895855666327, + 2966472215543592, + 2904528608936944, + 3616169107254977, + 2882144613626603, + 1519414876101047, + 1083204229629015, + 1670619185722724, + 3907521549163473, + 3790213829161768, + 3581298420882958, + 1197135019719364, + 4137094862469952, + 2527661620109149, + 2553650502033669, + 4197206401986231, + 4244993250745189, + 1230115056990645, + 4223741090300835, + 3838664458264279, + 2009592198590358, + 3734571427552828, + 3143796019270986, + 1101196938738985, + 3067557477975902, + 4498188459915197, + 2803742807828519, + 976157095635378, + 4451799938423927, + 1919233859110783, + 127320133341625, + 1530532972108457, + 4321405938595374, + 3747562290156403, + 853514314423370, + 1349749393256384, + 3401382367300503, + 1739509200320742, + 2004700107649651, + 3919997898189103, + 680999147052936, + 1504514640070630, + 3210636068310549, + 1060118676559095, + 1245273501419623, + 2818107408942955, + 828326156797844, + 1783852506772487, + 4320785151623820, + 7927651658426, + 2693595721483070, + 3284874953551329, + 801461558220767, + 396190475545318, + 2076906833444956, + 1886712619703399, + 2622267214511920, + 2703562485212312, + 966453964352581, + 895445973765065, + 3386897845470563, + 1727439413088034, + 651064162279539, + 3707308805566156, + 3502884809004960, + 313054591602877, + 798362014705092, + 1729558201552005, + 714267755633904, + 1706299915045301, + 2545237785327315, + 3294546590752107, + 4152879504942581, + 4037513629974663, + 800813297977853, + 4443536343138563, + 3612677265570767, + 3970877632805216, + 1571865469938586, + 4227564301688510, + 1936997039036832, + 1256540113001639, + 2797324245700089, + 894072979953880, + 155199972889909, + 2699030100382366, + 1860750323713544, + 36639286364320, + 1684525338088490, + 2136331388586388, + 1441474628433960, + 3639124718417329, + 3295686284974953, + 3760111582274766, + 1788022404676256, + 3744707944430087, + 2116809785514049, + 2649943394360510, + 2404144894492268, + 2688753539493229, + 3011701873695543, + 1670858687308856, + 4266774975864483, + 2012587484051906, + 2393676777059280, + 298467539186029, + 651359356371250, + 3626851750869904, + 2038915455908372, + 4233034544918977, + 4497345021526070, + 2082896581755539, + 2546579249320021, + 3010384570083597, + 527023802877612, + 2731077047938103, + 3507596039585200, + 692196584475928, + 716030582399786, + 3209436849924071, + 2698521311686690, + 549847117269442, + 971322676176155, + 4336400671484308, + 4424157042852175, + 4340888486208008, + 785704936749042, + 3966338764026685, + 1229191866093018, + 4147419858236355, + 176237021608891, + 2043860793115685, + 2976626125474411, + 398340943560113, + 3808414555397889, + 1458031350086051, + 396208592075000, + 1560521590126014, + 1427412304281309, + 1844916572528167, + 2221883567329393, + 68374410224602, + 3649199241085964, + 1563166420629529, + 1113985068934138, + 1034366107355022, + 3223020771697814, + 639484910313774, + 662642429766093, + 3646133075287888, + 2548777958648117, + 4015495807446464, + 2518193582109377, + 4039310093769169, + 415611696125016, + 23017724185939, + 1971036098174984, + 2534546944032296, + 4202595222403080, + 3532209445213976, + 1575719729334791, + 3674057480525522, + 2551054575189067, + 1666377407484058, + 535465662748330, + 3960010200786209, + 3913969890334748, + 794590316044422, + 108062764245327, + 3241841366492564, + 4163355829793311, + 3773621834336792, + 1801636045923438, + 3282730145306004, + 555433312341438, + 2806606369820691, + 1830978879445064, + 337624912044662, + 365614081700313, + 4130589316151305, + 4465865164574599, + 411855767901300, + 1152981525329764, + 119864030587313, + 3892242796235637, + 314471086088965, + 2408621495228760, + 2713307552193243, + 3057507568002648, + 765094339431605, + 3510815029203222, + 4286579915590511, + 2905990384800008, + 3297881053298091, + 3435483447982582, + 3057729696109408, + 1060111848599793, + 357427151618779, + 24083390839764, + 1885441034349545, + 1751776117412652, + 3758453541756118, + 650587220366642, + 1237910402358887, + 3326759197131801, + 2391209462784705, + 4074971101537919, + 1446053319074954, + 3329496475375939, + 1867500416649521, + 562738237800344, + 4452345399843683, + 1344723688094646, + 1746047741442745, + 903968426574340, + 23208781651773, + 4169311383135150, + 1205094779891180, + 2822416026112416, + 1374776645693559, + 4487922109250819, + 2485276599226909, + 3625507815119329, + 3405191960322669, + 1197906552835547, + 1580730645036540, + 3640312554381916, + 1251266735624835, + 904079491992513, + 1697678402869077, + 1005377795606654, + 3112449608610993, + 176048319742690, + 2219880879323965, + 3102401084103576, + 4384246664709143, + 1534975198692775, + 2235048126381681, + 853917664338041, + 602822985485333, + 3203338450438608, + 3467107857464033, + 130243210875468, + 1081015620456296, + 1510377913440406, + 4384165253539319, + 3790003413771349, + 64461793142602, + 770594148599741, + 863219214167419, + 1817373648675154, + 100380380212489, + 2428398897675446, + 1872227443422000, + 3796170004717323, + 4204201140698137, + 1614354964079403, + 3146392943568429, + 2438874418452751, + 3510726259513120, + 1396419867431638, + 3323376837831129, + 679624951238575, + 2172129046390118, + 279083814581272, + 3040779122041361, + 28793256587445, + 1005783550724182, + 40558692541730, + 3088158918490941, + 3381778299594098, + 1876195138740828, + 2027926456081716, + 82926482563827, + 1934619163246083, + 4441804000607864, + 1234908822241930, + 3353539490118805, + 3409655148781099, + 4106635826525368, + 868562671239589, + 958459536529219, + 2226339446540048, + 2078402911580085, + 967831396542505, + 3081536167696073, + 1406433836135811, + 4380589603200463, + 3686954516671168, + 3010466506974068, + 3158388155110219, + 2998581726833207, + 590548729821558, + 3242730209914263, + 3019378224783317, + 2504137420388503, + 2690569305080607, + 4033311155879117, + 962167673464398, + 138409089555089, + 4409956188687020, + 1455199511188180, + 1946284197953438, + 2716586731123669, + 1531797695116105, + 1226665517016474, + 758797829560555, + 3963529314964786, + 544089680090898, + 2789274504366409, + 4252822236621864, + 3690507600379380, + 2962738007234242, + 3419686525894499, + 2039937143807556, + 869150592433537, + 1584848647157969, + 539143852558265, + 211420847855641, + 2314456238594590, + 381500968409527, + 3814997709618980, + 3978966805343810, + 2447547525202112, + 280389454826695, + 3702445851743221, + 1406760806731669, + 3840177218267827, + 3176119132257330, + 2077711431328679, + 1705997306457595, + 2025277306224881, + 1983634722257882, + 2952515057643143, + 3991150242773307, + 3320643555307941, + 2569003960092021, + 3374601204333967, + 1967854826005060, + 4158823640026992, + 2802306370900723, + 1089185287966041, + 1237523052749012, + 1775480283290901, + 2474867283107196, + 323782935751011, + 2902922899375424, + 3043377361221889, + 2900331310355006, + 3568314733843058, + 1238015947546775, + 3518972127412515, + 1090331947960903, + 3633494145107919, + 4449252934759965, + 1574677885847630, + 4404961241393556, + 1255589031964144, + 4068967454703586, + 941944865025627, + 1960996700958757, + 4381773140795599, + 3203011995810711, + 2072483972063891, + 1986266069602762, + 883883808249130, + 516494752384943, + 1630299636403672, + 4422071796841412, + 2570423956346775, + 2543616563069108, + 418446126187707, + 1159230747310488, + 1627830644421154, + 694268265131590, + 2407563881726078, + 507426696353724, + 1722151662738236, + 3660989738683818, + 1498610586946822, + 4189594876706038, + 2082891815360716, + 1783119238099807, + 1040844883074369, + 2101662137849154, + 175318506707750, + 3072364184999662, + 3628156514783336, + 1799674162209771, + 2924998519066472, + 1606743117755935, + 2247670445058805, + 3261885001120095, + 1295272169746149, + 2351205661065593, + 2273920490774112, + 3554285364869893, + 2075952341406577, + 107177063966834, + 1738772549481308, + 3713838270377426, + 4251896127630579, + 4327210573051529, + 1847265342220846, + 633590464549354, + 3558407234755431, + 297200097604493, + 3826201869026222, + 2469300287119200, + 512821797045474, + 4175407569763972, + 12662333948334, + 1692207505556499, + 2040153505536775, + 986851554939032, + 4391378314963051, + 576947595448326, + 3300321460053345, + 66705003186967, + 4158812572688994, + 2252367142933754, + 57942227300215, + 1443175018172792, + 3624771032582524, + 1109601029297256, + 4430449398726316, + 3106980085379123, + 1372656714655546, + 1258322338797892, + 1941747279239133, + 1231075359108234, + 1801001091063083, + 1111491700302118, + 1114022558632497, + 3397458029049417, + 988597873034587, + 4295635805426340, + 2154915110286747, + 4226552370078407, + 1921897083351582, + 193128923573395, + 4179834508310662, + 1655281020141549, + 4486673335272572, + 3985406631034459, + 3352745906025364, + 3767127538734868, + 2569614196341619, + 3767618348952134, + 4189395769919810, + 1760194513176502, + 4353238229004297, + 3571978503799503, + 4373207645790555, + 3885331545779265, + 3651960619571776, + 4064192660596167, + 4313042944375474, + 1762262030272611, + 2840880137054294, + 1527928147274699, + 3078135509352898, + 312715233196721, + 1348217088946547, + 783738295803956, + 2100130467782537, + 2951324088360028, + 2415609873601878, + 2196933933918194, + 3387798659734909, + 2342932996817844, + 2691989153399800, + 2059429058337592, + 2755702166882004, + 3247832711640357, + 2219332325044647, + 736057926340124, + 3120304528285062, + 1797051085593698, + 4183721581462344, + 1564041004483775, + 4176367251313021, + 4020238121491304, + 4106562948896805, + 2890752490137188, + 2256495203185236, + 4361377602984907, + 1314269672478488, + 3910354000983165, + 4483653281426284, + 1067608952461743, + 772740015455098, + 2646987046386422, + 747912358992688, + 3614331556192483, + 3636291980784265, + 2550731661305119, + 3643516427034573, + 2081800192023600, + 3241973251497616, + 3446910333076293, + 2110137283173737, + 2877890773863431, + 2548139540906335, + 1492008376363777, + 2855611842059421, + 939505026591238, + 194876775441522, + 4271082477671766, + 1501964439390197, + 2788910175630833, + 4278523915414197, + 2656672482982854, + 3170065939637487, + 3203810369403661, + 3001530435683584, + 3864437925767873, + 1690508915005888, + 2470288234777959, + 3302021602728186, + 3810640410931961, + 4347185031181415, + 510300394530761, + 1057231544329662, + 3533254921577398, + 4333454156973632, + 3931193740969423, + 2488292053725699, + 267175985488254, + 1774667237565599, + 3807987131250491, + 1240056261159324, + 37502814385737, + 2767192069262714, + 1605814662957041, + 2788887913961224, + 1823935551192633, + 2670591602744070, + 4417847118565074, + 2121162939105849, + 3626133243917257, + 3698599747857668, + 1237542493841998, + 681230028574390, + 3527069882341940, + 288346404009204, + 1327659071279127, + 4468957164339750, + 185805132677315, + 3905803213900911, + 4253763574919454, + 3476258997970109, + 1349327728808071, + 529260277509456, + 3012434681075769, + 3452720681688978, + 763062012736393, + 4208554046990763, + 1793986617452397, + 1530734735143215, + 80124622119974, + 2895961699052079, + 531311493408550, + 695312600720459, + 2592282286545281, + 813458246311518, + 1510580328494556, + 755312782911053, + 1811006920646703, + 2553592865098631, + 1037462651622529, + 3287037935600899, + 1385594230486572, + 2042832017176113, + 1052527442205008, + 618677917800678, + 3786532505571835, + 67455319090494, + 1866605713827515, + 1084616268290886, + 3898719151592701, + 3568482616082410, + 1028650335277404, + 2748550718980472, + 2901644851430742, + 173892136497476, + 2328251400829314, + 2730866479509090, + 1871761141159884, + 1195570541354558, + 1394342785564698, + 1701306172469186, + 2064375548257623, + 1492989535905402, + 3556003481899914, + 4408766282600089, + 270206366996166, + 2568889349169734, + 1559402517418815, + 3398415726640788, + 4344827634236625, + 1287376619814029, + 997714944013291, + 4342146625486426, + 553469538327205, + 3964052439973685, + 3521325917624800, + 3570889067483947, + 3078515802507943, + 3831175798989098, + 644496442456381, + 673781042507671, + 2482223686650184, + 2539326320275131, + 2997869712465595, + 922097464324192, + 832689054116095, + 4434100502501327, + 2870357796636392, + 1539837225290329, + 2981089930753676, + 1752496520581179, + 1437568233520639, + 356825341332232, + 4035218514368541, + 3187969993275838, + 2184947480769180, + 2927924745704210, + 919805206248160, + 44876786428672, + 3588296651879650, + 3901448314163991, + 1656492188500526, + 1357021458905511, + 3188675532201559, + 3801576171855763, + 2656616470236976, + 1109823736531098, + 4176301087663502, + 711554848034783, + 2183957179123034, + 3800074298946452, + 4330816664381011, + 2151135180713682, + 2979248116144634, + 1274516911720088, + 4473948792449984, + 3292711361865011, + 3553911436644107, + 2250737405381189, + 2765807103106089, + 1077935938368004, + 78069198342581, + 1117440024428463, + 2537446468592697, + 390608908649208, + 1018700971985336, + 2162296535003798, + 4389951431895190, + 3173881545849382, + 4166788096234371, + 1513856687331184, + 4274979373612612, + 2786049112866714, + 2811091146715501, + 4145073453056329, + 445042458008324, + 4099231621572072, + 1073561605109230, + 458824440757173, + 3564173210122051, + 368087576476201, + 3093505656409661, + 3922755937829701, + 2736603644570121, + 832538841911444, + 3683796113299481, + 928290476747638, + 967346383064559, + 3133905868822981, + 4443647761383637, + 2338878235620255, + 2530950995095940, + 1233876513749090, + 944200730289422, + 4210766899987466, + 99013143491962, + 303333809897079, + 345048998920357, + 4129570133334574, + 3306593531544417, + 230161279203669, + 3919680024967646, + 1197295382073824, + 3305448989560965, + 1292559390354668, + 2671536342104240, + 4166763720340802, + 3411405561974670, + 802228659718203, + 2205659535380251, + 948049767350206, + 1729025674902586, + 2046500062364451, + 765694972001491, + 1805319682347111, + 333763129690219, + 1333738500781179, + 298379713757603, + 239199284220333, + 3355604827807709, + 4380998237690624, + 510976962655000, + 4280476571449544, + 3576230139686571, + 2901990268508012, + 4246425139653667, + 4145656247299714, + 2001069623503221, + 1702568262866317, + 2142356475433375, + 2976788854699066, + 3320312078910348, + 2332127415732212, + 2929859927615995, + 4014838218617866, + 2901153698576009, + 3893971179112485, + 3885750515409829, + 310392243547686, + 1293769139725361, + 4145454043405135, + 1332242894928788, + 4383487700324010, + 1733014345565157, + 2845759645584976, + 4250917560498285, + 40031070508628, + 1358211463991512, + 1626432039626226, + 880605325830944, + 3729337904898312, + 2596056267921259, + 978449111228961, + 2487850593425731, + 3385226010515537, + 926275581838396, + 511515952887497, + 4302289920560084, + 3513874138909110, + 4026380624510082, + 1826040084446296, + 1447531159834030, + 4213750637435243, + 2321092355318251, + 590805597449759, + 3383675989262696, + 3548149224255599, + 1756789886488507, + 1511294122864354, + 2743111385912626, + 3889035045666535, + 1867025134919325, + 2742594770660927, + 892864703847685, + 2781162273099574, + 1508252216347796, + 729851117805489, + 260639372163676, + 3335435147599643, + 246832347054572, + 4449053379970164, + 2729165952817589, + 2925911869495958, + 1334115831164032, + 3000473257879522, + 3125749928485902, + 212082356729080, + 1032229004349188, + 1703371206185185, + 4248733815656557, + 809438624667742, + 3319905983221355, + 2002555637549471, + 3482297162213670, + 1467492655166023, + 4439705701493703, + 3274484658469970, + 877171024250159, + 3939870545110448, + 3821162759747640, + 4306868900456021, + 2373324911705953, + 2930102632809116, + 638049618834247, + 622169457781524, + 3771828998897892, + 2315222192947447, + 539894465461373, + 1598105653465644, + 2829390642655753, + 2542640395751588, + 3783570371978156, + 576551192481623, + 204224134065647, + 3490946375819420, + 1802830478903750, + 2017080112703802, + 206156571822211, + 2322560789556694, + 4193823353424683, + 3569679392276215, + 305946848348987, + 4069614004286479, + 2215548210090501, + 3546842360697245, + 2784432051698961, + 255463708467935, + 890308240876383, + 229508136334997, + 1007854741755392, + 3869769262634490, + 2209264586388153, + 3364275097404596, + 2115268708352571, + 1348332559368333, + 3599688017150671, + 1729032493246487, + 3559842657382147, + 3535566656798994, + 2908757997123836, + 3191400795333708, + 3091948721032740, + 687926957718355, + 1847775152456583, + 2263333403880921, + 3288951255841594, + 576867666246192, + 1293084061340797, + 4440488017557869, + 916883276864658, + 3422335832514836, + 531409883723485, + 3717957810628107, + 3945389455403028, + 740170588751523, + 731586825671861, + 4054655985394835, + 2598217105334643, + 445797918839965, + 1865148987894216, + 1380444391998576, + 2908657686503474, + 1853968183099309, + 4359016055742506, + 1343508708073192, + 789726268745147, + 3239995444941113, + 645897009234454, + 1988099925794547, + 3641202702516519, + 1873711966386452, + 3649099047652156, + 1680356380668483, + 3386701204781340, + 495921223145588, + 3316747764042477, + 3573044662568193, + 2575508773118010, + 3383155785932159, + 3212383206019632, + 2143739832644830, + 1812056927351643, + 3910426218938125, + 69960533019253, + 353795229711605, + 1341693608301737, + 2635676877992522, + 36385500938267, + 544738658044209, + 141768339586839, + 1309771206272194, + 3876949821641655, + 4424967196641220, + 1501552045754234, + 4480719094018552, + 1590958422935495, + 683155331249175, + 2701656353168109, + 4010842531303760, + 3825930632654434, + 3676811529195273, + 1606605675753870, + 2880379590382877, + 1679131387663437, + 2484542529358997, + 3914901589278557, + 333844379617008, + 3414853783088852, + 601095926563698, + 1302837088631627, + 3460871831644, + 4405626254101461, + 4442925356100441, + 1205527497350891, + 3828450400143998, + 3451761479575550, + 2317798490339449, + 4138443524990942, + 2294417183480148, + 2938005293919453, + 159051891353685, + 815085690251838, + 3562412042237914, + 2092358922352346, + 2217419941919667, + 2344912876809042, + 3044696756405296, + 856377702959748, + 3728243862460582, + 3134281112017084, + 3744493989146718, + 2318769989337373, + 3843370080028366, + 948200508094375, + 3940015221653150, + 998737702065557, + 1233976046093109, + 3650239101722340, + 444472251148221, + 2444151218117389, + 1876011789347479, + 202762561869142, + 29410299819027, + 1817926058134234, + 3532267456078576, + 3061058517206490, + 3632053725079403, + 1147561490929447, + 2555516052629660, + 1003251452642247, + 2089272292578337, + 2560150149258045, + 2540095662712233, + 377944596474096, + 1365850768200380, + 373730273035443, + 2840279462165328, + 3560340213917723, + 2308269971659502, + 464925255565242, + 668575865363975, + 2306213701672755, + 822958953518620, + 2237602668513990, + 3634683020062441, + 1726018910049595, + 2638129730246948, + 3059239788379933, + 3851532410935835, + 1477072558535310, + 1768612072981433, + 795852859465538, + 3928767192389670, + 539864063384690, + 3766292887991247, + 4318569200454096, + 3738337045349904, + 2329716252129168, + 1295910343162955, + 475776934781502, + 1275115103454341, + 1348021820670293, + 822854876035830, + 164251309328345, + 2913273176531819, + 2902469047133472, + 2012418481813887, + 139786095064539, + 666845275906398, + 865330296297598, + 4292851599526345, + 1015951897664739, + 2595839322987804, + 2404493581498253, + 2933425851663815, + 881532670011286, + 3789323692371236, + 180320733428813, + 3491543760512561, + 1228896014321739, + 3423684164663967, + 2896448361574746, + 1670994814309086, + 1083760594161724, + 3760428732273670, + 1734066300091225, + 22826573016956, + 2717603235020685, + 3375195489144352, + 1499916568949265, + 2622134164624547, + 753558491680233, + 407769712812216, + 1859059666434800, + 1938883823295956, + 2825412887857012, + 3369763827576230, + 1187365601742241, + 1333286983731703, + 3642122955675198, + 3205069079281625, + 2915507998176702, + 950020605799477, + 94444527328001, + 3368993325002760, + 853735224105271, + 1464216350689596, + 1269204052937459, + 2472782564085964, + 2694933510148627, + 3245923284897879, + 1525986379205369, + 2522210279264017, + 1889725439873713, + 3836805827015666, + 4195738199626246, + 2703268453049898, + 2936577450320409, + 4398976675246663, + 921437979072973, + 3300534954104517, + 423550392369604, + 3875084498444884, + 1218134135273007, + 2600032723670328, + 3180612697569696, + 1236628172329721, + 231837906158397, + 4259791008102256, + 2657311223956117, + 1979637739982788, + 2079526843375660, + 3185507401759037, + 2334872707826309, + 2043457173321826, + 3715801004153193, + 3965364397815984, + 4284383081146130, + 1533770489164122, + 2434489387202873, + 2929789349963970, + 3837527771617802, + 2336373891491893, + 2003696471234777, + 3844088170798319, + 2138869773234389, + 1766737996020036, + 3503442491556488, + 3187072296801855, + 267320613077948, + 4408248803087933, + 2687951160191321, + 3921169295738131, + 1243860060918940, + 3169075958271306, + 422149525980475, + 1947754224798663, + 2057143827649265, + 1841299994448008, + 2242546515812594, + 2950918497253638, + 3448747311885028, + 1513925491165354, + 4382872011684785, + 1264430879647683, + 3519165910246680, + 637361925809750, + 2285082669920936, + 2412276091216411, + 1675426748567404, + 2913373215730649, + 1194869961928106, + 3553258573902238, + 3900409248641795, + 3053035144289961, + 2219939104874220, + 3940361992639237, + 1195030610628224, + 3515582533668489, + 642615270124162, + 2560955580516099, + 3701040210704633, + 1120210834355576, + 932581960185031, + 1612102822127228, + 1861720425747885, + 4106037882201511, + 418383061351320, + 1356922356476347, + 2612535756154018, + 342518324141113, + 1409708878970379, + 4191544041743601, + 4150084664669260, + 900413335035769, + 3567416547290554, + 4313780987770762, + 2384944775521597, + 3847334712732075, + 1177635093269997, + 1621235872802312, + 3118344555337897, + 3961136163461179, + 504479414113295, + 1095127501438878, + 2461994367049664, + 1613904364525371, + 1364828582114593, + 2805672652546304, + 536370164280837, + 3471714013449978, + 2586791149691072, + 3547002125264222, + 599631803341619, + 1455083179101460, + 1381487909102312, + 4175467175398832, + 1478442206292920, + 4487222723953136, + 3703178182650331, + 1605311608331432, + 4141627854001264, + 1090218112293802, + 1203478581787722, + 806159136113443, + 3650558145207619, + 540610319799388, + 1761654131624852, + 648859356784198, + 3505633889266239, + 3469124479879180, + 1678005368342233, + 2926948357882566, + 1177419756550564, + 741830023296226, + 321290743512725, + 364068706380024, + 450705438299021, + 816918925845726, + 4043310584417109, + 1771680549759626, + 810732627326971, + 397928540582747, + 1941527124065212, + 2332101547359708, + 2863192364696118, + 103748188004295, + 3921407034916055, + 519536994297349, + 2889699308774854, + 3549149602281281, + 235769434956596, + 2641554512090214, + 209712560193290, + 1785470009501429, + 2882686018723008, + 2105766720054299, + 1826422509236696, + 1261776222199923, + 4284601100114377, + 84520091356123, + 550736758574636, + 4031139144503391, + 2883363081963508, + 4350171586788539, + 2979779969642555, + 3462207946445815, + 3331088084923415, + 1133646664826108, + 2069827074027224, + 559356068888933, + 3597386391004198, + 3735941870665311, + 957376902122862, + 1714807225819842, + 3867930257143392, + 598325320872266, + 358440159512491, + 4481753934833440, + 4448642440594468, + 1142258777569786, + 423465128246274, + 1949245545564376, + 1130025740071418, + 910850691378238, + 3115092783238703, + 515266245498199, + 1793625374160618, + 153176468685601, + 3548874368433171, + 4212862000098212, + 1917938816396270, + 4371695152264374, + 919488532877080, + 1379976720821112, + 3924335946933332, + 3421613036719844, + 1174199043257585, + 796447159949925, + 2251355306703698, + 2285426494559781, + 756159869818888, + 380458539815689, + 1224251100541967, + 25911225301575, + 3962493858856760, + 2791390170240897, + 1235720083702413, + 4310715313794640, + 4260709957126459, + 1877089037638043, + 1807966933996348, + 1174503010723338, + 4166517540119665, + 1428088695940450, + 3633378993626782, + 1478493840232054, + 477953765298429, + 3144960059158803, + 493971528487059, + 2181971859435567, + 2848632550414078, + 2218436454956872, + 2275217997682077, + 576452331469474, + 1938103541529718, + 776864007863908, + 2277323508170218, + 1321660312643445, + 2793704231159985, + 466239643939469, + 1474849957070722, + 4397644493258036, + 2304910598572490, + 339933245851471, + 2312765335844751, + 2270142367995512, + 1207268275711430, + 3245586455206795, + 1317879076423017, + 935957604016719, + 1775393791412451, + 4319813266328057, + 4250132236131487, + 2116278704923096, + 653797506020403, + 3558274040405062, + 1402358905272551, + 3662530818945543, + 3586940459703350, + 2629199910749446, + 566450485056208, + 113883503118231, + 4331668880909358, + 4388415613613640, + 3403001000860843, + 736793083385816, + 4451490411282735, + 3551501707804737, + 2018007168568564, + 595506875142872, + 3266102729960239, + 1868703971126725, + 3989855784812280, + 3869758562894172, + 640712139194954, + 3306313808815393, + 1114803790810667, + 3228513488987126, + 818576395121811, + 477125974646451, + 1765273448328770, + 294597230558231, + 1163705329167756, + 4268684516239980, + 2940290325713611, + 3979238054653101, + 2526020757342129, + 554854847288450, + 705551105677385, + 4208525735119846, + 289663481392453, + 1518718120309856, + 4028939682630100, + 3282560324107440, + 2516317134291677, + 3947684627586500, + 36405954249920, + 751638374382630, + 3949207239021255, + 644282881005252, + 2064053231391808, + 3153672167017829, + 1649164539546871, + 4045160176934080, + 4375867418608601, + 4154657896444588, + 4181725118594178, + 156115815572554, + 1333097064127680, + 3972021058702356, + 758311200591271, + 2966321283563461, + 2838379688521142, + 3178607834666902, + 1048383780222818, + 2952212615728507, + 876932953028305, + 169754453222815, + 4265132459064764, + 3533472352176955, + 1350508820443212, + 549901026285800, + 1200998622263333, + 3333669654772867, + 2210777822236998, + 603805824693060, + 3588775466465807, + 2076025682780856, + 1566750462711647, + 1601528596987746, + 3108042506808770, + 3138652967173390, + 2659692030418585, + 3750425276596631, + 1195563255291917, + 2460565949942093, + 3202219571353795, + 1062168050953303, + 3835864458430009, + 2373676748825456, + 4040720827683513, + 410573390671137, + 3664553146303137, + 1752743543822555, + 3533751612658748, + 2104898473753896, + 87291235561818, + 3218357869165683, + 478555197370215, + 4432696381705590, + 4082392174899033, + 486961123075593, + 3315314946611668, + 3487144127860944, + 1381381918315738, + 2613147222699927, + 599333003852474, + 3364394559170710, + 2801452031620536, + 2309633071843564, + 2204871527801255, + 3208081356257707, + 1612212683897764, + 263969411684087, + 1687080441722622, + 139466627281454, + 1338724811595588, + 4043534821861884, + 30199857521175, + 2994962987613695, + 1184474096773606, + 4291251899991061, + 4238712729913963, + 1009286001381536, + 4039179015889256, + 892871668353724, + 1634647802465995, + 2016190448139575, + 3073037749795312, + 1396728453897550, + 1172743530157804, + 3151995039083217, + 397071918516104, + 826644294513452, + 1335829309927597, + 71101341969725, + 128235864721792, + 1679250949213196, + 3140846867131409, + 945325234357216, + 4145081570094025, + 793299362679717, + 135119205666426, + 135318046684342, + 1337451403686387, + 4190493913775404, + 2179516539779710, + 3090563796968334, + 2915465404599003, + 3923159122072434, + 2558821026834062, + 188666400641040, + 3889454568666889, + 2563462808400466, + 209439836846872, + 248344789279467, + 517436201471119, + 1029261762171821, + 800464700931521, + 1363107327448957, + 1392756502140836, + 985154815113812, + 3585710076703766, + 573384710966769, + 449944367102179, + 2314992290501516, + 2312502526152155, + 119385415429048, + 3876835488614735, + 2226963019544006, + 2597483549177891, + 1887015112240432, + 3947002199707407, + 1079086240497453, + 2510650622684432, + 4293786063091976, + 2487259605335265, + 800641129033339, + 2390447984074667, + 2368779885192520, + 34951193454269, + 2379044808767941, + 2426784256879929, + 2235961121534602, + 2617513184452984, + 3537593240132861, + 1416404134050509, + 1125500540230570, + 3801790179102259, + 963335225313351, + 4470136061622906, + 945947915685634, + 41415365365563, + 4219876312931454, + 2403820720949407, + 3790157068993941, + 1228140441593640, + 2304270554614904, + 584030141624508, + 245801154911813, + 1640446080791610, + 4321206172963687, + 2981222501289942, + 3575782539051221, + 3371961277833372, + 546706953445871, + 3259835019507453, + 620177834439618, + 1428084098814264, + 4467869423608668, + 656468103720591, + 990910142641427, + 2393362135853978, + 3210964519009057, + 2104552845530988, + 2152927333928173, + 622424146599999, + 1763363805163832, + 1106919982844345, + 327245133695546, + 1057328468503958, + 1881606419815972, + 1126378956396353, + 2586153887024523, + 2786388136790866, + 150944498034702, + 877206344685704, + 1692481845216308, + 1838859462434020, + 2473218569511136, + 3403445518738068, + 4221543784038680, + 818027149042898, + 2661423843774539, + 3136508356966620, + 577734588186421, + 2270292293719662, + 4018541132357913, + 3727019427815571, + 2455325560134680, + 4327593982550045, + 3294797607928362, + 508849163994517, + 2423946787532675, + 3946993222040870, + 2830491969990228, + 2458144197761150, + 1250098042446494, + 4082086990754433, + 2406645515550529, + 4436371540921370, + 3384959158135680, + 768325638738506, + 3656115120857742, + 486754843885653, + 2301945675160703, + 3416126479136112, + 1989368016942777, + 3692135658810966, + 765910448342867, + 4266719195821694, + 3655045378499282, + 197719766027042, + 3945824644044081, + 3199583461222169, + 407807534932613, + 337992990148467, + 3321556021124906, + 3721518397071575, + 4397962461663696, + 1268453522295281, + 3558639873649326, + 4412811188826447, + 4378138886608976, + 3229876371124878, + 3677962946276509, + 1730721250878641, + 1857209709779425, + 4153628748889490, + 4138362980279469, + 586163414537469, + 3082575393482252, + 2527810547493728, + 2671255463608437, + 2018024830867777, + 1335436190835223, + 4076373066770992, + 2763191179990110, + 4316007885659003, + 3922223324478549, + 884963950772710, + 1724361691660205, + 1742044537463516, + 3337708125188065, + 1394166045651921, + 2870290811231220, + 2536262165610338, + 497448062150007, + 4259645672490027, + 2564649430924784, + 3214609567495255, + 2146659805080059, + 3371936186762931, + 4444103870682789, + 1112397397195307, + 851414598689282, + 3810718947491027, + 1740921885058585, + 3072271517417043, + 4039354683668163, + 3972869312873660, + 2707485390528412, + 1722844004682215, + 1338548570418494, + 1964358439025036, + 779652845727362, + 1039923014322727, + 2167743887751740, + 2967054724394914, + 403638790336362, + 1518880688032005, + 856440939517023, + 4403716754242938, + 1503984911495200, + 2611749870678852, + 1974239931669560, + 3275797967833817, + 1810291369727518, + 3521137093648145, + 2624476876217563, + 38658845388594, + 2583816020173036, + 1441468493196705, + 2670733774672574, + 3152248252785085, + 625433662145319, + 3480627915328588, + 7974756145562, + 2658255747844850, + 1687344848512234, + 4324437197097514, + 669191868993992, + 144698348858934, + 451010751929411, + 2014855053468562, + 4276006549306835, + 1901737525908196, + 1344221793663231, + 3808419737280550, + 2540596497835946, + 1035144128886415, + 1691655684515003, + 201727880467225, + 1869987185124416, + 212494380210683, + 1597734565303061, + 182152827612240, + 62851682166052, + 78309198311590, + 2007829024388892, + 2889840251233843, + 3764035325717412, + 4453406622588421, + 108152663847930, + 2012890053405540, + 4173418199112680, + 2261314545430919, + 1243930288682270, + 3046839979496574, + 4217754121565577, + 1366135162302916, + 275713058037132, + 2497767848308927, + 3128775895701898, + 1893666142368550, + 3555641106747964, + 1164806115943430, + 2068283630115642, + 16203602188673, + 1444095701431515, + 753923140923698, + 1792824791631481, + 4453785286077470, + 65872671760046, + 2728766572019512, + 2913958094714039, + 4168158065250573, + 1786357491804085, + 921121665293439, + 2309591694680412, + 3082822192183747, + 4169794665757157, + 425263185432790, + 3796238408263593, + 1274423330068531, + 2171849234206271, + 600403243706820, + 3763839503063550, + 3170635432887370, + 646575278561626, + 2598483042000556, + 2222412916176596, + 655613570961435, + 4056078035322117, + 2131853329013226, + 1744535385297198, + 3094794895403881, + 3780664897320923, + 2159032591048687, + 3058552681269196, + 2428666542243272, + 1161444382578170, + 3911605385240322, + 1300023490307007, + 3023524464674938, + 3211831488989815, + 2974729993342899, + 3416331987616572, + 3597811831550197, + 15302908968964, + 3985563951481492, + 4412863975158543, + 1203779499950747, + 1830673919270425, + 1397952654475935, + 873033674364588, + 2068860179416050, + 262957844817156, + 2295260951923701, + 3389913372080050, + 1869713033101705, + 274365545623713, + 2696401889223799, + 4160937437037351, + 4032412114826848, + 944705134555978, + 2723266104320658, + 1166243156020441, + 2369545436599629, + 807655579711738, + 1241170546264361, + 1086547017584071, + 2895828749044288, + 3261244616242135, + 1530230288519015, + 2752341395790292, + 1190593108212478, + 237057983766198, + 3073320331877464, + 3655925789631731, + 1211438692330320, + 1543408214262123, + 1196269266043755, + 1926873529642363, + 2872560382572325, + 562885718397950, + 2650866963352644, + 1468026684970497, + 4366780060781489, + 1818140259611477, + 2690308049308927, + 2544357307349583, + 2686750141865997, + 3636560028343105, + 4396402506093000, + 232750466706608, + 3177955099770522, + 1722194605083839, + 1476990733216733, + 818333434397196, + 3185730112381560, + 1312736803706101, + 2539471867710418, + 4287919807084782, + 4085035018548328, + 3159702351670722, + 3200663959305588, + 4231214112569794, + 3381991131873306, + 2405634889620994, + 3143444615992275, + 3818120060630713, + 3204251748625481, + 3298206512438458, + 3407327247832980, + 3237331768181883, + 4129546603583700, + 4033056772974308, + 1230694065086274, + 96242725598593, + 1213853813848071, + 1547240859800855, + 647316582503826, + 1629504689769029, + 2491147600230310, + 1050732676878053, + 2198666711606020, + 1426584858510870, + 2024959312826110, + 1014339723371663, + 58616262779462, + 1518632012974562, + 4106171215733314, + 2493093896278814, + 2763245398829958, + 287097829225173, + 2285915421917970, + 1618511736817318, + 2768127808544480, + 425711623784460, + 3647097733690713, + 4430198917654645, + 1126682579466677, + 2030585403277763, + 1437355774585343, + 4106409535510484, + 83129388617563, + 20986693436846, + 1507864441263056, + 2195434449894827, + 466059829251166, + 605009714176511, + 157961176803606, + 3474209744383609, + 3488149748968443, + 4477700316097022, + 437548460033020, + 4309707910346365, + 3687074330245635, + 3165092892923026, + 3881130138203634, + 2839826018517115, + 3677007568993382, + 54054239235324, + 2980700764439371, + 3345643392902618, + 1475262597684452, + 3852838720384081, + 988015277315103, + 1668042406691893, + 2745582244806378, + 3922012574776341, + 2468522425798141, + 1028503797022575, + 4379206740316220, + 627648572559098, + 2349351191794999, + 3193838728406352, + 4202041837170689, + 1995412916531646, + 127171108157554, + 708089996903262, + 1231875725877279, + 2591706089806981, + 198840356694539, + 2011808019505705, + 1288430346974972, + 118806066356826, + 3248130710176174, + 3416942349930686, + 620287385641899, + 1137312903479899, + 2065904687390906, + 1971907568510727, + 1462372989155963, + 2772700931057136, + 1739113817790287, + 3582492359505809, + 3318604030682354, + 2695405550056514, + 3236138720411331, + 4240244852625670, + 949400296820225, + 2707759158217649, + 1036462650179678, + 1653890253688908, + 359167600755533, + 2197708695520697, + 2044664213267974, + 1679576488878934, + 2831516552865357, + 2321793481424725, + 1836164752928338, + 3862976351413454, + 150846306331895, + 2164094093268358, + 4355594912122535, + 2123419260028849, + 1439066306747799, + 3343021050528832, + 1529789077845082, + 2467371978225201, + 3855442623693792, + 4320468661617878, + 245295966436338, + 4267805343221079, + 412291536385112, + 780639389470681, + 2129280717241779, + 3011470869012795, + 3659871377449392, + 3450437044008751, + 2869473943578976, + 3000041957692781, + 795850933386110, + 4032705939794766, + 2486511811936199, + 3412330090914855, + 211028371225950, + 4250291748975831, + 3930727039705983, + 4276969007449138, + 3005060614280987, + 4138406638059758, + 132201998040383, + 337304327234829, + 2533238911948394, + 1673634401060001, + 4091320005040931, + 446310538056008, + 3518618416370532, + 1974380926373591, + 2217107765972643, + 4381965170544680, + 489472975159507, + 2825644715251491, + 1400179251006759, + 392437834080898, + 4106797117715901, + 691998550399587, + 338685968240879, + 2578541094858336, + 3248665037730705, + 2659662267275920, + 2927077055987660, + 2111564428673280, + 1268661294107542, + 2937263503124106, + 1450080462055384, + 3819252849217142, + 4159106696399987, + 3226769853891788, + 1327462054979482, + 3150479038704457, + 3636469300335382, + 3617489313588884, + 1468677010096900, + 3694844971525329, + 748511655939988, + 1902491682806844, + 868813009034297, + 3217654882350249, + 1975979401720510, + 829361612387443, + 983967323210646, + 2822412164566137, + 1697972540333787, + 3631749057777108, + 2917049889155157, + 1852420816078410, + 510843605585073, + 1517836549225988, + 165398274650734, + 803178032917234, + 2864778764381017, + 3732969275434776, + 2814159198988911, + 3577319008856102, + 2392630211635244, + 40862769686771, + 1371701357204938, + 1015571124107188, + 4209652346059290, + 1138796450469043, + 3028055815234234, + 207317414941537, + 3519979779516333, + 989541059667553, + 1272851323228188, + 45117050069974, + 113525624983099, + 2268291879015988, + 3859910782055698, + 2794176720315674, + 1304414820396520, + 3486105977536440, + 3319796933573610, + 3884505641083440, + 3471773177334097, + 1333430110010179, + 3505146627456823, + 3894493637049367, + 1475930899102206, + 3027083895353346, + 3025076694270895, + 2705376168449522, + 1307914830623331, + 1928848837401285, + 40967364483766, + 3042393351754586, + 3388997094321537, + 982794810156145, + 100197894833630, + 1646451057734197, + 1379465909207934, + 1037261368466099, + 382567409614461, + 2219176819383053, + 3152850958873436, + 3442191849273395, + 2687765701071005, + 491159153570577, + 579730208083189, + 1933550061126929, + 3078635413301863, + 3575243918273716, + 1060365302382646, + 1560070373640668, + 4237507295090402, + 3619229905617777, + 3275272717135360, + 4050455156306081, + 2858742974350672, + 943011486856088, + 2337281200343443, + 3282212196805604, + 2956970087194752, + 2356727970609735, + 2407887440149596, + 340975071694177, + 2565659995754658, + 2710536944296180, + 3795446357365289, + 3380954671723145, + 4054484783531201, + 2741622260233230, + 829249189617902, + 1369152730953296, + 1040660282332035, + 2533420725439032, + 3441649154897763, + 546187538004833, + 1167708743611967, + 237446618163500, + 896874745887944, + 1151628815685363, + 4078718179708427, + 2872347286874515, + 731498103301780, + 203470495993033, + 2013133391223366, + 3162796851115400, + 1594600231519713, + 51888336311750, + 3644218290861840, + 1311818794350191, + 57411568142951, + 4123137301818862, + 501385152615306, + 2407138182813397, + 3331370390193378, + 2809525832663807, + 3504020105436922, + 2569408987510119, + 2899927851699455, + 3620201293144376, + 2995327243418204, + 2754241131965165, + 3869991899709263, + 4078419445146160, + 857058500504466, + 4254312359524723, + 222173205287474, + 348167315196766, + 1667975277023964, + 4294312542358119, + 829912314450107, + 149840398101856, + 1797678556256158, + 3739527411986609, + 3430692235711507, + 2134313962087708, + 4051807807049097, + 37596744579040, + 1473117521200639, + 97916319430624, + 4004155968791692, + 1137932028056708, + 3468221637519022, + 3635243047016909, + 1966075931116451, + 1913519082555499, + 184995141339919, + 2204994527398937, + 4040373732603846, + 2296576518771122, + 2629487509712957, + 1614951811812375, + 4193840849694230, + 3602828094203035, + 3805388742338369, + 938751289928057, + 1792850222349928, + 3153001002558805, + 591405451339311, + 4219574100651833, + 1210918447864173, + 1647880707584826, + 942959420683129, + 3851362671543855, + 682016683904108, + 512455914500965, + 2762962730845784, + 2192887208421321, + 2402970605698794, + 1138542258745422, + 4032797111974632, + 1092404540203718, + 4210851311715354, + 1539335115586038, + 1294124716789419, + 1651667708747445, + 4364632935162048, + 1987286011836395, + 1239844583624823, + 2369653603050979, + 2124615633427500, + 1969064265081161, + 1243996957157228, + 4174624749761552, + 3861716497495263, + 745031829848170, + 3043665527502662, + 2023048447819974, + 2315538506217676, + 4496074732359569, + 3079348055109875, + 1791343122131183, + 4287303565280818, + 4397035430697868, + 752408957789092, + 2410907631288735, + 1135520964852330, + 4207971159093752, + 3143314682534930, + 763604143931186, + 3738884601027500, + 3159206273226503, + 389499354259953, + 2886557546128010, + 2300494583222442, + 667730978414338, + 1926958576916141, + 2402151656579904, + 64719262735497, + 1378715081015785, + 302992572421845, + 4015253461868760, + 186367786407562, + 1913220338391757, + 2451726611038136, + 3446928519399312, + 3067419066524390, + 2733174966802467, + 612225013256455, + 2828180910757574, + 1215226028960571, + 2804144362011047, + 4164318752321927, + 2969708795960193, + 2058965250590301, + 2338132024354398, + 1550617913220389, + 752946783011984, + 1883662664630807, + 4233071455882271, + 3863449694132582, + 871910275125107, + 3748363464815098, + 263116621464070, + 673601910497403, + 2538598902045213, + 4500666455673887, + 3451445429204299, + 3424353188798660, + 4246190543369286, + 1117115374595664, + 2472260492839178, + 1744901525947157, + 4199633689995763, + 1798182247224758, + 3752075303670699, + 1854190271743469, + 4019531369640567, + 1737848784690380, + 2906928894349315, + 2595766804874838, + 3281653181000063, + 968327197915995, + 1701616367754279, + 2077530115493074, + 1436850057680579, + 2670332750437900, + 7754783813569, + 1607847982955319, + 302768502077760, + 2385217279875332, + 2561777016061949, + 3258951520343028, + 89492807856636, + 24272840370060, + 1908031405268128, + 4354938385836442, + 3551237086579436, + 2373929632094993, + 796657881546171, + 3378905173045971, + 435955724112247, + 4202688528926554, + 184344318401443, + 2273672696877130, + 4224485750499717, + 1890604494205838, + 3395612616846995, + 187653308230371, + 362663359691742, + 2148935346793654, + 210468868383544, + 1526313061642077, + 112285938038451, + 1454307321949447, + 1015674471374211, + 1396660278686643, + 1503366731463084, + 3693274192967156, + 4342967313823946, + 1090615959992329, + 1002754740291430, + 1643093755220242, + 901733611523021, + 2790697295228353, + 2305287605841206, + 159627105513018, + 2690430129749339, + 1588458840771265, + 3858126697024305, + 2354386161151229, + 611883682889756, + 3440755662645019, + 2614002616302681, + 1006164367823954, + 3293032799223627, + 4051970683956281, + 1687167452478315, + 3924341375398089, + 1425481462099695, + 1652161488171982, + 3475397031672909, + 2886269205572744, + 120689880058406, + 1521724790748724, + 2929201263584062, + 536765959625582, + 65756306192684, + 1838783407711035, + 2007392169646562, + 3390217282871063, + 245140501002874, + 4302279835772319, + 633815950603351, + 70533868543200, + 2605678521432053, + 438566634659667, + 3800799551820116, + 4164539538480622, + 1349287303677923, + 1948713113234770, + 4312573984478132, + 2442584575263795, + 1762981591319951, + 460761909091245, + 1564318549550199, + 3186628169042525, + 4210604070613227, + 3221185523618880, + 3983739191975086, + 3445078110512493, + 870764023037911, + 113290577663715, + 3559179855562694, + 2013633708919059, + 3122490886441562, + 1619066296743829, + 930909140615426, + 845008623321713, + 1496856671281244, + 2893163993050870, + 2603328512383564, + 4443910499536448, + 269223828524503, + 3599304877516611, + 563571110524261, + 993929662141743, + 243649739266825, + 788484586677463, + 2595758067324806, + 3668845922837709, + 4395774112061307, + 2116260446598341, + 1576826079815642, + 2857070715866407, + 221127536789743, + 3963876760811803, + 242550452547703, + 2680946535021700, + 2485366106261460, + 1420679772517649, + 135234641901934, + 2360141621195858, + 970961775911438, + 3542212756816095, + 421832140873432, + 1620227933729328, + 1267309466359040, + 1462961575967938, + 479894493179811, + 1762749495080463, + 3757385116185251, + 508131970711543, + 4088819834332844, + 80355323330838, + 3299770006698034, + 2134911007047111, + 1788885702123472, + 4381428271037599, + 3906687542049618, + 4459171957618155, + 1040481877182947, + 3446804437872990, + 3839209457907046, + 3767967870423928, + 181553426647101, + 1198952162325777, + 3416205742273673, + 4457704765452698, + 2212203203657847, + 2458821164224800, + 3661080402356129, + 2659758785256646, + 320406215006686, + 4314457879786512, + 854147950140311, + 865851552928357, + 2484399851401252, + 2172117306128089, + 1285820793228211, + 2692683704562727, + 2404204949508637, + 1967555565283320, + 1980783707492627, + 3399023261578239, + 1289950939251781, + 3556639736186263, + 375113719096693, + 2191878003588968, + 1082571016291366, + 2855535578515678, + 2320786266519437, + 1627246901266061, + 1828085466243504, + 441612376485571, + 4251456111098812, + 3825490370970763, + 3695310920237899, + 1505423872648187, + 2701299802231823, + 2762478356319913, + 1215902277224396, + 2550268123549136, + 2288587074420628, + 682193197453047, + 257940553490735, + 16302146020293, + 3497864460782393, + 3263923285181932, + 4423329827807394, + 1004627047404742, + 2714374893985735, + 2734545488856976, + 3839919711335289, + 3884217079470284, + 1154997812093780, + 1681366155563047, + 3582822168816298, + 3329762628402682, + 4056613686966044, + 2372345954583224, + 2906907956840178, + 3378947922804286, + 3960831437026160, + 276777607537908, + 2816515289020632, + 3208079916704007, + 4415755284761596, + 1295166591140463, + 1954723538239814, + 946944371848080, + 3699099417983293, + 4484712580472282, + 4448647694910091, + 3114377026499829, + 2573680597938319, + 1711674238428277, + 500719855128474, + 4403587542308660, + 2884600699780262, + 3112252365548019, + 3834765393733377, + 3697822742368430, + 225183078852801, + 3272506531388355, + 3091175229184686, + 3821458261052170, + 498521515499699, + 2671562177611678, + 3029856030232566, + 1728959074287763, + 2555716745802978, + 4002815453394760, + 3710112680967621, + 1825022068691809, + 3403878689396385, + 3067697496709689, + 4295193616411000, + 2909280050300993, + 4457537628065371, + 134966624688646, + 873464471496914, + 171451322186924, + 4074385126282430, + 2198706325855349, + 1928216300968937, + 241774826552999, + 3379121110833174, + 974044274782874, + 1308073605435021, + 1874071637243922, + 1867527173414097, + 2104504319664991, + 3221138965881926, + 3619690693075991, + 3835949658241190, + 3731330729965634, + 1250344449099060, + 4401642455224138, + 1469720940185969, + 2137199104359251, + 3932359646214070, + 3789543856260742, + 1138651571009529, + 1075207649052849, + 263601113532156, + 529383379636332, + 2159547969409307, + 1362311194385004, + 3633360933038927, + 151362537353756, + 897774831595928, + 3463476140118103, + 3421717027000500, + 1976877888460522, + 1836775819872795, + 3043231718353387, + 2499059620511834, + 3962526833234280, + 776100992244075, + 2112960575792085, + 1518129949986200, + 2578771898646765, + 673063457282880, + 4195176596985952, + 3134924583005582, + 2837812679121787, + 754867559314447, + 3309732290552286, + 1082261853952230, + 852094985855557, + 2641871506658862, + 4093206408454265, + 2132047196022324, + 2236370126305153, + 3119617593309119, + 485410635562266, + 1769586989495574, + 791370124286867, + 749273726009437, + 285422014357482, + 2578627386920033, + 951991423086109, + 1450683123709941, + 2601185341092423, + 3325700773993586, + 4913317475434, + 4146512834453713, + 1865866829192004, + 1839700842015377, + 2104404920213147, + 926621503198203, + 108183275992174, + 52363447283551, + 4190452223627042, + 4248122836479297, + 4280983032963439, + 3942521655854789, + 627352116605331, + 1042100108157269, + 473075717154097, + 2717085835083786, + 3181068261318627, + 1060536869822302, + 60032392206910, + 2408065296303080, + 3911950281612482, + 1693965971575446, + 3904241787977967, + 831571512927616, + 723580689728430, + 239854899148180, + 4053087733399592, + 790232248921966, + 4343356040869437, + 1187715844119299, + 1462055016390961, + 1396169105370930, + 1553922736817752, + 2039141166815472, + 2016172555331076, + 1075490882566469, + 4272638532407757, + 2354855861346985, + 3463995529841149, + 2524377436861367, + 355756361177663, + 4391187813705374, + 581096070771712, + 2052439625452306, + 1264434050478915, + 2832391692928000, + 31791204633322, + 2595597645674355, + 3773881161900131, + 1201322799231255, + 1595899991898899, + 2477228889869770, + 2567462538473827, + 2251500920280196, + 3697661349083621, + 158643556341616, + 3525166121194689, + 630202367362774, + 540970534084845, + 2650260536473610, + 300255040996839, + 3729720245753711, + 1791770713225600, + 1227920367601915, + 4458222043865530, + 1032005420097305, + 2262525380936880, + 1378750197723398, + 4006235800766958, + 4282407365257460, + 384168810699249, + 897549226307545, + 2964385325009538, + 1396559082824235, + 3287990593077943, + 1661786825870680, + 2136630961515433, + 1930925876788629, + 3509649577053229, + 1248495255363806, + 3510240134477735, + 1338872261821337, + 1166122336656663, + 3889532293465511, + 746698123964615, + 2600319818744016, + 3225490430020749, + 3171195714663889, + 842211678943073, + 652015663585552, + 4036297053605911, + 1631013603028057, + 2509113075886930, + 4148442832203000, + 4250739585833945, + 3305559875346195, + 3947903198559829, + 3138139564007104, + 3807921158734652, + 4045213992551695, + 4443433420025176, + 181659343140030, + 3838290295121576, + 5153175892213, + 3684782852549553, + 1548790520353297, + 4379699907465547, + 3998171367249272, + 3177303161513559, + 1426116698260007, + 4359796095198995, + 253269332571461, + 2569872063789195, + 4410491552924180, + 2167698432451116, + 702033920458012, + 1291638123104533, + 3858409238937497, + 976037057152298, + 700602038824232, + 535476933591052, + 1093761740237606, + 1547072844066004, + 2588072724952255, + 2734397864199563, + 3163027882115474, + 3021117732976311, + 2841813199043560, + 1714725748469845, + 2181482355800400, + 1227966607127835, + 1594312778812370, + 4305230230473978, + 2499420870464946, + 1789428696592522, + 1315419917706777, + 2765393065952471, + 728248650067458, + 193284265769661, + 1837283923783431, + 2646909695541634, + 4025518145006350, + 3204681369501375, + 1877736355015989, + 1251665593446435, + 1447022811005685, + 3324297988633694, + 491991631912788, + 916290770213980, + 1164022012580617, + 2072587266903228, + 368436471443013, + 2904062672845626, + 4430568026497091, + 2397924561435101, + 69894115394711, + 4375412800314127, + 4273293355877501, + 2656291060808118, + 384744944956475, + 861988910199518, + 4140552161505801, + 4023144779716893, + 2747437716273990, + 1765432004702011, + 2144891313079205, + 20348761986212, + 1008778591168150, + 2836718670605164, + 3657003656788832, + 1254023849310903, + 3479066430062857, + 1826424086712935, + 2760734210063700, + 2885704812775218, + 2555981892999117, + 3156728773710626, + 4219580052703278, + 231981982700964, + 1410965157202569, + 4452510979677018, + 673158912822462, + 734344715628564, + 944928241641866, + 664577905759514, + 4369134033473093, + 3309697282684117, + 2705462946015821, + 2314470342241084, + 4363856120217945, + 1953871103046047, + 478053161012197, + 1834566655431150, + 3829382848783150, + 4145120662087189, + 1029970116757346, + 3698513340994864, + 4158540906021169, + 2845619140322743, + 3377605898802118, + 3278794240258429, + 921375043556656, + 1879109638253035, + 4385630118310033, + 2014774572673878, + 1090707290042204, + 1796045827483125, + 498630137284485, + 3146277612751734, + 3620517456607980, + 1891277811698773, + 202246328607973, + 988338881249926, + 1787053218892728, + 515842036350996, + 1006489926756701, + 500197294319400, + 2599526682214282, + 900461725508332, + 4494721997192736, + 74673761905785, + 1321245801944061, + 254871424004981, + 3988591462265451, + 1237284336517004, + 844997007026833, + 2672420384759784, + 3256788866713322, + 1596708748417383, + 698235821787122, + 2656068422938068, + 4501437174869826, + 710676869108354, + 220608913130104, + 4035409330619639, + 823107546245105, + 813351128447956, + 542965048598444, + 2256681540326677, + 4479066512140027, + 1488885585884949, + 3491811058747668, + 2012152523218104, + 2301980915677508, + 3939184110405624, + 2284773486371554, + 205519033666713, + 730943091075701, + 1499064736291924, + 35788310786018, + 2486526533836796, + 1441732355651720, + 1178597027266804, + 1772154630723208, + 108983156879924, + 1844289431859315, + 1885094005420639, + 3721358596046602, + 2187391403210609, + 2278640680218295, + 2172410372153066, + 1827846923152765, + 4354829570846830, + 268089985608371, + 537386614948851, + 232504595932018, + 2988526915787025, + 716452692458823, + 721571001790665, + 1418730527997858, + 3603507878190509, + 2518015680682418, + 4494844875400467, + 2708626472201503, + 2903652522401510, + 846803451048166, + 2159859746072181, + 988543098168073, + 108832808391660, + 946704721575771, + 581139667974659, + 237312596519765, + 1920045703294371, + 4391132716943284, + 3469942315623241, + 4163077631041344, + 2551026946255000, + 3324311955352838, + 519519259139994, + 2157209778080280, + 179785990374100, + 192317019365348, + 937011374333484, + 755823760524409, + 4236721838164580, + 3144252817584455, + 1092264457104387, + 1885337310202038, + 3863348989384210, + 892072845473655, + 877747923407953, + 3581361906819878, + 1722306479354291, + 959305921357749, + 3115467038886048, + 3868043601127964, + 740706930695389, + 3579647728474645, + 3010781685214212, + 1952650599027923, + 4380381774844676, + 3622689716216415, + 1208824757382569, + 99387274964983, + 464292148172763, + 2671944060868146, + 2647786885790107, + 885746237289738, + 1531039389586780, + 3109352618686708, + 1380843849962121, + 2022201218467432, + 2668958112189568, + 3483508470315333, + 2616621253835199, + 4088249117167820, + 2444689238400764, + 339560682876735, + 1243953618735403, + 748957229444048, + 2228723098551029, + 890683642371964, + 2123934264029173, + 1699278006868288, + 2969522314806096, + 3552891381571953, + 143099368611402, + 1537328981631582, + 3410975093959016, + 271463743675027, + 2207456999747035, + 1810726810553822, + 2549106753241550, + 2503326171160713, + 4433171383728512, + 285844218610281, + 1028784451587060, + 3426958012910890, + 15938083590326, + 2918789252292674, + 2407757575505283, + 1499308920724278, + 325827570931386, + 2039237023463718, + 2103839537644000, + 1617289623065878, + 1628160497962087, + 672238812313422, + 1064645312341136, + 2617106672346567, + 4343297893585912, + 3594311711739586, + 2030843054580133, + 2473911380401487, + 1226487165562487, + 3775522491457997, + 4271896189580046, + 3144433238958936, + 3630294448766330, + 972300623794432, + 1010035674028984, + 1729080795298526, + 4351403234818823, + 2292503810666366, + 3391820157555155, + 697320560038555, + 3934402412880726, + 2864950922508991, + 40256176711883, + 1286679321551069, + 628354970920231, + 436431751057012, + 2347137813472027, + 4149439134456094, + 1109191105774078, + 1387478282165119, + 30883514563484, + 803436361160899, + 2373013871500448, + 3547737768661417, + 1181788843781056, + 2654856901192822, + 1159754571534318, + 66407986317362, + 1962619877060827, + 643209398959522, + 2390136997586758, + 3987425557976073, + 4411563108914737, + 1842397872256361, + 4341854658467250, + 3988800757996488, + 3906918527511899, + 901373200627198, + 1688552377463139, + 1048063450999228, + 1533541803484287, + 1082257504200337, + 4158234905290292, + 4459837721603097, + 2329493177340980, + 3443832052486069, + 2232637736812981, + 247419437474131, + 760018064880790, + 3530040364996792, + 2912680872133407, + 434242201453324, + 1813565343513976, + 2389855566783407, + 881697265249479, + 3997498643751596, + 3476975440403378, + 3464234476707884, + 1801528864455535, + 3577585195869260, + 561342756717919, + 962125163652359, + 169941421391963, + 4372730025809927, + 1026802134267918, + 2583029476273456, + 2465690236911880, + 2347530633212138, + 3246991011168381, + 2275283782935376, + 1935408082891266, + 2382105907753941, + 3038620284815517, + 2892333130232060, + 2955774234872394, + 4220947432043323, + 1046860746580177, + 1831206774151809, + 4206661596772208, + 758959273985598, + 225080421669642, + 1477735476551399, + 694996034088403, + 489007627491790, + 2797099006509865, + 3189811520787631, + 2684830459977453, + 3946299379687614, + 3902540164546801, + 4467983782894142, + 2341329903613824, + 4291714478851238, + 4061705736948576, + 2908407398708063, + 510327838233799, + 629249124306381, + 4052622924112781, + 4437217323753675, + 854216252259653, + 1907314151043134, + 3707256561690057, + 819306010631739, + 4291950506627953, + 3911250373295558, + 4438138944913061, + 2910155916514297, + 1381202694358717, + 1848519055151291, + 1115075497320865, + 4316066213036599, + 3711035077867055, + 2974015865651566, + 73389773800014, + 1226273896629066, + 4192862511438568, + 2441497883940314, + 1939714059125065, + 1136381495525798, + 4282472536782070, + 3622711300309587, + 1271436604674765, + 1921909654941878, + 4452215802610993, + 2464659102095065, + 578689738184263, + 1734036873695976, + 3966359358371541, + 851769471167696, + 4377028835811026, + 868872258248654, + 283129148125101, + 4481666112541741, + 1203930798693319, + 2289815486972646, + 207299223457869, + 4496257178370393, + 3360455497018680, + 1187166110944990, + 2682824805545125, + 564459499315435, + 3561842632578676, + 1118872114617502, + 3285299169986076, + 3393945590804379, + 878764627807834, + 2975728776972178, + 70261361332881, + 2468108676674108, + 420872477306478, + 1024796185195979, + 1112968598898949, + 3122775211002926, + 2080916869335384, + 3744298523008784, + 3407440211259036, + 2316191602693869, + 1887369620112546, + 2446934502819040, + 4163832390133841, + 1719553442488113, + 4038631711191925, + 1513034364723061, + 705879250619821, + 1369415466180547, + 1585335861735923, + 1354761125195357, + 2383426353100466, + 1861342075205136, + 757275425218711, + 373344001977925, + 1433199810126729, + 4198756045515642, + 2648937272834555, + 3166057501556369, + 3417206092937628, + 4141483324423890, + 868337630426575, + 3220269114713080, + 3242181813586058, + 1662845139907622, + 3439017702005489, + 1001692138524712, + 4404174224930270, + 2184908790822355, + 1185429996786530, + 1939337582870111, + 472706003354053, + 3467871760288002, + 2679004685992183, + 324516207356613, + 4290041508999597, + 1616726745234631, + 1464673549679929, + 3387028962988243, + 986904077656467, + 3231760638734530, + 1120755995934050, + 591487460016053, + 3778411720375562, + 3377274435414646, + 1000366005027784, + 470488105540089, + 2245961250882316, + 3032696812445156, + 3563647770243798, + 3657773644883559, + 3590574205826689, + 2592060780734635, + 1508575480842031, + 899279451708800, + 3532347126767176, + 4099475628023647, + 235073108113031, + 1736693103331107, + 3141341612563719, + 549233401358127, + 432332565165596, + 514898055942271, + 677376819590651, + 4336381230797930, + 1720377809860829, + 3710044174946657, + 822088491908997, + 1764635549834107, + 75981879353960, + 2030506684538155, + 192531749593756, + 436807819782877, + 3360498467977500, + 2215039111534852, + 3114658765594043, + 115829676271821, + 1716125243970245, + 1712441151512034, + 1540681754679016, + 2446089930652234, + 1470819911251096, + 4131237848149473, + 2127955974549204, + 4327159830367113, + 2835255898231238, + 2090521140617680, + 4268808037420962, + 4212684675796670, + 3835580746010465, + 2284038818023716, + 1935718054577677, + 658831426980456, + 1743787585568820, + 3830321861643684, + 3288078122937886, + 1536650194262752, + 1400510736671356, + 53674691776341, + 2085832632835870, + 3683365119249375, + 4319616800853679, + 325838161899103, + 2081193210457273, + 2615413396464428, + 1167280958612257, + 3559142152924802, + 489725719630317, + 325498106276105, + 1207700949559975, + 111398334200969, + 2342714518463278, + 1731876874268205, + 1704855242485425, + 2199702769859972, + 211822862797868, + 4176170876540131, + 2508387967787961, + 3659892728651467, + 4235513475097808, + 4406515346997426, + 1567222423037075, + 2629702671194965, + 2922769598301071, + 3328273377081895, + 285553450837386, + 2557631555007839, + 2517410221964191, + 4068068349926413, + 1335250428732568, + 2678591639093673, + 3831497496058076, + 1277146721493183, + 1647605665453769, + 4235557862929116, + 3022677588103581, + 1085969767573696, + 3548041571341669, + 3857634757177957, + 4314035573541484, + 1973056934804837, + 1632498318679766, + 2638684226737652, + 3016299679380249, + 2206596474454654, + 632295525094423, + 1335280439453417, + 3533432140941638, + 1365210361917758, + 4262495799389241, + 3085361680304121, + 3508334744066452, + 4084963336729647, + 679172432035397, + 753338298426501, + 1709189845173887, + 2145146686065773, + 1932705217066893, + 155517449199363, + 3198972197605314, + 967970537309685, + 603729368586173, + 1457471720782833, + 1277134182089219, + 3286769673389322, + 2055187930159325, + 2475072343148241, + 4197047069289130, + 149972985148652, + 3234001263135139, + 840625976342611, + 385922305970683, + 4009874424355133, + 1779690660298435, + 2428627594309338, + 1964550809249112, + 1955025789076264, + 2047254404521651, + 1636228033140598, + 1276466859445373, + 1676359039341935, + 3865699654396886, + 1833280461620919, + 104351193952767, + 1255600854312754, + 1733656171626963, + 4233422870598209, + 1785659779089029, + 107229143576701, + 3332123133115302, + 3298827579124192, + 3921654115573649, + 3173652449692348, + 551299940045923, + 3923184999329381, + 1903365026948254, + 3046873835758512, + 126478043972538, + 3333536566344102, + 1020866332230228, + 3312083962044797, + 122270370091419, + 1021842297367312, + 4107467619655968, + 1720078035982878, + 1682480384659570, + 3523311808965744, + 4269528080161675, + 3121815936875327, + 3495058101122051, + 1323645322340681, + 2126716447829796, + 3085805050938422, + 3469464250381555, + 4453613389567556, + 1282994197226501, + 2632850887439836, + 2120859861808052, + 3229590711364830, + 1448449668367952, + 685387201506710, + 470886170620773, + 3523536561659430, + 2198563100430922, + 3404804161875814, + 2697341330500270, + 1482957221754967, + 1357566249436883, + 3466147099436127, + 2427593315374514, + 2080732145767095, + 1951807403478175, + 2961161258815, + 3623985135284534, + 926148742719842, + 278365300590587, + 2633599769485122, + 855485319777568, + 3433165004600948, + 3642534345569743, + 1758439869714871, + 3660298958735351, + 1298423040966609, + 4481394314755999, + 3811703657596951, + 4046589507411300, + 1620345326939618, + 3869139258071653, + 1445505304629048, + 1616782191084685, + 477550793987067, + 3997859494924590, + 2336331953377162, + 3073170951760357, + 202097077224546, + 3509259544010840, + 2645089075183644, + 631910384311653, + 807817178762666, + 3197132807577682, + 933541727004396, + 247045905451441, + 3868881626842145, + 543194027995863, + 2514247844716071, + 3868882084069232, + 1083752937710818, + 4431594790550245, + 1840777701659147, + 1511917081328166, + 2040745338382037, + 1839220253103265, + 4275938066072589, + 4207533451372717, + 2903127207197945, + 1523057242552348, + 1527075527143024, + 1024153545344996, + 2594886396117314, + 3787565675766481, + 3001316321000225, + 2060983053872002, + 83670592046657, + 2977191164040091, + 4072140917056723, + 718875932600140, + 183397832954730, + 4347672402666558, + 2837955923961752, + 3814263823465408, + 191299680896024, + 2210205166400847, + 3929303295771965, + 1243564321752173, + 1989795963470756, + 658688818204793, + 533324493448157, + 3214011385926722, + 3655459004865455, + 2529250443990330, + 4437884859116092, + 1418768162456874, + 2471430280825783, + 2153540930346866, + 1657526669204714, + 3633319971779771, + 1952909576847970, + 3067671382961710, + 930534465416597, + 2164650268713889, + 1878982714704101, + 68684709413373, + 729127468019200, + 4141489038062884, + 1951692092249421, + 3068919106698379, + 199703943118274, + 3408791464125004, + 1676340090761841, + 1878935056659848, + 1254733274833083, + 3016835933495112, + 2053162501765280, + 1271128143980253, + 1834477541676579, + 4284013096802412, + 3741057488040464, + 1909194885061353, + 2178515745384165, + 2678992391851014, + 2556823884016363, + 1134505806220423, + 3216832116475737, + 922768861112548, + 3055864459738483, + 510181965643326, + 71799556682717, + 1140536249343028, + 1460365999790019, + 2115514113722266, + 2939052253967585, + 2618556234696738, + 919331094289832, + 2362663776622974, + 696155287318371, + 1990512628922355, + 2881497146927919, + 2172113195130344, + 961283568346904, + 867718927949657, + 272090540666834, + 2272324787891511, + 61766157830135, + 1509488257108179, + 676425435578040, + 843374185469862, + 3899599123948396, + 902166915410189, + 437040088153778, + 3777515951634208, + 3170335390102166, + 998256561101764, + 2362226691273193, + 2756947048128342, + 2798035874884531, + 94912069861144, + 477937478087233, + 4213468182251272, + 792862583433727, + 1050809107707819, + 1025686634511375, + 2095360120124742, + 2767652742525523, + 2816985050095628, + 4208310587720562, + 3068908974404832, + 1931757401123608, + 1710454243619411, + 1150153797082440, + 411312251671612, + 1365118056846166, + 1078708530858011, + 981099916864211, + 763538615980685, + 3250586829310839, + 3974036371579281, + 289395997405626, + 1115306424546030, + 415235025281855, + 468566276948861, + 1324182940053228, + 3122619608444380, + 4343393793495938, + 759432980716914, + 3303220432633827, + 4309156388195393, + 2232920588281819, + 1791693616356798, + 764338456875263, + 3875165640565747, + 3039561110272720, + 1636735364150706, + 1640020187840141, + 2889104965774018, + 1624982859842615, + 3517864980044800, + 1750911031998965, + 432039918798011, + 2844409648470747, + 2989879831832154, + 3239472258380337, + 4258716512020792, + 4476137410048681, + 2999233517787496, + 2585980668730757, + 2235268623766081, + 468196931188093, + 120527543740693, + 2847837483664693, + 3218508595458173, + 1467780151842392, + 43589875044955, + 1719783515006217, + 2141708827622190, + 4117238146941036, + 681374839652496, + 89597624551065, + 465387299345915, + 2547170240030796, + 3193671765592576, + 3324039724012795, + 3272349328951632, + 2587653860215522, + 2310104020480547, + 3135836110764200, + 3330944652112013, + 105283648214050, + 1881467145274830, + 3518699581131689, + 3872033835800288, + 2613266570237323, + 4362096753472150, + 2605839139771872, + 1073570133425960, + 3757785328952663, + 1285661716267273, + 3974767701414705, + 2228103225876033, + 699791981020132, + 2668223331839433, + 3256885714826003, + 229011980234536, + 2362722238123296, + 582911819977274, + 3571685808144273, + 2071933904566951, + 1981372067826483, + 1998174381331093, + 1982147619958238, + 1054651383598765, + 2679171251143464, + 1025328327348530, + 3388272264462935, + 167422469592769, + 1516138761478064, + 3462204231486812, + 2860068620702138, + 838996805035380, + 653664139543493, + 712887982397973, + 2347314183690074, + 4405660663132624, + 4491347532508613, + 762407002685154, + 871275247241374, + 4478549914865122, + 1069617797886212, + 1279636593745381, + 3508522949186884, + 3867070714303749, + 2559699014718105, + 2996507952841799, + 2170404213038471, + 4196026827803391, + 1834609841615819, + 3597413908058738, + 1277571579691063, + 3239692740091121, + 590764941871504, + 2041293651280552, + 2539316926327047, + 2515823054992457, + 3482063184021455, + 2034636043244784, + 4384359895651209, + 1198220580451717, + 3422989598232299, + 72545652948508, + 3027763431878790, + 2452726742359765, + 3850598985353374, + 300181132330693, + 3696050577018990, + 4330505880826056, + 1388124754183807, + 2325527744712822, + 3785280802550380, + 700767976428418, + 1061322511081600, + 309941617946620, + 1038469955116287, + 1819569409474353, + 3549594031054383, + 4497500903210744, + 3863835368705074, + 385528005860092, + 2927604409480782, + 1040711580526856, + 1549601039769138, + 4028261559799674, + 3497477102736572, + 4317888760354322, + 630779820203220, + 204633002244210, + 1919932553029353, + 364692464239543, + 629965202895412, + 2328173272189402, + 3797979504920891, + 4371816208471586, + 3215859094916965, + 3042370411997657, + 3602427539753705, + 1766631992791082, + 3426152043288108, + 3133447697407262, + 846646033316157, + 1364019483138889, + 1621891167738518, + 3998897798929007, + 2973172171412291, + 298777958243117, + 1135830670660638, + 2571166044468768, + 1500066538213270, + 368963883986728, + 4364267536165406, + 2459123973431074, + 1555634133989108, + 3540164183748660, + 2461664394963967, + 2222370636118678, + 3422887393949642, + 1618940721225518, + 1450552876145337, + 1625959283550206, + 1951562274029430, + 3047212833987081, + 3751633841725561, + 2609518951657852, + 2083979963721018, + 2399842128978840, + 1660309368152900, + 1791252327825045, + 1785894246841445, + 4319732266241651, + 4454012166105101, + 3860431822160528, + 1434697542038982, + 644520552850933, + 813100312698981, + 3788838553875491, + 1182685724036405, + 1860654672810399, + 2878794865056949, + 831359734292832, + 3113892897439886, + 1005447869525278, + 645037897723716, + 1925551171232609, + 2216814245456751, + 2888225894626700, + 1460331921054624, + 1170687655301767, + 256540476889503, + 2602750125567427, + 1232887936408891, + 4493462266574317, + 4260689271706427, + 1137341341017796, + 2187169848171828, + 4220145764400724, + 2611092436215459, + 4489105611271897, + 1687785637568450, + 1892600865827340, + 926795206162783, + 2133074871870972, + 4013149822732407, + 717013728813605, + 3270100037408052, + 4482904193853653, + 4188429475932016, + 1157851953593457, + 287922497658974, + 1366638814103089, + 2021651957148234, + 701179611220983, + 2446132095487203, + 4220435949414866, + 501705431374069, + 2686624403535245, + 3924252493165890, + 2742505355636348, + 2386356718249500, + 2820709402065876, + 497829326429630, + 932135132689782, + 569047718589000, + 3520588277437518, + 2862446764794450, + 3782547220546299, + 1413916967935921, + 4300838328474265, + 1892946175318965, + 2895323993821619, + 170722726886711, + 3443092396699594, + 1637623366089029, + 3144963062087940, + 3639477804356762, + 4069553772626578, + 3728721325698585, + 3103466260026484, + 328310562407831, + 1731641031083326, + 1726809256165467, + 85337461582675, + 789888483722289, + 438598819714988, + 2415305687586276, + 448370093144368, + 2201313164082667, + 3866646520324359, + 183723034884310, + 2186540309321898, + 2266080520606077, + 644367290751649, + 2526685827947572, + 4158355880245646, + 1800237797446758, + 63785277945797, + 966471528452860, + 2476523807771878, + 1025985810624487, + 1493939202748837, + 375200385054039, + 1947395474225785, + 2662400812964078, + 289816994812770, + 567354858490495, + 2604864585938713, + 576542926093487, + 2367245847113240, + 1226177991135573, + 3017715824145186, + 1428419443657203, + 4141829332200195, + 2639181139753422, + 2712658234977775, + 1967536109774882, + 4416737242616132, + 3041863539233009, + 3728210344446626, + 483264609128756, + 2515921014165932, + 3562152366770662, + 3765384257699408, + 4344059441505375, + 3002197984882446, + 2443185869245122, + 3745864547917815, + 2342354118920923, + 4087049980255618, + 1944182902481397, + 4366200252948195, + 522193071048551, + 40257760938918, + 2452327813626449, + 3381469739772163, + 2188424701675863, + 4494981733154281, + 1395772419226157, + 1269717928960815, + 161756693719538, + 1758390299768564, + 4299820322456010, + 2764864317356532, + 1858966359780083, + 963153019227086, + 2605781668612707, + 3554894689837775, + 1886173375812091, + 1716125753088026, + 1172078611042063, + 1929558710569448, + 4300055632394527, + 3294619418258194, + 1145287845079535, + 3669633420074973, + 1017835838313941, + 3923974437360312, + 2932580166584107, + 116504440301700, + 4152205449735978, + 473651116831405, + 1803860826619258, + 1379331785091798, + 2730043002607185, + 2910450493990586, + 1526511388543724, + 2191121458957187, + 123276595376696, + 698451562390320, + 1902146118362158, + 2421275938279399, + 1807722288933361, + 2525674680772563, + 1229320356703807, + 3515763726878684, + 125569040238545, + 4148600964397409, + 1401536975592507, + 1159441210049420, + 1237480176807485, + 704035981331863, + 1292713285398474, + 1828611651565083, + 4029042553306104, + 2348361717457388, + 2714809747268948, + 3392502163780924, + 2180139998683362, + 2799622361576615, + 3572924523771147, + 2264703066456942, + 1292881909106693, + 1585177143107028, + 3441102929281954, + 3448017103072126, + 2595415361525311, + 1808386174720689, + 4385479362075262, + 4304604640096478, + 561255608922561, + 1673973840053000, + 3949606609960844, + 3256450200743635, + 1751792706180878, + 2717829845054703, + 4138740035926882, + 4007915459653782, + 2572452574199727, + 1412777833508350, + 449257915063253, + 3071717620559506, + 515703626812667, + 862641074411912, + 4333205324696196, + 1200486884418576, + 4108810932855714, + 775469317234017, + 1810627649070304, + 3216220905461659, + 4497557881350955, + 2116463884304308, + 2605502995208944, + 2141154090827225, + 2884911408161304, + 3371781736384342, + 1192008510226183, + 168268721231196, + 3253476096567062, + 21000924060675, + 2728112097260197, + 288501682067320, + 2014778885793311, + 778640174199504, + 1945518103461000, + 987365272804395, + 333212715411559, + 1920886138986868, + 4222924115061940, + 3786774938515658, + 2701752435903674, + 644484713200698, + 2073551577426973, + 4465415446193895, + 1377358354983072, + 445508390630394, + 164797560799626, + 3927039972539168, + 742937231966831, + 280594013595106, + 2942234006677133, + 1698722955594404, + 763976195233163, + 92976052341561, + 980348954489218, + 1660803567945416, + 2751405395008823, + 1667317993034393, + 3857063158298298, + 199843348523208, + 2410967854193828, + 2439551627917992, + 4053108451191428, + 4316479272761179, + 2353716535466902, + 2332423652931555, + 3648209094694983, + 294664493839310, + 1621454126789935, + 2344165246536387, + 270085346001786, + 477197352387040, + 2363560539851227, + 3773678990765820, + 2759003651892120, + 4408533513569168, + 4228728178450738, + 3152166915690168, + 948031537744712, + 3277359489742014, + 1591766979865142, + 91956332039518, + 125246530441220, + 2543180678406674, + 1885932968532916, + 2545760302311812, + 522331190196659, + 847486716133294, + 1672365147170188, + 1322108007419842, + 3423785939578839, + 1405776314724243, + 1681189482867263, + 787008225984193, + 565276843689191, + 261225741730223, + 550109575977926, + 2181006985087034, + 1440258109379677, + 1452303128449509, + 1482995025231293, + 3181414519211371, + 1523718280050795, + 1079473098653426, + 3969679928271065, + 2378236376509978, + 3168688319585765, + 3749226507426035, + 3852736289818184, + 4346663789645648, + 1672279784370728, + 3633652019895634, + 1650236060440234, + 824939516800964, + 4336880089822802, + 2793762757797739, + 4204770643256715, + 1167320626780714, + 1861132260453834, + 3486505362395410, + 1609280943192065, + 2882617727107947, + 2270908818200918, + 2270777174676267, + 2009728409442812, + 735695729137186, + 229074045277470, + 43672599058789, + 1252864661828889, + 3731890494101439, + 911410306955193, + 176434408741884, + 3913077902302732, + 352146968556736, + 4059547785245608, + 3927119073267467, + 3282356395500437, + 1485652279868962, + 2681501945970569, + 211502171378347, + 3583254899767662, + 2817526734626756, + 1850640312602720, + 4031336011203793, + 2007908250210161, + 107079965723945, + 3882973049642990, + 766199748006361, + 1257881347864191, + 3355534098725965, + 82303347209349, + 1283930982024271, + 2887804169324888, + 3213579858605372, + 3975337151371125, + 2368867314651081, + 3893537876539765, + 1008576675515174, + 1116347073341919, + 1069236485670849, + 740158978662524, + 2056975025177267, + 3165006263846386, + 845025557540351, + 1179940085203499, + 1628993461199272, + 3258449265866199, + 2869465022413330, + 2639825710150167, + 3694162215014789, + 2757703527558852, + 814095946616817, + 1519849194693047, + 2212325240816549, + 893222683303513, + 2826544065649629, + 157151428752250, + 2707663198006612, + 2717123490657333, + 3217344376128322, + 1926622632457777, + 3668464771775852, + 4406016068725870, + 3633658823145712, + 1040313238489172, + 3124283380393449, + 571782481581650, + 117396242456166, + 202872941908751, + 4127154028664, + 980431305691289, + 3649450864130435, + 182838698577187, + 3076308172630444, + 27154056556467, + 2892810411180233, + 2718493414198722, + 3390004304784480, + 1352994215233854, + 1387086323860651, + 4335269519232997, + 364064261902635, + 625966178684308, + 3181785949012454, + 25388166001841, + 3136761681113475, + 489524620712868, + 1771986053144416, + 1891258279701012, + 3680864215264944, + 2115166409305956, + 1893800103069459, + 2743740367727652, + 3376686818803714, + 3548706362467903, + 2177193464500104, + 2074245850366680, + 2442410823107824, + 3116959298537886, + 2159153505714484, + 3112469902604747, + 2752671404305618, + 2730796473628487, + 1052146161024652, + 4044645856063430, + 3309836584447394, + 1342258322772149, + 3163322496760524, + 521256479380750, + 4313225179029200, + 3493972592548844, + 2530619417467234, + 4026007505195513, + 1321725651336101, + 2938177934078747, + 2322933647825094, + 3476835521909886, + 3310077656774225, + 1762783974604900, + 4455723359727132, + 470689044927273, + 16270971248908, + 4281832184215790, + 703777932791187, + 2680784284240979, + 1247027636238156, + 4102174382392044, + 1026705980152291, + 4011490575728861, + 712734655985512, + 1309079366307269, + 1100042352483544, + 642989133772598, + 2254826761653702, + 3951996360461279, + 3080563388736065, + 3773553305194325, + 2820134413483405, + 4026014763959684, + 2254958359455901, + 3776652923316718, + 1246139611562216, + 1530568060050426, + 3409617770597370, + 1120751392261482, + 277519026130007, + 788723547662750, + 2345816531417671, + 1742375955009290, + 4385513553913980, + 3580790276802895, + 7947166850553, + 228919656786969, + 601906438752703, + 1061294816479649, + 2984020613498268, + 4130440234993380, + 4061008307348059, + 2285634497394359, + 2599028503052118, + 4502787960608390, + 790443854476047, + 1129196768100014, + 1331888470206147, + 4180609286903958, + 2236510011445557, + 899563270417340, + 1964384730575662, + 1547263217326199, + 2501520618893226, + 3535426565531944, + 2967399293799346, + 2961501203763787, + 2382355547876788, + 1924611671773672, + 3416407741067689, + 1536038735445259, + 3958723712858687, + 4282097804249220, + 2172840164983463, + 1130667975724406, + 2591232099806854, + 610194751358434, + 3777189058524178, + 110841572812649, + 2883901101112593, + 4245265664895134, + 4154875476306552, + 1292823792059881, + 1017735669136219, + 1102106266624098, + 3865513803414122, + 3940225400937842, + 322080406301861, + 2618974882860526, + 338629316411775, + 4351173459647030, + 1784569463094789, + 802665569122969, + 2775359410171857, + 1810111731547502, + 1319216124725792, + 2656618977500477, + 3770153819265304, + 1947073169683859, + 2363494342974532, + 4088106828730879, + 3426057937631753, + 2069351415514702, + 1624799139009537, + 2258219037448284, + 246914702840463, + 3719003476809417, + 3271015496661079, + 3952652507915121, + 994606174879809, + 2620021656612109, + 1178538030334534, + 3768149955251078, + 3495812270173481, + 944866141388928, + 321700680196287, + 1015644215721684, + 4452327684794478, + 4280488203473113, + 3749863903596070, + 2705453280638109, + 2171208631535115, + 909587343112378, + 4383771985575736, + 3189170211262812, + 2314797796172423, + 3883645707548009, + 1071077959943943, + 1496738191896533, + 454407000225011, + 406393953578976, + 1803765929061292, + 1809670090641645, + 3908222946016018, + 3762519415607220, + 3563800303009031, + 3777558205171077, + 3846626917597088, + 2329119278142334, + 3426634292968640, + 56618938560136, + 622545973848144, + 876458865289964, + 2114109501829654, + 510481060720911, + 4451668061355776, + 1502370655271617, + 1521055867202924, + 4039796649456669, + 587640445548571, + 2925843516416161, + 2683245804333548, + 2689088386354895, + 2868294879879283, + 1285955960404645, + 2975944117141004, + 4078851912503477, + 1718173520830656, + 441220697745653, + 67523618542056, + 4161641428288829, + 2174078567167771, + 697898631357313, + 2177038399298238, + 1650284934726513, + 1202350660585353, + 2648787321645239, + 2200724945398986, + 184380838691046, + 3342985023808228, + 487858155600926, + 63146478374109, + 4498401823887386, + 1756825552499889, + 4250333291753839, + 3468200613157298, + 2967968354852520, + 1052940686987981, + 844953993657533, + 1300787196144462, + 15191044350900, + 1524828893176070, + 3529081795852792, + 2218406587459568, + 3777350083953960, + 4154032352729565, + 2117719957820083, + 2690895876222593, + 778561536171379, + 3790764824907471, + 57243855114814, + 3864179743436518, + 4323487647251819, + 2399551920775521, + 3466698750655860, + 1679657015191360, + 4070374782185976, + 1446206104684263, + 1271854961341420, + 1327591728664766, + 2244300528903749, + 727945105897506, + 1434165668886905, + 922415823807928, + 614273993614133, + 1864184911741372, + 2999192330255702, + 3958098168210993, + 3516736799038736, + 2702857528313419, + 3247568566356933, + 1947193058314635, + 173792525033125, + 3538437069264947, + 1732026417429551, + 3228401830101200, + 2929295682123674, + 764972654203625, + 2725841431908468, + 2262155021676290, + 3171210896317150, + 3927983816722645, + 3609610919935655, + 1904345571605802, + 4384805992771128, + 320053938598857, + 28004351109988, + 1034982710385688, + 2001339424058947, + 4379577184002224, + 2933962461233672, + 831233287827165, + 3716481129452299, + 1119649202134375, + 1351346579991540, + 2435989042313524, + 2622534537483271, + 68900852518963, + 2638058297193816, + 3503856294980525, + 2447396418392343, + 3231949071894900, + 1541791943095117, + 1185373505706209, + 240350833312227, + 1599034782411326, + 510901037696312, + 1837415233573442, + 2740027915043329, + 766247025712399, + 2487147092197473, + 2134414474528196, + 1216236795207392, + 2317494952746181, + 2250433791988144, + 3386996628767859, + 4045926628519745, + 1374150755770097, + 556721722639311, + 744769212350486, + 1936278110267298, + 3849180789234338, + 2515279384574558, + 4312828608670917, + 1531734061449029, + 3249924590360734, + 4123515241463223, + 3284017254389337, + 3031160536528132, + 4438322383524125, + 3333614158946004, + 110666507828935, + 2229702587645271, + 1469996807380196, + 3019987124932892, + 1935171735010731, + 2284669596516016, + 2735356082594814, + 2268519175276284, + 2612334297789212, + 1670751392029297, + 1429856934076114, + 2971418437567984, + 2851551499811199, + 2340712786268738, + 255019084639781, + 3841108700318548, + 3670631558207926, + 2316508168511284, + 360742767383976, + 4295226195334403, + 2020994316504798, + 4298685824064234, + 924194637521289, + 947440232786773, + 1560802117600098, + 1689095599675401, + 1620935492453288, + 505642448212703, + 1520273360464044, + 519900396536499, + 2842234167631062, + 3557178892944717, + 1892354021908084, + 649125502192269, + 3801939525290156, + 2473166988248724, + 980535513026773, + 2959453456084501, + 24152414514145, + 2531137776329354, + 230414314233730, + 1955607126705663, + 1694140801109143, + 1598293977609630, + 2833461411008661, + 3840345798560349, + 3853351353994140, + 120411089492021, + 34428904056090, + 1956067622574201, + 2471710776234072, + 3586347986287142, + 3592230954332591, + 4379063611363301, + 2988998069877178, + 204209986468942, + 3008016533724418, + 3405545488923476, + 3650061994977793, + 2045829924641863, + 4183180898008243, + 73084002619811, + 980419662267282, + 1041992338182047, + 2804403952598764, + 2601595629734230, + 3279095084082558, + 160839311846719, + 2448483139898871, + 3859079417385570, + 1522371723914474, + 4452957961941744, + 3867158075542252, + 3505478292325635, + 2977238005950918, + 1589903782686446, + 1591422432480188, + 187203446040133, + 22610280862356, + 2626345261448867, + 1438580552385678, + 1841043545914591, + 253546154968261, + 3839695100465628, + 4276010438003236, + 400240222184003, + 2192762998823058, + 496237543149658, + 30395525430418, + 2793917197284075, + 1298565006324181, + 3106709610668432, + 2193218233417894, + 4328452465731142, + 2771154494157402, + 4350069802232589, + 1064405372699352, + 2325526639791971, + 1500725863612028, + 455103451972236, + 3165454624759473, + 3650620651300413, + 1387966049612868, + 3772295776456902, + 921579174000818, + 3764652799420086, + 726208559285304, + 4001618661424258, + 1308933185128663, + 2175352658849425, + 4301159635079096, + 3930787558349001, + 41698665002310, + 4207799035630992, + 1272913091828037, + 1612716904921543, + 142833602123322, + 1007506747822225, + 1305337580265522, + ]), + Polynomial::new([ + 671958250042108, + 1312627666544762, + 4332606660920129, + 1821003197252415, + 2285922025398637, + 1438275849490496, + 4356507793746795, + 2245812200775190, + 4346242097082517, + 2771106065502229, + 201457597350273, + 1710456223897454, + 1300985520846155, + 3063657298882193, + 3339768085465611, + 1687831868624388, + 2900368970909642, + 3043394074503474, + 2557045976610340, + 357452928356635, + 1224678141674590, + 1802958966792793, + 3718525661899373, + 1727955775594832, + 527225893784360, + 4325929753524902, + 1899505698815062, + 3675786007784133, + 2609233614967551, + 2436660868179168, + 771169422019084, + 56527004809039, + 297337474766351, + 1527362267459771, + 3017152398308783, + 3309629186265363, + 4303200523450231, + 1311451474492215, + 3958822817894175, + 4169448515104789, + 740747556336718, + 428539694613975, + 1461940550344357, + 145247257976176, + 4034063785675095, + 3242612584225712, + 4090193613246093, + 3647450747363017, + 1759614102999067, + 639686942156191, + 1999660079869003, + 3136545938553974, + 1436297751565018, + 4082494382595954, + 864592459196749, + 199320398734624, + 1723384329522278, + 2711565706772514, + 1764047661005982, + 932172586622775, + 1292035417822570, + 4246988170297543, + 4101391333988031, + 643961914221557, + 2747190388674902, + 2774436800382535, + 3459317744774138, + 3461443385275996, + 1988988549570227, + 2103822932190367, + 72296353227273, + 624930955187650, + 3019208727810812, + 730878235130950, + 68484824693307, + 3533762749837090, + 4153822346953592, + 1768681182359011, + 2823381420502145, + 1767515740923099, + 792586744252537, + 3063005313991924, + 1306784930382631, + 3687509261709383, + 2675404560581985, + 169863397195435, + 253943794138981, + 162139063975795, + 1106051760076028, + 3977539691173916, + 4338576725396565, + 2144106056134287, + 78938153870643, + 2334185003022557, + 2113941736447277, + 3764519768208444, + 1200830973121221, + 2921974793852661, + 2396895399290787, + 2002264490157406, + 322393677233420, + 858446718477869, + 1583358664153861, + 766236768835073, + 413328466993474, + 1107709915566959, + 1327122951565330, + 3360961225761675, + 1573454662238817, + 1818885640773838, + 856368343168286, + 2790136290136267, + 3784911169226509, + 2774202235249871, + 1666196217027528, + 3008046950020782, + 2054553514570440, + 2124351499704092, + 2369689835296798, + 4342393000197735, + 2401353841219799, + 807464936601583, + 2184632264359424, + 2725609801319218, + 3810091557632557, + 550361031908347, + 1226569580013607, + 3115202623950709, + 3296336801527821, + 1382278936495303, + 3744531880284007, + 2693219449754206, + 250205703714518, + 510657176158399, + 2302512048791373, + 78332433077788, + 881441014463773, + 2867353682057650, + 305157627805016, + 1346435327476011, + 834993933271298, + 4154943877272115, + 3449963479758726, + 1582906900614225, + 2660902430497346, + 3225419612052241, + 2590102867163653, + 1642993692559410, + 3216430294402463, + 1895946695255018, + 819225581533887, + 267842909417836, + 2204322004612750, + 447031680933442, + 2880966664806975, + 404609379732798, + 719936217089580, + 2997155119465201, + 2512639162325635, + 2355038639287644, + 3402721104608536, + 4452822287478712, + 1867243759861136, + 3847444324617357, + 817219615046923, + 1201770202435820, + 59293339176046, + 2448448365482363, + 81686840798148, + 1510220222771729, + 2790697819924807, + 4069597060010950, + 3484193888852882, + 91252525821579, + 111327512603384, + 340890192516994, + 3844373928434336, + 4292137033294561, + 2651900002747543, + 4028667144960121, + 3429817796780142, + 394333610214393, + 310798837126183, + 4109225517328405, + 2523084436798224, + 3293677545451915, + 2086832940050712, + 805839576119383, + 2329230368848287, + 2470941005871867, + 3989456399489743, + 432147103215261, + 1092359582402719, + 2373318507644647, + 4092740572153440, + 3216981827684777, + 612020231466234, + 3941312448695136, + 1852064098831366, + 2608399931126808, + 2185101231820253, + 3249399494708496, + 4383331746777475, + 1180974178593343, + 385640465912454, + 2588641754415466, + 3065852619243481, + 52790211632195, + 1729471699993099, + 2627826011831392, + 2482711284883174, + 2982525254004164, + 2779253424571045, + 113126624161133, + 1297051596023919, + 1898710772975711, + 1312537402950275, + 4360342833584608, + 1344503779312384, + 3201542579929540, + 4234849498831224, + 1522207630313142, + 143273072934486, + 295721837352681, + 2130300742904410, + 4375446595004009, + 3912885976294815, + 1251340761964882, + 2715421916464369, + 578615454317614, + 2566145537302407, + 1905006541362720, + 1431503781646799, + 1322990521021595, + 3504835916687607, + 4397298121316791, + 3524588236622103, + 3374497927078657, + 3097042600723130, + 2974351168108327, + 3836674237865868, + 1037635699791048, + 212226651681395, + 533782676586389, + 1042525832986048, + 439845798916932, + 4273431235414756, + 18464084687243, + 313445752535960, + 1719829624756538, + 1899592749445553, + 694759747030610, + 1792844031621392, + 1739610599088921, + 576390129746213, + 3448384438048754, + 1667848293953172, + 749264737259264, + 1457585445111712, + 2500523675863579, + 3229557645567312, + 3768444111246850, + 883017226638185, + 851107424809890, + 2639685335693627, + 1939052722693134, + 4323471840229240, + 601511224775260, + 1984199457605843, + 2874298355521601, + 204798883286322, + 4447569606400529, + 1568707669088198, + 1417346151115459, + 3047894065449023, + 1426815297774681, + 4469420595045035, + 476416673979252, + 1911948292195963, + 1558757179364281, + 398038088908974, + 1522862257002908, + 3928800618151506, + 1714231959391455, + 291638245076357, + 519105997864856, + 1865200515458477, + 2998941962488854, + 3365548037698871, + 2228720461749802, + 2718957854556358, + 1454429721061814, + 69164889629125, + 1212440149044064, + 3474929794906368, + 3340716297135408, + 2867610396559296, + 376924718946412, + 3879783375298452, + 4263215121658267, + 2658267653960541, + 4485094383967665, + 431825723905828, + 3334490997785070, + 932998048540402, + 4140274781431178, + 1568630852809059, + 846785331807691, + 725747755860298, + 1345317688774594, + 1716650367842085, + 3883476587351724, + 2002440981729429, + 1322540565281978, + 1555233188712100, + 2993574835047563, + 1187695991250410, + 689461341136058, + 4309028888882859, + 1561468757557032, + 4174524928654632, + 4066180682515720, + 4324199445077279, + 3461888824334272, + 2447903886028580, + 3403943728561738, + 2269596685387404, + 1193306682495853, + 2176180434651286, + 2112131220679136, + 1233665044066227, + 3045945888832506, + 1066688036182613, + 149375087796090, + 3366943651674843, + 1933586790223581, + 1105891096454868, + 2293256371606338, + 3477264336101587, + 2681061217995886, + 1427843061018047, + 515814325116945, + 1520572516508588, + 3324304174988923, + 744112049512735, + 3531801585465501, + 1630858823191544, + 316000976449689, + 1068879791991661, + 1082770623356632, + 3532971492386966, + 2637627102271604, + 1647532645827846, + 4429744681409295, + 4258003194622988, + 2518898740733950, + 1499280122144481, + 1141639310475708, + 3962979104703059, + 1202663970186519, + 937976333431826, + 709420419574568, + 3679628895370187, + 1024541986279326, + 201701035322738, + 3257450717851917, + 64291240916207, + 2269626536410028, + 1992429087838245, + 2717383829547505, + 3445088976881095, + 2437775976048364, + 750790164209488, + 4134293584484353, + 3420334100978923, + 73653487038582, + 3709470030819221, + 1589772758129429, + 985638190762165, + 70536340230075, + 1683783290281191, + 1720777583652192, + 2738664372135109, + 3097670024292670, + 1851926373608281, + 734249336262855, + 1620462153164431, + 1318799865359147, + 1475028243443558, + 805074188142301, + 3495078514973990, + 1938180276298471, + 4067510619346709, + 1486263008888893, + 3658503387393263, + 1954276924525647, + 3254283346263438, + 1023719450069508, + 1746924888439911, + 1491803126715153, + 1516203281512319, + 2858383417033857, + 3144029926566894, + 470277242881764, + 3095139085185942, + 171817995789565, + 2550661794985297, + 196246315451722, + 2630238468353140, + 4388943903679407, + 717338390378827, + 2331950870242935, + 2013749545551888, + 2286639329468456, + 2757913307617644, + 2664010062943003, + 2031317850600292, + 2746819277869310, + 3600689032236993, + 2129753151944476, + 2865794064401652, + 1097582720037629, + 1831864172596478, + 41047992704325, + 2924660647058295, + 3751621339974121, + 542321556503950, + 819613255342347, + 3102075540640415, + 2739318312948716, + 2635698318690212, + 833837627179701, + 3503212073566371, + 859103253828134, + 180125868800170, + 482783483588488, + 43252118835715, + 1164015687709460, + 3765147478555407, + 1627561376899854, + 563147905592704, + 4488778189391318, + 1113114104768952, + 2806574820563714, + 2141806174431930, + 72957235878729, + 2341481286355439, + 2763497591331289, + 3950302801290405, + 4290469448534495, + 514788736529296, + 1221511350483580, + 914442457909904, + 3930722519233613, + 1071648015571095, + 2475086036330938, + 2982581273480808, + 1944381863320243, + 1741612840168394, + 1161112594574494, + 3522865680078041, + 4093505538148166, + 3599459230468859, + 644900910969306, + 895321392860511, + 2696508247370979, + 1735714008145485, + 1287319964759473, + 542713844895180, + 1587523032620862, + 4279399630933143, + 112226296802946, + 3078648312180671, + 1475218048542721, + 1221250453064709, + 515221227337802, + 1502376926855578, + 1967904696567534, + 2644338520855664, + 3310763624827226, + 3812614860287750, + 1829929199232559, + 797183451701402, + 3338453521353614, + 4324593521107128, + 1949577973902014, + 2488394231798971, + 2707585803759886, + 3313778376229445, + 930110904848158, + 1992355854928822, + 1199996477098214, + 3189148566726185, + 1746528185883259, + 1191710252174703, + 2472518842760750, + 193593780540104, + 3007587076219958, + 423917526129181, + 746483575910072, + 746224628101652, + 199839402925825, + 1241600978045469, + 2117880985335157, + 2535416613691422, + 2470846595659516, + 48040668831391, + 2673590123390566, + 3140378309732545, + 4180175024782355, + 4134826084476462, + 3256338639013490, + 1799853169778127, + 1525612942143189, + 588658479471436, + 3067179034980185, + 980943216545157, + 4284247139868378, + 455733814593731, + 3433241371058046, + 2317985760049911, + 1056052549268150, + 4154538824432774, + 2168258105018244, + 557075050334076, + 4316616025506681, + 2001167517306443, + 2767278493574092, + 1698635540604306, + 1822960319076789, + 2020795414188271, + 3907090078100244, + 4025559243504106, + 2369596514469061, + 3512585991274536, + 2121915367758213, + 839904747031898, + 1399124168795309, + 1265048795898332, + 1102752727343537, + 367727761805745, + 95328766358072, + 422110498275380, + 4308837343379369, + 2995315542798429, + 1241904682525483, + 1396926593153787, + 2244987095498331, + 1870272942880864, + 1569844529640370, + 3619087194196912, + 718913784547006, + 2444007408800039, + 3653413224395115, + 1108505067588571, + 2618326774811798, + 3931247793811918, + 3309732554501734, + 2198928018816642, + 783794601780551, + 2853018672708476, + 1833596780357396, + 2240951047440829, + 2086735467417622, + 1490854322220608, + 3868365770169326, + 568668615629729, + 1479961174423398, + 2064252654384184, + 4451212041772505, + 4146031716566478, + 3094422498910074, + 1165015535986407, + 3730739585078939, + 321822529366203, + 1943489097447466, + 2597649556454164, + 916988565323721, + 3391630048868754, + 1377602656096503, + 351155440072253, + 390934997810720, + 1638521095516131, + 3639978509684620, + 4060413674663869, + 2830853843050207, + 2253021439921345, + 2973891096482248, + 1637471372353562, + 892776170385199, + 4455598706388166, + 3710234465907593, + 2626781263232135, + 1338348629558250, + 3188257993667252, + 4371578742562057, + 504052348851177, + 910153813832884, + 208258532204242, + 1226851839067167, + 1680385578267706, + 1338503965448313, + 1486700094496402, + 672458712786925, + 1373497686116644, + 78976201078438, + 2521853266428435, + 2776451031613386, + 4104877010290281, + 2145035015415830, + 173466236989569, + 3476508541161473, + 469925970308251, + 3176589355657619, + 2986326515258628, + 1850899530288954, + 1869206034433648, + 353687007141418, + 2278392719755752, + 3285871309136554, + 2372197105902674, + 471679604168053, + 2122170403516989, + 4119567825413376, + 4299937106385578, + 3366075636031722, + 1774271669242129, + 111866166712873, + 2116391372755020, + 3256925835578742, + 213846881735621, + 194940070822653, + 3477843221972125, + 1691631851997681, + 4118032434817665, + 1352306617384360, + 1589454099497205, + 4503392300477861, + 4263111508270477, + 243150496765685, + 2625996443193795, + 1450891805033118, + 3648023453696423, + 3701474342988997, + 995446756254420, + 1838812983646068, + 602525172678994, + 2115022729305400, + 1216990279602408, + 905022288568053, + 1238255635761400, + 2666019397685284, + 1071076227502233, + 3472079863148391, + 2950571066743194, + 1957466418892354, + 4398125057531521, + 150898182683862, + 727222590318574, + 3321563520503060, + 4111041184042387, + 2893649238519869, + 898875787548313, + 3166351971707817, + 412830389126405, + 4076553167045513, + 392147891655921, + 3349819367393097, + 1355458125406603, + 848929234371398, + 943979133137679, + 2420747328879559, + 285823933137495, + 2900776313974508, + 2886143717551463, + 371585954257137, + 229121742183938, + 888160337693110, + 1477570276294775, + 1509098877278179, + 3558101623493114, + 4460918413252729, + 3439290306253449, + 316577447853940, + 3697301229948685, + 1902933108043179, + 2161889865149136, + 1224783248675770, + 3741383991659952, + 3114558364267901, + 3855056203041265, + 2586757959734158, + 1988401283206867, + 496088737002195, + 3540378310156383, + 2389924419274547, + 2516172531587400, + 2656944036611371, + 3434501343477105, + 4412621099350295, + 794100228392009, + 2498481297291799, + 1408291580795959, + 1246656078238016, + 313208828558562, + 3021638182989046, + 761627421415032, + 1537163260195157, + 2517688074684974, + 1690972957320833, + 902140878314104, + 1112387912928468, + 3328308520637356, + 825223949955200, + 2791096648871392, + 1842874051617295, + 2944276205941345, + 4376902941857396, + 1764360077069861, + 940563414078157, + 4112118292534961, + 2605415598550199, + 4165926128867859, + 4215174586275605, + 3130757172754659, + 1168714616848481, + 315315823495831, + 4105500954151316, + 299127034215231, + 1164031817090054, + 888097378588391, + 103964167564166, + 3514118660816927, + 971040216820724, + 4285435696211234, + 3063719360267894, + 4193203348021263, + 4479603756360492, + 3776268460882851, + 4024748719831191, + 4497375663211450, + 3211214436977992, + 883398792338174, + 4061815884696114, + 3397719519940796, + 2436438534859168, + 1905283831416401, + 2333631694912649, + 2593933602022149, + 166314016776906, + 731036274467524, + 281889505697766, + 4142492395527088, + 3165553613368264, + 2407952734448436, + 3346798451031847, + 2111501713130094, + 2254842655263184, + 1278998451046298, + 442517303095026, + 489694954004657, + 3368901932769815, + 664754942138070, + 1541180324962990, + 2063661087075040, + 3895916899069123, + 4047214195658603, + 4296861499754378, + 1889042930817596, + 1312624337195855, + 345038835046460, + 3682642792063793, + 2578944643301981, + 4130981914600449, + 1316842913735497, + 1486752596950240, + 848102486686309, + 731790587018884, + 729989447608460, + 2134535597327534, + 4356417554220391, + 1071314962581793, + 4268471376575033, + 1424675779890547, + 2380055925957718, + 3563408191671142, + 1351766827696959, + 2607353333923349, + 3089747276677396, + 3279686118647679, + 4273589915805736, + 2479392170685183, + 2717079578613904, + 1201240950470857, + 1778402839867505, + 4136369994111050, + 1886807530972394, + 941555578455056, + 1099885819353138, + 996550786046052, + 4430103683607960, + 3127659728188594, + 636473483892481, + 2967399803867670, + 2014630909130771, + 3316475136689288, + 1158614435768072, + 1372170951499149, + 3388031773641285, + 3037489095713433, + 2317896188823467, + 2317647416491634, + 1374178171861514, + 244521631170398, + 1767138657087896, + 2925598175680608, + 3191746148064565, + 3684571697652444, + 3165944612028254, + 3232104303671539, + 1074156353095923, + 2452359816776389, + 816958132588803, + 57002979508103, + 1351562769646628, + 3219176048121967, + 2478290839437598, + 3428821851363282, + 4446697052864166, + 1965910314239479, + 2241327245887009, + 2646515472757145, + 2327096874877140, + 2517061638149091, + 4315816665427937, + 285410073371491, + 1239562992194231, + 843310323666527, + 4357438057486816, + 334833324804677, + 494235236711977, + 2122794140059303, + 1099228277724481, + 2001410753303996, + 4284008308251032, + 3882125595039179, + 1667402643821101, + 3207031084202469, + 3189298897358682, + 505167121745344, + 4485183599881571, + 979245625786286, + 83497600685282, + 3090857828934633, + 1730419949549342, + 4014293947750023, + 3730509243144533, + 4301584921075367, + 870093150103657, + 802315359227166, + 1109436704115978, + 2597390402901733, + 3625167642856121, + 3607359513867469, + 2865996196349144, + 695645148798346, + 533558959489558, + 3904024111705445, + 1041236849647739, + 205175367974105, + 4290874868863520, + 649765639839842, + 146174250215609, + 3153644485258, + 623398955008726, + 1570457049237882, + 4349268784860840, + 4046701305241695, + 2108939563431655, + 1235865124727401, + 3749868145814918, + 2093334694343497, + 354670538264090, + 2869752410561693, + 252892173778364, + 2574866743301881, + 933385180425032, + 4421792171963708, + 600170844214581, + 4371968521447510, + 2768241408415648, + 2985399847565094, + 1320960368505552, + 2820399362014379, + 1419919788187429, + 1038948054254086, + 3565921008447608, + 4230678495425299, + 2537468302019269, + 2601890576616403, + 2525083971365948, + 1864331414187286, + 3250001505479432, + 4324812205242255, + 4024765831302774, + 1385353970659598, + 2449751570637032, + 1627472375993743, + 3312909362378182, + 2438531488578417, + 3139560585958243, + 2855787873795366, + 1946700845736596, + 1188492992722742, + 4394521197124381, + 607941413613604, + 3606636638318672, + 3577553955436537, + 2329380619152298, + 353672972971611, + 2545559768117579, + 3924372083494646, + 3646656316265301, + 2291791836185834, + 3001558271324235, + 1892604502128632, + 2492761969429128, + 4012458484926182, + 2922208883921624, + 3948938981420422, + 3694380206906488, + 2164769175140611, + 4254285729126918, + 1206207983927636, + 1702205069129478, + 2364739101283773, + 3313767011864061, + 3458670604576946, + 3468955552418342, + 4206943447888923, + 2155721351889328, + 836305678708928, + 673158222257693, + 2826382221420594, + 2183022208591496, + 2825573790674758, + 1301632742823890, + 1007069994670427, + 2708178635357042, + 4174520547726905, + 3967528087139447, + 2139784989659149, + 564739212160861, + 3915059967055851, + 2377378596848633, + 885454397602195, + 2662120475068992, + 1935872085418310, + 2152700467662625, + 4125209988757416, + 740689901827244, + 3932285854209413, + 1689629974263645, + 369332951457806, + 1024437911753993, + 4087848385483863, + 4340850409922428, + 2283448417909254, + 3373501662367191, + 428617876460986, + 4027510339027157, + 4442939508044267, + 1836282277507298, + 1100918150574587, + 1284807225949209, + 143236681693268, + 3089948107493565, + 4103328802459842, + 2806077034667598, + 3567942178158971, + 1910171977265411, + 1730067784105126, + 2193350146956853, + 3177178241054439, + 4247172558742020, + 2571047255690796, + 4099653347514673, + 1682186709650660, + 1517542617344564, + 3655417558812170, + 1177754142584719, + 3989506799954963, + 1122393057745857, + 2101035667214918, + 23782417991383, + 4118760775559662, + 1708574658394383, + 199237915783001, + 3540856120354153, + 3500056004145931, + 1599208659536023, + 287335486451868, + 2071943972779394, + 3239758495401211, + 2732849420149368, + 43891859768569, + 2621480115345491, + 4434074895771126, + 2025169496430906, + 3636588285994324, + 2770820574367572, + 3400457641297944, + 4188018828880603, + 1400149582494723, + 1350808822782991, + 2016975154072005, + 557429990459696, + 4234016930456745, + 2533760228147702, + 266043401477532, + 1744257706881266, + 1389270051238366, + 3552184533839883, + 4416300248669845, + 4059226551748224, + 3760966120930537, + 3129486096788324, + 4079685888247648, + 3439291674306035, + 149869000701064, + 2260201587285177, + 1192107557839771, + 2312375967178132, + 4493133458761612, + 1416924171776304, + 1865276720985917, + 1114814319171121, + 4255317656143594, + 2282808992918834, + 3636451723841812, + 1301561839179157, + 140069532213798, + 4362885748906592, + 4155500635852364, + 3102643805484263, + 2955830089288380, + 4067702637923122, + 4357277281960428, + 2188555899061595, + 3737482634797164, + 1130224855706766, + 932795168128169, + 2388845194401565, + 3434166285954202, + 2753511405350037, + 23546261866831, + 3885298489619299, + 2462100566051096, + 3566994582160632, + 4075392503694192, + 2300118841933103, + 4319980956988309, + 132025482251471, + 2424984927749646, + 2167202909514762, + 92186685564733, + 4311362628583521, + 2885165218944372, + 2041523791744966, + 2352056655852391, + 1608394511329936, + 2024374125399758, + 4265056568572590, + 1638238347433827, + 926742295132790, + 3163859334358274, + 95043499106106, + 1561481138492578, + 893920189676646, + 2744980878289096, + 2629508598279571, + 2017311217575157, + 3639349654934555, + 2243963895327159, + 3046898573726227, + 3538483041737592, + 4211606498575209, + 2955728303100696, + 2062128097886269, + 4458012124041909, + 505866648600944, + 3250883658512706, + 1492707187868534, + 1377004543012477, + 1600814164438981, + 3686909100082083, + 368363486963368, + 2537879430251881, + 955134073935273, + 977968232647430, + 1817088483365100, + 2564210039326616, + 3119935783995618, + 227227827113343, + 4084342826378098, + 1706323808112368, + 4069575315243138, + 329605078042707, + 2915852386401861, + 1034476454150358, + 264451230400494, + 947753372362217, + 3502986949496337, + 1580542214481531, + 663875814045436, + 322921185241684, + 4168250702678110, + 917227194179735, + 4020823177705277, + 3882889764590107, + 3616443493952992, + 280144751961359, + 3034224200080758, + 844649562562916, + 1140309515864212, + 2540391106648137, + 2493415661128439, + 2574836367085285, + 1025184218730285, + 2937442294973561, + 4184046324221492, + 2599383927322639, + 3166837362836681, + 1574305555825303, + 3955103725970328, + 96635974897151, + 3487968383776597, + 2989481686659970, + 4482678934374566, + 4131113110365218, + 1073229945719420, + 2377469679023329, + 1106048554732218, + 3264291525729338, + 267637376644504, + 109014914337194, + 3061540707181451, + 3557482174589729, + 3087046959799068, + 4290195531561120, + 2543896576252731, + 1885856394811772, + 2339689791618979, + 634780793903462, + 389269970257848, + 1950071686242639, + 1217613724272760, + 365839849980605, + 1867462824058990, + 1445449947508347, + 4140434482789022, + 2360236051915510, + 1195182685360734, + 1765060534868338, + 757390352820799, + 764771151309833, + 4025257994512671, + 3342146916371175, + 1112713432827921, + 1188455494817652, + 3204635405715821, + 4390920817788171, + 2559425984285092, + 39426317191067, + 3807237534016000, + 939193972560322, + 1753930768135007, + 1650939480034556, + 3760014524630898, + 1707635439271369, + 683776190411810, + 4345593738574872, + 593677646974189, + 781352025579779, + 2698478467029105, + 785071028006597, + 1351938650702928, + 2324780637218947, + 3577820642191028, + 3914715983412702, + 2097887590122309, + 4019153109710653, + 2871878449062731, + 4102936393734322, + 3936200104774758, + 4155531470176930, + 2105017451589642, + 831523624446997, + 2380695599042126, + 3901206846929745, + 2884696914901315, + 2374590402494912, + 3620218630725046, + 579695738825361, + 1776181185904982, + 1390613625526522, + 211416602836957, + 462040348306876, + 1182823412210627, + 2117153177424138, + 3540922629214853, + 2877399347884131, + 4089518425800091, + 3734769353561968, + 2431470168601464, + 428336256147168, + 4454344288668423, + 2606023028382589, + 4471822230575578, + 1644837600555860, + 4055860413574022, + 898003674288319, + 2596443401164872, + 4132126699976554, + 1877580370734698, + 4296307634586715, + 1014903224563196, + 3294164133069737, + 3481924227133149, + 1652667922588495, + 4193457048931812, + 2435745125128341, + 2808877655541363, + 684611851569933, + 164946717336308, + 1727058839096846, + 3677729320872339, + 4433100805949157, + 4106275284541683, + 1865959799707694, + 3058210321665326, + 3961658438605021, + 3402057054012922, + 2726227374144873, + 1066458015848578, + 2665604103319583, + 436362392787832, + 104845765507680, + 865089513752519, + 2689006803568650, + 1353899696697880, + 3456593797840677, + 990622533465443, + 1207599813768508, + 2645238405197163, + 373422986490275, + 4326983639468239, + 465786564535187, + 3135709809539849, + 2547126574080808, + 2506063030202113, + 2645116995656643, + 4164777004586853, + 4083157298397512, + 2170277472283555, + 3170555006279927, + 3474359817137705, + 3139968065597241, + 3139924503133498, + 2564763354588739, + 3745083355460799, + 2205178742070292, + 1126761939695563, + 2291722639144875, + 1656130254724019, + 4284946466016002, + 4160711333824617, + 2017809682382969, + 1905498605070476, + 990619516232933, + 1076284312385773, + 3900253125718166, + 2693280945798609, + 625733846674027, + 1315772637070062, + 3905598982413650, + 1840764134968027, + 925052141651765, + 1764703493838985, + 4502779971068862, + 3544155826544001, + 1928846827801529, + 3933223727300408, + 4138330602114152, + 447069550023240, + 436386214905584, + 782545226427378, + 2943404285347600, + 56086527147178, + 345004618976841, + 3015063524587645, + 2427849661624228, + 3853832672909187, + 3179457150908574, + 4178135659133381, + 3730774083951507, + 1413500403960360, + 3357192331210691, + 120783330812269, + 1142056375057806, + 2978932856000228, + 538864759548145, + 4006599035411512, + 4400925980853018, + 1531791559535225, + 2223953351448378, + 3300044917993038, + 306800295455080, + 185123704368680, + 2488836118118470, + 4362023172918522, + 2319759602014075, + 3764389390861762, + 2308134362963727, + 4254697971066881, + 2962198097071988, + 1675851250989645, + 944257733698919, + 547557111744454, + 1672950111324985, + 608960746448998, + 4302156863585977, + 179564415249432, + 120785517296287, + 4357268157170426, + 1083508751967037, + 2004791807916064, + 811112387979709, + 2336492253971447, + 2258821167547812, + 125963453716629, + 1117579803420045, + 3929197371169624, + 380683235949194, + 4053532343403649, + 1686115259562713, + 1795119334799097, + 2658699698981784, + 46813021174030, + 2041924096590530, + 2831998626603674, + 2396669741993037, + 1196253956342804, + 3883766569350467, + 1162800727796157, + 2007025231670171, + 801914130042516, + 246876764208431, + 4314366095746106, + 2353557979586723, + 2645192993222163, + 196583209433583, + 4352537327648449, + 2299264609194589, + 3981930613796713, + 3693322896135266, + 4001093293850794, + 1691630975712958, + 2343139286755328, + 1166047479039758, + 3479543725374260, + 3250875200324419, + 3130858739560013, + 1215367310607130, + 903910554725405, + 720066386804986, + 1890051280484258, + 2257480439769403, + 47572110851352, + 266555450810913, + 2214554279156740, + 2655855476059939, + 1795108127059911, + 1328895487895894, + 1702462114197412, + 2014582676230285, + 3761115173986069, + 3779417958330947, + 1172113962189283, + 2803553980858485, + 3010299452260862, + 3595139288272986, + 2352339966582184, + 4016194804480655, + 3606427288297488, + 1709973421533761, + 2553172545947494, + 1185783199279560, + 2616910647401962, + 1280866730848079, + 3949681476926320, + 3131806764992219, + 1871362859784121, + 2826667414362715, + 4195872880074413, + 1395805911043339, + 3742317758814915, + 4300306208536964, + 3111003977517814, + 1146995041757851, + 2298270787209132, + 3051790142383640, + 1048400931047972, + 1976178864633341, + 1632916360538794, + 883141294194318, + 787920862335123, + 873015609063612, + 1319477402406070, + 4480712655467438, + 208176796797829, + 2815281028796680, + 1327753911900671, + 536803306481657, + 1437905100065798, + 4462295519818468, + 2857684472009754, + 2357066934372774, + 1362148298888751, + 1621577345269617, + 3788460178226809, + 1351529485631880, + 803570419415595, + 2859388541245463, + 2056072459397219, + 1500338199733687, + 2919709798574064, + 347465470131664, + 1147130792537312, + 4147854691874138, + 1311096575060194, + 2763678608306043, + 2458777921506839, + 3316331206388487, + 3040917128165671, + 2033620008340181, + 2864498007730036, + 3555724249178146, + 975482012020398, + 3818934520311070, + 1099466954592635, + 4242348204072017, + 3671355702204128, + 1981217713285265, + 4312345755543440, + 4372094148187397, + 3557796575007022, + 879311729243070, + 3901109607031250, + 294538924516076, + 3243104605913077, + 2901243878846442, + 298899249874399, + 1412435566021261, + 2903731572360019, + 713121367213635, + 2790421236275204, + 2182999405117749, + 4179306696402075, + 3245677526568374, + 3585852139306258, + 4143740008419838, + 1679978367918513, + 925095932180800, + 2855843233603521, + 3334700230190571, + 1147677755143434, + 4457780003951198, + 507231012065715, + 284710309072476, + 2985752071646731, + 2817349525877810, + 2821765636791821, + 675199531686272, + 1810111435060548, + 4130635754146281, + 2150755473469004, + 4239880112499775, + 3565878297057586, + 4323590860137373, + 1797337965911382, + 989477124690970, + 2941621903180083, + 119017215995790, + 4295634927947661, + 2322004805345004, + 2159997654065408, + 3660779138215462, + 2359141193910423, + 2901102464524247, + 1850546726717343, + 3365054450073318, + 1294836663780465, + 4133454759680923, + 3997129346903644, + 4234391921593620, + 3438141700265240, + 4375640639203456, + 3068387646988233, + 2238357693535365, + 1550713103379855, + 2616874663190817, + 4377962805473396, + 2806697817075758, + 4033372212098323, + 584562523876696, + 2966169112155532, + 2832335465684312, + 4194349718136143, + 261403001213268, + 3830558002999593, + 2532517955011173, + 3558310250694977, + 4435416401627700, + 2514500261618912, + 2172032695426213, + 264438634748970, + 3925831936116911, + 2797356138463216, + 1100502070284967, + 976214868486153, + 181395185068822, + 3472770215736022, + 1056121944627980, + 255101665178607, + 1484200414972660, + 2761130693665046, + 757347412264519, + 3062110340462808, + 304619585003270, + 4452298759933920, + 2201575437057663, + 589456387885909, + 934943603620731, + 3427870686290801, + 705284225957398, + 324597591962502, + 2291617398205527, + 2433432074949636, + 1628522406258538, + 2618643931566800, + 133803245008189, + 2591826679047444, + 2129222807182673, + 3537737809821756, + 3927751762032432, + 4174483992517863, + 3539524878661121, + 4051154071324447, + 1605388729196143, + 3438011832583680, + 3039545091963596, + 3737487607944641, + 3037467525126250, + 4155115817693995, + 389712717948578, + 2676155787357382, + 1276221231058091, + 1843300631286833, + 4308728816209248, + 1571663519185203, + 4311183276611337, + 1962986844216168, + 2149967555818756, + 858805270967821, + 1616849154624876, + 4271847989276915, + 1307837135331625, + 4008300646497632, + 267112496087623, + 913605304031614, + 522261455439852, + 4253604169746785, + 1505050776354926, + 165884399043148, + 2139225055167386, + 3443504398606531, + 3679675704632737, + 3051806429659024, + 4259794454704434, + 3957219616032192, + 1495120835996649, + 194195844108703, + 307296753693813, + 241665313868799, + 2702177867593112, + 3539824623353946, + 2916648236544906, + 1265769264389056, + 890266409405256, + 4038439588666839, + 3648961029994097, + 2352466526945149, + 2412088556743456, + 4333785141569127, + 682716406784771, + 835048997125140, + 1535666825609566, + 1695176967930846, + 4268328775377192, + 2388834244216619, + 2865528990520098, + 2694689644065347, + 2191624149873985, + 3543169781691478, + 218625622050540, + 27412496999616, + 3120782908569984, + 2344659128463040, + 861092230682306, + 33130743121024, + 3024851825253081, + 1423260423593084, + 82886733679671, + 3608845002044913, + 3948918255588732, + 2629691707957179, + 2911045858168337, + 1425872518941216, + 3991097783260872, + 358244484765525, + 2693551819211535, + 464186547041719, + 1058605120516990, + 3816871132797133, + 1814076741017610, + 2975403797486726, + 2064187694569247, + 1694148873094098, + 2512786194366796, + 1858717367324902, + 4223678928565195, + 839245031636577, + 3277855925694737, + 3134365579354522, + 2199018708673373, + 3761998404916387, + 418587108010152, + 1776534603831383, + 3758124389609180, + 961678225831965, + 4262375624438088, + 1415961957567332, + 119690600402436, + 2728568882754145, + 340592213229526, + 3757700585814114, + 3219088930001009, + 2279401803443787, + 331603689259200, + 923085025115916, + 518367642400889, + 2815951323502659, + 4387041282870877, + 3499806959112365, + 2511366132442660, + 4192026321712036, + 2658431708672851, + 1010676298162236, + 198888768236900, + 3904294982619173, + 1223969839079636, + 1712270106084668, + 3865522611625496, + 1129748719798962, + 1343975300488350, + 676993534685956, + 219689361389412, + 278716328654484, + 1209794383196924, + 3635739613543430, + 2714414570422279, + 665750155961062, + 639964995102312, + 4191947292088948, + 4123652391281095, + 551228582685192, + 1526825015313001, + 1082553762942368, + 1930088223711914, + 489751543290629, + 8407691376099, + 427228574429520, + 1442582189292096, + 20505677233231, + 2841330571934512, + 3085239845782474, + 180535875962565, + 4475726502725047, + 582768963688797, + 1218955505609032, + 1741857854836600, + 1974658609524786, + 3117868392810637, + 914468596819179, + 3540446368390345, + 2304752668784706, + 2409064516238498, + 629976967202055, + 1426758606762310, + 1577550384345605, + 3095874688617255, + 4024588124408521, + 406884079912344, + 1413705377286859, + 2326058118290957, + 1286319346688786, + 4334697053777541, + 4070548954405037, + 4215336468410866, + 2351924454031495, + 2883613666646061, + 1901664413452571, + 3889872000467187, + 660575808497467, + 3251135302616045, + 3976972774807435, + 2347083722951746, + 3181664490352525, + 3338046853586151, + 268127447563068, + 265224022450290, + 3163834885862281, + 1145079193995966, + 3857875593766036, + 4120194857306882, + 3725400472803049, + 2280140153836393, + 2811781531079043, + 3308299018735151, + 153143123453311, + 3166599807525236, + 4288846077446659, + 1020011972487451, + 2989191282232456, + 4501472310807662, + 314119867807259, + 2899204517845152, + 2634439964046508, + 168466678357424, + 3433175232100211, + 238418882581695, + 2351849890809181, + 386891412008305, + 451035570879753, + 1531563705665152, + 4385710277419299, + 2804433047675577, + 180949875948529, + 1272757318984985, + 615554973902538, + 1850356811793835, + 3028553942896159, + 366376855202635, + 2616317481267862, + 504788230427754, + 1342398945346983, + 2672692552615562, + 3988643938030688, + 238071800890829, + 3018192597454413, + 1916374121246693, + 3881248706416099, + 4275844351700501, + 3204472173341078, + 1694746928021980, + 2361843977070893, + 4489633571799106, + 2260330291538622, + 3612168316540276, + 3793780485781842, + 1410867263880058, + 1167957342078089, + 531206296345510, + 3335409138996719, + 2530510881890561, + 3787608000195970, + 853380425400029, + 474150527194430, + 4152575581109892, + 989718694456027, + 790220671051482, + 3125106715778182, + 1123898250186407, + 3065603924044601, + 1041287841382251, + 2811554521410699, + 2112041257447463, + 1614105266908863, + 3534758194871465, + 965110561355130, + 2421705616626110, + 3264602854095402, + 183497381286684, + 3472324972311224, + 1275985943465195, + 147916279665590, + 1456202079653503, + 3026676631721203, + 2796953351908270, + 311634763648937, + 174940982121881, + 4402499710526175, + 3382639392074940, + 3667472546830057, + 613299630725156, + 3872076731275483, + 2786157920618664, + 1701433403519407, + 1805379639993189, + 3900997443496863, + 513711674644483, + 636902625261709, + 2751599578702778, + 3601832500701002, + 3030399664722315, + 343818652267772, + 1457490073306561, + 1255604544527776, + 2070499911133411, + 3926791805038047, + 840099084282821, + 945069675382407, + 1664623208895308, + 4285366693163756, + 2733491230987751, + 1984453505448373, + 3545180775502586, + 3628134961761368, + 119509678561094, + 3244416188142319, + 3817391010326862, + 4271911114987895, + 1479938591164123, + 550285010148179, + 580884132068854, + 420000401397439, + 2824169172013111, + 1977198982800903, + 3391753769308433, + 1381989018735496, + 3800955480531171, + 813585906394880, + 3625358256526502, + 3303993839627425, + 4254496875142172, + 1297374679806873, + 429061624136764, + 4394089970566052, + 483994884900031, + 342536929412883, + 3035964030841421, + 1588065069831275, + 3183833274788786, + 3253764286760680, + 4193967680874646, + 1818505704489857, + 492651569528805, + 3095371171419310, + 3008953848586127, + 688886983873366, + 1223618150996579, + 2292593832174932, + 3703509533789789, + 3446984252133907, + 433835255166536, + 2549666826927155, + 3638280543241422, + 1920413748914685, + 2838042057879742, + 4381853018235629, + 3381243954636823, + 4467732575838105, + 1830450112306933, + 4397038703773514, + 4167317221785190, + 2382682578982465, + 341659693058207, + 607288762933759, + 2263281877943437, + 3151794425438829, + 1565870888442505, + 908952330837866, + 916638803919922, + 3227927112443669, + 3384840033927973, + 1317169144594112, + 2252848830071421, + 482180076556020, + 452144138694406, + 2044852619002161, + 2531820659188053, + 847966941648600, + 4076293312284886, + 4303393641776232, + 1523739301953275, + 2621389998585711, + 4027182261779428, + 2000795545987700, + 780702661760249, + 1647317349629156, + 2435423731827483, + 902756481791756, + 3471083809852983, + 3512381904368800, + 4300217207884409, + 329663415332990, + 1595530934803739, + 3366162592164266, + 141726335225668, + 2008675623554986, + 3841270938137737, + 1730511232437674, + 1897202077421754, + 3713141014518669, + 3503328921382543, + 2156358840089010, + 959767577628055, + 2218961176969598, + 680370237665974, + 835932183127468, + 1830890881209324, + 3031951163798628, + 1379408817203416, + 2353593671470873, + 101639311727767, + 3878067175851284, + 1504168526239176, + 3463803619328718, + 4133165489767079, + 3676575484557679, + 1006117622510676, + 3128255285829804, + 1386214916853810, + 335444906950664, + 3895226024936655, + 2659980278012851, + 3340861212529102, + 652040817294744, + 3457112169366175, + 2227080788094826, + 433462895922480, + 1002251142373625, + 1308405694775237, + 3558084209882987, + 2142138018518384, + 3000409126108865, + 880678599753635, + 183536439938240, + 3495122204786186, + 4054622668870709, + 2558979753103932, + 2354468713172100, + 3568073580424953, + 999990440830921, + 1874773507245455, + 3207468675055446, + 3820562123921974, + 4072306700121637, + 916893433000659, + 788689741199582, + 4171132483492755, + 683375097363123, + 1146287677673529, + 1375646917734988, + 2322123094010471, + 2195996218923423, + 3522777001481017, + 3439593072276254, + 237710147154138, + 787995650436930, + 4306369662684117, + 3688864865755651, + 3525215376260843, + 3291744664740098, + 2579849936076720, + 1593586653609558, + 191139736660811, + 3835267526691255, + 329246676746070, + 415435647424428, + 4373853510584953, + 2158186115539593, + 816104240704973, + 2407922211124603, + 4391808302832797, + 2592724135081434, + 969761323663013, + 4097995349835590, + 3054239467814177, + 3179070223075593, + 485173940216530, + 4234090552167657, + 1946585125859676, + 196004542217303, + 3729213349499599, + 2522880950219929, + 1078645053227919, + 3019657727590780, + 1093534564673149, + 4120445013005317, + 1296907012823849, + 1839497868255059, + 1824268713219384, + 3098167088511584, + 402653205451728, + 3976560107317478, + 3964051625562075, + 1361108403484969, + 157129886538352, + 4493639570736325, + 2452022513353348, + 2820233018005846, + 932352550748997, + 1636728540941195, + 2177231820998521, + 1171723461036664, + 976839374314294, + 656337909394356, + 217432567981365, + 2966340020434933, + 2939796329616521, + 3285026717841785, + 2866335132011043, + 2050412171081956, + 1053801007699646, + 3414475776032769, + 938713923597171, + 4217376730910422, + 1351358729117492, + 806345650472393, + 962707164012663, + 4309470482967170, + 2649265295432980, + 1554744832427183, + 2001475423937811, + 192199514331295, + 112177333906722, + 973666116581731, + 2921320104680199, + 2270557586393376, + 4102016724465081, + 2317268903833620, + 3704762733122041, + 2055599838068270, + 1549897164941133, + 3818927233915094, + 2439517982998929, + 3415024697312796, + 944009098884192, + 2684841984883599, + 164539494290359, + 1102944891434928, + 3451066285484265, + 3349386441021997, + 4239421424494151, + 670511832170881, + 2205344537352573, + 3116976100824187, + 531513600153763, + 3290481236459177, + 190184060207735, + 25940382667357, + 2608370172960206, + 1801629348565688, + 2690837903864852, + 888983697652703, + 3608417367337717, + 3906781127067230, + 3832884762327071, + 3744750843507001, + 4341023704942924, + 162200485759571, + 2775380951529011, + 1930329974454209, + 2105826194508438, + 2336643556796315, + 3728881343736993, + 3871577057721471, + 2923908436190943, + 451043951462117, + 2741003575075095, + 1505163445915168, + 1321166534089993, + 2377764609197216, + 3715098546634408, + 2920508155060400, + 1778471742209764, + 4094586431751028, + 1063572725556242, + 2973710379897151, + 1046696749197514, + 953150368632380, + 513610169651257, + 3221235334542023, + 3462465929388422, + 2157724730556648, + 1638559234011736, + 1749584000709331, + 3706746401685403, + 225922079130387, + 1007456626964942, + 341289396034141, + 1937090034988480, + 3681677730245415, + 3481784635777333, + 2988281870983199, + 4185810949396091, + 1072465011850018, + 3844506721227637, + 4071661745415266, + 391643072067489, + 2573258086154175, + 4030192708114254, + 2877308048529871, + 2820297643820145, + 4195719324519116, + 4500361263506163, + 434225960875328, + 2954088922935085, + 1508381647764526, + 3985076685497304, + 4322165694629755, + 423076091663547, + 1890028674623470, + 1204549401047898, + 1805985199757964, + 3020981520807628, + 3412261635651355, + 3725980102136566, + 3967468372589975, + 4278506862974597, + 397358997394399, + 698591879586307, + 4452770168800514, + 2407110469918884, + 998847577287977, + 3374938468721557, + 1183796307701415, + 462737109829033, + 1599068049743913, + 1274852538549610, + 27007765431038, + 2692897049114690, + 2573023938958183, + 498491242762673, + 325957377862986, + 925762840423419, + 1020005202712915, + 2805862343547518, + 3521975873144992, + 2799028653941621, + 735713761707706, + 1924818353796184, + 3038029473954483, + 3724938193993006, + 3438412859896610, + 2842147938754240, + 3970700839996124, + 3363871972951385, + 4123004012000259, + 375107808857688, + 388011504410827, + 2654623525650404, + 3704595582586518, + 1047103338896295, + 2935633913462299, + 2515617474948745, + 840261242702307, + 1256492049159477, + 1605103734634389, + 3817137437136457, + 2591653756051805, + 83404534336548, + 3883900845326831, + 3074584510699692, + 1404274169027174, + 1641268213370346, + 1765070286156544, + 2430636620303312, + 2378237535955739, + 894156017838758, + 2398194847852338, + 392212826109673, + 2767582330316995, + 2339642964146755, + 2374540687012146, + 236599421729622, + 626708611655914, + 166762129584218, + 1645352033419812, + 522206009902430, + 3906914951559870, + 3286225838503859, + 3505842281092900, + 1396456966508452, + 3588209100592858, + 3302898166209228, + 102730122523397, + 792799931030685, + 3487333226947207, + 467342775794437, + 1076415416655934, + 2910942233274162, + 180228275494724, + 1283832302117246, + 147941132711093, + 3527319360306910, + 531268731677018, + 126708315172803, + 4446698307282428, + 3902110773990531, + 955398912809435, + 3023959922227698, + 1053421883460964, + 2353468534623938, + 4376657453670019, + 2890740249457835, + 678023377024944, + 1064757828447145, + 675472852239188, + 148150943840159, + 4311128822933219, + 4260693559899738, + 1902964819969071, + 3535780564948038, + 301268921685855, + 1053117271298370, + 3155977113492680, + 2368628449979231, + 4305669367896047, + 1510618925563265, + 654810148153585, + 467340052083782, + 4092920084434055, + 1973905026291474, + 385411841382007, + 1200074301541437, + 1399176574674574, + 7103511912156, + 1509173903601363, + 422331830335965, + 719924789047598, + 1808380318215149, + 1640711325862176, + 2035048427353617, + 3277739538863316, + 3145711993081993, + 2161404032492990, + 1167902258316343, + 1232482761593540, + 3971146495772135, + 1489742516244920, + 1281236156805760, + 4290775095219090, + 2394519411970540, + 4315871918745715, + 1560080757328863, + 4179017846933061, + 482491754438726, + 3820592220508760, + 3522200426205804, + 511902848334549, + 2175093164754600, + 371996074827243, + 3177765337969454, + 1904180170462413, + 3280736492380747, + 1639955595535376, + 1477928438280576, + 49146267646824, + 1629267493513052, + 2497860956832557, + 1728523543361230, + 3970676099655115, + 2330379153747118, + 2360327448915075, + 2756545529803653, + 4008701130271395, + 2451603679222428, + 1690040155438084, + 260078230533239, + 4421400074741067, + 244337453078712, + 3889905045410324, + 1315278202405933, + 4417121852783627, + 2010321445230700, + 3011142856053810, + 775073303275867, + 3311473945994366, + 2991028191341499, + 1432425670313815, + 2813177686833586, + 2945652006064624, + 1469134075032798, + 273370330673560, + 1667403972437632, + 471887228854359, + 2491746725497695, + 1405454736273237, + 3488477537317671, + 4326429264007787, + 3510412596549116, + 171053488509336, + 1423374801180763, + 1380339006699215, + 2896332307737042, + 2393833550879872, + 1616042429742807, + 3722198797770830, + 2479873281222918, + 2840091502556662, + 3316962433469217, + 562180581017784, + 2271954226855664, + 3971281634183902, + 1338136579820633, + 1113111084140309, + 1304976878840355, + 2394707717202367, + 2575333501787866, + 2252402613890935, + 2313148247993018, + 1982719155046440, + 1594648145176252, + 2388364818818565, + 513752431070869, + 3241524624078188, + 4091601740894261, + 4296852095197517, + 2048371710507528, + 2937242793784094, + 3783595162298390, + 609606926222277, + 1898573332551087, + 1999241442870040, + 4143476335510628, + 1587647519116250, + 1437588921577313, + 3736590755859738, + 3929978042488354, + 3681340981247183, + 2461612443099425, + 1872688306858423, + 2445323380536449, + 3726405548930302, + 1718078805020318, + 3449408546033986, + 4455977334285122, + 2206950612955409, + 2764347258236755, + 4395901098551970, + 131297960178414, + 56952885923985, + 90631481306268, + 2790756676045911, + 3064595792150684, + 215247659864672, + 4251687151563962, + 2700721964354042, + 652869122060996, + 647770821606983, + 1422078464617082, + 3344858484656143, + 891720478322224, + 2011091821679270, + 1164859345290593, + 1751486361447689, + 2874905381086079, + 400141737271872, + 3249522181492563, + 2313560757400964, + 3116881110328187, + 4070614693509376, + 321579148354302, + 2710725227531823, + 362958025601638, + 2621444967401363, + 1502517970268125, + 3760932536381848, + 3925928157883479, + 776367979200623, + 554483040308448, + 1393924471872290, + 3616790096753279, + 4131416824644849, + 3098922856798654, + 2327256439185527, + 2637067550746593, + 4185389345162569, + 3300606776665830, + 831908784146687, + 1375134749003772, + 4330026264672628, + 1198083173450831, + 3688751268895855, + 518839571638338, + 2538882749113373, + 3735130263052563, + 4387200912313562, + 1478558439146296, + 1958326765898187, + 2095733830830209, + 1530193421034502, + 3846552414345160, + 2686839064011630, + 2796716366915196, + 3780006946891060, + 1120910142797565, + 146988081020365, + 493873094590006, + 895295954336264, + 3071391760978930, + 4399180149756829, + 1163489849054197, + 381690949600683, + 4362475128751183, + 2057968283338058, + 2975076191510256, + 3110154106818663, + 2469321369266323, + 3472448204938103, + 3614953916091320, + 649641044812634, + 3229299039766123, + 1493269162845275, + 1064785485534465, + 840839837100688, + 676376681858262, + 345851083452972, + 4070164011918537, + 4407849821344220, + 3362513644713512, + 1535943776608429, + 695700895331383, + 2688828277659115, + 34095278567968, + 4449230767003418, + 2981816649550102, + 3679848092075407, + 555062698355175, + 650474975647851, + 794790809398894, + 3171849505700429, + 2732691526482344, + 525430085332557, + 2157389510489486, + 2516828329923950, + 2324563167871761, + 4478438105158041, + 1733871313026785, + 2521701473697054, + 614340085729110, + 4080783666451042, + 308038155374295, + 717172136589050, + 857611884812149, + 173537593979486, + 1657452669809132, + 653536373656866, + 904608270026661, + 494071903622242, + 4295665078322889, + 3718409132607723, + 1862261388105409, + 1475826964044795, + 1526277978828433, + 3295586069393243, + 104097935742790, + 1935587393701326, + 827464742418846, + 432302818387061, + 1111701937849007, + 2470756465483905, + 1600108666567892, + 952806148589942, + 4226906485394308, + 3695194136727288, + 3545766411054344, + 1791377957922317, + 1615008718017657, + 2547327446609277, + 2008504261274692, + 2255756234414687, + 3242077464369198, + 835996528840961, + 1781283151304632, + 1494851300020337, + 2028610466125491, + 2300314016352619, + 1673938107899323, + 2840069407199874, + 2358688003930755, + 123511431868581, + 689386942771470, + 1063534710479898, + 968025211569985, + 4113904373418146, + 3765766828408407, + 298114913015459, + 1375645918845508, + 1903318822054421, + 734143798696252, + 2774779549123006, + 1016654201757024, + 3994417036475081, + 4175675432214109, + 18487428243773, + 538092917190090, + 1020470297048897, + 1456906741900966, + 3541009100224291, + 348826035143763, + 4491394088191963, + 1148236128415443, + 4088637142821575, + 105764458424529, + 1702817029931109, + 554376807520166, + 2773489307770249, + 1960643400725263, + 3307782807787880, + 2060644411110702, + 2157371124056361, + 1231554931230459, + 2831161879006803, + 2371261979728085, + 2912113648367874, + 1414075476631970, + 1495415181441525, + 667286817406797, + 331809385200852, + 3503952278969389, + 2829180183400366, + 1153841106798599, + 3407466989119405, + 4451705400180907, + 4318394298584064, + 3084526333184482, + 3543611596186805, + 1603591505755333, + 2958520439589470, + 1826413018704152, + 3370811277659719, + 1136323638146993, + 3252887157519388, + 731415020111159, + 694468668178323, + 234512362068159, + 962107508205904, + 3922079500144868, + 3153259111107347, + 2891588922847062, + 3183542946084292, + 84209064354192, + 3095438862172748, + 3746434933804093, + 1643256280914841, + 790063241666932, + 82521320976018, + 4149475214923418, + 2725742589041280, + 2583098977780133, + 2240920160216851, + 2546868231840485, + 3064599272608091, + 3774364558811488, + 1650870893113546, + 385859120611499, + 606408958419180, + 393406371231122, + 32866205850778, + 2916779181372377, + 3630173874467122, + 668607578855377, + 1061103623765039, + 1850509497432817, + 2758495942175304, + 3094251665418991, + 3519075983116428, + 2531397949115340, + 389995009579969, + 3041434887773234, + 50945835411475, + 1163231005481355, + 712000066680069, + 4248394363924794, + 1200781835439677, + 752532528095078, + 968708916142256, + 1824270210290529, + 2971714417308867, + 839948637786803, + 4318128971608419, + 1983323606603277, + 4167486337249062, + 2417481984623226, + 4313256799124913, + 4436161618294476, + 3196308844639913, + 2063146412585781, + 2428433153449390, + 1200560497746238, + 4338848528548768, + 7727011139386, + 3617438893828398, + 2361420814367765, + 2797953636519891, + 3750636675984209, + 4249700022746014, + 1767496286830117, + 1733225097681212, + 4343246751606878, + 3460197488263825, + 2821373379137875, + 2504848164707652, + 4376834032562917, + 3776221550305199, + 1132039150226582, + 4393399969907216, + 4246636101200221, + 2222944032508575, + 698924470596794, + 1767199519903587, + 1667328342661587, + 3318611629646594, + 2979245259771663, + 2689043745258139, + 3448996073160925, + 1893402922116541, + 2841054606119788, + 2374095971530228, + 1727624529991885, + 2898878242465356, + 1854664141331447, + 4194071893339471, + 3856609433049284, + 1878108557833148, + 4405757422676552, + 3881148555096500, + 411742207284424, + 1618749701585913, + 1918336715408874, + 2714696607766036, + 2500582070727416, + 457098796062637, + 2695618082539190, + 2285539944762643, + 3343979334070625, + 3176431037420101, + 680434351298917, + 3386419769335387, + 4449926409837083, + 3156837031191105, + 2754574432450618, + 474352642562064, + 1028637641514302, + 570208458731245, + 4002201525800036, + 920547537521458, + 1510585284110298, + 4017292427726630, + 1839693602564685, + 4295750016764046, + 3096009801202394, + 159659488406623, + 4238898275070420, + 3477630812139991, + 2210599890587010, + 2118920718455799, + 1534698398906112, + 1258565346032786, + 3245418229714466, + 2086787777633883, + 1006057829431796, + 3605830115613485, + 1396219883906189, + 2537358191229033, + 4136787014528913, + 3547952552666682, + 15055130458328, + 4441468557716804, + 1754606357109857, + 129405890513487, + 2078944671260157, + 3400116967079557, + 4370463186028992, + 3125913142449296, + 764072578831493, + 643490577007615, + 745030541675510, + 2199380513137810, + 1272884693095899, + 922010219546437, + 333918867433770, + 4429372789025641, + 3534784572865163, + 4255466300788923, + 3873462953175859, + 4096487579537794, + 903706784765039, + 2169240294606136, + 2644584242151333, + 405840546473036, + 3306254497390921, + 4450505931338718, + 4491038602758549, + 2130264695300645, + 1957978068635263, + 2690829844627713, + 3385969383704189, + 1570132531020143, + 2392233856346985, + 1198200995547436, + 3708267539665946, + 2472429739210585, + 1773735248185299, + 4012026398526482, + 9035164342051, + 3968154024803331, + 3817336102080956, + 3070689747621682, + 1021673038893622, + 3573988925756371, + 869825037861449, + 3753744077523876, + 2191865033558019, + 3160116930635064, + 422634546377295, + 1162459595897055, + 1678128193616501, + 930636337590384, + 243252277270783, + 2403152067827673, + 4456759703178042, + 3969633544134752, + 1352132896383213, + 2575959611960305, + 464389956111872, + 2824504941933495, + 1132692727286749, + 2613310405216485, + 1861990929600457, + 4206117173182778, + 255549859490311, + 2419464496736548, + 926561318007743, + 4159592443710661, + 4283755756074831, + 632149041919037, + 2647833185669597, + 1902236031290918, + 2227190614241070, + 36277551231492, + 3740889767857808, + 600630679949200, + 4227603038137219, + 2372957686769607, + 357793622109969, + 2207822908607725, + 448777911505287, + 4105361494565203, + 1898590394973909, + 1373679040292505, + 3045934430941313, + 1804222288147140, + 3278866332324385, + 3192949380108473, + 3714853704762184, + 2617212016008261, + 1600636403100630, + 4449410679787604, + 1760430625372367, + 537086110179322, + 4489113543817974, + 60448704359185, + 3600508861381513, + 448149190802815, + 898755532293320, + 2928892673590921, + 2262387003335241, + 2639484173064132, + 4456103944007866, + 4086477958276658, + 1337271800968000, + 2775197160199844, + 2403612784405440, + 1541300049815022, + 1026897097607259, + 4394725188719839, + 3692545756127573, + 3129953952669788, + 332990529605931, + 1926057646437471, + 2437655431467496, + 2035473467121298, + 3454967210702141, + 296861945102772, + 641969851106447, + 1989630851754846, + 4183710697423966, + 1379527304259263, + 1430242726841021, + 3475238590268362, + 2422260649459804, + 2282170522706530, + 4240498982403839, + 137572971808601, + 3477498739093844, + 2389810223491904, + 1680623873929567, + 2648985336251949, + 3175434907114875, + 1070051572514720, + 3228710962352382, + 1097745577105018, + 3531662558692011, + 3223168879633820, + 2136350757993200, + 1315869521998510, + 1349809379149289, + 3463531615939756, + 3039542292824466, + 4217024822563262, + 602425666337825, + 826008882561824, + 4313768714386141, + 869194985537839, + 1154082693740785, + 4118437408047434, + 2249985486785201, + 2407482637895898, + 3588897538145751, + 2759813010294208, + 4108797535449295, + 719141229186692, + 2322861516458632, + 3905283119755073, + 3591591233100409, + 459255976860103, + 598560621762047, + 4085560731224049, + 3027990976291477, + 2109281067353415, + 3548574575327476, + 2208321273090114, + 916936756926691, + 4245780619433547, + 2385122493539138, + 1742822580560268, + 1527835462843100, + 2710219146074916, + 2421903771406652, + 579660742370026, + 2451864525152346, + 4389163189355101, + 1471982967001418, + 3341051299096041, + 4031917613753818, + 1642598102751376, + 383190808060614, + 687902000846432, + 1364969324331486, + 257333464889143, + 1579677870441703, + 512313057550514, + 3728568996215166, + 3385946804353032, + 3501451104855042, + 1214551557547425, + 1965989561145213, + 3625202912130381, + 3868904030993918, + 3832506688824848, + 4499050155593832, + 2613777028416536, + 484014297042520, + 1376400238163076, + 3260951541295671, + 3321363073747879, + 1867921783353114, + 796721664636553, + 2733243175135841, + 2003710986411269, + 2934577106999596, + 1217524729027774, + 1484702251452808, + 1766805706117054, + 4329086450178669, + 2288303137391940, + 243274314666012, + 53169699407563, + 1387465130092823, + 1695600429355539, + 294517702083786, + 3349569847131499, + 2884757666881247, + 2833471424801241, + 501142565757368, + 3338712999857455, + 1250401417957007, + 1190505630716710, + 3887192903426078, + 2786291404274165, + 821993611886346, + 4116177326010562, + 831542021711791, + 121804557177459, + 1750525170451251, + 3319162137681450, + 4351413146088633, + 3676463788810972, + 5548480041539, + 1073569892357410, + 3159732648153001, + 3959115935852150, + 1279655240491584, + 1670686657458803, + 2784320262566114, + 3610209305334362, + 670736588418485, + 4402537019695273, + 258863772622439, + 3309284061072325, + 2185243307429585, + 3151639646100620, + 65956505911382, + 2000185303626643, + 817698977177077, + 3142392999257407, + 527939311342313, + 802322105657836, + 4454874016250924, + 3764506128396685, + 3043562041415525, + 3154079743842479, + 4400651593132573, + 617125350576175, + 2651533712804376, + 1979848775850101, + 111250372668425, + 245711189342911, + 3063450754537833, + 1487410758563578, + 1710964701775748, + 1688828233007136, + 4329518322080340, + 515288721924069, + 1210057027367769, + 3085481618256945, + 4439380599024067, + 3466925583429035, + 3460767781912151, + 120214496676452, + 1226721039189768, + 3300403305598649, + 451973265329245, + 4191514070689410, + 3013949071978333, + 3783443669539956, + 395078184025053, + 2214358516008022, + 4053697062578, + 3956213188746525, + 2190003997518703, + 547431045685550, + 3530800083256848, + 1731501639922903, + 3583782779503445, + 4148580132594246, + 2468369101862286, + 2649064934440894, + 2409547506583316, + 4415650834820910, + 1171499880572485, + 352802158469713, + 3100752145253955, + 2960619427366700, + 2292163630725996, + 1864369384347220, + 3191490208923991, + 1693295593689636, + 2415817866849480, + 1303538748869515, + 3538574227562583, + 1939600143324935, + 4093241297728405, + 2138908106907059, + 3559449426845378, + 926317218089762, + 2017866175085303, + 1099876884229012, + 2151338925371664, + 168829426353588, + 2324143807612097, + 191842246137041, + 1518787271752472, + 3432122528846368, + 1214603155369021, + 2971256644502023, + 2290351817956951, + 1648877630454211, + 1046689250683204, + 1663926219956875, + 867259256656564, + 2508830528302946, + 1959235103860255, + 2665102737012905, + 909183652382046, + 2972115037932160, + 2186065024935105, + 2993307542893746, + 1041268817990223, + 1745467402358154, + 4074234342542863, + 3889312827896520, + 1069230285063030, + 1331090167476035, + 1667130346691935, + 1379193774332816, + 2000569542439545, + 2341973512234649, + 3787232530137437, + 685822204842616, + 940864106097101, + 4109644989229983, + 4207433100113832, + 3628876091520239, + 1915805136805644, + 1923382870942389, + 3794815312289685, + 4002381978278280, + 165944541084064, + 382772580661593, + 3121913973154311, + 371168476277015, + 3153602579121758, + 3640529306958427, + 3559905861092454, + 571981324931951, + 1889501243086801, + 1632754002087536, + 677649536597538, + 989723698438651, + 2304166849663023, + 1365147722385668, + 810335447596137, + 3514179197334422, + 2988600769763738, + 3185106243863679, + 513208540374279, + 662443457287182, + 562911630199235, + 397551138054237, + 2630437414885698, + 2970253695750101, + 3004464701272650, + 278843425040655, + 3891009240987818, + 1498164080018510, + 1582189381925302, + 1308646112272772, + 1517640418726920, + 1031639273508003, + 3471547104379199, + 1794640229967643, + 685001727432861, + 699559720048834, + 1159913574428616, + 3426252937110017, + 3083541559459038, + 686257783752730, + 899642703842376, + 2693265274683229, + 1324232324951616, + 68051210532642, + 1390767808038211, + 2822944880828843, + 138302125131416, + 1645731088289050, + 508557035232777, + 3763249818335251, + 202672102683363, + 1367934709740675, + 3100502379826137, + 4299806890107385, + 2901213029270567, + 3924480691802113, + 2039860425716987, + 959443490589003, + 2221782819287229, + 3757525239893382, + 4257202534321001, + 1752563805280340, + 2365591806770792, + 3804893275952905, + 2908674033794446, + 1068894434168492, + 1364951710789556, + 1756509264491648, + 2862293430352487, + 1416780445689123, + 523599240537600, + 1165815042356694, + 3613895080179636, + 4159863197635613, + 104551144871323, + 4253549305402536, + 4003453414490261, + 3966462497646915, + 1251157338922306, + 1947448359282265, + 999432328941280, + 1862980791970688, + 1816576364535649, + 2919444303406174, + 3746608769648147, + 1620006728757595, + 1416687940544528, + 3087940968809590, + 2181503374368068, + 2657947203163426, + 4370310083309585, + 3570032654030506, + 2405337390534677, + 2547440235139851, + 4442806046225298, + 831594439638178, + 1098231762022118, + 1105134605445486, + 794671676533431, + 2060111765126799, + 3284095876706260, + 725250801635591, + 3750063623228638, + 1620292887262745, + 2506266721449882, + 4469927409794694, + 3452116870865912, + 3633181633367446, + 1612847457842128, + 751379641640102, + 3936960399154661, + 2825854394663996, + 2254494964466252, + 3755970732673573, + 814804243193010, + 2663930136644216, + 3115584941390733, + 941412337532038, + 507387077566285, + 2910060384426238, + 658632462987014, + 3853785465593663, + 2559368502465271, + 1806753595880515, + 4357972366192493, + 4140077851136067, + 3360220710160084, + 1858826874224448, + 246145125207871, + 2204502750508596, + 1992739781684205, + 122167492939165, + 2438197187294339, + 1855423012866002, + 850336642461165, + 2520359485189818, + 2857559236483124, + 1950848434298503, + 1372976946629848, + 3039430045772290, + 2519585390098426, + 3946819695382982, + 4014112478887745, + 3172633998562618, + 1451486558282844, + 3425975557029449, + 2592698570337281, + 3817613780412683, + 3924016259194766, + 4046599139034816, + 1076733554312005, + 2683603699532058, + 388584555062762, + 41026174854438, + 856627232732333, + 3184342021725984, + 4339665047374790, + 4098555482672928, + 1588481709793168, + 1109062943961360, + 1691811314113580, + 1007561889143788, + 3162896481218629, + 1643418604918409, + 3014493226797206, + 1136921944142435, + 3726325559168896, + 1788763904989628, + 1684808204541961, + 2880962662342310, + 2102267221196376, + 46967248875555, + 2321505294769016, + 3491405460477846, + 1453710873662526, + 631676818650242, + 1029782447489739, + 4289071762757421, + 2458492632898843, + 75742447321783, + 4226479146072909, + 899681001371666, + 2142651574806194, + 1919367706466383, + 979118031716362, + 752543908882647, + 2044790452892114, + 1405902163935387, + 1052978321399362, + 3758555572365629, + 1287902472236145, + 2460946774924528, + 2560264633781285, + 2699794490642715, + 3878802450164382, + 3005272315668501, + 2038380804302280, + 1827046786192534, + 4492141748066112, + 2683051184507293, + 3460939884674375, + 2858800513555471, + 3834126338660024, + 2461436780399357, + 346647292122574, + 2796975912074113, + 2239339589186611, + 2968490016320969, + 3260381167161222, + 4259532064112551, + 1848247708954389, + 1334023822317161, + 3967654455752774, + 1180074658341482, + 4201906847552694, + 4365295552325505, + 4333827365467391, + 2421484195815243, + 3481855156445633, + 1197055286676694, + 4069831729295945, + 1120219052559333, + 3266954675621296, + 2228812726615288, + 3143603305945228, + 1337198487350151, + 4205039478660320, + 1653744661342375, + 1770478444689568, + 3030438119549743, + 2147047014583373, + 2543369988688137, + 3423242496861664, + 2396363032925527, + 3658482244826926, + 2474659542668280, + 1064839848688341, + 3861263049808083, + 3969128383231542, + 4362950516545080, + 447550320610167, + 3143991950577833, + 2761078438334002, + 2141740667581111, + 2359984964564886, + 3079616439604671, + 3663437299082902, + 1222040897860829, + 3142668618342021, + 2219667338749280, + 2100162003041108, + 2208116331602174, + 301696930523734, + 1213854244513155, + 2763101129205796, + 2735927494279615, + 3140621205896091, + 4368618548915836, + 3777751777299593, + 3121217056624074, + 4332308874358784, + 2615263204799256, + 2841882702212597, + 3687483368965492, + 2198370975106111, + 2235528739347819, + 2569209382760353, + 3717173686702631, + 4309063186658439, + 2422625293576606, + 1981696761817345, + 1360086698283874, + 833893146716061, + 3380092178731792, + 2195879853270504, + 3273493112710081, + 2381706847020021, + 424156262878756, + 1996482469002792, + 2194370116955678, + 2386783523487458, + 984189608533045, + 3350424915339568, + 1841483839347043, + 4350328564623521, + 935971675794045, + 279496104440536, + 620272303529311, + 4224283692468434, + 3236007982650155, + 2130554537196214, + 3986154508580228, + 2317022186412546, + 675037185118620, + 1384516160911630, + 3330737938930006, + 3451541820816587, + 3588498976476774, + 3173875439917973, + 2067839721989795, + 2151196808230725, + 3241681935430631, + 2865286150625051, + 2757276594765606, + 2235844070711439, + 4096511606833172, + 624997109289348, + 3541525722541463, + 3772526498128986, + 2855104069765410, + 181606004942040, + 1910816640119926, + 981470113873207, + 3243277951407425, + 3693458749072706, + 2224410980599887, + 2335674206203732, + 849147225351513, + 3719794547780578, + 3680355685422613, + 2587899173048704, + 1564560994937723, + 2451387061666335, + 3215953997549335, + 923123938416068, + 3299606885935160, + 3522206010213635, + 2488616157040654, + 3544784562194779, + 2864512735151783, + 1351923329570095, + 3361283864775708, + 1450925080218373, + 4371149810993191, + 2679494355235425, + 3516700629842024, + 897067086988383, + 3124624335370400, + 253825258946203, + 3216302700867694, + 2636959898754979, + 4302093453183472, + 1482807655159386, + 2671651938679468, + 3184962125153761, + 2638115270388567, + 1035223587364855, + 607131503398523, + 1298225118936456, + 3591024894200766, + 1123719955719990, + 350160372794321, + 1573954528889214, + 1816283588761655, + 4292435706940185, + 3695805436068969, + 2011939798109654, + 3016942050716925, + 565369026371914, + 3404234121129385, + 3573817556636050, + 875645495410375, + 2795068397668699, + 3662587955783857, + 3277704383293379, + 2475335554457350, + 605054332198518, + 3077301086615103, + 967939295748708, + 2568987633195199, + 1163525404174759, + 3413919125811862, + 1472757053568640, + 646476703571948, + 3857991762452330, + 2969805883060450, + 4232399145869118, + 3093378351579450, + 1266603260864116, + 309904781424693, + 2313450198397702, + 3110572546964129, + 3611139063247492, + 420599805952675, + 3294562278500867, + 836804917038658, + 718241681258390, + 2263564015872621, + 3910851220970867, + 606939574741891, + 1704906943453020, + 1296686521437925, + 1135142127397048, + 3708058684130315, + 308558397848906, + 502014317347307, + 3126831518343781, + 2946283253259609, + 4199119856990386, + 70888116676403, + 2052051925212833, + 1780368235292447, + 4353980955363459, + 3425997576490848, + 277383203031276, + 1976861749230635, + 3084020411189771, + 539038455103456, + 4256951984030088, + 3705733055736565, + 1378148894275483, + 1458531323811073, + 3732929605987368, + 882339246761118, + 3548160070917095, + 2901786338985949, + 3409453064515219, + 2184889383056848, + 2930697463844548, + 1320644230218577, + 625085204373128, + 2697334042149803, + 88755857451231, + 2710575660001788, + 1569095247400465, + 2981288283495597, + 388971166455785, + 3284623260754382, + 278358247871905, + 3276806255145492, + 1366726064210534, + 1278689339281283, + 1532533667851738, + 1072494203699704, + 1466045133492699, + 3215671778518344, + 2201379250257814, + 2890757030693099, + 3794030428396209, + 1238242035462442, + 4403290985007818, + 987691093485602, + 3525105695770874, + 3560334087001869, + 541200675413233, + 2856220698606888, + 25215670161610, + 3599796435230131, + 1943516840263611, + 3211822873988862, + 4340802995123036, + 2828653519487481, + 3115665613517022, + 4489972207503409, + 2399753510370517, + 4057214313745163, + 1550165751640173, + 59318796317171, + 4111549852818847, + 3764097237905167, + 1827623347630663, + 4236097297784077, + 405739051758843, + 4346772775841622, + 3760646300305163, + 717993335815889, + 1026113248010238, + 3582157953474885, + 2084809979925969, + 870959556662973, + 1833377139988407, + 2604756488291541, + 2671837241730820, + 4214661402366677, + 913148336655045, + 2451592546386679, + 1918566606351333, + 283127443261821, + 4143525764995237, + 2892967154363060, + 130515374304380, + 4181919257319879, + 2565508648803190, + 3863995355221445, + 2805242175868109, + 1312283950682413, + 2185674995458663, + 3179539598869849, + 3083238683412831, + 2396090500329201, + 3341622968148647, + 675265796991062, + 3739293359856109, + 600339456247988, + 2184204695276404, + 414920170598151, + 261682691149165, + 3000836966916098, + 3679611082348340, + 3440545051768703, + 622520004114334, + 2156651729518245, + 16476631919845, + 2264329256513082, + 3582250512295202, + 1224760360709207, + 2737798929041589, + 2807814663858898, + 692790072003445, + 1841553076617221, + 3344756514894440, + 1898166968794249, + 892988960935461, + 1280207019608860, + 4181105880399056, + 1329142377518607, + 2759087982973002, + 4189764213130642, + 3644908891354744, + 4229470442554403, + 4179310699459179, + 1102131061743595, + 1908965965667822, + 1823033747002735, + 1544949226863200, + 3019146297588185, + 3344972804601770, + 918792365875750, + 1420809501478618, + 2186667538108528, + 477129476698208, + 585433293283251, + 4412113625090637, + 2862574598565116, + 1937404041194263, + 2006256296654064, + 3654635699315969, + 4211415924768946, + 184673254138577, + 1411343843517972, + 710713844216918, + 2364710073698609, + 3013259015824260, + 4470046717391084, + 3958834595917467, + 1521518405512998, + 2119972298871782, + 152813174815057, + 3169637204366130, + 415098107872354, + 928606029951790, + 484829907461073, + 3023465470210367, + 2660011072551466, + 67366042650483, + 2001308218857949, + 2324386640085841, + 2681926440480552, + 4411278545206585, + 558395852941490, + 1252193831836291, + 1971261475346732, + 4304140835595962, + 2060597922206680, + 4338815425636704, + 1749625290001341, + 247919725937060, + 4346576207364650, + 2424333077618359, + 1630270900263628, + 3115490503190031, + 2324708502992126, + 2775017456083785, + 552915914604518, + 1564400139807726, + 21470400041091, + 379000931872696, + 3198266689371173, + 458590047852914, + 1328965821683454, + 2766159056172053, + 2210690214369443, + 1856941676838290, + 2837212045888995, + 1135941759276144, + 2999696908274917, + 2799014523760453, + 4331777634955341, + 4090503689563414, + 247215588752610, + 3929792355543947, + 444851811797234, + 416363286113093, + 2084378436280180, + 2687747941502732, + 841184587400291, + 258349428743977, + 1564372685452849, + 519657496575667, + 2661721562732632, + 2176626090328622, + 465478277021186, + 269759656597164, + 2955401233821090, + 1621785982768362, + 2055506432290405, + 1477719138548104, + 1853268016586092, + 773965423894550, + 3556919407891788, + 4104420308334803, + 1829346639746884, + 1740839676081768, + 2461957326568530, + 1686076685246945, + 2332842351448871, + 4255954301508390, + 3819774303767659, + 1496368519331851, + 3120762448890777, + 1818080100880463, + 1429688875015163, + 1112821321592333, + 1418911995358329, + 2865646467985451, + 953037730057326, + 1117435191415358, + 3560887084412013, + 588639760255677, + 3498625815357034, + 3676354873120063, + 1624478234473016, + 2716196991584697, + 73996856451177, + 3627012521657500, + 400115446012933, + 3092501793204782, + 1026550323105608, + 883887236441005, + 4042153105654670, + 3187336861572009, + 4294299744950240, + 263995458767093, + 3274906531041271, + 4072215503141988, + 1766164042932462, + 3426526875234552, + 1466000436867324, + 2241220461252062, + 1629726170394307, + 2869342114770644, + 3138736918745314, + 396753275728693, + 4136656295081165, + 1580631365869822, + 1319676566529956, + 2160319793470124, + 2294416750478265, + 3210729491842919, + 1597844924758832, + 3291568738103109, + 3208910223608512, + 2996986202639644, + 125040649212630, + 3018086680064447, + 573026629671398, + 2057044572072114, + 2651770578127924, + 2719399289440372, + 1003797260470963, + 344882178926518, + 3738016888553147, + 1818669462038365, + 457757375494909, + 4232318106549185, + 662837690896036, + 2542215397046980, + 1030188082918396, + 2731085135218675, + 2883440320729099, + 1818443569356084, + 1369791062397633, + 2420240419249724, + 4262213953168216, + 28939438365431, + 2873994890212116, + 4229956604910380, + 3710998890310962, + 473748401826779, + 1815053143210131, + 4416769405730341, + 3183332322664618, + 4284940259570818, + 1821217733614076, + 3388049571172155, + 2174535616835472, + 2009590081597337, + 4362750251895969, + 525989010111555, + 3011964263074543, + 1476667950835483, + 2268970232582235, + 1435284051884651, + 2004919254617145, + 3673529093236026, + 3581224111938729, + 3300666152032563, + 1849439453936234, + 3619042731894373, + 3803590023324435, + 2287081153340591, + 3839131040656039, + 596342402449969, + 230413322237167, + 728289083779317, + 969448672633113, + 2951599989553613, + 1999713391974055, + 1951914609271221, + 4363809354592038, + 1168747161893156, + 3912820855187059, + 3403497332713212, + 2888447797478398, + 3035213391605077, + 3230556278767591, + 1333399462805955, + 2597242159969596, + 1281319779406909, + 3185742909478455, + 386661114699975, + 1071598739359964, + 3751109610414694, + 4393485741474112, + 3488278476883985, + 2128910831296239, + 448454441288670, + 1760323777901078, + 3380461318681979, + 3152335905111525, + 3208976842513263, + 4208588112025491, + 2869193623996807, + 3815916498000302, + 2362148976983491, + 2516003611883958, + 2482789157161467, + 428578048112404, + 1753509157781389, + 4302673998943500, + 1230518851826112, + 1157461697552902, + 604743004154688, + 2897703538537869, + 1852192068672193, + 3606860694168175, + 3863403144414392, + 2635626754540203, + 3589566710685964, + 1726656171244911, + 3129778490628633, + 2606964378558057, + 3598663504375910, + 2007894834963202, + 853215707384713, + 2656397596405790, + 2935738182202033, + 2844911913513524, + 2025129472174072, + 1100004724045005, + 2574423867528402, + 857967111969843, + 628550410350687, + 2075945222632897, + 2520057066055673, + 365980103102373, + 3199741359351600, + 2773144982655894, + 1266539734447397, + 3110816549250388, + 693045572097737, + 3805174314754478, + 3784403969257365, + 2703191144207486, + 3045764615757767, + 1080928335386599, + 3721034522957923, + 4128132838985755, + 1735177570311857, + 1339444048238444, + 1501507612511011, + 1533812230962515, + 4388163359767374, + 211520737055534, + 1829467960887165, + 3360230644572911, + 4272302504894492, + 3014988746317932, + 4287176086845738, + 4258796072011997, + 17090493462939, + 339929603406005, + 4414356327661701, + 68183304899727, + 806326976256395, + 3819834694866078, + 4173031436558941, + 418354309788381, + 2596830128102829, + 2796908274203308, + 461616066038429, + 182259717171434, + 1609446923895299, + 3150485237636886, + 2698144739739820, + 4151400382775427, + 41669888616027, + 409694648212777, + 3728425179831391, + 2047438581977368, + 1143185347268923, + 2783001915528839, + 1487342739658448, + 2533534616882055, + 1489868169348187, + 491809914692348, + 3653884245587600, + 973125635898404, + 3789683227071398, + 3830529207731732, + 98629936263740, + 77628261804810, + 244430882293417, + 3164277048491712, + 591799543877923, + 3660121656015378, + 1085461125258616, + 2112037300772227, + 1071026577823802, + 3180415872487135, + 4458713924896280, + 2521010788835919, + 3361259128688031, + 1713043492473313, + 2267286124814263, + 4061692459583871, + 2540907418101774, + 3432595358363896, + 2708602338472497, + 2132344387803595, + 4001550628795550, + 1374717078610139, + 1585853208541150, + 117170012624828, + 3779546295522741, + 1797214779451056, + 369598635061742, + 554950612524067, + 4210098424979062, + 3214842067717311, + 4361063256542378, + 732223063217859, + 2295854484192187, + 3455570258602806, + 703927623010520, + 2442994217386069, + 3187123551743626, + 148213166217165, + 3324891312432229, + 2513766964817496, + 856209432310084, + 1018162896897972, + 3805027117568908, + 3834155588900326, + 4272466326955640, + 1222830619497186, + 381702265462160, + 769304144213900, + 1219687706675694, + 4341189712599866, + 3345955860477494, + 3933274045451343, + 3725247979350534, + 3814370221344917, + 677692432881956, + 810826569440153, + 3521654780715009, + 2419141463475343, + 1556695864942285, + 642490802946724, + 877214846760307, + 2879070594946047, + 4097135848789604, + 4005744107470455, + 4449549187447827, + 850768548185329, + 1881094999665870, + 3491995147304652, + 3938730192610404, + 2425091626678578, + 4470045806036101, + 2338088272374385, + 3294183118991947, + 2075132473661573, + 4002497851331232, + 796599872965095, + 1822340760203963, + 1360337691969211, + 101586427900312, + 588703197803621, + 75475275902502, + 516444718346558, + 1545219101539232, + 2836836136126066, + 128769354992573, + 176460827323464, + 1201776768117231, + 825806162843574, + 394322936575963, + 2912735110502979, + 3348556990267252, + 1603234423353033, + 4031990395842105, + 1956704689471794, + 433722485113207, + 1828253836430671, + 1328867308360159, + 2586442714195593, + 193134271784625, + 1446270004268175, + 2702538706189244, + 806829671207443, + 564201673744662, + 3099233139475308, + 3042745655769395, + 1675683623883648, + 3072955112781680, + 555116211572141, + 2529939089175397, + 2775921260763700, + 1814884386811650, + 267677396543488, + 471044977087528, + 3854631283830535, + 478776552867168, + 2918711692716673, + 1477443775009213, + 3595677508388397, + 2362142694827341, + 4225298560786730, + 284522329736865, + 3299722204814594, + 242329169552709, + 4173187028722104, + 4114834152241371, + 627061432227594, + 4062496007694309, + 1331314685918915, + 2722486697030784, + 1326450548022357, + 2855709943932106, + 2082496848516153, + 3759100442984408, + 4234808755219686, + 2128255758606225, + 1295010052859966, + 3162336561104748, + 634910181048419, + 3456168036838399, + 4050300959546361, + 2213774358598091, + 1551346239197888, + 3226690553241850, + 1131599399166883, + 564158823937951, + 172038356105619, + 4083130965939122, + 3580849647415863, + 4240900715248323, + 1589471379394650, + 2529492655214103, + 1198734513239977, + 2177358248382386, + 1366372748526509, + 1290597331887375, + 2772480792639768, + 2558466501228855, + 3498287893710967, + 3372250244676825, + 3572697007076180, + 3526048721274202, + 213846680011625, + 3900890785361647, + 1526861489135084, + 1722770176014483, + 1465594064339347, + 4340146168813276, + 1892676170360229, + 247469754432791, + 1150726349271650, + 1490904067157531, + 1211977578517323, + 405731025606487, + 3386570869357932, + 625927132100804, + 2474970909359176, + 128547005739147, + 3553726715350046, + 68567953080469, + 3449972188165950, + 4472908410713672, + 2216003678515701, + 941648189154970, + 3369814584445200, + 1211910909455073, + 3239309197941473, + 451902416334572, + 4402370852608910, + 1407433421773970, + 1188130938567987, + 1990800182204381, + 1250244227227414, + 833123534306346, + 2325954652295072, + 4435256703821705, + 3409969062413948, + 2514355271081994, + 3521413052474379, + 1840114888677578, + 288987029847475, + 1817349169261423, + 4207267579374685, + 1348642835220701, + 622920354802297, + 1135061063195106, + 3199078426864577, + 260433167082871, + 1152540529764424, + 3025042379846749, + 2208260491054237, + 2230089147223212, + 2488631401316666, + 1210395104432304, + 1708378505516551, + 1220117574055209, + 4048864026773077, + 4367126370066006, + 3793526481334342, + 3085097211787291, + 3856136132736235, + 670504946653054, + 3580106772348480, + 728784882789824, + 1951410994038191, + 583790713284516, + 225762048471295, + 541869955444692, + 3366788818055705, + 2538630156097393, + 1534257154049706, + 2928460123069175, + 125126653533694, + 3060016176996058, + 3571539307197667, + 3479386356324498, + 3665544301228669, + 1073075947419095, + 51609122890066, + 2198989314863654, + 579167765335732, + 2020572103968357, + 1758811885608371, + 3160848407070769, + 3774178665989362, + 455875090478930, + 1828883819104248, + 78803222009799, + 2460515753262835, + 1974538093591428, + 705256003637159, + 2071506848509099, + 1202249710717161, + 3180396968614179, + 2889742856137260, + 2566159068304575, + 825125213489910, + 2950688355581342, + 4380218781972675, + 407621993556112, + 767059495687901, + 2526492877418131, + 1337796791151735, + 2633405810745718, + 1611975929168411, + 4405270050349705, + 597828663303183, + 744067220811874, + 306103448216951, + 2173155928295364, + 1720992455261387, + 2586288137167128, + 2998809212853685, + 4036948030600908, + 527677099775673, + 1688058588814720, + 2675018784302515, + 3419237113899666, + 3297458490273874, + 34511558114014, + 3869727732234748, + 908663486325819, + 2519273883869851, + 2668000332830554, + 2726399426213290, + 1769645697653199, + 460152812447079, + 1083878172686617, + 4356662410550191, + 1272358576097776, + 1663738334206201, + 3299885171587539, + 3235199858613136, + 2293467235585307, + 3143835510209699, + 2180030779308724, + 600203863730311, + 2145471606149834, + 3930676926343256, + 2956068984705212, + 1443166756052305, + 585706861953900, + 2409793461039222, + 2299845396845946, + 2925560816770448, + 1865911433429629, + 3816184409679356, + 4496047340235835, + 4461012772853103, + 3820014226181039, + 1134590998759032, + 1047417103796441, + 3547095176543427, + 2775641259993074, + 1884423152572972, + 487162052298095, + 1001798397675803, + 2436627872073168, + 739773312592043, + 2845323631606463, + 974594099207319, + 2091947207547614, + 3661352187379565, + 3356921891253466, + 1958032506831900, + 3361486336684793, + 822618009627571, + 2376808303545234, + 416048226516912, + 2206713859553701, + 3122276570218624, + 3396169663064011, + 1828231571720239, + 3418131288799939, + 597108480893149, + 3596109822587815, + 2142178209851446, + 3611670285929053, + 1727422166296612, + 2739023953870274, + 1291508341145734, + 3550299213836731, + 1256340839173810, + 2692968654096930, + 2416013333825648, + 4177525323628059, + 3739334603117970, + 2586312275046514, + 3300510343711553, + 3001452453459212, + 3410553857031298, + 3191828868926797, + 2299012954112704, + 2360105640847844, + 2457514091266209, + 1648513920755127, + 3818193703197574, + 717110223876858, + 1383098493382486, + 3789824441655298, + 2222027227242072, + 973317334405000, + 1552565948181926, + 193230605556301, + 3992742463087313, + 3921586159745081, + 4111245055501185, + 2080954211760198, + 959838589889056, + 420791532688948, + 3457586842070511, + 1260313778562067, + 1334397833737418, + 348489859391614, + 3826148974642493, + 163845489500706, + 3091489667822897, + 76807078239275, + 2881166399162565, + 182306956938063, + 3416508210148438, + 3978180487541545, + 2543113278501471, + 1782685875335230, + 3839149471679771, + 4299781751029741, + 3537111493145079, + 2718458564031291, + 2147817195280839, + 311541785346147, + 786678919159167, + 925608119530406, + 828148759592577, + 144438063288462, + 3763805879682697, + 2813237549609244, + 358318520325968, + 4347202999859049, + 352876737682500, + 2149998898520423, + 1751555239392064, + 4040394339527267, + 1825211493737793, + 2699547387039943, + 3976262193973013, + 3674909681957570, + 1684659179065556, + 1513091973622166, + 1611210649613134, + 4188340376084971, + 2846200672100959, + 2084804919625216, + 873983913124417, + 476882657267849, + 1829743926287677, + 2861756282903321, + 3449476039596096, + 1050486454758167, + 684758232700709, + 4257128446284345, + 2324335305101922, + 3979974038993980, + 2127669953228949, + 2210454994025640, + 4332082369969331, + 2285616644453446, + 3109275777898169, + 3399704229447795, + 1462896861131839, + 2176401577983184, + 2350542195437229, + 1281707271475366, + 3119598971617062, + 966683272869290, + 608311948386519, + 2698091026032988, + 2510885749753499, + 2693563294508338, + 2507043974784766, + 2858124265745845, + 4295854448878740, + 2865965184659955, + 3615122847275552, + 1393112214091451, + 194075128870285, + 2491583996892527, + 2050380149743986, + 1502101976905878, + 2620495630866404, + 553261962072774, + 3947665403345521, + 103949814484537, + 2279566479636267, + 616806046421629, + 4470654530943333, + 3723241914901050, + 4307902634565077, + 2698462793453226, + 2533931344778401, + 2274360063348154, + 3644820761040092, + 1160532089066673, + 3192795480535063, + 2377444521803161, + 1665898260352112, + 974455967993152, + 3005544731920616, + 473901205895996, + 3843844119800573, + 1199611826688779, + 358915395394728, + 439289939874919, + 1406032637496812, + 868213507007800, + 2762705672026830, + 1961443978012029, + 3891580672746417, + 1469206084817716, + 2525512575216137, + 2873882834469787, + 2614806691925687, + 3530224649925064, + 1524614687018431, + 2860263310268409, + 3275387433840540, + 3646587554236707, + 1719968267530693, + 1731298724537287, + 3362372753394126, + 4188313518241789, + 3928768556560209, + 4230974737617372, + 1472672033566220, + 1666062208881187, + 1028751368780303, + 2780364549191525, + 4308739233391300, + 3020137605991934, + 3265716007039596, + 2856457763869340, + 2033216601842167, + 1574010372112518, + 455912691774141, + 4273216516324861, + 840197261008484, + 2526227572852320, + 427514769664812, + 3324501635396366, + 4006312441596972, + 3276460852136553, + 1257525699934890, + 1836777705007911, + 3099871248082398, + 1174972458956156, + 3396099508747677, + 3871465437489562, + 2055544186324132, + 2264637568466655, + 1082884146119765, + 857923190880090, + 2700793883980346, + 3909752331139141, + 3491672770995280, + 1305072686820595, + 2943719426514153, + 3099073835078441, + 1871765105636076, + 3546307240085497, + 2542233579905141, + 2546134039083738, + 3594570584618866, + 2778499914471383, + 3288680654875485, + 2513113332324359, + 2511935633508805, + 3008643635187263, + 252421998839662, + 909458507715810, + 3427472748915762, + 2774707275404093, + 3382801630346287, + 3339257510437103, + 1819806160489979, + 3365957802813919, + 1848465726491128, + 507086220861739, + 1047758452430371, + 2470826339546629, + 3908889349851450, + 3553137789799781, + 2572475836079151, + 1486995810639407, + 703886527395537, + 3505307900722700, + 3999760126120307, + 1990798634350429, + 2151214949436995, + 2802149033733796, + 2690678155862436, + 999649359270017, + 2474284273407623, + 4270853404576127, + 809327111314079, + 2835071493308016, + 2580840877447944, + 794831748181935, + 1886814212138280, + 2018197789964920, + 624820542492427, + 1852432005823911, + 460855234251032, + 4379289685157065, + 2075675847305535, + 342160958533623, + 326620138063732, + 729557049216385, + 71363509533733, + 228473120397275, + 2652331808836790, + 2505845611373109, + 3407961779077315, + 2881675497603248, + 3838237336218452, + 3919523874502517, + 4351370816590112, + 801849427159469, + 2159087066188983, + 917702860704696, + 3788961300140427, + 1860420265791642, + 4052927824570234, + 3924741408165746, + 4446853929293558, + 1969917691783086, + 3229190657646616, + 3206964738500127, + 249570462293237, + 68794705585007, + 2444646058937947, + 3930670155579676, + 2414265376278789, + 3335524192246312, + 3869993013618674, + 456889894086784, + 2653692995573202, + 212104695161539, + 1054563875245733, + 1008443284637131, + 1235708883581739, + 174797856737844, + 3027048620794932, + 3096578709309368, + 3642126250252356, + 4193742212827744, + 3165719898086453, + 3200565783442912, + 2888511299419933, + 343338879750724, + 1180453145004127, + 950926870015011, + 3094882262753086, + 1029989406018962, + 688352489750941, + 3083486841960507, + 3284255856897050, + 4237359614600809, + 3239930803734125, + 182074363450457, + 188321063364071, + 4002136117301093, + 2221204689262293, + 670250333965523, + 2076017237942773, + 641334699664355, + 2891565946006067, + 3929929172954108, + 3959312131192255, + 3548095531339747, + 1550143672640899, + 2789979670635221, + 721163234014395, + 1746160981069738, + 2436191795595535, + 1286238787852563, + 3487717419617130, + 2186541383898612, + 2365151500903938, + 882291562790039, + 3071574940370090, + 2848135302727586, + 2189814335599448, + 2018618356677725, + 3297392165206996, + 1122973713679486, + 1933087830483372, + 511603697025872, + 3728152948946351, + 2223898663662807, + 2972836633387488, + 3380844131174297, + 4494889131728632, + 246891440164972, + 464345401832727, + 2323718410936112, + 1518487432530101, + 591370797496060, + 597837162077204, + 3375965794618414, + 2407422688961581, + 3686666073518829, + 1183451619261478, + 2070337843857829, + 969162204033764, + 1018393056757509, + 506102508238527, + 1594833520420241, + 3885335857564229, + 2904974935910655, + 1352910340124847, + 1695513993200475, + 2750642029538632, + 2066030787990587, + 3508518072983645, + 406524982459065, + 1856188763833160, + 2146598231845477, + 285527137538560, + 203825587600940, + 2127199955895665, + 1993490845021791, + 425099029401213, + 4182825496441599, + 3858354951137846, + 300231952939876, + 338742535018950, + 4194091884340810, + 2484433586381551, + 1081464457492876, + 327596567484924, + 1138341243882596, + 2423762455483736, + 3729332986367564, + 592346840155184, + 1249977642285949, + 3313805087314492, + 4064284267183042, + 2834669608762571, + 2213444605690170, + 4118921007245341, + 1199941020858204, + 4075382362715807, + 4465235816957748, + 2504025721451895, + 3475022710367284, + 1742333717685343, + 1864857953331903, + 2504857269542000, + 2028893666040810, + 2237057454218477, + 4241104269016742, + 447749761678449, + 2405538805464583, + 3025242273642828, + 158476377116437, + 3037917124059121, + 2663756179375714, + 1824990514789449, + 4230241489581532, + 3469692609762558, + 2874018493069024, + 2167210694283999, + 508106705903602, + 470316688609065, + 793521263377883, + 159002817453724, + 1230760233120084, + 1590422066281989, + 187301345573731, + 391433378517050, + 866686697015790, + 609291852581999, + 3207653120629453, + 2406564766946164, + 4000075751127409, + 3579003410049807, + 2247720114116753, + 1505690402231485, + 1861091232074719, + 2861572361582032, + 2745441039669350, + 333723717391503, + 3181184266545063, + 813896330305211, + 2877612538317889, + 1180092568677082, + 1707445065512096, + 2613499725160490, + 1762342023281161, + 2757980522390828, + 3215950542368864, + 3765106121540552, + 2088788248887665, + 4486194633268749, + 3102750245597484, + 434368165612547, + 3827807652564818, + 4496913835164970, + 1939724155862995, + 341559992319716, + 1464692014468676, + 1653905748553072, + 648609934960285, + 1346607767662090, + 28071168868802, + 4237089996633069, + 980491780966790, + 3022685033671988, + 4471289919419948, + 1801495110952515, + 1649667045019552, + 2112129550752377, + 216570876713125, + 515658223273835, + 465174670246978, + 1987487881106242, + 3669987486185875, + 4475203204867477, + 2664584105691813, + 4025971295790002, + 2318273601563190, + 4082102936548666, + 1529906639097063, + 677029702975189, + 1989255602310532, + 2439837482591361, + 3551938116609123, + 3922425927924654, + 843569112250764, + 3398630242845432, + 1981896217631184, + 3588204894750713, + 2901367210294916, + 987427553500106, + 2536449190081411, + 1967319004300736, + 1337037764249651, + 400330357973939, + 2888445177764077, + 2376653020486635, + 3185945036179422, + 1596438793482100, + 1794838490114019, + 2373500540744736, + 2211277645665946, + 2442339140475147, + 4306546407507838, + 4410518161893447, + 501027807979909, + 4081122704840421, + 3068563854645122, + 1084049921861965, + 4003360445080207, + 2451744929522017, + 2492767205950907, + 588763229973797, + 1451171053917790, + 3839392550916196, + 2552218069821433, + 2201930389685612, + 4186057197186889, + 1409603404082847, + 59710436316475, + 2174886565305646, + 2192246339027846, + 2138583126820676, + 2949119665419181, + 4240480870502787, + 3789832717858537, + 2620527352111273, + 4079259549807499, + 1138909715935440, + 1308488764404910, + 386420405886970, + 4414111088259146, + 2561206786794805, + 2786561433227029, + 111442547717824, + 2153385392650765, + 1925287441539734, + 3513430405033883, + 4439603520641643, + 335478090194517, + 1166982746052607, + 2476061437403024, + 690779505740417, + 2924431313366705, + 4175771812345557, + 3863659827498788, + 1454995961185496, + 3789295263878284, + 4349526223435593, + 1562284508663035, + 3600986744290771, + 522906507679533, + 2606121811784001, + 10010156645214, + 3185837392951815, + 933887564940902, + 1198813585237075, + 3312855590825328, + 481841168769905, + 2925687071730056, + 356424194022673, + 1258168050217653, + 371645774504152, + 526023745135013, + 3934104754922968, + 3640470117229398, + 4449358151602796, + 266553029856741, + 889924801641202, + 412584415032476, + 1187321057170987, + 1667151087219735, + 2667159472133337, + 3517962465461524, + 1650055464881171, + 3629577713946053, + 3295659961612318, + 1313957355206730, + 3799150851662043, + 3932424365808448, + 3174140862344583, + 4337084999627664, + 2357156661211693, + 2071083555810854, + 2443775702056681, + 1031070078585528, + 511780519164458, + 2241749041778675, + 2898616588131158, + 1894218636091837, + 2942253380553116, + 627080271405274, + 2718121437439735, + 637067731175892, + 681997721567780, + 241101631978901, + 6004316371450, + 739942544581306, + 2010081209301473, + 2506058012299540, + 2455062717029388, + 1838973783548635, + 1222391271819032, + 2130426993165416, + 2813360829010355, + 3630111246273290, + 1054181054270616, + 3986339998027492, + 3082413404922562, + 4455494559082469, + 4181706198705412, + 2899828243168024, + 1309491267504411, + 1002437248682931, + 1293837231607571, + 2427493560864370, + 743167976214747, + 4146058127060114, + 1022348571510956, + 921147206350673, + 3332887088616389, + 2338379793982310, + 3323586864544976, + 820018386756896, + 3177134489354813, + 1406936041585025, + 4341109822076542, + 878979586131406, + 2205440422399502, + 3408048596838600, + 1686871896696913, + 2047714281475524, + 2000331862510271, + 3295429726490236, + 244426512702894, + 671669990674576, + 1255428882362205, + 581569098944723, + 4250260516795518, + 255012421055267, + 668093064159751, + 3312964490060662, + 1570999585080301, + 4099666895681411, + 2075235084826370, + 3836114066730459, + 2370798433651605, + 3911606350928373, + 3258855764626970, + 3100161703483466, + 1869033090783217, + 156173038827253, + 115168212714414, + 2747491919309749, + 2323706021901859, + 3633033627487226, + 513978087444267, + 4103842342061266, + 2107412728502637, + 2950906136355035, + 1092936845469184, + 699643006336181, + 3900762783890055, + 1838807070595375, + 6859529851391, + 4164232935335666, + 1559984502251493, + 2925691890871, + 4420969676289613, + 756544983877571, + 737708958696863, + 2940076590543651, + 1693695215727207, + 4051965164058068, + 3694657263347115, + 1002119062616051, + 3106478719645530, + 1623462155124609, + 1949429158802569, + 2938372545943843, + 1456609670774248, + 3492919078921112, + 1957202709374358, + 1211999593281625, + 894416471824475, + 895082083825206, + 1272534093731194, + 137614417387397, + 2861222706614747, + 1367247317251452, + 1206014631415768, + 3105002328056975, + 2771907546790789, + 833611979763868, + 1849903624158496, + 1519959244644460, + 1394569466360724, + 783966343001611, + 260877830247059, + 3945822951334484, + 1630661859892577, + 700347691442131, + 4299108546602315, + 3350267679060611, + 3008819886754648, + 1634582400600375, + 1385148277220095, + 2083899103161262, + 4412608555768157, + 627619598578544, + 3099525019426447, + 3217444196294604, + 2653584941137820, + 3891717240959004, + 2736670917906001, + 1554020552109093, + 1605628538293118, + 3740685705945748, + 4179093493837283, + 19397772007966, + 1519243576543683, + 3679959201373254, + 4015019479588104, + 4295767633709348, + 4384249482392968, + 37113272489660, + 259790058146391, + 1994222392966648, + 1843853279091956, + 2691424990421611, + 4098160706436798, + 3927968982285918, + 2799737638556219, + 236121569088618, + 45976749145790, + 1836935012753567, + 1816832178645882, + 4349842135926512, + 3259895366556978, + 3751526744428519, + 3967438991089361, + 1839685550739840, + 1810636207072863, + 2724479924116961, + 2842130049555009, + 1900335804687993, + 3950015933722197, + 4127691450709112, + 3119302796494152, + 3970794033013261, + 2956958147607414, + 1770389948756347, + 3263383258499001, + 2227141907950432, + 2519869178921712, + 3540385170528127, + 3864786924842165, + 3140168776506459, + 2484165176844820, + 2563333106724094, + 3430205318111481, + 3018849515874894, + 4075947683243827, + 2787538428507676, + 2328631009601163, + 1965457738438494, + 1746647421581056, + 3577160197975628, + 928477914402777, + 741604585621554, + 2994179683394087, + 2984304031863271, + 3161053374234985, + 3847024415906930, + 156705211336370, + 4259505995681183, + 649374049670435, + 2163264357918606, + 3402930655858700, + 1044375650747476, + 1787555697027376, + 4395755612996889, + 461117201817072, + 2956629857020989, + 2432287175523682, + 3669899004424249, + 634690418821644, + 1330205981798868, + 1607572091610326, + 3417259368314959, + 123526012468957, + 2986315878972403, + 1694399620197815, + 520698202660615, + 1901708671993008, + 2619445863276475, + 2820075411660382, + 2822484826384934, + 710747653517831, + 1468376664682999, + 2737374334642573, + 595788600571293, + 2699445151852906, + 3748069709483012, + 673957756696044, + 2491482374509547, + 588256940951882, + 1714402651019718, + 4421132250792154, + 2735946873564601, + 3584710047802918, + 1502042243446854, + 1944118243404989, + 3150250141744196, + 2830446148331947, + 2799271129416308, + 2230252320486325, + 4058918080917140, + 484440564896120, + 3023177631621832, + 125741870326771, + 3334971906499597, + 2869251382889626, + 4345816097927799, + 1392995550970604, + 1695890454206660, + 4469219609063474, + 295478576379436, + 4474041710210114, + 3137196960284076, + 2099618306827237, + 1880555939387898, + 414003949775801, + 3207933305720326, + 1155312772982018, + 458638025945803, + 2830105303173380, + 1445304097920330, + 776491652322890, + 362130019649655, + 3372375800557218, + 132818067684336, + 3065577535018757, + 3918753563068133, + 3704976205086577, + 1479141880755616, + 4192172803798166, + 2969488489799624, + 832446832159142, + 1594061183223184, + 1971749374934416, + 765373286736307, + 2986279449580824, + 2894950459776390, + 811623379465305, + 4153281461279795, + 3557111604464169, + 201647223357228, + 3125507670053200, + 4488012369095149, + 467079295303344, + 3650532163652258, + 3856449908243004, + 3907117025892017, + 2814381537914887, + 34695220358397, + 2846279153977978, + 2858896825891069, + 2904464614889395, + 3790913263210241, + 901470486501377, + 3131927184782055, + 1656527560584020, + 3624758704923962, + 2097743408327451, + 1588540491093624, + 1167097566413269, + 1051595936416019, + 2084394060428561, + 4290111580378448, + 2679281875133157, + 108627982983888, + 606168825733609, + 3926007615873209, + 2371839070233670, + 2526926223820614, + 45908284360405, + 1762435114863299, + 3537933271478060, + 4281903379629866, + 4319332694630455, + 368701952025028, + 1618742438279825, + 3492897796042000, + 3328481459446917, + 4151688627065372, + 1580433046279352, + 159216251714914, + 3274640097114299, + 2488606866214874, + 2870007536141043, + 2323444332475128, + 4259943883298610, + 354372746649813, + 3542426661505446, + 4363991277769008, + 3639258122532820, + 769000086875979, + 2417470559954029, + 2685684084955811, + 4498265787304247, + 3200274239658192, + 2111141232324697, + 3271755617838347, + 3488402576598521, + 4484392404012032, + 4108059215210582, + 3294078519786211, + 3186500023974104, + 3369284203153374, + 266039945333751, + 1099130880751979, + 846271841969130, + 3637481647423180, + 2960341594716168, + 3568830433279538, + 4456336830639052, + 4222439980281751, + 4304759623159067, + 860868476368394, + 713413681923409, + 2241797421150358, + 2352647446766800, + 199633666184127, + 2279251999524631, + 918165490364730, + 554472065531467, + 3137495932710080, + 2049363868271192, + 1651380129704732, + 4393936543496748, + 2062180169702169, + 2377335941695940, + 4153999874690634, + 1527114352060985, + 1512587741132407, + 190936785101296, + 4467803567999652, + 3301825215703732, + 244785943910745, + 1335669891284981, + 1381779211700329, + 3753165014086456, + 2799359044362307, + 3789614658780891, + 4087360652791058, + 2320579258544368, + 4155808988470229, + 3593726506544206, + 3529319808672061, + 2060276938571388, + 926671598261376, + 2781900473884667, + 1748743782127491, + 2399056656047522, + 567341734912063, + 2561189776278732, + 3203513561038875, + 1043344317593685, + 596966173878219, + 2892252715576691, + 3624234927541573, + 1324522251465103, + 3725489615779824, + 2630579591761049, + 1339785655333711, + 1238011184933542, + 2319126455863157, + 4048762712880732, + 2674648574511047, + 45367124780583, + 3500733220698056, + 1101726989914519, + 4435325996616339, + 4365082885161367, + 1357742291667993, + 1838567102781966, + 1393204374623139, + 1537517878253157, + 2591431269336674, + 123806330584635, + 1244708045870823, + 598128201004464, + 1208654139353272, + 4364968429234025, + 110907297476537, + 1384171885065699, + 1744874981279092, + 193572134077927, + 2477602663002469, + 164989690385317, + 4322777883021548, + 939766324169748, + 3796622365200244, + 547527093028008, + 3320160888254581, + 3095462269973764, + 637951643543941, + 2031946766775057, + 1266672643747851, + 1006702147244892, + 3846291183247004, + 1814841374466834, + 811178476719183, + 577717906015975, + 3874143999267708, + 623247274304968, + 2718065627346921, + 3194554492316379, + 3074355543052000, + 3622527333250737, + 1404230708160218, + 870311723529385, + 3097630713801050, + 4091544285181567, + 1262856964339342, + 846956215960607, + 2522178526659647, + 96446288023060, + 1636900634872373, + 45869623615481, + 1694405172969241, + 3796475270218539, + 1145153116051710, + 1281938940347554, + 171944012489390, + 1935794560865937, + 312309934571895, + 346097390328189, + 4268787777514047, + 254665054596013, + 535852790101079, + 1090099252562790, + 2278121317560743, + 1477722777855556, + 837177271389787, + 3386306531345530, + 4371052242810479, + 2421982197453242, + 4074316398138025, + 1352511407792506, + 943620888541008, + 3960686437461182, + 2327833941815642, + 1485334619477909, + 2817547957285456, + 2069096408368542, + 2796924364147240, + 1273790309057557, + 2850714373484747, + 745335768830180, + 3334105879175848, + 735204546918623, + 3225621823007265, + 180080892476915, + 3909423384074496, + 1520228643032201, + 880498772709767, + 12574478839006, + 2742761681166990, + 710316238735454, + 1883591469300072, + 924013793306144, + 2660749204697066, + 1239177564448686, + 622770906290015, + 3708355096503265, + 2248408270776086, + 3960273090491413, + 2329885205470854, + 3495762478253969, + 3741868272572403, + 119624075640975, + 2147858009927227, + 3655047628173754, + 4219091797361364, + 174480221305835, + 3610384344546735, + 3520901768487925, + 374486280522042, + 1395171237631208, + 3449522781300625, + 3161250853586079, + 32907038280270, + 3043746851848266, + 3898061388709326, + 3187732425862604, + 2835995390605083, + 2781158195920639, + 2696817193350607, + 1395519485528870, + 832962581198297, + 3673117339753828, + 2285251527349369, + 4478719982324908, + 3603419291570728, + 594849581966283, + 1504131912606514, + 4080113072940413, + 3938485119974431, + 2337341443097322, + 2225456437737688, + 2077069960892191, + 2512082079811629, + 2438445453102862, + 4488605658981572, + 2253949924609105, + 191105476603054, + 1985283197292495, + 1380084387749379, + 1212796616355919, + 3259867779502137, + 707323385046439, + 2758102663041798, + 1128218484532253, + 730035351674554, + 197117292830116, + 3574192603163925, + 3919626369053771, + 3091448674163451, + 3223484792059387, + 3981678322523876, + 3012916771620632, + 2735099531933008, + 1444556913089699, + 2226931077543394, + 3801154320983936, + 2897760811514477, + 971494580392401, + 3488995313306635, + 878874545034190, + 1593656949520005, + 635372723053433, + 2985475134241130, + 1157494012654262, + 3633633706265613, + 410266389962181, + 859864647027209, + 3712755396507146, + 1664903056977090, + 4292909477393298, + 2470951383498700, + 1988763998166593, + 3001270959969941, + 1066015751766441, + 1605748599789085, + 4465014636554016, + 210991901763213, + 3389406812027609, + 71364912548447, + 4355120328614507, + 4460497585003143, + 184945515836065, + 3866678389194791, + 2819734539512598, + 4295168679268096, + 798932221626337, + 1717039054360638, + 2516106094419915, + 6125428299467, + 101808538744476, + 2609104307631445, + 3132755455332289, + 3495465097876413, + 4187564917279328, + 1272274293415766, + 2988723035437601, + 3379598900873623, + 749766573479232, + 3675889536426859, + 3982293004175082, + 1305614348866321, + 592390345768342, + 2689764034046937, + 2214371840663653, + 211034808856613, + 2568752708708525, + 3449632155566591, + 2968869721714757, + 993440874070854, + 474372964624260, + 751084130922612, + 3807026715824410, + 3486710092337875, + 1905690037024261, + 2495294995727411, + 68538745593739, + 904847125948959, + 1269957030937765, + 3863329729645163, + 51936401127692, + 1838462492801338, + 1889484381894216, + 4314495870200443, + 818908515800185, + 2730042852971554, + 1766367392669957, + 4284718113731319, + 2971862054337715, + 4012242323436513, + 836228995060801, + 4404597159243957, + 474299317054827, + 352010092316440, + 1730371177530875, + 1892589831101650, + 2204863275828087, + 3181798066140302, + 55269345214601, + 886943509670651, + 2443469804212260, + 640745938135704, + 792482922315283, + 3051910315267862, + 2195792880849575, + 831773246856013, + 1904469046398648, + 1507676987221315, + 1827995250441887, + 3225883433643575, + 3297204780405442, + 1825130549395963, + 2409709468009561, + 3424109351905960, + 2450659865756872, + 1511324460782141, + 2626349323056662, + 1348443137313505, + 2533590474440773, + 2246425929246740, + 3990043521718743, + 3445242836430565, + 171276201020438, + 1093917089480945, + 2191868341826324, + 1712725616735764, + 3020194616700785, + 2707178271221810, + 631684647942298, + 370833938632085, + 3143296473710251, + 2697338818571337, + 3164784248023741, + 729833931841717, + 3272094521502230, + 2412781300748738, + 3656929495972039, + 4269555306734054, + 1633595452502560, + 3354703805470914, + 524874539849396, + 1747487774938544, + 1989305081571078, + 2645781628813911, + 3551342531939263, + 993454981758780, + 1403315661364863, + 24943976981983, + 1131929328141068, + 255999101323570, + 2984748832099097, + 4009941777298061, + 1215960293548384, + 420840364029554, + 1252957322133890, + 746101674640835, + 1274760804029746, + 3159565985216071, + 497453269967079, + 3945702251361370, + 804946391613413, + 1498967970020067, + 3891098457347167, + 2161710336527553, + 2014239838863618, + 83794910322601, + 244417475991057, + 2454686221350439, + 444347958209602, + 2161107199506200, + 1445630990048979, + 1701225287172076, + 864636893935573, + 1141433336869378, + 438121044176436, + 3757696820765641, + 934214254888627, + 2533266620883317, + 1256260319727490, + 3528765609507358, + 3326896560461773, + 803567668631601, + 2980227823860189, + 4256069665076095, + 2251419951327480, + 27031477472424, + 3759857415208965, + 2260292191886206, + 3049627599177549, + 1666791916852083, + 3630912546969392, + 1929295186757231, + 4291382276301289, + 2335957567760839, + 792774432071228, + 1093837160942384, + 1505453851102444, + 2773569056839140, + 115588889966652, + 2222270475084029, + 3607018707920996, + 1975210810166796, + 2624181640633460, + 2929801330943341, + 752620420489121, + 4501333957276321, + 1061561759067928, + 4052268096306862, + 3527179145926896, + 2964325817452735, + 4249030089262132, + 431692522942256, + 1941420092838402, + 1822164456397117, + 3150741010104275, + 609646684003610, + 2133708013338598, + 3462969295153532, + 855457796117676, + 3103482552692192, + 2359498346113258, + 2753423580337889, + 3482572740923176, + 3066126171923868, + 309555076651365, + 2456489955344205, + 322657177361116, + 362025449429682, + 1616241974301824, + 313375068304618, + 1267100363559401, + 1152723034185692, + 251677238420547, + 4278623782445672, + 2187238838492815, + 1039535811327236, + 2040432678721760, + 2964270064093428, + 4125838599074469, + 2799696907925515, + 3851767857303039, + 2316145555007468, + 3316414208551854, + 1079677027423454, + 3002417114211943, + 2677964977165154, + 4249006849343030, + 1027175084266996, + 3767263470582812, + 3898465881226304, + 4408634952697357, + 2598987632337853, + 4503190367897328, + 2270199814018986, + 838373370560019, + 3440713090026471, + 1655048477991918, + 1577876985225135, + 1290210656335592, + 2165791359295948, + 650033254034983, + 2073354054845760, + 1367502617106560, + 1740583170220540, + 2986870578313895, + 3202703003205981, + 4365328928014303, + 1119917255544712, + 2064821352331175, + 1007872880791366, + 1436037854920243, + 500493754338829, + 352965558481836, + 3153009194033185, + 3027570014476892, + 1695681728089323, + 3078403983894962, + 330127821804882, + 254932877810048, + 2679661209938879, + 3869348726746956, + 3503239700041057, + 3889004172413085, + 744304281595572, + 2806152126051974, + 2418583681121477, + 1913225112967377, + 3351291983671780, + 3983582223673020, + 3912953816879766, + 664570005431984, + 1958920743684295, + 1584004928863294, + 3428813736940615, + 628527639227719, + 417933985491292, + 371286632743373, + 361956657113671, + 3273470165257180, + 1643314001700631, + 2818134582704023, + 4208440599739843, + 3000649275249538, + 1956261259987615, + 3641899209836243, + 4317084512005656, + 3471285232220068, + 2087337876225869, + 3666172947302452, + 2545362853354081, + 494609360573721, + 3831037801335202, + 3265888392818192, + 1367167322332864, + 3229909478795231, + 2575000551596985, + 1357468525728785, + 2724442777318865, + 1760185306550374, + 4391385378405181, + 2584576387285417, + 1903015948388732, + 2571608280103104, + 2524913815957627, + 607957869184027, + 969894974782760, + 4216107451766077, + 164791218184615, + 2823156450812879, + 547365474591869, + 4484705652748031, + 34194879344390, + 4040171064459041, + 1904131744009491, + 4143207253745777, + 3961829976632887, + 3938260342420036, + 2651158781153585, + 2393590136330932, + 3899780858966365, + 3513697164037915, + 4265437373983425, + 1041606449345639, + 3647657492681359, + 1964751782340317, + 1355471364248209, + 2065280500066040, + 4467402946515874, + 1251687828613625, + 3303641087204162, + 639030329993982, + 444759287838511, + 926089807135353, + 2350518522743189, + 3843754057047697, + 1148945438901438, + 667742652948182, + 234742787935797, + 3306687773885120, + 631297070373138, + 3639002368249228, + 218866846615324, + 1299101251850467, + 286853144581322, + 2781670926642928, + 3345302578388703, + 2250789407425538, + 383307325209950, + 2140568262278302, + 2766513451780127, + 2054856329904278, + 2616968104218851, + 234911505837234, + 2816527966306093, + 2232475147142473, + 4071694990937909, + 3289142906388942, + 3625684633736167, + 157120401855685, + 2837035614827780, + 367278773461191, + 1526236640395913, + 1845091732990089, + 3719683995962950, + 76321614197850, + 139294390897487, + 2811817854257345, + 3979938213834151, + 3916617747999880, + 1490160304822258, + 2996436646747935, + 4130786760174887, + 2233544159070742, + 2802243321453344, + 3849710061115570, + 2787686244430457, + 1213460361923078, + 1622492844230612, + 539515493266889, + 918532036515797, + 2199175314759593, + 3472722723277686, + 3832194598140690, + 2378751535395476, + 1351473617209182, + 2379782299021834, + 1822469158467618, + 1036395773504341, + 444399351188039, + 1114786643106316, + 2253538371640384, + 1813711854713597, + 3179815891505952, + 4176020644159141, + 54087391554146, + 1662026206655764, + 2437869264825270, + 1089587817609048, + 3271447656222374, + 4002162283204639, + 2053538001706436, + 22026910125706, + 4152763969605912, + 1108103401795875, + 3316352139949330, + 2935814328067145, + 3374432521719593, + 1808976545842248, + 2756649893831062, + 3841561996810459, + 3361345909782862, + 186937706595637, + 3748986356535357, + 1086915616855656, + 441654652981950, + 3271348494436775, + 806242455001596, + 1365588557975681, + 1240550508769432, + 4055340677946930, + 1629883705442607, + 814491340481228, + 3247212604574449, + 424972601351399, + 2774075594248686, + 2394362519332485, + 1693774285682555, + 847322394777152, + 2209839051298934, + 4200289418553148, + 36400789737452, + 1130969381473714, + 2711950337429385, + 383257478729445, + 34216118073459, + 207676987208794, + 2289032616627962, + 2352656759737049, + 4192614746039313, + 1836468781260145, + 3237833987957442, + 2407842065300146, + 2930396736151841, + 756331885296781, + 3275441724119897, + 3018977752413625, + 4051370717652348, + 1579905720370547, + 1428185870021080, + 3280790129430423, + 3075594910243074, + 842961376435311, + 726310620306741, + 882469432680813, + 1777548803404445, + 4157007688157638, + 365145932138201, + 2588681240772568, + 3277110501734199, + 4190882641652054, + 2802708590614333, + 1633565286377155, + 2514650422794116, + 1932095729023606, + 2561744937880018, + 1102319385264974, + 1232375696349373, + 2237666227007899, + 1561422387241816, + 4351478006222184, + 2524568736370708, + 2083596946536149, + 4308891999913925, + 368329146965781, + 3926696553239853, + 4017895581730875, + 3259864960606660, + 1255241816999410, + 3454079388221749, + 3842814886357299, + 1613947285844490, + 775634756997106, + 3778673132537997, + 872495789796723, + 4489703899695698, + 4480890081462325, + 1332584789572201, + 4036052900982108, + 2740477205553610, + 778713294198578, + 3203376251558451, + 4120704953396658, + 2863593250104113, + 692687503771350, + 3875673819501116, + 1688340535834158, + 3645262600516689, + 3267447906403406, + 4065765515400153, + 4307071102866013, + 1800928910501390, + 1688223875228832, + 3096411903121185, + 3378487767481314, + 4195966915752493, + 255002460412381, + 4127723668580235, + 3544645527150507, + 3576766117688508, + 2677187639917474, + 2797078075040710, + 2317372632037949, + 3085125050985921, + 2282706277556186, + 3538724976812124, + 4264288461352898, + 2693906062224808, + 3218431963071911, + 3880371354551355, + 4084644102726065, + 1549082033693029, + 3156495091189551, + 3063426738411540, + 1448477482172572, + 536817486305925, + 3086839027917291, + 1645807368604733, + 864890873001438, + 566324227946839, + 3863358972581744, + 1524151434332697, + 1983056544767635, + 3468726964166601, + 3443691523853212, + 2112277751787973, + 1291906224065256, + 1612158911825477, + 4173217564726774, + 1804383461369570, + 2892407783308656, + 3905489508971336, + 3537467136056792, + 3880456984500449, + 4124137603804370, + 1660884908390041, + 2812109235063329, + 3042144137703208, + 3394454326113687, + 1974723622187360, + 3649203897846250, + 2131253794642329, + 71990453526960, + 688937944636373, + 3308578206144945, + 685316942082456, + 3075708784723219, + 3991249165080566, + 3804329360523466, + 2248999791900950, + 753650253706643, + 4285455989914158, + 2533494605010936, + 732630943965, + 971559207658830, + 2183810958973193, + 3900753977883699, + 1246455858031940, + 4013450999521496, + 1301414793314988, + 2874521046203324, + 4141421213003824, + 1245328523927716, + 1206315575471751, + 3049541025208647, + 1704699826235132, + 2856839791561292, + 1262142996971653, + 2341903753104870, + 3451628465385775, + 3993328298317992, + 3983719177486293, + 3656970990209651, + 2121313746392936, + 471599587119686, + 4031681549831083, + 130811088894726, + 3025925043526252, + 1464504369406317, + 2240669713277923, + 2130388565865646, + 3978485150789844, + 2704545667326818, + 2299450892122207, + 3334261099400017, + 3551264865072802, + 2838461897083596, + 3200730824283650, + 1714631899015675, + 3944420187040066, + 2217664469836465, + 870230969646845, + 1337186334206456, + 4219212577602481, + 2568346193148634, + 309165011799601, + 1106662555151000, + 590812619875168, + 552160365112505, + 4362347231803291, + 1253457840196011, + 2416510006317886, + 3704309276632005, + 567492274755740, + 1247563920310803, + 2232573614433350, + 2540170264082957, + 1714778409718111, + 356144781214483, + 3121152569854224, + 2967873883700926, + 1992871487781888, + 979938802467433, + 1699404517715312, + 2989900856036224, + 1041278892388108, + 3277289887829450, + 2096697901643223, + 1628004106497085, + 2609054277051453, + 376974476116591, + 349174721869361, + 3011617210160591, + 47424827775953, + 1712113848192550, + 2310167513328132, + 3411818466921567, + 4498656122914033, + 1259291139343402, + 364127623447853, + 4127200359457397, + 2945894393370573, + 1519581157502784, + 471958955735875, + 863827015446781, + 152779667553510, + 4042791967744413, + 2873630942555327, + 1456271837346939, + 1790706869220997, + 3832538585872935, + 796481881905993, + 4484774580803771, + 663812365218309, + 2785130569138368, + 1443049985554576, + 449087840197663, + 1739006372906918, + 3008847083546197, + 501866396095190, + 197950866840943, + 57798293303436, + 2509785039115400, + 4226237094338659, + 476739526237617, + 2084454855787228, + 2988391577913312, + 1227855969059171, + 3984380080414040, + 1582208160769185, + 2520989391555735, + 3307221879779497, + 560610737541831, + 2838277482758616, + 3580688158942872, + 4123664559461121, + 4189024129860644, + 3814127891115801, + 671951454725606, + 3108208328179971, + 26943627871123, + 377155084034422, + 4076415314496179, + 4059069788560779, + 1240363749384884, + 3665672851569683, + 1862192437561356, + 4149544678410058, + 1866808919432835, + 1644569279490782, + 3773013970511136, + 1557826277666863, + 292148380834781, + 3208154026725350, + 2476923894798379, + 331354070505171, + 415957892432579, + 864907209147027, + 3718054419408253, + 400193854212929, + 1215795096388949, + 2479383519319955, + 4296745598783094, + 1218181009236129, + 3127689416952242, + 4025159020357678, + 2810397208926772, + 2063498775067476, + 546641417581927, + 2723953161964412, + 2163152247880623, + 2192577088145332, + 995443083521006, + 3692193322098828, + 2960075428044413, + 1277571156235603, + 3858271362835942, + 2676024868866747, + 4437599367826255, + 4192329242519894, + 2635750309567439, + 3083467505205697, + 2863431177783258, + 142238998722422, + 1476823323095126, + 1714087581599917, + 2231381758969554, + 2362626039903458, + 3108509647021190, + 3801065681012486, + 2616882437675465, + 2168011332942222, + 1522746089868458, + 3529200827916917, + 950518979533361, + 2935021445565301, + 4212046908671745, + 2081095142304150, + 372275505779624, + 3132397034140498, + 3994826952146633, + 3004638663425299, + 2939584477001113, + 159417581782673, + 3269501703143642, + 3083205762006389, + 3287377891443871, + 3626484579986784, + 1788000353838400, + 4458295202740711, + 1450052389075883, + 249427737914892, + 2142789502873449, + 2031253686125782, + 963052027571325, + 3677257518921626, + 1682789283944700, + 1426888746934129, + 808330921348301, + 4384064010896994, + 3298177240122329, + 922868767668305, + 4114857040127739, + 1585346512771111, + 754355240214293, + 4096126469561132, + 2752201473085647, + 4013140488047573, + 1053901358938743, + 2946837621392206, + 110524111492630, + 96062628453919, + 4027853206321947, + 162410780986840, + 2050238040735807, + 671264569577113, + 904552031048557, + 254509678183957, + 24877072896699, + 3946947469845630, + 843025256587564, + 2483121323980270, + 4009108494812317, + 3634847513432352, + 2697343826633517, + 4227236783610706, + 4369559123523732, + 1863406463161587, + 2286094362331032, + 1841290236925188, + 541022652136853, + 3788424833136809, + 3566691234460558, + 650978877979275, + 2869491839618857, + 947507315460634, + 3858753968370418, + 3761373890057672, + 4198901157264802, + 1624208846558964, + 107724499343587, + 1818166726301060, + 3927744512390090, + 1279700595694790, + 1493013212797861, + 3746083513827419, + 2228402123224690, + 1142785597398310, + 2697157706499305, + 3418229479297689, + 2385859103745990, + 1953353104655949, + 4084984987761382, + 359364023190785, + 2511472670739447, + 2461634685449971, + 3779514531273503, + 1288516444615281, + 1974734318206155, + 2193208267199190, + 43353906155994, + 519042381863845, + 4136954491807400, + 2159262165156906, + 2494244731772284, + 3802343558460229, + 3287375871406911, + 8984928784442, + 117388064844905, + 2238968274470231, + 4164474932071913, + 1392568655452210, + 1495153421783368, + 3899911099875440, + 326881451204939, + 3902459586372231, + 4342216103589971, + 1879978463530151, + 2513071032218235, + 3369217912435311, + 3282147240763986, + 118235266641302, + 2516683717892328, + 2646458644588099, + 2199306326732590, + 2096144618113694, + 2999236119192092, + 651566974164065, + 3949721540746009, + 3443338963768473, + 58030515096515, + 3710654253952911, + 3284220028215929, + 2694003276620467, + 826191806554919, + 2570557959073610, + 2461213078235446, + 2907966636247625, + 315726235210734, + 1256652539297543, + 3802675701106789, + 3213149781401546, + 1457949755935021, + 2134212640703257, + 1709110187592860, + 2152478174432754, + 4168833081109741, + 3044122103358666, + 3126541044224685, + 2860659200705, + 1792608464175065, + 1371793001498483, + 118245451756099, + 76455755764912, + 384397715908058, + 1292592183095488, + 2541892690244026, + 2339014140069422, + 4224300912053567, + 3712997019183618, + 3620861808117005, + 2649030143301493, + 1404569392714576, + 3710335455626054, + 447011806530636, + 3732028666807773, + 4498388650190014, + 3863523505918861, + 1211437390905193, + 277366420428551, + 3266834088740657, + 1977115427159688, + 4302333993259818, + 1424410876059175, + 2595036317373173, + 2619676852656311, + 1192073102456992, + 1583888430341854, + 2892773480786458, + 1313684123937654, + 1920606701828736, + 1775725361369534, + 2109721413381960, + 3118164552938774, + 1154807034630261, + 873484082147873, + 1813460935054436, + 2840873618982713, + 2614222615125597, + 2542903291130227, + 985766349917813, + 2358176687569954, + 2863001065964990, + 2094125460260526, + 2166540009540561, + 1308034112055580, + 372565728119686, + 3491907035002128, + 622328244695589, + 3502768851785379, + 2494680744686399, + 2610743182379959, + 2942096637684420, + 2147101202404709, + 270119504664132, + 3557324527411938, + 4222309020261664, + 820378262037038, + 1265744374507631, + 4348108003972652, + 1994971002160128, + 4448477008058485, + 549835969054880, + 3404512477286149, + 1130610192005980, + 3908708012332784, + 4367879465180018, + 2419418379252895, + 3259656385266724, + 1572832659610550, + 2179457660568213, + 3345276630548121, + 261879451740914, + 664446683436498, + 1595606750673843, + 143243884664264, + 2672966859042026, + 834640468199838, + 2161753208196766, + 1647664170965178, + 2506057269485363, + 3715343457719352, + 1814127655072542, + 2991070267902195, + 1613534600209529, + 2487752030843999, + 670158004262849, + 493152748891429, + 723279033776945, + 4422199918427272, + 2656255501578467, + 2425568907999351, + 777498011284103, + 607606929037645, + 1259394147288272, + 3531932337858829, + 637543607638340, + 1855830316653802, + 1072874975260181, + 871124761388827, + 4128761493445356, + 4093810524114977, + 4077551147630113, + 1724955997952906, + 1318380421798893, + 2443109416587372, + 1149288567310426, + 2510396250632220, + 2278395263793782, + 4234284940833724, + 1941354522330911, + 3843063943427556, + 751584965888162, + 2487328388615137, + 3018104213016273, + 3242768033097569, + 926474173030829, + 1814171488011051, + 4077197589387181, + 4240183659682281, + 3493885237291687, + 4084534806218612, + 4198133058685578, + 1973132749521583, + 3264056689121327, + 1754774968246811, + 4440669574860391, + 4102610355047066, + 2343075087766897, + 1608422688970256, + 1070257026702160, + 1578666468914501, + 2284381884537327, + 968722131695753, + 1397007403068534, + 1320873521609444, + 3759648668228814, + 2408475919734723, + 3051713903070760, + 1838539452231726, + 290352698054006, + 1695635198444066, + 69037134028508, + 3192458903378961, + 2871426494241512, + 3271712506002797, + 2052338030829670, + 4255179679092550, + 3138922931830228, + 4404528350239897, + 2016285990001563, + 918935064962820, + 150826569029570, + 3239912052681973, + 1131422948593098, + 1908351045954778, + 4355398075407015, + 3481219810671278, + 2376587610197943, + 4424342000922819, + 844284635947910, + 2062644824178908, + 2398727822389681, + 3206688488367664, + 3595949982828439, + 4197555324722645, + 3739982639492675, + 3529255996443307, + 80744215914110, + 1401665699720186, + 2716288244987246, + 3723788759843392, + 3954376892971484, + 153909943855307, + 700417415790309, + 3189726772682866, + 2629702441274062, + 2299978681683614, + 3502515879876608, + 1122595526283428, + 213347857212515, + 809496222040377, + 1967563868346711, + 3993712085535376, + 4026457000293656, + 3306241310432091, + 3844457012087089, + 1155050192693326, + 4255753536363516, + 1426633870876115, + 4242751783301149, + 4025446143892976, + 1484966756090820, + 4436252183055995, + 3368924121629563, + 2058847930167233, + 975990494004865, + 2718867382963893, + 3933647238933555, + 3963123982875664, + 1283473508203362, + 4205866634945710, + 4014675390291551, + 1986841385896259, + 4179337012490013, + 1939985490837593, + 4345639144912571, + 602775572998479, + 2942460712133274, + 2697637741509629, + 2269242909120067, + 2002860260815866, + 1436560670642300, + 3313437657577786, + 1400692059426909, + 3266848608560039, + 388529364474501, + 3359039101311385, + 3972043388485526, + 230021045444667, + 2979429141240379, + 2907995660458985, + 293947042944229, + 335466952998309, + 2095948336938249, + 2091836835957026, + 3880117846922311, + 3310996019751120, + 488884138535899, + 2899019745702726, + 339171417455362, + 929117727736671, + 863291320170824, + 693098662136721, + 1971315629309411, + 1581295922111104, + 212426890972307, + 709675961362409, + 2542971774780841, + 790984520347363, + 259506392960058, + 3196516728542153, + 3702404571414379, + 342620580276652, + 966707364763276, + 345406465672135, + 2839173550115038, + 1046701951809016, + 4392551874141902, + 1867381414602911, + 698713708173631, + 2956880300575790, + 461980010149, + 3412793320944447, + 4271505446834402, + 563173422193530, + 2564576740866241, + 2982991506783055, + 1056599914324327, + 2009447159201993, + 3280601264349858, + 3133532075495225, + 2685085170267990, + 1112639989615481, + 3402099870527439, + 2806051673762681, + 3899662356010590, + 409256932917763, + 825962748132320, + 1843472966045787, + 4184850094799648, + 2508508279903321, + 1271361435228344, + 181897672296472, + 3046183349212981, + 4279722950731925, + 798090712049434, + 1784475284621754, + 3113377949452945, + 996394088742322, + 3169654177750403, + 1176748302451592, + 1051629151406289, + 49057462340775, + 3288189008198610, + 2326678675061711, + 1573338252295738, + 1422929651087501, + 3673584707390385, + 1889615430295988, + 1099311472605696, + 1681582612854555, + 2932884711072048, + 4318399102466042, + 3396230049625419, + 4088814048241870, + 1440052838333, + 3688840960612946, + 3632996555854374, + 3412159944451690, + 3973637884962908, + 1627782758878474, + 2412467247893808, + 4338547161845488, + 361802648915231, + 3118272333598714, + 469091754484869, + 556275140539037, + 967360526353278, + 3838197103520792, + 2120898263685774, + 2137375236536432, + 2193937228977593, + 4387934319034090, + 3804963739480349, + 20867162065675, + 2684760942105871, + 2913632748067458, + 3754272670423110, + 2234203899248345, + 3123469164421808, + 2890383368894831, + 1880774868678785, + 779892042913634, + 1241140892879285, + 3459301492931725, + 2319403524803161, + 493497554730099, + 1228338756605008, + 3899036865304460, + 2499724064165290, + 1916005670964420, + 375773411162700, + 1693630515009270, + 923013540418939, + 927720555396043, + 3474140670517742, + 2279309605083376, + 3785371752764539, + 1643988389445710, + 2168908754559332, + 2639495641506650, + 1449775284410367, + 464214183422510, + 1713953154789810, + 1110573802773847, + 3857894475772816, + 1158767719120009, + 4065842924983686, + 2703773636632640, + 1269294255344007, + 2416103899198296, + 3692560160678147, + 3702130715489067, + 1933708679535730, + 351208439772534, + 2183708328835966, + 1294972750725383, + 1305014372419822, + 2059055004669883, + 3163533632224398, + 3835393449760573, + 3021186182983226, + 1710148408965971, + 23535969608707, + 2785144910779623, + 2154160992506061, + 604737661840057, + 1381757277421704, + 3973362062019683, + 156172166983295, + 1050180620626700, + 2716692200656812, + 3084120755710022, + 128862506291231, + 517974675075893, + 1778757663565706, + 1726263301221618, + 3222738793431797, + 3291070064160223, + 1414501670468664, + 49693749685683, + 4358383897391481, + 77158831225691, + 790482810987978, + 156917033383838, + 2012978657460722, + 3344371703973355, + 2981518273941324, + 3202866361405644, + 2433505789545312, + 4359279815361945, + 668254962625877, + 1932809424982875, + 2880586751597216, + 2034961099814296, + 3830308895709222, + 2963019086276773, + 3046229157071921, + 4317639106081806, + 2396949577172439, + 564952155455143, + 4046640611091369, + 802923469135293, + 2703022155962397, + 537938354857150, + 3030700120739118, + 4380650965591098, + 2583918045554828, + 3055580558799703, + 468318193752436, + 2574246627203633, + 1637099363644671, + 2940622280153351, + 98910474399875, + 3200847354409827, + 36877720812516, + 405289823505280, + 3534625927045360, + 1538986274282841, + 4235549099784094, + 3050707280807720, + 528869238791892, + 3653990925430677, + 4392836167578795, + 299497189268905, + 3156270156813361, + 1737909140292647, + 3836772799529509, + 2420829715180046, + 4248708725975301, + 3841292885016819, + 3028082790567442, + 3395357886132559, + 3559174982107708, + 2759255974666174, + 3340586820458021, + 3107954583160994, + 359560961705906, + 2194103114396579, + 538580149841164, + 1524487580246101, + 365602972521481, + 1317352659238909, + 702426322379853, + 3262228045298487, + 1733845807207859, + 3248910138534748, + 2018448306043215, + 4479977090139802, + 2401909717899567, + 875737694620705, + 25329255300981, + 1751619716176942, + 3756835546822632, + 2793098900796254, + 1416618202976969, + 2278854885843679, + 1441210138811776, + 7214213780322, + 176265095737277, + 3663351044211395, + 1337369240758851, + 1817373974651117, + 3965059139357228, + 625591822103306, + 730129541710882, + 2677723852215771, + 2954260946160974, + 246148197205863, + 821088097103060, + 1383087606812354, + 2664317704560574, + 1989722279231377, + 1511332993371010, + 4144388321116437, + 3431196283297822, + 3419158360704984, + 4201508201301890, + 1112650249656332, + 305474987071846, + 1792775276172847, + 3743169206482135, + 3519200321723307, + 1357229367256523, + 2430439091324290, + 3104515816810294, + 1954218340992334, + 1115242499713531, + 4196381338684134, + 2421552073090323, + 1938418703961596, + 168744818899301, + 2474245051431174, + 3922126220545466, + 4147015737339041, + 4483318078977176, + 1778717175907408, + 1626847830743635, + 1679567382930702, + 3548360274865751, + 1519899009037187, + 264263227079910, + 2876260833755411, + 1693545517986678, + 867601774262908, + 1537278722283384, + 38295436848292, + 3299587074490771, + 2552615605735319, + 1589978841911972, + 4157104648329613, + 1839203665778617, + 4256777735355637, + 1181279289667824, + 2142827963882311, + 2376587577139067, + 4496834789941856, + 2934519755469582, + 4300067551661281, + 795344542080157, + 1898286410172777, + 1056543472753214, + 1730415559564710, + 2349102973781222, + 1905874775855397, + 1658074231023887, + 1643829547622905, + 4002004158232774, + 2615182181597404, + 4070245434016808, + 822292970358716, + 961737226034090, + 268770523017356, + 4304577061174086, + 3130738765320314, + 176658254337308, + 2987564262589970, + 3968628100039253, + 2017720460609663, + 2648777887624524, + 1763509684616103, + 2920977833204286, + 3973472446851882, + 1971083809239849, + 3670237740857601, + 3224524006077970, + 403420579082807, + 3647991778366395, + 1941564963902198, + 479274466435845, + 566571696014999, + 38639028257698, + 2293503495595143, + 3506793437851089, + 1779559891937744, + 1080157779709572, + 2163822826657925, + 3035110750960774, + 1972434487462029, + 3351326908127689, + 32496924245633, + 1205629765089118, + 942224356340337, + 1829833489373731, + 1472628703178999, + 433610128086736, + 175833463499975, + 2949110335459312, + 3690241651466570, + 765296813164271, + 4433612572187095, + 3234916019225804, + 1889684638052496, + 3816040934702702, + 2386990653883481, + 4153913789369349, + 1464489154814725, + 1950846777411626, + 4000678705735461, + 753444972488295, + 3309723568564117, + 1937219903238118, + 33611632086177, + 2144878216726210, + 3441739584568008, + 3969958161212934, + 3598931851828508, + 1720587870628892, + 2515948124098509, + 4116445875775944, + 745646412356135, + 602473168345201, + 320230009127842, + 3053051421434588, + 4491947868213600, + 4410400727047958, + 1342632012137948, + 936507292862778, + 848777931186008, + 1111410731565960, + 2275620077164665, + 1506664262136785, + 1741215248857024, + 1412406148953106, + 34941062657404, + 3923179744282950, + 3418047786533783, + 475767039726823, + 3795491281687121, + 1177408391508814, + 3114616172313616, + 3935171470374711, + 28430368503904, + 258430165629577, + 1656843372437631, + 2912698384648105, + 1368901731353235, + 1325207540488804, + 1160189785535438, + 966827676729444, + 4423104345031543, + 4306199154007008, + 3376183448795139, + 3772867206780181, + 3647771000575989, + 205918358981181, + 2734742783907035, + 925696277739922, + 2566597899593622, + 1292149211441965, + 1788785278304015, + 4227055067303465, + 2152870268031668, + 3590010872372490, + 2704744258112835, + 2377863689796177, + 1281991162269455, + 1639507262812430, + 1142960247461773, + 1762083237455979, + 2154013108626581, + 3343711368125220, + 507597209306512, + 3491796807775613, + 2845415535429789, + 3848982121075290, + 217079499115642, + 2393540714066980, + 2841824782415758, + 3545266975004722, + 1615038736559770, + 4197261093828705, + 2377032495334760, + 2113459081789586, + 4297150982926913, + 2188928233899387, + 178472426363759, + 3684041374223488, + 4448996735841990, + 3515507770751565, + 1737969334687562, + 4239689753065549, + 3267857817025941, + 855893444541138, + 3026845188290218, + 291667277449673, + 4444141176742159, + 1455681166006626, + 597422692923300, + 611123940090741, + 2105137595553076, + 402599720588799, + 586798236951262, + 347747072769682, + 3567793136304778, + 1482173655299421, + 626865268479709, + 3664821479706249, + 1914801749359597, + 1087764606084481, + 3500748042389804, + 1837205808488407, + 2026169432177292, + 1486915229293237, + 3190539596754808, + 2723565111517108, + 2477166479746939, + 3907836603173588, + 286535371614192, + 1015316100237706, + 2548762594164665, + 2446348463944898, + 4017094782169165, + 1008637461232501, + 2671343331845058, + 4022725170251443, + 964229628816072, + 585266337566660, + 4207550287826510, + 1626750264490344, + 2152496084249224, + 1570847552807392, + 2184204787481836, + 2283314425742430, + 1764354300681140, + 2615890304060928, + 3974221398300750, + 1017351768793194, + 861727586004745, + 1404262509993021, + 2414623633704293, + 1340098175203672, + 4023633310139567, + 2811928545161354, + 3059725838041929, + 446711988461252, + 2883216512232596, + 3818839143207365, + 2822142816714256, + 1971561883501344, + 2390657283342189, + 2622817438749444, + 1924449693690264, + 4193911390726823, + 3567611775810111, + 392208492526051, + 2943314272063827, + 3310655649905804, + 3095257985504818, + 1387392183005212, + 4105666623869993, + 2759500093101827, + 3142947506852075, + 3407463595294178, + 2512456174075843, + 295794425462139, + 1243904398810048, + 4075381044371789, + 2046337592420515, + 324296590281264, + 204130984262930, + 1877912805343374, + 2775385718684157, + 3371869086455043, + 4256436448786012, + 1844166071273259, + 350708776391399, + 1381965812129969, + 3709372482577963, + 1569030793038111, + 3882494975534008, + 2478090082980566, + 1575544417872581, + 1935014864839040, + 2126764797354150, + 2058911319770034, + 3978535808328594, + 2307199860066323, + 264201351222823, + 2390107742292294, + 3296552347167381, + 2636910834784634, + 2738959189629339, + 4436831579987645, + 1452001611221637, + 3488945142483874, + 3593865769864841, + 1830606182867547, + 2033754062789711, + 4189116890248688, + 2010238949703115, + 190523794816629, + 3249525889360387, + 4136008039808446, + 2432262947150109, + 706114275907674, + 1958302939069408, + 4249318866140215, + 1286159673955848, + 693005532715205, + 1771728415753925, + 2905178956189336, + 4333833517242443, + 633601464613094, + 3918961466885003, + 1431555329533961, + 199879675721348, + 1183941190319661, + 2738472381216512, + 4079089060750918, + 2814492862227585, + 3433761070591951, + 1159851046932405, + 471570721916030, + 3861910755849705, + 2848193176130429, + 3737119620345309, + 822256881557678, + 3473967399223922, + 3466994111033434, + 76928004163127, + 1250238025891770, + 3116207754247110, + 3349379929097617, + 835599352893896, + 158143227360740, + 1497256528670355, + 964286199012343, + 4202339009085946, + 3448877127685228, + 3750122155100355, + 3933388867132891, + 4162795311663333, + 133283899185989, + 4039984494152294, + 3891384527641160, + 1740348199557977, + 277009307732931, + 1683886740809, + 3352009511810661, + 2230798619583078, + 3344511553151241, + 3489649131510607, + 1663504137711969, + 196292223069982, + 4482261667979090, + 4456869885276479, + 3641041203212191, + 2158072959366559, + 3428169965284249, + 3320254478333337, + 548197862283568, + 1077349237141971, + 1210199193035902, + 3076992826110148, + 3700278567790381, + 3960310413447908, + 2818604318500033, + 560176613359433, + 4256286289566757, + 4489066672016532, + 2749395247186029, + 2575425345516011, + 2740676735644615, + 2300535301262756, + 2783339756190377, + 3168287341330204, + 1848690771066820, + 511645696523388, + 1723933491427747, + 3458382975285327, + 2098796824471924, + 913409612401749, + 1753346473416987, + 1829733442631859, + 2011154202489978, + 4039534234867413, + 2705302136919478, + 2016753369317181, + 2360528583575048, + 1056668239576608, + 3678673362803182, + 2417859026760461, + 3115368842194968, + 2900891726226510, + 1722777018390583, + 83805508457861, + 2528108287657139, + 4186539592679345, + 895438118799754, + 1027867250477181, + 1312169136519697, + 166337037084371, + 421339655551944, + 3147921256566081, + 2180957580434254, + 2041005647337538, + 1317817123990599, + 533873178400587, + 1176387245697077, + 1317866390962161, + 2532599348451500, + 2454371102933833, + 979265211779404, + 3181172664288968, + 248343081765296, + 2546774021149962, + 3707243397103303, + 2478136287754732, + 603736412994811, + 2972624082631659, + 423141001434158, + 1058785899074419, + 3694046680336581, + 2921513197128902, + 95847059753244, + 3896918642372889, + 4205072630920021, + 732281591831870, + 1917625717596113, + 1412825870810719, + 850912789340724, + 1296630869930646, + 262044857647465, + 4403681497983864, + 3731128363887385, + 2159854442654104, + 2270404511853010, + 2269165863234252, + 2817098772373916, + 338463511108596, + 1929100320851057, + 4001174316570063, + 3555919763931520, + 2962137053919402, + 3456423670104610, + 1669060061786890, + 925565607064138, + 1697829628972957, + 2923602527332633, + 3043674062082468, + 650753975536861, + 1196356428323015, + 3939553951399207, + 3840135217096067, + 76298443255860, + 1843979660310239, + 2082842130111349, + 3949026985801341, + 3018333892528816, + 1631265948283409, + 1745075041631093, + 2627683223097252, + 3480323900869277, + 189465379899271, + 3968471150514112, + 2657435347873081, + 437073298264786, + 3128794903313048, + 3608112685240603, + 2125864527752949, + 2975010350903540, + 1544953926113456, + 1390833838897563, + 2583102010267327, + 297400889771430, + 2264920800007260, + 1693984936579339, + 3102169298553631, + 4345311341065547, + 2345653465463602, + 2364973028959096, + 1089988183890262, + 705454381652400, + 1176481135954128, + 1696870507333061, + 478461747047456, + 3946666091012557, + 3385042898152762, + 1081073042952661, + 43185195138790, + 3193918631524236, + 151855353223945, + 1470604153981822, + 3439705200944078, + 4480274688490568, + 2480766851551965, + 868524273688995, + 3583259599060868, + 36920538439149, + 591378010909890, + 2797634763435835, + 512666674590567, + 2473766778376820, + 2589887187784435, + 2217555069655210, + 2081533154073842, + 175961748262946, + 2867991524551372, + 2549861873037300, + 897034756500665, + 1328095490766623, + 2310239845774281, + 664451208138052, + 1351633731570334, + 3699380714397258, + 2320997466353135, + 851242114063413, + 16204066281284, + 1998307852484407, + 1535285445111699, + 4487583149112646, + 3423648680868026, + 3015611229907749, + 206345957238377, + 510924934882233, + 287102026351732, + 2452475080215590, + 1345345671992082, + 1607863010685196, + 3927720839155995, + 1604295632931854, + 4189993406209911, + 1186360812002658, + 2588849271423942, + 1064586142242133, + 1567791211356278, + 4152040500695558, + 621472055250028, + 2936569233256071, + 779389538763823, + 2658839799535002, + 4421418324155473, + 4199312736732761, + 3449990172093224, + 673432395596327, + 3404989501424505, + 1491990810568758, + 2160672282330118, + 2148938946961184, + 3107269943604933, + 1287984982864681, + 3030290691496148, + 2366397774944389, + 207214856881569, + 1138802091229338, + 3785488013492094, + 2269593223703764, + 2137554991448272, + 2555846693732245, + 628682721549771, + 413638602052510, + 1240739036020131, + 588706483372977, + 96064171400389, + 3309859097674091, + 3559720717230776, + 3986920467819347, + 3768266486918838, + 2031839682198169, + 2105037333829658, + 1308081539878576, + 3861367719944292, + 3088923454549377, + 4052343602717702, + 1060071867599469, + 3708668078376848, + 3276584952871541, + 1162787595037505, + 1638829160000197, + 252235402094970, + 169369903771853, + 1409569883726780, + 212879171004434, + 2026186544773071, + 1245754135275135, + 4172852696071119, + 600482920380670, + 2043659104132280, + 1128998116459839, + 2139701097659351, + 2951965382697175, + 2912713067870311, + 4225713587007822, + 865539156313991, + 359237611554345, + 1575647911047014, + 1085282971233151, + 1889124176749082, + 3147108454450547, + 2534191520645691, + 1214726205798891, + 2634866015712885, + 3363125671376163, + 890341237529679, + 35449486099924, + 482407697027738, + 1652542426658115, + 271461479059141, + 3314964986535562, + 374716704283028, + 3309346820487502, + 2788899933013517, + 575505434613225, + 3423095252880898, + 2917661534899496, + 1744793138030367, + 270335713498747, + 4293813630657943, + 4457958118208122, + 594767006549169, + 729027255403256, + 3542392503784734, + 2217835762110855, + 1926469015171244, + 2271800988834559, + 2869243009323063, + 1968549282748477, + 1083515602066023, + 2958980448958955, + 816884489184649, + 291496633132239, + 2400744902689825, + 1122958068597646, + 2649770377372861, + 4188824905057372, + 3703311410873110, + 1793298496385719, + 2787795349951365, + 4110716952809767, + 2040483977349325, + 4054049675051082, + 2902608066297339, + 3945037557709440, + 1371327323654739, + 2564130070956281, + 2866191236145631, + 2835142194168397, + 937784702650220, + 3159366774280948, + 1834940231534820, + 2970460490092527, + 2431030583891856, + 4254091408567907, + 1112185402593053, + 3340651943928768, + 3570461293546601, + 1505220697148920, + 3241962294290896, + 1424355485266982, + 4418692095853122, + 3515582817785128, + 1434279929846836, + 1191861310855670, + 2929119738415984, + 1039476970719488, + 744479434242422, + 3952186511895388, + 935974425535309, + 1385458137760243, + 1283309793870121, + 178389870431181, + 283668694619341, + 2342440717068120, + 2113780402573849, + 267445711268696, + 1779464298555484, + 3107467219756897, + 2671946364607535, + 4164273661227056, + 1498219183530970, + 3016918932947021, + 982393743894519, + 1408722635088656, + 417603031077671, + 107587905733380, + 689476721873407, + 3225745971093022, + 3884967359091954, + 1880972172588737, + 2322710271099187, + 1569008005664213, + 1958140328244434, + 2596346600227067, + 1867747325262295, + 2981358953854919, + 496423112139710, + 451693620484727, + 3945773918203895, + 1807102639623838, + 1959837567396593, + 1231771566445021, + 3811163095807359, + 3643580030315631, + 128677496403433, + 1420408806117581, + 888168651854641, + 185051476996121, + 3574821266345006, + 1787305812373528, + 3822553323367467, + 2111101085603209, + 265299146240912, + 1783511239048477, + 752359179882485, + 2331357013460068, + 1358540137149537, + 3136092391677640, + 2836163442681240, + 1896911327431670, + 418396389242862, + 4163620548823137, + 2071417390309486, + 821482117427443, + 3821577664702039, + 1492513686910119, + 4046900872722264, + 2154914903262615, + 1562588145528645, + 4035713911337534, + 3051311559251170, + 1096576846125002, + 4285478226480240, + 1260233262321036, + 4458359864564998, + 1595931679199821, + 4215226219354549, + 1480847042780615, + 1102605580061341, + 3785944200164992, + 1311005327332684, + 1873829967106485, + 2932965171423972, + 2733488272704838, + 2292275777990824, + 3177218749522012, + 228601078533792, + 4490963793333389, + 469259489297875, + 1674103246619095, + 2634091363372661, + 2106629496134117, + 930480860744791, + 3249761820433133, + 4330220452906717, + 184425431964129, + 807462218356849, + 1121784855786096, + 3287786410022584, + 3749896327182576, + 195441642033657, + 137470487992835, + 3642742474885304, + 2861189082234988, + 1890522929262929, + 181157659762933, + 1402689774561128, + 1637509182315043, + 287397097441602, + 3256697750793655, + 2125854288833821, + 1013941286989377, + 1558496267512519, + 686914017301140, + 3402520078487972, + 2271007372727413, + 1194160681285189, + 1928960971501735, + 4112146168829060, + 2976711696739498, + 1982412472689590, + 2360543920406064, + 1783287081285891, + 566746094587287, + 2598662945140496, + 2417143504044167, + 3723239508407213, + 1398824726765951, + 4061327920164744, + 2976817676411186, + 402441763780605, + 3333724216338028, + 2451652755720521, + 2089193961918391, + 1932959460080510, + 1547304284416436, + 3769059274188436, + 1575929961561971, + 1012620068834308, + 2843651757635370, + 3718103066705426, + 3963466243166553, + 963224371491857, + 2910041315697628, + 2022059946871553, + 1714397284377116, + 4375259930005197, + 3447802890438227, + 2066223937822284, + 277060972256175, + 725879665245496, + 2870252220760892, + 1514579901434423, + 3060498765357609, + 3510850678350796, + 185480732986259, + 1722617368305334, + 4446170645305597, + 1942481814552403, + 2275361794218726, + 2437775799304583, + 2634870489986134, + 886022416699806, + 1258866970385424, + 4407693836910974, + 3058305631442932, + 465049726905319, + 552878756578798, + 2650822922412425, + 379241268994264, + 4262285458197202, + 2581153899735478, + 2639696177264752, + 1062468198741310, + 4349976554495849, + 3289793432402330, + 2307707024418494, + 3366692375504447, + 3318749820114310, + 1291380911366477, + 4190416253354423, + 3858092348608297, + 2917516701801124, + 3332365916130473, + 402360110109312, + 1323284369136284, + 1840354495815986, + 467909068248912, + 318333733207509, + 3393791196293697, + 1258868296965077, + 1512688989769300, + 3917982648701036, + 1911083380764364, + 4424852794011910, + 3140693230124414, + 1673672629370551, + 2696320223766170, + 1075396704818779, + 398395160008661, + 2075029269452658, + 1359752265041063, + 2991919423092733, + 761824605225272, + 2150172897801410, + 3720397143875164, + 2070381423395485, + 2207027634951004, + 4368786146141432, + 1489947560655702, + 2340924952651869, + 4038289914379337, + 3717056267551968, + 2078612750232841, + 938165984388623, + 1576500783709930, + 59671347195953, + 1133604277042977, + 573234152740955, + 1715240890647244, + 4106203646131635, + 3333372597030983, + 2998792764309212, + 2596988587830277, + 1084423857604359, + 1799996185088942, + 3605562272068881, + 3721316303405757, + 2202179210313692, + 2169377679981272, + 2010501315116702, + 3156878953752064, + 2433128007027542, + 798767385482211, + 956894558441097, + 1416929716927044, + 3492548571774193, + 1406806333597764, + 2595220550257047, + 3263013463574918, + 2549156900587298, + 314800559712658, + 357959081230822, + 3862485570289577, + 1989959891570470, + 865805578960490, + 3681595050565667, + 1817035130698657, + 576616953593342, + 3576826249191774, + 1323351989206164, + 2566287193562555, + 3985817442418379, + 381055504734745, + 617319266967179, + 3574437768592915, + 1532683895716775, + 431763340230694, + 3615336513708616, + 2197052747737609, + 428525426396699, + 1296729690246325, + 2893437465004952, + 2479946540829443, + 3403615701329425, + 502948937409447, + 2967654673510470, + 2040939341186823, + 1777622437176895, + 1738482960243701, + 3431893734282424, + 1485135461002300, + 4416409885163418, + 4169178319307526, + 3802491314579684, + 1795084510154027, + 3769376004434835, + 717759924523975, + 475633382954716, + 3652185846723394, + 2570280872789174, + 2913378757988758, + 3968723951727334, + 1730666748449168, + 3795796309817579, + 633193375631688, + 96559526729912, + 2623923150962625, + 3407951848699687, + 2720018795164515, + 3645793049923452, + 2702479591350998, + 1783899946093406, + 269174798622934, + 818181952433746, + 3109355169407726, + 897211379006038, + 706092276882459, + 581029704273067, + 1355933838159376, + 3853305956511663, + 334931655546224, + 4443287485656383, + 3847868408142416, + 1714492809125584, + 3207649057620791, + 3676464748067457, + 86417122788690, + 1729791206062144, + 1526756161065359, + 893063614092867, + 3422924056469668, + 1985033172397381, + 2595706463798637, + 3224961385324994, + 3113716600097038, + 1745915483035215, + 471304856559189, + 1663538041942291, + 2785548278959898, + 4306609657210477, + 1923537257222062, + 2752319221504132, + 3043774975831302, + 346624136437519, + 3863781230235110, + 2522529505852819, + 3368013468439223, + 255134986407880, + 2285499713846098, + 1761587210472445, + 1744017022260118, + 3847072588537369, + 4499738423741251, + 3596063396734141, + 2182219303185903, + 1761720369219230, + 2481393010441451, + 3200983155130353, + 2888833144966512, + 431690158212114, + 3268784786998807, + 1481992870276893, + 4245228735026710, + 4253452013796011, + 3156194391095358, + 882650685826803, + 576165119900484, + 952671822458770, + 3698631480883233, + 2201483816808927, + 3097570860060909, + 512818299067631, + 2397005982634990, + 3969486610351759, + 2166942600260260, + 2793690558768941, + 2085292368406220, + 3883110359047129, + 4248031147958107, + 2639581511214759, + 843351319208319, + 2473886986872978, + 2929438379142674, + 1548956105695891, + 4367247383970239, + 864705809309183, + 1015134113903693, + 1356228390270943, + 816776194290077, + 4303376494163978, + 2764859668451464, + 54885698729971, + 1704846808274655, + 2348935711748059, + 170598021890035, + 4227950289910258, + 3959293839852580, + 3430882965928915, + 2805634952025642, + 3991064179572207, + 4383183728977269, + 748501996202859, + 330833804067680, + 3094666360361155, + 1755893377477132, + 2592433151096842, + 776283599930524, + 184043183764386, + 2969342627617600, + 169004971294304, + 3825577347417956, + 566951901096846, + 1500424074364867, + 588463924328202, + 2930226500992872, + 971749346720156, + 2664859422790722, + 3284564298441339, + 1519790844241557, + 4222488109003445, + 3413462269761465, + 4383860896358806, + 1188843417678021, + 2351579675935751, + 1151859423756510, + 3826777265039749, + 3565914179697629, + 4393381308250262, + 1345063447809925, + 2023857086381696, + 1023301139678874, + 4122179102875775, + 2558321239953669, + 1128859810226089, + 700096542970540, + 2022547069445523, + 3482441436647790, + 1389465701588366, + 905319950830120, + 2614141921330592, + 1513378964560050, + 4006979652758944, + 227788836522600, + 1310851454525859, + 2352556955667462, + 1311394537080178, + 1338113831250828, + 2690123092372823, + 720265133386421, + 431086668532075, + 700317608452676, + 1113533710894023, + 94559541349245, + 4357298085003606, + 1538925727100550, + 3469515486535933, + 3328722555411925, + 2826794036049211, + 1155374299417356, + 4310790852038647, + 2860756004569244, + 3682503741155388, + 3327896039671294, + 198227332654642, + 742488599001409, + 2977495554963355, + 3686057928911983, + 2991201570041449, + 1554353354417392, + 4424296320452795, + 548058603031662, + 3790945064450771, + 1758311872015835, + 39227821606229, + 1866174773956354, + 4233737795464335, + 2367826822576955, + 1516358275735566, + 4100569024415826, + 1307925309901960, + 3410748239599128, + 2074021220428799, + 2338479652769895, + 937636484219109, + 268495669757963, + 2471025457917379, + 2846927469010930, + 2097781198242062, + 3491134796181460, + 4193324071339483, + 2397938534822833, + 1811623063226601, + 364275316611898, + 1587919631638888, + 1634806983276426, + 937950365280581, + 211176830916571, + 4287207800041326, + 3050299767551526, + 2290124771179268, + 1505260650859732, + 1790777786348494, + 1857863323825984, + 3055495832585014, + 74703216791732, + 3791469510664793, + 2672049830178644, + 182429410372028, + 3998437335558612, + 1789944679478627, + 3573697189323749, + 3936785709545593, + 349366468135774, + 662008602221680, + 2177824614664669, + 1540960749078775, + 466090251813772, + 4421397521360637, + 2121325255852479, + 666640101829358, + 1891692741109416, + 3688958286172667, + 2967192976874569, + 2681468806049447, + 1049750216563611, + 1607230386524685, + 675696812485568, + 3083218165807168, + 2123311745458523, + 3426229145248790, + 3675609980423003, + 1744906412739846, + 1109437623877725, + 4384159025773396, + 3598141562569090, + 1234332365459609, + 1073965812914532, + 4275398901053364, + 2972459935013893, + 3703084827880436, + 3344780146567264, + 3955605149890569, + 2080529391762893, + 4067302493983719, + 1845226702016363, + 2027893164309761, + 597761464408860, + 1208828884355899, + 4332639654476655, + 3121411058150542, + 3488077609566849, + 2551981803370086, + 3673307609626484, + 1737225754245769, + 3336637772787416, + 2233312227223460, + 2602440353973926, + 3493879639284828, + 2868349823801350, + 4157948419194693, + 1518852537537400, + 3293968488255659, + 1604173226689234, + 1828777868283059, + 3846585185684037, + 1326167584962809, + 3404625849184781, + 3449374573476399, + 493262236161715, + 464894053015489, + 2238352079034784, + 4116554601251902, + 4283529700310167, + 4271238353903905, + 3146358424638438, + 3953203242100661, + 832510916309887, + 4346482351911543, + 1672772303008713, + 915791599438422, + 1500695527397155, + 2760247162430539, + 3483342502354877, + 3235550429621481, + 587401130888051, + 3673835568562514, + 2204714359222039, + 2150247460086973, + 1041529438904876, + 1355309178382598, + 2397879465308461, + 2767534370445922, + 482754022771945, + 52300750440612, + 1868670585200845, + 1704157009695054, + 3781122443375045, + 648950843507573, + 1029684691780033, + 4441907449935584, + 1029232561626218, + 1794224521667739, + 2128153032521608, + 2048395988181944, + 2276518162506919, + 2653454815137125, + 1939065188478373, + 49040750636393, + 1985186664309496, + 4030060333317652, + 3801742037712572, + 4017618522944774, + 1779672999369120, + 3159919955486545, + 1018387776343888, + 589039876435809, + 3050249349910496, + 815165477186036, + 3398117572578864, + 49370952952685, + 182724544856673, + 1329667490519924, + 2263347418359374, + 2782309844095700, + 4124133723656801, + 2229604672328898, + 1266830416629836, + 1729541210370757, + 1022688848604040, + 1710468253004806, + 4421972757001565, + 2228227511814562, + 449255424484251, + 1499832203215633, + 2370777082016030, + 605528847684645, + 1041374926333255, + 1014769432826799, + 284431551029532, + 3414813518916048, + 1684451796564186, + 2364887966422561, + 152864087525711, + 3485073897053754, + 2912703374475925, + 3274696983661911, + 2401337018103659, + 1520532180744011, + 2751369609135639, + 2551706637890223, + 2814521355325735, + 1361897619881683, + 1075560083335374, + 3483999305224289, + 4256706026538245, + 1499775152866557, + 3539915997275392, + 3690421853122742, + 1118168904800965, + 298242511246886, + 1123887951460300, + 4323615701658539, + 1916621544133875, + 1287768825235986, + 997402858694695, + 215875271580089, + 1838446501021988, + 339618463931033, + 791962502885860, + 2227772612753944, + 2007716083274135, + 1023605542160673, + 320123006454865, + 3841831169026059, + 3577792843849222, + 4100142463721252, + 3850440599823654, + 1208649271440345, + 3153415774658665, + 2712076035497696, + 3642497652741129, + 261274186190376, + 3258577543954584, + 654770773023648, + 2584176696783821, + 1587943551151450, + 464637023664471, + 4447217497198900, + 2210211980392470, + 3109257714925631, + 3533838617224300, + 2000982133865302, + 4017577081825028, + 288295916423625, + 2555180167656378, + 3756570845945500, + 1740718855695289, + 1460149878718406, + 3816189717388830, + 4223303051814368, + 1326454366594737, + 158831625070974, + 1523864888053159, + 792125507372119, + 1631593291493704, + 2633190486539517, + 4371679950110390, + 3172389680125102, + 16411556472132, + 4079442553341556, + 2138195138457841, + 79770051494418, + 1128178079785365, + 4350928227065577, + 1561140788216912, + 649497268958289, + 1478988936028090, + 2441663615085469, + 729067575006832, + 4455779910146380, + 2102258426963530, + 2512465508417768, + 3150832655826199, + 4330444016487839, + 524844162934274, + 2732998109109176, + 2601192148355282, + 1724533258805677, + 3724585640671683, + 1368598012911520, + 1278467697415908, + 3136232638012726, + 1830027072710921, + 1744258116888553, + 2690385034786810, + 2164612788996707, + 1602989893743138, + 191703284075914, + 658141138729896, + 3525593130362101, + 4481083801890608, + 2659701657909816, + 1593828343486065, + 2595774025478464, + 4159852846321762, + 4376736121460309, + 3615298014402840, + 3208291104017996, + 3123019945816192, + 1352116059703894, + 1282735166875042, + 541190027858138, + 4490219310880916, + 2031537819575347, + 2640965156775955, + 1029498238722044, + 4438172729695166, + 104797382750228, + 912195510178129, + 2749742184603370, + 4396787120686492, + 2104498281077713, + 2455655112646540, + 4093448376109006, + 4333674511926114, + 3241665550624910, + 1687844404503320, + 1887142214548506, + 2832296664041188, + 1501813158513149, + 2270831963950647, + 4341770402962929, + 680022267594300, + 35914576503524, + 27910893711533, + 4288087460256904, + 1951110363368288, + 3161376590945918, + 1361363054163823, + 487308040404948, + 2198623835124458, + 2887839786209244, + 3977381128645091, + 674407195754809, + 725774218623151, + 1446712863484748, + 580423591744482, + 1894137915323307, + 1250399324299520, + 564396806965061, + 1691450874394842, + 3669524407356349, + 1965121729200697, + 1392720986926560, + 3067211147362071, + 305331916822103, + 2824956200556994, + 3783963306438807, + 3857959569721179, + 3945450294423966, + 1709039893121096, + 3291414277272981, + 4416620895695452, + 2161078038150596, + 2487561367262521, + 2588051680778424, + 1076478446530749, + 3304257372068181, + 4489110011776239, + 298064547387353, + 1528903114340821, + 1413869252319445, + 2980121385332787, + 3352831727392199, + 2863525441431557, + 1772612854586808, + 2761685116256659, + 3905838916428823, + 1889855845902145, + 210820652524576, + 3949923374775722, + 356381114517755, + 1758770904166135, + 3252029689430278, + 2354725381651560, + 1716751736040142, + 3045813447617361, + 2355156301710002, + 2817097800873388, + 1255490078428292, + 4014376634112374, + 30368838314446, + 4114831044359832, + 2252636823006675, + 3118288874788677, + 4429930912149358, + 4168361486215256, + 3504226154451514, + 1002790306714775, + 4493544289278162, + 2063612036078116, + 2665637472816870, + 1070176529528184, + 578325023929992, + 2778253829101313, + 3828199867408488, + 906709650994740, + 2662242679451426, + 540137613948743, + 3094518366697546, + 3889401073704500, + 3393944960072946, + 4228386128735305, + 597714930585739, + 107177898042546, + 1038158845827221, + 3567919603079898, + 76791935217808, + 3459113032500367, + 314215835046136, + 2691603339973470, + 1692024944919066, + 1184813477380249, + 2876786180093015, + 548159083245866, + 604849701843154, + 4072123162169371, + 2263968745653339, + 108243330874092, + 2748624519023359, + 2102598410658911, + 1285474233648349, + 3762671172469252, + 3676854683085908, + 1197039305557429, + 3344263131789597, + 1049087126692487, + 2806303589594870, + 2009671177607643, + 311146425294865, + 3270454610127707, + 149973997110255, + 2413745771370979, + 2245520215878484, + 3462205961364820, + 3353457958121831, + 2160383177864324, + ]), +]; + /************************************ ------------------------------------- pk_generation (CIRCUIT 1 - PUBLIC KEY THRESHOLD BFV) diff --git a/crates/multithread/src/multithread.rs b/crates/multithread/src/multithread.rs index 096bd7db37..b514980d55 100644 --- a/crates/multithread/src/multithread.rs +++ b/crates/multithread/src/multithread.rs @@ -436,9 +436,6 @@ fn handle_pk_generation_proof( let pk0_share_poly = try_poly_from_bytes(&req.pk0_share, ¶ms) .map_err(|e| make_zk_error(&request, format!("pk0_share: {}", e)))?; - let a_poly = try_poly_from_bytes(&req.a, ¶ms) - .map_err(|e| make_zk_error(&request, format!("a: {}", e)))?; - let sk_poly = try_poly_from_bytes(&sk_bytes, ¶ms) .map_err(|e| make_zk_error(&request, format!("sk: {}", e)))?; @@ -450,7 +447,6 @@ fn handle_pk_generation_proof( // 3. Convert Poly → CrtPolynomial let pk0_share = CrtPolynomial::from_fhe_polynomial(&pk0_share_poly); - let a = CrtPolynomial::from_fhe_polynomial(&a_poly); let sk = CrtPolynomial::from_fhe_polynomial(&sk_poly); let eek = CrtPolynomial::from_fhe_polynomial(&eek_poly); let e_sm = CrtPolynomial::from_fhe_polynomial(&e_sm_poly); @@ -460,7 +456,6 @@ fn handle_pk_generation_proof( let circuit_data = PkGenerationCircuitData { committee, pk0_share, - a, eek, e_sm, sk, diff --git a/crates/zk-helpers/src/circuits/threshold/pk_generation/circuit.rs b/crates/zk-helpers/src/circuits/threshold/pk_generation/circuit.rs index 4358d01a65..0c758595b0 100644 --- a/crates/zk-helpers/src/circuits/threshold/pk_generation/circuit.rs +++ b/crates/zk-helpers/src/circuits/threshold/pk_generation/circuit.rs @@ -24,7 +24,6 @@ impl Circuit for PkGenerationCircuit { pub struct PkGenerationCircuitData { pub committee: CiphernodesCommittee, pub pk0_share: CrtPolynomial, - pub a: CrtPolynomial, pub eek: CrtPolynomial, pub e_sm: CrtPolynomial, pub sk: CrtPolynomial, diff --git a/crates/zk-helpers/src/circuits/threshold/pk_generation/codegen.rs b/crates/zk-helpers/src/circuits/threshold/pk_generation/codegen.rs index 3179a0e13d..90c0cf6b02 100644 --- a/crates/zk-helpers/src/circuits/threshold/pk_generation/codegen.rs +++ b/crates/zk-helpers/src/circuits/threshold/pk_generation/codegen.rs @@ -11,6 +11,7 @@ use e3_fhe_params::BfvPreset; use crate::circuits::computation::Computation; use crate::threshold::pk_generation::circuit::PkGenerationCircuit; use crate::threshold::pk_generation::computation::{Configs, Inputs}; +use crate::threshold::pk_generation::utils::crp_matrix_constant_string; use crate::threshold::pk_generation::PkGenerationCircuitData; use crate::utils::join_display; use crate::CircuitCodegen; @@ -30,7 +31,7 @@ impl CircuitCodegen for PkGenerationCircuit { let configs = Configs::compute(preset, &())?; let toml = generate_toml(inputs)?; - let configs = generate_configs(preset, &configs); + let configs = generate_configs(preset, &configs)?; Ok(Artifacts { toml, configs }) } @@ -42,7 +43,10 @@ pub fn generate_toml(inputs: Inputs) -> Result { Ok(toml::to_string(&json)?) } -pub fn generate_configs(preset: BfvPreset, configs: &Configs) -> CodegenConfigs { +pub fn generate_configs( + preset: BfvPreset, + configs: &Configs, +) -> Result { let prefix = ::PREFIX; let qis_str = join_display(&configs.moduli, ", "); @@ -52,17 +56,22 @@ pub fn generate_configs(preset: BfvPreset, configs: &Configs) -> CodegenConfigs let (threshold_params, _) = preset.build_pair().unwrap(); + let crp_matrix_str = crp_matrix_constant_string(&threshold_params)?; + // B_enc ≈ sqrt(3 * error1_variance) let b_enc = (BigUint::from(3u32) * threshold_params.get_error1_variance()).sqrt(); - format!( + Ok(format!( r#"use crate::core::threshold::pk_generation::Configs as PkGenerationConfigs; +use crate::math::polynomial::Polynomial; // Global configs for Threshold Public Key Generation circuit pub global N: u32 = {}; pub global L: u32 = {}; pub global QIS: [Field; L] = [{}]; +{} + /************************************ ------------------------------------- pk_generation (CIRCUIT 1 - PUBLIC KEY THRESHOLD BFV) @@ -85,17 +94,18 @@ pub global {}_R2_BOUNDS: [Field; L] = [{}]; pub global {}_B_ENC: Field = {}; pub global {}_CONFIGS: PkGenerationConfigs = PkGenerationConfigs::new( -QIS, -{}_EEK_BOUND, -{}_SK_BOUND, -{}_E_SM_BOUND, -{}_R1_BOUNDS, -{}_R2_BOUNDS, + QIS, + {}_EEK_BOUND, + {}_SK_BOUND, + {}_E_SM_BOUND, + {}_R1_BOUNDS, + {}_R2_BOUNDS, ); "#, configs.n, configs.l, qis_str, + crp_matrix_str, prefix, configs.bits.eek_bit, prefix, @@ -126,7 +136,7 @@ QIS, prefix, prefix, prefix, - ) + )) } #[cfg(test)] diff --git a/crates/zk-helpers/src/circuits/threshold/pk_generation/computation.rs b/crates/zk-helpers/src/circuits/threshold/pk_generation/computation.rs index dd587ee475..70fe7b7aef 100644 --- a/crates/zk-helpers/src/circuits/threshold/pk_generation/computation.rs +++ b/crates/zk-helpers/src/circuits/threshold/pk_generation/computation.rs @@ -15,6 +15,7 @@ use crate::math::{cyclotomic_polynomial, decompose_residue}; use crate::polynomial_to_toml_json; use crate::threshold::pk_generation::circuit::PkGenerationCircuit; use crate::threshold::pk_generation::circuit::PkGenerationCircuitData; +use crate::threshold::pk_generation::utils::deterministic_crp_crt_polynomial; use crate::CircuitsErrors; use crate::{CircuitComputation, Computation}; use e3_fhe_params::build_pair_for_preset; @@ -91,7 +92,6 @@ pub struct Bounds { #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Inputs { - pub a: CrtPolynomial, pub eek: Polynomial, pub sk: Polynomial, pub e_sm: CrtPolynomial, @@ -245,6 +245,8 @@ impl Computation for Inputs { let (threshold_params, _) = build_pair_for_preset(preset).map_err(|e| CircuitsErrors::Other(e.to_string()))?; + let a = deterministic_crp_crt_polynomial(&threshold_params)?; + let moduli: Vec = threshold_params .moduli() .iter() @@ -265,47 +267,42 @@ impl Computation for Inputs { )> = izip!( moduli.clone(), data.pk0_share.limbs.clone(), - data.a.limbs.clone(), + a.limbs.clone(), data.eek.limbs.clone(), data.e_sm.limbs.clone(), data.sk.limbs.clone(), ) .enumerate() .par_bridge() - .map( - |(i, (qi, mut pk0_share, mut a, mut eek, mut e_sm, mut sk))| { - pk0_share.reverse(); - pk0_share.center(&qi); - - a.reverse(); - a.center(&qi); + .map(|(i, (qi, mut pk0_share, a, mut eek, mut e_sm, mut sk))| { + pk0_share.reverse(); + pk0_share.center(&qi); - eek.reverse(); - eek.center(&qi); + eek.reverse(); + eek.center(&qi); - e_sm.reverse(); - e_sm.center(&qi); + e_sm.reverse(); + e_sm.center(&qi); - sk.reverse(); - sk.center(&qi); + sk.reverse(); + sk.center(&qi); - // Calculate pk0_share_hat = -a * sk + eek - let pk0_share_hat = { - let mut exp = a.neg(); - exp = exp.mul(&sk); + // Calculate pk0_share_hat = -a * sk + eek + let pk0_share_hat = { + let mut exp = a.neg(); + exp = exp.mul(&sk); - assert_eq!((exp.coefficients().len() as u64) - 1, 2 * (n - 1)); + assert_eq!((exp.coefficients().len() as u64) - 1, 2 * (n - 1)); - exp.add(&eek) - }; + exp.add(&eek) + }; - assert_eq!((pk0_share_hat.coefficients().len() as u64) - 1, 2 * (n - 1)); + assert_eq!((pk0_share_hat.coefficients().len() as u64) - 1, 2 * (n - 1)); - let (r1, r2) = decompose_residue(&pk0_share, &pk0_share_hat, &qi, &cyclo, n); + let (r1, r2) = decompose_residue(&pk0_share, &pk0_share_hat, &qi, &cyclo, n); - (i, r2, r1, pk0_share.clone(), a.clone(), e_sm.clone()) - }, - ) + (i, r2, r1, pk0_share.clone(), a.clone(), e_sm.clone()) + }) .collect(); results.sort_by_key(|(i, _, _, _, _, _)| *i); @@ -333,7 +330,6 @@ impl Computation for Inputs { } Ok(Inputs { - a: a.clone(), eek, sk, e_sm, @@ -347,7 +343,6 @@ impl Computation for Inputs { fn to_json(&self) -> serde_json::Result { let pk0is = crt_polynomial_to_toml_json(&self.pk0is); let pk1is = crt_polynomial_to_toml_json(&self.pk1is); - let a = crt_polynomial_to_toml_json(&self.a); let e = polynomial_to_toml_json(&self.eek); let sk = polynomial_to_toml_json(&self.sk); let e_sm = crt_polynomial_to_toml_json(&self.e_sm); @@ -357,7 +352,6 @@ impl Computation for Inputs { let json = serde_json::json!({ "pk0is": pk0is, "pk1is": pk1is, - "a": a, "eek": e, "sk": sk, "e_sm": e_sm, diff --git a/crates/zk-helpers/src/circuits/threshold/pk_generation/mod.rs b/crates/zk-helpers/src/circuits/threshold/pk_generation/mod.rs index 65bbc34de3..faff7353ed 100644 --- a/crates/zk-helpers/src/circuits/threshold/pk_generation/mod.rs +++ b/crates/zk-helpers/src/circuits/threshold/pk_generation/mod.rs @@ -14,6 +14,7 @@ pub mod circuit; pub mod codegen; pub mod computation; pub mod sample; +pub mod utils; pub use circuit::*; pub use codegen::*; pub use computation::*; diff --git a/crates/zk-helpers/src/circuits/threshold/pk_generation/sample.rs b/crates/zk-helpers/src/circuits/threshold/pk_generation/sample.rs index 0b1eb4785e..6e8c000b95 100644 --- a/crates/zk-helpers/src/circuits/threshold/pk_generation/sample.rs +++ b/crates/zk-helpers/src/circuits/threshold/pk_generation/sample.rs @@ -36,7 +36,7 @@ impl PkGenerationCircuitData { let secret_key = SecretKey::random(&threshold_params, &mut rng); let crp = create_deterministic_crp_from_default_seed(&threshold_params); - let (pk0_share, a, sk, e) = + let (pk0_share, _, sk, e) = PublicKeyShare::new_extended(&secret_key, crp.clone(), &mut rng).map_err(|e| { CircuitsErrors::Sample(format!("Failed to create public key share: {:?}", e)) })?; @@ -69,7 +69,6 @@ impl PkGenerationCircuitData { Ok(PkGenerationCircuitData { committee, pk0_share: CrtPolynomial::from_fhe_polynomial(&pk0_share), - a: CrtPolynomial::from_fhe_polynomial(&a), eek: CrtPolynomial::from_fhe_polynomial(&e), e_sm: CrtPolynomial::from_fhe_polynomial(&e_sm), sk: CrtPolynomial::from_fhe_polynomial(&sk), @@ -96,7 +95,7 @@ mod tests { let inputs = Inputs::compute(BfvPreset::InsecureThreshold512, &sample).unwrap(); assert_eq!(inputs.pk0is.limbs.len(), 2); - assert_eq!(inputs.a.limbs.len(), 2); + assert_eq!(inputs.pk1is.limbs.len(), 2); assert_eq!(inputs.e_sm.limbs.len(), 2); assert_eq!(inputs.r1is.limbs.len(), 2); assert_eq!(inputs.r2is.limbs.len(), 2); diff --git a/crates/zk-helpers/src/circuits/threshold/pk_generation/utils.rs b/crates/zk-helpers/src/circuits/threshold/pk_generation/utils.rs new file mode 100644 index 0000000000..8a4d1b1709 --- /dev/null +++ b/crates/zk-helpers/src/circuits/threshold/pk_generation/utils.rs @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: LGPL-3.0-only +// +// This file is provided WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY +// or FITNESS FOR A PARTICULAR PURPOSE. + +//! Shared utilities for the pk_generation circuit (e.g. CRP matrix constant). + +use crate::utils::bigint_to_field; +use crate::CircuitsErrors; +use e3_fhe_params::create_deterministic_crp_from_default_seed; +use e3_polynomial::CrtPolynomial; + +/// Returns the deterministic CRP (common random polynomial) as a CRT polynomial with limbs +/// reversed per modulus, matching the representation used in the circuit. +pub fn deterministic_crp_crt_polynomial( + threshold_params: &std::sync::Arc, +) -> Result { + let crp = create_deterministic_crp_from_default_seed(threshold_params); + let mut a = CrtPolynomial::from_fhe_polynomial(crp.poly()); + + a.reverse(); + + Ok(a) +} + +/// Builds the CRP matrix (deterministic common random polynomial) constant string for Noir. +pub fn crp_matrix_constant_string( + threshold_params: &std::sync::Arc, +) -> Result { + let a = deterministic_crp_crt_polynomial(threshold_params)?; + + let limb_strings: Vec = a + .limbs + .iter() + .map(|limb| { + let coeffs: Vec = limb + .coefficients() + .iter() + .map(|c| { + let field_val = bigint_to_field(c); + field_val.to_string() + }) + .collect(); + let arr = format!("[{}]", coeffs.join(", ")); + format!("Polynomial::new({})", arr) + }) + .collect(); + + Ok(format!( + "pub global CRP: [Polynomial; L] = [\n {}];", + limb_strings.join(",\n ") + )) +} From 522a59f300e2b3ef19bbce14fd1bfa741dba8310 Mon Sep 17 00:00:00 2001 From: 0xjei Date: Wed, 18 Feb 2026 16:12:50 +0100 Subject: [PATCH 05/15] remove unused or dead code --- crates/fhe-params/src/crp.rs | 71 ++-------------------------------- crates/fhe-params/src/lib.rs | 5 +-- crates/fhe/src/ext.rs | 11 ++---- crates/fhe/src/runtime.rs | 12 ++---- crates/test-helpers/src/lib.rs | 21 ++++------ 5 files changed, 19 insertions(+), 101 deletions(-) diff --git a/crates/fhe-params/src/crp.rs b/crates/fhe-params/src/crp.rs index 2519f1e417..21bb6c2588 100644 --- a/crates/fhe-params/src/crp.rs +++ b/crates/fhe-params/src/crp.rs @@ -6,47 +6,13 @@ //! Common Random Polynomial (CRP) construction from BFV parameters. -use crate::builder::build_bfv_params_arc; -use e3_utils::SharedRng; use fhe::bfv::BfvParameters; use fhe::mbfv::CommonRandomPoly; -use fhe_traits::Serialize; use rand::SeedableRng; use rand_chacha::ChaCha8Rng; use std::sync::Arc; -/// Parameters plus serialized CRP, e.g. for setup or testing. -pub struct ParamsWithCrp { - pub moduli: Vec, - pub degree: usize, - pub plaintext_modulus: u64, - pub crp_bytes: Vec, - pub params: Arc, -} - -/// Builds BFV params and a CRP from raw parameter values and a RNG. -pub fn setup_crp_params( - moduli: &[u64], - degree: usize, - plaintext_modulus: u64, - rng: SharedRng, -) -> ParamsWithCrp { - let params = build_bfv_params_arc(degree, plaintext_modulus, moduli, None); - let crp = create_crp(¶ms, rng); - ParamsWithCrp { - moduli: moduli.to_vec(), - degree, - plaintext_modulus, - crp_bytes: crp.to_bytes(), - params, - } -} - -/// Creates a Common Random Polynomial for the given BFV parameters. -pub fn create_crp(params: &Arc, rng: SharedRng) -> CommonRandomPoly { - CommonRandomPoly::new(¶ms, &mut *rng.lock().unwrap()).unwrap() -} - +#[allow(dead_code)] /// Creates a Common Random Polynomial for the given BFV parameters and seed. pub fn create_deterministic_crp_from_seed( params: &Arc, @@ -63,35 +29,9 @@ pub fn create_deterministic_crp_from_default_seed(params: &Arc) - #[cfg(test)] mod tests { use super::*; + use crate::build_bfv_params_arc; use crate::constants::insecure_512; - use rand::SeedableRng; - use rand_chacha::ChaCha20Rng; - use std::sync::Mutex; - - #[test] - fn setup_crp_params_returns_valid_structure() { - let moduli = insecure_512::threshold::MODULI; - let degree = insecure_512::DEGREE; - let plaintext_modulus = insecure_512::threshold::PLAINTEXT_MODULUS; - let rng = Arc::new(Mutex::new(ChaCha20Rng::from_seed( - ::Seed::default(), - ))); - - let ParamsWithCrp { - moduli: out_moduli, - degree: out_degree, - plaintext_modulus: out_pt, - crp_bytes, - params, - } = setup_crp_params(moduli, degree, plaintext_modulus, rng); - - assert_eq!(out_moduli, moduli); - assert_eq!(out_degree, degree); - assert_eq!(out_pt, plaintext_modulus); - assert_eq!(params.degree(), degree); - assert_eq!(params.plaintext(), plaintext_modulus); - assert!(!crp_bytes.is_empty(), "CRP bytes should be non-empty"); - } + use fhe_traits::Serialize; #[test] fn crp_bytes_roundtrip_via_deserialize() { @@ -101,10 +41,7 @@ mod tests { insecure_512::threshold::MODULI, Some(insecure_512::threshold::ERROR1_VARIANCE), ); - let rng = Arc::new(Mutex::new(ChaCha20Rng::from_seed( - ::Seed::default(), - ))); - let crp = create_crp(¶ms, rng); + let crp = create_deterministic_crp_from_default_seed(¶ms); let bytes = crp.to_bytes(); let restored = CommonRandomPoly::deserialize(&bytes, ¶ms) diff --git a/crates/fhe-params/src/lib.rs b/crates/fhe-params/src/lib.rs index 06cf80b1be..7d06629ebf 100644 --- a/crates/fhe-params/src/lib.rs +++ b/crates/fhe-params/src/lib.rs @@ -18,10 +18,7 @@ pub use builder::{ build_bfv_params, build_bfv_params_arc, build_bfv_params_from_set, build_bfv_params_from_set_arc, build_pair_for_preset, }; -pub use crp::{ - create_crp, create_deterministic_crp_from_default_seed, create_deterministic_crp_from_seed, - setup_crp_params, ParamsWithCrp, -}; +pub use crp::{create_deterministic_crp_from_default_seed, create_deterministic_crp_from_seed}; #[cfg(feature = "abi-encoding")] pub use encoding::{decode_bfv_params, decode_bfv_params_arc, encode_bfv_params, EncodingError}; pub use presets::{ diff --git a/crates/fhe/src/ext.rs b/crates/fhe/src/ext.rs index 04ac88384a..418155ba7b 100644 --- a/crates/fhe/src/ext.rs +++ b/crates/fhe/src/ext.rs @@ -53,14 +53,9 @@ impl E3Extension for FheExtension { return; }; - let E3Requested { - params, - seed, - e3_id, - .. - } = data.clone(); - - let Ok(fhe_inner) = Fhe::from_encoded(¶ms, seed, self.rng.clone()) else { + let E3Requested { params, e3_id, .. } = data.clone(); + + let Ok(fhe_inner) = Fhe::from_encoded(¶ms, self.rng.clone()) else { self.bus .err(EType::KeyGeneration, anyhow!(ERROR_FHE_FAILED_TO_DECODE)); return; diff --git a/crates/fhe/src/runtime.rs b/crates/fhe/src/runtime.rs index b5be66dce7..64d6869b25 100644 --- a/crates/fhe/src/runtime.rs +++ b/crates/fhe/src/runtime.rs @@ -8,16 +8,15 @@ use anyhow::*; use async_trait::async_trait; use e3_bfv_client::{decode_plaintext_to_vec_u64, encode_vec_u64_to_bytes}; use e3_data::{FromSnapshotWithParams, Snapshot}; -use e3_events::{OrderedSet, Seed}; +use e3_events::OrderedSet; use e3_fhe_params::build_bfv_params_arc; -use e3_fhe_params::{create_crp, decode_bfv_params_arc}; +use e3_fhe_params::{create_deterministic_crp_from_default_seed, decode_bfv_params_arc}; use e3_utils::{ArcBytes, SharedRng}; use fhe::{ bfv::{BfvParameters, Ciphertext, Plaintext, PublicKey, SecretKey}, mbfv::{AggregateIter, CommonRandomPoly, DecryptionShare, PublicKeyShare}, }; use fhe_traits::{Deserialize, DeserializeParametrized, Serialize}; -use rand::SeedableRng; use rand_chacha::ChaCha20Rng; use std::sync::{Arc, Mutex}; @@ -48,12 +47,9 @@ impl Fhe { Self { params, crp, rng } } - pub fn from_encoded(bytes: &[u8], seed: Seed, rng: SharedRng) -> Result { + pub fn from_encoded(bytes: &[u8], rng: SharedRng) -> Result { let params = decode_bfv_params_arc(bytes).expect("Failed to decode BFV params"); - let crp = create_crp( - ¶ms, - Arc::new(Mutex::new(ChaCha20Rng::from_seed(seed.into()))), - ); + let crp = create_deterministic_crp_from_default_seed(¶ms); Ok(Fhe::new(params, crp, rng)) } diff --git a/crates/test-helpers/src/lib.rs b/crates/test-helpers/src/lib.rs index 78c5365323..947f8652ad 100644 --- a/crates/test-helpers/src/lib.rs +++ b/crates/test-helpers/src/lib.rs @@ -20,11 +20,12 @@ use e3_events::{ }; use e3_fhe_params::BfvParamSet; use e3_fhe_params::DEFAULT_BFV_PRESET; -use e3_fhe_params::{setup_crp_params, ParamsWithCrp}; +use e3_fhe_params::{build_bfv_params_arc, create_deterministic_crp_from_default_seed}; use e3_net::{DocumentPublisher, NetEventTranslator}; use e3_utils::SharedRng; use fhe::bfv::{BfvParameters, Ciphertext, Encoding, Plaintext, PublicKey}; use fhe::mbfv::CommonRandomPoly; +use fhe_traits::Serialize; use fhe_traits::{FheEncoder, FheEncrypter}; pub use plaintext_writer::*; pub use public_key_writer::*; @@ -51,19 +52,11 @@ pub fn create_crp_bytes_params( moduli: &[u64], degree: usize, plaintext_modulus: u64, - seed: &Seed, ) -> (Vec, Arc) { - let ParamsWithCrp { - crp_bytes, params, .. - } = setup_crp_params( - moduli, - degree, - plaintext_modulus, - Arc::new(std::sync::Mutex::new(ChaCha20Rng::from_seed( - seed.clone().into(), - ))), - ); - (crp_bytes, params) + let params = build_bfv_params_arc(degree, plaintext_modulus, moduli, None); + let crp = create_deterministic_crp_from_default_seed(¶ms); + + (crp.to_bytes(), params) } pub fn get_common_setup( @@ -92,7 +85,7 @@ pub fn get_common_setup( let degree = param_set.degree; let plaintext_modulus = param_set.plaintext_modulus; let moduli = param_set.moduli; - let (crp_bytes, params) = create_crp_bytes_params(moduli, degree, plaintext_modulus, &seed); + let (crp_bytes, params) = create_crp_bytes_params(moduli, degree, plaintext_modulus); let crpoly = CommonRandomPoly::deserialize(&crp_bytes.clone(), ¶ms)?; let handle = EventSystem::in_mem() .with_event_bus(bus) From 056b945002b12d0c51f6b1434c27d1a3e381a547 Mon Sep 17 00:00:00 2001 From: 0xjei Date: Wed, 18 Feb 2026 16:39:03 +0100 Subject: [PATCH 06/15] update lockfiles --- examples/CRISP/Cargo.lock | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/CRISP/Cargo.lock b/examples/CRISP/Cargo.lock index cb63260cd8..494185c271 100644 --- a/examples/CRISP/Cargo.lock +++ b/examples/CRISP/Cargo.lock @@ -2410,9 +2410,13 @@ dependencies = [ "alloy-primitives", "anyhow", "clap", + "e3-utils", "fhe", + "fhe-traits", "num-bigint", "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", "serde", "thiserror 1.0.69", ] From f4aba5f98e67c7b36e589f136b9856c41b8ef49b Mon Sep 17 00:00:00 2001 From: Giacomo Date: Wed, 18 Feb 2026 16:49:05 +0100 Subject: [PATCH 07/15] Update crates/fhe-params/src/crp.rs Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- crates/fhe-params/src/crp.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/fhe-params/src/crp.rs b/crates/fhe-params/src/crp.rs index 21bb6c2588..c4c7ba8e2d 100644 --- a/crates/fhe-params/src/crp.rs +++ b/crates/fhe-params/src/crp.rs @@ -75,8 +75,7 @@ mod tests { Some(insecure_512::threshold::ERROR1_VARIANCE), ); let seed1 = [1u8; 32]; - let mut seed2 = [2u8; 32]; - seed2[0] = 2; + let seed2 = [2u8; 32]; let crp1 = create_deterministic_crp_from_seed(¶ms, seed1); let crp2 = create_deterministic_crp_from_seed(¶ms, seed2); From b5a9c926313285d3f9f2438a9681a8a713cbabc1 Mon Sep 17 00:00:00 2001 From: 0xjei Date: Wed, 18 Feb 2026 17:18:49 +0100 Subject: [PATCH 08/15] small nits --- crates/fhe-params/Cargo.toml | 2 +- crates/fhe-params/src/crp.rs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/fhe-params/Cargo.toml b/crates/fhe-params/Cargo.toml index 3b9607be3c..187e1b283d 100644 --- a/crates/fhe-params/Cargo.toml +++ b/crates/fhe-params/Cargo.toml @@ -19,7 +19,7 @@ anyhow = { workspace = true } alloy-dyn-abi = { workspace = true, optional = true } alloy-primitives = { workspace = true, optional = true } serde = { workspace = true } -rand_chacha = "0.3.1" +rand_chacha = { workspace = true } [dev-dependencies] fhe-traits = { workspace = true } diff --git a/crates/fhe-params/src/crp.rs b/crates/fhe-params/src/crp.rs index c4c7ba8e2d..dff45bc5fe 100644 --- a/crates/fhe-params/src/crp.rs +++ b/crates/fhe-params/src/crp.rs @@ -12,7 +12,6 @@ use rand::SeedableRng; use rand_chacha::ChaCha8Rng; use std::sync::Arc; -#[allow(dead_code)] /// Creates a Common Random Polynomial for the given BFV parameters and seed. pub fn create_deterministic_crp_from_seed( params: &Arc, From be829a4a1a7ba827152ba472ed3977e354c73948 Mon Sep 17 00:00:00 2001 From: 0xjei Date: Thu, 19 Feb 2026 10:38:25 +0100 Subject: [PATCH 09/15] update locks and remove unused deps --- Cargo.lock | 1 - crates/fhe-params/Cargo.toml | 2 -- examples/CRISP/Cargo.lock | 2 -- 3 files changed, 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 620e75178c..b5f970baad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3384,7 +3384,6 @@ dependencies = [ "alloy-primitives", "anyhow", "clap", - "e3-utils", "fhe", "fhe-traits", "num-bigint", diff --git a/crates/fhe-params/Cargo.toml b/crates/fhe-params/Cargo.toml index 187e1b283d..6ba62c94ac 100644 --- a/crates/fhe-params/Cargo.toml +++ b/crates/fhe-params/Cargo.toml @@ -7,9 +7,7 @@ description = "E3 - Enclave FHE Params" repository = "https://github.com/gnosisguild/enclave/crates/fhe-params" [dependencies] -e3-utils = { workspace = true } fhe = { workspace = true } -fhe-traits = { workspace = true } num-bigint = { workspace = true } rand = { workspace = true } num-traits = { workspace = true } diff --git a/examples/CRISP/Cargo.lock b/examples/CRISP/Cargo.lock index 494185c271..ad0d820263 100644 --- a/examples/CRISP/Cargo.lock +++ b/examples/CRISP/Cargo.lock @@ -2410,9 +2410,7 @@ dependencies = [ "alloy-primitives", "anyhow", "clap", - "e3-utils", "fhe", - "fhe-traits", "num-bigint", "num-traits", "rand 0.8.5", From ef0c9f19bd640227ddd9a85d686eb4c042e1c50c Mon Sep 17 00:00:00 2001 From: Giacomo Date: Thu, 19 Feb 2026 10:41:28 +0100 Subject: [PATCH 10/15] Update crates/zk-helpers/src/circuits/threshold/pk_generation/codegen.rs Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .../zk-helpers/src/circuits/threshold/pk_generation/codegen.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/zk-helpers/src/circuits/threshold/pk_generation/codegen.rs b/crates/zk-helpers/src/circuits/threshold/pk_generation/codegen.rs index 90c0cf6b02..7837bf0096 100644 --- a/crates/zk-helpers/src/circuits/threshold/pk_generation/codegen.rs +++ b/crates/zk-helpers/src/circuits/threshold/pk_generation/codegen.rs @@ -54,7 +54,7 @@ pub fn generate_configs( let r1_bounds_str = join_display(&configs.bounds.r1_bounds, ", "); let r2_bounds_str = join_display(&configs.bounds.r2_bounds, ", "); - let (threshold_params, _) = preset.build_pair().unwrap(); + let (threshold_params, _) = preset.build_pair().map_err(|e| CircuitsErrors::Sample(format!("Failed to build pair for preset: {:?}", e)))?; let crp_matrix_str = crp_matrix_constant_string(&threshold_params)?; From 2da2d13ada368da8f44e51a6f11739c0fe4f8067 Mon Sep 17 00:00:00 2001 From: 0xjei Date: Thu, 19 Feb 2026 10:57:48 +0100 Subject: [PATCH 11/15] format --- .../src/circuits/threshold/pk_generation/codegen.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/zk-helpers/src/circuits/threshold/pk_generation/codegen.rs b/crates/zk-helpers/src/circuits/threshold/pk_generation/codegen.rs index 7837bf0096..50c743852b 100644 --- a/crates/zk-helpers/src/circuits/threshold/pk_generation/codegen.rs +++ b/crates/zk-helpers/src/circuits/threshold/pk_generation/codegen.rs @@ -54,7 +54,9 @@ pub fn generate_configs( let r1_bounds_str = join_display(&configs.bounds.r1_bounds, ", "); let r2_bounds_str = join_display(&configs.bounds.r2_bounds, ", "); - let (threshold_params, _) = preset.build_pair().map_err(|e| CircuitsErrors::Sample(format!("Failed to build pair for preset: {:?}", e)))?; + let (threshold_params, _) = preset + .build_pair() + .map_err(|e| CircuitsErrors::Sample(format!("Failed to build pair for preset: {:?}", e)))?; let crp_matrix_str = crp_matrix_constant_string(&threshold_params)?; From 6ca6e7e26cc0ddc3cf8eaf1dd2f704b37da8b850 Mon Sep 17 00:00:00 2001 From: 0xjei Date: Thu, 19 Feb 2026 11:19:49 +0100 Subject: [PATCH 12/15] remove crs a from keyshare request --- crates/events/src/enclave_event/compute_request/zk.rs | 5 ----- crates/keyshare/src/threshold_keyshare.rs | 1 - 2 files changed, 6 deletions(-) diff --git a/crates/events/src/enclave_event/compute_request/zk.rs b/crates/events/src/enclave_event/compute_request/zk.rs index 7af29ac4c8..a89bb530fc 100644 --- a/crates/events/src/enclave_event/compute_request/zk.rs +++ b/crates/events/src/enclave_event/compute_request/zk.rs @@ -38,9 +38,6 @@ pub struct PkGenerationProofRequest { /// Raw pk0 share polynomial bytes (public statement). #[derivative(Debug(format_with = "e3_utils::formatters::hexf"))] pub pk0_share: ArcBytes, - /// Raw common random polynomial bytes (public statement). - #[derivative(Debug(format_with = "e3_utils::formatters::hexf"))] - pub a: ArcBytes, /// Raw secret key polynomial bytes (witness — encrypted at rest). pub sk: SensitiveBytes, /// Raw error polynomial bytes (witness — encrypted at rest). @@ -65,7 +62,6 @@ impl PkBfvProofRequest { impl PkGenerationProofRequest { pub fn new( pk0_share: impl Into, - a: impl Into, sk: SensitiveBytes, eek: SensitiveBytes, e_sm: SensitiveBytes, @@ -74,7 +70,6 @@ impl PkGenerationProofRequest { ) -> Self { Self { pk0_share: pk0_share.into(), - a: a.into(), sk, eek, params_preset, diff --git a/crates/keyshare/src/threshold_keyshare.rs b/crates/keyshare/src/threshold_keyshare.rs index 0ee36bb698..ef4c0b98a4 100644 --- a/crates/keyshare/src/threshold_keyshare.rs +++ b/crates/keyshare/src/threshold_keyshare.rs @@ -798,7 +798,6 @@ impl ThresholdKeyshare { let proof_request = PkGenerationProofRequest::new( proof_request_data.pk0_share_raw.clone(), - proof_request_data.a_raw.clone(), proof_request_data.sk_raw.clone(), proof_request_data.eek_raw.clone(), e_sm_raw.clone(), From 1afea7489805270455a09326bd6accdcd24575ca Mon Sep 17 00:00:00 2001 From: 0xjei Date: Fri, 20 Feb 2026 10:16:58 +0100 Subject: [PATCH 13/15] rebase main --- templates/default/Cargo.lock | 2 ++ 1 file changed, 2 insertions(+) diff --git a/templates/default/Cargo.lock b/templates/default/Cargo.lock index 65db559375..d626e7997e 100644 --- a/templates/default/Cargo.lock +++ b/templates/default/Cargo.lock @@ -1264,6 +1264,8 @@ dependencies = [ "fhe", "num-bigint", "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", "serde", "thiserror", ] From badf37690787fcc2f445b916178b1d7f6e109d5a Mon Sep 17 00:00:00 2001 From: 0xjei Date: Fri, 20 Feb 2026 10:53:24 +0100 Subject: [PATCH 14/15] fix r1_bound computation for pk_generation --- circuits/lib/src/configs/insecure/threshold.nr | 4 ++-- circuits/lib/src/configs/secure/threshold.nr | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/circuits/lib/src/configs/insecure/threshold.nr b/circuits/lib/src/configs/insecure/threshold.nr index 9299344251..42e019ece9 100644 --- a/circuits/lib/src/configs/insecure/threshold.nr +++ b/circuits/lib/src/configs/insecure/threshold.nr @@ -1060,14 +1060,14 @@ pk_generation (CIRCUIT 1 - PUBLIC KEY THRESHOLD BFV) pub global PK_GENERATION_BIT_EEK: u32 = 5; pub global PK_GENERATION_BIT_SK: u32 = 1; pub global PK_GENERATION_BIT_E_SM: u32 = 28; -pub global PK_GENERATION_BIT_R1: u32 = 13; +pub global PK_GENERATION_BIT_R1: u32 = 9; pub global PK_GENERATION_BIT_R2: u32 = 35; pub global PK_GENERATION_BIT_PK: u32 = 35; pub global PK_GENERATION_EEK_BOUND: Field = 20; pub global PK_GENERATION_SK_BOUND: Field = 1; pub global PK_GENERATION_E_SM_BOUND: Field = 206867200; -pub global PK_GENERATION_R1_BOUNDS: [Field; L] = [5120, 5120]; +pub global PK_GENERATION_R1_BOUNDS: [Field; L] = [256, 256]; pub global PK_GENERATION_R2_BOUNDS: [Field; L] = [34359701504, 34359615488]; pub global PK_GENERATION_B_ENC: Field = 3; diff --git a/circuits/lib/src/configs/secure/threshold.nr b/circuits/lib/src/configs/secure/threshold.nr index d651aae25e..4aca0335df 100644 --- a/circuits/lib/src/configs/secure/threshold.nr +++ b/circuits/lib/src/configs/secure/threshold.nr @@ -32815,7 +32815,7 @@ pk_generation (CIRCUIT 1 - PUBLIC KEY THRESHOLD BFV) pub global PK_GENERATION_BIT_EEK: u32 = 5; pub global PK_GENERATION_BIT_SK: u32 = 1; pub global PK_GENERATION_BIT_E_SM: u32 = 192; -pub global PK_GENERATION_BIT_R1: u32 = 17; +pub global PK_GENERATION_BIT_R1: u32 = 13; pub global PK_GENERATION_BIT_R2: u32 = 52; pub global PK_GENERATION_BIT_PK: u32 = 52; @@ -32823,7 +32823,7 @@ pub global PK_GENERATION_EEK_BOUND: Field = 20; pub global PK_GENERATION_SK_BOUND: Field = 1; pub global PK_GENERATION_E_SM_BOUND: Field = 4789048565205902682369836460365611983121962490123622809600; -pub global PK_GENERATION_R1_BOUNDS: [Field; L] = [81920, 81920, 81920, 81920]; +pub global PK_GENERATION_R1_BOUNDS: [Field; L] = [4096, 4096, 4096, 4096]; pub global PK_GENERATION_R2_BOUNDS: [Field; L] = [1125899911102464, 2251799813881856, 2251799815716864, 2251799817289728]; From 65edaaea1a16a65a29042c5931d197fd66826e03 Mon Sep 17 00:00:00 2001 From: 0xjei Date: Fri, 20 Feb 2026 10:53:56 +0100 Subject: [PATCH 15/15] remove a_raw --- crates/keyshare/src/threshold_keyshare.rs | 2 -- crates/trbfv/src/gen_pk_share_and_sk_sss.rs | 9 +-------- .../src/circuits/threshold/pk_generation/computation.rs | 2 +- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/crates/keyshare/src/threshold_keyshare.rs b/crates/keyshare/src/threshold_keyshare.rs index ef4c0b98a4..b2a2e3a0f9 100644 --- a/crates/keyshare/src/threshold_keyshare.rs +++ b/crates/keyshare/src/threshold_keyshare.rs @@ -77,7 +77,6 @@ pub struct CollectingEncryptionKeysData { #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] pub struct ProofRequestData { pub pk0_share_raw: ArcBytes, - pub a_raw: ArcBytes, pub sk_raw: SensitiveBytes, pub eek_raw: SensitiveBytes, } @@ -615,7 +614,6 @@ impl ThresholdKeyshare { // Store proof request data for later use by ProofRequestActor let proof_request_data = ProofRequestData { pk0_share_raw: output.pk0_share_raw, - a_raw: output.a_raw, sk_raw: output.sk_raw, eek_raw: output.eek_raw, }; diff --git a/crates/trbfv/src/gen_pk_share_and_sk_sss.rs b/crates/trbfv/src/gen_pk_share_and_sk_sss.rs index bde71c4511..b6c596a89f 100644 --- a/crates/trbfv/src/gen_pk_share_and_sk_sss.rs +++ b/crates/trbfv/src/gen_pk_share_and_sk_sss.rs @@ -64,8 +64,6 @@ pub struct GenPkShareAndSkSssResponse { pub sk_sss: Encrypted, /// Raw pk0 share polynomial (RNS form) for ZK proof generation (T1a). pub pk0_share_raw: ArcBytes, - /// Raw common random polynomial (RNS form) for ZK proof generation (T1a). - pub a_raw: ArcBytes, /// Raw secret key polynomial (RNS form) for ZK proof generation (T1a) — encrypted at rest. pub sk_raw: SensitiveBytes, /// Raw error polynomial from key generation (RNS form) for ZK proof generation (T1a) — encrypted at rest. @@ -85,7 +83,6 @@ impl TryFrom<(InnerResponse, &Cipher)> for GenPkShareAndSkSssResponse { pk_share, sk_sss, pk0_share_raw: value.pk0_share_raw, - a_raw: value.a_raw, sk_raw: SensitiveBytes::new(value.sk_raw.to_vec(), cipher)?, eek_raw: SensitiveBytes::new(value.eek_raw.to_vec(), cipher)?, e_sm_raw: SensitiveBytes::new(value.e_sm_raw.to_vec(), cipher)?, @@ -100,8 +97,6 @@ struct InnerResponse { pub sk_sss: SharedSecret, /// Raw pk0 share polynomial bytes for ZK proof. pub pk0_share_raw: ArcBytes, - /// Raw CRP polynomial bytes for ZK proof. - pub a_raw: ArcBytes, /// Raw secret key polynomial bytes for ZK proof. pub sk_raw: ArcBytes, /// Raw error polynomial bytes for ZK proof. @@ -128,7 +123,7 @@ pub fn gen_pk_share_and_sk_sss( num_ciphernodes, threshold ); let sk_share = { SecretKey::random(¶ms, &mut *rng.lock().unwrap()) }; - let (pk0_share, a, _, eek) = + let (pk0_share, _, _, eek) = { PublicKeyShare::new_extended(&sk_share, crp.clone(), &mut *rng.lock().unwrap())? }; let pk_share = PublicKeyShare::deserialize(&pk0_share.to_bytes(), ¶ms, crp.clone())?; @@ -146,7 +141,6 @@ pub fn gen_pk_share_and_sk_sss( let e_sm_raw = ArcBytes::from_bytes(&e_sm_rns.deref().to_bytes()); let pk0_share_raw = ArcBytes::from_bytes(&pk0_share.to_bytes()); - let a_raw = ArcBytes::from_bytes(&a.to_bytes()); let eek_raw = ArcBytes::from_bytes(&eek.to_bytes()); let mut share_manager = @@ -165,7 +159,6 @@ pub fn gen_pk_share_and_sk_sss( pk_share, sk_sss, pk0_share_raw, - a_raw, sk_raw, eek_raw, e_sm_raw, diff --git a/crates/zk-helpers/src/circuits/threshold/pk_generation/computation.rs b/crates/zk-helpers/src/circuits/threshold/pk_generation/computation.rs index 70fe7b7aef..fd8aa4c829 100644 --- a/crates/zk-helpers/src/circuits/threshold/pk_generation/computation.rs +++ b/crates/zk-helpers/src/circuits/threshold/pk_generation/computation.rs @@ -208,7 +208,7 @@ impl Computation for Bounds { r2_bounds[i] = qi_bound.clone(); // Compute asymmetric range for r1 bounds per modulus - r1_bounds[i] = ((&n * eek_bound + 2u32) * &qi_bound + eek_bound) / &qi_bigint; + r1_bounds[i] = ((&n + 2u32) * &qi_bound + eek_bound) / &qi_bigint; // Track maximum pk bound across all moduli // We don't need to store them as we only need the maximum bound to compute the commitment bit width