diff --git a/crates/akita-config/src/lib.rs b/crates/akita-config/src/lib.rs index 7c7b52d70..46892a201 100644 --- a/crates/akita-config/src/lib.rs +++ b/crates/akita-config/src/lib.rs @@ -575,24 +575,13 @@ mod sis_schedule_width_audit { { let d = u32::try_from(lp.d_a()).expect("ring dimension fits in u32"); - let a_rank = min_secure_rank( - lp.inner_commit_matrix.sis_table_key(), - u64::try_from(lp.inner_width()).expect("inner width should fit in u64"), - ) - .unwrap_or_else(|| { + lp.inner_commit_matrix.validate().unwrap_or_else(|error| { panic!( - "missing audited A-row SIS width for D={d}, num_vars={num_vars}, level={level_idx}, lb={}, width={}", + "A-row SIS audit failed for D={d}, num_vars={num_vars}, level={level_idx}, lb={}, width={}: {error}", lp.log_basis_inner, - lp.inner_width() + lp.inner_width(), ) }); - assert!( - a_rank <= lp.inner_commit_matrix.output_rank(), - "A-row SIS audit failed for D={d}, num_vars={num_vars}, level={level_idx}, lb={}, width={}, required_rank={a_rank}, actual_rank={}", - lp.log_basis_inner, - lp.inner_width(), - lp.inner_commit_matrix.output_rank(), - ); let b_rank = min_secure_rank( lp.outer_commit_matrix.sis_table_key(), diff --git a/crates/akita-pcs/examples/profile/report.rs b/crates/akita-pcs/examples/profile/report.rs index c9e51dc52..ab04a2394 100644 --- a/crates/akita-pcs/examples/profile/report.rs +++ b/crates/akita-pcs/examples/profile/report.rs @@ -397,6 +397,10 @@ pub(crate) fn emit_runtime_schedule_summary( n_a = lp.inner_commit_matrix.output_rank(), n_b = lp.outer_commit_matrix.output_rank(), n_d = lp.open_commit_matrix.output_rank(), + unchecked_l2_collision_sq = lp + .inner_commit_matrix + .unchecked_l2_collision_sq() + .unwrap_or(0), challenge_l1_mass = lp.challenge_l1_mass(), log_basis_inner = lp.log_basis_inner, log_basis_outer = lp.log_basis_outer, @@ -582,6 +586,22 @@ where .next_w_eval() .serialized_size(Compress::No); let fold_grind_nonce_size = fold_grind_nonce_wire_bytes(); + let unchecked_l2_diagnostic_size = + level + .unchecked_l2_norm_diagnostic + .as_ref() + .map_or(0, |diagnostic| { + diagnostic.norm_squared.serialized_size(Compress::No) + + diagnostic + .leaf_round_coefficients + .iter() + .map(|coefficient| coefficient.serialized_size(Compress::No)) + .sum::() + }); + let unchecked_l2_norm_squared = level + .unchecked_l2_norm_diagnostic + .as_ref() + .map_or(0, |diagnostic| diagnostic.norm_squared); let grind_nonce = level.fold_grind_nonce; tracing::info!( @@ -594,6 +614,8 @@ where opening_payload_bytes = opening_payload_size, fold_grind_nonce_bytes = fold_grind_nonce_size, grind_nonce, + unchecked_l2_diagnostic_bytes = unchecked_l2_diagnostic_size, + unchecked_l2_norm_squared, stage1_sumcheck_bytes = stage1_sumcheck_size, stage1_interstage_claims_bytes = stage1_interstage_claims_size, stage1_range_image_evaluation_bytes = stage1_range_image_evaluation_size, @@ -606,6 +628,9 @@ where eprintln!("[{label}] extension_opening_partials={extension_opening_partials_size} bytes"); eprintln!("[{label}] extension_opening_sumcheck={extension_opening_sumcheck_size} bytes"); eprintln!("[{label}] fold_grind_nonce={fold_grind_nonce_size} bytes"); + eprintln!( + "[{label}] unchecked_l2_diagnostic={unchecked_l2_diagnostic_size} bytes, norm_squared={unchecked_l2_norm_squared}" + ); eprintln!("[{label}] stage1_sumcheck={stage1_sumcheck_size} bytes"); eprintln!("[{label}] stage1_interstage_claims={stage1_interstage_claims_size} bytes"); eprintln!( @@ -624,6 +649,7 @@ where + extension_opening_sumcheck_size + opening_payload_size + fold_grind_nonce_size + + unchecked_l2_diagnostic_size + stage1_sumcheck_size + stage1_interstage_claims_size + stage1_range_image_evaluation_size diff --git a/crates/akita-pcs/src/scheme/tests/mod.rs b/crates/akita-pcs/src/scheme/tests/mod.rs index 0f425b205..3c42338db 100644 --- a/crates/akita-pcs/src/scheme/tests/mod.rs +++ b/crates/akita-pcs/src/scheme/tests/mod.rs @@ -166,6 +166,10 @@ fn expected_same_point_batched_shape( let root_shape = LevelProofShape { extension_opening_reduction: None, opening_payload_coeffs: opening_payload_coeffs(root_params), + unchecked_l2_diagnostic_coefficients: root_params + .inner_commit_matrix + .unchecked_l2_collision_sq() + .map(|_| root_rounds), stage1_stages: DigitRangePlan::new(1usize << root_params.log_basis_open) .expect("scheduled root range basis") .stage_shapes(root_rounds), @@ -194,6 +198,10 @@ fn expected_same_point_batched_shape( recursive_folds.push(LevelProofShape { extension_opening_reduction: None, opening_payload_coeffs: opening_payload_coeffs(level_params), + unchecked_l2_diagnostic_coefficients: level_params + .inner_commit_matrix + .unchecked_l2_collision_sq() + .map(|_| rounds), stage1_stages: DigitRangePlan::new(1usize << level_params.log_basis_open) .expect("scheduled range basis") .stage_shapes(rounds), diff --git a/crates/akita-planner/src/emit/mod.rs b/crates/akita-planner/src/emit/mod.rs index 170e122d5..598cce440 100644 --- a/crates/akita-planner/src/emit/mod.rs +++ b/crates/akita-planner/src/emit/mod.rs @@ -159,6 +159,11 @@ fn generated_entry( .map(|step| GeneratedRecursiveFold { payload_mode: step.params.witness.payload_mode, witness: committed_group(&step.params.witness), + unchecked_l2_collision_sq: step + .params + .witness + .inner_commit_matrix + .unchecked_l2_collision_sq(), num_digits_fold: step.params.witness.num_digits_fold as u32, open_commit_matrix: open_matrix_params( &step.params.open_commit_matrix, @@ -418,9 +423,10 @@ fn emit_schedule_entry( for fold in entry.recursive_folds { writeln!( out, - " GeneratedRecursiveFold {{ payload_mode: {}, witness: {}, num_digits_fold: {}, open_commit_matrix: {}, incoming_setup_prefix: {}, witness_partition: {} }},", + " GeneratedRecursiveFold {{ payload_mode: {}, witness: {}, unchecked_l2_collision_sq: {:?}, num_digits_fold: {}, open_commit_matrix: {}, incoming_setup_prefix: {}, witness_partition: {} }},", emit_payload_mode(fold.payload_mode), emit_committed_group(fold.witness), + fold.unchecked_l2_collision_sq, fold.num_digits_fold, emit_open_matrix(fold.open_commit_matrix), emit_setup_prefix(fold.incoming_setup_prefix), diff --git a/crates/akita-planner/src/schedule_params.rs b/crates/akita-planner/src/schedule_params.rs index 393983aed..b6e2d1fe0 100644 --- a/crates/akita-planner/src/schedule_params.rs +++ b/crates/akita-planner/src/schedule_params.rs @@ -13,11 +13,13 @@ use akita_field::AkitaError; #[cfg(all(test, feature = "catalog-gen"))] use akita_types::extension_opening_reduction_level_bytes; use akita_types::sis::{ - decomposed_s_block_ring_count, decomposed_t_ring_count, decomposed_w_ring_count, - num_digits_inner, num_digits_open, num_digits_setup_prefix_commit, - rounded_up_collision_inf_norm, rounded_up_role_a_inf_norm, BalancedSignedDigitFoldPolicy, - FoldWitnessNorms, HonestFoldPolicy, HonestFoldPolicySpec, HonestFoldSizingQuery, - InnerCommitMatrixParams, OpenCommitMatrixParams, OuterCommitMatrixParams, SisTableKey, + ceil_supported_l2_collision_sq, decomposed_s_block_ring_count, decomposed_t_ring_count, + decomposed_w_ring_count, num_digits_inner, num_digits_open, num_digits_setup_prefix_commit, + role_a_collision_l2_sq_for_response_bound, rounded_up_collision_inf_norm, + rounded_up_role_a_inf_norm, BalancedSignedDigitFoldPolicy, FoldWitnessNorms, HonestFoldPolicy, + HonestFoldPolicySpec, HonestFoldSizingQuery, InnerCommitMatrixParams, OpenCommitMatrixParams, + OuterCommitMatrixParams, SisTableKey, UNCHECKED_L2_DIAGNOSTIC_CHALLENGE_OP_NORM_CAP, + UNCHECKED_L2_DIAGNOSTIC_NORM_SQ_CAP, }; use akita_types::{ level_proof_bytes, padded_setup_prefix_len, try_extension_opening_reduction_level_bytes, @@ -43,7 +45,7 @@ mod unpruned_search; pub use akita_types::suffix_opening_layout; pub(crate) use candidate::{ - derive_candidate_level_params, derive_candidate_level_params_all_splits, + derive_candidate_level_params_all_splits, derive_candidate_level_params_frontier, planned_next_witness_len, scalar_root_fold_level_params_candidate, }; pub(crate) use objective::{complete_schedule_score, select_complete_candidate}; diff --git a/crates/akita-planner/src/schedule_params/candidate.rs b/crates/akita-planner/src/schedule_params/candidate.rs index 228f0a60b..52256f55d 100644 --- a/crates/akita-planner/src/schedule_params/candidate.rs +++ b/crates/akita-planner/src/schedule_params/candidate.rs @@ -9,7 +9,7 @@ mod root; mod setup_prefix; pub(crate) use recursive::{ - derive_candidate_level_params, derive_candidate_level_params_all_splits, + derive_candidate_level_params_all_splits, derive_candidate_level_params_frontier, }; pub(crate) use root::scalar_root_fold_level_params_candidate; pub(super) use setup_prefix::derive_setup_prefix_group; diff --git a/crates/akita-planner/src/schedule_params/candidate/recursive.rs b/crates/akita-planner/src/schedule_params/candidate/recursive.rs index 60997a7e1..68b8b9bad 100644 --- a/crates/akita-planner/src/schedule_params/candidate/recursive.rs +++ b/crates/akita-planner/src/schedule_params/candidate/recursive.rs @@ -5,7 +5,7 @@ use super::*; /// `ceil(log2(ring_elems))` bucket, which dominates every shorter member for /// the same split. #[allow(clippy::too_many_arguments)] -pub(crate) fn recursive_fold_level_params_candidate( +pub(crate) fn recursive_fold_level_params_candidates( policy: &PlannerPolicy, ring_challenge_cfg: &akita_challenges::SparseChallengeConfig, dimensions: CommitmentRingDims, @@ -15,13 +15,13 @@ pub(crate) fn recursive_fold_level_params_candidate( fold_level: usize, block_index_bits: usize, requested_fold_shape: TensorChallengeShape, -) -> Result, AkitaError> { +) -> Result, AkitaError> { if reduced_vars <= 2 || reduced_vars >= 53 || block_index_bits == 0 || block_index_bits >= reduced_vars { - return Ok(None); + return Ok(Vec::new()); } let num_chunks = policy.chunks_at_level(fold_level); let num_positions_per_block = 1usize @@ -31,7 +31,7 @@ pub(crate) fn recursive_fold_level_params_candidate( })?; let num_live_blocks = num_ring_elems.div_ceil(num_positions_per_block); if num_live_blocks < num_chunks { - return Ok(None); + return Ok(Vec::new()); } let fold_challenge_shape = optimize_fold_challenge_shape(requested_fold_shape, num_live_blocks)?; @@ -42,10 +42,10 @@ pub(crate) fn recursive_fold_level_params_candidate( let delta_commit = num_digits_inner(decomp, false); let delta_open = num_digits_open(decomp); let Some(width_s) = decomposed_s_block_ring_count(num_positions_per_block, delta_commit) else { - return Ok(None); + return Ok(Vec::new()); }; let Some(num_fold_coeffs) = width_s.checked_mul(dimensions.d_a()) else { - return Ok(None); + return Ok(Vec::new()); }; let fold_policy = BalancedSignedDigitFoldPolicy::preserving_existing_behavior( policy.decomposition.field_bits(), @@ -60,7 +60,7 @@ pub(crate) fn recursive_fold_level_params_candidate( challenge_config: ring_challenge_cfg, challenge_shape: fold_challenge_shape, }) else { - return Ok(None); + return Ok(Vec::new()); }; let Some(norm_s) = rounded_up_role_a_inf_norm( policy.sis_security_policy, @@ -73,44 +73,67 @@ pub(crate) fn recursive_fold_level_params_candidate( num_digits_fold, policy.ring_subfield_norm_bound, ) else { - return Ok(None); - }; - let Ok(inner_commit_matrix) = InnerCommitMatrixParams::try_new_with_min_rank( - sis_key_at_dimension( - policy, - akita_types::SisMatrixRole::Inner, - dimensions.d_a(), - norm_s, - ), - width_s, - ) else { - return Ok(None); - }; - let Some(native_width_t) = decomposed_t_ring_count( - inner_commit_matrix.output_rank(), - delta_open, - num_live_blocks, - 1, - ) else { - return Ok(None); + return Ok(Vec::new()); }; - let Some((outer_key, width_t)) = projected_collision_role_price( + let inner_key = sis_key_at_dimension( policy, - akita_types::SisMatrixRole::Outer, + akita_types::SisMatrixRole::Inner, dimensions.d_a(), - dimensions.d_b(), - native_width_t, - log_basis, - ) else { - return Ok(None); - }; - let Ok(outer_commit_matrix) = - OuterCommitMatrixParams::try_new_with_min_rank(outer_key, width_t) + norm_s, + ); + let Ok(linf_inner_commit_matrix) = + InnerCommitMatrixParams::try_new_with_min_rank(inner_key, width_s) else { - return Ok(None); + return Ok(Vec::new()); }; + // UNSOUND DIAGNOSTIC: late, single-chunk folds may price A against a fixed + // whole-witness L2 cap. The proof carries the observed norm but the + // verifier intentionally does not check it yet. Enumerate distinct secure + // L2 ranks by conservatively widening the collision bucket, then retain + // the ordinary L∞ candidate as an independent fallback. + let mut inner_commit_matrices = Vec::new(); + if fold_level >= 3 && num_chunks == 1 { + // For every current fixed `psi` embedding, this policy value is also + // its exact squared L2 operator norm: one on the base-field path and + // two on the degree-2/4 paired-lane paths. + let collision_l2_sq = UNCHECKED_L2_DIAGNOSTIC_CHALLENGE_OP_NORM_CAP + .checked_mul(UNCHECKED_L2_DIAGNOSTIC_CHALLENGE_OP_NORM_CAP) + .and_then(|challenge_op_norm_sq| { + role_a_collision_l2_sq_for_response_bound( + challenge_op_norm_sq, + policy.ring_subfield_norm_bound, + UNCHECKED_L2_DIAGNOSTIC_NORM_SQ_CAP, + ) + }); + if let Some(mut bucket) = collision_l2_sq.and_then(ceil_supported_l2_collision_sq) { + let mut previous_rank = None; + while bucket <= (1u128 << 84) { + let Ok(matrix) = + InnerCommitMatrixParams::try_new_with_unchecked_l2_diagnostic_min_rank( + inner_key, width_s, bucket, + ) + else { + break; + }; + let rank = matrix.output_rank(); + if rank >= linf_inner_commit_matrix.output_rank() { + break; + } + if previous_rank != Some(rank) { + inner_commit_matrices.push(matrix); + previous_rank = Some(rank); + } + let Some(next_bucket) = bucket.checked_mul(2) else { + break; + }; + bucket = next_bucket; + } + } + } + inner_commit_matrices.push(linf_inner_commit_matrix); + let Some(native_width_w) = decomposed_w_ring_count(delta_open, num_live_blocks, 1) else { - return Ok(None); + return Ok(Vec::new()); }; let Some((open_key, width_w)) = projected_collision_role_price( policy, @@ -120,34 +143,61 @@ pub(crate) fn recursive_fold_level_params_candidate( native_width_w, log_basis, ) else { - return Ok(None); + return Ok(Vec::new()); }; let Ok(open_commit_matrix) = OpenCommitMatrixParams::try_new_with_min_rank(open_key, width_w) else { - return Ok(None); - }; - let params = CommittedGroupParams { - payload_mode: akita_types::CommitmentPayloadMode::Compressed, - log_basis_inner: log_basis, - log_basis_outer: log_basis, - log_basis_open: log_basis, - inner_commit_matrix, - outer_commit_matrix, - open_commit_matrix, - num_live_ring_elements_per_claim: num_ring_elems, - num_positions_per_block, - num_live_blocks, - fold_challenge_config: *ring_challenge_cfg, - fold_challenge_shape, - num_digits_inner: delta_commit, - num_digits_outer: delta_open, - num_digits_open: delta_open, - num_digits_fold, - witness_chunk: policy.witness_chunk_for_level(fold_level), - precommitted_groups: Vec::new(), - setup_prefix: None, + return Ok(Vec::new()); }; - Ok(Some(params)) + + let mut candidates = Vec::with_capacity(inner_commit_matrices.len()); + for inner_commit_matrix in inner_commit_matrices { + let Some(native_width_t) = decomposed_t_ring_count( + inner_commit_matrix.output_rank(), + delta_open, + num_live_blocks, + 1, + ) else { + continue; + }; + let Some((outer_key, width_t)) = projected_collision_role_price( + policy, + akita_types::SisMatrixRole::Outer, + dimensions.d_a(), + dimensions.d_b(), + native_width_t, + log_basis, + ) else { + continue; + }; + let Ok(outer_commit_matrix) = + OuterCommitMatrixParams::try_new_with_min_rank(outer_key, width_t) + else { + continue; + }; + candidates.push(CommittedGroupParams { + payload_mode: akita_types::CommitmentPayloadMode::Compressed, + log_basis_inner: log_basis, + log_basis_outer: log_basis, + log_basis_open: log_basis, + inner_commit_matrix, + outer_commit_matrix, + open_commit_matrix, + num_live_ring_elements_per_claim: num_ring_elems, + num_positions_per_block, + num_live_blocks, + fold_challenge_config: *ring_challenge_cfg, + fold_challenge_shape, + num_digits_inner: delta_commit, + num_digits_outer: delta_open, + num_digits_open: delta_open, + num_digits_fold, + witness_chunk: policy.witness_chunk_for_level(fold_level), + precommitted_groups: Vec::new(), + setup_prefix: None, + }); + } + Ok(candidates) } /// Compute parameters that generate the smallest witness for the next @@ -155,6 +205,7 @@ pub(crate) fn recursive_fold_level_params_candidate( /// case (similar to `find_schedule`), we should check that current proof /// size + suffix cost is the smallest. However, as time blows up, we /// don't do that here. +#[cfg(test)] fn push_recursive_split_candidate(candidates: &mut Vec, reduced_vars: usize, p: isize) { if p <= 0 || p >= reduced_vars as isize { return; @@ -165,6 +216,7 @@ fn push_recursive_split_candidate(candidates: &mut Vec, reduced_vars: usi } } +#[cfg(test)] pub(super) fn seed_recursive_split_candidates( num_ring_elems: usize, reduced_vars: usize, @@ -216,6 +268,7 @@ pub(super) fn seed_recursive_split_candidates( /// terms only increasing the witness. A split whose lower bound already exceeds /// the current best score therefore cannot become optimal. #[derive(Clone, Copy)] +#[cfg(test)] pub(super) struct RecursiveSplitLowerBoundInput { pub(super) num_ring_elems: usize, pub(super) ring_dimension: usize, @@ -227,6 +280,7 @@ pub(super) struct RecursiveSplitLowerBoundInput { pub(super) requested_fold_shape: TensorChallengeShape, } +#[cfg(test)] pub(super) fn recursive_split_lower_bound(input: RecursiveSplitLowerBoundInput) -> Option { if input.r == 0 || input.r >= input.reduced_vars { return None; @@ -334,7 +388,7 @@ fn prepare_recursive_level_search( } #[allow(clippy::too_many_arguments)] -fn recursive_level_candidate_for_split( +fn recursive_level_candidates_for_split( policy: &PlannerPolicy, payload_mode: akita_types::CommitmentPayloadMode, ring_challenge_cfg: &akita_challenges::SparseChallengeConfig, @@ -344,8 +398,8 @@ fn recursive_level_candidate_for_split( fold_level: usize, block_index_bits: usize, requested_fold_shape: TensorChallengeShape, -) -> Result, AkitaError> { - let Some(mut candidate_params) = recursive_fold_level_params_candidate( +) -> Result, AkitaError> { + let candidate_params = recursive_fold_level_params_candidates( policy, ring_challenge_cfg, dimensions, @@ -355,48 +409,49 @@ fn recursive_level_candidate_for_split( fold_level, block_index_bits, requested_fold_shape, - )? - else { - return Ok(None); - }; - candidate_params.payload_mode = payload_mode; - candidate_params.setup_prefix = search.setup_prefix.clone(); - if let Some(prefix) = &candidate_params.setup_prefix { - let prefix_d_width = prefix - .commitment_params - .d_segment_width(candidate_params.role_dims().d_d())?; - let total_d_width = candidate_params - .open_commit_matrix - .input_width() - .checked_add(prefix_d_width) - .ok_or_else(|| { - AkitaError::InvalidSetup("setup-prefix shared D width overflow".to_string()) - })?; - candidate_params.open_commit_matrix = OpenCommitMatrixParams::try_new_with_min_rank( - candidate_params.open_commit_matrix.sis_table_key(), - total_d_width, + )?; + let mut candidates = Vec::with_capacity(candidate_params.len()); + for mut params in candidate_params { + params.payload_mode = payload_mode; + params.setup_prefix = search.setup_prefix.clone(); + if let Some(prefix) = ¶ms.setup_prefix { + let prefix_d_width = prefix + .commitment_params + .d_segment_width(params.role_dims().d_d())?; + let total_d_width = params + .open_commit_matrix + .input_width() + .checked_add(prefix_d_width) + .ok_or_else(|| { + AkitaError::InvalidSetup("setup-prefix shared D width overflow".to_string()) + })?; + params.open_commit_matrix = OpenCommitMatrixParams::try_new_with_min_rank( + params.open_commit_matrix.sis_table_key(), + total_d_width, + )?; + } + let Some(next_witness_len) = planned_next_witness_len( + policy.decomposition.field_bits(), + ¶ms, + 1, + search.num_chunks, + )? + else { + continue; + }; + let score = layout_candidate_score( + next_witness_len, + params.num_live_blocks, + search.num_chunks, + params.fold_challenge_shape, )?; + candidates.push((score, params, next_witness_len)); } - let Some(next_witness_len) = planned_next_witness_len( - policy.decomposition.field_bits(), - &candidate_params, - 1, - search.num_chunks, - )? - else { - return Ok(None); - }; - let score = layout_candidate_score( - next_witness_len, - candidate_params.num_live_blocks, - search.num_chunks, - candidate_params.fold_challenge_shape, - )?; - Ok(Some((score, candidate_params, next_witness_len))) + Ok(candidates) } #[allow(clippy::too_many_arguments)] -pub(crate) fn derive_candidate_level_params( +pub(crate) fn derive_candidate_level_params_frontier( policy: &PlannerPolicy, payload_mode: akita_types::CommitmentPayloadMode, ring_challenge_cfg: &akita_challenges::SparseChallengeConfig, @@ -406,7 +461,7 @@ pub(crate) fn derive_candidate_level_params( fold_level: usize, incoming_setup_prefix: Option, requested_fold_shape: TensorChallengeShape, -) -> Result, AkitaError> { +) -> Result, AkitaError> { let Some(search) = prepare_recursive_level_search( policy, ring_challenge_cfg, @@ -418,86 +473,46 @@ pub(crate) fn derive_candidate_level_params( requested_fold_shape, )? else { - return Ok(None); + return Ok(Vec::new()); }; - // The exhaustive scan visited larger `r` first and retained the first - // equal-scoring candidate. Keep that tie-break explicit because the - // seed-first search intentionally evaluates splits in a different order. - let mut best: Option<(LayoutCandidateScore, usize, CommittedGroupParams, usize)> = None; - let decomp = DecompositionParams { - log_basis, - ..policy.decomposition - }; - let delta_commit = num_digits_inner(decomp, false); - let delta_open = num_digits_open(decomp); - let mut evaluated = Vec::new(); - let mut candidates = seed_recursive_split_candidates( - search.num_ring_elems, - search.reduced_vars, - delta_commit, - delta_open, - search.num_chunks, - ); - candidates.extend((1..search.reduced_vars).rev()); - - // Evaluate a square-root-model seed window first, then finish the exact - // search with a cheap lower-bound filter. The filter may evaluate extra - // splits when the bound is loose, but it never skips a split that can beat - // the current best layout score. - for r in candidates { - if evaluated.contains(&r) { - continue; - } - evaluated.push(r); - if let Some((best_score, _, _, _)) = &best { - if let Some(lower_bound) = recursive_split_lower_bound(RecursiveSplitLowerBoundInput { - num_ring_elems: search.num_ring_elems, - ring_dimension: dimensions.d_a(), - reduced_vars: search.reduced_vars, - r, - delta_commit, - delta_open, - num_chunks: search.num_chunks, - requested_fold_shape, + // Keep one best split per A rank. A tighter L2 floor must add a rank path + // without deleting the old higher-rank path, because their next witness + // lengths can land in different power-of-two DP states. The diagnostic L2 + // bucket is only an encoding of the selected rank; keeping multiple + // buckets for the same rank would duplicate equivalent suffix states. + let mut best = std::collections::BTreeMap::< + usize, + (LayoutCandidateScore, usize, CommittedGroupParams, usize), + >::new(); + for r in (1..search.reduced_vars).rev() { + for (score, candidate_params, next_witness_len) in recursive_level_candidates_for_split( + policy, + payload_mode, + ring_challenge_cfg, + dimensions, + &search, + log_basis, + fold_level, + r, + requested_fold_shape, + )? { + let key = candidate_params.inner_commit_matrix.output_rank(); + if best.get(&key).is_none_or(|(best_score, best_r, _, _)| { + recursive_candidate_order_key(score, r) + < recursive_candidate_order_key(*best_score, *best_r) }) { - if lower_bound > best_score.0 { - continue; - } + best.insert(key, (score, r, candidate_params, next_witness_len)); } } - let Some((score, candidate_params, next_witness_len)) = - recursive_level_candidate_for_split( - policy, - payload_mode, - ring_challenge_cfg, - dimensions, - &search, - log_basis, - fold_level, - r, - requested_fold_shape, - )? - else { - continue; - }; - if best.as_ref().is_none_or(|(best_score, best_r, _, _)| { - recursive_candidate_order_key(score, r) - < recursive_candidate_order_key(*best_score, *best_r) - }) { - best = Some((score, r, candidate_params, next_witness_len)); - } - } - - let Some((_, _, candidate_params, next_witness_len)) = best else { - return Ok(None); - }; - - if next_witness_len >= current_witness_len { - return Ok(None); } - Ok(Some((candidate_params, next_witness_len))) + Ok(best + .into_values() + .filter_map(|(_, _, params, next_witness_len)| { + (next_witness_len < current_witness_len).then_some((params, next_witness_len)) + }) + .collect()) } #[allow(clippy::too_many_arguments)] @@ -527,7 +542,7 @@ pub(crate) fn derive_candidate_level_params_all_splits( }; let mut candidates = Vec::new(); for block_index_bits in (1..search.reduced_vars).rev() { - let Some((_, params, next_witness_len)) = recursive_level_candidate_for_split( + for (_, params, next_witness_len) in recursive_level_candidates_for_split( policy, payload_mode, ring_challenge_cfg, @@ -537,12 +552,10 @@ pub(crate) fn derive_candidate_level_params_all_splits( fold_level, block_index_bits, requested_fold_shape, - )? - else { - continue; - }; - if next_witness_len < current_witness_len { - candidates.push((params, next_witness_len)); + )? { + if next_witness_len < current_witness_len { + candidates.push((params, next_witness_len)); + } } } Ok(candidates) diff --git a/crates/akita-planner/src/schedule_params/mixed_search.rs b/crates/akita-planner/src/schedule_params/mixed_search.rs index 6fcbe1b10..b2715d9d8 100644 --- a/crates/akita-planner/src/schedule_params/mixed_search.rs +++ b/crates/akita-planner/src/schedule_params/mixed_search.rs @@ -135,7 +135,7 @@ fn suffix_frontier( requested_fold_shape, )? } else { - derive_candidate_level_params( + derive_candidate_level_params_frontier( policy, payload_mode, &ring_challenge, @@ -146,8 +146,6 @@ fn suffix_frontier( None, requested_fold_shape, )? - .into_iter() - .collect() }; for (params, output_witness_len) in candidates { diff --git a/crates/akita-planner/src/schedule_params/suffix_dp.rs b/crates/akita-planner/src/schedule_params/suffix_dp.rs index 074fe9b3b..ecdce0272 100644 --- a/crates/akita-planner/src/schedule_params/suffix_dp.rs +++ b/crates/akita-planner/src/schedule_params/suffix_dp.rs @@ -13,9 +13,9 @@ use akita_types::{ use crate::{group_batch::multi_group_root_level_candidates_for_basis, PlannerPolicy}; use super::{ - derive_candidate_level_params, level_setup_field_elements, stage3_payload_bytes_for_successor, - suffix_opening_layout, terminal_setup_field_elements, CandidateFoldStep, - CandidateTerminalResponse, ScheduleCandidate, MAX_RECURSION_DEPTH, + derive_candidate_level_params_frontier, level_setup_field_elements, + stage3_payload_bytes_for_successor, suffix_opening_layout, terminal_setup_field_elements, + CandidateFoldStep, CandidateTerminalResponse, ScheduleCandidate, MAX_RECURSION_DEPTH, }; /// Result of the suffix DP at one state. Both shape options are reported @@ -91,6 +91,15 @@ pub(crate) fn terminal_direct_suffix_cost( terminal_fold_level: usize, opening_layout: Option<&OpeningClaimsLayout>, ) -> Result<(CandidateTerminalResponse, usize), AkitaError> { + if terminal_lp + .inner_commit_matrix + .unchecked_l2_collision_sq() + .is_some() + { + return Err(AkitaError::InvalidSetup( + "unchecked L2 diagnostic requires a recursive fold proof".to_string(), + )); + } // Scalar same-point root fold: polynomial count at the root, 1 recursively. let num_polynomials = if terminal_fold_level == 0 { key.num_polynomials() @@ -492,7 +501,7 @@ fn price_level_candidate_with_children( /// /// At each state, `best_by_first_direct_setup_per_lb` keeps one candidate per /// `log_basis` (from -/// [`derive_candidate_level_params`]). A candidate may terminate on the current +/// [`derive_candidate_level_params_frontier`]). A candidate may terminate on the current /// witness when there is no incoming setup prefix, or fold again and consume /// `incoming_setup_prefix` when present. Fold-again edges plan exactly one child /// state: recursive setup edges pass the outgoing setup prefix to the child, @@ -625,7 +634,7 @@ pub(crate) fn derive_optimal_suffix_schedule( continue; }; for &mode in payload_phase.candidate_modes(level, incoming_setup_prefix.is_some()) { - if let Some(candidate) = derive_candidate_level_params( + candidates.extend(derive_candidate_level_params_frontier( policy, mode, &ring_challenge_cfg, @@ -635,9 +644,7 @@ pub(crate) fn derive_optimal_suffix_schedule( level, incoming_setup_prefix, requested_fold_shape, - )? { - candidates.push(candidate); - } + )?); } if candidates.is_empty() { continue; diff --git a/crates/akita-planner/src/schedule_params/tests.rs b/crates/akita-planner/src/schedule_params/tests.rs index e46f06f35..fe8e69395 100644 --- a/crates/akita-planner/src/schedule_params/tests.rs +++ b/crates/akita-planner/src/schedule_params/tests.rs @@ -39,6 +39,39 @@ fn balanced_chunk_geometry_prices_exact_work_and_residual_imbalance() { ); } +#[test] +fn unchecked_l2_candidate_cannot_terminate_directly() { + let mut params = CommittedGroupParams::params_only( + akita_types::SisModulusProfileId::Q128OffsetA7F7, + 64, + 4, + 2, + 2, + 2, + SparseChallengeConfig::pm1_only(3), + ); + params.inner_commit_matrix = + InnerCommitMatrixParams::try_new_with_unchecked_l2_diagnostic_min_rank( + params.inner_commit_matrix.sis_table_key(), + 1, + 1u128 << 50, + ) + .expect("diagnostic A matrix"); + + let error = suffix_dp::terminal_direct_suffix_cost( + 1, + ¶ms, + 128, + PolynomialGroupLayout::singleton(1), + 3, + None, + ) + .expect_err("the unchecked claim has no terminal proof payload"); + assert!(error + .to_string() + .contains("requires a recursive fold proof")); +} + #[test] fn ring_dimension_domain_is_canonical_and_rejects_invalid_carriers() { let domain = RingDimensionSearchDomain::new([ @@ -220,7 +253,10 @@ fn pruned_mixed_search_matches_unpruned_traversal_and_is_canonical() { let reversed_with_duplicate = RingDimensionSearchDomain::new([a128, d64, a128]).unwrap(); let canonical = RingDimensionSearchDomain::new([d64, a128]).unwrap(); let policy = policy_for_domain(base_policy, &canonical); - let key = PolynomialGroupLayout::singleton(16); + // Keep the exact unpruned oracle on a compact fixture. Recursive rank + // frontiers deliberately branch, and this oracle materializes every + // complete suffix instead of memoizing states like the production DP. + let key = PolynomialGroupLayout::singleton(12); let selected = find_schedule( key, @@ -277,7 +313,7 @@ fn uniform_suffix_dp_matches_unpruned_exact_cutover_search() { let domain = RingDimensionSearchDomain::uniform(64).unwrap(); let policy = policy_for_domain(policy_of::(), &domain); - let key = PolynomialGroupLayout::singleton(16); + let key = PolynomialGroupLayout::singleton(12); let selected = find_schedule( key, &policy, @@ -516,7 +552,7 @@ fn mixed_nv36_benchmark_policy_selects_minimum_setup_schedule() { ); assert_eq!( selected.estimate.estimated_proof_payload_bytes().unwrap(), - 90_312 + 89_064 ); assert_eq!(rank_one_capped_root.inner_commit_matrix.output_rank(), 3); assert_eq!(selected_root.inner_commit_matrix.output_rank(), 1); @@ -655,6 +691,69 @@ fn dimension_domain_is_independent_of_setup_generation_dimension() { domain.validate_for_policy(&policy).unwrap(); } +#[cfg(feature = "catalog-gen")] +#[test] +fn tighter_l2_floor_preserves_small_field_recursive_frontiers() { + use akita_config::{ + policy_of, + proof_optimized::{fp32, fp64}, + CommitmentConfig, + }; + + fn planned() -> PlannedFoldSchedule { + let policy = policy_of::(); + let domain = RingDimensionSearchDomain::uniform(Cfg::D).unwrap(); + find_schedule( + PolynomialGroupLayout::singleton(28), + &policy, + Cfg::root_honest_fold_policy(), + &domain, + Cfg::ring_challenge_config, + Cfg::fold_challenge_shape_at_level, + ) + .unwrap() + } + + let fp64 = planned::(); + let fp32 = planned::(); + assert_eq!(fp64.schedule.recursive_folds.len(), 4); + assert_eq!(fp64.schedule.terminal.params.witness.num_live_blocks, 7); + assert_eq!( + fp64.schedule.recursive_folds[3] + .params + .witness + .inner_commit_matrix + .output_rank(), + 4 + ); + assert_eq!( + fp64.schedule.recursive_folds[3] + .params + .witness + .inner_commit_matrix + .unchecked_l2_collision_sq(), + Some(1u128 << 48) + ); + assert_eq!(fp32.schedule.recursive_folds.len(), 5); + assert_eq!(fp32.schedule.terminal.params.witness.num_live_blocks, 6); + assert_eq!( + fp32.schedule.recursive_folds[2] + .params + .witness + .inner_commit_matrix + .output_rank(), + 7 + ); + assert_eq!( + fp32.schedule.recursive_folds[2] + .params + .witness + .inner_commit_matrix + .unchecked_l2_collision_sq(), + Some(1u128 << 48) + ); +} + #[cfg(feature = "catalog-gen")] #[test] fn mixed_search_applies_setup_budget_in_physical_fields() { @@ -721,7 +820,7 @@ fn exact_payload_ties_prefer_the_smaller_setup_envelope() { ); assert_eq!( selected.estimate.estimated_proof_payload_bytes().unwrap(), - 91_016 + 89_064 ); } @@ -770,6 +869,6 @@ fn recursive_exact_cutover_proof_size_is_documented() { assert_eq!( planned.estimate.estimated_proof_payload_bytes().unwrap(), - 94_680 + 93_112 ); } diff --git a/crates/akita-planner/src/schedule_params/unpruned_search.rs b/crates/akita-planner/src/schedule_params/unpruned_search.rs index db8c443b2..c075eacf5 100644 --- a/crates/akita-planner/src/schedule_params/unpruned_search.rs +++ b/crates/akita-planner/src/schedule_params/unpruned_search.rs @@ -86,7 +86,7 @@ fn enumerate_suffixes( requested_fold_shape, )? } else { - derive_candidate_level_params( + derive_candidate_level_params_frontier( policy, payload_mode, &ring_challenge, @@ -97,8 +97,6 @@ fn enumerate_suffixes( None, requested_fold_shape, )? - .into_iter() - .collect() }; for (params, output_witness_len) in candidates { diff --git a/crates/akita-prover/src/backend/recursive/witness.rs b/crates/akita-prover/src/backend/recursive/witness.rs index bc92fb0ea..e2d08119c 100644 --- a/crates/akita-prover/src/backend/recursive/witness.rs +++ b/crates/akita-prover/src/backend/recursive/witness.rs @@ -32,6 +32,7 @@ pub struct RecursiveWitnessFlat { commitment_digits: Option>, commitment_ring_dim: Option, known_balanced_log_basis: Option, + exact_fold_l2_squared_norm: Option, } impl RecursiveWitnessFlat { @@ -41,6 +42,7 @@ impl RecursiveWitnessFlat { commitment_digits: None, commitment_ring_dim: None, known_balanced_log_basis: None, + exact_fold_l2_squared_norm: None, } } @@ -48,6 +50,7 @@ impl RecursiveWitnessFlat { digits: Vec, layout: &WitnessLayout, log_basis: u32, + exact_fold_l2_squared_norm: u128, ) -> Result { let expected = layout.live_coeff_len(); if digits.len() != expected { @@ -61,6 +64,7 @@ impl RecursiveWitnessFlat { commitment_digits: None, commitment_ring_dim: None, known_balanced_log_basis: Some(log_basis), + exact_fold_l2_squared_norm: Some(exact_fold_l2_squared_norm), }) } @@ -99,6 +103,12 @@ impl RecursiveWitnessFlat { self.digits.len() } + /// Exact squared L2 norm of the undecomposed folded witness `z`, when this + /// witness came directly from a ring-switch fold. + pub fn exact_fold_l2_squared_norm(&self) -> Option { + self.exact_fold_l2_squared_norm + } + pub(crate) fn committed_coeff_len(&self) -> Result { self.commitment_digits .as_ref() diff --git a/crates/akita-prover/src/protocol/core.rs b/crates/akita-prover/src/protocol/core.rs index 9bfcf4e40..41fc20de3 100644 --- a/crates/akita-prover/src/protocol/core.rs +++ b/crates/akita-prover/src/protocol/core.rs @@ -28,8 +28,8 @@ use akita_sumcheck::{SumcheckInstanceProverExt, SumcheckProof}; use akita_transcript::labels::{ ABSORB_COMMITMENT, ABSORB_EVALUATION_CLAIMS, ABSORB_NEXT_LEVEL_WITNESS_BINDING, ABSORB_RANGE_IMAGE_EVALUATION, ABSORB_STAGE2_NEXT_W_EVAL, ABSORB_TERMINAL_E_HAT, - ABSORB_TERMINAL_W_REMAINDER, CHALLENGE_COMPRESSION_BINARY, CHALLENGE_SUMCHECK_BATCH, - CHALLENGE_SUMCHECK_ROUND, + ABSORB_TERMINAL_W_REMAINDER, ABSORB_UNCHECKED_L2_DIAGNOSTIC, CHALLENGE_COMPRESSION_BINARY, + CHALLENGE_SUMCHECK_BATCH, CHALLENGE_SUMCHECK_ROUND, }; use akita_transcript::{append_ext_field, sample_ext_challenge, Transcript}; use akita_types::dispatch_for_field; diff --git a/crates/akita-prover/src/protocol/core/fold/mod.rs b/crates/akita-prover/src/protocol/core/fold/mod.rs index d5bc629c7..35f8ebba1 100644 --- a/crates/akita-prover/src/protocol/core/fold/mod.rs +++ b/crates/akita-prover/src/protocol/core/fold/mod.rs @@ -435,6 +435,27 @@ where prepared_fold.instance.opening_batch(), )?; + let unchecked_l2_norm_diagnostic = + if lp.inner_commit_matrix.unchecked_l2_collision_sq().is_some() { + let norm_squared = logical_w + .exact_fold_l2_squared_norm() + .ok_or_else(|| AkitaError::InvalidInput("missing folded-witness L2 norm".into()))?; + let leaf_round_coefficients = + vec![E::zero(); rs.relation_address_geometry.relation_point_variable_count()]; + // UNSOUND DIAGNOSTIC: bind the claimed norm and the wire-cost + // placeholders, but do not prove the norm relation in this rollout. + transcript.append_serde(ABSORB_UNCHECKED_L2_DIAGNOSTIC, &norm_squared); + for coefficient in &leaf_round_coefficients { + transcript.append_serde(ABSORB_UNCHECKED_L2_DIAGNOSTIC, coefficient); + } + Some(akita_types::UncheckedL2NormDiagnostic { + norm_squared, + leaf_round_coefficients, + }) + } else { + None + }; + let relation_rhs_layout = relation_rhs_layout_for(lp, prepared_fold.instance.opening_batch())?; let relation_claim = relation_claim_from_compressed_rhs_extension::( &relation_rhs_layout, @@ -562,6 +583,7 @@ where extension_opening_reduction: prepared_fold.extension_opening_reduction, opening_payload: prepared_fold.opening_payload.into_compact(), fold_grind_nonce, + unchecked_l2_norm_diagnostic, stage1: stage1_proof, stage2: AkitaStage2Proof { sumcheck_proof: stage2_sumcheck_proof, diff --git a/crates/akita-prover/src/protocol/fold_grind.rs b/crates/akita-prover/src/protocol/fold_grind.rs index 01b4f0478..9c3e7ab33 100644 --- a/crates/akita-prover/src/protocol/fold_grind.rs +++ b/crates/akita-prover/src/protocol/fold_grind.rs @@ -325,7 +325,20 @@ fn first_jointly_accepted_nonce( max_grind_attempts: u32, mut probe: impl FnMut(u32) -> Result, AkitaError>, ) -> Result<(u32, T), AkitaError> { - for nonce in 0..max_grind_attempts { + if max_grind_attempts == 0 { + return Err(AkitaError::InvalidInput( + "fold grind requires at least one attempt".into(), + )); + } + // Diagnostic-only profile lever: vary every level's fold challenges while + // keeping the polynomial, opening point, and prefix work fixed. Production + // behavior is unchanged when the environment variable is absent. + let first_nonce = std::env::var("AKITA_L2_DIAGNOSTIC_GRIND_START") + .ok() + .and_then(|value| value.parse::().ok()) + .map_or(0, |value| value % max_grind_attempts); + for offset in 0..max_grind_attempts { + let nonce = first_nonce.wrapping_add(offset) % max_grind_attempts; if let Some(value) = probe(nonce)? { return Ok((nonce, value)); } diff --git a/crates/akita-prover/src/protocol/ring_switch/coeffs.rs b/crates/akita-prover/src/protocol/ring_switch/coeffs.rs index 760b7d33e..925ea49ea 100644 --- a/crates/akita-prover/src/protocol/ring_switch/coeffs.rs +++ b/crates/akita-prover/src/protocol/ring_switch/coeffs.rs @@ -255,6 +255,7 @@ where lp.validate_opening_batch(opening_batch)?; let order = opening_batch.root_group_order()?; let mut owned = Vec::with_capacity(groups.len()); + let mut exact_fold_l2_squared_norm = 0u128; for (group_index, group) in groups.into_iter().enumerate() { let group_lp = lp.group_params(opening_batch, group_index)?; let group_dims = lp.group_role_dims(opening_batch, group_index)?; @@ -283,6 +284,14 @@ where hint, .. } = group; + for coefficient in z_folded_centered_per_chunk.iter().flatten().flatten() { + let magnitude = u128::from(coefficient.unsigned_abs()); + exact_fold_l2_squared_norm = exact_fold_l2_squared_norm + .checked_add(magnitude.checked_mul(magnitude).ok_or_else(|| { + AkitaError::InvalidInput("folded-witness L2 square overflow".into()) + })?) + .ok_or_else(|| AkitaError::InvalidInput("folded-witness L2 sum overflow".into()))?; + } if hint.ring_dim() != group_dims.d_a() { return Err(AkitaError::InvalidSize { expected: group_dims.d_a(), @@ -446,7 +455,12 @@ where ] }) .fold(lp.log_basis_open, u32::max); - RecursiveWitnessFlat::from_witness_layout(out, &witness_layout, known_balanced_log_basis) + RecursiveWitnessFlat::from_witness_layout( + out, + &witness_layout, + known_balanced_log_basis, + exact_fold_l2_squared_norm, + ) } pub(super) fn balanced_decompose_centered_i32_i8_into( diff --git a/crates/akita-schedules/src/generated/expand.rs b/crates/akita-schedules/src/generated/expand.rs index 7c8e29d1b..cc7eff747 100644 --- a/crates/akita-schedules/src/generated/expand.rs +++ b/crates/akita-schedules/src/generated/expand.rs @@ -288,6 +288,7 @@ impl GeneratedCommittedGroup { num_claims: usize, open_commit_matrix: GeneratedOpenCommitMatrix, setup_prefix_group: Option, + unchecked_l2_collision_sq: Option, ) -> Result { let dimensions = CommitmentRingDims { inner: self.inner_commit_matrix.ring_dimension as usize, @@ -401,16 +402,23 @@ impl GeneratedCommittedGroup { policy.ring_subfield_norm_bound, ) .ok_or_else(|| no_layout("A"))?; - let n_a = secure_rank( - "a", - sis_key( - policy, - akita_types::SisMatrixRole::Inner, - ring_d as u32, - a_bucket, - ), - inner_width, - )?; + let inner_key = sis_key( + policy, + akita_types::SisMatrixRole::Inner, + ring_d as u32, + a_bucket, + ); + let inner_commit_matrix = match unchecked_l2_collision_sq { + Some(collision_l2_sq) => { + InnerCommitMatrixParams::try_new_with_unchecked_l2_diagnostic_min_rank( + inner_key, + inner_width, + collision_l2_sq, + )? + } + None => InnerCommitMatrixParams::try_new_with_min_rank(inner_key, inner_width)?, + }; + let n_a = inner_commit_matrix.output_rank(); let b_bucket = rounded_up_collision_inf_norm( sis_policy, @@ -507,15 +515,7 @@ impl GeneratedCommittedGroup { log_basis_inner, log_basis_outer, log_basis_open, - inner_commit_matrix: InnerCommitMatrixParams::try_new( - sis_policy, - policy.sis_table_digest, - sis_modulus_profile, - n_a, - inner_width, - a_bucket, - ring_d, - )?, + inner_commit_matrix, outer_commit_matrix: OuterCommitMatrixParams::try_new( sis_policy, policy.sis_table_digest, diff --git a/crates/akita-schedules/src/generated/mod.rs b/crates/akita-schedules/src/generated/mod.rs index 37b5176d8..8132b7e44 100644 --- a/crates/akita-schedules/src/generated/mod.rs +++ b/crates/akita-schedules/src/generated/mod.rs @@ -83,6 +83,7 @@ pub struct GeneratedSetupPrefixInput { pub struct GeneratedRecursiveFold { pub payload_mode: akita_types::CommitmentPayloadMode, pub witness: GeneratedCommittedGroup, + pub unchecked_l2_collision_sq: Option, pub num_digits_fold: u32, pub open_commit_matrix: GeneratedOpenCommitMatrix, pub incoming_setup_prefix: Option, diff --git a/crates/akita-schedules/src/generated/walk.rs b/crates/akita-schedules/src/generated/walk.rs index f6c2b320a..a3603971a 100644 --- a/crates/akita-schedules/src/generated/walk.rs +++ b/crates/akita-schedules/src/generated/walk.rs @@ -110,6 +110,7 @@ pub(crate) fn walk_generated_schedule_entry( key.final_group.num_polynomials(), entry.root.open_commit_matrix, None, + None, )? }; let distributed_levels = distributed_activation_depth( @@ -147,6 +148,7 @@ pub(crate) fn walk_generated_schedule_entry( 1, fold.open_commit_matrix, fold.incoming_setup_prefix, + fold.unchecked_l2_collision_sq, )?; params.witness_chunk = partition_to_chunk(fold.witness_partition, distributed_levels)?; let output_witness_len = diff --git a/crates/akita-sis-estimator/examples/euclidean_width_table.rs b/crates/akita-sis-estimator/examples/euclidean_width_table.rs index b323a9e12..ebe34b8b6 100644 --- a/crates/akita-sis-estimator/examples/euclidean_width_table.rs +++ b/crates/akita-sis-estimator/examples/euclidean_width_table.rs @@ -13,7 +13,7 @@ use std::{ time::Instant, }; -const TABLE_HEADER: &str = "// AUTO-GENERATED by crates/akita-sis-estimator/examples/euclidean_width_table.rs -- do not edit by hand.\n//\n// SIS width thresholds for 128-bit security (BDGL16, Euclidean norm=2).\n// Rust estimator path: akita-sis-estimator::euclidean_width_table.\n// Keys are the union of power-of-two squared-collision buckets and derived keys K = d * B^2.\n\n"; +const TABLE_HEADER: &str = "// AUTO-GENERATED by crates/akita-sis-estimator/examples/euclidean_width_table.rs -- do not edit by hand.\n//\n// SIS width thresholds for 128-bit quantum security (ADPS16, Euclidean norm=2).\n// Rust estimator path: akita-sis-estimator::euclidean_width_table.\n// Keys bound the squared norm of the complete scalar collision vector.\n\n"; #[derive(Debug)] struct Args { @@ -128,7 +128,7 @@ fn write_rust_split( output: Option<&Path>, ) -> io::Result<()> { let default_out_dir = - Path::new(env!("CARGO_MANIFEST_DIR")).join("../akita-types/src/sis/generated_sis_table"); + Path::new(env!("CARGO_MANIFEST_DIR")).join("../akita-types/src/sis/generated_l2_sis_table"); let out_dir = output.unwrap_or(default_out_dir.as_path()); fs::create_dir_all(out_dir)?; fs::write(out_dir.join("mod.rs"), rust_mod_source())?; diff --git a/crates/akita-sis-estimator/src/akita.rs b/crates/akita-sis-estimator/src/akita.rs index e3f6d0dac..69209a0e2 100644 --- a/crates/akita-sis-estimator/src/akita.rs +++ b/crates/akita-sis-estimator/src/akita.rs @@ -130,7 +130,11 @@ pub fn scalar_sis_from_ring_wide( /// /// This is the mapping used by the shipped L2 table: /// `n = rank * d`, `m = width * d`, and -/// `length_bound = sqrt(width * collision_l2_sq)`. +/// `length_bound = sqrt(collision_l2_sq)`. +/// +/// `collision_l2_sq` bounds the complete scalar collision vector across all +/// `width` input ring rows. Multiplying it by `width` here would count those +/// rows twice. /// /// # Errors /// @@ -162,12 +166,11 @@ pub fn scalar_sis_from_ring_euclidean( field: "m", reason: "width * ring_dimension overflowed u64".to_string(), })?; - let radicand = BigUint::from(width) * BigUint::from(collision_l2_sq); SisParameters::try_new( n, family.modulus(), Some(m), - Bound::sqrt_integer(radicand), + Bound::sqrt_integer(BigUint::from(collision_l2_sq)), SisNorm::Euclidean, ) } @@ -194,7 +197,7 @@ mod tests { assert_eq!(params.m, Some(64)); assert_eq!( params.length_bound, - Bound::sqrt_integer(BigUint::from(256u32)) + Bound::sqrt_integer(BigUint::from(128u32)) ); assert_eq!(params.norm, SisNorm::Euclidean); } diff --git a/crates/akita-sis-estimator/src/config.rs b/crates/akita-sis-estimator/src/config.rs index f7d8be276..816f461fa 100644 --- a/crates/akita-sis-estimator/src/config.rs +++ b/crates/akita-sis-estimator/src/config.rs @@ -216,12 +216,17 @@ impl EstimateConfig { } } - /// Akita Euclidean table generation profile: BDGL16 with the Euclidean - /// SIS lattice path used by the shipped 128-bit L2 table. + /// Akita Euclidean table generation profile: ADPS16 quantum at 128 bits. + /// + /// The Euclidean SIS geometry determines the required BKZ block size. The + /// security cost of that reduction is priced with the same ADPS16 quantum + /// model as the production coefficient-L∞ table. #[must_use] pub fn akita_euclidean_table() -> Self { Self { - red_cost_model: ReductionCostModel::Bdgl16, + red_cost_model: ReductionCostModel::Adps16 { + mode: Adps16Mode::Quantum, + }, ..Self::default() } } diff --git a/crates/akita-sis-estimator/src/euclidean.rs b/crates/akita-sis-estimator/src/euclidean.rs index 1982ce9fa..d168331fc 100644 --- a/crates/akita-sis-estimator/src/euclidean.rs +++ b/crates/akita-sis-estimator/src/euclidean.rs @@ -9,7 +9,7 @@ use crate::{ error::{EstimatorError, Result}, math::log2_biguint, params::SisParameters, - reduction::{bdgl16_log2_cost, beta as beta_from_delta, delta, validate_euclidean_reduction}, + reduction::{adps16_log2_cost, beta as beta_from_delta, delta, validate_euclidean_reduction}, }; /// Evaluate the lattice-estimator Euclidean SIS path for the configured model. @@ -57,7 +57,9 @@ pub fn cost_euclidean(params: &SisParameters, config: &EstimateConfig) -> Result let predicate = reduction_possible && lower_bound_met; let cost = if predicate { match config.red_cost_model { - ReductionCostModel::Bdgl16 => CostValue::finite_log2(bdgl16_log2_cost(beta, d)), + ReductionCostModel::Adps16 { mode } => { + CostValue::finite_log2(adps16_log2_cost(beta, mode)) + } _ => unreachable!("validated above"), } } else { @@ -111,6 +113,7 @@ fn length_bound_exceeds_euclidean_lower_bound(params: &SisParameters, d: u64, lo #[cfg(test)] mod tests { use crate::{ + config::Adps16Mode, params::{akita_q32, Bound, SisNorm}, EstimateConfig, }; @@ -130,7 +133,9 @@ mod tests { let cost = cost_euclidean( ¶ms, &EstimateConfig { - red_cost_model: ReductionCostModel::Bdgl16, + red_cost_model: ReductionCostModel::Adps16 { + mode: Adps16Mode::Quantum, + }, lattice_dimension: Some(40), ..EstimateConfig::default() }, @@ -153,7 +158,9 @@ mod tests { let cost = cost_euclidean( ¶ms, &EstimateConfig { - red_cost_model: ReductionCostModel::Bdgl16, + red_cost_model: ReductionCostModel::Adps16 { + mode: Adps16Mode::Quantum, + }, ..EstimateConfig::default() }, ) diff --git a/crates/akita-sis-estimator/src/euclidean_width_table.rs b/crates/akita-sis-estimator/src/euclidean_width_table.rs index 34cf49884..58be64916 100644 --- a/crates/akita-sis-estimator/src/euclidean_width_table.rs +++ b/crates/akita-sis-estimator/src/euclidean_width_table.rs @@ -18,12 +18,6 @@ pub const DEFAULT_EUCLIDEAN_TARGET_BITS: f64 = 128.0; pub const MIN_LOG_BUCKET: u32 = 1; /// Largest squared-collision power-of-two bucket in the shipped L2 table. pub const MAX_LOG_BUCKET: u32 = 84; -/// Coefficient-L∞ buckets used to derive extra L2 collision keys. -pub const COEFF_LINF_BUCKETS: &[u64] = &[ - 2, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535, 131_071, - 262_143, 524_287, 1_048_575, 2_097_151, 4_194_303, 8_388_607, 16_777_215, 33_554_431, - 67_108_863, -]; /// Modulus families covered by Akita SIS table generation. pub const FAMILIES: &[AkitaModulusProfileId] = &[ AkitaModulusProfileId::Q32Offset99, @@ -128,10 +122,7 @@ impl EuclideanWidthRow { /// Return the full collision-key set used by the shipped L2 table. #[must_use] pub fn l2_table_collision_keys() -> Vec { - let mut keys = BTreeSet::new(); - keys.extend(power_of_two_collision_keys()); - keys.extend(derived_l2_collision_keys()); - keys.into_iter().collect() + power_of_two_collision_keys() } /// Return `2^MIN_LOG_BUCKET ..= 2^MAX_LOG_BUCKET`. @@ -142,28 +133,6 @@ pub fn power_of_two_collision_keys() -> Vec { .collect() } -/// Return the derived keys `d * B^2` used by the production table. -#[must_use] -pub fn derived_l2_collision_keys() -> Vec { - let mut keys = BTreeSet::new(); - for &d in RING_DIMS { - for &bound in COEFF_LINF_BUCKETS { - keys.insert(u128::from(d) * coeff_linf_bucket_sq(bound)); - } - } - keys.into_iter().collect() -} - -/// Return `B²` for a coefficient-L∞ bucket without float rounding. -#[must_use] -pub fn coeff_linf_bucket_sq(bound: u64) -> u128 { - if bound <= 3 { - return u128::from(bound) * u128::from(bound); - } - let k = (bound + 1).ilog2(); - (1u128 << (2 * k)) - (1u128 << (k + 1)) + 1 -} - /// Generate row-oriented Euclidean max-width comparison data. pub fn generate_euclidean_width_rows( config: &EuclideanWidthTableConfig, @@ -504,11 +473,10 @@ mod tests { use super::*; #[test] - fn derived_collision_keys_match_python_contract() { - assert_eq!(coeff_linf_bucket_sq(15), 225); - assert_eq!(coeff_linf_bucket_sq(31), 961); - assert!(derived_l2_collision_keys().contains(&(32 * 15 * 15))); + fn collision_keys_match_power_of_two_contract() { + assert!(l2_table_collision_keys().contains(&2)); assert!(l2_table_collision_keys().contains(&(1u128 << 84))); + assert_eq!(l2_table_collision_keys().len(), 84); } #[test] diff --git a/crates/akita-sis-estimator/src/reduction/mod.rs b/crates/akita-sis-estimator/src/reduction/mod.rs index cf490098b..cb85a39f5 100644 --- a/crates/akita-sis-estimator/src/reduction/mod.rs +++ b/crates/akita-sis-estimator/src/reduction/mod.rs @@ -35,9 +35,9 @@ pub fn validate_infinity_reduction(model: ReductionCostModel) -> Result<()> { /// Euclidean SIS path. pub fn validate_euclidean_reduction(model: ReductionCostModel) -> Result<()> { match model { - ReductionCostModel::Bdgl16 => Ok(()), - ReductionCostModel::Adps16 { .. } => Err(EstimatorError::Unsupported { - feature: "euclidean red_cost_model::ADPS16", + ReductionCostModel::Adps16 { .. } => Ok(()), + ReductionCostModel::Bdgl16 => Err(EstimatorError::Unsupported { + feature: "euclidean red_cost_model::BDGL16 (retired; use ADPS16 quantum)", }), ReductionCostModel::Matzov { .. } => Err(EstimatorError::Unsupported { feature: "euclidean red_cost_model::Matzov", diff --git a/crates/akita-transcript/src/labels.rs b/crates/akita-transcript/src/labels.rs index 5ad003713..f36b291b7 100644 --- a/crates/akita-transcript/src/labels.rs +++ b/crates/akita-transcript/src/labels.rs @@ -37,6 +37,8 @@ pub const ABSORB_SUMCHECK_ROUND: &[u8] = b"ak/a/scr"; pub const CHALLENGE_SUMCHECK_ROUND: &[u8] = b"ak/c/scr"; /// Absorb the stage-1 final `range_image_evaluation` before the batching challenge. pub const ABSORB_RANGE_IMAGE_EVALUATION: &[u8] = b"ak/a/scs"; +/// Absorb the deliberately unchecked late-fold L2 planning diagnostic. +pub const ABSORB_UNCHECKED_L2_DIAGNOSTIC: &[u8] = b"ak/a/l2d"; /// Absorb the stage-2 next-witness evaluation handoff before recursion continues. pub const ABSORB_STAGE2_NEXT_W_EVAL: &[u8] = b"ak/a/s2w"; /// Absorb stage-1 inter-stage claims before batching them into the next stage. @@ -119,6 +121,7 @@ pub const ALL_LABELS: &[&[u8]] = &[ ABSORB_SUMCHECK_ROUND, CHALLENGE_SUMCHECK_ROUND, ABSORB_RANGE_IMAGE_EVALUATION, + ABSORB_UNCHECKED_L2_DIAGNOSTIC, ABSORB_STAGE2_NEXT_W_EVAL, ABSORB_SUMCHECK_INTERSTAGE_CLAIM, CHALLENGE_SUMCHECK_BATCH, diff --git a/crates/akita-types/src/layout/params.rs b/crates/akita-types/src/layout/params.rs index 6dc6e5016..4b2e547a2 100644 --- a/crates/akita-types/src/layout/params.rs +++ b/crates/akita-types/src/layout/params.rs @@ -1085,33 +1085,15 @@ impl CommittedGroupParams { log_basis_inner: self.log_basis_inner, log_basis_outer: self.log_basis_outer, log_basis_open: self.log_basis_open, - inner_commit_matrix: InnerCommitMatrixParams::new_unchecked( - self.inner_commit_matrix.security_policy(), - self.inner_commit_matrix.sis_table_key().table_digest, - self.inner_commit_matrix.sis_modulus_profile(), - self.inner_commit_matrix.output_rank, - inner_width, - self.inner_commit_matrix.coeff_linf_bound(), - self.inner_commit_matrix.ring_dimension(), - ), - outer_commit_matrix: OuterCommitMatrixParams::new_unchecked( - self.outer_commit_matrix.security_policy(), - self.outer_commit_matrix.sis_table_key().table_digest, - self.outer_commit_matrix.sis_modulus_profile(), - self.outer_commit_matrix.output_rank, - outer_width, - self.outer_commit_matrix.coeff_linf_bound(), - self.outer_commit_matrix.ring_dimension(), - ), - open_commit_matrix: OpenCommitMatrixParams::new_unchecked( - self.open_commit_matrix.security_policy(), - self.open_commit_matrix.sis_table_key().table_digest, - self.open_commit_matrix.sis_modulus_profile(), - self.open_commit_matrix.output_rank, - d_matrix_width, - self.open_commit_matrix.coeff_linf_bound(), - self.open_commit_matrix.ring_dimension(), - ), + inner_commit_matrix: self + .inner_commit_matrix + .with_input_width_unchecked(inner_width), + outer_commit_matrix: self + .outer_commit_matrix + .with_input_width_unchecked(outer_width), + open_commit_matrix: self + .open_commit_matrix + .with_input_width_unchecked(d_matrix_width), num_live_ring_elements_per_claim, num_positions_per_block, num_live_blocks, @@ -1150,33 +1132,15 @@ impl CommittedGroupParams { log_basis_inner: other.log_basis_inner, log_basis_outer: other.log_basis_outer, log_basis_open: other.log_basis_open, - inner_commit_matrix: InnerCommitMatrixParams::new_unchecked( - self.inner_commit_matrix.security_policy(), - self.inner_commit_matrix.sis_table_key().table_digest, - self.inner_commit_matrix.sis_modulus_profile(), - self.inner_commit_matrix.output_rank, - other.inner_commit_matrix.input_width, - self.inner_commit_matrix.coeff_linf_bound(), - self.inner_commit_matrix.ring_dimension(), - ), - outer_commit_matrix: OuterCommitMatrixParams::new_unchecked( - self.outer_commit_matrix.security_policy(), - self.outer_commit_matrix.sis_table_key().table_digest, - self.outer_commit_matrix.sis_modulus_profile(), - self.outer_commit_matrix.output_rank, - other.outer_commit_matrix.input_width, - self.outer_commit_matrix.coeff_linf_bound(), - self.outer_commit_matrix.ring_dimension(), - ), - open_commit_matrix: OpenCommitMatrixParams::new_unchecked( - self.open_commit_matrix.security_policy(), - self.open_commit_matrix.sis_table_key().table_digest, - self.open_commit_matrix.sis_modulus_profile(), - self.open_commit_matrix.output_rank, - other.open_commit_matrix.input_width, - self.open_commit_matrix.coeff_linf_bound(), - self.open_commit_matrix.ring_dimension(), - ), + inner_commit_matrix: self + .inner_commit_matrix + .with_input_width_unchecked(other.inner_commit_matrix.input_width), + outer_commit_matrix: self + .outer_commit_matrix + .with_input_width_unchecked(other.outer_commit_matrix.input_width), + open_commit_matrix: self + .open_commit_matrix + .with_input_width_unchecked(other.open_commit_matrix.input_width), num_live_ring_elements_per_claim: other.num_live_ring_elements_per_claim, num_positions_per_block: other.num_positions_per_block, num_live_blocks: other.num_live_blocks, diff --git a/crates/akita-types/src/lib.rs b/crates/akita-types/src/lib.rs index 9b9a9ba83..926acd578 100644 --- a/crates/akita-types/src/lib.rs +++ b/crates/akita-types/src/lib.rs @@ -126,8 +126,8 @@ pub use proof::{ SetupPrefixVerifierSlot, SetupProductSumcheckShape, SetupSumcheckProof, TailSegmentGroupLayout, TailSegmentLayout, TerminalLevelProof, TerminalLevelProofShape, TerminalResponse, TerminalResponseGroupParts, TerminalResponseShape, TerminalWitnessTranscriptParts, - MAX_GENERIC_SETUP_DECODE_FIELD_ELEMENTS, MAX_UNTRUSTED_COMMITMENT_COEFFICIENTS, - SETUP_SUMCHECK_DEGREE, + UncheckedL2NormDiagnostic, MAX_GENERIC_SETUP_DECODE_FIELD_ELEMENTS, + MAX_UNTRUSTED_COMMITMENT_COEFFICIENTS, SETUP_SUMCHECK_DEGREE, }; pub use proof::{ append_digit_range_child_claims, DigitRangeEqualityPoint, DigitRangePlan, FlatBooleanDomain, diff --git a/crates/akita-types/src/proof/levels.rs b/crates/akita-types/src/proof/levels.rs index 5a0d8f4c2..159ef8060 100644 --- a/crates/akita-types/src/proof/levels.rs +++ b/crates/akita-types/src/proof/levels.rs @@ -24,6 +24,19 @@ pub struct AkitaStage1Proof { pub range_image_evaluation: F, } +/// Deliberately unchecked payload for measuring a future stage-1 L2 +/// sumcheck's planner and wire impact. +/// +/// The verifier transcript-binds this payload but does not validate either +/// the claimed norm or the placeholder coefficients. This is not sound. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct UncheckedL2NormDiagnostic { + /// Prover-claimed exact squared L2 norm of the undecomposed folded `z`. + pub norm_squared: u128, + /// One placeholder challenge-field coefficient per final stage-1 round. + pub leaf_round_coefficients: Vec, +} + /// FoldSchedule-shaped outgoing witness binding for an intermediate fold. /// /// The proof stream carries no variant tag. Headerless decoding obtains the @@ -125,6 +138,8 @@ pub struct FoldLevelProof { pub opening_payload: RingVec, /// Accepted fold-l∞ grind nonce (`0` under deterministic policy). pub fold_grind_nonce: u32, + /// Unsound L2 planning diagnostic, present only on selected late folds. + pub unchecked_l2_norm_diagnostic: Option>, /// Stage-1 norm-check payload. pub stage1: AkitaStage1Proof, /// Stage-2 fused payload. @@ -145,6 +160,7 @@ impl FoldLevelProof { extension_opening_reduction: None, opening_payload: RingVec::from_ring_elems(&opening_payload).into_compact(), fold_grind_nonce: 0, + unchecked_l2_norm_diagnostic: None, stage1, stage2, stage3_sumcheck_proof: None, @@ -249,6 +265,7 @@ impl FoldLevelProof { level_proof_shape( self.extension_opening_reduction.as_ref(), &self.opening_payload, + self.unchecked_l2_norm_diagnostic.as_ref(), &self.stage1, &self.stage2, self.stage3_sumcheck_proof.as_ref(), diff --git a/crates/akita-types/src/proof/mod.rs b/crates/akita-types/src/proof/mod.rs index 75bc99c02..781fe7b84 100644 --- a/crates/akita-types/src/proof/mod.rs +++ b/crates/akita-types/src/proof/mod.rs @@ -61,7 +61,7 @@ pub use hints::AkitaCommitmentHint; pub use levels::{ AkitaBatchedProof, AkitaStage1Proof, AkitaStage1StageProof, AkitaStage2Proof, ExtensionOpeningReductionProof, FoldLevelProof, NextWitnessBinding, SetupSumcheckProof, - TerminalLevelProof, + TerminalLevelProof, UncheckedL2NormDiagnostic, }; pub use relation::{ assemble_compressed_relation_rhs, assemble_relation_rhs, diff --git a/crates/akita-types/src/proof/shapes.rs b/crates/akita-types/src/proof/shapes.rs index a8b306289..828cfcea3 100644 --- a/crates/akita-types/src/proof/shapes.rs +++ b/crates/akita-types/src/proof/shapes.rs @@ -100,6 +100,8 @@ pub struct LevelProofShape { pub extension_opening_reduction: Option, /// Number of field coefficients in the compressed opening payload. pub opening_payload_coeffs: usize, + /// Placeholder count for the optional unchecked L2 diagnostic. + pub unchecked_l2_diagnostic_coefficients: Option, /// Stage-1 tree stage shapes in root-to-leaf order. pub stage1_stages: Vec, /// Stage-2 sumcheck shape: `(num_rounds, degree)`. @@ -142,6 +144,7 @@ fn eq_factored_sumcheck_shape( pub(super) fn level_proof_shape( extension_opening_reduction: Option<&ExtensionOpeningReductionProof>, opening_payload: &RingVec, + unchecked_l2_norm_diagnostic: Option<&UncheckedL2NormDiagnostic>, stage1: &AkitaStage1Proof, stage2: &AkitaStage2Proof, stage3_sumcheck_proof: Option<&SetupSumcheckProof>, @@ -150,6 +153,8 @@ pub(super) fn level_proof_shape( extension_opening_reduction: extension_opening_reduction .map(ExtensionOpeningReductionProof::shape), opening_payload_coeffs: opening_payload.coeff_len(), + unchecked_l2_diagnostic_coefficients: unchecked_l2_norm_diagnostic + .map(|diagnostic| diagnostic.leaf_round_coefficients.len()), stage1_stages: stage1 .stages .iter() @@ -266,6 +271,9 @@ impl Valid for LevelProofShape { reduction.check()?; } checked_shape_len(self.opening_payload_coeffs)?; + if let Some(coefficients) = self.unchecked_l2_diagnostic_coefficients { + checked_shape_len(coefficients)?; + } checked_shape_sequence_len(self.stage1_stages.len())?; self.stage1_stages.check()?; checked_shape_sequence_len(self.stage2_sumcheck_proof.len())?; @@ -301,6 +309,12 @@ impl AkitaSerialize for LevelProofShape { } self.opening_payload_coeffs .serialize_with_mode(&mut writer, compress)?; + self.unchecked_l2_diagnostic_coefficients + .is_some() + .serialize_with_mode(&mut writer, compress)?; + if let Some(coefficients) = self.unchecked_l2_diagnostic_coefficients { + coefficients.serialize_with_mode(&mut writer, compress)?; + } self.stage1_stages .serialize_with_mode(&mut writer, compress)?; self.stage2_sumcheck_proof @@ -336,6 +350,10 @@ impl AkitaSerialize for LevelProofShape { }); reduction_size + self.opening_payload_coeffs.serialized_size(compress) + + true.serialized_size(compress) + + self + .unchecked_l2_diagnostic_coefficients + .map_or(0, |coefficients| coefficients.serialized_size(compress)) + self.stage1_stages.serialized_size(compress) + self.stage2_sumcheck_proof.serialized_size(compress) + true.serialized_size(compress) @@ -372,6 +390,18 @@ impl AkitaDeserialize for LevelProofShape { }; let opening_payload_coeffs = usize::deserialize_with_mode(&mut reader, compress, validate, &())?; + let has_unchecked_l2_diagnostic = + bool::deserialize_with_mode(&mut reader, compress, validate, &())?; + let unchecked_l2_diagnostic_coefficients = if has_unchecked_l2_diagnostic { + Some(usize::deserialize_with_mode( + &mut reader, + compress, + validate, + &(), + )?) + } else { + None + }; let stage1_stages = deserialize_shape_vec(&mut reader, compress, validate)?; let stage2_sumcheck = deserialize_shape_vec(&mut reader, compress, validate)?; let has_stage3_sumcheck = @@ -398,6 +428,7 @@ impl AkitaDeserialize for LevelProofShape { let out = Self { extension_opening_reduction, opening_payload_coeffs, + unchecked_l2_diagnostic_coefficients, stage1_stages, stage2_sumcheck_proof: stage2_sumcheck, stage3_sumcheck, diff --git a/crates/akita-types/src/proof/tests.rs b/crates/akita-types/src/proof/tests.rs index 77b4296c4..fe07d0e70 100644 --- a/crates/akita-types/src/proof/tests.rs +++ b/crates/akita-types/src/proof/tests.rs @@ -84,6 +84,7 @@ fn level_shape_validation_checks_extension_opening_reduction() { 1, )), opening_payload_coeffs: 1, + unchecked_l2_diagnostic_coefficients: None, stage1_stages: Vec::new(), stage2_sumcheck_proof: Vec::new(), stage3_sumcheck: None, @@ -113,6 +114,7 @@ fn level_shape_deserialization_rejects_vector_length_before_allocation() { let mut bytes = Vec::new(); false.serialize_compressed(&mut bytes).unwrap(); // extension_opening_reduction 0usize.serialize_compressed(&mut bytes).unwrap(); // opening_payload_coeffs + false.serialize_compressed(&mut bytes).unwrap(); // unchecked_l2_diagnostic (MAX_PROOF_SHAPE_SEQUENCE_LEN as u64 + 1) .serialize_compressed(&mut bytes) .unwrap(); // stage1_stages @@ -185,6 +187,7 @@ fn extension_opening_reduction_none_is_zero_proof_wire_bytes() { extension_opening_reduction: Some(tiny_reduction()), opening_payload: RingVec::from_ring_elems(&[CyclotomicRing::::zero()]).into_compact(), fold_grind_nonce: 0, + unchecked_l2_norm_diagnostic: None, stage1: tiny_stage1(), stage2: AkitaStage2Proof { sumcheck_proof: SumcheckProof { diff --git a/crates/akita-types/src/proof/wire.rs b/crates/akita-types/src/proof/wire.rs index 6b92a61ec..b59d676ce 100644 --- a/crates/akita-types/src/proof/wire.rs +++ b/crates/akita-types/src/proof/wire.rs @@ -94,6 +94,73 @@ fn fold_grind_nonce_serialized_size(compress: Compress) -> usize { 0u32.serialized_size(compress) } +fn serialize_unchecked_l2_diagnostic( + diagnostic: Option<&UncheckedL2NormDiagnostic>, + mut writer: W, + compress: Compress, +) -> Result<(), SerializationError> +where + E: FieldCore + AkitaSerialize, + W: Write, +{ + if let Some(diagnostic) = diagnostic { + diagnostic + .norm_squared + .serialize_with_mode(&mut writer, compress)?; + for coefficient in &diagnostic.leaf_round_coefficients { + coefficient.serialize_with_mode(&mut writer, compress)?; + } + } + Ok(()) +} + +fn unchecked_l2_diagnostic_serialized_size( + diagnostic: Option<&UncheckedL2NormDiagnostic>, + compress: Compress, +) -> usize +where + E: FieldCore + AkitaSerialize, +{ + diagnostic.map_or(0, |diagnostic| { + diagnostic.norm_squared.serialized_size(compress) + + diagnostic + .leaf_round_coefficients + .iter() + .map(|coefficient| coefficient.serialized_size(compress)) + .sum::() + }) +} + +fn deserialize_unchecked_l2_diagnostic( + mut reader: R, + compress: Compress, + validate: Validate, + coefficient_count: Option, +) -> Result>, SerializationError> +where + E: FieldCore + Valid + AkitaDeserialize, + R: Read, +{ + let Some(coefficient_count) = coefficient_count else { + return Ok(None); + }; + let norm_squared = u128::deserialize_with_mode(&mut reader, compress, validate, &())?; + let mut leaf_round_coefficients = Vec::new(); + reserve_shape_len(&mut leaf_round_coefficients, coefficient_count)?; + for _ in 0..coefficient_count { + leaf_round_coefficients.push(E::deserialize_with_mode( + &mut reader, + compress, + validate, + &(), + )?); + } + Ok(Some(UncheckedL2NormDiagnostic { + norm_squared, + leaf_round_coefficients, + })) +} + fn serialize_next_witness_binding( binding: &NextWitnessBinding, writer: W, @@ -403,6 +470,11 @@ impl Valid for FoldLevelProof reduction.sumcheck.check()?; } self.opening_payload.check()?; + if let Some(diagnostic) = &self.unchecked_l2_norm_diagnostic { + diagnostic.leaf_round_coefficients.check()?; + } for stage in &self.stage1.stages { stage.sumcheck_proof.check()?; stage.child_claims.check()?; @@ -496,6 +574,12 @@ impl< ctx.extension_opening_reduction.as_ref(), &ctx.opening_payload_coeffs, )?; + let unchecked_l2_norm_diagnostic = deserialize_unchecked_l2_diagnostic( + &mut reader, + compress, + validate, + ctx.unchecked_l2_diagnostic_coefficients, + )?; reject_eor_when_single_field::(&extension_opening_reduction)?; let mut stage1_stages = Vec::new(); reserve_shape_len(&mut stage1_stages, ctx.stage1_stages.len())?; @@ -551,6 +635,7 @@ impl< extension_opening_reduction, opening_payload, fold_grind_nonce, + unchecked_l2_norm_diagnostic, stage1, stage2, stage3_sumcheck_proof, diff --git a/crates/akita-types/src/proof_size.rs b/crates/akita-types/src/proof_size.rs index 75e843dbc..c79407f0d 100644 --- a/crates/akita-types/src/proof_size.rs +++ b/crates/akita-types/src/proof_size.rs @@ -101,8 +101,13 @@ pub fn level_proof_bytes( let next_eval_bytes = challenge_elem_bytes; let b = 1usize << lp.log_basis_open; let stage1_bytes = stage1_proof_bytes(rounds, b, challenge_elem_bytes); + let unchecked_l2_diagnostic_bytes = lp + .inner_commit_matrix + .unchecked_l2_collision_sq() + .map_or(0, |_| 16 + rounds * challenge_elem_bytes); Ok(v_bytes + FOLD_GRIND_NONCE_BYTES + + unchecked_l2_diagnostic_bytes + stage1_bytes + sumcheck + next_commit_bytes @@ -174,7 +179,7 @@ mod tests { use crate::{ terminal_response_bytes, AkitaStage1Proof, AkitaStage1StageProof, AkitaStage2Proof, FoldLevelProof, RingVec, SetupSumcheckProof, SisModulusProfileId, TerminalLevelProof, - TerminalResponse, TerminalResponseShape, SETUP_SUMCHECK_DEGREE, + TerminalResponse, TerminalResponseShape, UncheckedL2NormDiagnostic, SETUP_SUMCHECK_DEGREE, }; type F = Prime128OffsetA7F7; @@ -288,6 +293,12 @@ mod tests { extension_opening_reduction: None, opening_payload: RingVec::from_coeffs(vec![F::zero(); current_coeffs]), fold_grind_nonce: 0, + unchecked_l2_norm_diagnostic: lp.inner_commit_matrix.unchecked_l2_collision_sq().map( + |_| UncheckedL2NormDiagnostic { + norm_squared: 123, + leaf_round_coefficients: vec![F::zero(); rounds], + }, + ), stage1: dummy_stage1_proof(rounds, b), stage2: AkitaStage2Proof { sumcheck_proof: dummy_sumcheck(rounds, 3), @@ -360,6 +371,58 @@ mod tests { } } + #[test] + fn planned_l2_probe_bytes_match_the_headerless_wire() { + const D: usize = 64; + let fold_challenge_config = SparseChallengeConfig::pm1_only(3); + let mut lp = CommittedGroupParams::params_only( + SisModulusProfileId::Q128OffsetA7F7, + D, + 4, + 2, + 2, + 2, + fold_challenge_config, + ) + .with_decomp(1, 1, 1, 1, 1) + .unwrap(); + lp.inner_commit_matrix = + crate::InnerCommitMatrixParams::try_new_with_unchecked_l2_diagnostic_min_rank( + lp.inner_commit_matrix.sis_table_key(), + lp.inner_commit_matrix.input_width(), + 1u128 << 50, + ) + .expect("diagnostic A matrix"); + let next_lp = CommittedGroupParams::params_only( + SisModulusProfileId::Q128OffsetA7F7, + D, + 2, + 2, + 3, + 2, + fold_challenge_config, + ); + let output_witness_len = D * 8; + let planned = level_proof_bytes( + 128, + 128, + &lp, + Some(&next_lp), + output_witness_len, + Some(crate::NextWitnessBindingPolicy::OuterPayload), + ) + .unwrap(); + let serialized = exact_level_proof_bytes::( + &lp, + &next_lp, + output_witness_len, + None, + crate::NextWitnessBindingPolicy::OuterPayload, + ) + .unwrap(); + assert_eq!(planned, serialized); + } + #[test] fn planned_level_bytes_use_fixed_compressed_d_and_successor_b_payloads() { const D_A: usize = 128; diff --git a/crates/akita-types/src/schedule_tests.rs b/crates/akita-types/src/schedule_tests.rs index 67753ef77..310816f2f 100644 --- a/crates/akita-types/src/schedule_tests.rs +++ b/crates/akita-types/src/schedule_tests.rs @@ -676,6 +676,7 @@ fn exact_level_proof_bytes( extension_opening_reduction: None, opening_payload: RingVec::from_coeffs(vec![F::zero(); current_coeffs]), fold_grind_nonce: 0, + unchecked_l2_norm_diagnostic: None, stage1: dummy_stage1_proof(rounds, b), stage2: AkitaStage2Proof { sumcheck_proof: dummy_sumcheck(rounds, 3), @@ -827,6 +828,7 @@ fn planned_batched_root_bytes_match_non_offloaded_payload_at_all_bases() { .terminal_coefficients() ]), fold_grind_nonce: 0, + unchecked_l2_norm_diagnostic: None, stage1: dummy_stage1_proof(rounds, b), stage2: AkitaStage2Proof { sumcheck_proof: dummy_sumcheck(rounds, 3), diff --git a/crates/akita-types/src/sis/ajtai_key.rs b/crates/akita-types/src/sis/ajtai_key.rs index d5637063b..84a94a425 100644 --- a/crates/akita-types/src/sis/ajtai_key.rs +++ b/crates/akita-types/src/sis/ajtai_key.rs @@ -423,6 +423,41 @@ pub fn min_secure_rank(key: SisTableKey, width: u64) -> Option { None } +/// Round a complete scalar collision-vector squared L2 norm to the generated +/// ADPS16 quantum table ladder. +#[must_use] +pub fn ceil_supported_l2_collision_sq(collision_l2_sq: u128) -> Option { + if collision_l2_sq == 0 { + return None; + } + let bucket = collision_l2_sq.checked_next_power_of_two()?; + (bucket <= (1u128 << 84)).then_some(bucket.max(2)) +} + +/// Minimum module rank under the generated 128-bit quantum ADPS16 L2 model. +/// +/// `collision_l2_sq` is the squared norm of the complete scalar collision +/// vector. It is not a per-ring-row bound. +#[must_use] +pub fn min_secure_l2_rank( + policy: SisSecurityPolicyId, + modulus_profile: SisModulusProfileId, + ring_dimension: u32, + collision_l2_sq: u128, + width: u64, +) -> Option { + if policy != DEFAULT_SIS_SECURITY_POLICY || width == 0 { + return None; + } + let bucket = ceil_supported_l2_collision_sq(collision_l2_sq)?; + let widths = + super::generated_l2_sis_table::sis_max_widths(modulus_profile, ring_dimension, bucket)?; + widths + .iter() + .position(|&max_width| width <= max_width) + .map(|index| index + 1) +} + #[derive(Debug, Clone, Copy)] struct AuditedCommitMatrixFields { output_rank: usize, @@ -531,6 +566,7 @@ macro_rules! define_commit_matrix_params { pub(crate) output_rank: usize, pub(crate) input_width: usize, pub(crate) sis_table_key: SisTableKey, + pub(crate) unchecked_l2_collision_sq: Option, } impl $name { @@ -558,6 +594,7 @@ macro_rules! define_commit_matrix_params { output_rank: fields.output_rank, input_width: fields.input_width, sis_table_key: fields.sis_table_key, + unchecked_l2_collision_sq: None, }) } @@ -570,12 +607,40 @@ macro_rules! define_commit_matrix_params { output_rank: fields.output_rank, input_width: fields.input_width, sis_table_key: fields.sis_table_key, + unchecked_l2_collision_sq: None, }) } /// Re-audit all security-sensitive matrix fields against the /// canonical SIS table and rank floor. pub fn validate(&self) -> Result<(), AkitaError> { + if let Some(collision_l2_sq) = self.unchecked_l2_collision_sq { + if $role != SisMatrixRole::Inner { + return Err(AkitaError::InvalidSetup( + "unchecked L2 diagnostic is only valid for the A matrix".into(), + )); + } + let floor = min_secure_l2_rank( + self.security_policy(), + self.sis_modulus_profile(), + self.sis_table_key.ring_dimension, + collision_l2_sq, + self.input_width as u64, + ) + .ok_or_else(|| { + AkitaError::InvalidSetup( + "unchecked L2 diagnostic has no ADPS16 table row".into(), + ) + })?; + if self.output_rank < floor { + return Err(AkitaError::InvalidSetup(format!( + "{} matrix output_rank {} is below unchecked L2 diagnostic floor {floor}", + $role.name(), + self.output_rank + ))); + } + return Ok(()); + } let fields = audit_commit_matrix_fields( $role, self.security_policy(), @@ -616,6 +681,14 @@ macro_rules! define_commit_matrix_params { ring_dimension: ring_dimension as u32, coeff_linf_bound, }, + unchecked_l2_collision_sq: None, + } + } + + pub(crate) const fn with_input_width_unchecked(self, input_width: usize) -> Self { + Self { + input_width, + ..self } } @@ -649,6 +722,13 @@ macro_rules! define_commit_matrix_params { self.sis_table_key } + /// Whole-vector squared collision bound used only by the + /// deliberately unchecked L2 planning diagnostic. + #[inline] + pub fn unchecked_l2_collision_sq(&self) -> Option { + self.unchecked_l2_collision_sq + } + #[inline] pub fn ring_dimension(&self) -> usize { self.sis_table_key.ring_dimension as usize @@ -679,6 +759,10 @@ macro_rules! define_commit_matrix_params { push_usize(bytes, self.output_rank()); push_usize(bytes, self.input_width()); push_u128(bytes, self.coeff_linf_bound()); + if let Some(collision_l2_sq) = self.unchecked_l2_collision_sq { + bytes.extend_from_slice(b"akita-unchecked-l2-diagnostic"); + push_u128(bytes, collision_l2_sq); + } } } }; @@ -689,6 +773,42 @@ define_commit_matrix_params!( SisMatrixRole::Inner, "Parameters for the inner commitment matrix (A)." ); + +impl InnerCommitMatrixParams { + /// Construct an A matrix using the deliberately unchecked L2 diagnostic + /// floor. The retained SIS key records the normal L∞ fallback identity; + /// `unchecked_l2_collision_sq` selects the separate ADPS16 quantum table. + pub fn try_new_with_unchecked_l2_diagnostic_min_rank( + fallback_key: SisTableKey, + input_width: usize, + collision_l2_sq: u128, + ) -> Result { + if fallback_key.role != SisMatrixRole::Inner || input_width == 0 { + return Err(AkitaError::InvalidSetup( + "unchecked L2 diagnostic requires an A key and nonzero width".into(), + )); + } + let bucket = ceil_supported_l2_collision_sq(collision_l2_sq).ok_or_else(|| { + AkitaError::InvalidSetup("unchecked L2 collision is outside the table".into()) + })?; + let width = u64::try_from(input_width) + .map_err(|_| AkitaError::InvalidSetup("A width exceeds u64".into()))?; + let output_rank = min_secure_l2_rank( + fallback_key.policy, + fallback_key.modulus_profile, + fallback_key.ring_dimension, + bucket, + width, + ) + .ok_or_else(|| AkitaError::InvalidSetup("unchecked L2 rank is unavailable".into()))?; + Ok(Self { + output_rank, + input_width, + sis_table_key: fallback_key, + unchecked_l2_collision_sq: Some(bucket), + }) + } +} define_commit_matrix_params!( OuterCommitMatrixParams, SisMatrixRole::Outer, @@ -765,6 +885,55 @@ mod tests { } } + #[test] + fn l2_table_has_the_expected_q128_d64_rank_boundary() { + let policy = DEFAULT_SIS_SECURITY_POLICY; + let profile = SisModulusProfileId::Q128OffsetA7F7; + let collision_l2_sq = 1u128 << 50; + assert_eq!( + min_secure_l2_rank(policy, profile, 64, collision_l2_sq, 21), + Some(3) + ); + assert_eq!( + min_secure_l2_rank(policy, profile, 64, collision_l2_sq, 22), + Some(4) + ); + assert_eq!( + min_secure_l2_rank(policy, profile, 64, collision_l2_sq, 512), + Some(4) + ); + } + + #[test] + fn unchecked_l2_matrix_reaudits_its_adps16_floor() { + let fallback_key = SisTableKey { + policy: DEFAULT_SIS_SECURITY_POLICY, + table_digest: SisTableDigest::CURRENT, + modulus_profile: SisModulusProfileId::Q128OffsetA7F7, + role: SisMatrixRole::Inner, + ring_dimension: 64, + coeff_linf_bound: 1_048_575, + }; + let matrix = InnerCommitMatrixParams::try_new_with_unchecked_l2_diagnostic_min_rank( + fallback_key, + 512, + 1u128 << 50, + ) + .expect("diagnostic matrix"); + assert_eq!(matrix.output_rank(), 4); + assert_eq!(matrix.unchecked_l2_collision_sq(), Some(1u128 << 50)); + matrix.validate().expect("ADPS16 floor must validate"); + + let below_floor = InnerCommitMatrixParams { + output_rank: 3, + ..matrix + }; + assert!(matches!( + below_floor.validate(), + Err(AkitaError::InvalidSetup(_)) + )); + } + #[test] fn floor_slices_have_family_specific_rank_caps() { let bucket = 15; diff --git a/crates/akita-types/src/sis/generated_l2_sis_table/mod.rs b/crates/akita-types/src/sis/generated_l2_sis_table/mod.rs new file mode 100644 index 000000000..509a58713 --- /dev/null +++ b/crates/akita-types/src/sis/generated_l2_sis_table/mod.rs @@ -0,0 +1,26 @@ +// AUTO-GENERATED by crates/akita-sis-estimator/examples/euclidean_width_table.rs -- do not edit by hand. +// +// SIS width thresholds for 128-bit quantum security (ADPS16, Euclidean norm=2). +// Rust estimator path: akita-sis-estimator::euclidean_width_table. +// Keys bound the squared norm of the complete scalar collision vector. + +mod q128; +mod q32; +mod q64; + +use super::SisModulusProfileId; + +/// Generated SIS max-width table: for each `(family, d, collision_l2_sq)` the +/// maximum secure ring-element width per module rank (`widths[rank - 1]`). +#[rustfmt::skip] +pub(crate) fn sis_max_widths( + family: SisModulusProfileId, + d: u32, + collision_l2_sq: u128, +) -> Option<&'static [u64]> { + match family { + SisModulusProfileId::Q32Offset99 => q32::sis_max_widths(d, collision_l2_sq), + SisModulusProfileId::Q64Offset59 => q64::sis_max_widths(d, collision_l2_sq), + SisModulusProfileId::Q128OffsetA7F7 => q128::sis_max_widths(d, collision_l2_sq), + } +} diff --git a/crates/akita-types/src/sis/generated_l2_sis_table/q128.rs b/crates/akita-types/src/sis/generated_l2_sis_table/q128.rs new file mode 100644 index 000000000..d6db36f8f --- /dev/null +++ b/crates/akita-types/src/sis/generated_l2_sis_table/q128.rs @@ -0,0 +1,434 @@ +// AUTO-GENERATED by crates/akita-sis-estimator/examples/euclidean_width_table.rs -- do not edit by hand. +// +// SIS width thresholds for 128-bit quantum security (ADPS16, Euclidean norm=2). +// Rust estimator path: akita-sis-estimator::euclidean_width_table. +// Keys bound the squared norm of the complete scalar collision vector. + +// Family: Q128 + +#[rustfmt::skip] +pub(super) fn sis_max_widths(d: u32, collision_l2_sq: u128) -> Option<&'static [u64]> { + match (d, collision_l2_sq) { + (32, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8192) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 16384) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 32768) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 65536) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 131072) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 262144) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 524288) => Some(&[20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1048576) => Some(&[18, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2097152) => Some(&[16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4194304) => Some(&[14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8388608) => Some(&[14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 16777216) => Some(&[13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 33554432) => Some(&[12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 67108864) => Some(&[11, 33, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 134217728) => Some(&[11, 28, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 268435456) => Some(&[10, 26, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 536870912) => Some(&[10, 24, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1073741824) => Some(&[9, 22, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2147483648) => Some(&[9, 21, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4294967296) => Some(&[9, 20, 40, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8589934592) => Some(&[8, 19, 35, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 17179869184) => Some(&[8, 18, 32, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 34359738368) => Some(&[8, 17, 30, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 68719476736) => Some(&[7, 16, 28, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 137438953472) => Some(&[7, 16, 27, 46, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 274877906944) => Some(&[7, 15, 25, 41, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 549755813888) => Some(&[7, 14, 24, 38, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1099511627776) => Some(&[7, 14, 23, 36, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2199023255552) => Some(&[6, 14, 22, 34, 54, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4398046511104) => Some(&[6, 13, 21, 32, 48, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8796093022208) => Some(&[6, 13, 21, 30, 44, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 17592186044416) => Some(&[6, 13, 20, 29, 41, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 35184372088832) => Some(&[6, 12, 19, 28, 39, 58, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 70368744177664) => Some(&[6, 12, 19, 27, 37, 53, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 140737488355328) => Some(&[5, 12, 18, 26, 36, 49, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 281474976710656) => Some(&[5, 11, 18, 25, 34, 46, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 562949953421312) => Some(&[5, 11, 17, 24, 33, 44, 60, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1125899906842624) => Some(&[5, 11, 17, 24, 32, 42, 55, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2251799813685248) => Some(&[5, 10, 16, 23, 31, 40, 52, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4503599627370496) => Some(&[5, 10, 16, 22, 30, 38, 49, 67, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 9007199254740992) => Some(&[5, 10, 16, 22, 29, 37, 47, 61, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 18014398509481984) => Some(&[5, 10, 15, 21, 28, 36, 45, 57, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 36028797018963968) => Some(&[4, 10, 15, 21, 27, 35, 43, 54, 73, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 72057594037927936) => Some(&[4, 9, 15, 20, 27, 34, 42, 52, 66, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 144115188075855872) => Some(&[4, 9, 14, 20, 26, 33, 40, 50, 62, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 288230376151711744) => Some(&[4, 9, 14, 19, 25, 32, 39, 48, 59, 76, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 576460752303423488) => Some(&[4, 9, 14, 19, 25, 31, 38, 46, 56, 70, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1152921504606846976) => Some(&[4, 9, 13, 18, 24, 30, 37, 44, 54, 66, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2305843009213693952) => Some(&[4, 8, 13, 18, 24, 29, 36, 43, 52, 62, 79, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4611686018427387904) => Some(&[4, 8, 13, 18, 23, 29, 35, 42, 50, 59, 73, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 9223372036854775808) => Some(&[4, 8, 13, 17, 23, 28, 34, 41, 48, 57, 68, 91, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 18446744073709551616) => Some(&[4, 8, 12, 17, 22, 27, 33, 40, 47, 55, 65, 80, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 36893488147419103232) => Some(&[4, 8, 12, 17, 22, 27, 32, 39, 45, 53, 62, 75, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 73786976294838206464) => Some(&[4, 8, 12, 16, 21, 26, 32, 38, 44, 51, 60, 71, 89, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 147573952589676412928) => Some(&[3, 8, 12, 16, 21, 26, 31, 37, 43, 50, 58, 68, 81, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 295147905179352825856) => Some(&[3, 7, 12, 16, 20, 25, 30, 36, 42, 48, 56, 65, 76, 99, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 590295810358705651712) => Some(&[3, 7, 11, 16, 20, 25, 30, 35, 41, 47, 54, 63, 73, 88, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1180591620717411303424) => Some(&[3, 7, 11, 15, 20, 24, 29, 34, 40, 46, 53, 60, 70, 82, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2361183241434822606848) => Some(&[3, 7, 11, 15, 19, 24, 29, 34, 39, 45, 51, 59, 67, 78, 94, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4722366482869645213696) => Some(&[3, 7, 11, 15, 19, 23, 28, 33, 38, 44, 50, 57, 65, 74, 87, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 9444732965739290427392) => Some(&[3, 7, 11, 15, 19, 23, 27, 32, 37, 43, 49, 55, 63, 71, 82, 101, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 18889465931478580854784) => Some(&[3, 7, 11, 14, 18, 23, 27, 32, 37, 42, 48, 54, 61, 69, 79, 92, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 37778931862957161709568) => Some(&[3, 7, 10, 14, 18, 22, 27, 31, 36, 41, 47, 52, 59, 67, 75, 87, 108, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 75557863725914323419136) => Some(&[3, 7, 10, 14, 18, 22, 26, 31, 35, 40, 45, 51, 58, 65, 73, 83, 97, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 151115727451828646838272) => Some(&[3, 6, 10, 14, 17, 21, 26, 30, 35, 39, 45, 50, 56, 63, 70, 79, 91, 116, 6_400_000_000_000, 6_400_000_000_000]), + (32, 302231454903657293676544) => Some(&[3, 6, 10, 13, 17, 21, 25, 29, 34, 39, 44, 49, 55, 61, 68, 76, 86, 101, 6_400_000_000_000, 6_400_000_000_000]), + (32, 604462909807314587353088) => Some(&[3, 6, 10, 13, 17, 21, 25, 29, 33, 38, 43, 48, 53, 60, 66, 74, 83, 95, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1208925819614629174706176) => Some(&[3, 6, 10, 13, 17, 20, 24, 28, 33, 37, 42, 47, 52, 58, 64, 72, 80, 90, 105, 6_400_000_000_000]), + (32, 2417851639229258349412352) => Some(&[3, 6, 10, 13, 16, 20, 24, 28, 32, 37, 41, 46, 51, 57, 63, 70, 77, 86, 98, 6_400_000_000_000]), + (32, 4835703278458516698824704) => Some(&[3, 6, 9, 13, 16, 20, 24, 28, 32, 36, 40, 45, 50, 55, 61, 68, 75, 83, 93, 109]), + (32, 9671406556917033397649408) => Some(&[3, 6, 9, 13, 16, 20, 23, 27, 31, 35, 40, 44, 49, 54, 60, 66, 73, 80, 89, 101]), + (32, 19342813113834066795298816) => Some(&[3, 6, 9, 12, 16, 19, 23, 27, 31, 35, 39, 43, 48, 53, 59, 64, 71, 78, 86, 96]), + (64, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8192) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 16384) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 32768) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 65536) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 131072) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 262144) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 524288) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1048576) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2097152) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4194304) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8388608) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 16777216) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 33554432) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 67108864) => Some(&[16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 134217728) => Some(&[14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 268435456) => Some(&[13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 536870912) => Some(&[12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1073741824) => Some(&[11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2147483648) => Some(&[10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4294967296) => Some(&[10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8589934592) => Some(&[9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 17179869184) => Some(&[9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 34359738368) => Some(&[8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 68719476736) => Some(&[8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 137438953472) => Some(&[8, 23, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 274877906944) => Some(&[7, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 549755813888) => Some(&[7, 19, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1099511627776) => Some(&[7, 18, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2199023255552) => Some(&[7, 17, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4398046511104) => Some(&[6, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8796093022208) => Some(&[6, 15, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 17592186044416) => Some(&[6, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 35184372088832) => Some(&[6, 14, 29, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 70368744177664) => Some(&[6, 13, 26, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 140737488355328) => Some(&[6, 13, 24, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 281474976710656) => Some(&[5, 12, 23, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 562949953421312) => Some(&[5, 12, 22, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1125899906842624) => Some(&[5, 12, 21, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2251799813685248) => Some(&[5, 11, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4503599627370496) => Some(&[5, 11, 19, 33, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 9007199254740992) => Some(&[5, 11, 18, 30, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 18014398509481984) => Some(&[5, 10, 18, 28, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 36028797018963968) => Some(&[5, 10, 17, 27, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 72057594037927936) => Some(&[4, 10, 17, 26, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 144115188075855872) => Some(&[4, 10, 16, 25, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 288230376151711744) => Some(&[4, 9, 16, 24, 38, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 576460752303423488) => Some(&[4, 9, 15, 23, 35, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1152921504606846976) => Some(&[4, 9, 15, 22, 33, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2305843009213693952) => Some(&[4, 9, 14, 21, 31, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4611686018427387904) => Some(&[4, 9, 14, 21, 29, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 9223372036854775808) => Some(&[4, 8, 14, 20, 28, 45, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 18446744073709551616) => Some(&[4, 8, 13, 20, 27, 40, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 36893488147419103232) => Some(&[4, 8, 13, 19, 26, 37, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 73786976294838206464) => Some(&[4, 8, 13, 19, 25, 35, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 147573952589676412928) => Some(&[4, 8, 13, 18, 25, 34, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 295147905179352825856) => Some(&[3, 8, 12, 18, 24, 32, 49, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 590295810358705651712) => Some(&[3, 8, 12, 17, 23, 31, 44, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1180591620717411303424) => Some(&[3, 7, 12, 17, 23, 30, 41, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2361183241434822606848) => Some(&[3, 7, 12, 17, 22, 29, 39, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4722366482869645213696) => Some(&[3, 7, 11, 16, 22, 28, 37, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 9444732965739290427392) => Some(&[3, 7, 11, 16, 21, 27, 35, 50, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 18889465931478580854784) => Some(&[3, 7, 11, 16, 21, 27, 34, 46, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 37778931862957161709568) => Some(&[3, 7, 11, 15, 20, 26, 33, 43, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 75557863725914323419136) => Some(&[3, 7, 11, 15, 20, 25, 32, 41, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 151115727451828646838272) => Some(&[3, 7, 10, 15, 19, 25, 31, 39, 58, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 302231454903657293676544) => Some(&[3, 6, 10, 14, 19, 24, 30, 38, 50, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 604462909807314587353088) => Some(&[3, 6, 10, 14, 19, 24, 30, 37, 47, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1208925819614629174706176) => Some(&[3, 6, 10, 14, 18, 23, 29, 36, 45, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2417851639229258349412352) => Some(&[3, 6, 10, 14, 18, 23, 28, 35, 43, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4835703278458516698824704) => Some(&[3, 6, 10, 14, 18, 22, 27, 34, 41, 54, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 9671406556917033397649408) => Some(&[3, 6, 10, 13, 17, 22, 27, 33, 40, 50, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 19342813113834066795298816) => Some(&[3, 6, 9, 13, 17, 21, 26, 32, 39, 48, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8192) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 16384) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 32768) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 65536) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 131072) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 262144) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 524288) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1048576) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2097152) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4194304) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8388608) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 16777216) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 33554432) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 67108864) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 134217728) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 268435456) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 536870912) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1073741824) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2147483648) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4294967296) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8589934592) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 17179869184) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 34359738368) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 68719476736) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 137438953472) => Some(&[11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 274877906944) => Some(&[10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 549755813888) => Some(&[9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1099511627776) => Some(&[9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2199023255552) => Some(&[8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4398046511104) => Some(&[8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8796093022208) => Some(&[7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 17592186044416) => Some(&[7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 35184372088832) => Some(&[7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 70368744177664) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 140737488355328) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 281474976710656) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 562949953421312) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1125899906842624) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2251799813685248) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4503599627370496) => Some(&[5, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 9007199254740992) => Some(&[5, 15, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 18014398509481984) => Some(&[5, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 36028797018963968) => Some(&[5, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 72057594037927936) => Some(&[5, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 144115188075855872) => Some(&[5, 12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 288230376151711744) => Some(&[4, 12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 576460752303423488) => Some(&[4, 11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1152921504606846976) => Some(&[4, 11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2305843009213693952) => Some(&[4, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4611686018427387904) => Some(&[4, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 9223372036854775808) => Some(&[4, 10, 22, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 18446744073709551616) => Some(&[4, 10, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 36893488147419103232) => Some(&[4, 9, 18, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 73786976294838206464) => Some(&[4, 9, 17, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 147573952589676412928) => Some(&[4, 9, 17, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 295147905179352825856) => Some(&[4, 9, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 590295810358705651712) => Some(&[4, 8, 15, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1180591620717411303424) => Some(&[3, 8, 15, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2361183241434822606848) => Some(&[3, 8, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4722366482869645213696) => Some(&[3, 8, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 9444732965739290427392) => Some(&[3, 8, 13, 25, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 18889465931478580854784) => Some(&[3, 8, 13, 23, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 37778931862957161709568) => Some(&[3, 7, 13, 21, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 75557863725914323419136) => Some(&[3, 7, 12, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 151115727451828646838272) => Some(&[3, 7, 12, 19, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 302231454903657293676544) => Some(&[3, 7, 12, 19, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 604462909807314587353088) => Some(&[3, 7, 12, 18, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1208925819614629174706176) => Some(&[3, 7, 11, 18, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2417851639229258349412352) => Some(&[3, 7, 11, 17, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4835703278458516698824704) => Some(&[3, 7, 11, 17, 27, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 9671406556917033397649408) => Some(&[3, 6, 11, 16, 25, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 19342813113834066795298816) => Some(&[3, 6, 10, 16, 24, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8192) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 16384) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 32768) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 65536) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 131072) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 262144) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 524288) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1048576) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2097152) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4194304) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8388608) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 16777216) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 33554432) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 67108864) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 134217728) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 268435456) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 536870912) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1073741824) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2147483648) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4294967296) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8589934592) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 17179869184) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 34359738368) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 68719476736) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 137438953472) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 274877906944) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 549755813888) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1099511627776) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2199023255552) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4398046511104) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8796093022208) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 17592186044416) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 35184372088832) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 70368744177664) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 140737488355328) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 281474976710656) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 562949953421312) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1125899906842624) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2251799813685248) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4503599627370496) => Some(&[8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 9007199254740992) => Some(&[7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 18014398509481984) => Some(&[7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 36028797018963968) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 72057594037927936) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 144115188075855872) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 288230376151711744) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 576460752303423488) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1152921504606846976) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2305843009213693952) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4611686018427387904) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 9223372036854775808) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 18446744073709551616) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 36893488147419103232) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 73786976294838206464) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 147573952589676412928) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 295147905179352825856) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 590295810358705651712) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1180591620717411303424) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2361183241434822606848) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4722366482869645213696) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 9444732965739290427392) => Some(&[4, 12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 18889465931478580854784) => Some(&[4, 11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 37778931862957161709568) => Some(&[3, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 75557863725914323419136) => Some(&[3, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 151115727451828646838272) => Some(&[3, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 302231454903657293676544) => Some(&[3, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 604462909807314587353088) => Some(&[3, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1208925819614629174706176) => Some(&[3, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2417851639229258349412352) => Some(&[3, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4835703278458516698824704) => Some(&[3, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 9671406556917033397649408) => Some(&[3, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 19342813113834066795298816) => Some(&[3, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8192) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 16384) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 32768) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 65536) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 131072) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 262144) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 524288) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1048576) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2097152) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4194304) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8388608) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 16777216) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 33554432) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 67108864) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 134217728) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 268435456) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 536870912) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1073741824) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2147483648) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4294967296) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8589934592) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 17179869184) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 34359738368) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 68719476736) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 137438953472) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 274877906944) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 549755813888) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1099511627776) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2199023255552) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4398046511104) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8796093022208) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 17592186044416) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 35184372088832) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 70368744177664) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 140737488355328) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 281474976710656) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 562949953421312) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1125899906842624) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2251799813685248) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4503599627370496) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 9007199254740992) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 18014398509481984) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 36028797018963968) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 72057594037927936) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 144115188075855872) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 288230376151711744) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 576460752303423488) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1152921504606846976) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2305843009213693952) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4611686018427387904) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 9223372036854775808) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 18446744073709551616) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 36893488147419103232) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 73786976294838206464) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 147573952589676412928) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 295147905179352825856) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 590295810358705651712) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1180591620717411303424) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2361183241434822606848) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4722366482869645213696) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 9444732965739290427392) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 18889465931478580854784) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 37778931862957161709568) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 75557863725914323419136) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 151115727451828646838272) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 302231454903657293676544) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 604462909807314587353088) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1208925819614629174706176) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2417851639229258349412352) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4835703278458516698824704) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 9671406556917033397649408) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 19342813113834066795298816) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + _ => None, + } +} diff --git a/crates/akita-types/src/sis/generated_l2_sis_table/q32.rs b/crates/akita-types/src/sis/generated_l2_sis_table/q32.rs new file mode 100644 index 000000000..b64507937 --- /dev/null +++ b/crates/akita-types/src/sis/generated_l2_sis_table/q32.rs @@ -0,0 +1,319 @@ +// AUTO-GENERATED by crates/akita-sis-estimator/examples/euclidean_width_table.rs -- do not edit by hand. +// +// SIS width thresholds for 128-bit quantum security (ADPS16, Euclidean norm=2). +// Rust estimator path: akita-sis-estimator::euclidean_width_table. +// Keys bound the squared norm of the complete scalar collision vector. + +// Family: Q32 + +#[rustfmt::skip] +pub(super) fn sis_max_widths(d: u32, collision_l2_sq: u128) -> Option<&'static [u64]> { + match (d, collision_l2_sq) { + (32, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1024) => Some(&[11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2048) => Some(&[9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4096) => Some(&[7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8192) => Some(&[6, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 16384) => Some(&[6, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 32768) => Some(&[5, 12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 65536) => Some(&[5, 11, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 131072) => Some(&[4, 10, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 262144) => Some(&[4, 9, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 524288) => Some(&[3, 8, 13, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1048576) => Some(&[3, 7, 12, 18, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2097152) => Some(&[3, 7, 11, 16, 24, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4194304) => Some(&[3, 7, 10, 14, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8388608) => Some(&[3, 6, 10, 14, 18, 26, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 16777216) => Some(&[2, 6, 9, 13, 17, 23, 36, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 33554432) => Some(&[2, 5, 9, 12, 16, 21, 27, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 67108864) => Some(&[2, 5, 8, 11, 15, 19, 24, 33, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 134217728) => Some(&[2, 5, 8, 11, 14, 18, 22, 28, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 268435456) => Some(&[2, 5, 7, 10, 13, 17, 21, 26, 33, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 536870912) => Some(&[2, 4, 7, 10, 13, 16, 19, 24, 29, 38, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1073741824) => Some(&[2, 4, 7, 9, 12, 15, 18, 22, 27, 32, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2147483648) => Some(&[2, 4, 7, 9, 12, 14, 17, 21, 25, 29, 36, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4294967296) => Some(&[2, 4, 6, 9, 11, 14, 16, 20, 23, 27, 32, 40, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8589934592) => Some(&[2, 4, 6, 8, 11, 13, 16, 19, 22, 25, 30, 35, 44, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 17179869184) => Some(&[2, 4, 6, 8, 10, 13, 15, 18, 21, 24, 28, 32, 38, 49, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 34359738368) => Some(&[1, 3, 6, 8, 10, 12, 14, 17, 20, 23, 26, 30, 35, 41, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 68719476736) => Some(&[1, 3, 5, 7, 10, 12, 14, 16, 19, 22, 25, 28, 32, 37, 43, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 137438953472) => Some(&[1, 3, 5, 7, 9, 11, 13, 16, 18, 21, 24, 27, 30, 34, 39, 46, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 274877906944) => Some(&[1, 3, 5, 7, 9, 11, 13, 15, 17, 20, 22, 25, 29, 32, 36, 41, 48, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 549755813888) => Some(&[1, 3, 5, 7, 9, 11, 13, 14, 17, 19, 22, 24, 27, 30, 34, 38, 43, 50, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1099511627776) => Some(&[1, 3, 5, 7, 8, 10, 12, 14, 16, 18, 21, 23, 26, 29, 32, 36, 40, 45, 52, 6_400_000_000_000]), + (32, 2199023255552) => Some(&[1, 3, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 25, 27, 30, 34, 37, 41, 46, 54]), + (32, 4398046511104) => Some(&[1, 3, 4, 6, 8, 10, 11, 13, 15, 17, 19, 21, 24, 26, 29, 32, 35, 39, 43, 48]), + (32, 8796093022208) => Some(&[1, 3, 4, 6, 8, 9, 11, 13, 15, 17, 19, 21, 23, 25, 28, 30, 33, 37, 40, 44]), + (32, 17592186044416) => Some(&[1, 3, 4, 6, 7, 9, 11, 13, 14, 16, 18, 20, 22, 24, 27, 29, 32, 35, 38, 41]), + (32, 35184372088832) => Some(&[1, 3, 4, 6, 7, 9, 11, 12, 14, 16, 17, 19, 21, 24, 26, 28, 31, 33, 36, 39]), + (32, 70368744177664) => Some(&[1, 2, 4, 6, 7, 9, 10, 12, 13, 15, 17, 19, 21, 23, 25, 27, 29, 32, 34, 37]), + (32, 140737488355328) => Some(&[1, 2, 4, 5, 7, 8, 10, 12, 13, 15, 16, 18, 20, 22, 24, 26, 28, 31, 33, 36]), + (32, 281474976710656) => Some(&[1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 18, 20, 21, 23, 25, 27, 30, 32, 34]), + (32, 562949953421312) => Some(&[1, 2, 4, 5, 7, 8, 10, 11, 12, 14, 16, 17, 19, 21, 23, 24, 26, 29, 31, 33]), + (32, 1125899906842624) => Some(&[1, 2, 4, 5, 6, 8, 9, 11, 12, 14, 15, 17, 18, 20, 22, 24, 26, 28, 30, 32]), + (32, 2251799813685248) => Some(&[1, 2, 3, 5, 6, 8, 9, 10, 12, 13, 15, 16, 18, 20, 21, 23, 25, 27, 29, 31]), + (32, 4503599627370496) => Some(&[1, 2, 3, 5, 6, 7, 9, 10, 12, 13, 14, 16, 18, 19, 21, 22, 24, 26, 28, 30]), + (32, 9007199254740992) => Some(&[1, 2, 3, 5, 6, 7, 9, 10, 11, 13, 14, 16, 17, 19, 20, 22, 24, 25, 27, 29]), + (32, 18014398509481984) => Some(&[1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 14, 15, 17, 18, 20, 21, 23, 25, 26, 28]), + (32, 36028797018963968) => Some(&[1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 21, 22, 24, 26, 27]), + (32, 72057594037927936) => Some(&[1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 19, 20, 22, 23, 25, 27]), + (32, 144115188075855872) => Some(&[1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 16, 17, 18, 20, 21, 23, 24, 26]), + (32, 288230376151711744) => Some(&[1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 21, 22, 24, 25]), + (32, 576460752303423488) => Some(&[1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20, 22, 23, 25]), + (32, 1152921504606846976) => Some(&[1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20, 21, 23, 24]), + (32, 2305843009213693952) => Some(&[1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 22, 24]), + (64, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8192) => Some(&[8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 16384) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 32768) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 65536) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 131072) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 262144) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 524288) => Some(&[4, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1048576) => Some(&[3, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2097152) => Some(&[3, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4194304) => Some(&[3, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8388608) => Some(&[3, 7, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 16777216) => Some(&[3, 6, 11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 33554432) => Some(&[2, 6, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 67108864) => Some(&[2, 5, 9, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 134217728) => Some(&[2, 5, 9, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 268435456) => Some(&[2, 5, 8, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 536870912) => Some(&[2, 5, 8, 12, 19, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1073741824) => Some(&[2, 4, 7, 11, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2147483648) => Some(&[2, 4, 7, 10, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4294967296) => Some(&[2, 4, 7, 10, 13, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8589934592) => Some(&[2, 4, 6, 9, 12, 17, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 17179869184) => Some(&[2, 4, 6, 9, 12, 16, 24, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 34359738368) => Some(&[1, 4, 6, 8, 11, 15, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 68719476736) => Some(&[1, 3, 6, 8, 11, 14, 18, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 137438953472) => Some(&[1, 3, 5, 8, 10, 13, 17, 23, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 274877906944) => Some(&[1, 3, 5, 7, 10, 12, 16, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 549755813888) => Some(&[1, 3, 5, 7, 9, 12, 15, 19, 25, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1099511627776) => Some(&[1, 3, 5, 7, 9, 11, 14, 18, 22, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2199023255552) => Some(&[1, 3, 5, 7, 9, 11, 13, 17, 20, 27, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4398046511104) => Some(&[1, 3, 5, 6, 8, 10, 13, 16, 19, 24, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8796093022208) => Some(&[1, 3, 4, 6, 8, 10, 12, 15, 18, 22, 28, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 17592186044416) => Some(&[1, 3, 4, 6, 8, 10, 12, 14, 17, 20, 25, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 35184372088832) => Some(&[1, 3, 4, 6, 8, 9, 12, 14, 16, 19, 23, 29, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 70368744177664) => Some(&[1, 3, 4, 6, 7, 9, 11, 13, 16, 18, 22, 26, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 140737488355328) => Some(&[1, 2, 4, 6, 7, 9, 11, 13, 15, 18, 21, 24, 30, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 281474976710656) => Some(&[1, 2, 4, 5, 7, 9, 10, 12, 15, 17, 20, 23, 27, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 562949953421312) => Some(&[1, 2, 4, 5, 7, 8, 10, 12, 14, 16, 19, 22, 25, 30, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1125899906842624) => Some(&[1, 2, 4, 5, 7, 8, 10, 12, 14, 16, 18, 21, 24, 27, 34, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2251799813685248) => Some(&[1, 2, 4, 5, 6, 8, 10, 11, 13, 15, 17, 20, 22, 26, 30, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4503599627370496) => Some(&[1, 2, 3, 5, 6, 8, 9, 11, 13, 15, 17, 19, 21, 24, 28, 33, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 9007199254740992) => Some(&[1, 2, 3, 5, 6, 8, 9, 11, 12, 14, 16, 18, 21, 23, 26, 30, 38, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 18014398509481984) => Some(&[1, 2, 3, 5, 6, 7, 9, 10, 12, 14, 16, 18, 20, 22, 25, 28, 33, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 36028797018963968) => Some(&[1, 2, 3, 5, 6, 7, 9, 10, 12, 13, 15, 17, 19, 21, 24, 27, 31, 36, 6_400_000_000_000, 6_400_000_000_000]), + (64, 72057594037927936) => Some(&[1, 2, 3, 4, 6, 7, 8, 10, 11, 13, 15, 17, 18, 21, 23, 26, 29, 33, 41, 6_400_000_000_000]), + (64, 144115188075855872) => Some(&[1, 2, 3, 4, 6, 7, 8, 10, 11, 13, 14, 16, 18, 20, 22, 25, 27, 31, 35, 6_400_000_000_000]), + (64, 288230376151711744) => Some(&[1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 14, 16, 17, 19, 21, 24, 26, 29, 33, 38]), + (64, 576460752303423488) => Some(&[1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 14, 15, 17, 19, 21, 23, 25, 28, 31, 35]), + (64, 1152921504606846976) => Some(&[1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 15, 16, 18, 20, 22, 24, 27, 29, 33]), + (64, 2305843009213693952) => Some(&[1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 16, 18, 19, 21, 23, 26, 28, 31]), + (128, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8192) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 16384) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 32768) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 65536) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 131072) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 262144) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 524288) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1048576) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2097152) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4194304) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8388608) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 16777216) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 33554432) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 67108864) => Some(&[2, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 134217728) => Some(&[2, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 268435456) => Some(&[2, 6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 536870912) => Some(&[2, 6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1073741824) => Some(&[2, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2147483648) => Some(&[2, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4294967296) => Some(&[2, 5, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8589934592) => Some(&[2, 4, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 17179869184) => Some(&[2, 4, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 34359738368) => Some(&[2, 4, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 68719476736) => Some(&[1, 4, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 137438953472) => Some(&[1, 4, 6, 11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 274877906944) => Some(&[1, 3, 6, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 549755813888) => Some(&[1, 3, 6, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1099511627776) => Some(&[1, 3, 5, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2199023255552) => Some(&[1, 3, 5, 8, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4398046511104) => Some(&[1, 3, 5, 8, 12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8796093022208) => Some(&[1, 3, 5, 7, 11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 17592186044416) => Some(&[1, 3, 5, 7, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 35184372088832) => Some(&[1, 3, 4, 7, 9, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 70368744177664) => Some(&[1, 3, 4, 6, 9, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 140737488355328) => Some(&[1, 3, 4, 6, 9, 12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 281474976710656) => Some(&[1, 2, 4, 6, 8, 11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 562949953421312) => Some(&[1, 2, 4, 6, 8, 11, 15, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1125899906842624) => Some(&[1, 2, 4, 6, 8, 10, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2251799813685248) => Some(&[1, 2, 4, 5, 7, 10, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4503599627370496) => Some(&[1, 2, 4, 5, 7, 9, 12, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 9007199254740992) => Some(&[1, 2, 4, 5, 7, 9, 11, 15, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 18014398509481984) => Some(&[1, 2, 3, 5, 7, 9, 11, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 36028797018963968) => Some(&[1, 2, 3, 5, 6, 8, 10, 13, 18, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 72057594037927936) => Some(&[1, 2, 3, 5, 6, 8, 10, 13, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 144115188075855872) => Some(&[1, 2, 3, 5, 6, 8, 10, 12, 15, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 288230376151711744) => Some(&[1, 2, 3, 4, 6, 8, 9, 12, 14, 19, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 576460752303423488) => Some(&[1, 2, 3, 4, 6, 7, 9, 11, 14, 17, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1152921504606846976) => Some(&[1, 2, 3, 4, 6, 7, 9, 11, 13, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2305843009213693952) => Some(&[1, 2, 3, 4, 6, 7, 9, 10, 13, 15, 19, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8192) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 16384) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 32768) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 65536) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 131072) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 262144) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 524288) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1048576) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2097152) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4194304) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8388608) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 16777216) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 33554432) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 67108864) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 134217728) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 268435456) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 536870912) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1073741824) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2147483648) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4294967296) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8589934592) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 17179869184) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 34359738368) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 68719476736) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 137438953472) => Some(&[2, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 274877906944) => Some(&[1, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 549755813888) => Some(&[1, 4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1099511627776) => Some(&[1, 4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2199023255552) => Some(&[1, 4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4398046511104) => Some(&[1, 4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8796093022208) => Some(&[1, 3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 17592186044416) => Some(&[1, 3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 35184372088832) => Some(&[1, 3, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 70368744177664) => Some(&[1, 3, 6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 140737488355328) => Some(&[1, 3, 6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 281474976710656) => Some(&[1, 3, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 562949953421312) => Some(&[1, 3, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1125899906842624) => Some(&[1, 3, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2251799813685248) => Some(&[1, 2, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4503599627370496) => Some(&[1, 2, 4, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 9007199254740992) => Some(&[1, 2, 4, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 18014398509481984) => Some(&[1, 2, 4, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 36028797018963968) => Some(&[1, 2, 4, 6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 72057594037927936) => Some(&[1, 2, 4, 6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 144115188075855872) => Some(&[1, 2, 4, 6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 288230376151711744) => Some(&[1, 2, 4, 6, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 576460752303423488) => Some(&[1, 2, 3, 5, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1152921504606846976) => Some(&[1, 2, 3, 5, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2305843009213693952) => Some(&[1, 2, 3, 5, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8192) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 16384) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 32768) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 65536) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 131072) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 262144) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 524288) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1048576) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2097152) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4194304) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8388608) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 16777216) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 33554432) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 67108864) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 134217728) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 268435456) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 536870912) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1073741824) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2147483648) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4294967296) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8589934592) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 17179869184) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 34359738368) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 68719476736) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 137438953472) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 274877906944) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 549755813888) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1099511627776) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2199023255552) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4398046511104) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8796093022208) => Some(&[1, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 17592186044416) => Some(&[1, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 35184372088832) => Some(&[1, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 70368744177664) => Some(&[1, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 140737488355328) => Some(&[1, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 281474976710656) => Some(&[1, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 562949953421312) => Some(&[1, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1125899906842624) => Some(&[1, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2251799813685248) => Some(&[1, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4503599627370496) => Some(&[1, 4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 9007199254740992) => Some(&[1, 3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 18014398509481984) => Some(&[1, 3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 36028797018963968) => Some(&[1, 3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 72057594037927936) => Some(&[1, 3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 144115188075855872) => Some(&[1, 3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 288230376151711744) => Some(&[1, 3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 576460752303423488) => Some(&[1, 2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1152921504606846976) => Some(&[1, 2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2305843009213693952) => Some(&[1, 2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + _ => None, + } +} diff --git a/crates/akita-types/src/sis/generated_l2_sis_table/q64.rs b/crates/akita-types/src/sis/generated_l2_sis_table/q64.rs new file mode 100644 index 000000000..de36663e4 --- /dev/null +++ b/crates/akita-types/src/sis/generated_l2_sis_table/q64.rs @@ -0,0 +1,434 @@ +// AUTO-GENERATED by crates/akita-sis-estimator/examples/euclidean_width_table.rs -- do not edit by hand. +// +// SIS width thresholds for 128-bit quantum security (ADPS16, Euclidean norm=2). +// Rust estimator path: akita-sis-estimator::euclidean_width_table. +// Keys bound the squared norm of the complete scalar collision vector. + +// Family: Q64 + +#[rustfmt::skip] +pub(super) fn sis_max_widths(d: u32, collision_l2_sq: u128) -> Option<&'static [u64]> { + match (d, collision_l2_sq) { + (32, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8192) => Some(&[16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 16384) => Some(&[13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 32768) => Some(&[12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 65536) => Some(&[11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 131072) => Some(&[10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 262144) => Some(&[9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 524288) => Some(&[8, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1048576) => Some(&[7, 18, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2097152) => Some(&[7, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4194304) => Some(&[7, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8388608) => Some(&[6, 14, 26, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 16777216) => Some(&[6, 13, 23, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 33554432) => Some(&[5, 12, 21, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 67108864) => Some(&[5, 11, 19, 33, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 134217728) => Some(&[5, 11, 18, 28, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 268435456) => Some(&[5, 10, 17, 26, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 536870912) => Some(&[4, 10, 16, 24, 38, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1073741824) => Some(&[4, 9, 15, 22, 32, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2147483648) => Some(&[4, 9, 14, 21, 29, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4294967296) => Some(&[4, 9, 14, 20, 27, 40, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8589934592) => Some(&[4, 8, 13, 19, 25, 35, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 17179869184) => Some(&[4, 8, 13, 18, 24, 32, 49, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 34359738368) => Some(&[3, 8, 12, 17, 23, 30, 41, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 68719476736) => Some(&[3, 7, 12, 16, 22, 28, 37, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 137438953472) => Some(&[3, 7, 11, 16, 21, 27, 34, 46, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 274877906944) => Some(&[3, 7, 11, 15, 20, 25, 32, 41, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 549755813888) => Some(&[3, 7, 11, 14, 19, 24, 30, 38, 50, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1099511627776) => Some(&[3, 7, 10, 14, 18, 23, 29, 36, 45, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2199023255552) => Some(&[3, 6, 10, 14, 18, 22, 27, 34, 41, 54, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4398046511104) => Some(&[3, 6, 10, 13, 17, 21, 26, 32, 39, 48, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 8796093022208) => Some(&[3, 6, 9, 13, 17, 21, 25, 30, 37, 44, 57, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 17592186044416) => Some(&[3, 6, 9, 13, 16, 20, 24, 29, 35, 41, 50, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 35184372088832) => Some(&[3, 6, 9, 12, 16, 19, 24, 28, 33, 39, 47, 58, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 70368744177664) => Some(&[2, 6, 9, 12, 15, 19, 23, 27, 32, 37, 44, 53, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 140737488355328) => Some(&[2, 5, 8, 12, 15, 18, 22, 26, 31, 36, 42, 49, 60, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 281474976710656) => Some(&[2, 5, 8, 11, 14, 18, 21, 25, 30, 34, 40, 46, 54, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 562949953421312) => Some(&[2, 5, 8, 11, 14, 17, 21, 24, 29, 33, 38, 44, 51, 60, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 1125899906842624) => Some(&[2, 5, 8, 11, 14, 17, 20, 24, 28, 32, 36, 42, 48, 55, 69, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 2251799813685248) => Some(&[2, 5, 8, 10, 13, 16, 20, 23, 27, 31, 35, 40, 45, 52, 61, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 4503599627370496) => Some(&[2, 5, 7, 10, 13, 16, 19, 22, 26, 30, 34, 38, 43, 49, 57, 67, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 9007199254740992) => Some(&[2, 5, 7, 10, 13, 16, 19, 22, 25, 29, 33, 37, 42, 47, 53, 61, 77, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 18014398509481984) => Some(&[2, 5, 7, 10, 12, 15, 18, 21, 25, 28, 32, 36, 40, 45, 51, 57, 67, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (32, 36028797018963968) => Some(&[2, 4, 7, 10, 12, 15, 18, 21, 24, 27, 31, 35, 39, 43, 48, 54, 62, 73, 6_400_000_000_000, 6_400_000_000_000]), + (32, 72057594037927936) => Some(&[2, 4, 7, 9, 12, 15, 17, 20, 23, 27, 30, 34, 37, 42, 46, 52, 58, 66, 82, 6_400_000_000_000]), + (32, 144115188075855872) => Some(&[2, 4, 7, 9, 12, 14, 17, 20, 23, 26, 29, 33, 36, 40, 45, 50, 55, 62, 71, 6_400_000_000_000]), + (32, 288230376151711744) => Some(&[2, 4, 7, 9, 11, 14, 17, 19, 22, 25, 28, 32, 35, 39, 43, 48, 53, 59, 66, 76]), + (32, 576460752303423488) => Some(&[2, 4, 6, 9, 11, 14, 16, 19, 22, 25, 28, 31, 34, 38, 42, 46, 51, 56, 62, 70]), + (32, 1152921504606846976) => Some(&[2, 4, 6, 9, 11, 13, 16, 18, 21, 24, 27, 30, 33, 37, 41, 44, 49, 54, 59, 66]), + (32, 2305843009213693952) => Some(&[2, 4, 6, 8, 11, 13, 16, 18, 21, 24, 26, 29, 33, 36, 39, 43, 47, 52, 56, 62]), + (32, 4611686018427387904) => Some(&[2, 4, 6, 8, 11, 13, 15, 18, 20, 23, 26, 29, 32, 35, 38, 42, 46, 50, 54, 59]), + (32, 9223372036854775808) => Some(&[2, 4, 6, 8, 10, 13, 15, 17, 20, 23, 25, 28, 31, 34, 37, 41, 44, 48, 52, 57]), + (32, 18446744073709551616) => Some(&[2, 4, 6, 8, 10, 12, 15, 17, 20, 22, 25, 27, 30, 33, 36, 40, 43, 47, 51, 55]), + (32, 36893488147419103232) => Some(&[2, 4, 6, 8, 10, 12, 14, 17, 19, 22, 24, 27, 30, 32, 35, 39, 42, 45, 49, 53]), + (32, 73786976294838206464) => Some(&[2, 4, 6, 8, 10, 12, 14, 16, 19, 21, 24, 26, 29, 32, 35, 38, 41, 44, 48, 51]), + (32, 147573952589676412928) => Some(&[1, 3, 6, 8, 10, 12, 14, 16, 18, 21, 23, 26, 28, 31, 34, 37, 40, 43, 46, 50]), + (32, 295147905179352825856) => Some(&[1, 3, 5, 7, 10, 12, 14, 16, 18, 20, 23, 25, 28, 30, 33, 36, 39, 42, 45, 48]), + (32, 590295810358705651712) => Some(&[1, 3, 5, 7, 9, 11, 13, 16, 18, 20, 22, 25, 27, 30, 32, 35, 38, 41, 44, 47]), + (32, 1180591620717411303424) => Some(&[1, 3, 5, 7, 9, 11, 13, 15, 17, 20, 22, 24, 27, 29, 32, 34, 37, 40, 43, 46]), + (32, 2361183241434822606848) => Some(&[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 22, 24, 26, 29, 31, 34, 36, 39, 42, 45]), + (32, 4722366482869645213696) => Some(&[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 26, 28, 30, 33, 36, 38, 41, 44]), + (32, 9444732965739290427392) => Some(&[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 30, 32, 35, 37, 40, 43]), + (32, 18889465931478580854784) => Some(&[1, 3, 5, 7, 9, 11, 12, 14, 16, 18, 20, 23, 25, 27, 29, 32, 34, 37, 39, 42]), + (32, 37778931862957161709568) => Some(&[1, 3, 5, 7, 9, 10, 12, 14, 16, 18, 20, 22, 24, 27, 29, 31, 33, 36, 38, 41]), + (32, 75557863725914323419136) => Some(&[1, 3, 5, 7, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 31, 33, 35, 38, 40]), + (32, 151115727451828646838272) => Some(&[1, 3, 5, 6, 8, 10, 12, 14, 16, 17, 19, 21, 24, 26, 28, 30, 32, 35, 37, 39]), + (32, 302231454903657293676544) => Some(&[1, 3, 5, 6, 8, 10, 12, 13, 15, 17, 19, 21, 23, 25, 27, 29, 32, 34, 36, 39]), + (32, 604462909807314587353088) => Some(&[1, 3, 5, 6, 8, 10, 12, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 36, 38]), + (32, 1208925819614629174706176) => Some(&[1, 3, 5, 6, 8, 10, 11, 13, 15, 17, 19, 20, 22, 24, 26, 28, 31, 33, 35, 37]), + (32, 2417851639229258349412352) => Some(&[1, 3, 4, 6, 8, 10, 11, 13, 15, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 37]), + (32, 4835703278458516698824704) => Some(&[1, 3, 4, 6, 8, 9, 11, 13, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36]), + (32, 9671406556917033397649408) => Some(&[1, 3, 4, 6, 8, 9, 11, 13, 14, 16, 18, 20, 21, 23, 25, 27, 29, 31, 33, 35]), + (32, 19342813113834066795298816) => Some(&[1, 3, 4, 6, 7, 9, 11, 12, 14, 16, 18, 19, 21, 23, 25, 27, 29, 31, 33, 35]), + (64, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8192) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 16384) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 32768) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 65536) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 131072) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 262144) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 524288) => Some(&[10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1048576) => Some(&[9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2097152) => Some(&[8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4194304) => Some(&[7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8388608) => Some(&[7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 16777216) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 33554432) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 67108864) => Some(&[5, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 134217728) => Some(&[5, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 268435456) => Some(&[5, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 536870912) => Some(&[5, 12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1073741824) => Some(&[4, 11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2147483648) => Some(&[4, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4294967296) => Some(&[4, 10, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8589934592) => Some(&[4, 9, 17, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 17179869184) => Some(&[4, 9, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 34359738368) => Some(&[4, 8, 15, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 68719476736) => Some(&[3, 8, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 137438953472) => Some(&[3, 8, 13, 23, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 274877906944) => Some(&[3, 7, 12, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 549755813888) => Some(&[3, 7, 12, 19, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1099511627776) => Some(&[3, 7, 11, 18, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2199023255552) => Some(&[3, 7, 11, 17, 27, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4398046511104) => Some(&[3, 6, 10, 16, 24, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 8796093022208) => Some(&[3, 6, 10, 15, 22, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 17592186044416) => Some(&[3, 6, 10, 14, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 35184372088832) => Some(&[3, 6, 9, 14, 19, 29, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 70368744177664) => Some(&[3, 6, 9, 13, 18, 26, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 140737488355328) => Some(&[2, 6, 9, 13, 18, 24, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 281474976710656) => Some(&[2, 5, 9, 12, 17, 23, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 562949953421312) => Some(&[2, 5, 8, 12, 16, 22, 30, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1125899906842624) => Some(&[2, 5, 8, 12, 16, 21, 27, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2251799813685248) => Some(&[2, 5, 8, 11, 15, 20, 26, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4503599627370496) => Some(&[2, 5, 8, 11, 15, 19, 24, 33, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 9007199254740992) => Some(&[2, 5, 8, 11, 14, 18, 23, 30, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 18014398509481984) => Some(&[2, 5, 7, 10, 14, 18, 22, 28, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 36028797018963968) => Some(&[2, 5, 7, 10, 13, 17, 21, 27, 36, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 72057594037927936) => Some(&[2, 4, 7, 10, 13, 17, 21, 26, 33, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 144115188075855872) => Some(&[2, 4, 7, 10, 13, 16, 20, 25, 31, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 288230376151711744) => Some(&[2, 4, 7, 9, 12, 16, 19, 24, 29, 38, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 576460752303423488) => Some(&[2, 4, 7, 9, 12, 15, 19, 23, 28, 35, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1152921504606846976) => Some(&[2, 4, 6, 9, 12, 15, 18, 22, 27, 33, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2305843009213693952) => Some(&[2, 4, 6, 9, 12, 14, 18, 21, 26, 31, 39, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4611686018427387904) => Some(&[2, 4, 6, 9, 11, 14, 17, 21, 25, 29, 36, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 9223372036854775808) => Some(&[2, 4, 6, 8, 11, 14, 17, 20, 24, 28, 34, 45, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 18446744073709551616) => Some(&[2, 4, 6, 8, 11, 13, 16, 20, 23, 27, 32, 40, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 36893488147419103232) => Some(&[2, 4, 6, 8, 11, 13, 16, 19, 22, 26, 31, 37, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 73786976294838206464) => Some(&[2, 4, 6, 8, 10, 13, 16, 19, 22, 25, 30, 35, 44, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 147573952589676412928) => Some(&[1, 4, 6, 8, 10, 13, 15, 18, 21, 25, 29, 34, 40, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 295147905179352825856) => Some(&[1, 3, 6, 8, 10, 12, 15, 18, 21, 24, 28, 32, 38, 49, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 590295810358705651712) => Some(&[1, 3, 5, 8, 10, 12, 15, 17, 20, 23, 27, 31, 36, 44, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1180591620717411303424) => Some(&[1, 3, 5, 7, 10, 12, 14, 17, 20, 23, 26, 30, 35, 41, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 2361183241434822606848) => Some(&[1, 3, 5, 7, 9, 12, 14, 17, 19, 22, 25, 29, 33, 39, 47, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 4722366482869645213696) => Some(&[1, 3, 5, 7, 9, 11, 14, 16, 19, 22, 25, 28, 32, 37, 43, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 9444732965739290427392) => Some(&[1, 3, 5, 7, 9, 11, 13, 16, 18, 21, 24, 27, 31, 35, 41, 50, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 18889465931478580854784) => Some(&[1, 3, 5, 7, 9, 11, 13, 16, 18, 21, 24, 27, 30, 34, 39, 46, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 37778931862957161709568) => Some(&[1, 3, 5, 7, 9, 11, 13, 15, 18, 20, 23, 26, 29, 33, 37, 43, 54, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 75557863725914323419136) => Some(&[1, 3, 5, 7, 9, 11, 13, 15, 17, 20, 22, 25, 29, 32, 36, 41, 48, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (64, 151115727451828646838272) => Some(&[1, 3, 5, 7, 8, 10, 13, 15, 17, 19, 22, 25, 28, 31, 35, 39, 45, 58, 6_400_000_000_000, 6_400_000_000_000]), + (64, 302231454903657293676544) => Some(&[1, 3, 5, 6, 8, 10, 12, 14, 17, 19, 22, 24, 27, 30, 34, 38, 43, 50, 6_400_000_000_000, 6_400_000_000_000]), + (64, 604462909807314587353088) => Some(&[1, 3, 5, 6, 8, 10, 12, 14, 16, 19, 21, 24, 26, 30, 33, 37, 41, 47, 6_400_000_000_000, 6_400_000_000_000]), + (64, 1208925819614629174706176) => Some(&[1, 3, 5, 6, 8, 10, 12, 14, 16, 18, 21, 23, 26, 29, 32, 36, 40, 45, 52, 6_400_000_000_000]), + (64, 2417851639229258349412352) => Some(&[1, 3, 5, 6, 8, 10, 12, 14, 16, 18, 20, 23, 25, 28, 31, 35, 38, 43, 49, 6_400_000_000_000]), + (64, 4835703278458516698824704) => Some(&[1, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 25, 27, 30, 34, 37, 41, 46, 54]), + (64, 9671406556917033397649408) => Some(&[1, 3, 4, 6, 8, 10, 11, 13, 15, 17, 20, 22, 24, 27, 30, 33, 36, 40, 44, 50]), + (64, 19342813113834066795298816) => Some(&[1, 3, 4, 6, 8, 9, 11, 13, 15, 17, 19, 21, 24, 26, 29, 32, 35, 39, 43, 48]), + (128, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8192) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 16384) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 32768) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 65536) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 131072) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 262144) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 524288) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1048576) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2097152) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4194304) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8388608) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 16777216) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 33554432) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 67108864) => Some(&[8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 134217728) => Some(&[7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 268435456) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 536870912) => Some(&[6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1073741824) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2147483648) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4294967296) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8589934592) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 17179869184) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 34359738368) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 68719476736) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 137438953472) => Some(&[4, 11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 274877906944) => Some(&[3, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 549755813888) => Some(&[3, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1099511627776) => Some(&[3, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2199023255552) => Some(&[3, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4398046511104) => Some(&[3, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 8796093022208) => Some(&[3, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 17592186044416) => Some(&[3, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 35184372088832) => Some(&[3, 7, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 70368744177664) => Some(&[3, 6, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 140737488355328) => Some(&[3, 6, 12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 281474976710656) => Some(&[2, 6, 11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 562949953421312) => Some(&[2, 6, 11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1125899906842624) => Some(&[2, 6, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2251799813685248) => Some(&[2, 5, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4503599627370496) => Some(&[2, 5, 9, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 9007199254740992) => Some(&[2, 5, 9, 15, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 18014398509481984) => Some(&[2, 5, 9, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 36028797018963968) => Some(&[2, 5, 8, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 72057594037927936) => Some(&[2, 5, 8, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 144115188075855872) => Some(&[2, 5, 8, 12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 288230376151711744) => Some(&[2, 4, 8, 12, 19, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 576460752303423488) => Some(&[2, 4, 7, 11, 17, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1152921504606846976) => Some(&[2, 4, 7, 11, 16, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2305843009213693952) => Some(&[2, 4, 7, 10, 15, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4611686018427387904) => Some(&[2, 4, 7, 10, 14, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 9223372036854775808) => Some(&[2, 4, 7, 10, 14, 22, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 18446744073709551616) => Some(&[2, 4, 6, 10, 13, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 36893488147419103232) => Some(&[2, 4, 6, 9, 13, 18, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 73786976294838206464) => Some(&[2, 4, 6, 9, 12, 17, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 147573952589676412928) => Some(&[2, 4, 6, 9, 12, 17, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 295147905179352825856) => Some(&[1, 4, 6, 9, 12, 16, 24, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 590295810358705651712) => Some(&[1, 4, 6, 8, 11, 15, 22, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1180591620717411303424) => Some(&[1, 3, 6, 8, 11, 15, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2361183241434822606848) => Some(&[1, 3, 6, 8, 11, 14, 19, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4722366482869645213696) => Some(&[1, 3, 5, 8, 11, 14, 18, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 9444732965739290427392) => Some(&[1, 3, 5, 8, 10, 13, 17, 25, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 18889465931478580854784) => Some(&[1, 3, 5, 8, 10, 13, 17, 23, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 37778931862957161709568) => Some(&[1, 3, 5, 7, 10, 13, 16, 21, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 75557863725914323419136) => Some(&[1, 3, 5, 7, 10, 12, 16, 20, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 151115727451828646838272) => Some(&[1, 3, 5, 7, 9, 12, 15, 19, 29, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 302231454903657293676544) => Some(&[1, 3, 5, 7, 9, 12, 15, 19, 25, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 604462909807314587353088) => Some(&[1, 3, 5, 7, 9, 12, 15, 18, 23, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 1208925819614629174706176) => Some(&[1, 3, 5, 7, 9, 11, 14, 18, 22, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 2417851639229258349412352) => Some(&[1, 3, 5, 7, 9, 11, 14, 17, 21, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 4835703278458516698824704) => Some(&[1, 3, 5, 7, 9, 11, 13, 17, 20, 27, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 9671406556917033397649408) => Some(&[1, 3, 5, 6, 8, 11, 13, 16, 20, 25, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (128, 19342813113834066795298816) => Some(&[1, 3, 4, 6, 8, 10, 13, 16, 19, 24, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8192) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 16384) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 32768) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 65536) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 131072) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 262144) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 524288) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1048576) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2097152) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4194304) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8388608) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 16777216) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 33554432) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 67108864) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 134217728) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 268435456) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 536870912) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1073741824) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2147483648) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4294967296) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8589934592) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 17179869184) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 34359738368) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 68719476736) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 137438953472) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 274877906944) => Some(&[5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 549755813888) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1099511627776) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2199023255552) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4398046511104) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 8796093022208) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 17592186044416) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 35184372088832) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 70368744177664) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 140737488355328) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 281474976710656) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 562949953421312) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1125899906842624) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2251799813685248) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4503599627370496) => Some(&[2, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 9007199254740992) => Some(&[2, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 18014398509481984) => Some(&[2, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 36028797018963968) => Some(&[2, 6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 72057594037927936) => Some(&[2, 6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 144115188075855872) => Some(&[2, 6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 288230376151711744) => Some(&[2, 6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 576460752303423488) => Some(&[2, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1152921504606846976) => Some(&[2, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2305843009213693952) => Some(&[2, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4611686018427387904) => Some(&[2, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 9223372036854775808) => Some(&[2, 5, 11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 18446744073709551616) => Some(&[2, 5, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 36893488147419103232) => Some(&[2, 4, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 73786976294838206464) => Some(&[2, 4, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 147573952589676412928) => Some(&[2, 4, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 295147905179352825856) => Some(&[2, 4, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 590295810358705651712) => Some(&[2, 4, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1180591620717411303424) => Some(&[1, 4, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2361183241434822606848) => Some(&[1, 4, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4722366482869645213696) => Some(&[1, 4, 7, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 9444732965739290427392) => Some(&[1, 4, 6, 12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 18889465931478580854784) => Some(&[1, 4, 6, 11, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 37778931862957161709568) => Some(&[1, 3, 6, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 75557863725914323419136) => Some(&[1, 3, 6, 10, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 151115727451828646838272) => Some(&[1, 3, 6, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 302231454903657293676544) => Some(&[1, 3, 6, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 604462909807314587353088) => Some(&[1, 3, 6, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 1208925819614629174706176) => Some(&[1, 3, 5, 9, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 2417851639229258349412352) => Some(&[1, 3, 5, 8, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 4835703278458516698824704) => Some(&[1, 3, 5, 8, 13, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 9671406556917033397649408) => Some(&[1, 3, 5, 8, 12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (256, 19342813113834066795298816) => Some(&[1, 3, 5, 8, 12, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 16) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 32) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 64) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 128) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 256) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 512) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1024) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2048) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4096) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8192) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 16384) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 32768) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 65536) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 131072) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 262144) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 524288) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1048576) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2097152) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4194304) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8388608) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 16777216) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 33554432) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 67108864) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 134217728) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 268435456) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 536870912) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1073741824) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2147483648) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4294967296) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8589934592) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 17179869184) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 34359738368) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 68719476736) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 137438953472) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 274877906944) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 549755813888) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1099511627776) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2199023255552) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4398046511104) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 8796093022208) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 17592186044416) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 35184372088832) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 70368744177664) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 140737488355328) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 281474976710656) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 562949953421312) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1125899906842624) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2251799813685248) => Some(&[6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4503599627370496) => Some(&[4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 9007199254740992) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 18014398509481984) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 36028797018963968) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 72057594037927936) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 144115188075855872) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 288230376151711744) => Some(&[3, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 576460752303423488) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1152921504606846976) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2305843009213693952) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4611686018427387904) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 9223372036854775808) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 18446744073709551616) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 36893488147419103232) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 73786976294838206464) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 147573952589676412928) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 295147905179352825856) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 590295810358705651712) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1180591620717411303424) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2361183241434822606848) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4722366482869645213696) => Some(&[2, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 9444732965739290427392) => Some(&[2, 6, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 18889465931478580854784) => Some(&[2, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 37778931862957161709568) => Some(&[1, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 75557863725914323419136) => Some(&[1, 5, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 151115727451828646838272) => Some(&[1, 4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 302231454903657293676544) => Some(&[1, 4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 604462909807314587353088) => Some(&[1, 4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 1208925819614629174706176) => Some(&[1, 4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 2417851639229258349412352) => Some(&[1, 4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 4835703278458516698824704) => Some(&[1, 4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 9671406556917033397649408) => Some(&[1, 4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + (512, 19342813113834066795298816) => Some(&[1, 4, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000, 6_400_000_000_000]), + _ => None, + } +} diff --git a/crates/akita-types/src/sis/mod.rs b/crates/akita-types/src/sis/mod.rs index d2edb891a..c7694f4a9 100644 --- a/crates/akita-types/src/sis/mod.rs +++ b/crates/akita-types/src/sis/mod.rs @@ -26,6 +26,7 @@ pub mod ajtai_key; pub mod compression; pub mod decomposition_digits; pub mod fold_linf_cap; +mod generated_l2_sis_table; mod generated_sis_table; pub mod honest_fold_policy; pub mod norm_bound; @@ -38,6 +39,7 @@ pub use ajtai_key::{ COEFF_LINF_BUCKETS, DEFAULT_SIS_SECURITY_POLICY, GADGET_COEFF_LINF_ANCHORS, SIS_MATRIX_ROLES, SUPPORTED_SIS_SECURITY_POLICIES, }; +pub use ajtai_key::{ceil_supported_l2_collision_sq, min_secure_l2_rank}; pub use decomposition_digits::{ balanced_digit_abs_max, compute_num_digits_field_width, decomposed_s_block_ring_count, decomposed_t_ring_count, decomposed_w_ring_count, fold_witness_representable_linf_bounds, @@ -54,11 +56,12 @@ pub use norm_bound::{ fold_witness_linf_cap_policy, fold_witness_unsnapped_linf_cap, max_response_linf_for_role_a_collision, rademacher_proxy_variance, rademacher_proxy_variance_flat_challenges, rademacher_proxy_variance_tensor_challenges, - role_a_collision_inf_norm_for_response_bound, rounded_up_collision_inf_norm, - rounded_up_role_a_inf_norm, weak_binding_inf_norm, FoldChallengeNorms, - FoldWitnessLinfCapConfig, FoldWitnessLinfCapPolicy, FoldWitnessNorms, + role_a_collision_inf_norm_for_response_bound, role_a_collision_l2_sq_for_response_bound, + rounded_up_collision_inf_norm, rounded_up_role_a_inf_norm, weak_binding_inf_norm, + FoldChallengeNorms, FoldWitnessLinfCapConfig, FoldWitnessLinfCapPolicy, FoldWitnessNorms, FOLD_LINF_FP32_SNAP_MIN_TSTAR_RETAIN_DEN, FOLD_LINF_FP32_SNAP_MIN_TSTAR_RETAIN_NUM, FOLD_LINF_GRIND_TARGET_ACCEPT_PROB_DEN, FOLD_LINF_GRIND_TARGET_ACCEPT_PROB_NUM, FOLD_LINF_SNAP_MIN_TSTAR_RETAIN_DEN, FOLD_LINF_SNAP_MIN_TSTAR_RETAIN_NUM, - MAX_FOLD_GRIND_ATTEMPTS, + MAX_FOLD_GRIND_ATTEMPTS, UNCHECKED_L2_DIAGNOSTIC_CHALLENGE_OP_NORM_CAP, + UNCHECKED_L2_DIAGNOSTIC_NORM_SQ_CAP, }; diff --git a/crates/akita-types/src/sis/norm_bound.rs b/crates/akita-types/src/sis/norm_bound.rs index d01bad32d..f884ca8dc 100644 --- a/crates/akita-types/src/sis/norm_bound.rs +++ b/crates/akita-types/src/sis/norm_bound.rs @@ -17,6 +17,15 @@ use super::decomposition_digits::balanced_digit_abs_max; use super::decomposition_digits::{balanced_digit_max, num_digits_for_bound}; use crate::layout::digit_math::isqrt_ceil; +/// Counterfactual whole-witness squared-L2 cap used by the unchecked planning +/// probe. No verifier check enforces this value in the diagnostic rollout. +pub const UNCHECKED_L2_DIAGNOSTIC_NORM_SQ_CAP: u128 = 1u128 << 32; + +/// Counterfactual negacyclic-convolution operator-norm cap used by the +/// unchecked planning probe. No challenge rejection check enforces this value +/// in the diagnostic rollout. +pub const UNCHECKED_L2_DIAGNOSTIC_CHALLENGE_OP_NORM_CAP: u128 = 17; + pub use super::fold_linf_cap::{ fold_witness_linf_cap_policy, rademacher_proxy_variance, rademacher_proxy_variance_flat_challenges, rademacher_proxy_variance_tensor_challenges, @@ -78,6 +87,26 @@ pub fn role_a_collision_inf_norm_for_response_bound( ) } +/// Whole-vector squared-L2 collision bound for two accepted folded responses. +/// +/// If each response has squared norm at most `response_l2_sq_bound`, the same +/// three symmetric-difference factors used by +/// [`role_a_collision_inf_norm_for_response_bound`] contribute `8²`. The +/// challenge's negacyclic-convolution operator norm and the fixed +/// ring-subfield embedding then contribute their squared L2 operator norms +/// exactly once. +#[must_use] +pub fn role_a_collision_l2_sq_for_response_bound( + challenge_l2_op_norm_sq: u128, + ring_subfield_l2_op_norm_sq: u32, + response_l2_sq_bound: u128, +) -> Option { + 64u128 + .checked_mul(challenge_l2_op_norm_sq)? + .checked_mul(u128::from(ring_subfield_l2_op_norm_sq))? + .checked_mul(response_l2_sq_bound) +} + /// Largest raw folded-response `L∞` bound fitting an A-role collision bucket. /// /// This is the exact integer inverse of @@ -393,6 +422,21 @@ mod tests { ); } + #[test] + fn l2_collision_scales_the_complete_witness_norm_once() { + let challenge_l2_op_norm_sq = 17u128.pow(2); + let subfield_op_norm_sq = 1u32; + let response_l2_sq = 1u128 << 32; + assert_eq!( + role_a_collision_l2_sq_for_response_bound( + challenge_l2_op_norm_sq, + subfield_op_norm_sq, + response_l2_sq, + ), + Some(64 * challenge_l2_op_norm_sq * u128::from(subfield_op_norm_sq) * response_l2_sq), + ); + } + #[test] fn fold_witness_digit_plan_beta_picks_min_ring_product_side() { let beta = |c_inf, c_l1, s_inf, s_l1| { diff --git a/crates/akita-verifier/src/protocol/core.rs b/crates/akita-verifier/src/protocol/core.rs index 6afc2693e..8047e8f50 100644 --- a/crates/akita-verifier/src/protocol/core.rs +++ b/crates/akita-verifier/src/protocol/core.rs @@ -25,8 +25,8 @@ use akita_sumcheck::SumcheckInstanceVerifierExt; use akita_transcript::labels::{ ABSORB_COMMITMENT, ABSORB_EVALUATION_CLAIMS, ABSORB_NEXT_LEVEL_WITNESS_BINDING, ABSORB_RANGE_IMAGE_EVALUATION, ABSORB_STAGE2_NEXT_W_EVAL, ABSORB_TERMINAL_E_HAT, - ABSORB_TERMINAL_W_REMAINDER, CHALLENGE_COMPRESSION_BINARY, CHALLENGE_SUMCHECK_BATCH, - CHALLENGE_SUMCHECK_ROUND, + ABSORB_TERMINAL_W_REMAINDER, ABSORB_UNCHECKED_L2_DIAGNOSTIC, CHALLENGE_COMPRESSION_BINARY, + CHALLENGE_SUMCHECK_BATCH, CHALLENGE_SUMCHECK_ROUND, }; use akita_transcript::{append_ext_field, sample_ext_challenge, Transcript}; use akita_types::derive_tensor_extension_opening_claim_from_partials; @@ -42,6 +42,7 @@ use akita_types::{ FpExtEncoding, OpeningClaims, OpeningClaimsLayout, PolynomialGroupClaims, PreparedOpeningPoint, RecursiveFoldParams, RingRelationInstance, RingVec, SetupContributionMode, SetupSumcheckProof, TerminalFoldParams, TerminalLevelProof, TerminalResponse, TerminalWitnessTranscriptParts, + UncheckedL2NormDiagnostic, }; use akita_types::{ tensor_opening_split, tensor_reduction_claim_from_rows, tensor_row_partials_from_columns, diff --git a/crates/akita-verifier/src/protocol/core/fold/mod.rs b/crates/akita-verifier/src/protocol/core/fold/mod.rs index 3e22690dd..d375dc185 100644 --- a/crates/akita-verifier/src/protocol/core/fold/mod.rs +++ b/crates/akita-verifier/src/protocol/core/fold/mod.rs @@ -51,6 +51,7 @@ pub(in crate::protocol::core) enum PreparedNextWitness<'a, F: FieldCore> { pub(in crate::protocol::core) enum PreparedFoldPayload<'a, F: FieldCore, E: FieldCore> { Recursive { + unchecked_l2_diagnostic: Option<&'a UncheckedL2NormDiagnostic>, stage1: &'a AkitaStage1Proof, stage2: &'a AkitaStage2Proof, next_witness: PreparedNextWitness<'a, F>, @@ -377,24 +378,33 @@ where } (relation_rhs_layout, relation_instance) }; - let (stage1, stage2, next_witness, next_witness_ring_dim, next_opening_source_len, stage3) = - match prepared.payload { - PreparedFoldPayload::Recursive { - stage1, - stage2, - next_witness, - next_witness_ring_dim, - next_opening_source_len, - stage3, - } => ( - stage1, - stage2, - next_witness, - next_witness_ring_dim, - next_opening_source_len, - stage3, - ), - }; + let ( + unchecked_l2_diagnostic, + stage1, + stage2, + next_witness, + next_witness_ring_dim, + next_opening_source_len, + stage3, + ) = match prepared.payload { + PreparedFoldPayload::Recursive { + unchecked_l2_diagnostic, + stage1, + stage2, + next_witness, + next_witness_ring_dim, + next_opening_source_len, + stage3, + } => ( + unchecked_l2_diagnostic, + stage1, + stage2, + next_witness, + next_witness_ring_dim, + next_opening_source_len, + stage3, + ), + }; let ring_switch_replay = RingSwitchReplay { setup: &setup.expanded, relation: &relation_instance, @@ -425,6 +435,26 @@ where .map_err(|error| { AkitaError::InvalidInput(format!("compressed ring-switch replay failed: {error:?}")) })?; + match ( + prepared.lp.inner_commit_matrix.unchecked_l2_collision_sq(), + unchecked_l2_diagnostic, + ) { + (Some(_), Some(diagnostic)) => { + let expected = rs.relation_address_geometry.relation_point_variable_count(); + if diagnostic.leaf_round_coefficients.len() != expected { + return Err(AkitaError::InvalidProof); + } + // UNSOUND DIAGNOSTIC: transcript-bind the claim and simulated + // final-stage coefficients, but intentionally perform no norm or + // sumcheck verification in this rollout. + transcript.append_serde(ABSORB_UNCHECKED_L2_DIAGNOSTIC, &diagnostic.norm_squared); + for coefficient in &diagnostic.leaf_round_coefficients { + transcript.append_serde(ABSORB_UNCHECKED_L2_DIAGNOSTIC, coefficient); + } + } + (None, None) => {} + _ => return Err(AkitaError::InvalidProof), + } let relation_claim = relation_claim_from_compressed_rhs_extension::( &relation_rhs_layout, &rs.tau1, diff --git a/crates/akita-verifier/src/protocol/core/root_fold.rs b/crates/akita-verifier/src/protocol/core/root_fold.rs index 75b68bed3..edcd99c5a 100644 --- a/crates/akita-verifier/src/protocol/core/root_fold.rs +++ b/crates/akita-verifier/src/protocol/core/root_fold.rs @@ -209,6 +209,7 @@ where prefix, w_len: witness_len, payload: PreparedFoldPayload::Recursive { + unchecked_l2_diagnostic: proof.unchecked_l2_norm_diagnostic.as_ref(), stage1: &proof.stage1, stage2: &proof.stage2, next_witness, diff --git a/crates/akita-verifier/src/protocol/core/suffix.rs b/crates/akita-verifier/src/protocol/core/suffix.rs index 6298f7f2e..6466f29b4 100644 --- a/crates/akita-verifier/src/protocol/core/suffix.rs +++ b/crates/akita-verifier/src/protocol/core/suffix.rs @@ -74,6 +74,7 @@ struct FoldReplayPayload<'a, F: FieldCore, E: FieldCore> { enum FoldReplayKind<'a, F: FieldCore, E: FieldCore> { Recursive { v: &'a RingVec, + unchecked_l2_diagnostic: Option<&'a UncheckedL2NormDiagnostic>, stage1: &'a AkitaStage1Proof, stage2: &'a AkitaStage2Proof, next_witness: PreparedNextWitness<'a, F>, @@ -172,6 +173,7 @@ where fold_grind_nonce: fold.fold_grind_nonce, kind: FoldReplayKind::Recursive { v: &fold.opening_payload, + unchecked_l2_diagnostic: fold.unchecked_l2_norm_diagnostic.as_ref(), stage1: &fold.stage1, stage2: &fold.stage2, next_witness, @@ -476,6 +478,7 @@ where let (opening_payload, payload) = match proof.kind { FoldReplayKind::Recursive { v, + unchecked_l2_diagnostic, stage1, stage2, next_witness, @@ -490,6 +493,7 @@ where ( v.clone(), PreparedFoldPayload::Recursive { + unchecked_l2_diagnostic, stage1, stage2, next_witness, diff --git a/scripts/gen_sis_table.py b/scripts/gen_sis_table.py index c54651804..bd2633bc0 100644 --- a/scripts/gen_sis_table.py +++ b/scripts/gen_sis_table.py @@ -5,7 +5,7 @@ This script binary-searches for the maximum SIS width (in ring elements) that provides >= 128-bit security for each (d, collision_l2_sq, rank) triple. The output is the Rust match arm body for `sis_max_widths` in the split -`crates/akita-types/src/sis/generated_sis_table/` modules. +`crates/akita-types/src/sis/generated_l2_sis_table/` modules. Requires SageMath and the pinned lattice-estimator checkout under `third_party/lattice-estimator` (or an explicit override). @@ -28,19 +28,18 @@ --jobs N Run N independent Sage subprocess shards (default: 1). Collision bucket convention: - Each bucket is the per-ring-row squared Euclidean collision bound - `collision_l2_sq` (an exact integer). The SIS solution spans `width` ring - rows, each of squared norm <= collision_l2_sq, so the whole-vector Euclidean - length bound passed to lattice-estimator is `sqrt(width * collision_l2_sq)`. + Each bucket is the whole-vector squared Euclidean collision bound + `collision_l2_sq` (an exact integer). The scalar SIS Euclidean length bound + passed to lattice-estimator is `sqrt(collision_l2_sq)`. Buckets are exact powers of two; the Rust table rounds a raw key up via `next_power_of_two` and clamps to the same ladder as `MIN_LOG_BUCKET` / `MAX_LOG_BUCKET` in `sis/ajtai_key.rs`. Modeling choices (matching the existing table): - - Reduction model: BDGL16 + - Reduction model: ADPS16 quantum - Norm: Euclidean (l2); `red_shape_model` is ignored on this path - Field modulus for estimation: selected by --family / --q - - length_bound = sqrt(width * collision_l2_sq) (per-row squared key) + - length_bound = sqrt(collision_l2_sq) (whole-vector squared key) The runtime protocol prime may be a different 128-bit pseudo-Mersenne prime, for example p = 2^128 - 2^32 + 22537. That distinction is immaterial for @@ -83,74 +82,26 @@ MAX_LOG_BUCKET = 84 SQUARED_BUCKETS = [1 << k for k in range(MIN_LOG_BUCKET, MAX_LOG_BUCKET + 1)] -# Coefficient-L∞ buckets for derived L2 keys K = d · B². Keep in lockstep with -# `COEFF_LINF_BUCKETS` in `crates/akita-types/src/sis/ajtai_key.rs`. -COEFF_LINF_BUCKETS = [ - 2, - 3, - 7, - 15, - 31, - 63, - 127, - 255, - 511, - 1023, - 2047, - 4095, - 8191, - 16383, - 32767, - 65535, - 131071, - 262143, - 524287, - 1048575, - 2097151, - 4194303, - 8388607, - 16777215, - 33554431, - 67108863, -] - -RING_DIMS = [32, 64, 128, 256] - - -def coeff_linf_bucket_sq(b: int) -> int: - """Return `B²` for a coefficient-L∞ bucket `B` without float rounding.""" - if b <= 3: - return b * b - # Buckets after `3` are `2^k - 1`; square via bit shifts. - k = (b + 1).bit_length() - 1 - return (1 << (2 * k)) - (1 << (k + 1)) + 1 - - -def derived_l2_collision_keys() -> list[int]: - keys: set[int] = set() - for d in RING_DIMS: - for b in COEFF_LINF_BUCKETS: - keys.add(d * coeff_linf_bucket_sq(b)) - return sorted(keys) +RING_DIMS = [32, 64, 128, 256, 512] FAMILIES: dict[str, tuple[int, str, list[int], list[int]]] = { "q32": ( (1 << 32) - 99, "2^32 - 99", - [32, 64, 128, 256], + RING_DIMS, SQUARED_BUCKETS, ), "q64": ( (1 << 64) - 59, "2^64 - 59", - [32, 64, 128, 256], + RING_DIMS, SQUARED_BUCKETS, ), "q128": ( (1 << 128) - ((1 << 32) - 22537), "2^128 - (2^32 - 22537)", - [32, 64, 128, 256], + RING_DIMS, SQUARED_BUCKETS, ), } @@ -231,9 +182,9 @@ def default_search_cap(d: int) -> int: def load_estimator(path: Path): sys.path.insert(0, str(path)) from estimator import SIS - from estimator.reduction import RC + from estimator.reduction import ADPS16 from sage.all import RealField, ZZ, log, oo - return SIS, RC, log, oo, ZZ, RealField + return SIS, ADPS16, log, oo, ZZ, RealField def family_entries(family: str) -> list[tuple[int, int]]: @@ -273,34 +224,32 @@ def select_entries(args: argparse.Namespace) -> list[tuple[int, int]]: return entries -def sis_length_bound(ZZ, RealField, width: int, collision: int): - """High-precision Euclidean SIS solution bound `sqrt(width * collision_l2_sq)`. +def sis_length_bound(ZZ, RealField, collision: int): + """High-precision Euclidean SIS solution bound `sqrt(collision_l2_sq)`. Build the integer product exactly, then convert it to an upward-rounded Sage real with precision scaled to the product size. This avoids Python's f64 `** 0.5` path while still giving lattice-estimator the numeric real it expects (rather than a symbolic `sqrt(...)` expression). """ - squared = ZZ(width) * ZZ(collision) + squared = ZZ(collision) precision = max(256, int(squared.nbits()) + 128) return RealField(precision, rnd="RNDU")(squared).sqrt() def estimate_bits( - SIS, RC, log, oo, ZZ, RealField, + SIS, ADPS16, log, oo, ZZ, RealField, q: int, d: int, rank: int, width: int, collision: int, ) -> float: - # `collision` is the per-ring-row squared Euclidean bound (collision_l2_sq). - # The SIS solution spans `width` ring rows, so the whole-vector Euclidean - # length bound is sqrt(width * collision_l2_sq). The SIS matrix still has - # m = width * d scalar columns and n = rank * d scalar rows. + # `collision` bounds the complete scalar collision vector across every + # input ring row. `width` affects m, but must not scale the norm again. n = rank * d m = width * d - length_bound = sis_length_bound(ZZ, RealField, width, collision) + length_bound = sis_length_bound(ZZ, RealField, collision) try: out = SIS.lattice( SIS.Parameters(n=n, q=q, m=m, length_bound=length_bound, norm=2, tag="sis_table"), - red_cost_model=RC.BDGL16, + red_cost_model=ADPS16(mode="quantum"), log_level=0, ) except ValueError as exc: @@ -314,7 +263,7 @@ def estimate_bits( def binary_search_max_width( - SIS, RC, log, oo, ZZ, RealField, + SIS, ADPS16, log, oo, ZZ, RealField, q: int, d: int, rank: int, collision: int, target_bits: float, search_cap: int, @@ -333,22 +282,22 @@ def binary_search_max_width( the common small-answer cells cheap (small `m = width*d`), instead of the cap-first binary search's ~log2(cap) huge-`m` probes per cell. """ - if estimate_bits(SIS, RC, log, oo, ZZ, RealField, q, d, rank, 1, collision) < target_bits: + if estimate_bits(SIS, ADPS16, log, oo, ZZ, RealField, q, d, rank, 1, collision) < target_bits: return 0 - if estimate_bits(SIS, RC, log, oo, ZZ, RealField, q, d, rank, search_cap, collision) >= target_bits: + if estimate_bits(SIS, ADPS16, log, oo, ZZ, RealField, q, d, rank, search_cap, collision) >= target_bits: return search_cap hi = 1 while True: nxt = min(hi * 2, search_cap) - if estimate_bits(SIS, RC, log, oo, ZZ, RealField, q, d, rank, nxt, collision) >= target_bits: + if estimate_bits(SIS, ADPS16, log, oo, ZZ, RealField, q, d, rank, nxt, collision) >= target_bits: hi = nxt continue lo, high = hi, nxt while lo < high - 1: mid = (lo + high) // 2 - if estimate_bits(SIS, RC, log, oo, ZZ, RealField, q, d, rank, mid, collision) >= target_bits: + if estimate_bits(SIS, ADPS16, log, oo, ZZ, RealField, q, d, rank, mid, collision) >= target_bits: lo = mid else: high = mid @@ -366,7 +315,7 @@ def print_provenance_header( print(f"// Generated by: sage -python scripts/gen_sis_table.py") print(f"// Family: {args.family.upper()}") print(f"// lattice-estimator: {remote} @ {sha}") - print(f"// Model: BDGL16, Euclidean (norm=2)") + print(f"// Model: ADPS16 quantum, Euclidean (norm=2)") print(f"// Representative q = {q_label}") print(f"// q = {q}") if args.search_cap is None: @@ -412,7 +361,7 @@ def run_entries( entries: list[tuple[int, int]], estimator_path: Path, ) -> list[tuple[int, int, list[int]]]: - SIS, RC, log, oo, ZZ, RealField = load_estimator(estimator_path) + SIS, ADPS16, log, oo, ZZ, RealField = load_estimator(estimator_path) family_q, _, _, _ = FAMILIES[args.family] q = args.q if args.q is not None else family_q @@ -428,7 +377,7 @@ def run_entries( for rank in range(1, args.max_rank + 1): t0 = time.time() w = binary_search_max_width( - SIS, RC, log, oo, ZZ, RealField, q, d, rank, collision, + SIS, ADPS16, log, oo, ZZ, RealField, q, d, rank, collision, args.target_bits, search_cap, ) elapsed = time.time() - t0 diff --git a/scripts/lattice_estimator_pin.py b/scripts/lattice_estimator_pin.py index 8629faa16..f5050c4c9 100644 --- a/scripts/lattice_estimator_pin.py +++ b/scripts/lattice_estimator_pin.py @@ -7,7 +7,8 @@ from pathlib import Path # malb/lattice-estimator#217 head; strict descendant of malb#213 @ 27a581b. -# Euclidean (BDGL16, norm=2) output is unchanged from 27a581b; infinity needs #217. +# Euclidean geometry is unchanged from 27a581b; Akita prices its required BKZ +# block size with ADPS16 quantum. Infinity needs #217. PINNED_LATTICE_ESTIMATOR_SHA = "c667a48546f140c3a5454c7503c3ca44a264cce2" diff --git a/scripts/profile_bench_report.py b/scripts/profile_bench_report.py index d531026c8..2897f6e9d 100644 --- a/scripts/profile_bench_report.py +++ b/scripts/profile_bench_report.py @@ -52,6 +52,7 @@ "extension_opening_partials_bytes", "extension_opening_sumcheck_bytes", "fold_grind_nonce_bytes", + "unchecked_l2_diagnostic_bytes", "opening_payload_bytes", "stage1_sumcheck_bytes", "stage1_interstage_claims_bytes", @@ -910,6 +911,9 @@ def extract_summary( "num_digits_outer": int(kvs.get("num_digits_outer") or kvs["delta_open"]), "num_digits_open": int(kvs.get("num_digits_open") or kvs["delta_open"]), "delta_fold": int(kvs["delta_fold"]), + "unchecked_l2_collision_sq": int( + kvs.get("unchecked_l2_collision_sq", "0") + ), "current_w_len": planned_current_w_len(kvs), "next_w_len": output_witness_len, "setup_prefix_natural_field_elements": int( @@ -2006,14 +2010,15 @@ def render_proof_levels( print() print( "| Fold level | Proof step | Fold-level bytes | Extension-opening partials | " - "Extension-opening sumcheck | Grinding nonce | Opening payload (`p_H`) | " + "Extension-opening sumcheck | Grinding nonce | Unchecked L2 diagnostic | " + "Opening payload (`p_H`) | " "Stage 1 sumcheck | Stage 1 transition claims | Range-image evaluation | " "Stage 2 sumcheck | Stage 3 sumcheck | Next-witness payload | " "Next-witness evaluation |" ) print( "| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | " - "---: | ---: | ---: |" + "---: | ---: | ---: | ---: |" ) for level in levels: baseline = level_by_index(baseline_levels, level["level"]) @@ -2029,6 +2034,7 @@ def render_proof_levels( f"{proof_component_value(level, baseline, 'extension_opening_partials_bytes')} | " f"{proof_component_value(level, baseline, 'extension_opening_sumcheck_bytes')} | " f"{proof_component_value(level, baseline, 'fold_grind_nonce_bytes')} | " + f"{proof_component_value(level, baseline, 'unchecked_l2_diagnostic_bytes')} | " f"{proof_component_value(level, baseline, 'opening_payload_bytes')} | " f"{proof_component_value(level, baseline, 'stage1_sumcheck_bytes')} | " f"{proof_component_value(level, baseline, 'stage1_interstage_claims_bytes')} | " diff --git a/scripts/sis_golden/README.md b/scripts/sis_golden/README.md index 80bf6c575..7cde72d09 100644 --- a/scripts/sis_golden/README.md +++ b/scripts/sis_golden/README.md @@ -30,12 +30,9 @@ sage -python scripts/sis_golden/check.py ## Euclidean comparison table regen -Generate the offline Euclidean comparison CSV. Do not use `--format rust-split` -for this command: that output shape is not the production L-infinity table. - -The generator uses `--max-rank 20`, the old 128-bit BDGL16 Euclidean profile, -and the same power-of-two plus derived `d * B^2` collision-key set as the legacy -Sage stitcher. This is not the production lookup path after the L∞ cutover. +Generate the Euclidean comparison CSV or the separate diagnostic L2 table. +The generator uses the 128 bit quantum ADPS16 profile. Its key is a power of +two bound on the squared norm of the complete scalar collision vector. For a row-oriented comparison artifact: @@ -45,6 +42,10 @@ cargo run -p akita-sis-estimator --release --features parallel \ --output /tmp/euclidean_width_table_rust.csv --format csv ``` +Full `rust-split` output writes +`crates/akita-types/src/sis/generated_l2_sis_table/`. It does not replace the +production infinity norm table in `generated_sis_table/`. + The full comparison CSV is a local audit artifact, not a committed source file. The production table is generated by the policy-aware `infinity_width_table` command below; Rust CI does not require Sage or an initialized submodule for it. diff --git a/scripts/sis_golden/golden.csv b/scripts/sis_golden/golden.csv index 81381a4bc..9a2b44494 100644 --- a/scripts/sis_golden/golden.csv +++ b/scripts/sis_golden/golden.csv @@ -1,62 +1,62 @@ q,d,collision,rank,max_width,target_bits,search_cap -4294967197,32,16384,1,4,128.0,10000000000 -4294967197,32,16384,5,492,128.0,10000000000 -4294967197,32,16384,20,4564249232,128.0,10000000000 -4294967197,32,65536,1,4,128.0,10000000000 -4294967197,32,65536,5,123,128.0,10000000000 -4294967197,32,65536,20,1141062308,128.0,10000000000 -4294967197,32,262144,1,3,128.0,10000000000 -4294967197,32,262144,5,30,128.0,10000000000 -4294967197,32,262144,20,285265577,128.0,10000000000 -4294967197,64,16384,1,5,128.0,10000000000 -4294967197,64,16384,5,375787,128.0,10000000000 +4294967197,32,16384,1,6,128.0,10000000000 +4294967197,32,16384,5,10000000000,128.0,10000000000 +4294967197,32,16384,20,10000000000,128.0,10000000000 +4294967197,32,65536,1,5,128.0,10000000000 +4294967197,32,65536,5,10000000000,128.0,10000000000 +4294967197,32,65536,20,10000000000,128.0,10000000000 +4294967197,32,262144,1,4,128.0,10000000000 +4294967197,32,262144,5,10000000000,128.0,10000000000 +4294967197,32,262144,20,10000000000,128.0,10000000000 +4294967197,64,16384,1,6,128.0,10000000000 +4294967197,64,16384,5,10000000000,128.0,10000000000 4294967197,64,16384,20,10000000000,128.0,10000000000 -4294967197,64,65536,1,4,128.0,10000000000 -4294967197,64,65536,5,93946,128.0,10000000000 +4294967197,64,65536,1,5,128.0,10000000000 +4294967197,64,65536,5,10000000000,128.0,10000000000 4294967197,64,65536,20,10000000000,128.0,10000000000 4294967197,64,1048576,1,3,128.0,10000000000 -4294967197,64,1048576,5,5871,128.0,10000000000 +4294967197,64,1048576,5,10000000000,128.0,10000000000 4294967197,64,1048576,20,10000000000,128.0,10000000000 -4294967197,128,16384,1,91,128.0,50000000000 -4294967197,128,16384,5,4564249232,128.0,50000000000 +4294967197,128,16384,1,50000000000,128.0,50000000000 +4294967197,128,16384,5,50000000000,128.0,50000000000 4294967197,128,16384,20,50000000000,128.0,50000000000 -4294967197,128,65536,1,22,128.0,50000000000 -4294967197,128,65536,5,1141062308,128.0,50000000000 +4294967197,128,65536,1,50000000000,128.0,50000000000 +4294967197,128,65536,5,50000000000,128.0,50000000000 4294967197,128,65536,20,50000000000,128.0,50000000000 -4294967197,256,16384,1,34061,128.0,10000000000 +4294967197,256,16384,1,10000000000,128.0,10000000000 4294967197,256,16384,5,10000000000,128.0,10000000000 4294967197,256,16384,20,10000000000,128.0,10000000000 -4294967197,256,65536,1,8515,128.0,10000000000 +4294967197,256,65536,1,10000000000,128.0,10000000000 4294967197,256,65536,5,10000000000,128.0,10000000000 4294967197,256,65536,20,10000000000,128.0,10000000000 -18446744073709551557,32,16384,1,9,128.0,10000000000 -18446744073709551557,32,16384,5,375787,128.0,10000000000 +18446744073709551557,32,16384,1,13,128.0,10000000000 +18446744073709551557,32,16384,5,10000000000,128.0,10000000000 18446744073709551557,32,16384,20,10000000000,128.0,10000000000 -18446744073709551557,32,65536,1,8,128.0,10000000000 -18446744073709551557,32,65536,5,93946,128.0,10000000000 +18446744073709551557,32,65536,1,11,128.0,10000000000 +18446744073709551557,32,65536,5,10000000000,128.0,10000000000 18446744073709551557,32,65536,20,10000000000,128.0,10000000000 -18446744073709551557,64,16384,1,91,128.0,10000000000 -18446744073709551557,64,16384,5,4564249308,128.0,10000000000 +18446744073709551557,64,16384,1,10000000000,128.0,10000000000 +18446744073709551557,64,16384,5,10000000000,128.0,10000000000 18446744073709551557,64,16384,20,10000000000,128.0,10000000000 -18446744073709551557,64,65536,1,22,128.0,10000000000 -18446744073709551557,64,65536,5,1141062327,128.0,10000000000 +18446744073709551557,64,65536,1,10000000000,128.0,10000000000 +18446744073709551557,64,65536,5,10000000000,128.0,10000000000 18446744073709551557,64,65536,20,10000000000,128.0,10000000000 -18446744073709551557,128,16384,1,34061,128.0,50000000000 +18446744073709551557,128,16384,1,50000000000,128.0,50000000000 18446744073709551557,128,16384,5,50000000000,128.0,50000000000 18446744073709551557,128,16384,20,50000000000,128.0,50000000000 -18446744073709551557,256,16384,1,151967359,128.0,10000000000 +18446744073709551557,256,16384,1,10000000000,128.0,10000000000 18446744073709551557,256,16384,5,10000000000,128.0,10000000000 18446744073709551557,256,16384,20,10000000000,128.0,10000000000 -340282366920938463463374607427473266697,32,16384,1,91,128.0,10000000000 -340282366920938463463374607427473266697,32,16384,5,4564249308,128.0,10000000000 +340282366920938463463374607427473266697,32,16384,1,10000000000,128.0,10000000000 +340282366920938463463374607427473266697,32,16384,5,10000000000,128.0,10000000000 340282366920938463463374607427473266697,32,16384,20,10000000000,128.0,10000000000 -340282366920938463463374607427473266697,32,65536,1,23,128.0,10000000000 -340282366920938463463374607427473266697,32,65536,5,1141062327,128.0,10000000000 +340282366920938463463374607427473266697,32,65536,1,10000000000,128.0,10000000000 +340282366920938463463374607427473266697,32,65536,5,10000000000,128.0,10000000000 340282366920938463463374607427473266697,32,65536,20,10000000000,128.0,10000000000 -340282366920938463463374607427473266697,64,16384,1,34061,128.0,10000000000 +340282366920938463463374607427473266697,64,16384,1,10000000000,128.0,10000000000 340282366920938463463374607427473266697,64,16384,5,10000000000,128.0,10000000000 340282366920938463463374607427473266697,64,16384,20,10000000000,128.0,10000000000 -340282366920938463463374607427473266697,128,16384,1,151967359,128.0,50000000000 +340282366920938463463374607427473266697,128,16384,1,50000000000,128.0,50000000000 340282366920938463463374607427473266697,128,16384,5,50000000000,128.0,50000000000 340282366920938463463374607427473266697,128,16384,20,50000000000,128.0,50000000000 340282366920938463463374607427473266697,256,16384,1,10000000000,128.0,10000000000 diff --git a/scripts/stitch_generated_sis_table.py b/scripts/stitch_generated_sis_table.py index 389894511..cdcd9e120 100644 --- a/scripts/stitch_generated_sis_table.py +++ b/scripts/stitch_generated_sis_table.py @@ -1,26 +1,19 @@ #!/usr/bin/env python3 -"""Regenerate and stitch `crates/akita-types/src/sis/generated_sis_table/`.""" +"""Regenerate and stitch the ADPS16 Euclidean SIS table.""" from __future__ import annotations import argparse import re -import shutil import subprocess import sys from pathlib import Path ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(ROOT / "scripts")) -from gen_sis_table import ( # noqa: E402 - PINNED_LATTICE_ESTIMATOR_SHA, - RING_DIMS, - assert_pinned_estimator, - derived_l2_collision_keys, -) +from gen_sis_table import PINNED_LATTICE_ESTIMATOR_SHA, assert_pinned_estimator # noqa: E402 -OUT_DIR = ROOT / "crates/akita-types/src/sis/generated_sis_table" -LEGACY_OUT = ROOT / "crates/akita-types/src/sis/generated_sis_table.rs" +OUT_DIR = ROOT / "crates/akita-types/src/sis/generated_l2_sis_table" GEN = ROOT / "scripts/gen_sis_table.py" ESTIMATOR = ROOT / "third_party/lattice-estimator" FAMILIES = ("q32", "q64", "q128") @@ -29,19 +22,13 @@ TABLE_HEADER = f"""// AUTO-GENERATED by scripts/stitch_generated_sis_table.py — do not edit by hand. // -// SIS width thresholds for 128-bit security (BDGL16, Euclidean norm=2). +// SIS width thresholds for 128-bit quantum security (ADPS16, Euclidean norm=2). // lattice-estimator: https://github.com/malb/lattice-estimator.git @ {PINNED_LATTICE_ESTIMATOR_SHA} -// Keys are the union of: -// - power-of-two squared-collision buckets (2^MIN_LOG_BUCKET .. 2^MAX_LOG_BUCKET) -// - derived keys K = d · B² for coefficient-L∞ buckets B (norm_bound default) -// See `MIN_LOG_BUCKET` / `MAX_LOG_BUCKET` / `COEFF_LINF_BUCKETS` in `sis/ajtai_key.rs`. +// Keys are whole-vector squared L2 collision bounds on a power-of-two ladder. // // Regen (full): // git submodule update --init third_party/lattice-estimator // sage -python scripts/stitch_generated_sis_table.py --jobs 6 -// -// Regen derived rows only (merge into existing table): -// sage -python scripts/stitch_generated_sis_table.py --supplement-derived-only --jobs 6 """ @@ -49,19 +36,6 @@ def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--jobs", type=int, default=6) parser.add_argument("--max-rank", type=int, default=20) - parser.add_argument( - "--supplement-derived-only", - action="store_true", - help=( - "Regenerate only derived d·B² rows and merge into the existing " - "generated table (skip the full power-of-two sweep)." - ), - ) - parser.add_argument( - "--split-existing", - action="store_true", - help="Split the legacy monolithic generated_sis_table.rs without Sage regen.", - ) parser.add_argument("--dry-run", action="store_true") return parser.parse_args() @@ -70,8 +44,6 @@ def run_family( family: str, jobs: int, max_rank: int, - *, - collisions: list[int] | None = None, ) -> str: cmd = [ "sage", @@ -88,15 +60,6 @@ def run_family( "--estimator-path", str(ESTIMATOR), ] - if collisions is not None: - cmd.extend( - [ - "--dims", - ",".join(str(d) for d in RING_DIMS), - "--collisions", - ",".join(str(c) for c in collisions), - ] - ) print(f"running: {' '.join(cmd)}", file=sys.stderr) proc = subprocess.run(cmd, cwd=ROOT, capture_output=True, text=True, check=False) if proc.returncode != 0: @@ -117,45 +80,6 @@ def parse_arms(block: str) -> dict[tuple[int, int], str]: return arms -def read_table_source() -> str | None: - if LEGACY_OUT.exists(): - return LEGACY_OUT.read_text() - mod_rs = OUT_DIR / "mod.rs" - if mod_rs.exists(): - return mod_rs.read_text() - return None - - -def parse_existing_family_arms(content: str, family: str) -> dict[tuple[int, int], str]: - family_path = OUT_DIR / f"{family}.rs" - if family_path.exists(): - content = family_path.read_text() - start = content.index("match (d, collision_l2_sq) {") - end = content.index("_ => None,", start) - return parse_arms(content[start:end]) - - enum_name = FAMILY_ENUM[family] - marker = f"SisModulusProfileId::{enum_name} => match (d, collision_l2_sq) {{" - start = content.index(marker) - end = content.index("_ => None,", start) - block = content[start:end] - return parse_arms(block) - - -def merge_family_blocks( - pow2_block: str | None, - derived_block: str, - existing: dict[tuple[int, int], str] | None = None, -) -> list[str]: - merged: dict[tuple[int, int], str] = {} - if existing is not None: - merged.update(existing) - if pow2_block is not None: - merged.update(parse_arms(pow2_block)) - merged.update(parse_arms(derived_block)) - return [merged[key] for key in sorted(merged)] - - def validate_rank_count(family: str, arm_lines: list[str], max_rank: int) -> None: for arm in arm_lines: match = ARM_RE.match(arm) @@ -222,58 +146,17 @@ def write_table(family_arm_lines: dict[str, list[str]], *, dry_run: bool) -> Non path = OUT_DIR / f"{family}.rs" path.write_text(stitch_family_file(family, family_arm_lines[family])) print(f"wrote {path} ({path.stat().st_size:,} bytes)", file=sys.stderr) - if LEGACY_OUT.exists(): - LEGACY_OUT.unlink() - print(f"removed legacy {LEGACY_OUT}", file=sys.stderr) - - -def split_existing_monolith() -> dict[str, list[str]]: - content = LEGACY_OUT.read_text() - return { - family: [ - parse_existing_family_arms(content, family)[key] - for key in sorted(parse_existing_family_arms(content, family)) - ] - for family in FAMILIES - } def main() -> None: args = parse_args() assert_pinned_estimator(ESTIMATOR) - if args.split_existing: - if not LEGACY_OUT.exists(): - raise SystemExit(f"missing legacy table at {LEGACY_OUT}") - family_arm_lines = split_existing_monolith() - for family, arm_lines in family_arm_lines.items(): - validate_rank_count(family, arm_lines, args.max_rank) - write_table(family_arm_lines, dry_run=args.dry_run) - return - - derived_keys = derived_l2_collision_keys() - existing_content = read_table_source() - family_arm_lines: dict[str, list[str]] = {} for family in FAMILIES: - if args.supplement_derived_only: - if existing_content is None and not (OUT_DIR / f"{family}.rs").exists(): - raise SystemExit(f"missing existing table under {OUT_DIR}") - source = existing_content or (OUT_DIR / "mod.rs").read_text() - existing_arms = parse_existing_family_arms(source, family) - derived_block = run_family( - family, args.jobs, args.max_rank, collisions=derived_keys - ) - family_arm_lines[family] = merge_family_blocks( - None, derived_block, existing=existing_arms - ) - else: - derived_block = run_family( - family, args.jobs, args.max_rank, collisions=derived_keys - ) - pow2_block = run_family(family, args.jobs, args.max_rank) - family_arm_lines[family] = merge_family_blocks(pow2_block, derived_block) - + block = run_family(family, args.jobs, args.max_rank) + arms = parse_arms(block) + family_arm_lines[family] = [arms[key] for key in sorted(arms)] validate_rank_count(family, family_arm_lines[family], args.max_rank) write_table(family_arm_lines, dry_run=args.dry_run) diff --git a/scripts/tests/test_profile_bench_report.py b/scripts/tests/test_profile_bench_report.py index 60e6d9324..c1d202a21 100644 --- a/scripts/tests/test_profile_bench_report.py +++ b/scripts/tests/test_profile_bench_report.py @@ -224,6 +224,7 @@ def test_planned_fold_level_parses_physical_geometry(self) -> None: "num_digits_outer": 5, "num_digits_open": 5, "delta_fold": 6, + "unchecked_l2_collision_sq": 0, # Legacy scalar `current_w_len` is not a group breakdown. "current_w_len": [], "next_w_len": 2048, @@ -341,13 +342,14 @@ def test_proof_breakdown_marks_absent_components(self) -> None: ) log = ( - 'INFO proof fold level label=onehot_fp128_d64 level=0 d=64 total_bytes=20 ' + 'INFO proof fold level label=onehot_fp128_d64 level=0 d=64 total_bytes=324 ' 'fold_grind_nonce_bytes=4 grind_nonce=3 grind_attempts=4 ' + 'unchecked_l2_diagnostic_bytes=304 ' 'stage1_range_image_evaluation_bytes=16 ' 'root_variant=terminal\n' ) levels = extract_summary(log, "onehot_fp128_d64", 24, 1)["proof_levels"] - self.assertEqual(proof_level_component_bytes(levels[0]), 20) + self.assertEqual(proof_level_component_bytes(levels[0]), 324) output = io.StringIO() with contextlib.redirect_stdout(output): @@ -355,6 +357,7 @@ def test_proof_breakdown_marks_absent_components(self) -> None: report = output.getvalue() self.assertIn("Fold-level bytes", report) + self.assertIn("Unchecked L2 diagnostic", report) self.assertIn("Range-image evaluation", report) self.assertIn("—", report) self.assertIn("+0.00% vs main", report) diff --git a/specs/sis-infinity-estimator-crate.md b/specs/sis-infinity-estimator-crate.md index 0e87640ef..94665c5c6 100644 --- a/specs/sis-infinity-estimator-crate.md +++ b/specs/sis-infinity-estimator-crate.md @@ -9,10 +9,10 @@ ## Summary -Akita currently generates SIS security tables through Sage and the pinned Python -`lattice-estimator` checkout. The current generated table path prices SIS with a -Euclidean norm bound and the `BDGL16` reduction cost model. That path is useful, -but it is not the main model we want for the next sizing work. +Akita generates its production infinity norm SIS table with the Rust estimator +and checks selected cells against the pinned Python `lattice-estimator`. The +separate Euclidean diagnostic table uses the 128 bit quantum `ADPS16` reduction +cost model. Akita does not use `BDGL16` to make an L2 security claim. We want a standalone Rust crate that implements the SIS lattice estimator API for infinity norm estimates first. The crate must expose a general API that is @@ -151,7 +151,8 @@ The crate must support: 1. `ADPS16`. This is the key Akita target. It prices BKZ as `2^(c * beta)` with modes `classical`, `quantum`, and `paranoid`. -2. `BDGL16`. This is the current Akita Euclidean table model. +2. `BDGL16`. Keep this model for general estimator API coverage and historical + replay. Do not use it for an Akita L2 security table. 3. `MATZOV`. This is the current default in `lattice-estimator`. @@ -754,14 +755,18 @@ Keep the Python replay path for audit until the new tables have been reviewed. Port Euclidean `norm=2` support after the infinity path is stable. -The Euclidean path should support the current table profile: +The Euclidean path uses this table profile: ```text norm = Euclidean -red_cost_model = BDGL16 -length_bound = sqrt(width * collision_l2_sq) +red_cost_model = ADPS16(mode = quantum) +length_bound = sqrt(collision_l2_sq) ``` +The value `collision_l2_sq` bounds the complete scalar collision vector across +all input ring rows. The matrix width changes the scalar column count `m`. It +must not multiply the norm again. + ## Table Design for Akita The current table key is: diff --git a/specs/weak-binding-norm-fix.md b/specs/weak-binding-norm-fix.md index 2b36c0526..14979b563 100644 --- a/specs/weak-binding-norm-fix.md +++ b/specs/weak-binding-norm-fix.md @@ -224,13 +224,16 @@ regenerating the SIS-floor security tables and one deferred follow-up: `collision_A = 2·ω̄·β̄·ν` reaches ~10^6 for the densest high-`ω` levels — far above the old maximum tabulated collision bucket (`2047`). The `akita_types::sis_floor` tables were regenerated with - `scripts/gen_sis_table.py` (lattice-estimator, BDGL16 + lgsa) for **all + `scripts/gen_sis_table.py` for **all families and dimensions (D = 32/64/128/256), ranks 1..=20, and collision buckets `2 … 1_048_575` (`2^k − 1` up to `2^20 − 1`)**. The estimator's `sis_lattice.cost_euclidean` trivial-easy bound is evaluated in log-space to avoid a float overflow at high rank / large `q` (an exact reformulation of its `min(term1, term2)`); all pre-existing table values are reproduced bit-for-bit. + This sentence records the historical 2026-06-02 regeneration. The current + L2 diagnostic uses the 128 bit quantum ADPS16 model and a whole-vector + squared norm key. - **Q16 dense presets ship cleartext-only.** The 16-bit modulus cannot securely commit the dense fold-witness widths at the corrected collision norms (the SIS-secure widths it admits are too small), so `fp16::*Full`