From cb48e168461d9176816c125cb969a54d25f35c0b Mon Sep 17 00:00:00 2001 From: Rohit Pujar Nagraj Date: Thu, 13 Aug 2026 16:03:02 -0700 Subject: [PATCH 1/4] feat(config): add DSV4 GB300 Dynamo TRT AgentX recipes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加 DeepSeek-V4-Pro GB300 Dynamo TensorRT-LLM AgentX 配置与配套配方。 --- ...agg-gb300-1p1d-dep8-dep32-c206-b2-mtp.yaml | 178 ++++++++++++++++ ...agg-gb300-1p1d-dep8-dep32-c388-b4-mtp.yaml | 178 ++++++++++++++++ ...disagg-gb300-1p4d-dep4-tep8-c4-b1-mtp.yaml | 176 +++++++++++++++ ...isagg-gb300-1p6d-dep4-tep4-c12-b4-mtp.yaml | 176 +++++++++++++++ ...isagg-gb300-1p6d-dep4-tep4-c24-b4-mtp.yaml | 176 +++++++++++++++ ...agg-gb300-2p1d-dep8-dep32-c736-b8-mtp.yaml | 179 ++++++++++++++++ ...g-gb300-3p1d-dep8-dep16-c1152-b32-mtp.yaml | 185 ++++++++++++++++ ...g-gb300-4p1d-dep8-dep32-c1389-b16-mtp.yaml | 181 ++++++++++++++++ ...g-gb300-5p1d-dep8-dep16-c1978-b64-mtp.yaml | 193 +++++++++++++++++ ...g-gb300-5p1d-dep8-dep16-c2626-b96-mtp.yaml | 201 ++++++++++++++++++ .../moe_load_balancer_ctx_ep8_slots384.yaml | 65 ++++++ .../moe_load_balancer_gen_ep16_slots384.yaml | 65 ++++++ .../moe_load_balancer_gen_ep32_slots384.yaml | 65 ++++++ configs/nvidia-master.yaml | 155 ++++++++++++++ perf-changelog.yaml | 10 + runners/launch_gb300-nv.sh | 16 +- 16 files changed, 2198 insertions(+), 1 deletion(-) create mode 100644 benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p1d-dep8-dep32-c206-b2-mtp.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p1d-dep8-dep32-c388-b4-mtp.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p4d-dep4-tep8-c4-b1-mtp.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p6d-dep4-tep4-c12-b4-mtp.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p6d-dep4-tep4-c24-b4-mtp.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-2p1d-dep8-dep32-c736-b8-mtp.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-3p1d-dep8-dep16-c1152-b32-mtp.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-4p1d-dep8-dep32-c1389-b16-mtp.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-5p1d-dep8-dep16-c1978-b64-mtp.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-5p1d-dep8-dep16-c2626-b96-mtp.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_ctx_ep8_slots384.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep16_slots384.yaml create mode 100644 benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep32_slots384.yaml diff --git a/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p1d-dep8-dep32-c206-b2-mtp.yaml b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p1d-dep8-dep32-c206-b2-mtp.yaml new file mode 100644 index 0000000000..16bcc2d18e --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p1d-dep8-dep32-c206-b2-mtp.yaml @@ -0,0 +1,178 @@ +name: dynamo-disagg-gb300-1p1d-dep8-dep32-c206-b2-mtp +model: + path: deepseek-ai/DeepSeek-V4-Pro + container: nvcr.io#nvidia/tensorrt-llm/release:1.3.0rc24 + precision: fp4 +identity: + model: + repo: deepseek-ai/DeepSeek-V4-Pro + container: + image: nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc24 + frameworks: + dynamo: 1.4.0.dev20260807 + tensorrt_llm: 1.3.0rc24 +dynamo: + install: true + wheel: 1.4.0.dev20260807 + request_plane: tcp +health_check: + max_attempts: 1440 + interval_seconds: 10 +resources: + gpu_type: gb300 + gpus_per_node: 4 + prefill_nodes: 2 + prefill_workers: 1 + gpus_per_prefill: 8 + decode_nodes: 8 + decode_workers: 1 + gpus_per_decode: 32 +backend: + type: trtllm + prefill_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + PYTORCH_CUDA_ALLOC_CONF: expandable_segments:True + CUDA_SCALE_LAUNCH_QUEUES: 4x + decode_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + trtllm_config: + prefill: + attention_dp_config: + kv_cache_routing_conversation_affinity: true + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: null + custom_tokenizer: deepseek_v4 + disable_overlap_scheduler: false + enable_attention_dp: true + enable_chunked_prefill: true + kv_cache_config: + dtype: fp8 + enable_block_reuse: true + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.8 + host_cache_size: 193273528320 + pool_ratio: + - 0.55 + - 0.22 + - 0.23 + tokens_per_block: 128 + block_reuse_config: + policy: per_conversation + max_num_turns: 5 + max_batch_size: 256 + max_num_tokens: 16384 + max_seq_len: 990016 + moe_config: + backend: TRTLLM + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_ctx_ep8_slots384.yaml + moe_expert_parallel_size: 8 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + scheduler_config: + capacity_scheduler_policy: MAX_UTILIZATION + speculative_config: + decoding_type: MTP + max_draft_len: 3 + tensor_parallel_size: 8 + decode: + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: + batch_sizes: + - 1 + - 2 + - 4 + enable_padding: true + custom_tokenizer: deepseek_v4 + enable_attention_dp: true + enable_lm_head_tp_in_adp: true + kv_cache_config: + avg_seq_len: 200000 + dtype: fp8 + enable_block_reuse: false + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.7 + host_cache_size: 0 + tokens_per_block: 128 + max_batch_size: 2 + max_num_tokens: 8 + max_seq_len: 996595 + moe_config: + backend: MEGAMOE_DEEPGEMM + use_low_precision_moe_combine: true + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep32_slots384.yaml + moe_expert_parallel_size: 32 + num_postprocess_workers: 4 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + sparse_attention_config: + algorithm: deepseek_v4 + enable_heuristic_topk: true + speculative_config: + decoding_type: MTP + max_draft_len: 3 + stream_interval: 20 + tensor_parallel_size: 32 + publish_events_and_metrics: false +frontend: + type: dynamo + enable_multiple_frontends: false + env: + ETCD_LEASE_TTL: '120' + DYN_ROUTER_QUEUE_THRESHOLD: None + DYN_TOKENIZER_CACHE: '1' + DYN_TOKENIZER_CACHE_BYTES: '8000000000' + DYN_TOKENIZER: fastokens + DYN_ROUTER_SESSION_AFFINITY_TTL_SECS: '14400' + args: + router-mode: kv + no-kv-events: true + active-decode-blocks-threshold: None + active-prefill-tokens-threshold: None + active-prefill-tokens-threshold-frac: None + orchestrator_placement: first_decode +benchmark: + type: custom + use_chat_template: true + command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh + env: + INFMAX_CONTAINER_WORKSPACE: /infmax-workspace + RESULT_DIR: /logs/agentic + PORT: '8000' + IS_MULTINODE: 'true' + AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: '14400' + AIPERF_HTTP_X_DYNAMO_SESSION_ID_FROM_CORRELATION_ID: 'true' + AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: '0' + AIPERF_DATASET_MMAP_CACHE_DIR: /aiperf_mmap_cache + HF_HUB_CACHE: /hf_hub_cache + WEKA_LOADER_OVERRIDE: semianalysis_cc_traces_weka_062126 + SERVED_MODEL_NAME: DeepSeek-V4-Pro diff --git a/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p1d-dep8-dep32-c388-b4-mtp.yaml b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p1d-dep8-dep32-c388-b4-mtp.yaml new file mode 100644 index 0000000000..92e9a19631 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p1d-dep8-dep32-c388-b4-mtp.yaml @@ -0,0 +1,178 @@ +name: dynamo-disagg-gb300-1p1d-dep8-dep32-c388-b4-mtp +model: + path: deepseek-ai/DeepSeek-V4-Pro + container: nvcr.io#nvidia/tensorrt-llm/release:1.3.0rc24 + precision: fp4 +identity: + model: + repo: deepseek-ai/DeepSeek-V4-Pro + container: + image: nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc24 + frameworks: + dynamo: 1.4.0.dev20260807 + tensorrt_llm: 1.3.0rc24 +dynamo: + install: true + wheel: 1.4.0.dev20260807 + request_plane: tcp +health_check: + max_attempts: 1440 + interval_seconds: 10 +resources: + gpu_type: gb300 + gpus_per_node: 4 + prefill_nodes: 2 + prefill_workers: 1 + gpus_per_prefill: 8 + decode_nodes: 8 + decode_workers: 1 + gpus_per_decode: 32 +backend: + type: trtllm + prefill_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + PYTORCH_CUDA_ALLOC_CONF: expandable_segments:True + CUDA_SCALE_LAUNCH_QUEUES: 4x + decode_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + trtllm_config: + prefill: + attention_dp_config: + kv_cache_routing_conversation_affinity: true + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: null + custom_tokenizer: deepseek_v4 + disable_overlap_scheduler: false + enable_attention_dp: true + enable_chunked_prefill: true + kv_cache_config: + dtype: fp8 + enable_block_reuse: true + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.8 + host_cache_size: 193273528320 + pool_ratio: + - 0.55 + - 0.22 + - 0.23 + tokens_per_block: 128 + block_reuse_config: + policy: per_conversation + max_num_turns: 5 + max_batch_size: 256 + max_num_tokens: 16384 + max_seq_len: 990016 + moe_config: + backend: TRTLLM + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_ctx_ep8_slots384.yaml + moe_expert_parallel_size: 8 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + scheduler_config: + capacity_scheduler_policy: MAX_UTILIZATION + speculative_config: + decoding_type: MTP + max_draft_len: 3 + tensor_parallel_size: 8 + decode: + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: + batch_sizes: + - 1 + - 2 + - 4 + enable_padding: true + custom_tokenizer: deepseek_v4 + enable_attention_dp: true + enable_lm_head_tp_in_adp: true + kv_cache_config: + avg_seq_len: 200000 + dtype: fp8 + enable_block_reuse: false + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.7 + host_cache_size: 0 + tokens_per_block: 128 + max_batch_size: 4 + max_num_tokens: 16 + max_seq_len: 996595 + moe_config: + backend: MEGAMOE_DEEPGEMM + use_low_precision_moe_combine: true + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep32_slots384.yaml + moe_expert_parallel_size: 32 + num_postprocess_workers: 4 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + sparse_attention_config: + algorithm: deepseek_v4 + enable_heuristic_topk: true + speculative_config: + decoding_type: MTP + max_draft_len: 3 + stream_interval: 20 + tensor_parallel_size: 32 + publish_events_and_metrics: false +frontend: + type: dynamo + enable_multiple_frontends: false + env: + ETCD_LEASE_TTL: '120' + DYN_ROUTER_QUEUE_THRESHOLD: None + DYN_TOKENIZER_CACHE: '1' + DYN_TOKENIZER_CACHE_BYTES: '8000000000' + DYN_TOKENIZER: fastokens + DYN_ROUTER_SESSION_AFFINITY_TTL_SECS: '14400' + args: + router-mode: kv + no-kv-events: true + active-decode-blocks-threshold: None + active-prefill-tokens-threshold: None + active-prefill-tokens-threshold-frac: None + orchestrator_placement: first_decode +benchmark: + type: custom + use_chat_template: true + command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh + env: + INFMAX_CONTAINER_WORKSPACE: /infmax-workspace + RESULT_DIR: /logs/agentic + PORT: '8000' + IS_MULTINODE: 'true' + AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: '14400' + AIPERF_HTTP_X_DYNAMO_SESSION_ID_FROM_CORRELATION_ID: 'true' + AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: '0' + AIPERF_DATASET_MMAP_CACHE_DIR: /aiperf_mmap_cache + HF_HUB_CACHE: /hf_hub_cache + WEKA_LOADER_OVERRIDE: semianalysis_cc_traces_weka_062126 + SERVED_MODEL_NAME: DeepSeek-V4-Pro diff --git a/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p4d-dep4-tep8-c4-b1-mtp.yaml b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p4d-dep4-tep8-c4-b1-mtp.yaml new file mode 100644 index 0000000000..79f99965b0 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p4d-dep4-tep8-c4-b1-mtp.yaml @@ -0,0 +1,176 @@ +name: dynamo-disagg-gb300-1p4d-dep4-tep8-c4-b1-mtp +model: + path: deepseek-ai/DeepSeek-V4-Pro + container: nvcr.io#nvidia/tensorrt-llm/release:1.3.0rc24 + precision: fp4 +identity: + model: + repo: deepseek-ai/DeepSeek-V4-Pro + container: + image: nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc24 + frameworks: + dynamo: 1.4.0.dev20260807 + tensorrt_llm: 1.3.0rc24 +dynamo: + install: true + wheel: 1.4.0.dev20260807 + request_plane: tcp +health_check: + max_attempts: 1440 + interval_seconds: 10 +resources: + gpu_type: gb300 + gpus_per_node: 4 + prefill_nodes: 1 + prefill_workers: 1 + gpus_per_prefill: 4 + decode_nodes: 8 + decode_workers: 4 + gpus_per_decode: 8 +backend: + type: trtllm + prefill_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + PYTORCH_CUDA_ALLOC_CONF: expandable_segments:True + CUDA_SCALE_LAUNCH_QUEUES: 4x + decode_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + trtllm_config: + prefill: + attention_dp_config: + kv_cache_routing_conversation_affinity: true + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: null + custom_tokenizer: deepseek_v4 + disable_overlap_scheduler: false + enable_attention_dp: true + enable_chunked_prefill: true + kv_cache_config: + dtype: fp8 + enable_block_reuse: true + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.8 + host_cache_size: 193273528320 + pool_ratio: + - 0.55 + - 0.22 + - 0.23 + tokens_per_block: 128 + block_reuse_config: + policy: per_conversation + max_num_turns: 5 + max_batch_size: 128 + max_num_tokens: 4096 + max_seq_len: 990016 + moe_config: + backend: TRTLLM + moe_expert_parallel_size: 4 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + scheduler_config: + capacity_scheduler_policy: MAX_UTILIZATION + speculative_config: + decoding_type: MTP + max_draft_len: 3 + tensor_parallel_size: 4 + decode: + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: + batch_sizes: + - 1 + - 2 + - 4 + enable_padding: true + custom_tokenizer: deepseek_v4 + enable_attention_dp: false + enable_lm_head_tp_in_adp: false + kv_cache_config: + avg_seq_len: 200000 + dtype: fp8 + enable_block_reuse: false + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.9 + host_cache_size: 0 + tokens_per_block: 128 + max_batch_size: 1 + max_num_tokens: 4 + max_seq_len: 996595 + moe_config: + backend: TRTLLM + use_low_precision_moe_combine: true + moe_expert_parallel_size: 8 + num_postprocess_workers: 4 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + sparse_attention_config: + algorithm: deepseek_v4 + enable_heuristic_topk: true + speculative_config: + decoding_type: MTP + max_draft_len: 3 + stream_interval: 20 + tensor_parallel_size: 8 + publish_events_and_metrics: false +frontend: + type: dynamo + enable_multiple_frontends: false + env: + ETCD_LEASE_TTL: '120' + DYN_ROUTER_QUEUE_THRESHOLD: None + DYN_TOKENIZER_CACHE: '1' + DYN_TOKENIZER_CACHE_BYTES: '8000000000' + DYN_TOKENIZER: fastokens + DYN_ROUTER_SESSION_AFFINITY_TTL_SECS: '14400' + args: + router-mode: kv + no-kv-events: true + active-decode-blocks-threshold: None + active-prefill-tokens-threshold: None + active-prefill-tokens-threshold-frac: None + orchestrator_placement: first_decode +benchmark: + type: custom + use_chat_template: true + command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh + env: + INFMAX_CONTAINER_WORKSPACE: /infmax-workspace + RESULT_DIR: /logs/agentic + PORT: '8000' + IS_MULTINODE: 'true' + AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: '14400' + AIPERF_HTTP_X_DYNAMO_SESSION_ID_FROM_CORRELATION_ID: 'true' + AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: '0' + AIPERF_DATASET_MMAP_CACHE_DIR: /aiperf_mmap_cache + HF_HUB_CACHE: /hf_hub_cache + WEKA_LOADER_OVERRIDE: semianalysis_cc_traces_weka_062126 + SERVED_MODEL_NAME: DeepSeek-V4-Pro diff --git a/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p6d-dep4-tep4-c12-b4-mtp.yaml b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p6d-dep4-tep4-c12-b4-mtp.yaml new file mode 100644 index 0000000000..e3f0c6214b --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p6d-dep4-tep4-c12-b4-mtp.yaml @@ -0,0 +1,176 @@ +name: dynamo-disagg-gb300-1p6d-dep4-tep4-c12-b4-mtp +model: + path: deepseek-ai/DeepSeek-V4-Pro + container: nvcr.io#nvidia/tensorrt-llm/release:1.3.0rc24 + precision: fp4 +identity: + model: + repo: deepseek-ai/DeepSeek-V4-Pro + container: + image: nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc24 + frameworks: + dynamo: 1.4.0.dev20260807 + tensorrt_llm: 1.3.0rc24 +dynamo: + install: true + wheel: 1.4.0.dev20260807 + request_plane: tcp +health_check: + max_attempts: 1440 + interval_seconds: 10 +resources: + gpu_type: gb300 + gpus_per_node: 4 + prefill_nodes: 1 + prefill_workers: 1 + gpus_per_prefill: 4 + decode_nodes: 6 + decode_workers: 6 + gpus_per_decode: 4 +backend: + type: trtllm + prefill_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + PYTORCH_CUDA_ALLOC_CONF: expandable_segments:True + CUDA_SCALE_LAUNCH_QUEUES: 4x + decode_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + trtllm_config: + prefill: + attention_dp_config: + kv_cache_routing_conversation_affinity: true + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: null + custom_tokenizer: deepseek_v4 + disable_overlap_scheduler: false + enable_attention_dp: true + enable_chunked_prefill: true + kv_cache_config: + dtype: fp8 + enable_block_reuse: true + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.8 + host_cache_size: 193273528320 + pool_ratio: + - 0.55 + - 0.22 + - 0.23 + tokens_per_block: 128 + block_reuse_config: + policy: per_conversation + max_num_turns: 5 + max_batch_size: 128 + max_num_tokens: 4096 + max_seq_len: 990016 + moe_config: + backend: TRTLLM + moe_expert_parallel_size: 4 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + scheduler_config: + capacity_scheduler_policy: MAX_UTILIZATION + speculative_config: + decoding_type: MTP + max_draft_len: 3 + tensor_parallel_size: 4 + decode: + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: + batch_sizes: + - 1 + - 2 + - 4 + enable_padding: true + custom_tokenizer: deepseek_v4 + enable_attention_dp: false + enable_lm_head_tp_in_adp: false + kv_cache_config: + avg_seq_len: 200000 + dtype: fp8 + enable_block_reuse: false + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.9 + host_cache_size: 0 + tokens_per_block: 128 + max_batch_size: 4 + max_num_tokens: 16 + max_seq_len: 996595 + moe_config: + backend: TRTLLM + use_low_precision_moe_combine: true + moe_expert_parallel_size: 4 + num_postprocess_workers: 4 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + sparse_attention_config: + algorithm: deepseek_v4 + enable_heuristic_topk: true + speculative_config: + decoding_type: MTP + max_draft_len: 3 + stream_interval: 20 + tensor_parallel_size: 4 + publish_events_and_metrics: false +frontend: + type: dynamo + enable_multiple_frontends: false + env: + ETCD_LEASE_TTL: '120' + DYN_ROUTER_QUEUE_THRESHOLD: None + DYN_TOKENIZER_CACHE: '1' + DYN_TOKENIZER_CACHE_BYTES: '8000000000' + DYN_TOKENIZER: fastokens + DYN_ROUTER_SESSION_AFFINITY_TTL_SECS: '14400' + args: + router-mode: kv + no-kv-events: true + active-decode-blocks-threshold: None + active-prefill-tokens-threshold: None + active-prefill-tokens-threshold-frac: None + orchestrator_placement: first_decode +benchmark: + type: custom + use_chat_template: true + command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh + env: + INFMAX_CONTAINER_WORKSPACE: /infmax-workspace + RESULT_DIR: /logs/agentic + PORT: '8000' + IS_MULTINODE: 'true' + AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: '14400' + AIPERF_HTTP_X_DYNAMO_SESSION_ID_FROM_CORRELATION_ID: 'true' + AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: '0' + AIPERF_DATASET_MMAP_CACHE_DIR: /aiperf_mmap_cache + HF_HUB_CACHE: /hf_hub_cache + WEKA_LOADER_OVERRIDE: semianalysis_cc_traces_weka_062126 + SERVED_MODEL_NAME: DeepSeek-V4-Pro diff --git a/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p6d-dep4-tep4-c24-b4-mtp.yaml b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p6d-dep4-tep4-c24-b4-mtp.yaml new file mode 100644 index 0000000000..0b8cfddd1b --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p6d-dep4-tep4-c24-b4-mtp.yaml @@ -0,0 +1,176 @@ +name: dynamo-disagg-gb300-1p6d-dep4-tep4-c24-b4-mtp +model: + path: deepseek-ai/DeepSeek-V4-Pro + container: nvcr.io#nvidia/tensorrt-llm/release:1.3.0rc24 + precision: fp4 +identity: + model: + repo: deepseek-ai/DeepSeek-V4-Pro + container: + image: nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc24 + frameworks: + dynamo: 1.4.0.dev20260807 + tensorrt_llm: 1.3.0rc24 +dynamo: + install: true + wheel: 1.4.0.dev20260807 + request_plane: tcp +health_check: + max_attempts: 1440 + interval_seconds: 10 +resources: + gpu_type: gb300 + gpus_per_node: 4 + prefill_nodes: 1 + prefill_workers: 1 + gpus_per_prefill: 4 + decode_nodes: 6 + decode_workers: 6 + gpus_per_decode: 4 +backend: + type: trtllm + prefill_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + PYTORCH_CUDA_ALLOC_CONF: expandable_segments:True + CUDA_SCALE_LAUNCH_QUEUES: 4x + decode_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + trtllm_config: + prefill: + attention_dp_config: + kv_cache_routing_conversation_affinity: true + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: null + custom_tokenizer: deepseek_v4 + disable_overlap_scheduler: false + enable_attention_dp: true + enable_chunked_prefill: true + kv_cache_config: + dtype: fp8 + enable_block_reuse: true + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.8 + host_cache_size: 193273528320 + pool_ratio: + - 0.55 + - 0.22 + - 0.23 + tokens_per_block: 128 + block_reuse_config: + policy: per_conversation + max_num_turns: 5 + max_batch_size: 128 + max_num_tokens: 4096 + max_seq_len: 990016 + moe_config: + backend: TRTLLM + moe_expert_parallel_size: 4 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + scheduler_config: + capacity_scheduler_policy: MAX_UTILIZATION + speculative_config: + decoding_type: MTP + max_draft_len: 3 + tensor_parallel_size: 4 + decode: + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: + batch_sizes: + - 1 + - 2 + - 4 + enable_padding: true + custom_tokenizer: deepseek_v4 + enable_attention_dp: false + enable_lm_head_tp_in_adp: false + kv_cache_config: + avg_seq_len: 200000 + dtype: fp8 + enable_block_reuse: false + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.9 + host_cache_size: 0 + tokens_per_block: 128 + max_batch_size: 4 + max_num_tokens: 16 + max_seq_len: 996595 + moe_config: + backend: TRTLLM + use_low_precision_moe_combine: true + moe_expert_parallel_size: 4 + num_postprocess_workers: 4 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + sparse_attention_config: + algorithm: deepseek_v4 + enable_heuristic_topk: true + speculative_config: + decoding_type: MTP + max_draft_len: 3 + stream_interval: 20 + tensor_parallel_size: 4 + publish_events_and_metrics: false +frontend: + type: dynamo + enable_multiple_frontends: false + env: + ETCD_LEASE_TTL: '120' + DYN_ROUTER_QUEUE_THRESHOLD: None + DYN_TOKENIZER_CACHE: '1' + DYN_TOKENIZER_CACHE_BYTES: '8000000000' + DYN_TOKENIZER: fastokens + DYN_ROUTER_SESSION_AFFINITY_TTL_SECS: '14400' + args: + router-mode: kv + no-kv-events: true + active-decode-blocks-threshold: None + active-prefill-tokens-threshold: None + active-prefill-tokens-threshold-frac: None + orchestrator_placement: first_decode +benchmark: + type: custom + use_chat_template: true + command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh + env: + INFMAX_CONTAINER_WORKSPACE: /infmax-workspace + RESULT_DIR: /logs/agentic + PORT: '8000' + IS_MULTINODE: 'true' + AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: '14400' + AIPERF_HTTP_X_DYNAMO_SESSION_ID_FROM_CORRELATION_ID: 'true' + AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: '0' + AIPERF_DATASET_MMAP_CACHE_DIR: /aiperf_mmap_cache + HF_HUB_CACHE: /hf_hub_cache + WEKA_LOADER_OVERRIDE: semianalysis_cc_traces_weka_062126 + SERVED_MODEL_NAME: DeepSeek-V4-Pro diff --git a/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-2p1d-dep8-dep32-c736-b8-mtp.yaml b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-2p1d-dep8-dep32-c736-b8-mtp.yaml new file mode 100644 index 0000000000..de8a05c2af --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-2p1d-dep8-dep32-c736-b8-mtp.yaml @@ -0,0 +1,179 @@ +name: dynamo-disagg-gb300-2p1d-dep8-dep32-c736-b8-mtp +model: + path: deepseek-ai/DeepSeek-V4-Pro + container: nvcr.io#nvidia/tensorrt-llm/release:1.3.0rc24 + precision: fp4 +identity: + model: + repo: deepseek-ai/DeepSeek-V4-Pro + container: + image: nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc24 + frameworks: + dynamo: 1.4.0.dev20260807 + tensorrt_llm: 1.3.0rc24 +dynamo: + install: true + wheel: 1.4.0.dev20260807 + request_plane: tcp +health_check: + max_attempts: 1440 + interval_seconds: 10 +resources: + gpu_type: gb300 + gpus_per_node: 4 + prefill_nodes: 4 + prefill_workers: 2 + gpus_per_prefill: 8 + decode_nodes: 8 + decode_workers: 1 + gpus_per_decode: 32 +backend: + type: trtllm + prefill_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + PYTORCH_CUDA_ALLOC_CONF: expandable_segments:True + CUDA_SCALE_LAUNCH_QUEUES: 4x + decode_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + trtllm_config: + prefill: + attention_dp_config: + kv_cache_routing_conversation_affinity: true + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: null + custom_tokenizer: deepseek_v4 + disable_overlap_scheduler: false + enable_attention_dp: true + enable_chunked_prefill: true + kv_cache_config: + dtype: fp8 + enable_block_reuse: true + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.8 + host_cache_size: 193273528320 + pool_ratio: + - 0.55 + - 0.22 + - 0.23 + tokens_per_block: 128 + block_reuse_config: + policy: per_conversation + max_num_turns: 5 + max_batch_size: 256 + max_num_tokens: 16384 + max_seq_len: 990016 + moe_config: + backend: TRTLLM + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_ctx_ep8_slots384.yaml + moe_expert_parallel_size: 8 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + scheduler_config: + capacity_scheduler_policy: MAX_UTILIZATION + speculative_config: + decoding_type: MTP + max_draft_len: 3 + tensor_parallel_size: 8 + decode: + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: + batch_sizes: + - 1 + - 2 + - 4 + - 8 + enable_padding: true + custom_tokenizer: deepseek_v4 + enable_attention_dp: true + enable_lm_head_tp_in_adp: true + kv_cache_config: + avg_seq_len: 200000 + dtype: fp8 + enable_block_reuse: false + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.7 + host_cache_size: 0 + tokens_per_block: 128 + max_batch_size: 8 + max_num_tokens: 32 + max_seq_len: 996595 + moe_config: + backend: MEGAMOE_DEEPGEMM + use_low_precision_moe_combine: true + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep32_slots384.yaml + moe_expert_parallel_size: 32 + num_postprocess_workers: 4 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + sparse_attention_config: + algorithm: deepseek_v4 + enable_heuristic_topk: true + speculative_config: + decoding_type: MTP + max_draft_len: 3 + stream_interval: 20 + tensor_parallel_size: 32 + publish_events_and_metrics: false +frontend: + type: dynamo + enable_multiple_frontends: false + env: + ETCD_LEASE_TTL: '120' + DYN_ROUTER_QUEUE_THRESHOLD: None + DYN_TOKENIZER_CACHE: '1' + DYN_TOKENIZER_CACHE_BYTES: '8000000000' + DYN_TOKENIZER: fastokens + DYN_ROUTER_SESSION_AFFINITY_TTL_SECS: '14400' + args: + router-mode: kv + no-kv-events: true + active-decode-blocks-threshold: None + active-prefill-tokens-threshold: None + active-prefill-tokens-threshold-frac: None + orchestrator_placement: first_decode +benchmark: + type: custom + use_chat_template: true + command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh + env: + INFMAX_CONTAINER_WORKSPACE: /infmax-workspace + RESULT_DIR: /logs/agentic + PORT: '8000' + IS_MULTINODE: 'true' + AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: '14400' + AIPERF_HTTP_X_DYNAMO_SESSION_ID_FROM_CORRELATION_ID: 'true' + AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: '0' + AIPERF_DATASET_MMAP_CACHE_DIR: /aiperf_mmap_cache + HF_HUB_CACHE: /hf_hub_cache + WEKA_LOADER_OVERRIDE: semianalysis_cc_traces_weka_062126 + SERVED_MODEL_NAME: DeepSeek-V4-Pro diff --git a/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-3p1d-dep8-dep16-c1152-b32-mtp.yaml b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-3p1d-dep8-dep16-c1152-b32-mtp.yaml new file mode 100644 index 0000000000..313f6d4361 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-3p1d-dep8-dep16-c1152-b32-mtp.yaml @@ -0,0 +1,185 @@ +name: dynamo-disagg-gb300-3p1d-dep8-dep16-c1152-b32-mtp +model: + path: deepseek-ai/DeepSeek-V4-Pro + container: nvcr.io#nvidia/tensorrt-llm/release:1.3.0rc24 + precision: fp4 +identity: + model: + repo: deepseek-ai/DeepSeek-V4-Pro + container: + image: nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc24 + frameworks: + dynamo: 1.4.0.dev20260807 + tensorrt_llm: 1.3.0rc24 +dynamo: + install: true + wheel: 1.4.0.dev20260807 + request_plane: tcp +health_check: + max_attempts: 1440 + interval_seconds: 10 +resources: + gpu_type: gb300 + gpus_per_node: 4 + prefill_nodes: 6 + prefill_workers: 3 + gpus_per_prefill: 8 + decode_nodes: 4 + decode_workers: 1 + gpus_per_decode: 16 +backend: + type: trtllm + prefill_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + PYTORCH_CUDA_ALLOC_CONF: expandable_segments:True + CUDA_SCALE_LAUNCH_QUEUES: 4x + decode_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + trtllm_config: + prefill: + attention_dp_config: + kv_cache_routing_conversation_affinity: true + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: null + custom_tokenizer: deepseek_v4 + disable_overlap_scheduler: false + enable_attention_dp: true + enable_chunked_prefill: true + kv_cache_config: + dtype: fp8 + enable_block_reuse: true + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.8 + host_cache_size: 193273528320 + pool_ratio: + - 0.55 + - 0.22 + - 0.23 + tokens_per_block: 128 + block_reuse_config: + policy: per_conversation + max_num_turns: 5 + max_batch_size: 256 + max_num_tokens: 16384 + max_seq_len: 990016 + moe_config: + backend: TRTLLM + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_ctx_ep8_slots384.yaml + moe_expert_parallel_size: 8 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + scheduler_config: + capacity_scheduler_policy: MAX_UTILIZATION + speculative_config: + decoding_type: MTP + max_draft_len: 3 + tensor_parallel_size: 8 + decode: + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: + batch_sizes: + - 1 + - 2 + - 4 + - 8 + - 12 + - 16 + - 20 + - 24 + - 28 + - 32 + enable_padding: true + custom_tokenizer: deepseek_v4 + enable_attention_dp: true + enable_lm_head_tp_in_adp: true + kv_cache_config: + avg_seq_len: 200000 + dtype: fp8 + enable_block_reuse: false + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.7 + host_cache_size: 0 + tokens_per_block: 128 + max_batch_size: 32 + max_num_tokens: 128 + max_seq_len: 996595 + moe_config: + backend: MEGAMOE_DEEPGEMM + use_low_precision_moe_combine: true + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep16_slots384.yaml + moe_expert_parallel_size: 16 + num_postprocess_workers: 4 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + sparse_attention_config: + algorithm: deepseek_v4 + enable_heuristic_topk: true + speculative_config: + decoding_type: MTP + max_draft_len: 3 + stream_interval: 20 + tensor_parallel_size: 16 + publish_events_and_metrics: false +frontend: + type: dynamo + enable_multiple_frontends: false + env: + ETCD_LEASE_TTL: '120' + DYN_ROUTER_QUEUE_THRESHOLD: None + DYN_TOKENIZER_CACHE: '1' + DYN_TOKENIZER_CACHE_BYTES: '8000000000' + DYN_TOKENIZER: fastokens + DYN_ROUTER_SESSION_AFFINITY_TTL_SECS: '14400' + args: + router-mode: kv + no-kv-events: true + active-decode-blocks-threshold: None + active-prefill-tokens-threshold: None + active-prefill-tokens-threshold-frac: None + orchestrator_placement: first_decode +benchmark: + type: custom + use_chat_template: true + command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh + env: + INFMAX_CONTAINER_WORKSPACE: /infmax-workspace + RESULT_DIR: /logs/agentic + PORT: '8000' + IS_MULTINODE: 'true' + AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: '14400' + AIPERF_HTTP_X_DYNAMO_SESSION_ID_FROM_CORRELATION_ID: 'true' + AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: '0' + AIPERF_DATASET_MMAP_CACHE_DIR: /aiperf_mmap_cache + HF_HUB_CACHE: /hf_hub_cache + WEKA_LOADER_OVERRIDE: semianalysis_cc_traces_weka_062126 + SERVED_MODEL_NAME: DeepSeek-V4-Pro diff --git a/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-4p1d-dep8-dep32-c1389-b16-mtp.yaml b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-4p1d-dep8-dep32-c1389-b16-mtp.yaml new file mode 100644 index 0000000000..6c6d6dedc4 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-4p1d-dep8-dep32-c1389-b16-mtp.yaml @@ -0,0 +1,181 @@ +name: dynamo-disagg-gb300-4p1d-dep8-dep32-c1389-b16-mtp +model: + path: deepseek-ai/DeepSeek-V4-Pro + container: nvcr.io#nvidia/tensorrt-llm/release:1.3.0rc24 + precision: fp4 +identity: + model: + repo: deepseek-ai/DeepSeek-V4-Pro + container: + image: nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc24 + frameworks: + dynamo: 1.4.0.dev20260807 + tensorrt_llm: 1.3.0rc24 +dynamo: + install: true + wheel: 1.4.0.dev20260807 + request_plane: tcp +health_check: + max_attempts: 1440 + interval_seconds: 10 +resources: + gpu_type: gb300 + gpus_per_node: 4 + prefill_nodes: 8 + prefill_workers: 4 + gpus_per_prefill: 8 + decode_nodes: 8 + decode_workers: 1 + gpus_per_decode: 32 +backend: + type: trtllm + prefill_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + PYTORCH_CUDA_ALLOC_CONF: expandable_segments:True + CUDA_SCALE_LAUNCH_QUEUES: 4x + decode_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + trtllm_config: + prefill: + attention_dp_config: + kv_cache_routing_conversation_affinity: true + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: null + custom_tokenizer: deepseek_v4 + disable_overlap_scheduler: false + enable_attention_dp: true + enable_chunked_prefill: true + kv_cache_config: + dtype: fp8 + enable_block_reuse: true + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.8 + host_cache_size: 193273528320 + pool_ratio: + - 0.55 + - 0.22 + - 0.23 + tokens_per_block: 128 + block_reuse_config: + policy: per_conversation + max_num_turns: 5 + max_batch_size: 256 + max_num_tokens: 16384 + max_seq_len: 990016 + moe_config: + backend: TRTLLM + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_ctx_ep8_slots384.yaml + moe_expert_parallel_size: 8 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + scheduler_config: + capacity_scheduler_policy: MAX_UTILIZATION + speculative_config: + decoding_type: MTP + max_draft_len: 3 + tensor_parallel_size: 8 + decode: + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: + batch_sizes: + - 1 + - 2 + - 4 + - 8 + - 12 + - 16 + enable_padding: true + custom_tokenizer: deepseek_v4 + enable_attention_dp: true + enable_lm_head_tp_in_adp: true + kv_cache_config: + avg_seq_len: 200000 + dtype: fp8 + enable_block_reuse: false + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.7 + host_cache_size: 0 + tokens_per_block: 128 + max_batch_size: 16 + max_num_tokens: 64 + max_seq_len: 996595 + moe_config: + backend: MEGAMOE_DEEPGEMM + use_low_precision_moe_combine: true + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep32_slots384.yaml + moe_expert_parallel_size: 32 + num_postprocess_workers: 4 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + sparse_attention_config: + algorithm: deepseek_v4 + enable_heuristic_topk: true + speculative_config: + decoding_type: MTP + max_draft_len: 3 + stream_interval: 20 + tensor_parallel_size: 32 + publish_events_and_metrics: false +frontend: + type: dynamo + enable_multiple_frontends: false + env: + ETCD_LEASE_TTL: '120' + DYN_ROUTER_QUEUE_THRESHOLD: None + DYN_TOKENIZER_CACHE: '1' + DYN_TOKENIZER_CACHE_BYTES: '8000000000' + DYN_TOKENIZER: fastokens + DYN_ROUTER_SESSION_AFFINITY_TTL_SECS: '14400' + args: + router-mode: kv + no-kv-events: true + active-decode-blocks-threshold: None + active-prefill-tokens-threshold: None + active-prefill-tokens-threshold-frac: None + orchestrator_placement: first_decode +benchmark: + type: custom + use_chat_template: true + command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh + env: + INFMAX_CONTAINER_WORKSPACE: /infmax-workspace + RESULT_DIR: /logs/agentic + PORT: '8000' + IS_MULTINODE: 'true' + AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: '14400' + AIPERF_HTTP_X_DYNAMO_SESSION_ID_FROM_CORRELATION_ID: 'true' + AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: '0' + AIPERF_DATASET_MMAP_CACHE_DIR: /aiperf_mmap_cache + HF_HUB_CACHE: /hf_hub_cache + WEKA_LOADER_OVERRIDE: semianalysis_cc_traces_weka_062126 + SERVED_MODEL_NAME: DeepSeek-V4-Pro diff --git a/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-5p1d-dep8-dep16-c1978-b64-mtp.yaml b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-5p1d-dep8-dep16-c1978-b64-mtp.yaml new file mode 100644 index 0000000000..f6f012f6e4 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-5p1d-dep8-dep16-c1978-b64-mtp.yaml @@ -0,0 +1,193 @@ +name: dynamo-disagg-gb300-5p1d-dep8-dep16-c1978-b64-mtp +model: + path: deepseek-ai/DeepSeek-V4-Pro + container: nvcr.io#nvidia/tensorrt-llm/release:1.3.0rc24 + precision: fp4 +identity: + model: + repo: deepseek-ai/DeepSeek-V4-Pro + container: + image: nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc24 + frameworks: + dynamo: 1.4.0.dev20260807 + tensorrt_llm: 1.3.0rc24 +dynamo: + install: true + wheel: 1.4.0.dev20260807 + request_plane: tcp +health_check: + max_attempts: 1440 + interval_seconds: 10 +resources: + gpu_type: gb300 + gpus_per_node: 4 + prefill_nodes: 10 + prefill_workers: 5 + gpus_per_prefill: 8 + decode_nodes: 4 + decode_workers: 1 + gpus_per_decode: 16 +backend: + type: trtllm + prefill_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + PYTORCH_CUDA_ALLOC_CONF: expandable_segments:True + CUDA_SCALE_LAUNCH_QUEUES: 4x + decode_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + trtllm_config: + prefill: + attention_dp_config: + kv_cache_routing_conversation_affinity: true + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: null + custom_tokenizer: deepseek_v4 + disable_overlap_scheduler: false + enable_attention_dp: true + enable_chunked_prefill: true + kv_cache_config: + dtype: fp8 + enable_block_reuse: true + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.8 + host_cache_size: 193273528320 + pool_ratio: + - 0.55 + - 0.22 + - 0.23 + tokens_per_block: 128 + block_reuse_config: + policy: per_conversation + max_num_turns: 5 + max_batch_size: 256 + max_num_tokens: 16384 + max_seq_len: 990016 + moe_config: + backend: TRTLLM + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_ctx_ep8_slots384.yaml + moe_expert_parallel_size: 8 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + scheduler_config: + capacity_scheduler_policy: MAX_UTILIZATION + speculative_config: + decoding_type: MTP + max_draft_len: 3 + tensor_parallel_size: 8 + decode: + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: + batch_sizes: + - 1 + - 2 + - 4 + - 8 + - 12 + - 16 + - 20 + - 24 + - 28 + - 32 + - 36 + - 40 + - 44 + - 48 + - 52 + - 56 + - 60 + - 64 + enable_padding: true + custom_tokenizer: deepseek_v4 + enable_attention_dp: true + enable_lm_head_tp_in_adp: true + kv_cache_config: + avg_seq_len: 200000 + dtype: fp8 + enable_block_reuse: false + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.7 + host_cache_size: 0 + tokens_per_block: 128 + max_batch_size: 64 + max_num_tokens: 256 + max_seq_len: 996595 + moe_config: + backend: MEGAMOE_DEEPGEMM + use_low_precision_moe_combine: true + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep16_slots384.yaml + moe_expert_parallel_size: 16 + num_postprocess_workers: 4 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + sparse_attention_config: + algorithm: deepseek_v4 + enable_heuristic_topk: true + speculative_config: + decoding_type: MTP + max_draft_len: 3 + stream_interval: 20 + tensor_parallel_size: 16 + publish_events_and_metrics: false +frontend: + type: dynamo + enable_multiple_frontends: false + env: + ETCD_LEASE_TTL: '120' + DYN_ROUTER_QUEUE_THRESHOLD: None + DYN_TOKENIZER_CACHE: '1' + DYN_TOKENIZER_CACHE_BYTES: '8000000000' + DYN_TOKENIZER: fastokens + DYN_ROUTER_SESSION_AFFINITY_TTL_SECS: '14400' + args: + router-mode: kv + no-kv-events: true + active-decode-blocks-threshold: None + active-prefill-tokens-threshold: None + active-prefill-tokens-threshold-frac: None + orchestrator_placement: first_decode +benchmark: + type: custom + use_chat_template: true + command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh + env: + INFMAX_CONTAINER_WORKSPACE: /infmax-workspace + RESULT_DIR: /logs/agentic + PORT: '8000' + IS_MULTINODE: 'true' + AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: '14400' + AIPERF_HTTP_X_DYNAMO_SESSION_ID_FROM_CORRELATION_ID: 'true' + AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: '0' + AIPERF_DATASET_MMAP_CACHE_DIR: /aiperf_mmap_cache + HF_HUB_CACHE: /hf_hub_cache + WEKA_LOADER_OVERRIDE: semianalysis_cc_traces_weka_062126 + SERVED_MODEL_NAME: DeepSeek-V4-Pro diff --git a/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-5p1d-dep8-dep16-c2626-b96-mtp.yaml b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-5p1d-dep8-dep16-c2626-b96-mtp.yaml new file mode 100644 index 0000000000..a6b9ef386e --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-5p1d-dep8-dep16-c2626-b96-mtp.yaml @@ -0,0 +1,201 @@ +name: dynamo-disagg-gb300-5p1d-dep8-dep16-c2626-b96-mtp +model: + path: deepseek-ai/DeepSeek-V4-Pro + container: nvcr.io#nvidia/tensorrt-llm/release:1.3.0rc24 + precision: fp4 +identity: + model: + repo: deepseek-ai/DeepSeek-V4-Pro + container: + image: nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc24 + frameworks: + dynamo: 1.4.0.dev20260807 + tensorrt_llm: 1.3.0rc24 +dynamo: + install: true + wheel: 1.4.0.dev20260807 + request_plane: tcp +health_check: + max_attempts: 1440 + interval_seconds: 10 +resources: + gpu_type: gb300 + gpus_per_node: 4 + prefill_nodes: 10 + prefill_workers: 5 + gpus_per_prefill: 8 + decode_nodes: 4 + decode_workers: 1 + gpus_per_decode: 16 +backend: + type: trtllm + prefill_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + PYTORCH_CUDA_ALLOC_CONF: expandable_segments:True + CUDA_SCALE_LAUNCH_QUEUES: 4x + decode_environment: + TLLM_LOG_LEVEL: INFO + TRTLLM_SERVER_DISABLE_GC: '1' + TRTLLM_WORKER_DISABLE_GC: '1' + NCCL_GRAPH_MIXING_SUPPORT: '0' + TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS: '1.97' + UCX_TLS: cuda_ipc,cuda_copy,sm,self,tcp + DYN_ENGINE_CONV_AFFINITY: '1' + MIMALLOC_PURGE_DELAY: '0' + TRTLLM_ENABLE_PDL: '1' + DYN_DEFAULT_THINKING_MODE: disabled + MIMALLOC_ARENA_RESERVE: '0' + TRTLLM_PINNED_WEIGHT_STAGING: '1' + trtllm_config: + prefill: + attention_dp_config: + kv_cache_routing_conversation_affinity: true + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: null + custom_tokenizer: deepseek_v4 + disable_overlap_scheduler: false + enable_attention_dp: true + enable_chunked_prefill: true + kv_cache_config: + dtype: fp8 + enable_block_reuse: true + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.8 + host_cache_size: 193273528320 + pool_ratio: + - 0.55 + - 0.22 + - 0.23 + tokens_per_block: 128 + block_reuse_config: + policy: per_conversation + max_num_turns: 5 + max_batch_size: 256 + max_num_tokens: 16384 + max_seq_len: 990016 + moe_config: + backend: TRTLLM + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_ctx_ep8_slots384.yaml + moe_expert_parallel_size: 8 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + scheduler_config: + capacity_scheduler_policy: MAX_UTILIZATION + speculative_config: + decoding_type: MTP + max_draft_len: 3 + tensor_parallel_size: 8 + decode: + cache_transceiver_config: + backend: NIXL + kv_transfer_timeout_ms: 600000 + transceiver_runtime: PYTHON + cuda_graph_config: + batch_sizes: + - 1 + - 2 + - 4 + - 8 + - 12 + - 16 + - 20 + - 24 + - 28 + - 32 + - 36 + - 40 + - 44 + - 48 + - 52 + - 56 + - 60 + - 64 + - 68 + - 72 + - 76 + - 80 + - 84 + - 88 + - 92 + - 96 + enable_padding: true + custom_tokenizer: deepseek_v4 + enable_attention_dp: true + enable_lm_head_tp_in_adp: true + kv_cache_config: + avg_seq_len: 200000 + dtype: fp8 + enable_block_reuse: false + event_buffer_max_size: 0 + free_gpu_memory_fraction: 0.7 + host_cache_size: 0 + tokens_per_block: 128 + max_batch_size: 96 + max_num_tokens: 384 + max_seq_len: 996595 + moe_config: + backend: MEGAMOE_DEEPGEMM + use_low_precision_moe_combine: true + load_balancer: /infmax-workspace/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep16_slots384.yaml + moe_expert_parallel_size: 16 + num_postprocess_workers: 4 + pipeline_parallel_size: 1 + print_iter_log: true + return_perf_metrics: true + sparse_attention_config: + algorithm: deepseek_v4 + enable_heuristic_topk: true + speculative_config: + decoding_type: MTP + max_draft_len: 3 + stream_interval: 20 + tensor_parallel_size: 16 + publish_events_and_metrics: false +frontend: + type: dynamo + enable_multiple_frontends: false + env: + ETCD_LEASE_TTL: '120' + DYN_ROUTER_QUEUE_THRESHOLD: None + DYN_TOKENIZER_CACHE: '1' + DYN_TOKENIZER_CACHE_BYTES: '8000000000' + DYN_TOKENIZER: fastokens + DYN_ROUTER_SESSION_AFFINITY_TTL_SECS: '14400' + args: + router-mode: kv + no-kv-events: true + active-decode-blocks-threshold: None + active-prefill-tokens-threshold: None + active-prefill-tokens-threshold-frac: None + orchestrator_placement: first_decode +benchmark: + type: custom + use_chat_template: true + command: bash /infmax-workspace/benchmarks/multi_node/agentic_srt.sh + env: + INFMAX_CONTAINER_WORKSPACE: /infmax-workspace + RESULT_DIR: /logs/agentic + PORT: '8000' + IS_MULTINODE: 'true' + AIPERF_DYNAMO_SESSION_TIMEOUT_SECONDS: '14400' + AIPERF_HTTP_X_DYNAMO_SESSION_ID_FROM_CORRELATION_ID: 'true' + AIPERF_USE_DYNAMO_CONV_AWARE_ROUTING: '0' + AIPERF_DATASET_MMAP_CACHE_DIR: /aiperf_mmap_cache + HF_HUB_CACHE: /hf_hub_cache + WEKA_LOADER_OVERRIDE: semianalysis_cc_traces_weka_062126 + SERVED_MODEL_NAME: DeepSeek-V4-Pro diff --git a/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_ctx_ep8_slots384.yaml b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_ctx_ep8_slots384.yaml new file mode 100644 index 0000000000..85cd11b459 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_ctx_ep8_slots384.yaml @@ -0,0 +1,65 @@ +initial_global_assignments: + 0: [133, 345, 232, 335, 19, 147, 284, 129, 200, 383, 234, 219, 159, 316, 47, 141, 146, 294, 77, 241, 43, 324, 92, 315, 148, 277, 87, 98, 197, 298, 339, 54, 171, 127, 156, 214, 100, 373, 82, 183, 372, 357, 182, 145, 301, 30, 333, 103, 50, 198, 322, 162, 346, 302, 68, 76, 1, 353, 189, 286, 46, 293, 119, 374, 204, 188, 149, 18, 278, 172, 246, 359, 257, 122, 199, 124, 104, 258, 343, 312, 296, 59, 136, 310, 167, 356, 317, 224, 365, 295, 233, 304, 334, 326, 205, 332, 28, 81, 255, 90, 190, 34, 109, 308, 74, 153, 22, 115, 91, 165, 6, 281, 125, 134, 67, 79, 313, 118, 314, 321, 336, 10, 203, 291, 27, 354, 285, 299, 180, 58, 325, 358, 252, 208, 130, 181, 330, 23, 329, 185, 139, 367, 37, 128, 184, 86, 60, 111, 260, 150, 78, 131, 57, 97, 95, 251, 114, 268, 8, 227, 275, 177, 235, 72, 152, 5, 223, 4, 20, 7, 327, 380, 209, 140, 16, 187, 276, 126, 175, 96, 24, 73, 192, 378, 120, 349, 236, 108, 381, 32, 371, 375, 135, 351, 75, 283, 191, 331, 113, 170, 379, 29, 212, 202, 11, 112, 364, 222, 201, 55, 9, 290, 206, 320, 42, 195, 231, 348, 360, 376, 366, 41, 225, 341, 168, 179, 243, 247, 264, 229, 64, 355, 306, 323, 137, 48, 178, 69, 363, 196, 3, 17, 157, 169, 84, 94, 85, 21, 193, 53, 26, 116, 44, 39, 382, 280, 144, 110, 66, 287, 164, 368, 63, 143, 186, 361, 151, 216, 303, 154, 62, 271, 318, 370, 340, 238, 215, 328, 14, 210, 350, 12, 230, 338, 274, 237, 105, 40, 45, 93, 138, 83, 217, 300, 158, 132, 270, 13, 292, 38, 273, 226, 142, 253, 259, 173, 2, 52, 239, 106, 163, 220, 269, 282, 15, 262, 31, 244, 121, 344, 213, 337, 265, 305, 160, 49, 218, 342, 70, 161, 319, 166, 248, 254, 194, 309, 289, 256, 155, 51, 347, 221, 56, 89, 377, 107, 123, 80, 261, 228, 245, 25, 272, 211, 352, 263, 61, 71, 240, 267, 33, 249, 176, 297, 362, 102, 174, 242, 99, 307, 207, 279, 35, 0, 88, 117, 266, 65, 250, 36, 101, 311, 369, 288] + 1: [167, 247, 6, 126, 179, 365, 235, 121, 68, 55, 214, 353, 334, 369, 204, 162, 283, 192, 142, 8, 252, 99, 294, 282, 281, 212, 114, 91, 152, 171, 51, 100, 173, 74, 210, 127, 333, 326, 159, 370, 371, 354, 361, 136, 65, 10, 324, 345, 134, 50, 229, 251, 9, 81, 7, 231, 72, 106, 71, 338, 4, 321, 45, 54, 280, 143, 172, 289, 115, 87, 313, 57, 292, 335, 188, 107, 17, 245, 286, 75, 253, 84, 16, 93, 77, 97, 125, 98, 322, 191, 368, 346, 130, 242, 176, 337, 305, 177, 1, 41, 102, 318, 308, 272, 37, 357, 278, 358, 110, 124, 42, 328, 265, 135, 76, 128, 27, 139, 293, 13, 356, 156, 38, 28, 32, 67, 304, 88, 197, 297, 89, 49, 336, 366, 34, 149, 325, 314, 158, 66, 285, 359, 144, 277, 14, 31, 123, 239, 153, 267, 274, 271, 117, 273, 129, 224, 59, 94, 300, 208, 22, 329, 25, 268, 233, 18, 383, 203, 237, 109, 82, 154, 165, 295, 194, 344, 29, 15, 351, 90, 161, 131, 296, 79, 83, 331, 147, 46, 373, 222, 259, 213, 244, 120, 63, 113, 299, 138, 164, 33, 291, 137, 116, 319, 195, 48, 170, 184, 105, 362, 225, 284, 104, 118, 374, 201, 209, 61, 64, 232, 221, 12, 250, 234, 227, 381, 312, 132, 323, 226, 96, 193, 24, 290, 30, 219, 375, 58, 307, 257, 0, 39, 133, 330, 80, 349, 180, 47, 378, 78, 316, 95, 350, 92, 21, 266, 44, 174, 241, 320, 169, 53, 86, 347, 69, 263, 246, 182, 256, 279, 258, 101, 189, 20, 298, 178, 240, 236, 377, 62, 215, 270, 360, 119, 363, 111, 157, 302, 3, 70, 380, 151, 40, 196, 43, 23, 36, 348, 352, 218, 228, 382, 376, 166, 303, 200, 185, 276, 163, 264, 206, 2, 260, 181, 146, 288, 198, 216, 310, 217, 238, 150, 355, 254, 168, 183, 175, 108, 249, 309, 155, 327, 160, 205, 207, 199, 211, 141, 275, 364, 187, 56, 5, 103, 315, 248, 223, 73, 342, 341, 148, 243, 301, 122, 202, 85, 52, 220, 19, 379, 269, 26, 186, 317, 145, 287, 311, 339, 190, 332, 343, 60, 11, 255, 306, 140, 372, 35, 112, 340, 261, 262, 230, 367] + 2: [19, 278, 3, 120, 119, 342, 61, 255, 57, 243, 281, 52, 329, 53, 173, 141, 25, 77, 27, 373, 84, 155, 132, 253, 324, 330, 81, 310, 315, 260, 68, 316, 145, 64, 247, 40, 320, 240, 78, 92, 317, 9, 376, 350, 383, 344, 346, 241, 88, 259, 56, 100, 86, 284, 122, 133, 351, 63, 65, 110, 358, 50, 14, 18, 274, 279, 211, 213, 127, 194, 189, 95, 231, 186, 37, 273, 164, 114, 129, 98, 222, 312, 175, 328, 102, 309, 215, 51, 276, 378, 354, 79, 80, 374, 355, 382, 302, 26, 242, 230, 308, 41, 46, 94, 187, 295, 44, 134, 93, 239, 82, 130, 206, 38, 12, 188, 7, 192, 331, 158, 323, 90, 360, 6, 256, 306, 196, 15, 297, 4, 171, 266, 172, 167, 201, 326, 207, 347, 144, 179, 311, 217, 257, 327, 142, 275, 248, 36, 70, 67, 349, 377, 103, 262, 31, 283, 228, 165, 59, 150, 210, 338, 22, 66, 117, 198, 190, 30, 357, 318, 369, 246, 185, 208, 205, 161, 235, 146, 249, 181, 140, 157, 313, 280, 224, 291, 58, 204, 199, 244, 289, 261, 212, 143, 55, 364, 168, 232, 229, 128, 195, 321, 2, 334, 16, 335, 74, 1, 106, 29, 83, 216, 91, 153, 293, 305, 361, 200, 227, 183, 264, 300, 371, 8, 367, 107, 76, 131, 23, 147, 154, 126, 113, 267, 104, 339, 226, 234, 101, 251, 381, 33, 221, 368, 288, 160, 265, 220, 20, 343, 138, 193, 96, 139, 75, 111, 62, 89, 307, 152, 174, 71, 353, 285, 69, 270, 87, 123, 124, 35, 292, 352, 97, 282, 32, 340, 169, 156, 314, 258, 197, 379, 209, 348, 333, 115, 322, 271, 304, 298, 290, 10, 49, 294, 182, 303, 277, 269, 108, 34, 296, 39, 163, 42, 54, 178, 73, 47, 5, 268, 299, 48, 45, 148, 319, 370, 345, 252, 203, 372, 135, 236, 218, 11, 214, 363, 237, 337, 254, 118, 177, 149, 375, 272, 366, 287, 17, 105, 341, 362, 85, 332, 121, 162, 151, 136, 245, 21, 116, 109, 380, 263, 60, 0, 28, 170, 325, 356, 336, 13, 202, 180, 223, 43, 250, 184, 99, 125, 233, 166, 286, 24, 137, 176, 72, 238, 219, 301, 159, 365, 359, 112, 191, 225] + 3: [307, 63, 76, 199, 210, 212, 137, 303, 230, 169, 150, 11, 118, 354, 294, 133, 325, 120, 14, 166, 176, 59, 55, 207, 154, 372, 192, 256, 382, 261, 305, 321, 279, 348, 35, 270, 334, 75, 130, 278, 312, 245, 241, 45, 60, 134, 105, 96, 244, 328, 377, 363, 85, 295, 302, 33, 141, 369, 82, 259, 116, 362, 151, 41, 329, 359, 103, 234, 6, 42, 167, 122, 248, 238, 114, 352, 283, 12, 269, 188, 275, 50, 345, 28, 9, 339, 324, 365, 165, 223, 330, 140, 95, 146, 374, 117, 232, 92, 153, 316, 44, 34, 308, 148, 284, 65, 72, 113, 229, 290, 102, 383, 219, 289, 258, 226, 201, 159, 61, 364, 106, 309, 216, 331, 205, 285, 341, 145, 168, 17, 273, 158, 91, 209, 353, 346, 119, 281, 5, 265, 380, 185, 311, 250, 136, 84, 310, 79, 155, 23, 30, 2, 208, 338, 132, 200, 142, 89, 25, 306, 366, 272, 227, 170, 129, 260, 333, 202, 0, 152, 243, 293, 184, 194, 379, 264, 21, 340, 263, 367, 104, 240, 36, 80, 268, 13, 83, 203, 214, 52, 371, 20, 175, 323, 3, 149, 361, 108, 195, 215, 373, 177, 315, 97, 18, 225, 191, 253, 160, 126, 249, 163, 235, 319, 68, 186, 179, 236, 29, 181, 356, 193, 246, 182, 370, 115, 135, 183, 231, 31, 10, 139, 262, 342, 300, 355, 180, 99, 368, 98, 171, 111, 218, 26, 19, 266, 161, 94, 43, 228, 376, 297, 280, 112, 318, 32, 343, 27, 51, 144, 196, 100, 87, 123, 187, 360, 110, 220, 37, 206, 337, 351, 301, 138, 198, 267, 53, 282, 326, 58, 349, 314, 242, 332, 77, 131, 40, 47, 320, 74, 48, 257, 222, 57, 178, 4, 381, 125, 49, 54, 8, 335, 378, 67, 70, 73, 358, 350, 56, 221, 62, 347, 109, 211, 93, 156, 107, 197, 322, 86, 1, 313, 239, 299, 357, 16, 189, 173, 286, 15, 190, 217, 147, 162, 101, 69, 46, 124, 254, 88, 213, 172, 90, 327, 81, 276, 224, 164, 304, 22, 336, 274, 252, 64, 71, 277, 375, 128, 143, 127, 298, 296, 344, 291, 237, 7, 78, 121, 157, 317, 271, 247, 174, 38, 251, 287, 66, 204, 233, 255, 39, 288, 292, 24] + 4: [368, 167, 285, 22, 66, 281, 187, 56, 92, 382, 133, 26, 183, 240, 253, 278, 116, 218, 169, 42, 97, 266, 36, 149, 315, 193, 349, 217, 174, 2, 102, 79, 244, 0, 86, 355, 43, 305, 362, 128, 238, 321, 381, 30, 233, 292, 5, 201, 358, 138, 196, 91, 150, 105, 199, 343, 320, 52, 55, 333, 302, 275, 363, 159, 15, 93, 312, 356, 316, 130, 123, 111, 166, 45, 191, 168, 158, 335, 125, 377, 106, 62, 261, 364, 296, 350, 156, 352, 250, 351, 51, 213, 27, 226, 96, 107, 83, 23, 314, 216, 258, 311, 203, 164, 286, 260, 198, 331, 14, 94, 197, 235, 195, 180, 126, 29, 337, 134, 58, 33, 365, 186, 48, 99, 295, 101, 372, 70, 11, 360, 64, 124, 359, 237, 205, 10, 251, 344, 328, 277, 63, 44, 212, 82, 383, 259, 336, 171, 162, 155, 100, 69, 184, 161, 242, 144, 151, 374, 71, 76, 232, 214, 18, 21, 157, 325, 276, 324, 269, 41, 9, 246, 229, 222, 127, 68, 103, 117, 131, 379, 19, 49, 146, 375, 40, 225, 220, 175, 254, 338, 67, 190, 118, 85, 38, 189, 342, 279, 46, 221, 24, 329, 223, 3, 303, 54, 50, 287, 31, 245, 297, 113, 25, 340, 219, 236, 348, 72, 136, 6, 231, 177, 141, 139, 209, 173, 140, 288, 353, 262, 77, 224, 170, 299, 112, 211, 322, 326, 90, 152, 334, 300, 207, 256, 228, 60, 88, 148, 323, 163, 257, 65, 370, 137, 310, 84, 341, 264, 73, 345, 59, 215, 230, 268, 4, 282, 354, 47, 284, 255, 8, 172, 143, 13, 208, 293, 115, 330, 318, 210, 309, 380, 119, 1, 132, 145, 104, 17, 371, 188, 241, 37, 154, 307, 121, 179, 109, 376, 135, 283, 274, 204, 270, 34, 313, 160, 298, 87, 378, 108, 308, 39, 153, 185, 78, 176, 361, 317, 347, 206, 271, 74, 332, 367, 32, 165, 12, 227, 304, 120, 273, 95, 57, 366, 357, 80, 200, 319, 61, 339, 263, 75, 7, 142, 194, 181, 53, 327, 147, 291, 81, 265, 110, 28, 16, 247, 290, 20, 98, 373, 182, 122, 280, 35, 301, 114, 252, 267, 202, 306, 239, 248, 178, 234, 192, 243, 369, 289, 346, 294, 249, 272, 129, 89] + 5: [174, 18, 244, 287, 202, 283, 104, 54, 235, 9, 85, 92, 87, 67, 64, 313, 229, 100, 263, 50, 246, 383, 378, 207, 241, 281, 42, 322, 272, 373, 70, 22, 162, 201, 91, 118, 292, 212, 261, 135, 3, 38, 157, 95, 298, 12, 189, 321, 69, 110, 155, 89, 219, 8, 346, 158, 366, 294, 53, 161, 243, 175, 216, 350, 6, 188, 5, 361, 236, 303, 359, 250, 368, 136, 274, 29, 318, 358, 111, 205, 372, 138, 75, 326, 39, 154, 267, 356, 36, 369, 127, 44, 71, 290, 282, 177, 248, 343, 25, 66, 165, 232, 103, 374, 55, 128, 227, 129, 185, 310, 259, 184, 65, 257, 81, 305, 74, 255, 45, 215, 203, 198, 76, 330, 143, 168, 172, 195, 145, 170, 271, 230, 291, 40, 178, 344, 240, 289, 218, 340, 360, 113, 234, 196, 341, 163, 295, 252, 377, 209, 345, 32, 186, 329, 122, 105, 192, 149, 237, 68, 134, 355, 349, 86, 187, 320, 262, 314, 191, 60, 144, 11, 58, 297, 351, 223, 106, 288, 275, 299, 284, 24, 176, 225, 376, 120, 51, 123, 224, 121, 181, 286, 160, 102, 37, 285, 15, 228, 249, 365, 211, 33, 296, 278, 90, 217, 266, 347, 245, 327, 52, 337, 300, 48, 200, 268, 41, 317, 253, 140, 324, 17, 331, 210, 151, 82, 357, 342, 19, 307, 0, 260, 13, 301, 80, 367, 133, 338, 99, 166, 231, 148, 265, 150, 239, 316, 56, 108, 109, 222, 220, 276, 96, 23, 273, 57, 14, 132, 293, 247, 190, 61, 379, 77, 352, 112, 353, 146, 242, 115, 63, 238, 16, 27, 126, 21, 20, 315, 43, 153, 328, 354, 62, 83, 141, 277, 173, 139, 208, 371, 28, 116, 47, 319, 336, 142, 72, 101, 332, 88, 97, 254, 335, 323, 226, 7, 34, 333, 35, 214, 164, 339, 30, 380, 84, 182, 204, 306, 152, 156, 221, 93, 49, 59, 309, 199, 46, 382, 169, 258, 98, 171, 179, 206, 117, 280, 312, 311, 73, 348, 213, 363, 114, 159, 269, 304, 256, 124, 31, 4, 370, 119, 197, 147, 334, 194, 137, 279, 308, 78, 364, 125, 325, 375, 233, 381, 251, 1, 107, 183, 130, 264, 270, 10, 180, 26, 362, 2, 131, 79, 193, 94, 302, 167] + 6: [98, 253, 102, 56, 298, 156, 165, 153, 194, 289, 200, 340, 367, 287, 105, 255, 19, 17, 12, 268, 198, 334, 141, 26, 30, 64, 137, 295, 283, 74, 33, 112, 18, 129, 312, 284, 132, 138, 191, 13, 186, 49, 40, 346, 93, 363, 65, 247, 97, 171, 281, 91, 179, 226, 178, 343, 63, 291, 235, 379, 110, 11, 241, 301, 128, 326, 225, 383, 123, 230, 196, 324, 229, 306, 251, 41, 261, 189, 185, 134, 201, 152, 351, 163, 43, 203, 348, 39, 210, 333, 250, 359, 265, 145, 342, 257, 218, 167, 209, 9, 375, 335, 46, 234, 266, 67, 120, 192, 89, 187, 175, 360, 345, 358, 125, 206, 338, 277, 381, 263, 59, 47, 221, 70, 238, 69, 71, 374, 373, 87, 7, 38, 211, 154, 276, 124, 336, 329, 369, 279, 36, 245, 131, 294, 254, 239, 48, 35, 55, 328, 327, 85, 24, 321, 190, 244, 302, 160, 202, 155, 267, 286, 220, 16, 76, 350, 143, 316, 117, 96, 111, 181, 282, 168, 8, 296, 341, 188, 172, 119, 68, 313, 139, 107, 280, 52, 121, 237, 78, 1, 303, 222, 37, 20, 349, 142, 159, 232, 169, 157, 73, 164, 319, 314, 50, 146, 10, 216, 80, 271, 82, 57, 270, 361, 115, 148, 77, 356, 173, 355, 309, 101, 227, 177, 182, 183, 113, 307, 126, 195, 108, 368, 133, 22, 365, 293, 135, 75, 320, 2, 288, 147, 88, 317, 4, 213, 34, 118, 292, 106, 25, 299, 337, 377, 274, 262, 180, 315, 150, 248, 27, 144, 357, 259, 371, 122, 347, 170, 300, 219, 114, 6, 310, 42, 72, 325, 23, 217, 382, 99, 236, 231, 21, 161, 130, 100, 331, 214, 193, 322, 0, 242, 66, 353, 215, 278, 297, 212, 272, 370, 81, 366, 103, 264, 44, 5, 45, 116, 318, 372, 285, 84, 223, 311, 205, 260, 269, 290, 83, 109, 252, 378, 240, 362, 233, 323, 243, 273, 197, 60, 90, 151, 28, 246, 354, 339, 249, 32, 31, 174, 199, 344, 208, 166, 104, 258, 86, 136, 305, 224, 58, 158, 94, 308, 127, 54, 61, 79, 149, 364, 29, 376, 330, 207, 332, 140, 51, 92, 162, 62, 14, 352, 184, 256, 3, 304, 95, 176, 275, 228, 380, 204, 53, 15] + 7: [94, 258, 240, 354, 62, 35, 12, 370, 164, 221, 0, 181, 60, 139, 153, 239, 184, 222, 191, 379, 310, 305, 264, 217, 170, 261, 14, 45, 73, 226, 113, 130, 350, 50, 322, 218, 291, 131, 232, 89, 137, 235, 352, 364, 311, 145, 357, 104, 263, 341, 187, 107, 220, 206, 36, 194, 287, 228, 313, 317, 283, 297, 335, 262, 323, 134, 72, 358, 286, 324, 281, 278, 197, 98, 110, 301, 168, 269, 244, 76, 294, 67, 26, 100, 318, 210, 122, 126, 106, 359, 37, 81, 302, 296, 132, 319, 49, 79, 223, 279, 148, 245, 190, 265, 325, 83, 2, 143, 308, 188, 108, 119, 374, 7, 105, 161, 339, 268, 78, 82, 266, 337, 237, 84, 203, 330, 314, 373, 234, 86, 212, 151, 380, 97, 334, 255, 276, 16, 146, 205, 149, 207, 371, 95, 13, 48, 345, 192, 246, 65, 28, 274, 31, 270, 185, 285, 21, 329, 91, 118, 315, 224, 295, 383, 381, 116, 304, 167, 347, 177, 256, 144, 260, 74, 156, 233, 22, 163, 40, 46, 331, 162, 57, 171, 174, 214, 349, 243, 176, 15, 273, 54, 20, 34, 282, 372, 195, 193, 93, 128, 186, 56, 141, 136, 259, 209, 196, 71, 213, 112, 115, 355, 11, 316, 252, 147, 200, 328, 367, 29, 360, 298, 68, 299, 27, 9, 47, 230, 208, 288, 150, 201, 33, 4, 158, 219, 361, 248, 5, 312, 90, 61, 292, 346, 17, 275, 66, 18, 6, 121, 10, 96, 368, 271, 351, 38, 180, 229, 272, 227, 254, 238, 307, 157, 120, 340, 348, 327, 75, 58, 336, 63, 309, 257, 166, 1, 99, 114, 250, 199, 117, 321, 19, 342, 280, 88, 377, 160, 251, 362, 77, 178, 182, 253, 277, 125, 333, 80, 133, 284, 215, 216, 142, 87, 204, 52, 43, 376, 165, 378, 356, 290, 124, 353, 24, 241, 175, 92, 343, 59, 3, 211, 123, 101, 159, 8, 25, 369, 179, 154, 225, 172, 306, 289, 152, 183, 64, 332, 103, 127, 366, 382, 169, 267, 344, 236, 51, 173, 70, 41, 198, 138, 375, 53, 155, 303, 140, 111, 85, 129, 42, 135, 202, 365, 300, 326, 44, 39, 363, 23, 249, 293, 320, 69, 32, 109, 30, 338, 242, 189, 102, 247, 55, 231] + 8: [310, 211, 252, 299, 34, 338, 57, 284, 153, 81, 303, 132, 224, 31, 329, 323, 140, 383, 242, 121, 292, 41, 188, 371, 114, 308, 99, 243, 367, 46, 142, 222, 85, 221, 53, 172, 365, 89, 321, 375, 149, 14, 258, 337, 138, 344, 355, 318, 194, 239, 75, 288, 273, 210, 340, 176, 87, 322, 137, 150, 348, 160, 230, 124, 181, 351, 219, 11, 162, 277, 339, 374, 50, 7, 353, 77, 304, 128, 255, 311, 48, 51, 191, 228, 336, 366, 16, 117, 94, 32, 12, 343, 271, 131, 177, 278, 67, 143, 173, 108, 209, 190, 182, 357, 79, 76, 251, 43, 208, 349, 346, 350, 3, 246, 372, 97, 368, 202, 232, 238, 354, 331, 197, 294, 5, 72, 156, 129, 8, 325, 376, 70, 274, 120, 115, 80, 295, 270, 113, 328, 362, 151, 216, 275, 272, 327, 44, 198, 83, 248, 379, 204, 178, 21, 195, 302, 341, 167, 58, 326, 161, 62, 179, 184, 203, 196, 266, 100, 119, 269, 118, 84, 250, 25, 20, 298, 225, 130, 229, 107, 28, 307, 279, 158, 207, 166, 330, 139, 213, 71, 110, 316, 18, 93, 38, 35, 333, 236, 146, 61, 267, 145, 112, 30, 235, 352, 244, 55, 320, 54, 319, 262, 47, 175, 6, 106, 4, 183, 157, 253, 373, 290, 159, 364, 334, 104, 127, 0, 192, 45, 342, 347, 174, 254, 86, 91, 361, 116, 237, 36, 247, 27, 180, 300, 286, 39, 73, 29, 60, 189, 312, 88, 261, 169, 317, 200, 24, 264, 359, 245, 289, 241, 324, 283, 380, 133, 206, 102, 63, 9, 125, 92, 240, 282, 49, 377, 205, 381, 42, 335, 74, 227, 259, 285, 26, 111, 280, 165, 135, 260, 218, 287, 217, 13, 214, 1, 281, 293, 313, 69, 171, 199, 314, 33, 144, 59, 305, 141, 82, 164, 23, 369, 276, 306, 291, 233, 234, 187, 66, 10, 363, 263, 78, 105, 152, 296, 257, 265, 168, 220, 215, 95, 65, 19, 15, 223, 155, 122, 64, 56, 332, 163, 136, 297, 212, 382, 249, 17, 68, 360, 101, 134, 309, 186, 154, 268, 37, 96, 126, 231, 358, 226, 201, 356, 52, 147, 193, 98, 123, 40, 103, 170, 370, 315, 109, 90, 378, 2, 345, 301, 185, 148, 256, 22] + 9: [287, 124, 298, 89, 28, 355, 205, 41, 227, 275, 297, 78, 222, 328, 136, 12, 278, 252, 336, 189, 18, 162, 375, 331, 120, 276, 40, 280, 273, 257, 213, 100, 364, 377, 311, 117, 115, 367, 366, 191, 310, 140, 221, 194, 53, 365, 241, 43, 346, 206, 66, 35, 29, 93, 319, 107, 11, 37, 121, 141, 197, 307, 313, 71, 74, 75, 309, 217, 301, 16, 315, 177, 164, 239, 84, 262, 94, 181, 169, 330, 65, 62, 198, 305, 0, 173, 150, 50, 174, 149, 76, 156, 337, 163, 25, 122, 109, 218, 199, 108, 92, 160, 146, 260, 259, 289, 224, 267, 118, 110, 188, 209, 17, 335, 235, 238, 361, 69, 116, 88, 210, 274, 306, 95, 302, 133, 245, 68, 22, 105, 343, 79, 281, 223, 119, 350, 347, 268, 236, 152, 332, 308, 2, 340, 349, 258, 279, 138, 327, 255, 102, 254, 82, 282, 5, 170, 342, 368, 3, 314, 134, 7, 186, 362, 339, 96, 180, 31, 51, 329, 263, 376, 158, 378, 290, 166, 9, 128, 226, 8, 324, 153, 24, 183, 204, 34, 348, 178, 240, 253, 237, 190, 52, 244, 354, 55, 373, 341, 247, 323, 358, 196, 380, 54, 294, 312, 284, 382, 303, 357, 316, 48, 64, 19, 129, 14, 103, 187, 30, 293, 214, 369, 157, 215, 176, 104, 192, 13, 126, 113, 249, 36, 142, 371, 86, 38, 26, 27, 292, 167, 165, 132, 374, 171, 111, 44, 248, 123, 195, 207, 288, 85, 345, 159, 356, 42, 72, 264, 266, 381, 352, 172, 155, 131, 130, 80, 251, 326, 57, 147, 98, 15, 265, 321, 182, 277, 291, 193, 242, 1, 300, 283, 318, 139, 87, 63, 6, 168, 334, 145, 135, 179, 114, 154, 351, 39, 379, 363, 372, 58, 83, 359, 353, 230, 175, 59, 45, 99, 383, 49, 90, 32, 360, 211, 56, 219, 137, 256, 70, 208, 304, 233, 270, 97, 33, 296, 344, 144, 77, 73, 261, 325, 61, 91, 333, 125, 246, 143, 4, 185, 285, 299, 46, 231, 317, 272, 201, 295, 161, 229, 10, 320, 271, 322, 286, 243, 47, 202, 151, 127, 216, 23, 228, 370, 225, 81, 101, 338, 20, 220, 67, 184, 269, 148, 203, 212, 112, 232, 234, 60, 200, 21, 250, 106] + 10: [378, 21, 11, 156, 145, 151, 351, 192, 45, 136, 67, 273, 112, 141, 129, 248, 31, 10, 115, 311, 309, 353, 207, 379, 9, 172, 88, 63, 132, 318, 291, 73, 325, 240, 116, 358, 314, 76, 64, 253, 244, 103, 290, 32, 159, 206, 356, 336, 193, 25, 51, 236, 98, 355, 326, 243, 117, 170, 5, 166, 257, 275, 35, 194, 0, 48, 154, 90, 269, 348, 312, 383, 303, 234, 23, 113, 333, 350, 331, 340, 270, 14, 335, 198, 191, 342, 140, 131, 1, 226, 110, 15, 354, 260, 83, 176, 222, 36, 146, 54, 327, 147, 368, 320, 306, 155, 50, 212, 139, 6, 300, 328, 284, 114, 229, 375, 173, 279, 228, 174, 271, 37, 343, 127, 219, 89, 158, 268, 321, 374, 204, 316, 96, 213, 346, 295, 242, 152, 77, 313, 119, 357, 332, 28, 120, 246, 200, 181, 34, 319, 225, 299, 161, 360, 188, 305, 261, 272, 237, 46, 124, 245, 363, 72, 361, 298, 153, 186, 20, 123, 247, 80, 104, 288, 294, 8, 65, 292, 43, 94, 347, 345, 323, 208, 281, 130, 366, 287, 68, 251, 82, 16, 233, 373, 92, 24, 55, 171, 95, 69, 101, 111, 167, 217, 262, 85, 135, 238, 310, 267, 184, 22, 59, 121, 330, 359, 308, 322, 211, 7, 304, 30, 324, 177, 317, 84, 81, 175, 205, 254, 134, 256, 4, 297, 118, 13, 344, 329, 165, 369, 100, 142, 57, 157, 337, 278, 61, 187, 315, 235, 224, 301, 364, 102, 39, 370, 138, 44, 189, 56, 164, 26, 199, 218, 195, 249, 148, 163, 109, 12, 128, 274, 338, 49, 352, 258, 334, 362, 259, 29, 91, 209, 367, 179, 33, 231, 70, 2, 122, 241, 296, 66, 183, 93, 42, 276, 372, 202, 196, 169, 75, 162, 99, 150, 371, 382, 341, 53, 40, 286, 86, 182, 74, 41, 215, 252, 38, 266, 78, 143, 180, 47, 27, 149, 71, 230, 190, 203, 289, 197, 105, 52, 277, 216, 307, 283, 365, 3, 178, 168, 79, 239, 221, 160, 280, 87, 133, 255, 214, 380, 17, 19, 185, 265, 282, 263, 232, 126, 264, 108, 250, 293, 210, 58, 377, 107, 376, 137, 60, 285, 18, 220, 106, 97, 227, 144, 62, 339, 125, 223, 201, 349, 381, 302] + 11: [284, 330, 56, 40, 88, 162, 303, 31, 126, 135, 309, 231, 166, 368, 366, 30, 23, 215, 62, 201, 257, 64, 191, 131, 91, 245, 189, 220, 273, 336, 228, 334, 369, 50, 216, 181, 109, 9, 261, 104, 122, 239, 212, 92, 12, 142, 372, 269, 248, 46, 331, 351, 7, 39, 287, 233, 246, 328, 318, 378, 36, 363, 314, 355, 358, 75, 120, 241, 356, 339, 348, 161, 345, 332, 71, 102, 26, 168, 133, 196, 177, 106, 95, 285, 361, 349, 244, 138, 105, 160, 167, 281, 48, 85, 37, 335, 121, 132, 63, 116, 193, 150, 34, 381, 129, 283, 380, 146, 178, 49, 267, 326, 252, 350, 195, 86, 186, 141, 21, 70, 297, 164, 367, 203, 190, 55, 152, 206, 147, 112, 289, 229, 59, 357, 325, 211, 383, 114, 10, 315, 176, 292, 28, 173, 288, 14, 298, 323, 179, 151, 18, 202, 371, 208, 52, 293, 73, 89, 54, 2, 342, 255, 247, 83, 197, 148, 156, 321, 6, 108, 306, 310, 329, 159, 221, 163, 96, 175, 317, 296, 130, 27, 103, 153, 53, 316, 290, 155, 286, 256, 338, 274, 107, 51, 237, 209, 47, 250, 80, 238, 324, 259, 171, 360, 169, 93, 243, 340, 320, 263, 374, 188, 44, 207, 319, 343, 182, 139, 58, 125, 11, 184, 275, 66, 67, 242, 158, 180, 277, 4, 365, 219, 307, 302, 42, 265, 234, 291, 185, 200, 110, 308, 41, 90, 94, 149, 15, 192, 154, 268, 199, 140, 353, 333, 376, 29, 118, 13, 157, 22, 272, 35, 344, 32, 144, 205, 198, 213, 214, 282, 222, 224, 294, 98, 17, 313, 123, 223, 74, 347, 117, 87, 230, 322, 266, 254, 16, 68, 377, 172, 232, 137, 375, 0, 278, 65, 183, 145, 352, 270, 258, 260, 124, 38, 97, 3, 235, 225, 264, 327, 57, 174, 312, 60, 187, 25, 100, 359, 226, 262, 127, 165, 136, 280, 43, 72, 364, 276, 84, 253, 143, 101, 8, 45, 194, 76, 218, 78, 210, 337, 119, 249, 240, 217, 111, 81, 300, 370, 77, 1, 295, 362, 20, 99, 346, 33, 128, 354, 299, 227, 5, 379, 305, 170, 236, 341, 301, 19, 279, 204, 134, 382, 61, 251, 304, 115, 311, 24, 69, 82, 113, 271, 79, 373] + 12: [226, 348, 188, 118, 382, 148, 306, 376, 305, 0, 321, 340, 247, 207, 242, 16, 21, 264, 251, 75, 65, 377, 243, 201, 236, 43, 196, 322, 373, 81, 38, 198, 175, 366, 225, 352, 272, 53, 47, 206, 383, 162, 106, 110, 372, 42, 72, 193, 120, 228, 82, 46, 335, 155, 303, 149, 221, 199, 87, 326, 122, 263, 98, 364, 91, 231, 345, 262, 180, 161, 33, 58, 337, 184, 217, 224, 339, 336, 222, 173, 62, 100, 125, 239, 300, 13, 61, 108, 147, 142, 79, 63, 375, 302, 24, 240, 354, 278, 168, 319, 261, 115, 45, 248, 15, 367, 165, 27, 69, 361, 365, 78, 49, 328, 292, 374, 44, 143, 332, 270, 327, 17, 344, 318, 356, 273, 338, 160, 154, 359, 208, 274, 166, 48, 102, 197, 237, 218, 131, 174, 86, 20, 271, 11, 19, 277, 172, 220, 29, 26, 358, 351, 204, 111, 258, 134, 378, 18, 200, 183, 296, 71, 113, 229, 140, 353, 135, 186, 381, 334, 6, 121, 89, 342, 195, 205, 307, 275, 159, 101, 25, 74, 103, 132, 294, 41, 141, 56, 151, 245, 171, 194, 301, 233, 252, 293, 325, 330, 346, 66, 265, 77, 260, 130, 73, 304, 298, 36, 355, 2, 259, 256, 10, 32, 97, 295, 216, 83, 150, 138, 54, 282, 114, 1, 241, 244, 8, 287, 104, 187, 37, 254, 40, 112, 227, 5, 9, 92, 129, 288, 324, 107, 219, 109, 308, 349, 192, 309, 105, 316, 167, 350, 4, 238, 182, 341, 315, 333, 317, 191, 234, 128, 290, 189, 357, 283, 84, 119, 31, 209, 99, 214, 67, 52, 211, 203, 280, 299, 169, 257, 12, 3, 291, 267, 285, 55, 281, 178, 255, 124, 30, 369, 331, 360, 314, 232, 116, 156, 177, 297, 313, 269, 117, 137, 127, 34, 284, 210, 50, 7, 268, 249, 23, 146, 250, 190, 22, 310, 126, 181, 286, 176, 133, 39, 170, 312, 136, 163, 363, 145, 60, 266, 347, 70, 230, 164, 343, 59, 76, 246, 94, 323, 320, 158, 212, 213, 68, 215, 88, 253, 57, 329, 362, 51, 289, 379, 380, 123, 179, 371, 64, 14, 276, 185, 139, 90, 152, 279, 235, 311, 95, 157, 368, 144, 153, 370, 96, 93, 80, 35, 202, 85, 28, 223] + 13: [286, 43, 255, 236, 357, 114, 296, 49, 157, 136, 31, 110, 37, 289, 108, 295, 300, 304, 366, 222, 284, 260, 193, 167, 16, 80, 263, 165, 331, 235, 237, 190, 90, 5, 50, 278, 188, 245, 365, 318, 60, 140, 84, 347, 230, 32, 146, 59, 45, 97, 0, 107, 358, 359, 56, 12, 360, 224, 233, 74, 223, 261, 161, 83, 22, 350, 71, 164, 171, 155, 312, 381, 334, 244, 180, 333, 216, 321, 363, 30, 220, 339, 19, 380, 225, 337, 232, 243, 162, 185, 351, 210, 99, 370, 202, 226, 137, 372, 98, 283, 249, 57, 10, 378, 106, 11, 369, 348, 170, 229, 209, 291, 288, 329, 335, 248, 182, 195, 72, 54, 341, 299, 58, 128, 376, 212, 95, 217, 264, 7, 268, 252, 250, 119, 375, 26, 192, 152, 206, 247, 349, 368, 175, 61, 38, 28, 371, 317, 262, 53, 269, 373, 203, 129, 280, 6, 144, 179, 92, 42, 352, 259, 111, 2, 41, 309, 297, 310, 184, 36, 147, 177, 238, 65, 149, 256, 142, 227, 121, 79, 343, 313, 266, 148, 298, 91, 105, 205, 316, 27, 20, 75, 320, 24, 362, 346, 197, 207, 89, 39, 327, 48, 169, 134, 281, 102, 93, 355, 228, 81, 126, 198, 267, 287, 199, 117, 257, 208, 293, 47, 215, 322, 40, 265, 231, 124, 213, 239, 101, 285, 383, 302, 379, 301, 324, 241, 187, 132, 145, 173, 338, 176, 1, 189, 340, 112, 86, 183, 273, 303, 133, 159, 125, 279, 8, 254, 18, 153, 68, 201, 270, 191, 82, 73, 367, 326, 294, 356, 113, 271, 76, 120, 9, 66, 364, 122, 194, 70, 156, 282, 52, 314, 62, 130, 29, 277, 306, 69, 290, 135, 174, 151, 104, 23, 342, 44, 131, 211, 139, 311, 116, 100, 33, 88, 17, 87, 181, 219, 143, 315, 138, 377, 118, 307, 292, 258, 345, 330, 14, 158, 246, 166, 178, 94, 103, 21, 234, 160, 200, 344, 127, 46, 85, 382, 55, 154, 319, 67, 253, 109, 51, 328, 204, 276, 64, 186, 275, 325, 123, 305, 323, 4, 221, 308, 35, 168, 251, 115, 240, 374, 25, 34, 13, 274, 353, 77, 196, 214, 150, 361, 15, 163, 78, 96, 141, 332, 336, 3, 218, 172, 354, 272, 242, 63] + 14: [147, 299, 363, 274, 31, 183, 254, 237, 233, 93, 141, 77, 279, 187, 63, 120, 167, 124, 246, 189, 153, 97, 71, 382, 221, 166, 86, 148, 68, 297, 112, 126, 204, 245, 315, 144, 311, 80, 170, 174, 139, 238, 216, 12, 249, 152, 136, 107, 70, 383, 40, 360, 286, 176, 21, 104, 328, 367, 206, 37, 350, 151, 203, 111, 253, 242, 46, 312, 89, 160, 163, 137, 146, 226, 306, 182, 244, 211, 222, 90, 317, 78, 335, 72, 117, 234, 59, 336, 13, 255, 270, 0, 230, 240, 103, 252, 20, 130, 30, 159, 57, 351, 69, 308, 197, 355, 178, 47, 88, 142, 199, 340, 338, 193, 62, 17, 235, 264, 354, 155, 113, 353, 150, 118, 344, 95, 378, 369, 320, 177, 201, 380, 1, 241, 35, 108, 368, 329, 273, 83, 302, 293, 379, 236, 2, 269, 346, 231, 342, 356, 227, 250, 381, 44, 181, 101, 374, 36, 316, 323, 261, 34, 310, 313, 243, 358, 341, 198, 364, 190, 33, 213, 73, 331, 79, 18, 333, 7, 43, 172, 224, 41, 22, 5, 131, 82, 119, 212, 115, 132, 324, 272, 110, 175, 53, 372, 98, 330, 256, 268, 123, 359, 188, 375, 171, 125, 164, 145, 143, 184, 239, 6, 345, 23, 158, 168, 66, 205, 287, 280, 94, 303, 49, 334, 127, 105, 106, 61, 220, 129, 209, 357, 214, 361, 251, 165, 45, 309, 314, 318, 8, 248, 14, 288, 289, 32, 100, 271, 3, 307, 4, 64, 56, 186, 67, 134, 161, 281, 219, 229, 169, 276, 266, 282, 291, 149, 65, 39, 51, 352, 55, 362, 366, 262, 140, 81, 26, 11, 365, 91, 38, 218, 133, 29, 278, 19, 84, 339, 154, 116, 275, 54, 195, 305, 157, 76, 332, 74, 10, 194, 135, 300, 296, 301, 294, 347, 327, 377, 180, 99, 192, 207, 348, 16, 75, 225, 196, 259, 42, 370, 179, 138, 202, 173, 185, 285, 325, 376, 267, 373, 87, 290, 9, 257, 283, 260, 371, 208, 52, 292, 298, 122, 28, 25, 15, 24, 102, 50, 349, 92, 60, 85, 343, 265, 247, 109, 322, 319, 326, 304, 210, 321, 337, 58, 263, 200, 162, 27, 223, 191, 128, 232, 215, 277, 48, 96, 228, 284, 114, 217, 258, 295, 156, 121] + 15: [148, 211, 146, 359, 229, 259, 45, 33, 280, 193, 231, 86, 252, 48, 225, 61, 140, 92, 27, 345, 278, 179, 195, 332, 114, 40, 329, 8, 373, 57, 100, 170, 188, 372, 131, 22, 41, 75, 46, 171, 85, 214, 220, 368, 108, 127, 144, 118, 266, 139, 331, 269, 160, 182, 242, 327, 364, 350, 2, 201, 125, 196, 70, 71, 9, 203, 83, 190, 215, 161, 39, 238, 65, 338, 116, 249, 279, 268, 369, 177, 122, 378, 165, 283, 226, 38, 95, 50, 7, 222, 176, 156, 216, 163, 183, 53, 130, 168, 239, 254, 64, 284, 153, 158, 275, 210, 246, 311, 370, 189, 67, 157, 217, 109, 255, 155, 136, 287, 377, 36, 315, 381, 149, 318, 58, 348, 277, 205, 138, 173, 343, 253, 336, 72, 322, 314, 323, 180, 97, 63, 307, 321, 235, 142, 375, 187, 25, 305, 326, 19, 44, 371, 35, 13, 365, 334, 271, 28, 306, 320, 376, 152, 15, 4, 273, 89, 105, 120, 18, 232, 344, 325, 250, 258, 248, 261, 379, 81, 111, 358, 281, 288, 263, 335, 66, 137, 240, 337, 312, 69, 6, 243, 11, 352, 317, 367, 78, 159, 77, 241, 68, 151, 304, 34, 166, 94, 30, 178, 221, 129, 113, 47, 126, 43, 380, 82, 184, 299, 181, 351, 340, 164, 247, 124, 169, 121, 207, 132, 52, 267, 212, 147, 208, 103, 341, 274, 21, 356, 199, 73, 107, 186, 227, 349, 143, 123, 1, 12, 174, 251, 106, 374, 175, 297, 0, 197, 112, 202, 290, 282, 206, 324, 309, 134, 204, 14, 102, 32, 219, 302, 145, 24, 29, 363, 286, 93, 342, 310, 154, 260, 355, 262, 276, 328, 110, 99, 198, 98, 119, 319, 141, 192, 362, 90, 361, 347, 298, 264, 80, 330, 296, 87, 60, 353, 295, 88, 54, 3, 333, 230, 256, 357, 79, 209, 74, 117, 383, 245, 51, 16, 96, 194, 382, 234, 62, 313, 301, 172, 59, 223, 354, 346, 10, 191, 26, 366, 37, 55, 167, 84, 76, 300, 233, 270, 128, 56, 133, 135, 291, 42, 23, 162, 213, 200, 224, 236, 293, 101, 257, 218, 20, 360, 31, 49, 339, 285, 150, 115, 316, 5, 265, 308, 237, 91, 272, 185, 104, 228, 289, 292, 303, 244, 17, 294] + 16: [27, 69, 382, 78, 101, 54, 341, 308, 90, 32, 199, 322, 129, 55, 305, 371, 195, 379, 81, 232, 367, 285, 121, 180, 158, 354, 120, 88, 167, 193, 170, 188, 164, 46, 130, 108, 40, 298, 194, 48, 87, 353, 149, 340, 307, 350, 35, 72, 272, 312, 335, 338, 85, 114, 74, 317, 52, 328, 75, 79, 281, 228, 115, 332, 178, 233, 165, 370, 26, 21, 243, 184, 76, 152, 5, 252, 25, 250, 119, 95, 334, 330, 211, 7, 383, 57, 37, 253, 159, 39, 304, 70, 151, 244, 309, 266, 16, 145, 255, 222, 17, 139, 142, 280, 226, 67, 239, 365, 227, 41, 337, 59, 8, 92, 105, 331, 261, 73, 176, 20, 220, 45, 99, 126, 205, 110, 19, 150, 362, 102, 351, 259, 302, 3, 256, 53, 18, 156, 36, 4, 122, 217, 127, 380, 286, 66, 271, 348, 141, 275, 268, 273, 189, 315, 64, 80, 134, 29, 209, 65, 174, 311, 223, 153, 310, 0, 172, 248, 93, 196, 378, 320, 43, 336, 124, 377, 216, 295, 325, 173, 63, 187, 212, 368, 186, 140, 135, 98, 12, 28, 116, 215, 23, 143, 138, 270, 291, 229, 100, 224, 6, 346, 44, 201, 113, 137, 269, 339, 22, 297, 221, 169, 183, 287, 279, 267, 198, 242, 230, 125, 284, 97, 375, 161, 299, 175, 157, 236, 321, 58, 352, 185, 179, 313, 349, 2, 62, 191, 294, 376, 77, 369, 86, 96, 11, 237, 47, 329, 277, 264, 245, 13, 207, 91, 181, 106, 49, 210, 372, 324, 300, 190, 342, 163, 171, 51, 197, 50, 14, 246, 118, 323, 200, 123, 117, 83, 208, 71, 355, 225, 265, 292, 276, 112, 333, 214, 192, 131, 326, 144, 166, 33, 15, 60, 42, 177, 235, 56, 162, 203, 381, 318, 282, 38, 136, 278, 288, 146, 34, 10, 89, 356, 359, 111, 289, 319, 147, 366, 274, 160, 374, 343, 213, 68, 231, 128, 82, 373, 148, 247, 241, 61, 314, 133, 94, 263, 84, 251, 316, 234, 358, 303, 1, 107, 206, 347, 257, 364, 290, 154, 357, 254, 283, 132, 103, 293, 301, 306, 182, 168, 296, 360, 219, 9, 204, 202, 260, 258, 104, 109, 218, 31, 238, 30, 262, 327, 240, 345, 24, 361, 249, 155, 344, 363] + 17: [246, 297, 217, 214, 73, 370, 116, 260, 289, 290, 250, 124, 366, 106, 191, 373, 110, 89, 318, 212, 117, 292, 275, 261, 101, 56, 356, 192, 348, 230, 55, 288, 305, 42, 249, 278, 328, 209, 71, 291, 181, 54, 316, 265, 325, 326, 202, 21, 232, 59, 337, 132, 300, 20, 241, 126, 374, 240, 343, 200, 371, 177, 24, 53, 114, 306, 329, 36, 19, 95, 146, 65, 152, 137, 157, 225, 108, 87, 175, 313, 103, 268, 156, 60, 333, 310, 342, 360, 382, 70, 237, 64, 205, 341, 320, 295, 294, 319, 40, 252, 119, 188, 62, 359, 154, 338, 242, 303, 330, 3, 182, 112, 220, 233, 255, 273, 170, 296, 352, 10, 140, 365, 107, 184, 43, 282, 251, 259, 223, 216, 63, 286, 111, 332, 368, 41, 161, 257, 159, 74, 47, 169, 339, 353, 141, 314, 113, 279, 340, 99, 207, 8, 254, 17, 115, 263, 51, 215, 57, 226, 135, 44, 248, 284, 153, 307, 12, 211, 362, 76, 180, 29, 349, 309, 142, 176, 201, 336, 247, 378, 304, 270, 178, 32, 102, 377, 72, 84, 183, 204, 358, 354, 46, 327, 138, 229, 355, 315, 274, 244, 94, 256, 133, 375, 79, 335, 231, 83, 206, 164, 267, 5, 15, 324, 0, 346, 344, 129, 130, 50, 350, 381, 208, 345, 235, 185, 361, 131, 172, 190, 85, 150, 280, 322, 109, 210, 299, 68, 77, 195, 236, 269, 144, 49, 100, 238, 272, 189, 104, 347, 160, 26, 30, 38, 193, 179, 227, 14, 93, 120, 224, 258, 7, 173, 264, 198, 312, 69, 98, 379, 277, 11, 213, 149, 48, 37, 163, 75, 1, 186, 145, 45, 80, 287, 302, 321, 90, 196, 158, 4, 293, 218, 155, 380, 35, 2, 245, 33, 13, 165, 23, 58, 162, 22, 134, 39, 6, 147, 97, 262, 136, 61, 82, 168, 364, 31, 28, 234, 357, 239, 372, 197, 166, 276, 266, 308, 121, 86, 127, 219, 351, 281, 301, 148, 151, 203, 174, 52, 311, 118, 298, 228, 27, 243, 125, 383, 222, 271, 91, 128, 194, 16, 9, 367, 317, 25, 285, 78, 143, 105, 34, 187, 171, 92, 123, 81, 167, 334, 199, 369, 363, 221, 331, 323, 376, 67, 88, 283, 96, 139, 122, 253, 18, 66] + 18: [139, 90, 150, 244, 43, 174, 324, 100, 201, 120, 357, 321, 121, 346, 261, 215, 155, 47, 200, 292, 162, 31, 209, 125, 373, 189, 193, 344, 5, 365, 88, 293, 17, 212, 284, 1, 126, 327, 117, 269, 352, 258, 0, 235, 281, 226, 248, 268, 271, 104, 136, 236, 280, 99, 354, 111, 146, 36, 61, 79, 65, 257, 251, 89, 368, 64, 196, 37, 142, 156, 115, 202, 114, 58, 116, 348, 337, 80, 92, 278, 141, 119, 51, 54, 187, 287, 95, 211, 336, 4, 295, 170, 24, 123, 309, 273, 315, 77, 33, 319, 307, 376, 217, 299, 256, 14, 113, 149, 320, 241, 96, 313, 297, 75, 303, 163, 214, 263, 18, 275, 102, 175, 332, 82, 161, 21, 289, 322, 290, 179, 252, 267, 195, 127, 60, 360, 29, 372, 274, 230, 330, 249, 325, 250, 134, 151, 342, 105, 26, 349, 190, 270, 124, 279, 253, 314, 326, 171, 181, 377, 232, 191, 218, 364, 380, 137, 221, 74, 112, 19, 50, 356, 48, 350, 277, 233, 363, 122, 130, 145, 108, 63, 168, 186, 288, 160, 180, 101, 140, 67, 370, 93, 167, 331, 178, 243, 298, 42, 32, 106, 11, 304, 328, 12, 76, 355, 6, 343, 165, 382, 30, 41, 118, 347, 131, 375, 210, 2, 132, 341, 294, 310, 198, 182, 87, 39, 56, 312, 245, 176, 157, 231, 129, 264, 143, 147, 254, 86, 83, 358, 286, 135, 351, 223, 359, 78, 185, 213, 205, 318, 192, 208, 70, 69, 73, 224, 306, 225, 301, 378, 144, 22, 133, 361, 94, 335, 255, 34, 237, 40, 329, 199, 3, 107, 353, 173, 91, 367, 166, 23, 311, 197, 366, 222, 194, 85, 97, 242, 283, 53, 103, 110, 300, 246, 282, 272, 44, 334, 229, 109, 68, 159, 72, 169, 177, 138, 371, 276, 316, 247, 172, 55, 285, 219, 228, 188, 183, 381, 154, 216, 317, 362, 20, 46, 239, 338, 379, 81, 203, 153, 38, 302, 62, 266, 340, 128, 152, 7, 383, 339, 148, 10, 291, 98, 265, 308, 260, 45, 35, 240, 206, 220, 28, 323, 207, 305, 204, 25, 9, 374, 16, 234, 164, 52, 71, 369, 15, 238, 13, 49, 84, 8, 59, 296, 333, 262, 227, 27, 345, 57, 158, 259, 66, 184] + 19: [313, 234, 177, 349, 30, 41, 339, 114, 238, 144, 52, 282, 364, 86, 302, 357, 165, 48, 102, 140, 12, 315, 240, 33, 92, 383, 64, 108, 248, 309, 243, 305, 210, 333, 71, 274, 317, 286, 99, 221, 10, 228, 269, 138, 250, 329, 370, 355, 68, 39, 19, 55, 311, 2, 288, 164, 323, 82, 246, 101, 237, 316, 297, 197, 97, 335, 314, 0, 11, 275, 318, 132, 284, 206, 201, 150, 35, 220, 369, 3, 176, 255, 347, 49, 195, 381, 129, 46, 194, 200, 98, 326, 371, 34, 320, 155, 7, 66, 291, 331, 207, 299, 321, 279, 208, 80, 23, 183, 193, 1, 203, 166, 8, 181, 93, 5, 372, 59, 149, 376, 118, 382, 167, 218, 215, 147, 79, 84, 123, 121, 32, 368, 252, 247, 127, 232, 4, 375, 136, 128, 245, 76, 308, 103, 24, 88, 112, 244, 266, 51, 280, 91, 330, 54, 160, 251, 141, 189, 107, 20, 217, 74, 159, 361, 227, 199, 96, 173, 174, 153, 152, 249, 273, 235, 267, 348, 202, 60, 293, 21, 362, 209, 346, 37, 359, 100, 69, 268, 374, 146, 344, 175, 161, 67, 292, 111, 6, 262, 26, 337, 171, 366, 352, 303, 58, 151, 186, 214, 294, 312, 184, 287, 14, 363, 126, 145, 301, 322, 341, 192, 50, 139, 95, 379, 143, 272, 47, 340, 351, 36, 263, 277, 233, 56, 319, 205, 163, 229, 72, 261, 367, 134, 44, 350, 264, 310, 265, 27, 231, 285, 219, 260, 222, 377, 307, 353, 13, 182, 343, 17, 116, 135, 131, 239, 29, 31, 81, 117, 298, 365, 270, 94, 281, 356, 133, 43, 325, 358, 62, 271, 110, 169, 327, 230, 25, 122, 225, 53, 22, 120, 105, 104, 213, 63, 70, 258, 130, 304, 256, 204, 28, 241, 61, 187, 259, 300, 179, 157, 45, 336, 170, 142, 334, 211, 242, 106, 115, 290, 345, 342, 75, 113, 257, 65, 360, 254, 332, 223, 109, 87, 137, 16, 18, 324, 78, 124, 190, 191, 212, 90, 276, 306, 226, 42, 373, 15, 57, 328, 295, 162, 73, 338, 180, 158, 77, 9, 216, 89, 38, 185, 289, 172, 83, 154, 188, 85, 296, 278, 378, 354, 168, 125, 178, 380, 148, 156, 198, 283, 196, 40, 253, 119, 224, 236] + 20: [381, 121, 40, 216, 359, 366, 320, 267, 315, 101, 258, 98, 248, 35, 309, 132, 157, 149, 9, 372, 343, 284, 217, 198, 314, 274, 181, 294, 223, 261, 321, 63, 316, 5, 127, 251, 347, 167, 297, 249, 52, 328, 12, 214, 281, 288, 61, 72, 161, 120, 291, 105, 322, 112, 205, 78, 371, 357, 246, 252, 233, 79, 29, 45, 168, 144, 176, 32, 26, 351, 272, 197, 10, 59, 268, 358, 290, 192, 146, 148, 349, 163, 285, 135, 266, 103, 199, 255, 97, 156, 350, 151, 262, 269, 218, 131, 4, 292, 173, 16, 145, 43, 55, 90, 153, 352, 211, 362, 46, 275, 209, 130, 165, 225, 138, 106, 227, 113, 208, 28, 270, 354, 86, 196, 124, 44, 247, 18, 58, 128, 85, 76, 219, 212, 117, 0, 203, 338, 345, 107, 265, 383, 41, 162, 369, 116, 287, 187, 184, 308, 278, 306, 259, 195, 317, 245, 94, 380, 141, 95, 115, 177, 204, 57, 39, 69, 91, 160, 102, 111, 323, 51, 325, 24, 7, 174, 368, 329, 206, 271, 13, 179, 73, 71, 310, 348, 286, 27, 326, 253, 137, 242, 376, 49, 1, 50, 307, 2, 277, 374, 183, 66, 289, 240, 303, 264, 280, 77, 164, 257, 243, 318, 364, 298, 67, 104, 370, 170, 169, 89, 60, 220, 236, 375, 231, 166, 110, 123, 190, 147, 36, 365, 14, 62, 230, 17, 64, 260, 118, 189, 193, 337, 37, 185, 140, 109, 53, 346, 172, 125, 154, 19, 378, 224, 136, 334, 301, 222, 178, 25, 180, 6, 279, 336, 182, 175, 296, 47, 99, 300, 33, 74, 114, 331, 324, 299, 42, 191, 126, 88, 340, 143, 159, 56, 150, 221, 344, 330, 363, 186, 327, 353, 273, 228, 171, 305, 202, 21, 226, 232, 134, 256, 235, 335, 22, 92, 313, 342, 304, 254, 367, 3, 341, 311, 133, 158, 34, 360, 250, 237, 20, 200, 54, 207, 244, 319, 68, 11, 234, 139, 382, 283, 355, 129, 263, 213, 379, 282, 188, 83, 75, 332, 119, 30, 87, 122, 302, 201, 194, 377, 238, 295, 339, 8, 229, 293, 155, 15, 210, 142, 81, 361, 23, 100, 108, 356, 93, 312, 333, 38, 48, 82, 65, 239, 84, 96, 215, 373, 31, 152, 80, 276, 70, 241] + 21: [197, 194, 307, 203, 23, 1, 254, 242, 279, 190, 9, 128, 281, 308, 243, 255, 149, 270, 5, 124, 166, 132, 238, 224, 95, 256, 247, 375, 6, 290, 244, 147, 39, 367, 170, 229, 21, 354, 216, 7, 319, 127, 44, 32, 195, 228, 334, 301, 372, 3, 333, 234, 92, 260, 329, 157, 296, 174, 314, 111, 50, 237, 76, 182, 0, 115, 121, 357, 52, 14, 204, 298, 88, 368, 292, 163, 336, 266, 184, 330, 120, 110, 196, 346, 191, 168, 241, 72, 326, 106, 58, 258, 217, 350, 136, 93, 103, 63, 160, 145, 133, 245, 15, 11, 343, 153, 70, 325, 78, 289, 99, 65, 363, 348, 202, 25, 294, 71, 4, 287, 189, 225, 155, 361, 302, 37, 322, 268, 10, 222, 108, 251, 41, 259, 215, 383, 49, 212, 252, 342, 282, 35, 327, 54, 263, 232, 249, 169, 341, 151, 148, 113, 358, 31, 177, 313, 277, 376, 59, 172, 355, 16, 90, 214, 55, 273, 77, 129, 164, 339, 303, 173, 178, 26, 62, 291, 344, 146, 142, 107, 40, 193, 109, 269, 235, 60, 24, 100, 56, 274, 85, 187, 20, 230, 28, 57, 79, 83, 91, 22, 286, 223, 218, 210, 209, 84, 165, 349, 316, 179, 353, 250, 43, 125, 364, 86, 175, 380, 114, 206, 304, 12, 42, 317, 112, 264, 331, 13, 359, 68, 340, 374, 261, 305, 176, 324, 135, 362, 34, 219, 257, 87, 158, 299, 188, 69, 161, 64, 284, 318, 137, 66, 208, 211, 236, 377, 45, 29, 221, 370, 369, 82, 366, 248, 239, 338, 309, 33, 272, 280, 321, 240, 381, 220, 332, 27, 154, 183, 46, 143, 306, 288, 378, 310, 61, 192, 231, 123, 371, 320, 94, 47, 139, 75, 227, 360, 96, 185, 119, 186, 2, 162, 130, 351, 312, 97, 152, 267, 144, 373, 171, 207, 80, 275, 345, 131, 352, 181, 134, 315, 246, 74, 293, 73, 337, 271, 297, 300, 311, 285, 36, 265, 105, 347, 102, 198, 199, 101, 38, 167, 18, 262, 51, 48, 53, 159, 295, 253, 89, 116, 19, 17, 328, 233, 126, 226, 67, 205, 365, 30, 150, 323, 138, 81, 141, 356, 104, 117, 382, 122, 140, 200, 283, 335, 118, 180, 278, 379, 8, 213, 276, 156, 201, 98] + 22: [316, 294, 292, 330, 151, 188, 280, 44, 260, 132, 76, 325, 51, 356, 337, 383, 347, 372, 358, 341, 115, 338, 189, 271, 314, 262, 266, 300, 350, 52, 71, 11, 16, 324, 197, 256, 1, 35, 47, 46, 53, 234, 119, 245, 136, 354, 0, 297, 261, 60, 174, 216, 298, 28, 232, 27, 10, 26, 3, 331, 34, 29, 89, 78, 369, 54, 333, 351, 228, 339, 120, 175, 158, 84, 163, 64, 231, 303, 113, 257, 334, 18, 142, 83, 66, 103, 186, 140, 363, 205, 239, 2, 310, 14, 162, 107, 254, 90, 281, 99, 97, 225, 114, 65, 268, 183, 156, 79, 101, 153, 376, 178, 58, 344, 92, 100, 209, 304, 309, 193, 192, 131, 32, 375, 212, 159, 366, 77, 133, 321, 85, 15, 50, 190, 171, 202, 267, 168, 146, 121, 265, 43, 203, 208, 278, 221, 56, 198, 13, 108, 201, 68, 86, 335, 37, 332, 328, 374, 214, 284, 144, 69, 315, 112, 352, 249, 253, 367, 117, 25, 118, 191, 22, 277, 307, 320, 96, 287, 38, 6, 224, 149, 173, 345, 130, 91, 187, 353, 243, 211, 70, 250, 361, 230, 24, 318, 371, 138, 252, 355, 317, 160, 349, 236, 184, 274, 170, 147, 377, 4, 259, 72, 215, 233, 57, 285, 33, 88, 229, 357, 49, 279, 7, 93, 128, 87, 104, 94, 126, 362, 227, 45, 8, 248, 55, 196, 12, 217, 247, 62, 141, 42, 348, 263, 5, 219, 364, 82, 179, 343, 123, 155, 134, 242, 336, 311, 181, 194, 111, 48, 270, 226, 342, 326, 164, 41, 137, 282, 75, 169, 213, 251, 373, 223, 240, 235, 127, 275, 40, 165, 218, 143, 286, 81, 290, 255, 154, 30, 110, 73, 276, 258, 74, 200, 322, 299, 199, 195, 63, 207, 210, 246, 109, 283, 264, 177, 222, 19, 20, 273, 359, 296, 237, 368, 306, 340, 167, 124, 378, 379, 116, 152, 102, 380, 180, 67, 313, 308, 36, 293, 161, 182, 185, 23, 157, 176, 381, 319, 365, 204, 172, 61, 59, 360, 295, 382, 238, 329, 95, 220, 327, 305, 125, 150, 288, 9, 148, 206, 80, 139, 291, 244, 122, 135, 98, 17, 105, 302, 301, 370, 269, 31, 106, 21, 166, 129, 39, 145, 346, 241, 272, 289, 323, 312] + 23: [194, 262, 328, 364, 241, 311, 174, 314, 91, 251, 376, 272, 43, 157, 377, 184, 297, 357, 316, 207, 298, 379, 308, 191, 14, 254, 73, 34, 95, 299, 37, 276, 339, 136, 88, 332, 130, 310, 139, 138, 235, 230, 35, 183, 242, 366, 81, 110, 42, 306, 113, 149, 378, 57, 345, 173, 31, 225, 131, 318, 54, 177, 107, 195, 185, 80, 375, 313, 263, 159, 228, 160, 286, 6, 229, 151, 53, 72, 256, 9, 322, 64, 266, 347, 227, 232, 341, 351, 327, 178, 296, 293, 371, 363, 325, 165, 255, 180, 289, 342, 10, 321, 50, 290, 275, 278, 197, 114, 243, 301, 171, 52, 300, 343, 119, 18, 141, 86, 0, 153, 213, 190, 202, 68, 292, 32, 287, 41, 247, 132, 161, 87, 154, 58, 150, 7, 246, 333, 236, 166, 158, 193, 63, 372, 155, 249, 27, 176, 238, 135, 67, 352, 128, 201, 13, 168, 380, 346, 237, 331, 305, 312, 307, 97, 226, 382, 5, 281, 260, 19, 330, 199, 60, 283, 143, 205, 285, 258, 367, 122, 23, 203, 20, 261, 344, 198, 82, 79, 210, 49, 381, 224, 212, 304, 126, 59, 270, 257, 29, 182, 358, 265, 288, 30, 17, 133, 337, 65, 295, 115, 38, 356, 11, 315, 220, 361, 348, 71, 280, 78, 373, 248, 302, 21, 282, 47, 62, 39, 129, 273, 103, 354, 374, 46, 219, 61, 245, 336, 117, 169, 192, 127, 209, 264, 26, 84, 147, 8, 365, 234, 124, 218, 56, 104, 355, 370, 329, 101, 217, 125, 156, 252, 186, 204, 359, 2, 244, 269, 320, 189, 271, 350, 33, 163, 96, 76, 106, 44, 152, 108, 274, 105, 109, 36, 214, 360, 90, 15, 353, 240, 98, 100, 216, 1, 51, 134, 75, 102, 215, 279, 221, 3, 317, 259, 162, 24, 179, 89, 120, 142, 284, 323, 233, 146, 326, 40, 69, 334, 368, 267, 222, 112, 66, 188, 294, 16, 92, 208, 369, 187, 45, 111, 83, 140, 268, 340, 48, 362, 123, 121, 181, 70, 12, 223, 137, 309, 74, 116, 349, 148, 175, 85, 200, 335, 196, 93, 25, 94, 164, 231, 250, 28, 383, 303, 319, 324, 211, 239, 167, 206, 99, 170, 55, 4, 145, 172, 22, 118, 338, 277, 77, 144, 291, 253] + 24: [186, 234, 354, 258, 35, 236, 133, 207, 273, 336, 121, 231, 62, 310, 208, 18, 280, 131, 24, 161, 47, 243, 44, 233, 193, 97, 67, 331, 107, 318, 104, 291, 127, 75, 125, 373, 240, 178, 143, 2, 90, 155, 152, 19, 76, 314, 198, 264, 70, 39, 78, 154, 366, 138, 347, 59, 21, 66, 6, 4, 15, 166, 235, 210, 112, 195, 101, 49, 338, 173, 376, 14, 357, 209, 371, 274, 353, 165, 153, 84, 380, 130, 239, 311, 238, 43, 197, 250, 349, 174, 74, 17, 132, 180, 29, 194, 61, 307, 266, 332, 228, 81, 123, 68, 135, 382, 283, 222, 159, 251, 139, 325, 260, 160, 358, 356, 54, 12, 375, 105, 293, 176, 342, 288, 369, 28, 324, 202, 60, 217, 312, 196, 36, 359, 340, 215, 201, 100, 71, 199, 227, 329, 322, 69, 9, 341, 20, 182, 142, 221, 259, 247, 45, 52, 150, 16, 279, 37, 33, 3, 53, 308, 114, 262, 91, 31, 13, 164, 147, 128, 292, 41, 77, 379, 225, 257, 229, 46, 170, 87, 363, 364, 98, 120, 254, 248, 270, 327, 124, 298, 219, 333, 136, 7, 348, 220, 230, 192, 40, 282, 119, 111, 334, 1, 330, 372, 268, 355, 216, 276, 346, 290, 51, 316, 149, 99, 378, 8, 344, 80, 188, 245, 303, 171, 335, 185, 79, 253, 309, 89, 345, 56, 187, 57, 267, 368, 58, 167, 86, 256, 299, 351, 252, 362, 168, 365, 92, 295, 122, 285, 72, 118, 129, 287, 360, 224, 175, 50, 328, 381, 30, 244, 145, 172, 183, 205, 269, 117, 218, 73, 23, 162, 102, 109, 48, 343, 10, 177, 179, 206, 377, 300, 42, 323, 141, 181, 103, 242, 246, 88, 22, 302, 55, 374, 265, 212, 157, 163, 116, 106, 63, 226, 144, 277, 191, 83, 339, 156, 204, 26, 296, 313, 126, 237, 286, 213, 297, 304, 64, 140, 241, 32, 113, 134, 169, 146, 249, 301, 281, 189, 25, 82, 151, 137, 361, 200, 190, 0, 65, 158, 326, 306, 38, 255, 27, 95, 272, 370, 203, 284, 337, 184, 211, 96, 93, 350, 94, 319, 110, 85, 261, 317, 294, 367, 289, 214, 11, 315, 223, 34, 263, 148, 305, 271, 5, 278, 321, 232, 383, 108, 275, 320, 352, 115] + 25: [315, 133, 326, 114, 115, 23, 248, 27, 299, 183, 236, 338, 371, 364, 380, 365, 99, 211, 239, 335, 120, 127, 157, 249, 3, 73, 132, 40, 373, 112, 293, 71, 374, 258, 266, 108, 262, 370, 95, 6, 160, 156, 129, 283, 356, 123, 91, 188, 353, 97, 110, 43, 247, 171, 233, 349, 25, 80, 278, 376, 154, 116, 242, 310, 68, 200, 4, 139, 328, 322, 63, 16, 318, 150, 189, 272, 103, 281, 141, 41, 128, 89, 98, 261, 213, 19, 118, 152, 147, 215, 12, 358, 257, 320, 286, 206, 334, 9, 94, 220, 173, 121, 226, 109, 24, 13, 10, 216, 51, 306, 136, 46, 202, 86, 158, 179, 254, 362, 336, 317, 143, 307, 146, 232, 240, 357, 250, 350, 84, 284, 35, 106, 8, 28, 383, 378, 311, 172, 140, 122, 137, 151, 195, 303, 279, 37, 280, 60, 276, 265, 56, 164, 230, 263, 324, 64, 22, 104, 14, 153, 369, 269, 245, 155, 124, 192, 81, 228, 170, 5, 203, 231, 76, 2, 219, 191, 225, 142, 180, 96, 87, 166, 185, 187, 359, 297, 163, 292, 194, 234, 50, 169, 366, 294, 214, 271, 145, 379, 34, 259, 7, 274, 332, 375, 348, 184, 351, 291, 235, 267, 229, 1, 222, 209, 330, 33, 368, 367, 26, 270, 32, 273, 264, 352, 30, 196, 38, 363, 90, 178, 165, 277, 205, 227, 111, 224, 327, 198, 176, 75, 162, 282, 223, 305, 355, 314, 337, 159, 197, 319, 252, 182, 59, 113, 66, 125, 58, 144, 300, 48, 20, 341, 88, 44, 253, 77, 130, 333, 354, 15, 67, 117, 251, 295, 74, 290, 260, 344, 325, 193, 360, 339, 323, 288, 221, 92, 285, 119, 62, 72, 82, 100, 61, 296, 69, 70, 42, 138, 131, 312, 57, 246, 372, 308, 17, 347, 321, 79, 237, 190, 47, 105, 208, 204, 210, 31, 244, 21, 54, 382, 313, 0, 304, 243, 217, 241, 174, 298, 181, 186, 377, 212, 177, 168, 255, 167, 175, 29, 346, 199, 342, 256, 53, 49, 107, 218, 102, 161, 18, 11, 301, 268, 45, 52, 93, 331, 135, 55, 309, 85, 207, 238, 134, 340, 343, 381, 101, 78, 316, 39, 345, 287, 302, 275, 149, 126, 361, 36, 65, 83, 201, 289, 148, 329] + 26: [265, 101, 369, 31, 204, 62, 196, 95, 167, 131, 340, 163, 381, 320, 180, 16, 26, 334, 225, 152, 89, 344, 352, 291, 50, 93, 241, 363, 111, 360, 326, 207, 74, 29, 96, 345, 49, 370, 103, 12, 85, 267, 147, 208, 350, 309, 57, 169, 217, 127, 275, 123, 195, 211, 250, 279, 262, 318, 173, 337, 172, 248, 142, 67, 13, 293, 82, 367, 266, 236, 223, 273, 282, 317, 307, 8, 73, 328, 126, 83, 160, 143, 257, 109, 47, 17, 189, 54, 98, 235, 65, 71, 287, 46, 366, 139, 53, 315, 76, 249, 129, 306, 138, 59, 102, 242, 92, 80, 357, 155, 104, 228, 205, 114, 0, 206, 325, 43, 87, 312, 261, 186, 64, 294, 24, 302, 378, 159, 251, 171, 9, 37, 187, 281, 202, 78, 75, 247, 218, 379, 81, 22, 121, 288, 183, 342, 105, 201, 274, 182, 108, 51, 166, 313, 200, 269, 20, 355, 254, 100, 258, 146, 383, 48, 224, 230, 79, 158, 63, 77, 185, 382, 134, 66, 333, 45, 52, 284, 268, 311, 303, 5, 347, 300, 40, 358, 372, 115, 35, 133, 297, 305, 149, 130, 335, 132, 61, 88, 176, 170, 332, 194, 15, 356, 231, 198, 341, 175, 18, 213, 107, 179, 165, 308, 238, 260, 6, 32, 316, 271, 222, 354, 343, 277, 193, 240, 2, 243, 106, 1, 283, 148, 210, 219, 322, 68, 11, 91, 3, 203, 70, 298, 69, 145, 232, 125, 7, 34, 286, 94, 58, 38, 184, 321, 30, 239, 276, 97, 215, 339, 375, 192, 331, 137, 154, 237, 140, 162, 371, 329, 14, 72, 41, 351, 310, 227, 23, 327, 55, 353, 56, 234, 116, 255, 362, 119, 60, 368, 214, 27, 191, 319, 212, 285, 380, 314, 270, 124, 110, 33, 280, 365, 361, 21, 278, 28, 376, 156, 36, 290, 349, 190, 99, 113, 25, 359, 253, 330, 233, 188, 292, 323, 199, 122, 168, 141, 264, 336, 301, 324, 42, 10, 377, 252, 112, 209, 153, 136, 229, 304, 178, 338, 44, 256, 90, 244, 299, 144, 117, 161, 221, 245, 174, 246, 164, 120, 364, 135, 272, 151, 150, 118, 181, 226, 177, 216, 220, 39, 157, 374, 263, 197, 4, 128, 348, 84, 289, 373, 295, 19, 346, 259, 296, 86] + 27: [103, 110, 351, 48, 266, 211, 327, 183, 382, 117, 51, 83, 199, 126, 273, 157, 36, 309, 71, 38, 286, 68, 259, 359, 78, 122, 1, 144, 79, 20, 272, 121, 60, 158, 192, 298, 182, 276, 27, 203, 310, 302, 311, 22, 57, 255, 8, 209, 131, 72, 164, 345, 114, 34, 377, 113, 44, 280, 62, 2, 193, 67, 217, 271, 136, 268, 181, 77, 147, 32, 155, 352, 350, 348, 295, 262, 179, 304, 55, 274, 188, 28, 323, 207, 194, 184, 328, 234, 176, 227, 212, 17, 92, 257, 39, 331, 119, 314, 0, 253, 132, 16, 124, 252, 116, 338, 293, 256, 260, 347, 214, 238, 215, 5, 354, 329, 318, 245, 56, 31, 3, 196, 218, 195, 93, 115, 82, 166, 33, 277, 236, 379, 235, 308, 105, 372, 40, 282, 46, 240, 364, 363, 206, 220, 4, 223, 294, 167, 189, 312, 307, 89, 21, 230, 125, 190, 14, 133, 317, 154, 187, 213, 360, 297, 267, 185, 340, 369, 13, 186, 258, 58, 371, 149, 279, 42, 283, 25, 337, 344, 135, 296, 219, 87, 99, 353, 361, 357, 210, 86, 139, 146, 70, 37, 30, 339, 237, 222, 333, 383, 374, 284, 129, 145, 151, 330, 109, 41, 356, 204, 320, 201, 278, 239, 202, 301, 242, 254, 81, 137, 52, 198, 365, 370, 162, 24, 142, 159, 120, 69, 91, 261, 169, 367, 163, 134, 53, 180, 100, 243, 76, 281, 225, 303, 380, 18, 306, 153, 118, 241, 250, 80, 98, 324, 208, 29, 368, 88, 224, 160, 102, 45, 249, 265, 221, 290, 251, 326, 106, 130, 165, 84, 143, 6, 156, 205, 35, 288, 316, 65, 322, 74, 50, 170, 358, 247, 346, 173, 233, 26, 95, 263, 61, 362, 10, 305, 59, 11, 232, 66, 373, 325, 94, 341, 343, 264, 375, 168, 334, 366, 73, 313, 335, 161, 75, 291, 315, 104, 336, 141, 148, 228, 231, 64, 172, 85, 300, 138, 191, 246, 319, 123, 321, 244, 200, 152, 275, 381, 177, 108, 270, 349, 289, 285, 97, 292, 140, 376, 229, 197, 15, 269, 112, 101, 175, 49, 63, 54, 96, 178, 19, 7, 90, 171, 128, 174, 299, 248, 107, 23, 127, 111, 287, 12, 9, 332, 226, 47, 378, 216, 150, 342, 355, 43] + 28: [108, 277, 117, 331, 224, 260, 312, 163, 165, 311, 191, 80, 320, 199, 293, 7, 374, 240, 161, 305, 310, 107, 105, 29, 266, 88, 57, 87, 60, 339, 223, 25, 188, 103, 268, 315, 275, 180, 111, 276, 294, 27, 151, 256, 94, 150, 54, 343, 31, 168, 74, 250, 196, 299, 127, 145, 226, 49, 330, 144, 100, 142, 208, 44, 102, 207, 124, 120, 13, 69, 193, 52, 119, 347, 159, 190, 307, 115, 131, 269, 33, 116, 317, 229, 189, 0, 251, 84, 147, 140, 96, 62, 65, 301, 212, 353, 47, 255, 272, 78, 248, 30, 3, 170, 246, 375, 296, 271, 148, 373, 71, 21, 91, 378, 219, 194, 216, 304, 206, 79, 218, 12, 162, 55, 24, 270, 252, 211, 205, 123, 351, 261, 141, 6, 332, 130, 259, 14, 329, 83, 1, 377, 156, 86, 356, 22, 265, 236, 109, 201, 35, 235, 112, 97, 267, 43, 239, 200, 352, 128, 383, 192, 264, 306, 308, 183, 137, 89, 210, 66, 76, 175, 110, 221, 132, 153, 195, 253, 358, 139, 184, 114, 181, 177, 48, 335, 316, 291, 23, 290, 298, 313, 5, 61, 244, 327, 93, 318, 51, 77, 280, 174, 2, 220, 302, 282, 278, 98, 90, 289, 157, 176, 314, 167, 324, 337, 158, 68, 242, 376, 230, 362, 322, 287, 381, 274, 95, 284, 63, 143, 45, 348, 209, 11, 379, 359, 215, 202, 73, 338, 203, 297, 101, 171, 185, 169, 319, 154, 197, 104, 32, 295, 164, 340, 346, 28, 72, 58, 135, 82, 186, 36, 364, 204, 366, 263, 37, 326, 237, 173, 172, 121, 113, 129, 232, 4, 99, 160, 46, 345, 133, 334, 40, 382, 336, 75, 9, 138, 344, 367, 350, 92, 371, 85, 179, 228, 357, 355, 325, 19, 341, 136, 233, 285, 42, 217, 249, 286, 273, 231, 41, 247, 125, 182, 370, 134, 155, 380, 81, 241, 333, 227, 149, 292, 309, 146, 126, 349, 257, 50, 354, 281, 342, 38, 56, 323, 361, 26, 122, 279, 20, 288, 245, 59, 8, 243, 303, 178, 166, 152, 368, 67, 258, 222, 214, 328, 321, 70, 363, 262, 106, 283, 369, 15, 64, 225, 118, 372, 39, 238, 10, 365, 17, 16, 53, 34, 187, 360, 198, 234, 213, 300, 18, 254] + 29: [197, 251, 363, 94, 118, 227, 370, 296, 379, 264, 65, 230, 266, 381, 208, 72, 137, 140, 312, 138, 346, 73, 127, 382, 109, 204, 274, 7, 349, 143, 330, 313, 209, 191, 123, 342, 228, 233, 218, 245, 8, 350, 222, 377, 268, 141, 373, 212, 215, 239, 295, 333, 31, 364, 166, 26, 176, 196, 355, 38, 149, 188, 323, 75, 113, 87, 273, 12, 307, 265, 145, 179, 229, 59, 332, 11, 17, 254, 324, 220, 205, 226, 159, 334, 178, 132, 206, 309, 89, 131, 336, 108, 153, 199, 260, 1, 378, 223, 214, 277, 236, 103, 119, 202, 50, 311, 231, 225, 288, 235, 310, 366, 353, 25, 351, 182, 278, 83, 210, 368, 16, 70, 39, 371, 0, 365, 36, 314, 338, 93, 150, 15, 271, 301, 80, 49, 92, 291, 181, 66, 177, 157, 117, 238, 4, 354, 106, 292, 258, 22, 262, 193, 10, 161, 168, 162, 133, 375, 269, 194, 318, 255, 144, 200, 124, 345, 60, 290, 189, 46, 42, 111, 102, 86, 121, 120, 44, 253, 327, 281, 257, 294, 24, 249, 185, 261, 115, 29, 201, 276, 107, 321, 33, 232, 340, 114, 303, 23, 347, 216, 300, 242, 263, 244, 331, 85, 129, 174, 95, 374, 248, 376, 57, 195, 135, 383, 217, 148, 219, 299, 279, 155, 380, 47, 329, 40, 68, 99, 79, 192, 322, 335, 246, 358, 348, 77, 56, 356, 287, 152, 320, 361, 341, 21, 97, 163, 51, 359, 272, 362, 88, 130, 74, 154, 172, 187, 67, 128, 221, 186, 328, 243, 139, 306, 203, 280, 339, 256, 284, 297, 207, 81, 61, 100, 237, 308, 35, 48, 98, 344, 82, 252, 372, 164, 84, 305, 169, 224, 267, 282, 171, 58, 18, 147, 184, 180, 283, 54, 326, 43, 62, 125, 2, 302, 91, 52, 45, 173, 30, 190, 337, 343, 213, 167, 64, 250, 122, 3, 319, 360, 101, 151, 142, 241, 293, 211, 126, 247, 369, 20, 286, 325, 28, 285, 6, 136, 316, 104, 112, 14, 27, 198, 78, 53, 116, 275, 289, 259, 110, 37, 55, 158, 183, 41, 304, 9, 134, 298, 5, 234, 76, 156, 19, 34, 170, 270, 32, 317, 315, 357, 175, 90, 352, 105, 71, 146, 367, 13, 160, 165, 69, 96, 63, 240] + 30: [37, 245, 52, 24, 202, 60, 20, 144, 235, 149, 376, 45, 379, 21, 241, 196, 304, 26, 203, 381, 167, 282, 19, 87, 299, 94, 358, 287, 222, 329, 227, 83, 226, 200, 171, 136, 300, 114, 25, 106, 54, 117, 191, 189, 131, 146, 354, 380, 366, 312, 74, 275, 137, 206, 364, 11, 340, 277, 133, 350, 56, 294, 336, 156, 28, 89, 246, 247, 193, 325, 272, 102, 349, 214, 236, 139, 84, 280, 170, 1, 68, 93, 195, 5, 148, 179, 31, 101, 35, 368, 259, 82, 103, 112, 301, 322, 164, 291, 130, 318, 239, 168, 248, 134, 91, 46, 75, 124, 42, 7, 119, 197, 50, 335, 217, 371, 284, 71, 240, 352, 298, 260, 177, 58, 143, 111, 104, 293, 109, 276, 128, 201, 108, 255, 186, 120, 338, 267, 377, 79, 232, 47, 22, 100, 140, 360, 369, 258, 123, 96, 135, 155, 333, 256, 76, 271, 273, 198, 61, 207, 3, 315, 234, 158, 357, 129, 152, 194, 48, 224, 262, 142, 99, 116, 365, 199, 72, 77, 297, 249, 310, 188, 0, 62, 110, 80, 57, 237, 127, 8, 345, 88, 356, 270, 6, 172, 36, 218, 242, 346, 343, 337, 330, 161, 303, 15, 10, 23, 141, 13, 115, 257, 231, 121, 250, 320, 363, 187, 92, 347, 233, 166, 86, 375, 59, 351, 32, 49, 219, 145, 324, 372, 342, 278, 70, 319, 323, 370, 238, 228, 2, 184, 286, 317, 27, 153, 243, 107, 295, 215, 378, 341, 292, 373, 328, 361, 38, 41, 51, 205, 43, 33, 220, 362, 30, 174, 308, 183, 211, 17, 125, 307, 353, 65, 305, 309, 252, 251, 81, 69, 264, 221, 176, 18, 40, 281, 182, 334, 154, 302, 55, 151, 290, 313, 289, 254, 331, 355, 283, 163, 209, 66, 261, 95, 138, 212, 162, 126, 229, 159, 344, 160, 29, 374, 253, 132, 122, 150, 67, 53, 90, 190, 175, 169, 4, 118, 311, 113, 383, 314, 73, 382, 39, 268, 192, 185, 97, 208, 213, 263, 306, 321, 9, 147, 244, 157, 12, 78, 296, 85, 266, 204, 44, 98, 223, 332, 316, 105, 225, 14, 326, 64, 265, 274, 210, 180, 288, 230, 63, 279, 359, 339, 367, 348, 16, 173, 285, 327, 216, 165, 178, 181, 269, 34] + 31: [144, 145, 223, 320, 2, 31, 282, 153, 19, 0, 215, 148, 307, 363, 112, 141, 303, 49, 68, 48, 356, 93, 136, 154, 220, 176, 311, 195, 69, 262, 362, 152, 312, 188, 180, 147, 350, 225, 74, 251, 129, 323, 204, 198, 51, 37, 340, 207, 201, 200, 233, 279, 294, 331, 97, 59, 208, 217, 116, 278, 269, 57, 121, 194, 96, 78, 355, 255, 196, 160, 241, 134, 290, 131, 28, 286, 187, 122, 170, 46, 295, 296, 239, 277, 71, 130, 366, 259, 104, 114, 10, 35, 101, 126, 54, 132, 22, 26, 36, 299, 283, 164, 45, 185, 359, 367, 124, 135, 17, 3, 342, 361, 139, 44, 287, 205, 219, 9, 317, 13, 315, 6, 235, 177, 193, 53, 89, 285, 380, 377, 157, 142, 263, 117, 5, 140, 1, 73, 18, 381, 24, 372, 95, 181, 30, 137, 166, 192, 65, 237, 321, 138, 338, 348, 368, 34, 329, 326, 378, 29, 250, 369, 113, 66, 276, 249, 244, 291, 281, 171, 202, 243, 373, 115, 55, 149, 186, 271, 293, 110, 253, 47, 100, 267, 107, 374, 232, 301, 168, 322, 318, 228, 33, 227, 370, 310, 92, 245, 240, 25, 319, 275, 119, 61, 309, 75, 32, 20, 150, 60, 91, 221, 183, 77, 231, 12, 81, 352, 84, 179, 330, 158, 105, 79, 288, 156, 258, 174, 199, 332, 161, 270, 86, 333, 343, 67, 234, 246, 118, 382, 50, 304, 335, 4, 284, 155, 353, 38, 191, 222, 189, 357, 302, 206, 76, 102, 305, 15, 261, 238, 39, 247, 106, 308, 328, 62, 172, 242, 274, 379, 375, 21, 63, 190, 42, 314, 337, 8, 345, 14, 167, 216, 146, 80, 289, 354, 90, 127, 111, 365, 41, 292, 120, 336, 248, 56, 268, 165, 351, 72, 349, 347, 371, 109, 272, 324, 40, 383, 257, 83, 212, 43, 297, 316, 236, 52, 88, 327, 64, 364, 260, 27, 226, 182, 376, 184, 99, 344, 210, 341, 151, 213, 162, 203, 11, 229, 23, 346, 108, 133, 98, 169, 313, 128, 265, 266, 334, 197, 70, 280, 306, 58, 178, 7, 360, 143, 252, 325, 85, 159, 87, 264, 298, 224, 163, 273, 123, 175, 173, 218, 211, 16, 125, 94, 254, 103, 209, 82, 339, 214, 300, 256, 230, 358] + 32: [212, 143, 286, 341, 359, 280, 204, 140, 166, 200, 116, 144, 246, 19, 43, 313, 134, 155, 334, 293, 331, 218, 36, 177, 105, 364, 319, 232, 211, 372, 132, 301, 121, 41, 340, 276, 289, 118, 158, 79, 44, 234, 235, 302, 224, 98, 255, 162, 28, 160, 345, 303, 104, 361, 99, 67, 190, 325, 2, 61, 367, 156, 214, 241, 84, 16, 342, 312, 233, 185, 327, 139, 111, 94, 355, 216, 25, 0, 71, 45, 217, 37, 196, 65, 260, 78, 288, 73, 62, 170, 197, 15, 262, 10, 338, 296, 63, 164, 250, 207, 14, 266, 383, 21, 268, 357, 103, 157, 13, 243, 7, 173, 113, 87, 188, 285, 51, 122, 120, 368, 278, 141, 333, 281, 131, 201, 382, 221, 171, 48, 349, 309, 332, 353, 125, 358, 83, 97, 4, 304, 270, 379, 316, 169, 275, 369, 40, 172, 363, 208, 337, 75, 307, 238, 193, 175, 322, 256, 273, 8, 202, 9, 24, 329, 225, 174, 294, 55, 80, 378, 321, 29, 228, 271, 182, 149, 137, 335, 1, 85, 17, 277, 180, 287, 46, 52, 290, 90, 245, 242, 375, 244, 187, 195, 352, 179, 89, 362, 227, 199, 324, 151, 377, 60, 237, 376, 27, 129, 284, 347, 210, 35, 68, 38, 310, 343, 213, 18, 222, 92, 317, 6, 167, 93, 191, 354, 371, 102, 165, 50, 127, 264, 145, 72, 11, 300, 192, 147, 57, 181, 330, 219, 230, 88, 258, 30, 142, 292, 168, 314, 380, 360, 59, 240, 64, 239, 130, 205, 53, 76, 189, 96, 66, 5, 108, 34, 12, 148, 339, 263, 47, 299, 326, 126, 215, 198, 318, 3, 31, 100, 133, 253, 251, 161, 295, 226, 119, 112, 370, 23, 350, 346, 373, 150, 184, 49, 186, 261, 159, 351, 306, 106, 344, 101, 91, 229, 124, 206, 86, 272, 231, 56, 107, 249, 109, 223, 365, 77, 42, 22, 252, 33, 356, 138, 366, 154, 248, 308, 128, 74, 176, 328, 117, 374, 320, 265, 82, 163, 291, 183, 26, 274, 70, 69, 135, 81, 178, 54, 136, 236, 305, 209, 348, 282, 247, 297, 323, 269, 58, 203, 298, 336, 279, 283, 39, 110, 32, 194, 146, 315, 254, 153, 220, 123, 381, 311, 152, 257, 20, 115, 114, 267, 259, 95] + 33: [261, 68, 214, 327, 42, 4, 321, 144, 125, 205, 31, 198, 19, 380, 38, 318, 8, 244, 70, 115, 110, 377, 238, 200, 199, 80, 182, 46, 268, 247, 177, 137, 147, 228, 120, 85, 308, 178, 74, 181, 278, 73, 23, 97, 383, 26, 338, 220, 81, 89, 194, 12, 166, 331, 259, 167, 124, 75, 141, 191, 354, 297, 348, 122, 138, 314, 106, 99, 257, 369, 319, 193, 218, 91, 288, 153, 324, 235, 201, 163, 276, 251, 352, 131, 30, 306, 332, 114, 371, 184, 175, 310, 119, 211, 277, 16, 5, 272, 260, 189, 262, 58, 22, 280, 176, 65, 336, 362, 37, 104, 204, 305, 48, 240, 293, 3, 133, 118, 9, 157, 40, 24, 132, 173, 209, 43, 217, 221, 18, 230, 373, 32, 121, 266, 10, 117, 311, 143, 29, 180, 56, 236, 223, 128, 202, 215, 103, 164, 123, 258, 379, 1, 51, 101, 241, 154, 60, 307, 160, 337, 87, 374, 226, 283, 145, 290, 140, 67, 156, 7, 50, 76, 267, 27, 213, 59, 53, 192, 370, 165, 126, 187, 224, 86, 294, 54, 71, 271, 168, 313, 129, 142, 96, 360, 229, 344, 14, 52, 172, 183, 21, 185, 107, 35, 113, 64, 79, 190, 270, 94, 252, 149, 363, 158, 367, 246, 312, 72, 174, 341, 151, 15, 139, 28, 292, 130, 92, 212, 135, 275, 13, 353, 227, 245, 6, 219, 368, 357, 372, 382, 62, 339, 328, 323, 234, 210, 146, 20, 316, 335, 148, 69, 263, 378, 375, 303, 250, 355, 356, 274, 350, 281, 207, 347, 109, 45, 366, 309, 233, 111, 136, 301, 161, 346, 55, 36, 334, 222, 112, 345, 49, 249, 159, 285, 77, 295, 171, 88, 282, 206, 325, 179, 239, 66, 100, 322, 265, 17, 284, 25, 351, 108, 264, 188, 116, 216, 340, 349, 253, 242, 102, 376, 364, 232, 326, 155, 300, 196, 197, 231, 33, 127, 2, 39, 11, 287, 195, 269, 105, 82, 298, 186, 286, 359, 333, 34, 291, 237, 170, 304, 90, 150, 225, 83, 381, 57, 329, 343, 299, 98, 78, 162, 361, 208, 84, 358, 255, 279, 248, 320, 134, 61, 169, 41, 273, 93, 256, 47, 254, 289, 317, 243, 342, 0, 330, 203, 95, 63, 296, 315, 302, 152, 44, 365] + 34: [116, 61, 364, 69, 201, 6, 80, 326, 25, 75, 65, 89, 225, 256, 1, 230, 231, 342, 68, 158, 156, 221, 383, 354, 329, 335, 199, 223, 200, 18, 86, 320, 282, 147, 13, 217, 166, 63, 284, 356, 169, 373, 22, 377, 125, 365, 252, 351, 16, 2, 263, 149, 67, 220, 81, 226, 15, 278, 21, 31, 264, 138, 371, 172, 144, 290, 5, 157, 131, 151, 36, 311, 210, 92, 24, 352, 355, 171, 255, 374, 303, 109, 19, 269, 361, 154, 212, 180, 222, 369, 227, 101, 242, 14, 76, 173, 179, 366, 249, 54, 91, 270, 304, 305, 315, 148, 283, 367, 198, 94, 298, 214, 237, 118, 57, 372, 328, 301, 142, 314, 324, 105, 160, 205, 274, 307, 259, 168, 268, 350, 106, 186, 32, 188, 341, 143, 26, 140, 213, 52, 310, 193, 132, 375, 126, 190, 82, 239, 58, 289, 266, 8, 336, 244, 238, 234, 70, 293, 340, 300, 368, 233, 347, 344, 203, 102, 253, 7, 28, 46, 275, 345, 162, 112, 370, 295, 257, 323, 73, 277, 382, 177, 313, 280, 128, 55, 103, 164, 127, 122, 77, 381, 337, 232, 348, 167, 136, 332, 359, 117, 379, 357, 79, 184, 134, 176, 113, 197, 287, 178, 145, 150, 45, 241, 194, 4, 236, 85, 129, 62, 141, 291, 288, 72, 360, 50, 120, 218, 59, 325, 163, 159, 362, 165, 35, 130, 66, 265, 49, 189, 206, 260, 60, 261, 312, 330, 83, 185, 208, 146, 56, 115, 111, 12, 294, 74, 380, 204, 93, 358, 161, 108, 196, 247, 272, 27, 123, 95, 90, 195, 9, 327, 30, 40, 219, 42, 114, 262, 318, 175, 211, 245, 174, 296, 316, 376, 139, 84, 306, 121, 0, 276, 33, 321, 224, 133, 41, 53, 216, 137, 334, 97, 99, 11, 183, 258, 346, 98, 119, 3, 254, 100, 44, 353, 110, 302, 187, 319, 48, 309, 299, 235, 37, 286, 71, 333, 191, 88, 363, 38, 308, 339, 297, 43, 343, 338, 271, 248, 155, 17, 104, 250, 292, 229, 107, 23, 209, 331, 124, 240, 29, 246, 322, 87, 181, 207, 153, 64, 267, 170, 96, 135, 317, 228, 182, 192, 51, 152, 20, 251, 285, 243, 279, 78, 47, 10, 215, 39, 202, 34, 378, 273, 349, 281] + 35: [138, 372, 162, 373, 50, 8, 232, 157, 273, 320, 56, 178, 155, 48, 5, 113, 205, 28, 1, 152, 308, 233, 250, 156, 242, 53, 59, 94, 316, 145, 140, 349, 148, 49, 215, 141, 298, 101, 189, 353, 39, 344, 224, 366, 251, 146, 359, 60, 234, 72, 95, 256, 243, 142, 304, 265, 76, 21, 20, 204, 244, 7, 15, 27, 171, 226, 44, 163, 367, 227, 70, 31, 77, 11, 285, 220, 118, 340, 371, 331, 37, 51, 208, 184, 357, 305, 346, 166, 149, 66, 368, 173, 328, 135, 301, 294, 58, 92, 217, 379, 193, 364, 306, 203, 222, 253, 161, 112, 133, 350, 172, 278, 170, 80, 247, 258, 287, 254, 239, 38, 110, 9, 14, 185, 272, 179, 260, 132, 214, 288, 167, 86, 192, 325, 381, 24, 323, 30, 126, 332, 263, 73, 151, 291, 115, 343, 339, 129, 218, 34, 211, 159, 190, 284, 362, 180, 42, 12, 168, 10, 370, 257, 43, 4, 158, 336, 216, 109, 125, 116, 181, 29, 183, 196, 252, 237, 22, 54, 3, 259, 321, 75, 228, 383, 91, 46, 303, 293, 194, 81, 16, 96, 107, 355, 240, 26, 248, 35, 236, 319, 174, 137, 231, 68, 85, 47, 165, 188, 74, 2, 326, 267, 274, 143, 322, 268, 33, 341, 124, 324, 108, 207, 241, 123, 338, 333, 292, 89, 299, 297, 154, 69, 45, 245, 131, 99, 280, 136, 361, 309, 71, 103, 117, 356, 144, 87, 314, 262, 329, 119, 246, 380, 296, 337, 52, 358, 221, 202, 79, 365, 375, 235, 139, 374, 121, 348, 276, 63, 18, 17, 318, 334, 195, 105, 230, 175, 307, 300, 61, 130, 150, 249, 209, 25, 330, 310, 64, 286, 82, 93, 100, 376, 281, 282, 327, 347, 369, 186, 342, 106, 114, 83, 289, 269, 164, 65, 315, 225, 212, 57, 13, 160, 62, 377, 360, 122, 90, 6, 229, 223, 19, 352, 351, 176, 177, 153, 317, 41, 104, 0, 127, 120, 199, 255, 261, 266, 363, 270, 147, 55, 275, 277, 210, 264, 283, 88, 200, 311, 102, 197, 98, 345, 382, 201, 279, 206, 295, 219, 67, 169, 198, 128, 378, 191, 290, 97, 238, 354, 312, 182, 187, 313, 78, 335, 32, 271, 213, 36, 84, 302, 23, 111, 40, 134] + 36: [174, 101, 314, 194, 157, 222, 60, 161, 89, 62, 215, 325, 265, 304, 276, 235, 176, 134, 61, 272, 225, 139, 321, 118, 153, 133, 354, 81, 224, 280, 264, 100, 229, 31, 25, 34, 169, 282, 241, 202, 270, 334, 363, 123, 330, 290, 203, 52, 65, 352, 92, 156, 323, 288, 160, 247, 267, 126, 340, 9, 291, 351, 137, 279, 97, 237, 277, 179, 207, 331, 320, 131, 244, 86, 376, 200, 159, 172, 380, 342, 255, 26, 372, 46, 219, 117, 66, 115, 197, 378, 329, 48, 180, 24, 327, 186, 232, 149, 295, 76, 132, 67, 140, 98, 365, 367, 362, 287, 146, 114, 93, 110, 211, 245, 122, 14, 359, 324, 257, 234, 144, 373, 300, 108, 181, 71, 32, 251, 162, 356, 274, 150, 188, 190, 59, 19, 43, 189, 11, 96, 361, 315, 128, 16, 75, 142, 217, 129, 248, 3, 10, 78, 318, 2, 107, 262, 158, 305, 23, 73, 208, 348, 20, 125, 41, 191, 36, 147, 18, 310, 303, 286, 198, 357, 130, 328, 95, 204, 30, 119, 28, 58, 278, 109, 369, 29, 112, 301, 151, 381, 82, 64, 167, 51, 242, 259, 311, 349, 366, 57, 12, 332, 88, 106, 152, 260, 90, 236, 141, 339, 212, 175, 154, 350, 121, 344, 103, 173, 69, 120, 72, 337, 47, 113, 105, 240, 341, 243, 298, 63, 254, 218, 170, 148, 273, 281, 127, 6, 312, 313, 184, 371, 50, 258, 145, 266, 333, 223, 56, 178, 44, 336, 309, 239, 199, 209, 233, 345, 84, 53, 166, 343, 358, 252, 322, 338, 306, 77, 383, 85, 256, 187, 206, 45, 216, 143, 382, 210, 111, 183, 221, 355, 326, 27, 37, 317, 307, 302, 370, 116, 4, 297, 102, 231, 294, 195, 185, 5, 163, 283, 165, 13, 271, 168, 374, 196, 226, 299, 22, 213, 228, 80, 138, 177, 94, 268, 135, 74, 38, 49, 293, 54, 269, 263, 21, 0, 346, 79, 227, 347, 377, 205, 35, 253, 39, 360, 192, 42, 275, 99, 164, 7, 285, 87, 230, 40, 335, 238, 368, 261, 250, 33, 182, 289, 364, 104, 83, 296, 55, 308, 284, 193, 68, 91, 246, 124, 201, 379, 17, 8, 220, 171, 316, 155, 214, 249, 319, 353, 375, 15, 1, 70, 136, 292] + 37: [364, 361, 211, 71, 383, 74, 234, 222, 231, 95, 43, 257, 328, 301, 190, 343, 80, 203, 41, 373, 2, 102, 228, 192, 175, 187, 369, 130, 13, 318, 176, 204, 337, 124, 260, 157, 25, 103, 94, 119, 202, 358, 339, 346, 340, 31, 99, 226, 268, 123, 68, 105, 15, 30, 229, 185, 64, 52, 178, 309, 0, 245, 368, 151, 362, 21, 86, 253, 305, 79, 344, 303, 242, 302, 353, 197, 224, 11, 182, 6, 87, 188, 310, 63, 20, 153, 139, 4, 246, 374, 350, 251, 8, 375, 265, 239, 40, 213, 114, 317, 93, 191, 216, 363, 205, 333, 330, 108, 162, 355, 345, 207, 49, 320, 171, 225, 61, 116, 252, 342, 147, 59, 244, 379, 66, 136, 125, 319, 165, 177, 166, 163, 275, 32, 321, 35, 254, 378, 271, 135, 111, 96, 146, 276, 200, 113, 323, 189, 18, 1, 14, 218, 235, 311, 100, 331, 195, 48, 118, 332, 17, 155, 143, 9, 357, 308, 167, 34, 127, 67, 152, 348, 78, 274, 250, 128, 249, 367, 7, 238, 117, 247, 326, 184, 181, 307, 281, 201, 82, 377, 84, 261, 179, 294, 131, 156, 50, 209, 217, 273, 313, 278, 270, 259, 256, 283, 380, 46, 290, 304, 329, 73, 16, 106, 293, 92, 287, 38, 144, 91, 173, 196, 141, 212, 180, 33, 360, 138, 72, 101, 54, 150, 36, 210, 45, 26, 170, 230, 219, 28, 22, 327, 248, 154, 24, 29, 193, 341, 148, 97, 145, 19, 284, 349, 376, 371, 169, 104, 338, 69, 164, 264, 183, 199, 107, 381, 122, 334, 121, 44, 221, 10, 214, 241, 382, 325, 62, 208, 227, 120, 262, 266, 137, 295, 70, 300, 220, 288, 60, 149, 372, 76, 255, 314, 88, 126, 351, 233, 109, 223, 322, 112, 215, 297, 292, 347, 194, 81, 129, 258, 352, 289, 77, 47, 306, 51, 272, 37, 324, 83, 359, 89, 90, 134, 110, 42, 23, 159, 282, 236, 53, 336, 12, 370, 286, 75, 58, 174, 161, 285, 158, 277, 316, 198, 115, 5, 267, 39, 299, 85, 3, 335, 354, 366, 140, 27, 315, 168, 243, 65, 365, 56, 237, 133, 98, 240, 269, 298, 312, 160, 232, 279, 291, 55, 206, 172, 280, 132, 356, 57, 296, 142, 186, 263] + 38: [284, 256, 171, 83, 355, 154, 155, 145, 169, 48, 139, 259, 227, 106, 213, 8, 341, 352, 342, 105, 24, 317, 212, 244, 43, 91, 184, 173, 241, 95, 151, 254, 147, 310, 138, 159, 243, 312, 82, 215, 100, 303, 216, 149, 363, 140, 98, 330, 6, 316, 250, 266, 308, 221, 199, 293, 12, 201, 331, 179, 349, 299, 21, 120, 268, 275, 14, 115, 27, 233, 148, 253, 334, 337, 103, 45, 195, 167, 377, 203, 81, 228, 25, 281, 192, 146, 13, 113, 101, 198, 77, 242, 336, 121, 102, 325, 285, 279, 313, 278, 165, 321, 280, 143, 366, 93, 63, 90, 30, 262, 302, 237, 249, 277, 126, 362, 218, 161, 20, 89, 152, 234, 35, 122, 324, 42, 207, 370, 141, 44, 110, 172, 229, 54, 224, 382, 4, 22, 353, 314, 226, 368, 380, 134, 301, 136, 354, 129, 118, 124, 359, 34, 17, 220, 150, 315, 189, 311, 53, 255, 52, 119, 322, 260, 202, 190, 37, 318, 39, 97, 58, 74, 309, 5, 345, 70, 128, 107, 57, 50, 211, 28, 374, 294, 291, 357, 15, 191, 304, 94, 375, 166, 158, 86, 378, 117, 76, 69, 16, 78, 223, 270, 252, 59, 263, 265, 365, 177, 108, 379, 85, 206, 289, 123, 282, 88, 295, 9, 238, 258, 300, 209, 339, 162, 3, 142, 248, 87, 153, 344, 47, 125, 75, 217, 343, 348, 205, 127, 1, 64, 319, 320, 273, 92, 180, 292, 156, 225, 236, 174, 367, 51, 160, 168, 333, 109, 307, 298, 269, 332, 68, 288, 131, 194, 130, 181, 338, 351, 18, 376, 222, 187, 79, 23, 296, 381, 46, 267, 175, 200, 116, 186, 193, 340, 350, 61, 346, 133, 62, 230, 326, 55, 84, 11, 272, 112, 32, 144, 287, 372, 40, 135, 111, 137, 31, 328, 347, 197, 188, 219, 67, 2, 276, 7, 323, 36, 41, 261, 163, 183, 329, 290, 10, 271, 164, 80, 360, 71, 132, 231, 33, 306, 60, 361, 176, 185, 305, 274, 38, 19, 49, 327, 286, 246, 196, 208, 373, 245, 114, 240, 214, 104, 0, 369, 73, 29, 157, 358, 170, 99, 56, 247, 26, 371, 178, 257, 204, 383, 283, 239, 297, 182, 364, 72, 65, 356, 264, 335, 210, 235, 96, 232, 66, 251] + 39: [1, 139, 132, 53, 70, 38, 116, 185, 35, 120, 77, 356, 360, 303, 48, 219, 373, 211, 272, 45, 333, 28, 8, 329, 363, 345, 230, 85, 155, 84, 231, 355, 88, 366, 225, 339, 50, 344, 245, 136, 108, 44, 166, 194, 332, 20, 321, 209, 242, 223, 160, 268, 162, 376, 25, 266, 79, 314, 58, 199, 330, 267, 107, 328, 153, 276, 141, 369, 367, 21, 221, 99, 158, 293, 239, 26, 342, 90, 32, 109, 157, 291, 324, 249, 123, 370, 375, 284, 304, 311, 9, 19, 195, 317, 256, 130, 247, 112, 301, 227, 352, 71, 307, 208, 96, 121, 49, 238, 161, 190, 97, 114, 259, 236, 290, 41, 235, 69, 281, 64, 316, 154, 374, 275, 255, 292, 111, 33, 11, 103, 289, 226, 299, 10, 228, 232, 148, 145, 300, 204, 89, 240, 52, 224, 263, 129, 76, 365, 253, 187, 151, 192, 65, 126, 313, 83, 295, 260, 59, 104, 302, 147, 197, 36, 279, 229, 294, 215, 122, 118, 131, 113, 61, 285, 5, 274, 115, 326, 57, 31, 327, 42, 149, 55, 175, 371, 135, 93, 173, 165, 105, 350, 278, 14, 280, 218, 217, 383, 349, 16, 170, 243, 357, 200, 98, 337, 269, 315, 152, 51, 75, 117, 196, 6, 101, 39, 354, 341, 164, 346, 74, 29, 277, 318, 102, 43, 298, 137, 201, 359, 168, 67, 358, 72, 124, 189, 4, 216, 78, 198, 54, 68, 2, 234, 177, 335, 250, 125, 351, 127, 336, 134, 251, 380, 80, 110, 222, 143, 322, 174, 40, 257, 3, 254, 319, 206, 178, 179, 193, 27, 381, 241, 273, 252, 167, 106, 7, 372, 214, 184, 271, 382, 237, 94, 340, 133, 343, 262, 60, 282, 265, 347, 46, 181, 163, 186, 270, 205, 310, 264, 377, 183, 142, 176, 233, 323, 203, 146, 63, 91, 348, 86, 87, 47, 81, 297, 144, 320, 261, 207, 248, 140, 283, 82, 361, 309, 202, 338, 15, 169, 246, 24, 308, 288, 23, 334, 0, 66, 56, 220, 368, 210, 212, 244, 191, 362, 379, 62, 13, 171, 378, 18, 258, 312, 306, 95, 119, 172, 128, 156, 100, 286, 92, 150, 364, 159, 296, 213, 305, 17, 182, 30, 188, 325, 34, 287, 331, 180, 37, 353, 138, 22, 73, 12] + 40: [358, 193, 253, 306, 191, 151, 262, 308, 62, 218, 45, 200, 299, 57, 224, 81, 367, 43, 237, 139, 93, 213, 259, 3, 268, 4, 66, 48, 318, 228, 361, 14, 210, 78, 362, 352, 6, 310, 375, 272, 9, 122, 50, 105, 20, 22, 149, 331, 31, 89, 383, 258, 326, 185, 340, 179, 204, 339, 202, 65, 355, 211, 163, 311, 141, 187, 366, 91, 76, 260, 348, 288, 235, 382, 199, 174, 256, 169, 225, 254, 61, 98, 160, 147, 114, 27, 99, 252, 70, 72, 2, 5, 113, 83, 300, 117, 158, 36, 64, 190, 255, 67, 307, 282, 110, 359, 184, 209, 175, 303, 271, 21, 334, 137, 345, 230, 68, 102, 338, 298, 320, 206, 41, 19, 208, 38, 7, 92, 157, 172, 324, 332, 77, 173, 364, 124, 23, 121, 369, 263, 176, 233, 42, 342, 336, 118, 15, 60, 250, 289, 280, 165, 166, 112, 290, 63, 123, 75, 80, 373, 238, 196, 56, 257, 182, 84, 100, 25, 323, 180, 133, 162, 51, 240, 347, 277, 49, 194, 59, 205, 295, 171, 109, 198, 330, 212, 381, 26, 246, 350, 115, 140, 266, 52, 215, 88, 351, 236, 232, 328, 28, 273, 378, 293, 302, 161, 86, 286, 108, 127, 90, 287, 315, 270, 150, 267, 155, 247, 8, 379, 97, 186, 13, 249, 203, 296, 251, 234, 54, 243, 135, 363, 53, 344, 217, 317, 134, 380, 192, 152, 132, 241, 239, 11, 219, 360, 129, 47, 341, 283, 304, 294, 44, 220, 274, 177, 322, 188, 329, 216, 244, 85, 46, 189, 104, 181, 227, 313, 207, 138, 111, 0, 201, 276, 316, 335, 1, 242, 279, 309, 281, 120, 343, 325, 35, 29, 214, 248, 269, 261, 128, 159, 55, 71, 365, 136, 30, 87, 37, 301, 265, 145, 18, 119, 245, 153, 229, 12, 222, 16, 79, 371, 82, 17, 107, 374, 333, 356, 116, 95, 69, 131, 291, 40, 32, 178, 305, 144, 170, 142, 156, 146, 226, 377, 376, 370, 24, 130, 168, 231, 368, 284, 94, 164, 125, 148, 319, 183, 321, 337, 346, 33, 275, 223, 297, 327, 101, 154, 34, 349, 285, 264, 74, 39, 195, 10, 143, 292, 167, 126, 73, 354, 96, 372, 357, 221, 106, 312, 58, 103, 278, 353, 197, 314] + 41: [262, 370, 205, 383, 229, 117, 3, 165, 275, 223, 351, 156, 337, 45, 14, 297, 123, 105, 201, 342, 234, 15, 50, 290, 366, 112, 59, 286, 19, 245, 173, 144, 343, 178, 54, 122, 376, 320, 135, 107, 361, 32, 141, 125, 41, 7, 287, 357, 13, 202, 145, 131, 49, 4, 334, 190, 155, 247, 168, 87, 217, 150, 16, 9, 64, 38, 97, 293, 345, 154, 134, 191, 244, 352, 284, 157, 379, 12, 340, 271, 377, 282, 184, 288, 375, 102, 158, 295, 238, 278, 62, 40, 208, 17, 10, 281, 170, 254, 325, 192, 80, 166, 317, 179, 296, 326, 232, 329, 322, 328, 280, 315, 291, 57, 56, 163, 356, 115, 215, 311, 335, 364, 304, 228, 252, 65, 346, 26, 70, 6, 104, 220, 272, 230, 321, 149, 308, 224, 226, 128, 175, 48, 285, 132, 60, 277, 187, 362, 359, 101, 181, 77, 222, 350, 108, 86, 129, 261, 266, 140, 310, 206, 241, 214, 258, 239, 242, 200, 251, 44, 339, 299, 199, 269, 136, 153, 249, 210, 71, 250, 255, 27, 270, 1, 124, 265, 137, 233, 368, 52, 36, 37, 264, 152, 81, 146, 23, 34, 307, 324, 182, 33, 69, 268, 18, 314, 0, 98, 300, 169, 143, 90, 349, 240, 301, 289, 360, 378, 63, 363, 302, 94, 211, 91, 55, 42, 78, 148, 221, 2, 113, 243, 164, 256, 93, 218, 31, 225, 58, 106, 374, 355, 367, 114, 25, 96, 84, 161, 294, 61, 380, 212, 381, 183, 147, 167, 172, 174, 323, 231, 111, 142, 75, 138, 133, 72, 207, 336, 8, 116, 53, 327, 180, 171, 204, 253, 194, 227, 333, 319, 162, 73, 74, 219, 312, 195, 203, 193, 159, 235, 66, 197, 82, 283, 188, 382, 198, 358, 110, 51, 43, 109, 22, 338, 79, 119, 353, 369, 30, 185, 99, 260, 341, 372, 279, 21, 347, 92, 139, 276, 196, 103, 331, 67, 209, 24, 216, 177, 248, 130, 257, 309, 29, 263, 274, 20, 189, 95, 305, 330, 121, 46, 76, 298, 332, 273, 313, 246, 306, 318, 373, 213, 259, 292, 126, 316, 237, 127, 160, 348, 85, 344, 11, 118, 28, 35, 5, 365, 89, 120, 354, 267, 236, 303, 47, 100, 371, 68, 151, 83, 176, 39, 186, 88] + 42: [206, 55, 41, 152, 223, 151, 264, 198, 184, 351, 1, 220, 327, 138, 80, 158, 235, 60, 116, 137, 145, 317, 30, 90, 20, 356, 278, 234, 143, 118, 355, 188, 336, 192, 69, 299, 358, 370, 172, 174, 83, 13, 330, 120, 381, 89, 273, 340, 333, 175, 366, 108, 62, 228, 367, 75, 297, 132, 70, 73, 305, 150, 300, 187, 347, 33, 155, 102, 238, 293, 82, 350, 84, 202, 129, 208, 10, 126, 67, 344, 149, 345, 374, 334, 369, 173, 242, 268, 376, 310, 343, 185, 205, 65, 106, 163, 280, 167, 148, 49, 260, 50, 115, 263, 2, 359, 362, 196, 371, 117, 35, 253, 98, 337, 245, 112, 308, 178, 92, 135, 168, 375, 332, 284, 368, 329, 136, 307, 331, 378, 31, 72, 335, 314, 346, 254, 154, 14, 16, 269, 121, 142, 46, 95, 189, 215, 104, 203, 63, 380, 37, 17, 342, 88, 7, 312, 236, 165, 247, 3, 241, 291, 91, 111, 320, 134, 296, 21, 313, 130, 197, 140, 85, 261, 301, 354, 15, 383, 18, 86, 240, 144, 338, 364, 54, 216, 25, 294, 250, 249, 64, 74, 290, 123, 232, 315, 256, 226, 213, 181, 32, 233, 325, 274, 61, 139, 22, 119, 373, 319, 227, 255, 23, 38, 251, 316, 56, 52, 204, 36, 195, 26, 349, 99, 125, 182, 40, 11, 78, 157, 252, 186, 164, 12, 199, 47, 39, 57, 159, 248, 303, 105, 262, 357, 19, 237, 209, 101, 285, 156, 286, 246, 298, 289, 265, 348, 147, 224, 191, 201, 8, 87, 170, 76, 219, 113, 5, 275, 377, 302, 277, 244, 230, 212, 360, 9, 107, 210, 133, 128, 311, 66, 243, 24, 193, 361, 214, 363, 131, 322, 200, 328, 71, 365, 4, 258, 267, 292, 59, 372, 379, 282, 161, 281, 100, 43, 114, 287, 34, 42, 309, 166, 79, 93, 169, 272, 176, 77, 211, 326, 94, 109, 28, 6, 194, 44, 318, 68, 324, 270, 266, 58, 51, 207, 339, 304, 231, 321, 353, 141, 110, 295, 279, 217, 259, 306, 103, 183, 53, 179, 239, 153, 162, 177, 341, 283, 352, 160, 48, 218, 96, 190, 45, 171, 222, 323, 225, 127, 124, 382, 221, 229, 146, 29, 0, 180, 257, 97, 276, 122, 288, 27, 81, 271] + 43: [377, 108, 170, 58, 216, 293, 275, 97, 1, 11, 211, 235, 66, 207, 120, 92, 137, 191, 351, 149, 185, 105, 81, 365, 69, 123, 48, 184, 68, 110, 192, 143, 197, 199, 95, 121, 258, 101, 176, 182, 106, 340, 348, 354, 310, 328, 325, 376, 36, 229, 256, 84, 13, 190, 57, 248, 153, 42, 253, 318, 366, 322, 189, 233, 195, 223, 35, 164, 244, 215, 250, 230, 327, 280, 146, 9, 380, 287, 183, 178, 212, 133, 292, 267, 88, 217, 309, 166, 115, 31, 381, 50, 125, 144, 361, 232, 87, 75, 65, 343, 150, 336, 116, 371, 53, 299, 332, 99, 27, 134, 147, 78, 107, 300, 218, 113, 179, 374, 201, 132, 316, 34, 175, 209, 249, 341, 114, 77, 160, 181, 282, 2, 90, 234, 138, 353, 226, 5, 91, 382, 29, 208, 8, 257, 255, 317, 344, 43, 240, 326, 252, 61, 72, 109, 194, 308, 301, 236, 140, 239, 122, 55, 224, 82, 298, 98, 45, 22, 352, 335, 142, 100, 219, 135, 260, 220, 38, 281, 76, 54, 342, 79, 277, 155, 172, 0, 307, 331, 271, 60, 139, 104, 205, 3, 129, 44, 284, 46, 290, 372, 168, 338, 148, 73, 265, 203, 214, 169, 305, 18, 165, 23, 28, 363, 263, 321, 26, 83, 186, 297, 56, 247, 339, 136, 362, 334, 14, 52, 111, 86, 273, 206, 89, 245, 187, 312, 17, 7, 128, 21, 161, 237, 254, 288, 131, 225, 154, 163, 319, 359, 227, 117, 242, 188, 63, 180, 329, 94, 70, 196, 289, 345, 171, 375, 80, 24, 314, 30, 6, 151, 295, 103, 278, 102, 93, 283, 10, 158, 200, 302, 167, 47, 370, 16, 119, 174, 276, 246, 40, 291, 49, 349, 330, 152, 59, 12, 346, 296, 228, 39, 141, 145, 368, 323, 347, 159, 270, 67, 221, 311, 157, 126, 367, 324, 156, 357, 251, 202, 266, 127, 383, 285, 378, 222, 306, 315, 96, 320, 304, 37, 51, 130, 64, 286, 4, 213, 210, 272, 198, 274, 32, 118, 337, 33, 238, 262, 364, 303, 379, 71, 356, 268, 369, 261, 204, 20, 231, 243, 177, 193, 360, 269, 279, 162, 355, 112, 264, 74, 313, 25, 62, 358, 259, 15, 124, 333, 85, 41, 173, 373, 350, 294, 19, 241] + 44: [213, 333, 224, 169, 300, 7, 8, 100, 199, 329, 219, 174, 3, 265, 144, 196, 117, 168, 1, 63, 118, 74, 346, 362, 49, 18, 272, 200, 285, 377, 161, 234, 55, 0, 365, 372, 334, 22, 324, 150, 50, 88, 283, 383, 363, 12, 307, 297, 64, 77, 217, 85, 212, 160, 227, 262, 89, 34, 233, 323, 54, 343, 367, 121, 9, 131, 98, 249, 96, 204, 326, 312, 28, 243, 314, 369, 252, 320, 87, 359, 90, 203, 70, 31, 33, 248, 245, 342, 190, 316, 332, 239, 374, 192, 27, 195, 277, 226, 93, 266, 142, 53, 171, 14, 178, 11, 380, 16, 350, 238, 146, 325, 313, 165, 92, 242, 106, 315, 46, 254, 19, 59, 193, 295, 51, 179, 4, 182, 185, 68, 286, 368, 128, 158, 373, 78, 103, 39, 6, 5, 206, 208, 41, 148, 255, 270, 26, 191, 301, 101, 271, 288, 99, 10, 73, 347, 86, 122, 62, 340, 289, 172, 379, 296, 24, 21, 167, 79, 159, 317, 72, 375, 126, 149, 360, 135, 132, 281, 298, 209, 152, 127, 143, 189, 259, 40, 309, 232, 162, 337, 67, 133, 183, 61, 97, 156, 110, 267, 38, 257, 66, 137, 230, 310, 163, 331, 84, 105, 278, 114, 91, 292, 210, 194, 225, 321, 382, 357, 47, 80, 260, 120, 240, 125, 75, 339, 256, 341, 228, 140, 36, 358, 20, 381, 354, 308, 344, 42, 322, 129, 186, 82, 302, 244, 76, 197, 173, 164, 348, 218, 349, 318, 291, 376, 258, 276, 351, 345, 155, 17, 268, 215, 57, 274, 273, 263, 237, 336, 290, 141, 130, 170, 303, 353, 71, 181, 111, 44, 198, 37, 30, 154, 364, 58, 136, 153, 139, 65, 56, 177, 299, 104, 83, 279, 241, 202, 95, 221, 113, 304, 269, 282, 175, 366, 280, 52, 201, 311, 284, 166, 246, 247, 157, 235, 123, 294, 207, 335, 293, 43, 151, 223, 214, 352, 15, 338, 184, 108, 229, 253, 60, 222, 112, 319, 176, 361, 251, 370, 124, 13, 35, 328, 305, 107, 356, 378, 275, 109, 119, 327, 264, 211, 32, 250, 145, 287, 23, 48, 187, 45, 102, 138, 69, 330, 306, 220, 188, 94, 180, 236, 355, 147, 29, 134, 25, 371, 231, 2, 115, 116, 216, 81, 261, 205] + 45: [201, 234, 254, 324, 285, 0, 262, 199, 122, 301, 318, 355, 121, 94, 39, 150, 179, 8, 190, 340, 277, 35, 125, 224, 274, 193, 208, 52, 202, 56, 130, 258, 268, 307, 375, 302, 216, 326, 287, 378, 119, 309, 40, 347, 181, 132, 313, 270, 9, 342, 222, 350, 51, 346, 46, 382, 180, 253, 171, 308, 241, 352, 368, 182, 151, 10, 374, 103, 156, 164, 70, 161, 153, 357, 299, 252, 115, 144, 381, 33, 292, 289, 159, 64, 6, 332, 173, 184, 338, 294, 17, 304, 22, 67, 251, 174, 123, 126, 246, 116, 74, 233, 226, 296, 278, 73, 363, 322, 188, 376, 136, 2, 218, 247, 348, 82, 250, 59, 58, 231, 101, 158, 330, 327, 293, 16, 236, 273, 230, 110, 81, 60, 72, 89, 77, 157, 155, 98, 129, 100, 205, 300, 172, 244, 154, 139, 44, 20, 369, 379, 213, 356, 75, 143, 207, 183, 34, 134, 109, 367, 281, 189, 5, 79, 306, 36, 269, 362, 127, 303, 95, 267, 220, 217, 196, 142, 106, 200, 197, 177, 227, 26, 264, 364, 93, 38, 336, 335, 209, 263, 117, 358, 353, 325, 349, 29, 147, 54, 80, 276, 25, 178, 176, 380, 317, 210, 305, 13, 360, 339, 186, 4, 290, 90, 99, 66, 107, 37, 271, 295, 265, 27, 175, 373, 78, 243, 12, 239, 28, 84, 1, 366, 195, 104, 135, 112, 19, 221, 86, 148, 219, 206, 329, 163, 62, 32, 48, 310, 162, 204, 23, 323, 279, 43, 85, 47, 145, 24, 345, 328, 92, 280, 284, 232, 365, 240, 128, 45, 259, 223, 321, 71, 260, 359, 203, 238, 361, 237, 30, 315, 235, 272, 311, 31, 124, 229, 18, 312, 354, 242, 41, 87, 191, 257, 152, 102, 68, 248, 383, 96, 187, 141, 261, 343, 140, 21, 333, 170, 320, 111, 255, 298, 212, 108, 55, 228, 49, 169, 42, 149, 105, 120, 275, 288, 314, 211, 50, 214, 266, 371, 69, 185, 83, 65, 337, 194, 131, 166, 133, 249, 118, 316, 334, 146, 198, 331, 372, 168, 114, 319, 256, 286, 15, 160, 245, 91, 3, 351, 113, 225, 57, 7, 370, 283, 215, 291, 63, 344, 297, 341, 192, 76, 61, 97, 282, 14, 138, 53, 88, 167, 11, 165, 377, 137] + 46: [354, 197, 340, 357, 204, 241, 214, 154, 231, 55, 176, 201, 367, 332, 156, 309, 314, 268, 58, 19, 56, 48, 116, 328, 372, 255, 62, 133, 187, 65, 228, 83, 244, 302, 182, 261, 26, 89, 373, 47, 94, 262, 251, 135, 181, 225, 325, 61, 207, 165, 155, 51, 101, 105, 169, 355, 284, 95, 76, 34, 358, 223, 93, 312, 211, 324, 110, 128, 260, 370, 267, 20, 351, 124, 80, 277, 146, 141, 41, 213, 145, 374, 198, 376, 296, 276, 90, 29, 85, 366, 126, 200, 132, 226, 178, 349, 227, 305, 368, 104, 170, 102, 157, 246, 114, 152, 125, 339, 42, 289, 206, 365, 285, 24, 193, 348, 158, 98, 68, 139, 40, 311, 303, 86, 283, 254, 137, 230, 151, 202, 282, 294, 123, 291, 333, 383, 22, 306, 281, 79, 50, 112, 88, 108, 326, 63, 298, 346, 362, 8, 111, 177, 150, 163, 160, 323, 161, 168, 327, 258, 361, 136, 269, 215, 265, 171, 304, 159, 286, 17, 371, 127, 242, 359, 31, 60, 208, 84, 240, 117, 335, 183, 175, 70, 43, 0, 14, 237, 118, 350, 3, 119, 247, 121, 75, 64, 166, 57, 245, 11, 142, 191, 205, 369, 23, 97, 321, 295, 275, 188, 129, 115, 250, 15, 143, 189, 33, 131, 162, 273, 342, 107, 352, 338, 71, 222, 375, 16, 30, 313, 184, 288, 174, 134, 67, 1, 270, 100, 167, 122, 264, 194, 239, 52, 172, 186, 266, 38, 106, 337, 224, 66, 317, 45, 4, 73, 196, 307, 380, 149, 345, 232, 113, 192, 185, 32, 234, 238, 344, 297, 334, 18, 209, 54, 92, 310, 180, 9, 13, 138, 144, 212, 216, 252, 308, 347, 220, 27, 382, 221, 25, 96, 329, 10, 199, 35, 7, 316, 292, 217, 322, 343, 130, 360, 103, 299, 153, 278, 28, 6, 2, 218, 290, 53, 263, 140, 39, 287, 233, 331, 37, 249, 91, 364, 318, 229, 49, 77, 82, 120, 36, 341, 356, 243, 379, 336, 203, 253, 256, 235, 271, 69, 195, 377, 72, 44, 21, 109, 381, 78, 257, 147, 301, 248, 210, 378, 219, 190, 319, 12, 164, 300, 259, 74, 353, 46, 363, 87, 81, 59, 99, 173, 179, 272, 315, 320, 274, 280, 236, 330, 148, 279, 293, 5] + 47: [342, 368, 137, 80, 216, 163, 172, 265, 304, 181, 261, 225, 343, 352, 230, 91, 33, 36, 129, 83, 224, 309, 140, 101, 213, 133, 296, 192, 99, 363, 254, 60, 66, 62, 344, 351, 379, 49, 251, 114, 209, 236, 199, 326, 56, 145, 288, 78, 144, 255, 19, 170, 286, 4, 315, 17, 215, 9, 371, 234, 298, 185, 211, 87, 208, 159, 355, 51, 118, 106, 132, 205, 299, 76, 63, 81, 293, 200, 258, 134, 244, 348, 287, 319, 58, 38, 346, 279, 7, 149, 270, 92, 46, 381, 365, 182, 187, 341, 141, 262, 100, 184, 111, 103, 266, 65, 329, 367, 276, 44, 189, 278, 109, 378, 169, 39, 361, 203, 55, 75, 228, 372, 259, 21, 174, 301, 12, 177, 165, 316, 362, 242, 331, 10, 104, 94, 239, 13, 96, 120, 256, 353, 142, 152, 162, 303, 249, 235, 127, 370, 183, 52, 275, 374, 95, 198, 26, 227, 359, 126, 300, 231, 105, 37, 269, 180, 313, 28, 190, 322, 358, 23, 247, 339, 321, 93, 139, 164, 290, 222, 366, 336, 308, 369, 186, 47, 252, 128, 25, 112, 221, 6, 54, 158, 330, 24, 97, 280, 59, 376, 285, 14, 117, 373, 1, 377, 72, 115, 57, 77, 138, 375, 122, 176, 317, 233, 131, 212, 335, 85, 70, 153, 64, 241, 194, 267, 2, 166, 214, 277, 20, 130, 380, 90, 295, 253, 283, 116, 82, 219, 333, 197, 195, 312, 16, 217, 382, 338, 0, 325, 223, 179, 5, 232, 45, 143, 207, 79, 175, 73, 201, 302, 337, 178, 218, 173, 327, 240, 328, 250, 31, 245, 210, 324, 226, 292, 125, 237, 69, 246, 68, 220, 281, 124, 191, 323, 349, 167, 3, 74, 110, 18, 332, 50, 340, 206, 204, 135, 148, 43, 34, 53, 357, 274, 360, 307, 314, 383, 108, 297, 356, 41, 40, 263, 193, 42, 334, 168, 136, 30, 102, 347, 98, 113, 161, 260, 160, 364, 8, 121, 196, 268, 306, 318, 88, 150, 271, 48, 282, 257, 238, 29, 229, 294, 155, 291, 157, 305, 156, 345, 243, 123, 320, 35, 27, 188, 151, 67, 154, 289, 89, 354, 32, 284, 22, 15, 202, 119, 264, 248, 61, 86, 146, 350, 310, 273, 171, 11, 71, 147, 311, 272, 84, 107] + 48: [271, 268, 287, 254, 76, 270, 352, 38, 143, 185, 190, 267, 200, 56, 162, 236, 241, 97, 112, 123, 18, 48, 306, 127, 346, 319, 11, 288, 119, 186, 62, 171, 355, 134, 169, 33, 191, 280, 196, 176, 299, 23, 308, 349, 243, 96, 36, 84, 310, 26, 264, 182, 65, 187, 102, 22, 183, 279, 311, 63, 301, 195, 194, 237, 253, 204, 224, 233, 136, 111, 19, 213, 218, 173, 354, 206, 269, 13, 365, 215, 370, 320, 87, 314, 39, 47, 67, 201, 106, 126, 248, 29, 1, 371, 149, 153, 340, 239, 313, 283, 130, 381, 245, 312, 9, 69, 193, 146, 259, 234, 238, 132, 202, 329, 363, 75, 372, 109, 140, 144, 192, 59, 108, 242, 98, 79, 141, 231, 335, 377, 86, 316, 351, 240, 265, 333, 332, 27, 309, 339, 220, 2, 163, 331, 118, 291, 353, 128, 103, 261, 180, 378, 216, 181, 249, 139, 232, 91, 121, 117, 21, 24, 74, 228, 289, 49, 286, 161, 235, 155, 302, 247, 208, 40, 266, 303, 85, 83, 304, 327, 300, 203, 366, 174, 164, 294, 373, 282, 359, 114, 217, 46, 273, 57, 148, 290, 104, 177, 172, 78, 52, 321, 89, 16, 374, 343, 99, 107, 258, 326, 367, 344, 142, 358, 360, 362, 285, 263, 37, 347, 229, 71, 257, 275, 82, 122, 43, 357, 348, 167, 150, 0, 209, 66, 54, 199, 222, 10, 8, 250, 376, 5, 3, 131, 101, 226, 315, 251, 147, 179, 20, 159, 368, 72, 55, 64, 135, 170, 212, 298, 145, 35, 244, 100, 375, 356, 324, 305, 292, 325, 15, 41, 50, 17, 80, 364, 252, 178, 369, 328, 6, 124, 105, 379, 276, 30, 260, 53, 138, 45, 133, 90, 210, 227, 223, 92, 158, 7, 318, 334, 382, 293, 77, 189, 336, 12, 317, 93, 205, 125, 44, 278, 342, 88, 274, 156, 42, 262, 95, 168, 323, 94, 246, 58, 152, 110, 198, 256, 277, 219, 221, 165, 68, 211, 361, 160, 34, 116, 281, 14, 207, 345, 32, 115, 154, 4, 28, 272, 60, 350, 81, 295, 230, 383, 31, 297, 225, 51, 73, 341, 380, 255, 25, 330, 61, 120, 307, 338, 197, 151, 70, 113, 166, 214, 157, 296, 284, 322, 175, 337, 184, 188, 137, 129] + 49: [180, 4, 202, 178, 345, 155, 133, 259, 161, 108, 299, 280, 183, 286, 110, 339, 363, 303, 17, 146, 313, 255, 14, 128, 235, 377, 105, 132, 294, 216, 33, 163, 116, 277, 43, 256, 187, 26, 171, 368, 325, 106, 328, 223, 64, 145, 347, 3, 199, 312, 283, 23, 45, 274, 262, 236, 376, 58, 382, 16, 25, 253, 54, 292, 118, 47, 27, 15, 281, 60, 117, 142, 7, 111, 268, 326, 291, 95, 257, 18, 295, 324, 349, 190, 165, 149, 354, 189, 113, 162, 264, 131, 227, 147, 252, 200, 341, 270, 321, 225, 226, 238, 94, 344, 77, 248, 61, 196, 318, 86, 153, 197, 219, 209, 366, 156, 272, 378, 311, 52, 316, 273, 243, 35, 115, 44, 139, 305, 361, 364, 342, 39, 327, 358, 182, 69, 0, 352, 375, 245, 288, 29, 244, 168, 302, 353, 208, 314, 218, 78, 381, 114, 125, 258, 306, 6, 205, 298, 158, 233, 151, 355, 169, 83, 241, 70, 56, 89, 379, 212, 246, 332, 198, 134, 221, 72, 170, 260, 82, 240, 309, 186, 101, 167, 356, 203, 24, 348, 317, 373, 71, 217, 28, 107, 338, 34, 333, 370, 127, 319, 76, 242, 224, 73, 176, 249, 172, 148, 330, 91, 98, 369, 334, 287, 179, 181, 263, 8, 166, 140, 367, 102, 380, 74, 88, 271, 275, 122, 62, 247, 301, 300, 152, 19, 350, 97, 285, 42, 329, 135, 59, 121, 269, 323, 289, 359, 164, 112, 192, 22, 40, 250, 194, 104, 267, 143, 185, 57, 9, 37, 85, 141, 214, 360, 175, 1, 195, 174, 304, 20, 12, 79, 308, 53, 80, 90, 160, 362, 213, 129, 130, 177, 222, 11, 68, 123, 237, 211, 230, 120, 100, 38, 371, 266, 206, 372, 337, 136, 50, 307, 290, 49, 150, 48, 30, 276, 157, 159, 335, 239, 75, 215, 322, 154, 46, 2, 84, 296, 383, 204, 109, 41, 21, 282, 137, 279, 63, 191, 336, 229, 51, 188, 67, 254, 31, 65, 331, 234, 228, 32, 66, 351, 297, 184, 315, 374, 261, 5, 207, 201, 310, 365, 126, 173, 293, 93, 284, 36, 220, 320, 96, 103, 278, 55, 13, 346, 210, 92, 251, 343, 340, 138, 265, 81, 99, 87, 10, 231, 193, 357, 119, 124, 144, 232] + 50: [159, 162, 69, 250, 282, 152, 358, 248, 326, 229, 246, 350, 286, 295, 168, 293, 105, 137, 74, 227, 144, 233, 78, 108, 109, 374, 11, 111, 222, 341, 244, 180, 253, 200, 173, 197, 231, 8, 303, 308, 257, 273, 106, 70, 278, 63, 46, 65, 49, 26, 348, 381, 0, 383, 301, 14, 145, 121, 31, 362, 361, 36, 10, 363, 75, 171, 61, 366, 199, 126, 228, 116, 133, 214, 333, 30, 255, 149, 307, 41, 182, 151, 71, 318, 132, 205, 184, 219, 20, 337, 82, 332, 297, 2, 103, 93, 1, 81, 66, 275, 150, 27, 76, 306, 3, 58, 52, 281, 77, 80, 340, 187, 42, 224, 277, 304, 32, 216, 35, 194, 54, 4, 382, 91, 128, 24, 279, 141, 344, 269, 311, 73, 115, 19, 316, 373, 95, 59, 290, 195, 291, 21, 377, 264, 102, 268, 369, 352, 360, 220, 347, 28, 165, 289, 261, 175, 265, 15, 37, 243, 5, 123, 342, 62, 238, 127, 100, 354, 375, 183, 154, 34, 17, 147, 142, 60, 294, 245, 221, 181, 38, 157, 92, 376, 331, 114, 247, 258, 64, 283, 234, 55, 191, 212, 45, 349, 169, 298, 328, 130, 122, 188, 94, 371, 155, 210, 186, 113, 13, 252, 89, 296, 267, 202, 110, 270, 51, 320, 198, 176, 84, 47, 166, 263, 239, 160, 322, 125, 143, 254, 136, 323, 237, 365, 368, 120, 50, 72, 179, 276, 29, 256, 235, 124, 135, 68, 161, 343, 138, 177, 357, 345, 140, 380, 40, 178, 57, 139, 18, 97, 217, 134, 88, 325, 240, 356, 6, 272, 319, 372, 190, 266, 379, 346, 218, 259, 241, 22, 172, 317, 206, 79, 98, 213, 23, 338, 230, 260, 48, 192, 271, 119, 25, 327, 164, 249, 313, 117, 299, 353, 378, 86, 262, 226, 336, 96, 314, 193, 189, 112, 302, 324, 56, 339, 329, 211, 201, 9, 209, 107, 242, 284, 207, 215, 148, 185, 196, 146, 305, 251, 90, 131, 99, 167, 364, 174, 53, 153, 359, 204, 33, 315, 232, 351, 16, 334, 156, 280, 12, 158, 321, 203, 87, 274, 129, 163, 39, 292, 236, 288, 287, 208, 223, 335, 309, 367, 7, 85, 355, 285, 44, 370, 300, 67, 170, 101, 312, 104, 310, 43, 225, 118, 330, 83] + 51: [24, 253, 354, 129, 288, 368, 164, 311, 162, 270, 251, 380, 59, 330, 338, 72, 64, 216, 140, 215, 25, 103, 285, 298, 75, 30, 157, 379, 207, 96, 292, 355, 134, 359, 123, 187, 4, 184, 50, 76, 175, 138, 335, 351, 249, 128, 179, 29, 102, 200, 294, 122, 169, 277, 88, 327, 260, 74, 180, 352, 95, 228, 212, 343, 71, 297, 281, 124, 213, 167, 13, 317, 8, 310, 259, 319, 11, 87, 78, 233, 339, 365, 63, 172, 125, 0, 116, 160, 174, 269, 21, 159, 274, 142, 155, 68, 287, 23, 46, 16, 166, 357, 314, 77, 10, 219, 254, 81, 315, 235, 206, 141, 295, 89, 153, 66, 165, 56, 127, 373, 115, 20, 238, 371, 279, 18, 94, 27, 3, 43, 104, 218, 194, 293, 349, 263, 261, 45, 121, 202, 243, 250, 377, 309, 241, 79, 62, 99, 53, 360, 369, 280, 329, 372, 336, 358, 130, 98, 7, 209, 382, 188, 144, 245, 367, 364, 214, 32, 14, 244, 182, 114, 149, 83, 229, 15, 231, 237, 67, 126, 86, 176, 361, 196, 267, 109, 248, 348, 331, 154, 58, 181, 275, 173, 324, 189, 239, 12, 234, 303, 350, 224, 334, 73, 284, 118, 38, 183, 333, 51, 283, 143, 60, 146, 353, 337, 195, 193, 6, 85, 302, 40, 346, 107, 381, 39, 110, 185, 112, 363, 120, 255, 151, 52, 199, 117, 2, 131, 93, 36, 282, 322, 210, 17, 33, 232, 258, 47, 271, 5, 252, 227, 171, 82, 375, 108, 347, 323, 304, 152, 208, 1, 80, 278, 19, 307, 341, 191, 362, 168, 265, 201, 91, 101, 321, 84, 378, 230, 383, 376, 225, 296, 54, 61, 55, 197, 31, 290, 257, 204, 264, 328, 145, 113, 26, 312, 161, 308, 211, 222, 340, 306, 35, 177, 48, 320, 374, 28, 205, 44, 65, 37, 190, 344, 163, 156, 97, 133, 34, 342, 247, 221, 147, 22, 100, 49, 370, 276, 158, 135, 150, 139, 236, 273, 291, 332, 106, 313, 246, 299, 70, 119, 111, 69, 132, 137, 325, 186, 226, 316, 240, 266, 301, 9, 268, 220, 203, 136, 300, 198, 170, 178, 262, 192, 286, 289, 272, 326, 223, 90, 41, 366, 148, 217, 305, 242, 105, 345, 356, 42, 92, 57, 256, 318] + 52: [345, 58, 151, 20, 57, 334, 140, 206, 297, 165, 143, 178, 167, 6, 129, 41, 281, 337, 33, 67, 252, 80, 318, 137, 294, 259, 278, 249, 341, 189, 215, 289, 245, 299, 380, 54, 229, 136, 342, 153, 303, 46, 374, 106, 21, 382, 36, 348, 183, 254, 369, 224, 180, 358, 115, 92, 230, 114, 128, 211, 328, 172, 34, 8, 168, 191, 51, 262, 271, 120, 234, 134, 370, 227, 309, 210, 32, 372, 209, 14, 163, 45, 344, 66, 96, 304, 246, 280, 257, 235, 170, 201, 42, 310, 353, 156, 228, 319, 320, 325, 368, 296, 55, 331, 72, 273, 298, 12, 286, 266, 232, 3, 76, 93, 256, 43, 193, 362, 336, 133, 326, 338, 85, 208, 207, 87, 104, 195, 317, 47, 378, 121, 330, 315, 203, 275, 200, 324, 202, 17, 62, 181, 188, 264, 125, 69, 63, 171, 26, 248, 50, 182, 139, 284, 24, 295, 73, 339, 322, 190, 221, 205, 217, 359, 118, 185, 308, 84, 160, 365, 352, 263, 145, 276, 105, 377, 152, 18, 52, 204, 268, 110, 23, 223, 158, 241, 312, 283, 149, 265, 113, 375, 323, 186, 25, 332, 288, 291, 225, 305, 239, 346, 56, 166, 343, 144, 77, 82, 274, 321, 231, 150, 285, 119, 364, 48, 29, 236, 306, 366, 356, 89, 70, 173, 40, 90, 244, 142, 255, 81, 148, 292, 253, 0, 279, 238, 196, 59, 5, 247, 381, 53, 71, 141, 138, 226, 74, 101, 198, 157, 131, 184, 242, 11, 100, 258, 361, 30, 240, 65, 116, 293, 287, 243, 61, 363, 164, 27, 75, 22, 68, 4, 233, 159, 350, 333, 179, 237, 355, 220, 251, 175, 19, 373, 38, 176, 340, 98, 7, 174, 132, 357, 169, 213, 79, 108, 270, 222, 13, 154, 327, 197, 301, 379, 95, 147, 307, 313, 277, 367, 60, 302, 49, 219, 250, 347, 192, 349, 91, 103, 123, 360, 117, 282, 335, 269, 329, 272, 9, 351, 290, 126, 1, 162, 199, 28, 107, 124, 97, 83, 2, 216, 37, 161, 99, 31, 261, 155, 314, 177, 316, 44, 111, 383, 78, 10, 354, 187, 300, 112, 64, 260, 146, 376, 311, 194, 130, 88, 371, 109, 267, 122, 127, 16, 214, 218, 15, 212, 35, 102, 94, 86, 135, 39] + 53: [350, 170, 119, 16, 125, 203, 145, 118, 85, 274, 360, 173, 365, 233, 58, 250, 373, 217, 12, 32, 275, 317, 120, 262, 235, 202, 229, 329, 122, 305, 133, 155, 186, 221, 31, 284, 213, 87, 90, 113, 316, 151, 93, 165, 36, 272, 265, 84, 308, 129, 232, 20, 363, 132, 60, 112, 261, 65, 326, 162, 38, 111, 358, 169, 320, 368, 157, 333, 237, 301, 369, 144, 359, 295, 62, 34, 357, 76, 208, 299, 381, 40, 79, 336, 22, 106, 251, 331, 96, 355, 99, 135, 61, 364, 374, 177, 279, 222, 198, 52, 2, 268, 134, 376, 204, 131, 178, 351, 127, 10, 70, 100, 227, 3, 64, 371, 328, 300, 9, 270, 291, 216, 253, 107, 35, 121, 30, 39, 83, 290, 44, 242, 77, 220, 5, 223, 98, 378, 289, 380, 57, 123, 193, 321, 206, 324, 226, 168, 276, 4, 347, 228, 257, 277, 194, 306, 201, 179, 273, 117, 47, 108, 247, 81, 59, 245, 297, 116, 212, 285, 313, 95, 338, 260, 67, 163, 322, 15, 109, 49, 310, 72, 282, 27, 0, 21, 80, 190, 114, 43, 153, 48, 94, 294, 14, 309, 74, 330, 348, 196, 25, 243, 345, 6, 197, 68, 37, 323, 136, 23, 225, 341, 105, 298, 231, 207, 66, 281, 104, 303, 17, 54, 366, 200, 139, 249, 141, 89, 325, 218, 248, 192, 315, 349, 210, 124, 7, 344, 51, 244, 180, 73, 280, 149, 224, 296, 372, 92, 183, 53, 302, 56, 361, 271, 219, 184, 175, 258, 91, 158, 142, 97, 147, 332, 46, 292, 86, 137, 171, 115, 255, 102, 283, 375, 205, 339, 318, 354, 278, 63, 327, 362, 1, 377, 246, 150, 71, 307, 110, 352, 176, 195, 26, 367, 191, 156, 78, 75, 209, 160, 337, 240, 187, 293, 8, 126, 24, 13, 342, 353, 19, 50, 311, 238, 340, 269, 42, 346, 82, 128, 161, 304, 185, 167, 230, 55, 264, 189, 11, 241, 138, 267, 140, 211, 314, 154, 356, 379, 287, 334, 146, 166, 69, 370, 174, 148, 33, 288, 41, 319, 103, 383, 239, 236, 172, 335, 252, 382, 159, 266, 214, 29, 152, 256, 215, 28, 312, 254, 259, 143, 45, 88, 263, 101, 130, 18, 343, 188, 199, 234, 164, 182, 181, 286] + 54: [294, 240, 62, 148, 233, 71, 343, 196, 156, 325, 375, 82, 372, 77, 228, 19, 183, 81, 280, 45, 65, 335, 351, 206, 296, 278, 187, 308, 73, 347, 173, 255, 349, 210, 338, 319, 175, 168, 67, 244, 324, 227, 52, 29, 160, 266, 382, 39, 262, 115, 11, 13, 197, 304, 248, 117, 214, 161, 157, 130, 298, 311, 310, 171, 356, 261, 215, 181, 357, 176, 33, 353, 312, 265, 239, 348, 116, 247, 83, 25, 367, 330, 223, 64, 150, 252, 307, 208, 151, 256, 377, 55, 368, 169, 303, 141, 253, 133, 119, 199, 158, 358, 361, 129, 32, 44, 75, 53, 66, 22, 339, 125, 120, 159, 186, 149, 190, 182, 213, 346, 3, 295, 267, 80, 373, 269, 231, 99, 88, 371, 139, 243, 246, 245, 350, 364, 374, 105, 36, 170, 362, 288, 165, 212, 95, 48, 34, 381, 217, 40, 16, 316, 250, 332, 108, 178, 282, 97, 229, 220, 283, 260, 201, 164, 110, 21, 137, 292, 54, 344, 318, 355, 277, 69, 273, 104, 63, 107, 101, 87, 35, 331, 59, 226, 49, 209, 102, 61, 232, 342, 78, 297, 132, 31, 27, 50, 363, 275, 15, 143, 121, 189, 70, 167, 6, 18, 153, 287, 221, 193, 144, 301, 37, 279, 26, 326, 225, 224, 281, 93, 259, 74, 211, 274, 1, 207, 383, 92, 58, 114, 238, 162, 172, 272, 200, 216, 128, 263, 320, 241, 5, 98, 284, 257, 236, 76, 111, 290, 126, 322, 360, 43, 146, 155, 329, 174, 345, 234, 249, 369, 38, 299, 264, 219, 51, 195, 20, 14, 203, 145, 365, 86, 327, 237, 68, 166, 293, 270, 315, 9, 334, 2, 0, 106, 321, 317, 152, 340, 302, 89, 289, 127, 336, 103, 291, 376, 314, 380, 10, 12, 147, 192, 378, 337, 113, 154, 131, 135, 230, 177, 136, 57, 328, 42, 56, 122, 271, 8, 300, 198, 309, 79, 85, 188, 184, 112, 100, 90, 179, 60, 28, 24, 4, 313, 354, 285, 286, 276, 306, 41, 379, 258, 305, 84, 47, 30, 191, 17, 185, 268, 142, 254, 251, 94, 23, 242, 370, 124, 218, 96, 180, 46, 352, 91, 138, 123, 109, 140, 72, 323, 204, 118, 163, 333, 7, 359, 205, 235, 222, 134, 341, 202, 194, 366] + 55: [106, 380, 227, 340, 75, 182, 267, 315, 175, 71, 60, 302, 50, 256, 2, 5, 88, 242, 251, 169, 86, 87, 66, 238, 194, 12, 365, 311, 343, 300, 210, 144, 294, 138, 318, 99, 220, 168, 316, 286, 276, 379, 136, 15, 359, 83, 207, 135, 298, 90, 345, 30, 334, 297, 126, 81, 22, 245, 13, 17, 125, 54, 381, 8, 4, 150, 241, 202, 152, 299, 250, 51, 85, 358, 237, 211, 111, 263, 260, 91, 363, 255, 193, 362, 258, 331, 59, 122, 228, 179, 92, 31, 108, 57, 82, 285, 306, 279, 80, 309, 326, 177, 361, 278, 206, 368, 105, 203, 61, 252, 308, 78, 1, 163, 188, 70, 134, 231, 353, 157, 139, 317, 233, 229, 112, 287, 383, 110, 338, 119, 332, 102, 153, 100, 141, 373, 367, 190, 128, 320, 109, 351, 321, 215, 191, 219, 327, 214, 323, 243, 159, 254, 352, 62, 67, 48, 130, 6, 161, 355, 7, 189, 180, 212, 154, 41, 107, 101, 143, 72, 129, 46, 378, 324, 133, 268, 372, 181, 145, 93, 236, 172, 346, 313, 283, 310, 148, 266, 58, 3, 196, 357, 65, 271, 216, 103, 382, 35, 166, 322, 185, 218, 226, 314, 176, 342, 339, 49, 77, 341, 274, 53, 336, 16, 208, 95, 23, 330, 158, 137, 52, 151, 0, 282, 114, 209, 32, 192, 292, 34, 199, 178, 337, 197, 89, 96, 275, 371, 24, 28, 348, 281, 146, 165, 277, 170, 123, 246, 303, 149, 325, 84, 69, 304, 36, 121, 265, 164, 33, 307, 225, 370, 127, 369, 356, 160, 301, 296, 173, 167, 360, 10, 19, 187, 221, 171, 43, 195, 68, 374, 147, 156, 21, 132, 261, 204, 305, 25, 63, 270, 272, 200, 55, 27, 280, 45, 183, 234, 73, 39, 131, 94, 232, 20, 38, 74, 333, 289, 364, 344, 224, 293, 377, 366, 259, 284, 56, 257, 40, 312, 273, 253, 262, 124, 44, 376, 201, 288, 97, 118, 117, 244, 142, 335, 239, 104, 347, 98, 186, 235, 174, 350, 26, 113, 64, 329, 47, 328, 18, 240, 319, 116, 269, 249, 290, 375, 230, 213, 115, 291, 354, 155, 76, 349, 37, 248, 184, 79, 217, 162, 29, 42, 11, 198, 247, 295, 222, 264, 223, 9, 205, 120, 140, 14] + 56: [253, 166, 378, 195, 104, 224, 169, 12, 151, 30, 65, 311, 87, 42, 15, 0, 264, 326, 179, 327, 84, 176, 340, 219, 331, 321, 35, 77, 258, 298, 333, 233, 270, 74, 85, 202, 193, 127, 357, 315, 380, 50, 192, 25, 37, 24, 110, 180, 240, 88, 374, 237, 220, 323, 82, 251, 337, 123, 10, 256, 135, 83, 158, 162, 31, 91, 154, 34, 359, 205, 97, 247, 146, 268, 114, 76, 346, 118, 73, 215, 379, 64, 26, 52, 345, 273, 208, 316, 293, 200, 287, 173, 142, 234, 55, 54, 364, 260, 167, 72, 201, 363, 140, 39, 303, 266, 36, 1, 204, 214, 161, 90, 9, 277, 206, 283, 354, 58, 122, 236, 328, 170, 124, 227, 261, 271, 291, 355, 22, 188, 126, 244, 145, 257, 377, 7, 174, 344, 17, 254, 358, 367, 3, 152, 156, 89, 279, 59, 93, 49, 23, 20, 163, 75, 14, 313, 172, 106, 184, 383, 6, 342, 304, 177, 282, 190, 238, 16, 57, 11, 105, 275, 245, 248, 79, 132, 197, 318, 155, 148, 183, 13, 375, 38, 373, 314, 78, 29, 138, 280, 263, 67, 243, 294, 306, 231, 278, 107, 343, 249, 324, 121, 285, 189, 320, 181, 307, 207, 196, 286, 203, 276, 351, 272, 120, 255, 86, 139, 80, 60, 349, 81, 212, 66, 21, 119, 71, 299, 56, 133, 131, 290, 51, 222, 296, 143, 274, 41, 108, 352, 356, 92, 361, 113, 128, 223, 300, 292, 310, 95, 187, 160, 69, 209, 382, 28, 62, 284, 225, 111, 136, 153, 368, 150, 289, 134, 217, 210, 45, 168, 211, 350, 308, 94, 250, 130, 267, 182, 47, 330, 366, 312, 301, 61, 288, 376, 48, 360, 53, 239, 241, 369, 159, 125, 194, 325, 335, 112, 329, 259, 216, 228, 100, 242, 334, 98, 116, 265, 99, 18, 33, 185, 302, 46, 186, 309, 336, 246, 102, 319, 297, 295, 32, 63, 199, 229, 149, 339, 348, 305, 381, 103, 171, 226, 338, 165, 44, 281, 5, 362, 317, 141, 372, 221, 137, 322, 40, 198, 332, 252, 101, 19, 144, 147, 2, 117, 4, 191, 371, 213, 27, 235, 365, 232, 129, 218, 96, 370, 269, 353, 8, 175, 178, 43, 347, 341, 157, 230, 68, 262, 70, 164, 115, 109] + 57: [137, 254, 231, 136, 207, 153, 167, 248, 345, 18, 354, 125, 313, 21, 232, 143, 92, 78, 12, 158, 224, 31, 139, 67, 284, 189, 120, 298, 93, 193, 357, 7, 147, 307, 175, 86, 247, 191, 24, 258, 194, 15, 337, 69, 382, 245, 275, 376, 197, 157, 350, 53, 56, 269, 362, 240, 109, 106, 111, 344, 277, 300, 325, 114, 209, 88, 361, 112, 279, 100, 214, 48, 238, 166, 135, 369, 226, 124, 145, 246, 373, 235, 39, 308, 0, 46, 311, 315, 250, 333, 328, 252, 82, 66, 221, 372, 155, 9, 280, 321, 289, 188, 371, 377, 356, 57, 64, 253, 211, 165, 119, 323, 140, 156, 89, 3, 73, 241, 208, 295, 185, 339, 192, 65, 154, 97, 129, 332, 54, 164, 358, 229, 353, 370, 239, 80, 81, 290, 381, 126, 68, 133, 13, 262, 152, 74, 113, 304, 108, 282, 331, 326, 179, 44, 83, 33, 203, 60, 346, 4, 98, 205, 342, 359, 151, 302, 11, 186, 23, 99, 142, 121, 22, 368, 196, 144, 283, 212, 270, 285, 174, 176, 216, 255, 380, 227, 202, 355, 172, 102, 249, 301, 42, 265, 347, 233, 251, 177, 273, 90, 27, 297, 77, 217, 36, 118, 363, 51, 271, 107, 187, 103, 287, 367, 317, 286, 303, 182, 336, 223, 71, 52, 50, 230, 334, 319, 335, 62, 201, 236, 95, 180, 210, 256, 63, 348, 213, 45, 312, 131, 288, 130, 104, 2, 314, 170, 281, 242, 128, 266, 341, 268, 40, 169, 220, 364, 146, 132, 141, 55, 375, 85, 171, 123, 37, 318, 237, 58, 110, 16, 320, 274, 219, 206, 222, 72, 296, 19, 6, 330, 70, 379, 374, 234, 14, 105, 183, 215, 159, 198, 294, 278, 228, 204, 272, 340, 35, 383, 322, 259, 316, 32, 43, 117, 61, 94, 1, 184, 150, 338, 161, 41, 378, 181, 225, 276, 76, 30, 134, 115, 59, 349, 257, 329, 178, 168, 162, 20, 127, 351, 96, 305, 34, 293, 264, 343, 243, 261, 10, 26, 190, 306, 79, 84, 324, 29, 87, 25, 28, 163, 299, 310, 49, 101, 160, 199, 148, 267, 195, 122, 291, 8, 366, 244, 17, 47, 365, 5, 218, 91, 38, 173, 138, 263, 260, 309, 75, 360, 200, 352, 116, 327, 292, 149] + 58: [208, 276, 275, 39, 254, 40, 352, 360, 28, 94, 3, 373, 315, 271, 176, 292, 190, 21, 365, 139, 327, 183, 79, 331, 81, 119, 89, 147, 80, 354, 110, 41, 105, 324, 231, 42, 212, 127, 65, 188, 173, 253, 255, 332, 134, 38, 64, 165, 56, 143, 314, 85, 189, 175, 344, 205, 305, 319, 153, 337, 290, 303, 235, 15, 26, 345, 99, 7, 264, 349, 181, 47, 295, 46, 58, 196, 224, 121, 0, 74, 291, 294, 213, 336, 53, 278, 339, 267, 311, 308, 362, 240, 137, 109, 84, 184, 187, 161, 288, 250, 66, 141, 33, 125, 49, 18, 300, 34, 55, 372, 307, 25, 306, 180, 70, 43, 216, 280, 92, 13, 230, 289, 219, 4, 75, 122, 346, 329, 266, 376, 116, 154, 249, 87, 221, 321, 88, 159, 144, 317, 209, 369, 364, 168, 270, 283, 124, 10, 114, 299, 350, 272, 73, 31, 63, 214, 313, 236, 234, 72, 244, 281, 156, 177, 76, 260, 86, 27, 265, 333, 170, 367, 285, 101, 135, 1, 247, 269, 287, 200, 310, 243, 252, 17, 174, 32, 201, 117, 358, 29, 340, 30, 220, 93, 69, 380, 151, 57, 263, 22, 98, 67, 50, 152, 256, 229, 59, 60, 198, 227, 191, 45, 155, 323, 160, 185, 36, 202, 304, 262, 128, 273, 149, 62, 225, 97, 326, 166, 347, 118, 178, 197, 251, 353, 186, 37, 233, 51, 23, 342, 77, 377, 238, 277, 274, 217, 218, 91, 316, 90, 351, 298, 44, 207, 5, 172, 2, 82, 210, 103, 199, 348, 341, 237, 148, 24, 192, 261, 52, 182, 334, 383, 78, 113, 71, 19, 20, 309, 157, 361, 169, 164, 115, 355, 162, 330, 133, 312, 245, 232, 14, 120, 203, 211, 379, 12, 193, 129, 248, 301, 132, 123, 130, 284, 371, 100, 242, 374, 226, 228, 194, 8, 107, 108, 167, 223, 136, 104, 378, 375, 381, 142, 282, 106, 357, 126, 204, 382, 9, 259, 131, 95, 206, 35, 222, 215, 366, 359, 179, 102, 96, 268, 145, 68, 239, 146, 338, 325, 163, 368, 61, 16, 293, 11, 112, 54, 257, 241, 140, 322, 111, 297, 150, 328, 48, 171, 356, 286, 320, 258, 279, 343, 246, 6, 138, 83, 296, 195, 302, 370, 318, 335, 158, 363] + 59: [170, 274, 214, 234, 340, 89, 151, 195, 223, 34, 210, 262, 328, 66, 202, 304, 288, 185, 373, 241, 292, 115, 91, 1, 138, 141, 44, 271, 37, 344, 336, 207, 102, 319, 101, 96, 107, 227, 247, 71, 239, 67, 169, 189, 122, 215, 22, 108, 312, 33, 226, 290, 50, 82, 95, 293, 334, 199, 245, 263, 225, 327, 172, 281, 346, 322, 303, 120, 118, 28, 94, 270, 206, 369, 9, 51, 363, 296, 238, 81, 337, 345, 240, 88, 253, 136, 129, 49, 104, 106, 128, 255, 79, 68, 161, 375, 272, 229, 142, 307, 85, 317, 73, 383, 152, 372, 282, 5, 90, 196, 212, 148, 371, 366, 63, 21, 131, 143, 135, 19, 365, 259, 76, 278, 318, 276, 315, 192, 144, 77, 287, 230, 269, 186, 305, 353, 237, 347, 117, 310, 235, 268, 4, 119, 113, 36, 149, 289, 224, 14, 279, 221, 48, 201, 302, 297, 342, 157, 368, 105, 311, 39, 86, 155, 70, 330, 30, 190, 7, 370, 325, 162, 285, 140, 126, 211, 53, 47, 193, 83, 55, 333, 284, 324, 168, 156, 167, 265, 137, 264, 74, 139, 12, 376, 175, 208, 338, 367, 352, 232, 329, 98, 266, 130, 187, 257, 248, 339, 75, 308, 261, 35, 233, 313, 358, 145, 260, 181, 321, 78, 362, 166, 180, 349, 326, 277, 222, 275, 242, 350, 43, 110, 280, 58, 124, 205, 351, 99, 176, 154, 364, 38, 219, 59, 200, 273, 213, 15, 332, 320, 158, 45, 377, 93, 323, 300, 64, 236, 252, 72, 46, 249, 56, 382, 16, 160, 109, 2, 246, 134, 8, 183, 243, 178, 216, 92, 116, 184, 17, 163, 177, 125, 301, 360, 27, 357, 61, 188, 6, 123, 182, 18, 41, 60, 197, 42, 374, 11, 10, 13, 112, 84, 203, 356, 87, 251, 146, 306, 133, 147, 100, 20, 111, 40, 159, 381, 354, 256, 218, 254, 80, 57, 132, 194, 380, 331, 343, 379, 25, 298, 267, 286, 54, 361, 309, 228, 314, 244, 191, 153, 316, 348, 299, 65, 250, 103, 29, 294, 258, 150, 283, 220, 198, 174, 0, 204, 62, 165, 231, 127, 114, 121, 335, 24, 69, 26, 173, 355, 291, 23, 209, 164, 3, 359, 295, 378, 179, 52, 171, 217, 32, 341, 31, 97] + 60: [268, 287, 283, 42, 8, 362, 192, 188, 140, 232, 229, 269, 365, 345, 71, 270, 335, 24, 370, 1, 208, 326, 296, 130, 88, 163, 141, 255, 29, 224, 117, 158, 138, 328, 341, 321, 348, 331, 157, 249, 231, 63, 89, 253, 325, 198, 378, 62, 254, 248, 179, 4, 381, 211, 52, 347, 36, 222, 145, 353, 354, 47, 343, 143, 297, 225, 220, 14, 72, 332, 279, 239, 339, 12, 361, 218, 17, 304, 357, 213, 379, 276, 183, 91, 68, 111, 13, 110, 97, 196, 288, 336, 170, 0, 201, 187, 94, 78, 344, 83, 358, 172, 46, 346, 223, 40, 84, 114, 355, 70, 319, 291, 199, 359, 303, 25, 228, 307, 131, 306, 177, 238, 74, 178, 127, 156, 129, 161, 352, 246, 243, 106, 136, 372, 67, 160, 31, 317, 6, 26, 250, 382, 235, 301, 121, 363, 162, 149, 39, 108, 85, 364, 234, 330, 151, 293, 212, 245, 132, 19, 128, 337, 155, 164, 174, 184, 41, 252, 48, 50, 262, 169, 59, 34, 96, 369, 92, 191, 285, 33, 144, 66, 49, 305, 159, 282, 109, 101, 329, 182, 150, 168, 219, 300, 165, 205, 185, 137, 142, 207, 16, 203, 7, 240, 134, 23, 173, 273, 295, 35, 166, 115, 277, 299, 294, 61, 133, 274, 90, 233, 11, 367, 257, 315, 69, 5, 20, 77, 82, 176, 105, 377, 21, 263, 22, 375, 15, 366, 56, 275, 60, 58, 195, 236, 311, 289, 107, 153, 43, 135, 104, 226, 194, 171, 202, 2, 241, 99, 244, 54, 28, 95, 186, 98, 237, 230, 103, 180, 258, 216, 10, 351, 190, 266, 206, 112, 9, 286, 124, 267, 118, 292, 30, 280, 154, 51, 79, 340, 181, 313, 373, 374, 126, 139, 75, 217, 18, 349, 227, 371, 102, 55, 120, 327, 81, 302, 264, 247, 204, 193, 318, 360, 45, 214, 148, 3, 152, 271, 123, 167, 100, 113, 125, 281, 32, 93, 122, 200, 175, 256, 260, 333, 86, 272, 210, 380, 57, 64, 316, 209, 298, 38, 87, 323, 215, 278, 320, 189, 119, 314, 334, 338, 265, 76, 356, 197, 44, 368, 309, 322, 27, 284, 146, 251, 342, 37, 80, 259, 350, 261, 383, 65, 324, 308, 53, 310, 221, 312, 73, 147, 376, 290, 242, 116] + 61: [73, 50, 76, 194, 69, 326, 64, 95, 155, 371, 340, 282, 89, 119, 374, 150, 263, 368, 238, 193, 154, 110, 290, 143, 216, 228, 90, 360, 44, 244, 232, 306, 121, 364, 289, 145, 291, 240, 266, 278, 337, 96, 133, 13, 138, 147, 53, 152, 192, 315, 56, 93, 108, 379, 24, 100, 231, 157, 183, 280, 144, 214, 223, 136, 349, 350, 380, 230, 99, 7, 328, 336, 109, 298, 219, 344, 113, 270, 15, 78, 4, 11, 348, 376, 246, 67, 265, 22, 275, 153, 49, 35, 283, 189, 31, 276, 132, 43, 151, 310, 316, 115, 127, 114, 285, 314, 139, 299, 358, 286, 74, 308, 302, 235, 195, 5, 120, 103, 199, 33, 101, 297, 365, 32, 208, 29, 62, 382, 61, 317, 81, 307, 254, 8, 272, 94, 261, 16, 343, 267, 259, 63, 247, 242, 162, 201, 46, 335, 209, 333, 225, 160, 357, 186, 21, 170, 218, 51, 131, 351, 362, 169, 323, 88, 57, 273, 166, 98, 75, 264, 188, 126, 381, 269, 217, 87, 182, 181, 303, 34, 54, 332, 341, 163, 250, 300, 347, 345, 173, 41, 104, 287, 159, 339, 135, 325, 313, 38, 253, 206, 177, 10, 198, 14, 156, 179, 324, 72, 158, 224, 83, 142, 334, 383, 55, 320, 294, 84, 284, 249, 190, 112, 352, 1, 257, 378, 196, 363, 256, 148, 39, 137, 20, 375, 124, 252, 359, 329, 288, 58, 185, 356, 279, 161, 221, 42, 312, 52, 248, 327, 207, 165, 346, 370, 239, 146, 361, 342, 45, 204, 202, 28, 338, 105, 373, 3, 211, 107, 200, 70, 80, 245, 130, 92, 168, 274, 292, 331, 369, 175, 140, 372, 237, 353, 123, 187, 215, 304, 37, 134, 191, 197, 82, 176, 36, 305, 40, 59, 355, 233, 25, 367, 66, 118, 174, 172, 86, 47, 26, 205, 271, 129, 111, 102, 318, 251, 65, 17, 262, 213, 258, 236, 19, 281, 322, 226, 116, 366, 48, 9, 180, 164, 268, 220, 149, 277, 30, 212, 128, 23, 167, 79, 68, 321, 203, 295, 184, 178, 117, 354, 319, 122, 27, 260, 125, 377, 293, 330, 97, 2, 241, 301, 210, 311, 309, 85, 18, 77, 243, 229, 141, 234, 6, 71, 222, 60, 227, 171, 255, 0, 296, 91, 12, 106] +layer_updates_per_iter: 0 +num_slots: 384 diff --git a/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep16_slots384.yaml b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep16_slots384.yaml new file mode 100644 index 0000000000..8378d0adaf --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep16_slots384.yaml @@ -0,0 +1,65 @@ +initial_global_assignments: + 0: [111, 188, 253, 364, 293, 13, 97, 146, 219, 262, 173, 258, 189, 357, 228, 31, 369, 231, 152, 323, 372, 306, 367, 196, 135, 84, 335, 129, 57, 153, 204, 315, 46, 225, 10, 149, 254, 261, 199, 54, 36, 213, 317, 281, 243, 205, 185, 130, 236, 232, 138, 383, 62, 114, 206, 134, 161, 148, 122, 109, 324, 259, 100, 145, 87, 230, 4, 244, 214, 276, 101, 333, 17, 260, 217, 347, 144, 268, 123, 234, 208, 203, 353, 286, 66, 27, 52, 264, 237, 18, 174, 278, 305, 58, 167, 120, 165, 95, 169, 29, 221, 328, 89, 163, 80, 200, 124, 71, 215, 246, 6, 339, 267, 99, 298, 179, 381, 238, 171, 309, 356, 251, 284, 93, 91, 316, 313, 94, 98, 142, 22, 59, 263, 235, 325, 341, 42, 370, 296, 65, 82, 64, 201, 194, 74, 170, 81, 302, 51, 56, 131, 79, 216, 379, 8, 212, 337, 141, 143, 102, 7, 330, 197, 33, 271, 187, 247, 338, 289, 283, 368, 209, 35, 308, 21, 371, 359, 83, 242, 41, 77, 354, 193, 139, 16, 168, 240, 164, 154, 275, 178, 266, 166, 345, 155, 327, 115, 377, 11, 158, 277, 113, 252, 88, 106, 68, 376, 186, 348, 303, 175, 32, 319, 12, 326, 301, 184, 351, 132, 26, 157, 331, 85, 55, 112, 291, 136, 223, 5, 195, 229, 285, 366, 318, 349, 117, 248, 181, 30, 373, 45, 60, 159, 255, 75, 374, 321, 127, 61, 110, 378, 92, 44, 360, 156, 380, 218, 362, 375, 96, 343, 274, 332, 48, 256, 39, 198, 361, 76, 72, 25, 176, 294, 365, 297, 151, 125, 355, 2, 239, 340, 172, 307, 304, 9, 103, 233, 128, 162, 50, 177, 191, 147, 245, 47, 222, 279, 38, 207, 118, 15, 121, 53, 342, 358, 314, 70, 183, 182, 105, 334, 224, 3, 86, 202, 78, 273, 43, 107, 290, 292, 211, 119, 269, 270, 249, 63, 282, 108, 265, 0, 311, 49, 363, 69, 37, 150, 346, 28, 34, 300, 19, 14, 336, 287, 1, 329, 280, 288, 20, 140, 160, 250, 241, 272, 220, 24, 137, 210, 295, 322, 133, 190, 382, 257, 90, 227, 104, 67, 226, 352, 312, 126, 192, 116, 344, 320, 180, 73, 23, 350, 299, 310, 40] + 1: [365, 350, 21, 275, 248, 180, 17, 223, 104, 362, 283, 252, 288, 294, 188, 356, 45, 15, 160, 295, 125, 35, 79, 307, 201, 169, 63, 220, 0, 348, 59, 44, 122, 228, 182, 156, 11, 361, 269, 165, 297, 360, 345, 323, 64, 279, 226, 302, 42, 241, 80, 316, 263, 56, 300, 206, 67, 48, 108, 13, 358, 87, 311, 198, 260, 12, 130, 74, 312, 326, 363, 367, 22, 305, 292, 238, 9, 357, 138, 94, 347, 110, 118, 335, 90, 282, 246, 325, 51, 254, 234, 236, 227, 65, 175, 359, 174, 23, 14, 40, 271, 133, 382, 200, 158, 47, 186, 216, 69, 333, 256, 83, 268, 293, 62, 258, 261, 128, 373, 259, 3, 291, 137, 72, 43, 319, 218, 376, 60, 115, 145, 150, 351, 75, 99, 377, 173, 230, 100, 112, 58, 314, 257, 354, 134, 113, 211, 106, 168, 338, 349, 185, 342, 329, 280, 192, 250, 38, 289, 26, 276, 136, 336, 344, 183, 205, 155, 327, 91, 31, 273, 101, 163, 224, 76, 243, 231, 116, 320, 208, 97, 107, 96, 381, 161, 149, 240, 210, 346, 237, 332, 199, 167, 50, 321, 364, 244, 318, 121, 153, 92, 178, 379, 170, 172, 322, 95, 109, 371, 84, 88, 19, 194, 140, 157, 207, 126, 184, 33, 171, 225, 4, 52, 5, 203, 221, 285, 317, 30, 131, 366, 20, 159, 340, 222, 217, 309, 296, 111, 176, 177, 235, 123, 299, 73, 151, 18, 55, 148, 152, 86, 54, 214, 264, 61, 32, 287, 25, 306, 93, 324, 24, 213, 368, 120, 251, 78, 378, 239, 68, 352, 301, 117, 142, 77, 212, 2, 339, 328, 57, 189, 281, 197, 374, 331, 98, 255, 215, 229, 272, 103, 267, 187, 105, 164, 114, 71, 245, 162, 195, 202, 204, 383, 139, 209, 219, 89, 127, 355, 372, 144, 262, 1, 41, 70, 247, 8, 308, 190, 27, 353, 166, 146, 53, 341, 278, 28, 232, 249, 49, 290, 191, 193, 46, 253, 119, 141, 380, 274, 315, 6, 129, 7, 265, 85, 82, 233, 36, 181, 284, 298, 29, 147, 16, 343, 310, 132, 10, 66, 337, 196, 81, 39, 179, 334, 102, 330, 124, 143, 369, 277, 37, 135, 313, 303, 154, 286, 370, 266, 34, 242, 270, 375, 304] + 2: [215, 100, 1, 139, 43, 342, 303, 173, 83, 106, 66, 97, 90, 68, 338, 152, 264, 135, 179, 266, 345, 11, 339, 287, 313, 364, 56, 381, 189, 263, 321, 32, 0, 335, 246, 78, 76, 99, 35, 149, 13, 306, 191, 286, 51, 272, 209, 226, 93, 20, 213, 103, 27, 281, 37, 296, 183, 211, 369, 134, 260, 361, 54, 323, 247, 344, 167, 249, 4, 326, 237, 219, 112, 75, 380, 53, 142, 250, 40, 155, 318, 360, 308, 378, 125, 148, 185, 8, 280, 175, 29, 253, 137, 363, 202, 359, 343, 31, 105, 221, 220, 329, 92, 57, 379, 115, 39, 320, 47, 158, 270, 95, 350, 166, 214, 300, 79, 374, 267, 375, 89, 26, 278, 10, 305, 63, 334, 285, 119, 82, 18, 208, 58, 258, 373, 141, 276, 44, 356, 337, 222, 72, 261, 199, 259, 341, 17, 224, 70, 265, 151, 62, 73, 245, 262, 223, 271, 161, 196, 140, 84, 376, 180, 102, 327, 145, 240, 241, 194, 168, 14, 88, 94, 133, 61, 163, 239, 325, 42, 187, 328, 146, 218, 174, 217, 123, 244, 169, 310, 347, 204, 301, 290, 91, 121, 357, 86, 67, 307, 7, 201, 22, 109, 153, 203, 178, 190, 98, 353, 365, 274, 372, 225, 23, 366, 346, 19, 248, 295, 150, 284, 16, 34, 188, 330, 114, 348, 324, 81, 227, 355, 311, 101, 157, 126, 127, 21, 144, 251, 80, 242, 55, 288, 332, 362, 120, 210, 28, 383, 198, 77, 252, 336, 25, 24, 129, 236, 197, 48, 159, 371, 9, 177, 382, 230, 96, 85, 5, 302, 193, 279, 128, 124, 358, 59, 6, 116, 216, 231, 117, 315, 52, 45, 147, 176, 257, 104, 234, 143, 122, 160, 108, 349, 294, 110, 12, 331, 243, 293, 206, 38, 156, 273, 309, 172, 319, 107, 228, 316, 131, 207, 289, 212, 304, 33, 182, 368, 132, 41, 162, 60, 130, 136, 238, 50, 192, 184, 64, 299, 205, 235, 113, 256, 354, 333, 118, 377, 46, 3, 164, 195, 65, 111, 269, 2, 283, 200, 229, 186, 268, 138, 71, 69, 297, 15, 154, 282, 367, 352, 317, 49, 351, 298, 232, 36, 275, 255, 87, 165, 292, 277, 170, 74, 181, 233, 30, 370, 312, 340, 291, 171, 254, 314, 322] + 3: [307, 111, 256, 14, 250, 325, 44, 361, 267, 287, 277, 201, 56, 82, 33, 184, 220, 207, 69, 339, 20, 45, 245, 117, 263, 155, 48, 172, 65, 260, 123, 78, 356, 238, 129, 291, 283, 6, 182, 89, 217, 197, 273, 47, 190, 183, 99, 368, 3, 316, 7, 149, 168, 246, 296, 373, 280, 154, 351, 358, 315, 29, 24, 261, 251, 139, 206, 346, 188, 349, 101, 241, 97, 163, 331, 124, 323, 215, 25, 327, 225, 227, 289, 126, 113, 383, 281, 303, 43, 142, 234, 102, 86, 311, 353, 60, 34, 194, 19, 218, 344, 108, 242, 12, 269, 226, 137, 314, 68, 322, 336, 173, 191, 166, 231, 115, 131, 58, 5, 185, 232, 136, 66, 2, 148, 350, 209, 30, 54, 338, 378, 160, 10, 159, 9, 366, 109, 345, 0, 181, 367, 83, 214, 134, 27, 26, 42, 63, 32, 369, 85, 274, 376, 375, 216, 370, 202, 37, 192, 103, 186, 337, 237, 55, 116, 265, 268, 292, 377, 35, 145, 153, 118, 92, 224, 382, 76, 200, 229, 11, 93, 125, 290, 236, 180, 50, 270, 317, 1, 301, 75, 147, 18, 79, 221, 57, 167, 271, 363, 347, 354, 71, 13, 299, 138, 62, 380, 294, 198, 211, 158, 36, 240, 324, 165, 140, 244, 150, 74, 276, 161, 348, 272, 144, 28, 91, 119, 64, 264, 362, 98, 203, 100, 335, 152, 121, 279, 321, 332, 96, 304, 230, 328, 285, 81, 53, 297, 90, 359, 112, 275, 199, 41, 72, 61, 31, 360, 15, 255, 247, 143, 300, 326, 278, 171, 175, 298, 333, 381, 249, 107, 343, 8, 169, 73, 120, 248, 157, 253, 156, 189, 342, 334, 355, 128, 52, 162, 95, 22, 310, 51, 178, 306, 254, 23, 208, 179, 122, 293, 284, 77, 80, 133, 193, 17, 21, 187, 309, 258, 371, 130, 312, 320, 319, 94, 219, 329, 177, 195, 4, 257, 222, 259, 243, 372, 141, 176, 87, 196, 59, 282, 223, 239, 341, 38, 146, 170, 313, 213, 46, 164, 49, 295, 308, 266, 151, 365, 252, 135, 364, 67, 106, 114, 374, 379, 174, 262, 233, 204, 104, 302, 210, 235, 39, 88, 84, 212, 318, 40, 70, 132, 228, 16, 110, 127, 205, 340, 357, 352, 305, 286, 288, 330, 105] + 4: [368, 207, 296, 157, 56, 286, 132, 204, 91, 327, 44, 252, 356, 93, 359, 266, 141, 234, 351, 1, 238, 63, 104, 233, 118, 256, 333, 74, 246, 179, 372, 198, 348, 32, 228, 206, 223, 130, 35, 58, 33, 26, 287, 11, 64, 229, 346, 201, 343, 87, 60, 177, 271, 291, 170, 254, 65, 203, 347, 184, 247, 313, 344, 324, 47, 126, 365, 97, 249, 186, 212, 381, 358, 88, 237, 138, 308, 105, 77, 263, 28, 239, 320, 66, 29, 69, 152, 165, 369, 337, 115, 183, 40, 244, 326, 57, 22, 196, 279, 137, 34, 364, 109, 146, 258, 216, 15, 167, 21, 81, 68, 43, 361, 264, 103, 158, 48, 208, 292, 367, 300, 150, 75, 314, 154, 241, 350, 134, 345, 31, 270, 114, 100, 202, 108, 180, 41, 99, 195, 153, 220, 289, 19, 338, 319, 318, 8, 191, 131, 42, 336, 160, 283, 162, 101, 210, 16, 243, 110, 122, 55, 102, 25, 117, 255, 5, 321, 305, 83, 38, 214, 317, 121, 303, 82, 310, 27, 36, 163, 290, 373, 285, 242, 175, 297, 363, 185, 378, 349, 78, 120, 277, 37, 331, 142, 12, 187, 274, 329, 9, 24, 92, 276, 143, 312, 173, 71, 280, 98, 295, 261, 125, 145, 90, 294, 119, 217, 95, 85, 235, 80, 189, 96, 209, 174, 325, 135, 245, 144, 155, 265, 192, 51, 49, 140, 231, 301, 357, 304, 89, 148, 382, 199, 194, 376, 172, 46, 76, 323, 54, 293, 306, 14, 94, 73, 176, 370, 354, 156, 328, 168, 227, 366, 129, 61, 315, 334, 53, 193, 23, 281, 113, 260, 136, 79, 181, 4, 226, 340, 355, 269, 86, 149, 230, 205, 322, 190, 107, 383, 6, 307, 302, 380, 284, 379, 248, 133, 253, 332, 72, 70, 20, 218, 67, 268, 178, 262, 362, 123, 267, 128, 299, 200, 273, 18, 159, 221, 282, 257, 352, 222, 169, 215, 62, 374, 52, 166, 106, 116, 236, 39, 330, 309, 112, 250, 224, 3, 10, 45, 151, 259, 7, 335, 342, 341, 278, 272, 240, 124, 353, 377, 232, 111, 316, 13, 213, 0, 225, 30, 2, 188, 371, 161, 339, 171, 219, 197, 298, 275, 311, 147, 50, 59, 84, 360, 211, 288, 375, 127, 164, 139, 182, 251, 17] + 5: [69, 49, 89, 56, 343, 206, 227, 324, 293, 199, 204, 250, 26, 229, 339, 187, 344, 378, 260, 281, 292, 80, 36, 234, 174, 73, 74, 155, 268, 285, 215, 336, 263, 191, 98, 313, 325, 347, 201, 328, 337, 16, 135, 301, 83, 71, 340, 286, 305, 138, 312, 365, 223, 194, 32, 169, 364, 332, 68, 48, 103, 23, 27, 31, 216, 210, 176, 247, 10, 309, 38, 369, 248, 296, 148, 377, 304, 262, 228, 308, 0, 18, 244, 237, 188, 7, 320, 156, 152, 380, 11, 180, 261, 117, 282, 94, 213, 137, 159, 371, 316, 124, 104, 58, 116, 363, 186, 90, 310, 65, 140, 254, 195, 271, 358, 42, 162, 179, 326, 189, 190, 47, 88, 66, 346, 256, 110, 153, 109, 333, 59, 331, 60, 356, 233, 353, 53, 67, 352, 46, 3, 112, 113, 280, 141, 319, 178, 100, 55, 165, 275, 175, 147, 170, 168, 8, 323, 41, 64, 294, 29, 315, 203, 350, 62, 166, 2, 95, 231, 102, 28, 17, 145, 45, 105, 85, 383, 33, 82, 151, 30, 24, 149, 222, 379, 202, 125, 349, 79, 270, 218, 290, 288, 269, 15, 214, 185, 253, 252, 366, 111, 241, 258, 161, 342, 240, 87, 255, 34, 242, 77, 368, 22, 181, 75, 177, 154, 287, 208, 108, 348, 78, 370, 306, 131, 129, 5, 35, 70, 144, 225, 193, 297, 12, 197, 354, 171, 121, 99, 123, 276, 341, 220, 239, 164, 327, 37, 259, 91, 221, 115, 318, 19, 54, 374, 251, 146, 119, 362, 291, 284, 212, 299, 302, 150, 172, 381, 317, 295, 132, 345, 245, 243, 4, 21, 101, 278, 133, 51, 359, 334, 373, 361, 40, 44, 118, 224, 127, 355, 163, 311, 207, 232, 72, 76, 1, 209, 375, 184, 200, 300, 57, 372, 235, 226, 96, 230, 298, 139, 13, 173, 157, 25, 249, 330, 14, 205, 143, 279, 329, 142, 303, 114, 86, 274, 198, 130, 134, 106, 273, 236, 357, 39, 267, 196, 367, 217, 52, 272, 211, 20, 382, 257, 92, 246, 6, 266, 81, 93, 283, 182, 158, 136, 107, 376, 360, 50, 338, 167, 277, 160, 128, 61, 265, 84, 351, 122, 192, 289, 9, 335, 238, 219, 264, 97, 183, 314, 126, 63, 322, 43, 307, 120, 321] + 6: [97, 306, 36, 93, 26, 107, 176, 382, 131, 71, 161, 329, 323, 339, 1, 65, 228, 222, 359, 331, 247, 40, 363, 257, 98, 159, 10, 274, 50, 317, 343, 378, 364, 136, 238, 47, 311, 230, 219, 43, 150, 30, 119, 265, 49, 210, 2, 3, 32, 99, 328, 333, 122, 292, 149, 203, 255, 213, 140, 302, 207, 225, 279, 101, 87, 381, 356, 365, 75, 273, 14, 21, 308, 240, 305, 4, 358, 268, 341, 67, 264, 164, 79, 143, 313, 342, 60, 369, 307, 303, 346, 325, 151, 310, 275, 294, 322, 249, 287, 135, 156, 208, 178, 245, 190, 80, 104, 92, 25, 74, 262, 181, 259, 191, 345, 196, 28, 183, 280, 348, 254, 371, 160, 232, 91, 175, 349, 148, 153, 289, 284, 350, 182, 17, 327, 223, 271, 312, 336, 214, 52, 248, 126, 373, 9, 31, 0, 147, 234, 34, 212, 370, 330, 152, 187, 283, 57, 128, 185, 366, 251, 69, 137, 41, 347, 172, 100, 39, 37, 282, 375, 166, 258, 27, 114, 337, 157, 120, 58, 340, 106, 77, 18, 224, 334, 16, 372, 352, 186, 380, 252, 78, 281, 193, 239, 272, 220, 173, 45, 55, 231, 354, 246, 326, 129, 332, 111, 261, 162, 130, 355, 309, 8, 217, 250, 197, 142, 53, 319, 163, 179, 76, 165, 199, 379, 73, 383, 324, 296, 12, 11, 233, 117, 362, 263, 42, 180, 108, 72, 22, 177, 174, 88, 167, 266, 229, 344, 200, 24, 301, 276, 184, 290, 7, 125, 299, 82, 29, 277, 115, 51, 23, 320, 15, 158, 169, 56, 242, 353, 377, 335, 202, 127, 236, 123, 44, 318, 316, 83, 357, 221, 188, 241, 141, 33, 145, 211, 132, 215, 243, 288, 376, 68, 235, 35, 291, 46, 102, 260, 286, 84, 89, 360, 216, 300, 113, 109, 54, 70, 121, 351, 90, 218, 146, 59, 209, 94, 278, 315, 103, 321, 5, 298, 61, 195, 314, 116, 361, 304, 96, 244, 204, 374, 62, 124, 201, 253, 269, 20, 205, 297, 144, 192, 85, 19, 198, 270, 86, 110, 64, 81, 13, 338, 138, 189, 133, 227, 293, 237, 38, 295, 66, 48, 139, 171, 267, 226, 368, 63, 155, 367, 118, 194, 112, 170, 6, 134, 105, 285, 206, 95, 256, 168, 154] + 7: [94, 2, 163, 100, 223, 216, 159, 70, 84, 197, 248, 261, 63, 189, 44, 147, 3, 60, 91, 299, 257, 106, 95, 371, 263, 18, 345, 259, 220, 71, 82, 363, 185, 277, 267, 59, 113, 355, 170, 377, 278, 23, 222, 249, 235, 232, 319, 145, 375, 34, 175, 186, 356, 73, 142, 366, 314, 240, 204, 268, 252, 212, 27, 337, 305, 330, 202, 219, 367, 109, 205, 172, 13, 332, 65, 169, 56, 370, 0, 128, 155, 12, 285, 351, 123, 241, 334, 81, 85, 295, 37, 242, 213, 276, 102, 149, 382, 325, 362, 333, 125, 1, 178, 245, 141, 58, 75, 250, 335, 300, 110, 153, 303, 87, 203, 117, 89, 269, 207, 160, 274, 341, 287, 8, 239, 40, 354, 83, 26, 136, 271, 120, 342, 280, 358, 230, 324, 349, 104, 360, 53, 150, 199, 32, 49, 48, 139, 323, 316, 215, 121, 108, 320, 238, 381, 217, 383, 66, 318, 379, 166, 266, 33, 35, 57, 171, 162, 231, 28, 253, 380, 346, 258, 374, 127, 179, 6, 196, 206, 181, 111, 29, 98, 200, 310, 86, 183, 373, 124, 88, 247, 357, 90, 251, 7, 306, 211, 329, 340, 47, 9, 313, 237, 224, 52, 131, 167, 331, 191, 173, 290, 165, 312, 289, 151, 16, 103, 369, 177, 279, 77, 260, 157, 225, 25, 46, 78, 161, 376, 69, 288, 194, 208, 5, 254, 158, 326, 22, 137, 338, 229, 64, 80, 272, 62, 54, 246, 99, 264, 281, 283, 210, 39, 221, 146, 143, 114, 156, 14, 36, 45, 352, 233, 302, 327, 133, 187, 164, 11, 79, 31, 209, 227, 97, 74, 168, 301, 116, 307, 353, 130, 291, 4, 38, 144, 296, 365, 311, 105, 275, 265, 192, 129, 107, 236, 21, 347, 101, 361, 195, 228, 321, 180, 262, 218, 293, 92, 15, 255, 273, 359, 132, 188, 292, 214, 297, 282, 184, 51, 93, 368, 148, 298, 344, 138, 336, 328, 201, 286, 43, 24, 226, 68, 135, 30, 152, 61, 20, 182, 256, 339, 315, 378, 198, 350, 308, 119, 50, 134, 270, 348, 112, 72, 317, 115, 244, 174, 243, 55, 42, 118, 41, 372, 17, 154, 67, 284, 193, 190, 126, 10, 176, 343, 304, 96, 140, 234, 309, 122, 76, 322, 294, 19, 364] + 8: [310, 182, 178, 309, 303, 166, 353, 189, 317, 33, 340, 147, 377, 339, 11, 106, 63, 285, 369, 335, 365, 170, 138, 355, 312, 282, 212, 332, 83, 204, 1, 228, 163, 311, 130, 90, 276, 124, 117, 80, 77, 99, 259, 172, 0, 131, 65, 19, 67, 6, 287, 200, 298, 288, 338, 362, 43, 277, 184, 374, 351, 174, 370, 233, 334, 158, 268, 187, 40, 337, 111, 207, 38, 247, 180, 7, 69, 346, 190, 3, 313, 257, 238, 201, 85, 320, 60, 120, 2, 9, 231, 116, 100, 316, 344, 213, 279, 93, 300, 260, 17, 112, 357, 248, 210, 162, 153, 37, 82, 20, 141, 232, 295, 55, 215, 383, 289, 329, 242, 165, 194, 241, 290, 218, 371, 16, 73, 76, 349, 167, 326, 246, 222, 137, 171, 86, 51, 109, 280, 345, 319, 126, 315, 361, 21, 308, 372, 206, 23, 333, 224, 291, 57, 62, 202, 219, 186, 364, 125, 79, 226, 151, 205, 84, 49, 91, 256, 139, 173, 10, 146, 31, 154, 64, 217, 72, 74, 4, 22, 265, 378, 304, 156, 350, 123, 92, 314, 225, 270, 254, 95, 343, 360, 75, 122, 297, 211, 88, 56, 325, 61, 227, 81, 176, 197, 263, 114, 133, 245, 330, 301, 149, 96, 142, 148, 324, 35, 258, 39, 379, 273, 214, 203, 336, 34, 152, 341, 322, 240, 363, 244, 78, 354, 45, 375, 70, 46, 32, 216, 237, 264, 155, 108, 140, 352, 284, 299, 192, 50, 243, 293, 179, 323, 121, 185, 24, 105, 381, 42, 175, 102, 71, 26, 12, 5, 18, 359, 220, 382, 143, 134, 236, 261, 98, 113, 41, 145, 28, 249, 328, 119, 331, 118, 305, 128, 274, 307, 278, 13, 281, 47, 252, 229, 58, 250, 66, 68, 97, 199, 321, 283, 196, 103, 358, 159, 208, 376, 296, 127, 183, 223, 110, 253, 195, 161, 367, 348, 25, 327, 59, 136, 104, 221, 169, 306, 89, 160, 262, 94, 356, 14, 366, 191, 234, 36, 275, 135, 272, 181, 44, 209, 302, 150, 87, 101, 368, 292, 48, 107, 235, 164, 230, 380, 8, 294, 15, 269, 318, 177, 193, 266, 239, 251, 198, 30, 27, 286, 168, 255, 267, 132, 54, 115, 373, 144, 188, 29, 157, 52, 129, 271, 347, 53, 342] + 9: [92, 95, 370, 82, 1, 35, 130, 62, 197, 358, 317, 113, 315, 256, 268, 221, 98, 324, 153, 232, 6, 325, 152, 168, 244, 226, 147, 9, 288, 238, 215, 303, 350, 205, 192, 5, 134, 265, 243, 217, 251, 144, 276, 308, 257, 269, 149, 125, 287, 280, 260, 179, 209, 259, 189, 277, 124, 188, 319, 212, 169, 198, 305, 336, 330, 249, 156, 79, 292, 60, 333, 190, 304, 145, 10, 231, 196, 210, 72, 307, 222, 118, 230, 176, 284, 32, 186, 339, 347, 306, 223, 127, 237, 296, 337, 204, 363, 355, 279, 354, 108, 247, 356, 235, 70, 49, 360, 36, 271, 170, 93, 321, 59, 162, 200, 290, 75, 2, 86, 340, 346, 52, 123, 289, 66, 220, 18, 275, 116, 309, 65, 227, 129, 126, 69, 266, 283, 302, 148, 194, 291, 367, 163, 213, 349, 255, 54, 206, 138, 380, 17, 180, 166, 184, 224, 297, 42, 22, 71, 58, 348, 100, 182, 104, 183, 68, 63, 318, 316, 282, 379, 351, 299, 320, 33, 45, 29, 96, 8, 301, 322, 173, 85, 328, 187, 157, 80, 112, 25, 97, 21, 332, 165, 313, 171, 110, 366, 357, 11, 13, 254, 90, 20, 160, 264, 50, 137, 286, 202, 377, 24, 61, 219, 7, 310, 27, 109, 218, 114, 272, 374, 44, 353, 154, 12, 103, 94, 51, 273, 161, 19, 294, 117, 208, 240, 241, 371, 253, 142, 34, 372, 258, 262, 132, 199, 23, 158, 248, 39, 115, 383, 326, 239, 191, 211, 368, 99, 131, 175, 311, 378, 119, 40, 122, 185, 56, 105, 31, 121, 174, 323, 229, 267, 14, 84, 364, 67, 48, 369, 136, 233, 225, 216, 57, 361, 26, 365, 43, 214, 83, 107, 55, 111, 195, 133, 228, 359, 178, 329, 3, 342, 16, 338, 293, 344, 101, 38, 234, 140, 362, 300, 53, 15, 285, 143, 331, 135, 295, 81, 298, 78, 201, 89, 30, 88, 151, 376, 181, 236, 352, 274, 245, 164, 343, 77, 106, 334, 246, 263, 4, 341, 74, 141, 335, 312, 28, 64, 345, 382, 155, 172, 73, 193, 375, 203, 242, 139, 150, 250, 91, 327, 47, 373, 146, 102, 252, 207, 159, 37, 381, 46, 41, 278, 177, 281, 0, 314, 120, 261, 270, 87, 128, 76, 167] + 10: [378, 301, 185, 80, 380, 144, 254, 240, 116, 39, 324, 172, 358, 106, 352, 381, 369, 260, 119, 28, 206, 165, 176, 336, 48, 286, 216, 85, 306, 161, 202, 275, 86, 232, 22, 138, 109, 137, 383, 362, 174, 292, 29, 15, 91, 13, 329, 82, 57, 265, 65, 263, 350, 97, 257, 318, 112, 322, 199, 26, 363, 371, 49, 127, 289, 379, 125, 88, 342, 52, 16, 356, 222, 45, 221, 145, 368, 51, 124, 162, 327, 267, 30, 250, 293, 238, 73, 288, 89, 198, 249, 247, 285, 77, 297, 283, 193, 92, 337, 0, 262, 95, 259, 309, 235, 128, 376, 270, 76, 291, 360, 78, 70, 339, 332, 23, 64, 149, 281, 313, 320, 246, 121, 98, 224, 171, 148, 56, 359, 195, 135, 310, 284, 63, 374, 203, 213, 7, 175, 9, 253, 226, 302, 83, 233, 55, 142, 192, 189, 61, 5, 315, 276, 204, 44, 166, 169, 311, 335, 60, 104, 33, 71, 349, 10, 152, 307, 244, 120, 18, 79, 54, 69, 167, 328, 40, 182, 305, 156, 196, 215, 20, 357, 346, 84, 209, 115, 228, 227, 158, 143, 118, 24, 373, 170, 296, 93, 133, 34, 217, 314, 99, 111, 274, 114, 129, 234, 298, 321, 258, 345, 230, 340, 223, 130, 27, 365, 122, 239, 180, 42, 160, 372, 50, 75, 184, 351, 47, 282, 364, 273, 353, 343, 377, 140, 123, 256, 68, 251, 62, 146, 294, 66, 341, 168, 17, 187, 236, 367, 164, 67, 87, 269, 53, 347, 46, 245, 139, 190, 132, 317, 323, 287, 103, 153, 100, 157, 136, 101, 331, 8, 117, 370, 280, 186, 279, 242, 6, 173, 218, 264, 214, 333, 96, 105, 32, 295, 354, 278, 194, 181, 179, 200, 36, 272, 312, 212, 299, 330, 108, 126, 155, 290, 271, 266, 134, 4, 12, 316, 366, 110, 159, 31, 241, 255, 11, 58, 21, 326, 252, 205, 35, 43, 163, 150, 72, 304, 210, 334, 38, 94, 211, 338, 14, 208, 197, 151, 178, 3, 25, 19, 225, 243, 382, 188, 59, 102, 219, 113, 141, 268, 107, 303, 81, 361, 207, 131, 74, 344, 1, 300, 183, 319, 237, 325, 90, 375, 177, 154, 248, 147, 41, 37, 261, 308, 229, 355, 201, 220, 348, 191, 2, 231, 277] + 11: [284, 122, 373, 191, 245, 12, 8, 200, 92, 142, 291, 269, 212, 261, 28, 109, 335, 173, 216, 185, 334, 239, 372, 189, 121, 227, 351, 40, 27, 274, 144, 264, 279, 356, 170, 188, 313, 86, 133, 69, 180, 286, 167, 336, 143, 266, 117, 155, 248, 354, 298, 128, 331, 318, 300, 61, 378, 340, 7, 346, 344, 140, 352, 281, 67, 211, 219, 10, 64, 79, 53, 322, 377, 339, 221, 111, 46, 5, 208, 126, 87, 35, 49, 205, 226, 379, 257, 362, 164, 201, 125, 244, 342, 113, 147, 62, 288, 172, 371, 39, 337, 357, 179, 183, 31, 118, 162, 13, 365, 224, 310, 369, 84, 55, 276, 325, 96, 302, 91, 153, 107, 88, 233, 237, 255, 175, 184, 280, 139, 228, 282, 22, 156, 59, 238, 181, 263, 321, 60, 359, 9, 23, 95, 256, 44, 99, 132, 89, 217, 267, 278, 177, 54, 295, 236, 305, 198, 17, 303, 349, 382, 196, 364, 168, 316, 307, 105, 254, 110, 235, 314, 296, 159, 157, 145, 171, 283, 80, 348, 71, 258, 301, 93, 43, 367, 262, 131, 311, 30, 104, 72, 42, 90, 47, 210, 343, 308, 1, 240, 15, 195, 100, 360, 56, 273, 48, 345, 366, 190, 358, 108, 206, 347, 214, 223, 134, 36, 51, 0, 20, 130, 250, 324, 207, 285, 241, 293, 127, 29, 297, 124, 225, 341, 50, 213, 309, 289, 182, 290, 16, 116, 376, 163, 203, 319, 137, 363, 259, 193, 73, 148, 380, 277, 103, 25, 234, 57, 176, 166, 112, 45, 158, 338, 68, 199, 41, 38, 209, 150, 152, 243, 178, 192, 81, 129, 268, 332, 187, 383, 197, 6, 26, 58, 315, 21, 138, 306, 253, 218, 63, 320, 353, 330, 202, 370, 34, 141, 154, 75, 33, 32, 37, 3, 327, 74, 229, 247, 220, 123, 19, 115, 292, 77, 65, 146, 323, 375, 169, 381, 52, 160, 249, 24, 271, 361, 136, 102, 2, 312, 304, 66, 329, 165, 186, 106, 265, 232, 350, 252, 149, 119, 14, 18, 294, 328, 270, 215, 161, 287, 333, 231, 97, 355, 272, 204, 246, 70, 76, 101, 82, 78, 11, 98, 94, 151, 299, 85, 260, 83, 275, 326, 374, 174, 242, 120, 114, 194, 222, 251, 4, 368, 135, 230, 317] + 12: [120, 9, 62, 198, 47, 352, 211, 257, 42, 53, 206, 202, 72, 110, 225, 81, 383, 302, 240, 373, 193, 106, 372, 162, 226, 131, 322, 366, 178, 171, 92, 197, 194, 0, 38, 218, 142, 239, 85, 300, 288, 11, 100, 230, 125, 86, 80, 236, 204, 87, 329, 175, 91, 123, 152, 6, 36, 212, 338, 148, 213, 138, 355, 272, 209, 247, 370, 347, 227, 108, 205, 222, 255, 127, 51, 260, 303, 358, 160, 71, 155, 315, 122, 234, 98, 96, 101, 345, 157, 145, 25, 118, 129, 8, 299, 196, 354, 76, 278, 77, 351, 296, 330, 232, 221, 210, 259, 332, 119, 44, 56, 282, 73, 159, 305, 311, 275, 99, 61, 281, 78, 124, 177, 137, 134, 68, 111, 181, 16, 326, 23, 353, 143, 180, 342, 328, 166, 374, 133, 294, 102, 55, 336, 173, 149, 35, 327, 318, 360, 32, 22, 304, 179, 215, 350, 49, 335, 182, 121, 52, 54, 188, 161, 287, 231, 291, 375, 310, 59, 308, 150, 369, 265, 378, 346, 361, 167, 248, 26, 364, 2, 95, 1, 203, 37, 33, 377, 285, 250, 112, 21, 147, 301, 190, 30, 15, 84, 331, 156, 323, 105, 199, 200, 238, 337, 269, 356, 67, 254, 224, 334, 83, 368, 3, 169, 264, 19, 82, 130, 341, 313, 314, 290, 57, 50, 228, 146, 244, 14, 10, 286, 357, 380, 251, 58, 13, 262, 12, 41, 208, 172, 27, 233, 168, 325, 176, 165, 306, 297, 283, 103, 88, 97, 273, 64, 379, 263, 144, 312, 207, 187, 141, 184, 174, 223, 48, 292, 319, 28, 349, 344, 267, 320, 253, 135, 340, 298, 381, 270, 79, 153, 235, 214, 195, 70, 280, 20, 242, 343, 69, 219, 94, 220, 316, 116, 258, 140, 183, 113, 229, 191, 186, 74, 151, 17, 185, 40, 359, 274, 237, 266, 201, 324, 46, 277, 333, 317, 45, 115, 4, 309, 276, 382, 241, 217, 245, 371, 216, 5, 89, 104, 90, 63, 43, 65, 170, 158, 107, 363, 252, 293, 189, 192, 114, 139, 163, 117, 362, 289, 295, 136, 249, 60, 154, 7, 126, 39, 93, 24, 75, 246, 109, 243, 367, 29, 261, 348, 66, 18, 268, 132, 34, 365, 256, 271, 31, 284, 128, 376, 307, 321, 279, 339, 164] + 13: [137, 207, 87, 197, 107, 373, 303, 159, 271, 136, 34, 168, 221, 231, 111, 326, 294, 194, 363, 188, 202, 84, 173, 368, 18, 112, 151, 372, 184, 359, 214, 64, 204, 240, 284, 193, 42, 53, 147, 191, 315, 155, 3, 268, 278, 218, 29, 230, 286, 318, 199, 279, 157, 273, 167, 131, 81, 121, 275, 235, 13, 330, 217, 380, 141, 166, 103, 264, 26, 354, 226, 146, 45, 319, 74, 216, 104, 100, 224, 256, 331, 291, 41, 161, 205, 292, 365, 251, 201, 364, 95, 90, 7, 162, 127, 32, 149, 170, 109, 253, 116, 295, 333, 47, 46, 10, 228, 33, 76, 21, 325, 300, 350, 164, 234, 185, 120, 52, 105, 370, 23, 238, 153, 346, 340, 322, 22, 306, 25, 48, 65, 123, 82, 58, 339, 171, 5, 343, 321, 379, 250, 196, 210, 69, 108, 274, 232, 290, 258, 57, 357, 313, 119, 361, 233, 355, 244, 374, 143, 225, 367, 241, 138, 212, 382, 200, 324, 351, 320, 260, 24, 28, 323, 360, 255, 208, 269, 203, 288, 35, 54, 40, 334, 180, 308, 78, 245, 85, 353, 265, 63, 27, 342, 169, 11, 89, 88, 229, 281, 296, 289, 77, 310, 93, 118, 352, 227, 297, 257, 117, 285, 243, 252, 187, 148, 99, 0, 17, 186, 97, 165, 236, 317, 101, 304, 106, 329, 249, 70, 316, 259, 215, 375, 178, 55, 263, 383, 160, 341, 206, 209, 67, 369, 189, 158, 156, 139, 177, 327, 129, 8, 4, 83, 267, 299, 312, 220, 163, 190, 19, 94, 20, 62, 61, 362, 328, 86, 276, 51, 56, 371, 298, 366, 6, 307, 345, 71, 270, 246, 309, 124, 377, 145, 182, 140, 344, 152, 277, 98, 14, 12, 9, 174, 262, 133, 254, 183, 283, 115, 179, 198, 154, 73, 356, 50, 293, 172, 332, 60, 266, 59, 75, 176, 44, 195, 80, 358, 219, 92, 311, 348, 134, 144, 125, 2, 222, 113, 181, 128, 130, 175, 301, 242, 282, 192, 349, 102, 135, 114, 1, 280, 43, 66, 30, 223, 305, 79, 96, 261, 110, 150, 239, 72, 142, 272, 237, 15, 122, 337, 247, 338, 38, 378, 39, 335, 376, 248, 37, 211, 49, 68, 31, 287, 36, 381, 16, 126, 314, 213, 336, 302, 91, 132, 347] + 14: [229, 289, 23, 123, 69, 197, 203, 222, 18, 294, 373, 369, 206, 365, 263, 78, 317, 339, 314, 42, 293, 318, 12, 103, 110, 355, 150, 292, 44, 112, 344, 194, 375, 179, 158, 106, 266, 66, 334, 201, 73, 341, 303, 153, 258, 212, 152, 107, 70, 111, 142, 176, 349, 98, 239, 350, 99, 183, 180, 22, 282, 191, 162, 26, 166, 172, 43, 380, 131, 295, 236, 272, 147, 337, 178, 21, 199, 377, 296, 31, 244, 336, 246, 358, 190, 362, 114, 185, 352, 329, 51, 283, 379, 29, 136, 260, 76, 157, 40, 299, 342, 268, 351, 343, 271, 291, 134, 177, 118, 58, 61, 129, 68, 214, 202, 257, 309, 9, 230, 240, 126, 30, 255, 53, 286, 145, 297, 186, 328, 89, 5, 321, 319, 200, 74, 192, 0, 91, 139, 133, 48, 361, 121, 132, 2, 204, 116, 345, 195, 57, 101, 104, 298, 301, 213, 55, 323, 169, 117, 189, 326, 27, 173, 11, 290, 35, 84, 38, 274, 100, 325, 330, 102, 141, 14, 1, 316, 33, 59, 359, 50, 124, 120, 81, 284, 149, 285, 376, 366, 216, 165, 218, 269, 208, 383, 164, 332, 210, 211, 71, 378, 47, 300, 225, 88, 242, 46, 267, 276, 65, 148, 128, 82, 108, 113, 278, 143, 363, 154, 37, 60, 279, 305, 63, 28, 188, 182, 312, 6, 306, 67, 333, 247, 251, 72, 281, 41, 315, 119, 174, 20, 75, 122, 367, 16, 135, 256, 17, 137, 151, 109, 374, 307, 273, 304, 93, 335, 249, 223, 215, 280, 196, 170, 252, 253, 146, 155, 25, 130, 209, 64, 10, 207, 221, 168, 265, 95, 322, 90, 340, 310, 127, 354, 105, 94, 238, 324, 115, 175, 97, 4, 52, 261, 288, 56, 227, 254, 313, 235, 163, 237, 357, 193, 171, 167, 233, 36, 92, 7, 320, 96, 83, 15, 198, 372, 159, 54, 85, 353, 356, 62, 24, 125, 381, 287, 364, 245, 224, 49, 219, 262, 243, 270, 302, 45, 156, 160, 275, 248, 3, 231, 241, 360, 39, 220, 368, 347, 184, 226, 34, 234, 161, 264, 370, 311, 205, 79, 138, 232, 87, 8, 32, 371, 327, 77, 308, 346, 228, 250, 259, 187, 181, 277, 338, 140, 348, 382, 331, 13, 217, 144, 86, 19, 80] + 15: [148, 25, 236, 2, 180, 106, 229, 376, 109, 202, 83, 363, 209, 28, 247, 29, 323, 341, 287, 165, 325, 118, 312, 144, 130, 254, 143, 78, 334, 123, 364, 178, 62, 201, 137, 64, 370, 24, 82, 338, 336, 345, 204, 59, 85, 98, 17, 368, 266, 290, 35, 18, 129, 162, 31, 264, 268, 297, 238, 30, 377, 224, 120, 145, 380, 318, 322, 66, 372, 127, 176, 156, 227, 76, 93, 135, 105, 237, 77, 305, 87, 304, 190, 67, 185, 273, 49, 208, 313, 188, 328, 181, 316, 303, 69, 53, 11, 15, 308, 151, 324, 296, 42, 159, 353, 47, 278, 292, 43, 3, 226, 220, 210, 50, 279, 223, 150, 314, 356, 110, 155, 167, 8, 56, 141, 146, 361, 355, 166, 347, 221, 125, 27, 282, 164, 161, 245, 262, 183, 321, 260, 346, 274, 235, 88, 239, 0, 360, 230, 189, 20, 34, 136, 265, 96, 51, 306, 301, 240, 65, 354, 194, 169, 41, 171, 191, 276, 366, 359, 251, 317, 371, 94, 134, 329, 113, 16, 270, 86, 138, 32, 22, 193, 126, 14, 253, 172, 140, 373, 378, 228, 216, 107, 4, 349, 258, 300, 291, 285, 44, 350, 81, 147, 212, 170, 351, 60, 89, 348, 173, 249, 288, 293, 337, 10, 244, 319, 119, 186, 133, 121, 12, 255, 331, 271, 19, 332, 115, 320, 340, 225, 177, 103, 302, 205, 357, 379, 91, 243, 46, 375, 252, 200, 367, 40, 259, 23, 80, 153, 207, 365, 246, 124, 158, 152, 309, 263, 218, 100, 315, 195, 58, 26, 310, 168, 362, 192, 39, 187, 298, 1, 71, 242, 61, 99, 9, 197, 111, 342, 248, 339, 299, 222, 122, 95, 52, 198, 108, 217, 55, 326, 196, 84, 38, 128, 211, 231, 117, 70, 369, 101, 286, 114, 257, 63, 179, 330, 374, 335, 21, 132, 163, 160, 139, 104, 48, 233, 275, 215, 381, 116, 295, 327, 149, 280, 5, 184, 343, 344, 272, 36, 382, 97, 214, 234, 307, 352, 57, 261, 74, 157, 232, 175, 182, 7, 269, 199, 33, 102, 213, 333, 92, 79, 206, 250, 72, 6, 358, 131, 294, 68, 37, 256, 284, 90, 174, 203, 241, 112, 54, 13, 311, 45, 277, 267, 219, 73, 289, 283, 383, 281, 154, 142, 75] + 16: [134, 235, 281, 24, 329, 81, 119, 104, 357, 65, 158, 359, 259, 175, 252, 126, 320, 231, 48, 30, 276, 133, 94, 376, 100, 306, 78, 227, 358, 47, 183, 1, 202, 46, 260, 34, 73, 311, 381, 89, 265, 292, 204, 211, 53, 225, 314, 244, 15, 330, 289, 371, 315, 90, 365, 347, 343, 293, 182, 170, 121, 55, 163, 171, 71, 325, 284, 279, 186, 57, 192, 353, 43, 152, 114, 270, 44, 277, 56, 97, 29, 379, 290, 195, 123, 63, 83, 124, 219, 299, 164, 157, 352, 349, 72, 116, 286, 143, 280, 333, 238, 54, 74, 199, 205, 310, 216, 295, 0, 21, 218, 233, 167, 366, 321, 156, 351, 266, 12, 98, 16, 64, 69, 298, 346, 226, 153, 268, 239, 79, 206, 341, 32, 368, 383, 254, 336, 108, 355, 40, 323, 35, 155, 350, 165, 348, 96, 250, 129, 101, 229, 6, 99, 283, 342, 7, 198, 190, 102, 10, 151, 168, 334, 327, 117, 309, 194, 380, 144, 367, 66, 162, 209, 67, 305, 232, 328, 45, 264, 22, 26, 261, 370, 82, 176, 9, 374, 197, 173, 313, 4, 363, 271, 251, 338, 189, 11, 177, 184, 337, 174, 5, 105, 257, 39, 372, 20, 332, 95, 110, 240, 375, 344, 340, 70, 28, 312, 68, 140, 203, 37, 125, 60, 319, 80, 282, 354, 36, 93, 360, 339, 180, 220, 356, 301, 378, 161, 345, 135, 215, 27, 255, 86, 269, 224, 222, 91, 181, 122, 113, 188, 118, 274, 127, 297, 228, 193, 148, 258, 111, 243, 241, 130, 191, 23, 120, 77, 317, 146, 142, 364, 291, 273, 237, 59, 287, 136, 172, 245, 248, 87, 61, 128, 214, 362, 253, 179, 3, 303, 92, 166, 331, 316, 373, 17, 49, 308, 132, 223, 115, 139, 236, 76, 41, 19, 296, 288, 242, 159, 149, 256, 131, 234, 84, 185, 145, 75, 38, 262, 8, 285, 201, 50, 300, 178, 18, 230, 169, 200, 278, 361, 304, 31, 247, 294, 263, 369, 272, 154, 335, 33, 141, 324, 51, 318, 52, 13, 322, 58, 187, 88, 25, 150, 267, 196, 377, 307, 112, 208, 62, 326, 275, 85, 382, 138, 107, 147, 42, 246, 137, 207, 302, 221, 213, 160, 106, 103, 212, 210, 109, 217, 14, 249, 2] + 17: [246, 16, 28, 133, 343, 274, 330, 136, 239, 215, 95, 378, 10, 268, 129, 342, 65, 166, 11, 210, 159, 295, 21, 353, 294, 272, 297, 108, 190, 355, 278, 198, 216, 373, 194, 227, 35, 25, 103, 308, 176, 309, 55, 345, 47, 66, 195, 301, 220, 4, 130, 99, 359, 305, 206, 27, 0, 271, 56, 9, 61, 43, 32, 364, 111, 221, 70, 96, 334, 86, 341, 202, 208, 113, 383, 317, 315, 92, 137, 98, 120, 162, 165, 182, 143, 6, 69, 187, 1, 233, 265, 247, 172, 54, 325, 283, 337, 26, 12, 189, 228, 105, 225, 289, 285, 219, 211, 171, 371, 306, 223, 251, 348, 204, 313, 109, 329, 360, 181, 169, 79, 15, 307, 279, 250, 214, 252, 73, 44, 97, 363, 231, 361, 180, 36, 248, 381, 41, 76, 349, 150, 287, 368, 77, 232, 87, 93, 144, 91, 254, 290, 266, 124, 8, 94, 357, 67, 179, 123, 51, 205, 312, 280, 351, 178, 339, 291, 148, 327, 119, 314, 218, 300, 372, 212, 275, 292, 147, 346, 82, 338, 240, 369, 242, 262, 50, 164, 270, 85, 299, 257, 151, 138, 158, 370, 311, 222, 335, 256, 134, 197, 234, 157, 323, 263, 258, 332, 160, 75, 89, 74, 64, 156, 139, 161, 90, 131, 46, 22, 62, 375, 296, 224, 324, 175, 260, 19, 30, 107, 273, 29, 352, 350, 48, 152, 183, 382, 322, 127, 237, 188, 362, 193, 126, 380, 340, 80, 217, 244, 83, 33, 191, 298, 53, 42, 128, 288, 192, 328, 276, 316, 318, 72, 203, 319, 40, 140, 104, 374, 13, 226, 125, 3, 154, 142, 114, 7, 196, 153, 57, 304, 213, 63, 230, 377, 331, 320, 71, 286, 174, 269, 59, 185, 207, 49, 116, 241, 78, 259, 14, 115, 249, 267, 255, 199, 110, 201, 34, 253, 310, 145, 321, 141, 284, 200, 293, 366, 376, 2, 245, 102, 39, 117, 112, 31, 186, 135, 170, 344, 282, 84, 18, 149, 68, 333, 358, 236, 52, 155, 261, 173, 38, 243, 177, 146, 356, 132, 367, 20, 365, 106, 163, 277, 235, 81, 37, 379, 121, 354, 122, 303, 58, 100, 118, 347, 5, 238, 229, 167, 264, 17, 168, 23, 101, 24, 302, 184, 60, 336, 88, 45, 326, 209, 281] + 18: [271, 259, 230, 309, 249, 123, 352, 128, 250, 24, 66, 170, 273, 85, 370, 86, 242, 281, 235, 258, 340, 358, 248, 268, 139, 42, 100, 73, 19, 114, 133, 200, 18, 275, 267, 344, 338, 189, 143, 198, 1, 312, 147, 226, 325, 287, 372, 158, 30, 265, 373, 240, 377, 276, 50, 102, 119, 204, 216, 156, 374, 56, 187, 294, 127, 254, 186, 93, 29, 0, 336, 107, 10, 356, 77, 243, 266, 349, 169, 146, 11, 121, 46, 303, 348, 176, 141, 341, 269, 4, 112, 221, 290, 165, 302, 5, 320, 7, 351, 6, 31, 350, 380, 78, 144, 253, 87, 332, 92, 261, 196, 219, 301, 48, 369, 59, 88, 52, 274, 97, 28, 152, 69, 70, 105, 32, 291, 16, 279, 285, 202, 181, 191, 306, 122, 292, 255, 38, 157, 168, 362, 62, 83, 345, 272, 283, 213, 339, 282, 236, 25, 324, 334, 326, 117, 22, 182, 262, 8, 23, 161, 366, 293, 233, 277, 180, 222, 295, 286, 368, 260, 383, 192, 109, 138, 96, 118, 71, 299, 201, 98, 155, 206, 367, 145, 381, 58, 288, 37, 316, 17, 27, 167, 47, 45, 26, 319, 68, 188, 159, 228, 35, 361, 245, 328, 337, 177, 21, 125, 305, 49, 179, 131, 183, 95, 160, 331, 74, 110, 307, 111, 150, 166, 346, 256, 314, 347, 207, 54, 218, 72, 278, 55, 375, 238, 40, 231, 60, 80, 20, 257, 342, 217, 113, 223, 193, 280, 14, 371, 313, 12, 171, 137, 323, 343, 63, 227, 13, 51, 84, 225, 311, 2, 129, 208, 376, 3, 355, 359, 106, 234, 241, 89, 357, 308, 354, 297, 75, 220, 284, 115, 317, 130, 94, 247, 140, 67, 108, 300, 135, 205, 251, 174, 103, 378, 124, 90, 318, 79, 120, 148, 9, 81, 232, 82, 172, 173, 184, 64, 382, 264, 132, 53, 315, 57, 33, 61, 190, 149, 244, 116, 211, 321, 263, 164, 364, 229, 335, 175, 363, 239, 252, 91, 353, 195, 379, 65, 151, 134, 178, 136, 99, 270, 154, 210, 298, 365, 215, 41, 162, 296, 142, 199, 212, 203, 126, 329, 322, 310, 101, 43, 185, 104, 304, 246, 333, 36, 237, 44, 34, 76, 224, 360, 214, 209, 289, 197, 153, 39, 194, 330, 15, 163, 327] + 19: [24, 5, 47, 199, 131, 109, 150, 198, 155, 137, 169, 98, 370, 124, 236, 371, 308, 324, 245, 225, 103, 344, 250, 175, 68, 65, 227, 280, 349, 14, 242, 193, 316, 54, 102, 382, 379, 110, 119, 235, 209, 369, 40, 10, 100, 327, 286, 229, 313, 112, 19, 328, 307, 383, 114, 108, 231, 321, 287, 220, 165, 298, 41, 0, 342, 248, 95, 237, 319, 122, 221, 146, 7, 184, 70, 180, 115, 51, 183, 216, 80, 300, 116, 2, 357, 140, 215, 228, 317, 132, 178, 37, 76, 381, 194, 326, 323, 74, 212, 42, 182, 238, 159, 301, 20, 260, 322, 85, 13, 268, 335, 11, 283, 167, 92, 253, 45, 267, 329, 200, 90, 91, 206, 244, 58, 170, 331, 28, 204, 117, 304, 173, 208, 149, 151, 361, 293, 25, 340, 277, 123, 374, 196, 305, 377, 67, 279, 364, 338, 88, 266, 258, 38, 311, 33, 271, 303, 203, 347, 314, 195, 125, 217, 75, 133, 3, 254, 163, 120, 191, 312, 306, 315, 295, 171, 166, 177, 372, 192, 197, 246, 272, 94, 96, 274, 359, 360, 201, 56, 148, 355, 12, 288, 264, 187, 276, 330, 8, 373, 226, 352, 354, 89, 135, 156, 174, 341, 181, 257, 16, 84, 21, 358, 99, 224, 205, 265, 366, 292, 285, 213, 104, 262, 153, 1, 251, 97, 9, 79, 281, 59, 145, 143, 121, 290, 362, 128, 127, 375, 368, 190, 255, 48, 350, 188, 222, 310, 6, 164, 113, 318, 86, 162, 30, 118, 348, 343, 147, 261, 29, 214, 378, 53, 69, 291, 61, 111, 35, 126, 63, 339, 71, 337, 158, 259, 380, 189, 284, 278, 60, 23, 81, 332, 139, 4, 269, 72, 18, 275, 161, 219, 105, 44, 218, 15, 157, 130, 144, 73, 346, 282, 172, 273, 186, 334, 46, 176, 43, 232, 230, 62, 78, 367, 52, 211, 179, 64, 141, 296, 299, 353, 39, 77, 210, 336, 270, 185, 93, 106, 36, 32, 356, 49, 87, 263, 138, 241, 207, 302, 256, 297, 26, 82, 160, 83, 376, 107, 27, 152, 17, 289, 239, 309, 249, 168, 345, 223, 252, 247, 129, 66, 22, 101, 57, 134, 234, 243, 363, 240, 55, 233, 31, 154, 294, 333, 202, 325, 365, 351, 142, 136, 50, 34, 320] + 20: [161, 249, 129, 17, 167, 344, 107, 218, 127, 260, 262, 350, 253, 151, 189, 328, 269, 131, 61, 27, 288, 281, 241, 72, 381, 283, 251, 207, 12, 383, 231, 11, 192, 179, 143, 255, 284, 345, 214, 316, 70, 263, 64, 230, 137, 276, 297, 326, 369, 291, 289, 65, 29, 373, 146, 148, 380, 191, 267, 155, 210, 248, 166, 168, 340, 206, 333, 159, 63, 88, 54, 41, 116, 130, 257, 194, 101, 114, 35, 91, 264, 164, 259, 25, 254, 232, 208, 290, 222, 10, 152, 181, 314, 372, 162, 242, 37, 318, 278, 75, 82, 128, 204, 330, 90, 303, 217, 279, 325, 138, 365, 271, 349, 319, 197, 221, 42, 239, 147, 103, 98, 327, 8, 120, 307, 174, 145, 53, 309, 315, 358, 172, 354, 367, 219, 226, 100, 360, 341, 261, 247, 56, 118, 117, 4, 272, 228, 287, 87, 374, 357, 71, 347, 244, 274, 286, 60, 158, 258, 59, 102, 28, 355, 123, 5, 237, 135, 156, 376, 335, 45, 46, 55, 171, 220, 110, 200, 346, 62, 324, 15, 106, 377, 22, 38, 294, 223, 150, 133, 313, 48, 338, 379, 173, 66, 364, 216, 227, 182, 81, 112, 304, 277, 378, 33, 298, 301, 238, 300, 368, 149, 34, 321, 111, 190, 266, 363, 292, 185, 322, 235, 153, 224, 160, 93, 16, 320, 252, 176, 359, 47, 142, 180, 51, 270, 85, 89, 52, 44, 329, 334, 144, 2, 13, 184, 77, 19, 382, 352, 243, 209, 245, 312, 293, 234, 18, 69, 58, 275, 375, 198, 31, 97, 113, 193, 122, 273, 306, 268, 30, 332, 339, 94, 211, 196, 40, 157, 361, 9, 311, 323, 295, 36, 250, 86, 299, 348, 163, 337, 186, 188, 105, 121, 362, 26, 317, 195, 165, 205, 104, 154, 256, 213, 115, 20, 84, 23, 136, 169, 68, 80, 126, 353, 187, 282, 83, 366, 308, 305, 202, 343, 229, 240, 177, 201, 351, 57, 92, 39, 310, 280, 95, 356, 0, 139, 331, 49, 371, 50, 140, 14, 342, 141, 233, 246, 79, 125, 178, 73, 108, 203, 24, 96, 132, 6, 236, 124, 285, 67, 199, 336, 43, 302, 119, 1, 99, 109, 32, 183, 21, 74, 170, 78, 296, 265, 134, 370, 3, 7, 212, 225, 175, 76, 215] + 21: [360, 188, 45, 0, 226, 284, 247, 221, 14, 380, 300, 196, 343, 315, 142, 353, 339, 7, 44, 34, 340, 334, 301, 93, 103, 329, 302, 249, 137, 57, 349, 220, 296, 55, 328, 130, 259, 31, 294, 239, 42, 73, 373, 217, 335, 156, 282, 136, 263, 121, 260, 167, 299, 51, 174, 185, 117, 141, 368, 298, 365, 147, 187, 222, 330, 170, 10, 24, 378, 192, 102, 274, 371, 151, 132, 242, 165, 159, 89, 345, 19, 71, 361, 78, 81, 30, 348, 278, 244, 344, 106, 374, 264, 61, 198, 327, 119, 307, 18, 286, 2, 369, 72, 15, 214, 240, 270, 115, 144, 183, 13, 362, 74, 8, 288, 251, 266, 359, 258, 228, 124, 173, 230, 83, 133, 223, 150, 99, 26, 65, 280, 273, 5, 338, 224, 246, 21, 275, 49, 272, 283, 180, 219, 311, 197, 38, 203, 376, 341, 88, 160, 186, 364, 162, 206, 235, 138, 11, 267, 268, 323, 181, 108, 123, 201, 309, 56, 58, 158, 372, 69, 250, 205, 80, 161, 172, 366, 253, 118, 255, 248, 134, 112, 155, 337, 41, 326, 68, 166, 35, 98, 285, 87, 101, 29, 92, 210, 236, 53, 357, 318, 84, 207, 358, 325, 178, 129, 77, 114, 95, 109, 291, 100, 213, 261, 342, 190, 355, 140, 333, 50, 279, 128, 233, 9, 116, 312, 175, 314, 148, 125, 37, 317, 354, 122, 6, 191, 36, 324, 85, 254, 320, 199, 145, 238, 1, 234, 43, 111, 363, 97, 310, 17, 16, 126, 168, 292, 163, 322, 319, 135, 305, 306, 32, 257, 232, 23, 316, 22, 243, 149, 157, 289, 313, 113, 46, 59, 225, 375, 39, 331, 27, 164, 110, 104, 290, 54, 105, 308, 169, 82, 177, 194, 208, 200, 48, 66, 351, 377, 297, 75, 211, 379, 321, 62, 304, 383, 332, 271, 252, 276, 212, 152, 20, 63, 3, 352, 218, 120, 64, 245, 60, 67, 52, 25, 146, 182, 229, 367, 216, 193, 336, 107, 265, 176, 195, 281, 91, 153, 227, 139, 79, 262, 96, 189, 70, 293, 76, 33, 184, 381, 12, 303, 356, 143, 269, 40, 347, 241, 350, 47, 4, 94, 28, 277, 295, 86, 90, 171, 209, 287, 256, 202, 237, 204, 131, 154, 215, 346, 179, 370, 382, 231, 127] + 22: [110, 4, 114, 224, 327, 285, 126, 220, 329, 92, 189, 231, 171, 105, 373, 282, 66, 18, 196, 14, 2, 293, 247, 107, 141, 172, 298, 268, 246, 333, 236, 358, 17, 383, 98, 366, 122, 128, 159, 271, 353, 135, 21, 32, 250, 241, 187, 297, 254, 348, 68, 130, 200, 356, 259, 118, 369, 79, 7, 339, 169, 52, 291, 15, 296, 152, 307, 84, 36, 312, 287, 234, 281, 207, 365, 44, 292, 184, 100, 174, 116, 377, 382, 244, 11, 75, 93, 71, 320, 223, 43, 40, 346, 363, 197, 154, 221, 111, 29, 144, 65, 155, 252, 10, 336, 311, 78, 213, 113, 378, 334, 57, 289, 286, 106, 165, 302, 145, 267, 30, 261, 177, 276, 258, 117, 318, 97, 228, 304, 306, 325, 72, 303, 120, 131, 190, 185, 81, 208, 323, 103, 202, 168, 265, 316, 9, 352, 225, 219, 61, 179, 349, 299, 212, 309, 95, 273, 300, 301, 206, 163, 342, 314, 121, 50, 31, 182, 310, 278, 330, 332, 56, 5, 374, 13, 367, 317, 229, 283, 41, 262, 8, 350, 87, 149, 6, 161, 80, 186, 119, 142, 205, 216, 33, 115, 90, 322, 232, 82, 125, 175, 214, 240, 158, 134, 55, 193, 83, 344, 64, 46, 362, 140, 239, 308, 62, 42, 319, 201, 27, 60, 305, 315, 376, 295, 211, 88, 191, 86, 69, 89, 22, 340, 269, 321, 324, 180, 45, 136, 146, 343, 204, 34, 20, 355, 63, 59, 67, 151, 222, 54, 210, 235, 53, 251, 150, 380, 368, 35, 157, 85, 245, 143, 176, 24, 74, 337, 147, 94, 156, 99, 28, 109, 351, 226, 279, 194, 284, 38, 167, 104, 124, 375, 359, 127, 16, 203, 91, 361, 263, 294, 178, 331, 160, 37, 242, 139, 215, 264, 19, 345, 25, 275, 1, 96, 173, 249, 12, 137, 290, 133, 162, 381, 209, 132, 112, 230, 164, 335, 51, 3, 39, 199, 347, 372, 326, 357, 47, 233, 253, 77, 192, 256, 313, 23, 217, 260, 198, 371, 138, 76, 238, 280, 188, 123, 170, 360, 338, 237, 227, 272, 0, 49, 379, 218, 255, 243, 248, 129, 354, 183, 73, 288, 181, 328, 195, 108, 58, 148, 274, 48, 364, 70, 101, 277, 153, 26, 341, 166, 102, 270, 266, 257, 370] + 23: [124, 137, 160, 173, 345, 315, 262, 301, 196, 156, 159, 146, 188, 297, 108, 256, 336, 189, 112, 291, 49, 165, 138, 183, 175, 220, 347, 339, 365, 263, 382, 38, 218, 318, 55, 261, 243, 66, 30, 258, 118, 95, 236, 60, 68, 296, 37, 325, 26, 244, 120, 209, 70, 215, 279, 19, 350, 14, 82, 207, 184, 31, 364, 33, 351, 122, 145, 117, 193, 15, 158, 235, 126, 314, 176, 180, 352, 374, 128, 143, 29, 6, 16, 280, 380, 34, 334, 282, 233, 357, 251, 333, 186, 205, 81, 366, 100, 127, 362, 121, 132, 74, 229, 133, 287, 319, 373, 272, 22, 114, 274, 142, 239, 96, 234, 266, 371, 246, 293, 46, 48, 27, 337, 111, 195, 182, 17, 162, 171, 28, 375, 223, 179, 335, 231, 25, 0, 273, 3, 4, 354, 90, 36, 360, 155, 24, 342, 177, 323, 238, 212, 73, 115, 148, 199, 87, 47, 32, 286, 144, 18, 185, 267, 369, 368, 322, 130, 381, 194, 306, 51, 321, 201, 149, 358, 134, 348, 2, 213, 226, 151, 129, 228, 324, 20, 45, 5, 43, 340, 7, 277, 110, 59, 295, 147, 331, 252, 187, 116, 94, 292, 125, 106, 44, 346, 202, 78, 157, 285, 141, 76, 227, 341, 320, 9, 230, 249, 275, 330, 216, 85, 241, 378, 102, 359, 153, 361, 99, 370, 190, 21, 104, 101, 316, 327, 232, 268, 214, 166, 139, 192, 98, 289, 240, 67, 309, 200, 11, 119, 58, 75, 89, 377, 13, 343, 217, 140, 208, 53, 276, 303, 344, 222, 198, 353, 270, 80, 12, 123, 311, 298, 312, 329, 113, 206, 164, 237, 168, 278, 136, 169, 161, 62, 379, 367, 163, 35, 242, 224, 135, 300, 56, 197, 72, 172, 290, 93, 41, 8, 250, 191, 313, 150, 269, 23, 154, 210, 152, 63, 92, 363, 245, 305, 42, 57, 10, 257, 69, 131, 355, 221, 284, 211, 170, 332, 91, 40, 307, 77, 97, 254, 248, 338, 372, 39, 383, 264, 255, 71, 50, 281, 376, 317, 181, 356, 54, 174, 326, 203, 302, 52, 288, 107, 65, 247, 109, 64, 79, 88, 253, 328, 304, 167, 84, 1, 225, 349, 283, 204, 265, 259, 103, 86, 260, 105, 299, 308, 294, 61, 271, 219, 178, 310, 83] + 24: [186, 38, 356, 3, 45, 336, 195, 104, 116, 126, 344, 359, 12, 14, 125, 227, 160, 241, 132, 320, 264, 322, 368, 314, 252, 370, 366, 313, 5, 109, 163, 99, 310, 262, 309, 208, 225, 318, 291, 217, 206, 270, 58, 89, 333, 181, 115, 69, 246, 144, 381, 295, 31, 68, 164, 325, 1, 324, 134, 254, 377, 367, 238, 19, 304, 250, 248, 327, 29, 124, 242, 198, 154, 64, 382, 87, 91, 158, 131, 159, 380, 49, 153, 350, 209, 197, 235, 11, 269, 79, 243, 108, 180, 17, 82, 200, 0, 168, 27, 351, 157, 137, 286, 24, 216, 285, 376, 16, 184, 176, 147, 345, 140, 297, 275, 25, 30, 98, 103, 167, 70, 111, 279, 128, 259, 231, 268, 119, 355, 55, 296, 213, 13, 46, 4, 321, 101, 36, 288, 278, 281, 74, 143, 298, 265, 341, 210, 326, 81, 348, 244, 133, 260, 293, 145, 358, 204, 42, 60, 56, 245, 363, 18, 289, 240, 155, 76, 253, 9, 185, 22, 211, 85, 369, 365, 21, 258, 123, 339, 301, 71, 66, 26, 161, 57, 312, 267, 218, 107, 352, 219, 256, 7, 332, 142, 290, 62, 192, 272, 138, 334, 149, 37, 287, 274, 342, 169, 271, 162, 193, 329, 373, 201, 34, 349, 100, 92, 307, 122, 372, 150, 282, 205, 40, 84, 63, 54, 294, 166, 361, 96, 305, 196, 249, 102, 8, 67, 86, 232, 43, 52, 337, 182, 223, 53, 93, 277, 247, 280, 118, 33, 23, 224, 41, 165, 175, 80, 323, 148, 379, 127, 75, 199, 178, 6, 306, 230, 263, 328, 302, 255, 88, 35, 139, 172, 346, 156, 308, 83, 239, 237, 319, 257, 188, 353, 300, 90, 261, 20, 136, 375, 121, 362, 212, 105, 106, 15, 338, 226, 292, 191, 233, 315, 10, 77, 117, 371, 331, 194, 130, 2, 229, 61, 190, 135, 65, 207, 374, 234, 236, 222, 340, 283, 141, 378, 171, 120, 214, 113, 276, 317, 183, 203, 73, 151, 187, 220, 357, 189, 39, 347, 221, 114, 97, 173, 354, 51, 47, 251, 146, 202, 343, 335, 48, 215, 170, 364, 303, 179, 383, 95, 299, 110, 266, 78, 228, 360, 59, 330, 273, 28, 129, 112, 50, 72, 284, 177, 316, 94, 32, 174, 44, 311, 152] + 25: [315, 137, 277, 6, 285, 195, 267, 264, 194, 148, 255, 178, 198, 329, 50, 283, 75, 266, 169, 156, 188, 129, 91, 123, 139, 164, 34, 61, 66, 331, 367, 28, 158, 253, 290, 160, 14, 302, 244, 345, 183, 172, 260, 177, 270, 363, 241, 286, 72, 60, 271, 265, 314, 233, 132, 368, 375, 216, 341, 336, 330, 121, 78, 347, 182, 352, 128, 339, 377, 19, 122, 189, 334, 247, 102, 49, 256, 135, 312, 98, 41, 88, 166, 83, 179, 99, 3, 380, 32, 335, 383, 239, 227, 163, 89, 108, 162, 372, 47, 354, 306, 207, 10, 218, 295, 248, 291, 196, 116, 365, 45, 378, 201, 222, 297, 118, 311, 176, 303, 257, 353, 376, 97, 235, 30, 364, 337, 127, 351, 259, 299, 138, 206, 153, 54, 316, 90, 174, 275, 167, 373, 44, 382, 356, 282, 268, 100, 332, 333, 230, 8, 278, 76, 246, 17, 115, 321, 58, 69, 150, 361, 287, 210, 142, 293, 215, 193, 261, 62, 161, 346, 53, 1, 184, 125, 81, 231, 117, 73, 11, 238, 258, 381, 79, 111, 300, 26, 281, 205, 155, 374, 217, 379, 175, 9, 296, 80, 343, 171, 197, 318, 144, 274, 64, 136, 42, 327, 362, 357, 87, 165, 358, 40, 325, 21, 250, 228, 82, 7, 113, 18, 168, 154, 24, 13, 304, 46, 326, 109, 74, 307, 203, 359, 31, 225, 313, 67, 12, 323, 212, 276, 192, 298, 355, 131, 229, 159, 349, 190, 369, 104, 124, 133, 245, 105, 213, 263, 170, 126, 191, 320, 208, 187, 262, 366, 37, 294, 200, 220, 348, 5, 324, 130, 33, 25, 38, 55, 211, 249, 322, 240, 36, 186, 288, 71, 16, 140, 370, 29, 180, 280, 309, 112, 226, 43, 202, 51, 85, 146, 308, 2, 209, 35, 134, 338, 84, 149, 185, 289, 344, 224, 147, 317, 107, 59, 23, 342, 70, 20, 243, 252, 48, 57, 242, 39, 143, 0, 254, 301, 63, 292, 234, 251, 360, 221, 157, 269, 52, 214, 199, 65, 223, 284, 4, 101, 181, 152, 114, 310, 272, 204, 236, 237, 141, 27, 328, 96, 219, 151, 119, 279, 94, 305, 145, 173, 110, 319, 120, 77, 56, 273, 106, 68, 86, 93, 22, 340, 232, 103, 371, 350, 15, 92, 95] + 26: [136, 110, 127, 129, 7, 154, 104, 144, 178, 222, 161, 354, 290, 185, 103, 23, 348, 119, 235, 301, 234, 85, 366, 139, 90, 201, 232, 226, 180, 94, 245, 99, 175, 166, 357, 215, 100, 98, 353, 29, 93, 96, 255, 91, 72, 284, 147, 169, 217, 153, 101, 298, 314, 249, 262, 293, 227, 95, 375, 246, 254, 207, 252, 143, 197, 358, 379, 81, 208, 1, 322, 86, 237, 36, 76, 212, 289, 63, 244, 242, 356, 43, 318, 352, 321, 177, 156, 140, 257, 133, 73, 157, 12, 310, 121, 68, 70, 195, 80, 271, 160, 211, 128, 337, 329, 13, 145, 92, 0, 326, 266, 206, 47, 64, 378, 345, 273, 65, 368, 168, 69, 279, 11, 38, 275, 162, 97, 151, 44, 51, 117, 79, 173, 277, 221, 294, 202, 122, 370, 351, 19, 45, 75, 288, 265, 315, 371, 338, 181, 341, 276, 15, 313, 250, 383, 59, 248, 179, 228, 280, 109, 126, 186, 9, 56, 300, 324, 305, 102, 21, 61, 278, 82, 340, 263, 16, 272, 58, 41, 285, 297, 239, 67, 316, 17, 39, 299, 116, 148, 78, 10, 377, 53, 149, 339, 183, 304, 135, 359, 170, 193, 132, 198, 77, 114, 48, 260, 164, 192, 347, 362, 295, 42, 218, 210, 350, 281, 6, 229, 344, 335, 196, 167, 256, 142, 270, 319, 182, 259, 381, 50, 159, 330, 282, 296, 106, 49, 115, 247, 40, 130, 27, 320, 88, 108, 194, 125, 240, 224, 317, 84, 325, 251, 349, 213, 311, 372, 268, 264, 261, 219, 334, 46, 3, 124, 308, 33, 191, 355, 20, 238, 200, 230, 258, 327, 113, 220, 155, 241, 8, 225, 363, 331, 111, 71, 35, 189, 287, 342, 343, 236, 184, 292, 30, 274, 306, 231, 146, 163, 312, 165, 367, 37, 382, 28, 4, 112, 336, 283, 22, 374, 203, 233, 269, 26, 332, 138, 204, 131, 286, 174, 152, 190, 24, 62, 158, 83, 32, 199, 243, 57, 360, 60, 25, 52, 209, 89, 214, 5, 376, 369, 380, 120, 34, 123, 66, 205, 74, 361, 323, 328, 134, 171, 118, 2, 373, 14, 303, 54, 346, 172, 176, 291, 18, 150, 223, 307, 31, 107, 253, 365, 105, 364, 87, 137, 302, 187, 333, 267, 216, 55, 188, 141, 309] + 27: [103, 86, 355, 247, 311, 173, 363, 200, 220, 243, 257, 100, 244, 146, 43, 39, 8, 331, 310, 302, 203, 209, 57, 255, 286, 327, 293, 350, 265, 102, 118, 354, 215, 126, 175, 230, 297, 107, 14, 232, 198, 245, 6, 155, 274, 346, 163, 50, 37, 219, 349, 285, 34, 45, 193, 66, 339, 266, 271, 178, 299, 264, 214, 259, 74, 324, 372, 46, 353, 138, 364, 123, 225, 305, 59, 377, 306, 341, 141, 251, 128, 183, 154, 167, 186, 309, 171, 337, 63, 96, 147, 144, 115, 212, 87, 342, 30, 227, 343, 168, 116, 208, 269, 199, 318, 149, 133, 304, 13, 85, 375, 122, 101, 33, 365, 218, 60, 283, 210, 17, 26, 61, 108, 125, 380, 114, 320, 205, 360, 179, 379, 32, 51, 315, 290, 2, 267, 79, 29, 313, 182, 139, 378, 206, 263, 31, 90, 303, 73, 97, 248, 197, 24, 5, 16, 288, 1, 326, 143, 367, 224, 195, 371, 277, 64, 27, 216, 53, 4, 253, 145, 124, 89, 300, 345, 109, 11, 7, 99, 332, 254, 356, 382, 344, 19, 296, 169, 157, 336, 9, 246, 170, 202, 374, 80, 333, 289, 383, 132, 113, 15, 239, 260, 347, 280, 217, 137, 201, 172, 127, 142, 93, 111, 236, 150, 276, 312, 153, 275, 71, 362, 238, 241, 376, 213, 338, 55, 316, 67, 291, 148, 28, 184, 262, 322, 130, 328, 36, 357, 180, 228, 104, 223, 81, 351, 21, 237, 49, 164, 187, 368, 3, 106, 352, 162, 249, 84, 165, 20, 65, 194, 231, 298, 282, 177, 58, 119, 0, 117, 112, 211, 94, 136, 140, 314, 188, 160, 185, 56, 181, 25, 35, 340, 38, 91, 158, 92, 261, 70, 301, 281, 88, 129, 250, 189, 196, 10, 278, 308, 330, 348, 329, 52, 242, 273, 221, 23, 235, 68, 134, 22, 192, 95, 76, 252, 190, 204, 135, 82, 369, 325, 366, 48, 229, 334, 77, 272, 62, 151, 166, 370, 120, 156, 121, 176, 152, 131, 72, 233, 307, 18, 69, 373, 292, 279, 83, 258, 44, 98, 358, 256, 270, 191, 41, 110, 359, 47, 226, 321, 361, 222, 294, 381, 12, 268, 75, 161, 234, 174, 317, 284, 207, 323, 54, 42, 335, 295, 78, 287, 159, 105, 319, 40, 240] + 28: [356, 310, 188, 100, 232, 331, 330, 167, 125, 311, 135, 237, 134, 249, 64, 29, 133, 160, 342, 275, 377, 298, 150, 343, 26, 25, 265, 307, 295, 228, 166, 153, 222, 142, 80, 284, 91, 364, 274, 365, 48, 141, 259, 251, 56, 291, 151, 202, 185, 244, 74, 231, 374, 32, 352, 200, 165, 339, 378, 247, 380, 194, 266, 190, 207, 351, 53, 115, 11, 96, 359, 54, 161, 201, 122, 306, 321, 319, 20, 296, 157, 172, 106, 58, 270, 358, 82, 130, 81, 309, 15, 45, 46, 140, 323, 86, 344, 4, 176, 279, 277, 44, 78, 179, 375, 327, 158, 8, 75, 175, 149, 230, 287, 139, 315, 294, 382, 38, 353, 336, 5, 367, 169, 325, 217, 258, 144, 35, 13, 90, 33, 105, 314, 184, 227, 381, 290, 211, 131, 50, 177, 65, 313, 212, 108, 286, 317, 162, 371, 285, 145, 155, 7, 221, 271, 21, 267, 206, 116, 333, 121, 173, 17, 34, 335, 83, 147, 94, 236, 299, 340, 22, 137, 357, 368, 77, 2, 43, 304, 69, 366, 119, 376, 225, 372, 143, 146, 379, 132, 334, 329, 18, 30, 361, 226, 302, 253, 193, 67, 191, 154, 263, 79, 109, 280, 373, 19, 181, 216, 57, 316, 348, 40, 39, 281, 338, 31, 203, 288, 328, 93, 246, 242, 98, 51, 208, 278, 183, 113, 129, 163, 305, 363, 6, 89, 87, 300, 354, 256, 138, 197, 92, 248, 320, 214, 224, 220, 164, 282, 273, 324, 383, 289, 123, 347, 88, 63, 205, 76, 186, 189, 268, 27, 301, 243, 3, 47, 85, 117, 204, 104, 318, 55, 136, 24, 260, 171, 174, 362, 349, 128, 238, 252, 209, 198, 187, 360, 1, 250, 297, 101, 272, 97, 235, 95, 52, 41, 370, 350, 341, 293, 308, 332, 261, 269, 355, 114, 16, 234, 10, 9, 73, 196, 168, 127, 369, 42, 152, 199, 283, 178, 36, 192, 264, 72, 303, 118, 12, 210, 322, 326, 213, 257, 62, 156, 180, 70, 107, 239, 71, 59, 245, 28, 233, 103, 241, 195, 223, 66, 0, 240, 68, 345, 124, 110, 218, 14, 84, 254, 215, 61, 255, 120, 312, 49, 99, 337, 170, 346, 219, 148, 182, 37, 112, 229, 159, 262, 292, 126, 102, 60, 111, 23, 276] + 29: [197, 220, 255, 223, 111, 39, 41, 36, 70, 86, 100, 245, 226, 358, 357, 91, 321, 185, 199, 1, 240, 115, 141, 212, 295, 51, 97, 216, 300, 331, 87, 27, 102, 355, 234, 235, 290, 315, 80, 161, 28, 35, 24, 279, 252, 254, 350, 29, 361, 88, 12, 193, 248, 243, 158, 120, 55, 302, 309, 325, 337, 288, 90, 52, 369, 299, 64, 241, 165, 84, 373, 260, 232, 195, 74, 3, 174, 65, 25, 371, 266, 365, 208, 130, 32, 131, 360, 164, 374, 287, 233, 153, 276, 152, 285, 268, 33, 73, 298, 94, 184, 76, 167, 275, 343, 296, 57, 154, 145, 310, 155, 95, 168, 59, 121, 313, 109, 238, 192, 117, 198, 4, 171, 341, 114, 304, 16, 283, 54, 214, 328, 72, 150, 133, 0, 61, 139, 157, 126, 77, 257, 330, 377, 132, 118, 89, 58, 202, 21, 271, 311, 47, 264, 230, 227, 380, 186, 9, 204, 297, 250, 352, 40, 151, 256, 305, 286, 335, 383, 112, 379, 173, 18, 346, 225, 172, 128, 156, 200, 7, 312, 292, 134, 376, 135, 79, 213, 334, 169, 291, 206, 56, 354, 203, 103, 14, 127, 303, 262, 265, 339, 119, 351, 78, 82, 46, 368, 101, 17, 307, 224, 261, 68, 66, 381, 218, 282, 362, 67, 106, 316, 207, 176, 26, 162, 113, 345, 43, 217, 10, 83, 194, 146, 308, 5, 249, 98, 322, 96, 356, 267, 236, 378, 370, 129, 50, 159, 273, 326, 294, 263, 289, 210, 301, 190, 187, 99, 105, 13, 71, 6, 30, 209, 247, 244, 196, 137, 183, 239, 85, 53, 38, 60, 211, 306, 62, 229, 228, 205, 178, 123, 181, 182, 143, 8, 348, 338, 108, 340, 336, 175, 333, 44, 147, 280, 332, 269, 242, 259, 191, 382, 138, 81, 136, 317, 253, 367, 278, 349, 281, 201, 342, 320, 23, 163, 366, 34, 353, 160, 124, 148, 11, 347, 75, 149, 324, 231, 270, 15, 293, 69, 92, 246, 327, 142, 177, 323, 104, 180, 364, 22, 110, 122, 359, 116, 375, 272, 189, 251, 107, 93, 2, 319, 19, 179, 237, 274, 48, 63, 222, 215, 318, 258, 277, 166, 188, 314, 31, 329, 219, 45, 37, 221, 140, 125, 284, 20, 144, 170, 363, 42, 344, 49, 372] + 30: [37, 312, 332, 91, 224, 330, 58, 62, 125, 20, 280, 77, 116, 252, 145, 297, 106, 31, 268, 189, 47, 380, 88, 322, 164, 225, 7, 12, 256, 74, 336, 71, 150, 160, 180, 293, 274, 233, 129, 375, 148, 324, 227, 16, 40, 165, 131, 8, 208, 214, 212, 107, 258, 215, 296, 286, 61, 21, 15, 198, 50, 63, 166, 1, 99, 279, 276, 368, 264, 34, 334, 345, 140, 147, 24, 306, 11, 157, 362, 337, 152, 175, 241, 183, 247, 260, 230, 287, 255, 32, 94, 300, 118, 185, 228, 191, 239, 302, 275, 318, 29, 123, 86, 9, 151, 110, 292, 14, 120, 122, 352, 339, 33, 342, 338, 281, 4, 39, 117, 301, 154, 289, 335, 291, 369, 210, 248, 295, 357, 236, 343, 109, 253, 222, 104, 126, 102, 371, 329, 83, 114, 267, 101, 182, 213, 270, 53, 137, 351, 257, 172, 85, 18, 51, 64, 119, 261, 111, 374, 194, 179, 363, 87, 310, 186, 305, 232, 178, 2, 266, 59, 242, 56, 341, 271, 346, 223, 217, 313, 92, 220, 49, 169, 72, 288, 209, 57, 139, 81, 327, 181, 112, 366, 358, 206, 45, 356, 364, 141, 142, 331, 155, 48, 193, 149, 381, 195, 136, 190, 294, 173, 201, 367, 249, 54, 22, 97, 35, 204, 168, 196, 27, 298, 234, 344, 188, 333, 17, 200, 44, 207, 211, 353, 199, 307, 365, 372, 79, 319, 354, 262, 158, 143, 68, 156, 75, 315, 350, 95, 115, 96, 205, 163, 167, 348, 23, 105, 278, 285, 311, 127, 314, 146, 269, 245, 184, 6, 317, 290, 250, 244, 144, 66, 153, 320, 138, 174, 202, 84, 265, 216, 377, 69, 219, 221, 0, 103, 259, 52, 41, 46, 10, 355, 161, 36, 246, 304, 43, 283, 197, 229, 284, 282, 299, 326, 134, 30, 113, 323, 370, 82, 192, 65, 360, 42, 272, 13, 349, 316, 361, 55, 325, 3, 328, 132, 277, 309, 98, 73, 171, 273, 308, 128, 26, 100, 237, 124, 254, 187, 28, 263, 218, 243, 340, 240, 376, 379, 121, 130, 359, 347, 177, 90, 93, 235, 159, 251, 25, 70, 80, 133, 321, 135, 373, 78, 38, 89, 378, 303, 231, 162, 76, 170, 60, 67, 383, 203, 382, 19, 5, 226, 108, 238, 176] + 31: [166, 324, 369, 135, 31, 87, 78, 75, 364, 20, 202, 140, 337, 224, 314, 122, 350, 126, 301, 167, 118, 382, 37, 207, 201, 249, 238, 57, 29, 77, 169, 40, 105, 360, 171, 123, 257, 362, 157, 190, 107, 43, 149, 256, 246, 198, 181, 229, 144, 70, 363, 245, 17, 197, 269, 294, 338, 191, 383, 282, 12, 349, 64, 139, 94, 154, 236, 295, 234, 168, 230, 318, 26, 231, 115, 15, 60, 59, 124, 38, 371, 130, 264, 1, 55, 327, 46, 253, 285, 24, 148, 242, 10, 358, 90, 132, 0, 23, 252, 278, 268, 56, 379, 83, 150, 222, 370, 180, 142, 213, 298, 21, 196, 66, 9, 210, 51, 347, 184, 80, 248, 233, 335, 215, 69, 106, 138, 336, 250, 186, 305, 356, 81, 329, 183, 280, 42, 260, 174, 343, 5, 273, 322, 289, 159, 365, 292, 325, 98, 247, 36, 219, 165, 121, 158, 88, 85, 342, 99, 332, 195, 79, 74, 381, 300, 54, 95, 354, 265, 310, 208, 261, 133, 299, 380, 45, 92, 316, 217, 308, 14, 211, 302, 303, 259, 375, 182, 293, 311, 47, 129, 377, 22, 128, 145, 334, 188, 353, 346, 330, 178, 112, 175, 361, 179, 291, 6, 34, 71, 218, 274, 307, 225, 110, 271, 372, 227, 32, 2, 25, 368, 16, 290, 319, 65, 200, 286, 351, 109, 48, 263, 345, 333, 27, 344, 255, 220, 104, 35, 127, 108, 143, 223, 41, 189, 19, 206, 270, 173, 39, 241, 315, 212, 73, 374, 91, 44, 162, 193, 177, 151, 235, 161, 216, 33, 4, 304, 131, 284, 313, 97, 267, 93, 58, 367, 28, 240, 209, 352, 170, 141, 52, 214, 82, 262, 376, 312, 228, 30, 326, 137, 355, 72, 331, 279, 266, 221, 321, 153, 96, 296, 287, 63, 243, 100, 205, 8, 176, 297, 357, 13, 18, 155, 147, 146, 348, 317, 61, 164, 378, 62, 309, 281, 359, 275, 328, 339, 7, 232, 204, 366, 53, 288, 199, 340, 117, 76, 185, 50, 116, 320, 276, 306, 134, 239, 136, 277, 237, 160, 194, 373, 84, 86, 114, 254, 163, 226, 203, 251, 323, 3, 68, 111, 192, 283, 120, 187, 125, 152, 49, 102, 119, 156, 103, 258, 244, 67, 272, 11, 172, 113, 101, 341, 89] + 32: [63, 327, 348, 205, 266, 6, 19, 134, 214, 45, 182, 5, 356, 117, 368, 165, 11, 123, 255, 244, 181, 338, 162, 265, 352, 209, 67, 286, 146, 168, 140, 354, 314, 306, 108, 299, 247, 77, 240, 372, 31, 132, 270, 277, 17, 245, 95, 169, 164, 275, 61, 33, 7, 185, 246, 357, 68, 87, 307, 198, 91, 256, 29, 37, 128, 154, 223, 72, 152, 318, 259, 112, 367, 70, 106, 150, 284, 166, 151, 174, 195, 319, 109, 292, 317, 228, 9, 210, 65, 32, 47, 137, 42, 52, 300, 262, 212, 346, 241, 16, 351, 116, 99, 229, 363, 281, 305, 257, 85, 333, 374, 138, 311, 159, 328, 161, 242, 381, 57, 296, 369, 380, 66, 130, 23, 227, 310, 261, 239, 237, 64, 58, 377, 171, 139, 43, 176, 18, 110, 118, 290, 326, 320, 98, 163, 94, 141, 341, 219, 184, 279, 59, 136, 213, 111, 238, 293, 50, 12, 189, 27, 180, 194, 39, 349, 235, 224, 375, 230, 21, 250, 49, 359, 303, 273, 206, 280, 36, 313, 355, 96, 334, 343, 287, 84, 253, 315, 304, 177, 44, 267, 226, 187, 344, 345, 51, 88, 268, 373, 282, 283, 301, 233, 113, 25, 188, 378, 54, 308, 331, 366, 100, 149, 79, 114, 15, 370, 274, 208, 8, 142, 155, 175, 193, 336, 204, 200, 105, 202, 34, 56, 35, 276, 3, 133, 222, 83, 167, 260, 379, 40, 329, 323, 107, 291, 183, 103, 243, 131, 53, 271, 254, 234, 24, 321, 298, 221, 201, 153, 211, 371, 216, 147, 192, 2, 322, 218, 199, 14, 361, 55, 104, 13, 126, 383, 231, 93, 203, 335, 121, 144, 97, 332, 115, 20, 125, 197, 295, 190, 347, 82, 324, 75, 30, 81, 101, 207, 129, 337, 232, 263, 124, 294, 365, 48, 102, 220, 170, 1, 46, 217, 251, 362, 89, 160, 28, 135, 122, 69, 38, 360, 173, 71, 325, 236, 80, 249, 312, 145, 215, 62, 340, 248, 158, 10, 358, 179, 330, 26, 342, 156, 172, 186, 297, 225, 178, 376, 272, 157, 289, 78, 364, 127, 74, 278, 0, 73, 191, 316, 90, 269, 148, 143, 350, 92, 285, 258, 86, 252, 382, 60, 120, 339, 76, 288, 196, 353, 41, 4, 309, 119, 22, 264, 302] + 33: [38, 9, 193, 349, 240, 45, 312, 50, 151, 155, 70, 41, 340, 368, 334, 308, 311, 365, 85, 47, 277, 16, 34, 220, 81, 179, 360, 343, 354, 62, 78, 139, 346, 191, 8, 174, 267, 61, 106, 2, 253, 371, 330, 49, 275, 213, 128, 152, 339, 304, 37, 90, 66, 64, 205, 80, 342, 204, 264, 207, 300, 272, 268, 254, 11, 88, 298, 43, 302, 295, 223, 333, 379, 153, 335, 201, 87, 141, 170, 52, 373, 198, 246, 370, 374, 263, 102, 93, 74, 286, 249, 29, 269, 142, 278, 372, 96, 17, 297, 327, 164, 376, 116, 147, 126, 105, 292, 316, 124, 356, 209, 284, 132, 217, 185, 294, 44, 109, 186, 382, 328, 319, 242, 194, 303, 48, 348, 222, 336, 344, 262, 232, 84, 375, 188, 157, 27, 211, 165, 247, 184, 71, 53, 120, 260, 307, 258, 320, 215, 166, 31, 381, 25, 274, 301, 1, 169, 118, 30, 112, 341, 332, 110, 187, 219, 271, 0, 171, 259, 35, 58, 63, 83, 283, 261, 12, 355, 123, 107, 108, 265, 127, 7, 76, 135, 13, 46, 54, 250, 137, 203, 236, 51, 167, 206, 86, 4, 100, 362, 160, 305, 279, 210, 55, 65, 293, 233, 366, 40, 199, 363, 178, 121, 180, 23, 310, 237, 229, 270, 291, 208, 329, 322, 214, 145, 256, 150, 122, 190, 235, 134, 114, 195, 221, 136, 182, 129, 175, 228, 168, 176, 140, 148, 89, 172, 158, 225, 197, 82, 321, 196, 289, 361, 163, 350, 378, 67, 306, 10, 28, 173, 285, 243, 359, 154, 22, 91, 103, 241, 364, 266, 216, 98, 39, 347, 33, 288, 309, 276, 104, 32, 59, 131, 56, 296, 99, 159, 287, 331, 75, 94, 68, 280, 101, 14, 125, 144, 115, 3, 133, 15, 218, 324, 244, 257, 326, 252, 130, 212, 353, 383, 357, 202, 5, 192, 314, 177, 234, 231, 72, 113, 69, 226, 57, 79, 251, 20, 138, 24, 318, 245, 181, 95, 73, 313, 315, 299, 325, 183, 200, 323, 189, 377, 290, 19, 367, 60, 273, 281, 162, 369, 224, 248, 77, 6, 337, 18, 119, 143, 338, 36, 42, 146, 351, 282, 255, 358, 380, 149, 345, 21, 239, 111, 352, 230, 156, 227, 92, 238, 117, 317, 97, 161, 26] + 34: [16, 280, 66, 377, 140, 381, 122, 38, 139, 338, 132, 349, 378, 369, 76, 351, 193, 375, 49, 273, 173, 365, 14, 252, 179, 216, 111, 19, 342, 57, 219, 162, 105, 288, 189, 257, 310, 245, 316, 339, 169, 350, 279, 212, 130, 376, 341, 43, 366, 149, 60, 336, 364, 48, 326, 302, 367, 210, 198, 37, 119, 228, 355, 176, 323, 166, 143, 284, 88, 213, 281, 101, 306, 278, 220, 25, 226, 329, 158, 153, 97, 131, 12, 170, 283, 371, 94, 141, 7, 32, 353, 72, 39, 59, 227, 307, 271, 196, 300, 270, 41, 267, 110, 200, 95, 18, 112, 358, 327, 344, 221, 172, 186, 282, 233, 96, 343, 165, 268, 120, 249, 167, 74, 5, 31, 291, 379, 258, 4, 107, 311, 236, 63, 93, 301, 328, 47, 36, 241, 73, 71, 84, 296, 22, 348, 2, 304, 70, 83, 21, 225, 208, 178, 134, 80, 33, 243, 305, 55, 100, 86, 177, 370, 318, 285, 127, 52, 297, 312, 185, 259, 91, 372, 54, 81, 260, 23, 335, 145, 347, 195, 85, 230, 118, 168, 253, 274, 78, 191, 362, 106, 202, 69, 44, 8, 99, 299, 209, 315, 298, 146, 294, 151, 287, 205, 224, 62, 223, 360, 188, 262, 30, 256, 235, 171, 182, 248, 207, 337, 332, 104, 293, 240, 175, 148, 277, 3, 354, 272, 40, 247, 322, 27, 156, 20, 35, 211, 129, 320, 363, 334, 82, 263, 124, 218, 65, 203, 92, 53, 324, 64, 264, 346, 98, 51, 128, 231, 275, 34, 183, 269, 309, 325, 77, 126, 155, 330, 276, 117, 244, 250, 187, 238, 123, 113, 90, 75, 368, 319, 361, 11, 161, 229, 9, 174, 164, 103, 125, 15, 201, 357, 79, 184, 232, 29, 290, 56, 135, 89, 345, 292, 102, 150, 180, 46, 374, 28, 50, 295, 308, 163, 242, 121, 115, 190, 0, 67, 321, 138, 383, 133, 42, 144, 181, 194, 204, 24, 222, 333, 251, 154, 217, 26, 352, 215, 255, 61, 116, 382, 289, 136, 261, 239, 6, 68, 266, 159, 214, 137, 380, 87, 157, 234, 114, 1, 152, 373, 13, 286, 313, 206, 108, 340, 58, 17, 246, 359, 317, 254, 237, 199, 331, 197, 142, 314, 192, 109, 356, 160, 45, 147, 10, 303, 265] + 35: [58, 345, 268, 168, 306, 273, 277, 119, 108, 53, 375, 78, 189, 330, 91, 212, 6, 84, 54, 166, 229, 134, 60, 291, 138, 14, 373, 61, 256, 169, 187, 190, 21, 350, 243, 260, 86, 351, 102, 334, 141, 357, 148, 69, 251, 173, 301, 146, 45, 72, 117, 5, 171, 4, 308, 220, 369, 116, 139, 132, 110, 83, 307, 167, 63, 41, 317, 371, 365, 302, 228, 293, 218, 113, 82, 106, 50, 382, 183, 34, 88, 312, 35, 3, 180, 17, 79, 331, 354, 374, 368, 238, 118, 135, 64, 40, 363, 144, 314, 193, 340, 329, 202, 230, 12, 235, 292, 324, 159, 290, 7, 348, 66, 140, 259, 209, 13, 155, 153, 136, 1, 133, 211, 92, 98, 289, 336, 347, 285, 204, 370, 272, 181, 85, 57, 250, 378, 274, 145, 358, 125, 149, 154, 96, 203, 319, 95, 217, 44, 62, 191, 114, 283, 160, 214, 23, 130, 70, 121, 126, 325, 296, 97, 16, 366, 177, 309, 39, 71, 376, 115, 379, 237, 311, 15, 278, 176, 137, 244, 179, 158, 298, 90, 279, 77, 263, 280, 111, 377, 30, 328, 294, 276, 152, 162, 240, 87, 246, 29, 112, 247, 349, 143, 287, 253, 65, 109, 33, 300, 233, 271, 9, 321, 73, 120, 361, 234, 257, 47, 93, 281, 221, 182, 265, 201, 337, 270, 161, 362, 224, 269, 185, 89, 18, 94, 213, 46, 332, 316, 266, 147, 107, 38, 232, 364, 254, 20, 215, 56, 76, 131, 258, 157, 267, 59, 22, 178, 352, 195, 25, 207, 313, 286, 199, 356, 8, 299, 275, 42, 231, 184, 100, 320, 264, 188, 381, 43, 353, 164, 380, 156, 198, 150, 242, 310, 284, 194, 303, 297, 339, 239, 75, 248, 206, 372, 52, 172, 326, 37, 262, 104, 128, 19, 32, 216, 223, 127, 245, 151, 208, 288, 0, 205, 322, 26, 68, 174, 28, 236, 197, 142, 10, 305, 227, 226, 338, 304, 2, 27, 346, 81, 344, 210, 359, 124, 219, 129, 355, 282, 80, 103, 67, 163, 318, 55, 36, 327, 335, 74, 192, 99, 360, 105, 261, 196, 123, 49, 249, 31, 255, 342, 295, 222, 186, 343, 367, 315, 170, 200, 48, 165, 122, 175, 11, 225, 24, 341, 333, 383, 241, 323, 252, 101, 51] + 36: [232, 371, 156, 176, 90, 116, 103, 212, 337, 44, 153, 77, 0, 256, 181, 346, 251, 334, 336, 198, 26, 203, 375, 302, 184, 185, 288, 323, 126, 209, 163, 13, 164, 61, 197, 168, 240, 69, 356, 263, 45, 19, 189, 11, 39, 27, 292, 64, 65, 258, 57, 352, 351, 211, 305, 100, 372, 32, 358, 137, 378, 173, 241, 338, 353, 281, 25, 234, 329, 48, 82, 16, 174, 107, 62, 275, 217, 102, 348, 210, 158, 110, 237, 157, 162, 328, 206, 216, 377, 106, 143, 46, 24, 1, 330, 360, 178, 53, 272, 40, 379, 76, 152, 320, 277, 309, 228, 369, 93, 344, 18, 14, 298, 243, 177, 95, 268, 355, 43, 128, 311, 194, 129, 142, 196, 230, 271, 195, 86, 219, 343, 231, 326, 81, 279, 118, 319, 300, 254, 236, 316, 317, 15, 186, 167, 75, 349, 132, 139, 245, 287, 114, 147, 159, 364, 94, 36, 342, 59, 38, 293, 249, 229, 124, 169, 221, 70, 307, 22, 299, 3, 5, 207, 374, 294, 97, 84, 291, 267, 17, 284, 244, 135, 161, 220, 30, 187, 235, 190, 112, 381, 227, 340, 252, 88, 297, 50, 222, 345, 9, 125, 201, 335, 383, 23, 165, 121, 257, 58, 83, 85, 214, 155, 113, 312, 290, 238, 131, 368, 149, 145, 322, 179, 362, 283, 166, 265, 78, 74, 255, 200, 68, 34, 115, 308, 205, 117, 35, 123, 327, 370, 223, 325, 193, 56, 67, 295, 331, 41, 248, 73, 150, 91, 55, 108, 120, 28, 301, 218, 63, 119, 96, 151, 313, 225, 144, 304, 98, 247, 49, 20, 373, 122, 79, 199, 133, 361, 367, 182, 321, 376, 188, 8, 347, 183, 286, 127, 273, 4, 51, 12, 261, 2, 208, 276, 191, 289, 239, 33, 72, 357, 354, 104, 204, 213, 171, 306, 66, 54, 29, 37, 52, 341, 42, 10, 296, 250, 140, 259, 71, 366, 87, 310, 138, 382, 215, 154, 365, 246, 109, 350, 269, 282, 315, 170, 253, 266, 99, 242, 175, 60, 314, 134, 146, 285, 324, 105, 262, 172, 380, 224, 31, 226, 141, 80, 202, 47, 278, 180, 6, 192, 260, 101, 333, 92, 332, 359, 7, 339, 160, 233, 130, 21, 280, 318, 111, 303, 89, 264, 274, 270, 148, 363, 136] + 37: [218, 248, 195, 153, 354, 247, 224, 197, 204, 72, 232, 117, 275, 296, 352, 356, 201, 75, 251, 28, 226, 263, 99, 288, 40, 328, 108, 361, 188, 191, 287, 302, 351, 15, 331, 189, 325, 155, 138, 280, 180, 241, 244, 54, 336, 286, 261, 239, 268, 323, 76, 223, 59, 216, 66, 225, 171, 77, 284, 51, 332, 116, 258, 312, 45, 321, 89, 32, 132, 295, 8, 346, 200, 149, 222, 205, 242, 199, 257, 37, 79, 215, 207, 269, 152, 44, 196, 208, 81, 124, 212, 35, 324, 4, 370, 84, 364, 341, 301, 193, 161, 329, 209, 13, 229, 335, 322, 264, 303, 227, 33, 115, 338, 10, 347, 53, 377, 238, 23, 219, 60, 314, 93, 74, 240, 43, 289, 106, 245, 145, 190, 3, 373, 221, 141, 340, 160, 181, 166, 214, 184, 25, 246, 146, 174, 179, 211, 68, 97, 126, 133, 41, 16, 342, 143, 127, 357, 267, 164, 144, 206, 367, 279, 103, 249, 20, 230, 220, 294, 113, 344, 64, 50, 372, 362, 24, 355, 176, 233, 376, 34, 122, 315, 318, 307, 83, 21, 378, 175, 62, 282, 111, 109, 273, 156, 65, 52, 306, 139, 319, 382, 7, 353, 304, 85, 173, 192, 381, 87, 374, 310, 360, 11, 266, 159, 276, 114, 243, 309, 95, 30, 18, 148, 151, 29, 73, 61, 231, 272, 80, 260, 157, 57, 56, 274, 291, 210, 137, 82, 186, 58, 349, 131, 105, 217, 379, 154, 140, 78, 345, 320, 330, 183, 297, 36, 98, 167, 254, 308, 262, 2, 26, 120, 70, 86, 213, 255, 46, 234, 9, 198, 5, 0, 292, 185, 235, 337, 278, 250, 163, 90, 298, 359, 27, 91, 358, 142, 236, 311, 327, 125, 129, 71, 19, 333, 6, 305, 94, 182, 259, 313, 1, 104, 172, 63, 165, 177, 17, 135, 339, 96, 300, 22, 158, 285, 162, 47, 348, 290, 343, 375, 368, 228, 203, 49, 256, 317, 121, 102, 69, 128, 150, 12, 350, 281, 31, 270, 293, 363, 118, 371, 100, 365, 253, 299, 38, 169, 147, 366, 194, 14, 136, 237, 92, 326, 187, 55, 271, 110, 170, 48, 123, 178, 277, 316, 88, 383, 283, 252, 168, 107, 380, 39, 334, 112, 134, 101, 130, 42, 202, 369, 67, 265, 119] + 38: [6, 373, 42, 258, 270, 190, 141, 329, 148, 147, 217, 339, 15, 164, 98, 363, 325, 64, 380, 346, 176, 185, 330, 133, 301, 308, 315, 78, 252, 53, 196, 271, 31, 108, 234, 67, 58, 162, 247, 202, 356, 323, 303, 192, 368, 75, 140, 102, 62, 223, 92, 135, 172, 282, 345, 155, 144, 199, 324, 94, 80, 5, 14, 56, 35, 296, 79, 167, 249, 291, 304, 96, 285, 359, 49, 156, 208, 349, 213, 227, 119, 206, 29, 289, 288, 28, 131, 264, 371, 74, 348, 381, 314, 242, 186, 375, 221, 220, 319, 83, 379, 201, 187, 311, 157, 117, 26, 337, 239, 161, 18, 297, 110, 306, 241, 222, 198, 113, 61, 251, 230, 19, 250, 86, 69, 32, 106, 333, 272, 10, 120, 295, 302, 183, 307, 261, 25, 170, 160, 374, 353, 335, 357, 121, 158, 136, 123, 188, 317, 203, 177, 246, 16, 85, 104, 322, 334, 7, 260, 72, 377, 52, 146, 151, 254, 231, 336, 281, 378, 114, 93, 278, 76, 12, 256, 21, 137, 236, 103, 37, 88, 283, 347, 240, 20, 65, 168, 138, 22, 209, 210, 1, 273, 372, 332, 129, 277, 143, 109, 327, 50, 342, 48, 99, 358, 275, 44, 175, 365, 132, 226, 100, 159, 107, 13, 340, 284, 165, 27, 178, 293, 321, 352, 233, 68, 263, 84, 276, 218, 66, 39, 41, 116, 204, 382, 195, 166, 47, 205, 232, 320, 266, 34, 279, 255, 90, 171, 145, 95, 40, 73, 244, 193, 24, 224, 184, 3, 43, 45, 318, 290, 216, 77, 361, 51, 316, 124, 366, 180, 11, 150, 194, 331, 298, 9, 341, 238, 54, 122, 360, 163, 70, 181, 243, 128, 370, 71, 60, 305, 189, 38, 280, 118, 328, 59, 245, 212, 214, 112, 105, 0, 268, 130, 182, 142, 211, 237, 207, 200, 312, 134, 127, 154, 369, 274, 115, 376, 63, 355, 55, 338, 262, 179, 367, 57, 310, 173, 362, 248, 267, 87, 36, 294, 343, 235, 149, 292, 287, 354, 139, 265, 309, 17, 225, 286, 111, 219, 8, 4, 197, 91, 125, 152, 23, 81, 351, 344, 350, 33, 101, 269, 126, 313, 30, 326, 383, 89, 228, 169, 253, 174, 300, 299, 2, 97, 229, 257, 153, 82, 259, 215, 364, 46, 191] + 39: [282, 38, 98, 286, 328, 269, 348, 117, 6, 36, 296, 150, 226, 92, 245, 230, 188, 143, 371, 375, 344, 198, 130, 209, 247, 119, 121, 68, 243, 120, 87, 134, 75, 48, 141, 191, 161, 248, 273, 196, 366, 309, 246, 149, 240, 165, 224, 350, 315, 25, 225, 146, 82, 79, 253, 74, 113, 270, 30, 355, 206, 144, 320, 358, 17, 382, 182, 124, 305, 133, 115, 321, 280, 65, 76, 177, 349, 356, 162, 152, 8, 377, 197, 207, 131, 107, 27, 231, 175, 233, 72, 61, 201, 105, 361, 12, 1, 295, 0, 139, 83, 251, 357, 91, 338, 58, 294, 160, 215, 275, 172, 337, 339, 67, 202, 255, 214, 4, 20, 334, 242, 14, 266, 96, 208, 170, 335, 85, 329, 127, 259, 84, 363, 106, 145, 18, 33, 19, 292, 10, 148, 300, 22, 52, 66, 53, 176, 272, 181, 183, 163, 260, 303, 336, 114, 156, 50, 155, 293, 159, 41, 353, 228, 241, 195, 326, 237, 332, 54, 265, 187, 46, 383, 42, 100, 347, 40, 373, 51, 97, 47, 238, 380, 297, 168, 284, 287, 29, 154, 317, 216, 288, 112, 104, 71, 49, 227, 314, 322, 151, 212, 271, 86, 359, 118, 364, 135, 249, 108, 15, 158, 123, 166, 89, 103, 262, 56, 132, 372, 95, 312, 217, 378, 277, 307, 219, 26, 299, 153, 180, 45, 193, 111, 34, 283, 55, 78, 94, 90, 204, 301, 129, 313, 62, 244, 331, 81, 99, 101, 70, 298, 142, 235, 341, 122, 274, 285, 345, 88, 308, 381, 37, 261, 23, 263, 35, 43, 360, 192, 205, 174, 200, 167, 116, 7, 211, 77, 3, 21, 171, 370, 316, 140, 311, 31, 291, 318, 44, 236, 93, 178, 80, 368, 365, 185, 210, 250, 369, 147, 323, 346, 276, 102, 342, 327, 194, 179, 221, 340, 173, 136, 343, 258, 13, 234, 218, 223, 319, 110, 128, 290, 64, 63, 333, 59, 229, 239, 28, 257, 39, 325, 157, 367, 184, 138, 256, 310, 264, 2, 268, 199, 267, 186, 302, 281, 254, 203, 374, 69, 379, 222, 279, 289, 354, 232, 5, 304, 169, 32, 9, 60, 278, 362, 376, 330, 352, 220, 16, 57, 126, 164, 190, 125, 137, 306, 24, 213, 324, 351, 109, 252, 189, 11, 73] + 40: [31, 191, 334, 383, 127, 94, 373, 25, 362, 264, 150, 171, 119, 78, 13, 194, 4, 146, 376, 35, 149, 248, 342, 117, 358, 367, 55, 110, 88, 324, 294, 84, 238, 366, 196, 102, 95, 222, 169, 217, 138, 113, 192, 203, 353, 300, 20, 22, 52, 193, 183, 159, 249, 46, 187, 195, 307, 302, 151, 245, 281, 147, 309, 109, 333, 377, 251, 379, 157, 352, 272, 144, 215, 36, 219, 340, 232, 349, 273, 201, 304, 322, 153, 348, 97, 308, 296, 221, 111, 66, 206, 58, 116, 363, 234, 83, 179, 24, 12, 255, 21, 365, 228, 274, 85, 199, 271, 371, 374, 339, 48, 164, 364, 106, 34, 2, 298, 140, 381, 105, 15, 213, 378, 136, 73, 47, 62, 61, 100, 45, 279, 311, 256, 347, 82, 315, 170, 172, 259, 123, 252, 285, 354, 176, 190, 236, 326, 68, 145, 286, 184, 33, 260, 270, 38, 346, 188, 141, 59, 9, 361, 163, 39, 343, 124, 331, 212, 5, 132, 269, 289, 253, 231, 185, 290, 262, 57, 211, 63, 131, 254, 243, 49, 268, 19, 382, 356, 32, 86, 226, 370, 314, 130, 368, 266, 360, 207, 261, 237, 74, 323, 165, 277, 107, 177, 154, 282, 317, 14, 135, 26, 350, 375, 42, 246, 72, 71, 108, 158, 161, 90, 337, 89, 91, 112, 355, 218, 101, 8, 318, 162, 316, 156, 178, 143, 6, 96, 335, 233, 312, 125, 250, 332, 118, 67, 137, 87, 65, 200, 186, 160, 229, 287, 338, 327, 288, 276, 53, 210, 98, 69, 122, 121, 152, 319, 64, 129, 28, 166, 128, 30, 293, 275, 79, 244, 329, 247, 181, 17, 198, 223, 208, 295, 225, 242, 310, 115, 134, 284, 81, 202, 11, 306, 369, 216, 76, 357, 321, 313, 93, 303, 70, 99, 41, 235, 51, 174, 104, 240, 23, 278, 29, 75, 258, 239, 241, 168, 305, 10, 359, 283, 1, 16, 133, 139, 40, 155, 180, 267, 292, 27, 325, 114, 120, 126, 103, 297, 336, 328, 56, 204, 301, 60, 224, 182, 80, 227, 167, 220, 18, 372, 3, 77, 37, 142, 320, 50, 344, 380, 214, 265, 175, 351, 43, 189, 280, 44, 257, 148, 341, 299, 291, 230, 345, 54, 7, 0, 209, 92, 173, 263, 330, 205, 197] + 41: [60, 255, 307, 161, 184, 87, 229, 380, 332, 122, 339, 291, 342, 53, 143, 136, 148, 201, 333, 73, 186, 125, 137, 281, 187, 96, 189, 275, 239, 266, 103, 84, 261, 231, 347, 310, 354, 249, 71, 214, 256, 55, 331, 343, 245, 320, 2, 357, 262, 383, 82, 362, 23, 241, 378, 51, 213, 105, 199, 252, 59, 35, 147, 126, 289, 8, 67, 233, 91, 236, 17, 132, 170, 146, 150, 156, 79, 212, 140, 86, 72, 135, 113, 112, 9, 99, 177, 211, 14, 151, 176, 272, 118, 230, 106, 274, 355, 25, 34, 166, 45, 57, 101, 217, 360, 160, 138, 376, 364, 26, 257, 180, 308, 144, 375, 41, 295, 124, 10, 37, 264, 315, 242, 116, 223, 363, 351, 328, 337, 294, 222, 27, 102, 191, 33, 157, 165, 216, 89, 78, 120, 312, 149, 7, 66, 305, 366, 3, 322, 279, 90, 69, 16, 127, 302, 237, 286, 276, 19, 349, 6, 178, 65, 228, 128, 238, 219, 287, 374, 335, 190, 215, 382, 80, 329, 240, 344, 359, 44, 200, 206, 284, 183, 207, 93, 109, 248, 209, 158, 29, 39, 278, 49, 182, 202, 145, 185, 81, 304, 133, 77, 22, 338, 153, 372, 75, 258, 5, 134, 21, 341, 83, 169, 31, 226, 58, 350, 280, 131, 172, 235, 324, 18, 210, 196, 293, 42, 117, 301, 244, 297, 253, 285, 221, 220, 62, 224, 270, 309, 88, 152, 76, 197, 205, 321, 4, 334, 381, 46, 365, 316, 50, 323, 38, 299, 139, 348, 94, 267, 130, 346, 162, 282, 208, 30, 192, 306, 269, 277, 370, 268, 251, 358, 123, 260, 317, 198, 56, 259, 70, 104, 234, 167, 296, 74, 250, 263, 225, 114, 13, 129, 15, 314, 95, 326, 327, 111, 352, 318, 292, 54, 188, 340, 171, 141, 271, 203, 288, 68, 48, 52, 20, 298, 121, 325, 173, 179, 168, 246, 108, 61, 345, 181, 353, 243, 300, 194, 204, 85, 43, 36, 377, 100, 371, 195, 40, 283, 142, 159, 367, 254, 369, 97, 311, 373, 110, 247, 92, 1, 368, 163, 0, 303, 32, 63, 356, 265, 164, 227, 175, 119, 273, 330, 64, 11, 290, 155, 313, 232, 336, 12, 379, 174, 154, 98, 115, 47, 28, 218, 107, 24, 319, 361, 193] + 42: [123, 321, 88, 233, 344, 48, 85, 188, 292, 150, 253, 230, 5, 347, 102, 336, 98, 18, 107, 363, 83, 214, 273, 95, 333, 181, 155, 138, 362, 246, 238, 282, 140, 84, 295, 283, 76, 125, 30, 335, 257, 355, 207, 133, 51, 65, 248, 74, 303, 129, 217, 365, 203, 379, 4, 244, 73, 38, 80, 251, 92, 187, 79, 180, 197, 157, 252, 317, 186, 58, 185, 163, 206, 231, 1, 247, 265, 349, 156, 220, 356, 236, 291, 373, 56, 372, 183, 289, 137, 124, 270, 69, 346, 294, 304, 339, 280, 111, 105, 94, 153, 209, 22, 19, 101, 329, 166, 77, 255, 275, 96, 60, 331, 368, 216, 78, 24, 27, 249, 46, 117, 114, 132, 232, 274, 267, 32, 298, 308, 146, 61, 87, 227, 277, 71, 378, 358, 272, 229, 47, 144, 288, 369, 25, 152, 290, 113, 353, 342, 285, 158, 139, 172, 196, 49, 306, 286, 160, 43, 293, 235, 91, 309, 12, 364, 68, 361, 159, 189, 260, 228, 50, 278, 281, 115, 213, 241, 312, 192, 165, 179, 225, 145, 302, 164, 143, 334, 106, 276, 194, 324, 381, 359, 176, 263, 319, 42, 17, 328, 370, 122, 169, 161, 59, 245, 316, 352, 300, 34, 307, 173, 382, 250, 86, 64, 271, 167, 215, 200, 357, 119, 162, 327, 151, 195, 70, 45, 135, 75, 332, 208, 149, 26, 154, 15, 97, 120, 142, 128, 205, 256, 218, 55, 305, 366, 315, 239, 320, 266, 93, 377, 8, 178, 224, 112, 23, 136, 174, 182, 118, 39, 89, 66, 340, 148, 175, 131, 226, 264, 375, 62, 284, 67, 367, 345, 35, 234, 348, 190, 360, 3, 323, 134, 243, 299, 254, 40, 13, 371, 325, 116, 262, 191, 184, 126, 259, 29, 28, 341, 222, 33, 99, 10, 20, 90, 330, 261, 109, 9, 310, 11, 193, 322, 237, 2, 52, 141, 297, 103, 301, 6, 268, 53, 210, 198, 82, 147, 296, 338, 127, 343, 54, 269, 240, 121, 242, 211, 63, 104, 380, 168, 36, 351, 337, 201, 170, 223, 313, 326, 287, 354, 202, 100, 177, 311, 16, 314, 57, 44, 199, 41, 279, 108, 31, 37, 258, 7, 212, 171, 350, 110, 374, 72, 21, 221, 130, 204, 219, 383, 318, 0, 14, 376, 81] + 43: [377, 141, 61, 33, 78, 270, 214, 293, 180, 209, 26, 311, 89, 179, 121, 358, 199, 166, 19, 176, 104, 310, 376, 325, 153, 371, 284, 198, 318, 154, 148, 313, 242, 79, 112, 10, 278, 295, 233, 352, 321, 307, 292, 91, 276, 320, 257, 213, 161, 221, 150, 44, 63, 329, 223, 103, 94, 336, 108, 296, 219, 81, 197, 54, 304, 367, 258, 5, 246, 241, 184, 328, 344, 35, 46, 227, 256, 163, 317, 118, 92, 222, 360, 1, 303, 84, 45, 52, 365, 312, 158, 162, 34, 106, 115, 8, 205, 272, 43, 82, 298, 65, 363, 235, 338, 308, 288, 266, 178, 211, 93, 4, 217, 85, 151, 381, 234, 383, 119, 340, 332, 291, 274, 337, 216, 18, 204, 369, 62, 69, 322, 253, 319, 113, 186, 251, 138, 51, 244, 260, 0, 294, 232, 302, 171, 23, 315, 32, 40, 379, 48, 305, 248, 188, 196, 9, 374, 249, 88, 155, 53, 309, 382, 333, 60, 130, 200, 206, 14, 262, 343, 152, 239, 181, 98, 28, 250, 22, 76, 192, 73, 122, 159, 264, 100, 378, 68, 277, 273, 110, 144, 7, 359, 364, 372, 142, 290, 13, 57, 345, 347, 323, 170, 191, 127, 355, 220, 135, 285, 287, 226, 169, 182, 37, 128, 21, 36, 168, 105, 97, 203, 147, 228, 123, 12, 238, 165, 261, 83, 269, 231, 201, 282, 160, 90, 80, 354, 267, 208, 125, 134, 140, 326, 55, 271, 189, 275, 194, 236, 324, 86, 99, 132, 42, 314, 95, 327, 167, 29, 137, 50, 362, 212, 373, 3, 59, 297, 210, 346, 268, 366, 20, 280, 72, 289, 356, 207, 202, 300, 193, 143, 120, 341, 175, 173, 334, 41, 350, 87, 49, 71, 39, 67, 74, 156, 283, 380, 330, 6, 102, 149, 195, 146, 230, 101, 77, 47, 25, 353, 64, 187, 245, 229, 218, 252, 349, 136, 351, 30, 263, 224, 58, 157, 265, 27, 240, 17, 185, 114, 342, 306, 259, 111, 361, 139, 370, 255, 237, 129, 375, 190, 164, 177, 335, 368, 299, 339, 247, 70, 183, 2, 38, 24, 243, 16, 286, 357, 133, 316, 96, 75, 225, 254, 131, 66, 145, 107, 116, 117, 56, 109, 11, 301, 281, 126, 215, 174, 279, 31, 15, 331, 124, 172, 348] + 44: [213, 252, 174, 340, 11, 1, 291, 346, 356, 353, 71, 108, 28, 137, 375, 154, 231, 152, 373, 363, 148, 297, 12, 65, 10, 270, 271, 169, 299, 155, 135, 98, 287, 321, 59, 165, 303, 204, 352, 182, 151, 47, 42, 239, 283, 5, 67, 27, 277, 227, 124, 376, 110, 175, 329, 89, 211, 349, 254, 158, 201, 130, 114, 286, 44, 368, 309, 316, 112, 189, 133, 81, 77, 348, 247, 300, 310, 102, 160, 113, 193, 100, 198, 180, 179, 248, 6, 147, 358, 228, 339, 200, 128, 308, 322, 129, 97, 255, 362, 279, 264, 350, 21, 284, 99, 263, 306, 233, 222, 118, 79, 235, 338, 246, 22, 234, 371, 364, 162, 195, 56, 317, 370, 378, 187, 278, 121, 166, 55, 269, 117, 105, 23, 237, 289, 25, 285, 73, 39, 298, 106, 181, 176, 208, 178, 168, 266, 379, 66, 318, 331, 304, 14, 146, 72, 120, 315, 149, 341, 140, 159, 194, 2, 359, 324, 354, 192, 261, 186, 171, 288, 302, 223, 366, 262, 313, 167, 48, 43, 0, 45, 30, 49, 242, 330, 372, 80, 256, 205, 58, 153, 332, 82, 183, 76, 141, 224, 230, 369, 172, 24, 188, 380, 347, 276, 273, 320, 184, 3, 19, 109, 240, 232, 20, 116, 150, 191, 64, 280, 122, 382, 311, 258, 218, 54, 35, 282, 119, 4, 336, 9, 138, 268, 18, 190, 40, 312, 209, 31, 307, 274, 101, 328, 267, 173, 197, 107, 196, 272, 94, 68, 265, 343, 36, 74, 62, 203, 57, 294, 185, 136, 15, 344, 139, 238, 217, 177, 63, 34, 104, 325, 46, 83, 144, 16, 52, 157, 75, 305, 365, 220, 236, 357, 127, 253, 143, 111, 361, 257, 61, 327, 145, 156, 219, 17, 225, 96, 26, 90, 32, 53, 7, 367, 260, 125, 103, 259, 377, 78, 37, 41, 319, 164, 95, 93, 215, 244, 85, 275, 210, 84, 8, 29, 170, 292, 326, 337, 381, 33, 126, 132, 314, 342, 383, 216, 50, 226, 251, 351, 221, 142, 241, 212, 91, 86, 207, 290, 69, 214, 249, 243, 161, 51, 355, 134, 245, 295, 281, 374, 60, 199, 301, 38, 13, 333, 345, 202, 163, 293, 323, 296, 250, 131, 123, 335, 87, 92, 360, 334, 229, 70, 88, 115, 206] + 45: [154, 95, 275, 54, 55, 330, 372, 187, 102, 370, 271, 280, 193, 30, 328, 362, 22, 283, 296, 209, 86, 294, 18, 137, 201, 164, 41, 87, 380, 383, 276, 176, 2, 120, 197, 286, 236, 327, 231, 232, 71, 340, 89, 112, 88, 40, 194, 270, 191, 329, 199, 331, 162, 122, 13, 158, 94, 241, 343, 223, 150, 288, 156, 303, 211, 38, 214, 130, 17, 244, 337, 148, 92, 357, 166, 262, 80, 116, 245, 35, 110, 379, 179, 213, 317, 58, 272, 91, 119, 149, 127, 6, 239, 208, 19, 251, 219, 145, 246, 210, 114, 348, 173, 85, 190, 70, 305, 351, 363, 344, 378, 5, 177, 359, 37, 287, 97, 336, 335, 300, 354, 128, 161, 293, 107, 369, 207, 32, 52, 352, 182, 230, 265, 57, 142, 228, 175, 169, 124, 314, 165, 84, 83, 312, 242, 316, 346, 47, 141, 367, 21, 76, 338, 260, 188, 297, 292, 274, 302, 333, 240, 268, 321, 67, 64, 229, 129, 377, 27, 342, 254, 257, 160, 226, 198, 247, 278, 39, 250, 284, 212, 34, 66, 217, 136, 98, 111, 157, 167, 28, 14, 172, 139, 131, 180, 258, 183, 310, 68, 322, 341, 43, 360, 320, 255, 290, 1, 113, 100, 192, 36, 203, 26, 159, 31, 221, 140, 44, 134, 279, 121, 20, 345, 143, 48, 365, 281, 16, 252, 224, 202, 15, 49, 295, 266, 238, 304, 235, 237, 11, 325, 234, 249, 23, 356, 10, 233, 3, 81, 147, 186, 361, 171, 256, 99, 12, 170, 374, 243, 282, 69, 135, 117, 313, 334, 350, 324, 0, 301, 74, 155, 96, 106, 267, 108, 103, 306, 269, 381, 323, 151, 273, 90, 53, 184, 216, 263, 65, 206, 178, 133, 105, 146, 222, 376, 253, 109, 168, 59, 298, 101, 4, 138, 196, 61, 332, 355, 195, 371, 366, 315, 132, 163, 9, 79, 285, 339, 29, 308, 204, 51, 75, 218, 73, 319, 375, 82, 144, 291, 78, 215, 311, 72, 200, 77, 358, 118, 123, 42, 7, 318, 227, 382, 248, 33, 225, 264, 189, 125, 152, 24, 309, 153, 56, 259, 289, 299, 104, 347, 181, 126, 353, 349, 25, 261, 46, 115, 8, 62, 45, 373, 368, 277, 307, 63, 50, 326, 364, 93, 220, 60, 185, 205, 174] + 46: [354, 129, 352, 101, 113, 97, 154, 358, 321, 130, 98, 42, 259, 250, 71, 127, 43, 132, 123, 100, 350, 325, 336, 61, 247, 96, 230, 6, 35, 177, 11, 19, 62, 268, 335, 190, 213, 212, 117, 60, 138, 333, 262, 251, 288, 88, 122, 178, 355, 52, 305, 149, 45, 377, 23, 153, 257, 234, 292, 295, 274, 179, 273, 242, 248, 261, 116, 244, 276, 79, 118, 5, 326, 172, 133, 337, 156, 215, 55, 205, 73, 30, 18, 285, 283, 223, 145, 99, 363, 137, 94, 341, 296, 22, 349, 27, 64, 106, 346, 340, 210, 199, 72, 260, 187, 92, 125, 206, 287, 39, 83, 186, 232, 342, 159, 126, 54, 84, 112, 167, 382, 320, 203, 214, 195, 51, 233, 317, 351, 299, 360, 294, 162, 21, 343, 217, 120, 300, 315, 49, 119, 281, 36, 379, 201, 284, 253, 314, 155, 136, 33, 139, 322, 323, 192, 222, 171, 196, 141, 74, 267, 20, 258, 182, 47, 184, 1, 148, 329, 264, 121, 4, 324, 109, 66, 68, 209, 266, 147, 370, 24, 338, 103, 302, 376, 365, 359, 189, 270, 151, 135, 236, 25, 34, 44, 316, 56, 146, 78, 114, 238, 176, 124, 41, 144, 381, 357, 277, 278, 81, 371, 31, 200, 180, 220, 293, 194, 221, 241, 286, 191, 204, 46, 8, 313, 16, 9, 53, 95, 245, 2, 115, 90, 32, 310, 29, 216, 383, 252, 356, 207, 166, 160, 254, 380, 110, 169, 301, 344, 348, 105, 28, 275, 163, 373, 185, 193, 364, 255, 85, 0, 108, 3, 82, 311, 142, 75, 367, 104, 111, 312, 161, 240, 17, 158, 304, 40, 353, 374, 228, 372, 91, 280, 65, 59, 26, 14, 347, 368, 239, 319, 224, 303, 69, 157, 361, 150, 272, 290, 219, 131, 265, 89, 37, 263, 306, 13, 375, 229, 226, 243, 237, 227, 271, 140, 58, 231, 38, 63, 246, 211, 298, 143, 202, 249, 332, 164, 12, 334, 282, 198, 318, 174, 107, 181, 134, 152, 10, 76, 102, 80, 168, 362, 48, 369, 188, 218, 93, 328, 269, 297, 345, 309, 307, 173, 366, 70, 87, 330, 225, 256, 183, 57, 378, 235, 165, 197, 170, 327, 339, 289, 128, 291, 86, 15, 7, 208, 67, 331, 308, 50, 77, 175, 279] + 47: [342, 33, 16, 97, 348, 57, 321, 340, 22, 91, 248, 101, 360, 279, 38, 161, 269, 133, 260, 94, 283, 209, 365, 167, 195, 330, 127, 227, 332, 179, 216, 36, 206, 72, 327, 362, 299, 99, 132, 20, 358, 12, 242, 270, 165, 281, 349, 145, 3, 197, 286, 181, 198, 4, 170, 95, 289, 129, 42, 105, 178, 267, 334, 237, 296, 28, 253, 90, 84, 239, 152, 92, 144, 262, 123, 291, 305, 63, 223, 172, 202, 218, 317, 159, 274, 126, 213, 339, 70, 335, 119, 350, 182, 222, 381, 142, 187, 110, 168, 153, 249, 192, 215, 75, 324, 173, 356, 2, 276, 62, 23, 76, 148, 96, 372, 379, 66, 311, 326, 221, 54, 118, 40, 17, 140, 359, 14, 157, 375, 316, 1, 81, 329, 383, 166, 51, 32, 58, 295, 112, 353, 7, 120, 78, 158, 100, 43, 217, 125, 115, 183, 313, 232, 301, 122, 203, 111, 61, 298, 68, 292, 344, 251, 319, 214, 369, 323, 6, 312, 333, 73, 207, 87, 201, 230, 141, 89, 238, 266, 225, 204, 378, 337, 244, 328, 83, 325, 252, 236, 147, 219, 318, 271, 294, 155, 37, 357, 282, 175, 67, 77, 211, 228, 134, 176, 117, 247, 364, 245, 351, 304, 46, 49, 88, 226, 128, 137, 303, 300, 135, 65, 154, 273, 39, 163, 320, 205, 151, 146, 194, 190, 188, 366, 254, 174, 380, 124, 196, 199, 256, 382, 29, 285, 102, 371, 208, 363, 243, 180, 177, 139, 26, 302, 27, 108, 106, 60, 336, 261, 277, 11, 114, 272, 288, 143, 59, 74, 229, 314, 373, 193, 309, 345, 278, 377, 212, 233, 374, 15, 189, 361, 130, 250, 64, 71, 113, 186, 56, 162, 235, 18, 19, 103, 0, 280, 136, 169, 231, 109, 287, 355, 52, 259, 185, 354, 160, 331, 121, 264, 308, 116, 107, 307, 352, 368, 48, 315, 79, 45, 255, 265, 376, 69, 275, 55, 284, 86, 297, 93, 104, 31, 171, 290, 268, 150, 306, 343, 44, 34, 341, 347, 138, 53, 263, 241, 210, 21, 240, 224, 370, 98, 30, 5, 164, 8, 310, 258, 47, 246, 220, 35, 24, 80, 257, 184, 50, 338, 234, 367, 131, 156, 41, 10, 322, 9, 200, 85, 346, 293, 82, 13, 149, 25, 191] + 48: [271, 20, 159, 242, 272, 166, 238, 135, 14, 187, 81, 18, 285, 317, 303, 351, 220, 278, 280, 94, 160, 265, 36, 153, 273, 353, 142, 261, 62, 115, 227, 64, 363, 326, 237, 51, 120, 12, 208, 47, 71, 60, 122, 306, 347, 211, 149, 129, 340, 57, 104, 76, 236, 315, 259, 202, 329, 204, 136, 276, 100, 181, 49, 335, 87, 246, 198, 294, 191, 54, 8, 84, 310, 235, 130, 28, 172, 189, 72, 344, 89, 170, 92, 125, 93, 314, 373, 43, 63, 323, 156, 299, 96, 176, 165, 137, 5, 368, 177, 158, 301, 55, 155, 319, 182, 328, 336, 85, 330, 298, 355, 352, 366, 97, 304, 269, 39, 309, 371, 46, 266, 343, 223, 354, 255, 321, 378, 38, 58, 307, 286, 372, 284, 256, 341, 41, 325, 24, 332, 320, 29, 282, 175, 163, 376, 226, 112, 287, 249, 86, 247, 35, 207, 297, 379, 318, 111, 348, 168, 151, 258, 157, 215, 119, 333, 296, 337, 114, 9, 101, 290, 313, 264, 167, 154, 152, 180, 205, 257, 31, 241, 22, 75, 369, 183, 334, 98, 68, 277, 105, 2, 308, 138, 17, 268, 253, 186, 375, 148, 345, 228, 370, 367, 197, 240, 342, 80, 275, 203, 262, 338, 13, 23, 209, 188, 222, 78, 239, 65, 263, 99, 145, 251, 91, 121, 161, 316, 95, 16, 50, 377, 350, 362, 169, 70, 214, 110, 199, 219, 331, 128, 267, 45, 77, 270, 103, 193, 73, 232, 212, 245, 88, 224, 79, 195, 218, 292, 221, 134, 42, 365, 364, 248, 361, 140, 254, 52, 131, 132, 295, 4, 179, 143, 147, 358, 19, 233, 324, 40, 11, 229, 33, 206, 383, 339, 106, 359, 1, 311, 133, 281, 288, 144, 312, 107, 194, 109, 374, 25, 380, 357, 113, 0, 59, 162, 37, 174, 127, 360, 201, 260, 250, 118, 283, 291, 216, 230, 141, 117, 164, 139, 56, 346, 146, 15, 244, 48, 213, 83, 6, 356, 200, 124, 349, 10, 53, 116, 279, 26, 381, 69, 382, 293, 302, 234, 7, 185, 173, 305, 225, 231, 21, 252, 82, 66, 126, 178, 300, 184, 30, 102, 3, 34, 90, 210, 44, 192, 171, 74, 32, 190, 108, 289, 123, 150, 274, 322, 61, 27, 67, 327, 243, 196, 217] + 49: [302, 370, 283, 298, 268, 239, 169, 249, 179, 367, 104, 177, 342, 97, 189, 19, 129, 68, 309, 144, 232, 135, 71, 217, 321, 338, 58, 332, 345, 313, 133, 258, 50, 376, 103, 54, 73, 198, 158, 369, 13, 115, 35, 354, 99, 375, 317, 252, 180, 28, 310, 45, 360, 289, 95, 238, 118, 255, 205, 149, 343, 278, 7, 47, 43, 72, 113, 14, 364, 231, 145, 288, 234, 121, 23, 56, 173, 212, 314, 186, 307, 78, 235, 109, 322, 379, 273, 83, 84, 204, 229, 98, 193, 245, 227, 200, 155, 32, 187, 374, 218, 242, 228, 136, 324, 362, 290, 146, 17, 62, 241, 65, 134, 295, 137, 102, 101, 247, 358, 31, 59, 382, 230, 272, 110, 339, 194, 280, 219, 40, 248, 125, 246, 148, 81, 170, 195, 55, 48, 383, 326, 21, 29, 222, 66, 107, 323, 224, 261, 30, 79, 264, 80, 207, 86, 355, 296, 346, 380, 36, 46, 33, 166, 152, 0, 203, 119, 64, 331, 262, 359, 275, 5, 183, 372, 260, 226, 126, 251, 93, 201, 311, 274, 185, 171, 111, 12, 361, 336, 352, 373, 106, 199, 293, 327, 250, 225, 208, 161, 27, 191, 330, 25, 344, 305, 174, 182, 366, 329, 301, 87, 88, 26, 349, 168, 350, 297, 381, 365, 371, 6, 94, 299, 16, 181, 22, 276, 153, 378, 190, 141, 267, 15, 85, 132, 256, 162, 254, 244, 123, 184, 259, 34, 150, 140, 220, 8, 70, 294, 257, 127, 243, 315, 52, 74, 154, 142, 316, 263, 90, 368, 188, 237, 3, 341, 270, 9, 286, 206, 4, 49, 128, 112, 37, 335, 89, 214, 221, 11, 44, 284, 215, 96, 337, 39, 167, 285, 42, 202, 164, 266, 213, 156, 53, 175, 18, 157, 108, 334, 196, 192, 159, 143, 92, 82, 172, 223, 10, 325, 51, 356, 147, 304, 120, 306, 38, 233, 303, 277, 61, 319, 105, 77, 281, 160, 287, 363, 20, 122, 320, 1, 138, 240, 131, 69, 211, 209, 353, 197, 91, 178, 76, 351, 75, 114, 117, 236, 271, 130, 340, 318, 216, 377, 328, 63, 67, 282, 357, 24, 347, 269, 100, 312, 333, 253, 176, 41, 292, 139, 2, 210, 60, 151, 308, 265, 57, 163, 165, 116, 291, 279, 124, 348, 300] + 50: [49, 168, 248, 269, 5, 185, 203, 300, 6, 331, 372, 344, 116, 339, 306, 368, 245, 234, 70, 2, 55, 103, 264, 83, 159, 341, 253, 286, 380, 378, 35, 181, 233, 16, 127, 226, 227, 199, 336, 171, 101, 209, 265, 374, 65, 330, 364, 93, 256, 14, 214, 75, 282, 111, 194, 36, 177, 117, 187, 113, 17, 340, 382, 329, 107, 106, 285, 143, 59, 64, 179, 230, 232, 114, 325, 313, 34, 128, 178, 37, 12, 267, 51, 15, 354, 294, 112, 155, 263, 254, 73, 307, 219, 291, 258, 377, 102, 315, 366, 350, 145, 360, 289, 161, 39, 151, 280, 30, 367, 381, 92, 326, 72, 154, 290, 324, 98, 115, 120, 241, 192, 352, 162, 361, 105, 9, 311, 124, 165, 370, 216, 158, 345, 66, 90, 293, 281, 314, 202, 207, 206, 20, 257, 276, 268, 191, 250, 164, 220, 152, 22, 122, 189, 312, 166, 332, 87, 163, 52, 355, 11, 244, 4, 126, 323, 221, 95, 260, 86, 376, 369, 38, 347, 96, 351, 298, 156, 184, 19, 78, 40, 246, 318, 337, 228, 91, 200, 63, 251, 174, 247, 278, 1, 383, 56, 295, 183, 109, 363, 150, 210, 287, 121, 236, 211, 180, 142, 205, 54, 255, 319, 356, 79, 85, 82, 99, 321, 271, 359, 45, 204, 169, 333, 139, 335, 196, 362, 74, 160, 243, 322, 144, 108, 132, 31, 305, 237, 173, 365, 50, 24, 137, 130, 58, 129, 57, 328, 349, 342, 123, 217, 334, 138, 60, 147, 261, 224, 272, 61, 273, 317, 213, 157, 167, 327, 27, 81, 353, 140, 242, 88, 141, 357, 288, 186, 316, 304, 239, 175, 149, 197, 71, 259, 176, 222, 190, 104, 8, 153, 235, 3, 348, 28, 100, 373, 62, 125, 76, 292, 277, 215, 89, 133, 67, 240, 320, 308, 297, 182, 225, 131, 46, 48, 188, 249, 146, 80, 275, 193, 94, 343, 375, 299, 301, 41, 198, 309, 42, 201, 44, 379, 231, 303, 136, 118, 283, 29, 26, 358, 119, 32, 135, 212, 371, 7, 208, 296, 270, 252, 238, 77, 218, 310, 172, 134, 43, 266, 21, 279, 195, 25, 53, 33, 0, 229, 69, 68, 262, 97, 18, 274, 338, 284, 10, 47, 110, 346, 13, 170, 223, 302, 148, 84, 23] + 51: [102, 334, 124, 329, 382, 216, 8, 48, 7, 85, 371, 105, 244, 92, 263, 240, 305, 243, 4, 175, 332, 249, 179, 155, 24, 294, 33, 299, 40, 205, 132, 20, 101, 74, 32, 167, 83, 172, 120, 128, 174, 49, 117, 309, 225, 290, 318, 29, 241, 195, 286, 171, 278, 260, 342, 380, 97, 28, 297, 81, 280, 107, 84, 13, 331, 339, 27, 296, 93, 159, 291, 154, 287, 119, 26, 222, 177, 237, 118, 1, 82, 281, 188, 338, 285, 193, 123, 238, 370, 269, 302, 156, 125, 377, 68, 274, 186, 313, 219, 60, 169, 206, 37, 163, 221, 315, 70, 327, 165, 326, 293, 71, 50, 149, 112, 55, 242, 15, 202, 217, 189, 140, 264, 69, 314, 77, 359, 198, 35, 324, 350, 347, 30, 213, 307, 91, 272, 194, 248, 185, 266, 267, 22, 158, 62, 200, 284, 173, 122, 161, 75, 311, 292, 144, 98, 368, 176, 143, 192, 316, 383, 376, 41, 86, 245, 321, 61, 76, 137, 224, 373, 147, 145, 254, 87, 183, 251, 374, 191, 232, 230, 25, 317, 226, 265, 187, 355, 38, 363, 184, 131, 351, 304, 247, 204, 301, 268, 369, 150, 136, 6, 341, 170, 306, 233, 289, 90, 229, 80, 168, 199, 378, 276, 231, 256, 45, 12, 106, 110, 246, 210, 320, 201, 354, 330, 228, 308, 146, 115, 196, 52, 43, 19, 365, 78, 250, 379, 310, 236, 2, 64, 257, 270, 277, 23, 53, 360, 288, 141, 358, 66, 212, 152, 346, 190, 94, 18, 364, 3, 100, 255, 381, 261, 138, 258, 72, 375, 111, 303, 283, 88, 312, 357, 209, 362, 220, 157, 51, 279, 262, 139, 214, 361, 133, 207, 54, 109, 142, 99, 113, 336, 79, 95, 166, 218, 253, 73, 333, 239, 353, 108, 234, 11, 116, 223, 227, 197, 103, 39, 356, 36, 181, 208, 153, 16, 325, 180, 178, 47, 340, 252, 182, 335, 349, 104, 89, 59, 134, 367, 44, 298, 345, 0, 160, 135, 121, 17, 337, 372, 271, 235, 328, 10, 126, 162, 34, 164, 344, 46, 203, 300, 127, 366, 42, 63, 31, 151, 319, 57, 348, 322, 282, 275, 211, 129, 295, 130, 323, 114, 5, 352, 67, 65, 343, 9, 259, 56, 96, 215, 14, 148, 58, 273, 21] + 52: [7, 357, 288, 369, 137, 168, 321, 295, 296, 163, 10, 88, 363, 303, 250, 237, 90, 304, 70, 153, 94, 201, 264, 156, 381, 124, 130, 161, 92, 286, 24, 6, 232, 144, 305, 121, 361, 111, 226, 287, 112, 352, 382, 14, 265, 135, 348, 375, 186, 345, 184, 222, 103, 246, 57, 377, 116, 281, 284, 3, 343, 314, 47, 378, 301, 253, 203, 244, 46, 40, 110, 36, 34, 307, 206, 236, 362, 177, 11, 127, 219, 132, 79, 300, 337, 313, 80, 145, 338, 324, 255, 9, 229, 38, 335, 42, 97, 319, 189, 68, 371, 72, 309, 231, 100, 29, 118, 367, 240, 329, 260, 283, 274, 75, 249, 251, 196, 122, 162, 1, 125, 320, 358, 327, 108, 52, 172, 141, 33, 275, 333, 252, 60, 316, 35, 317, 117, 220, 365, 65, 170, 202, 18, 199, 228, 171, 140, 225, 150, 379, 120, 211, 129, 61, 160, 32, 187, 350, 147, 242, 290, 188, 200, 66, 292, 299, 280, 353, 25, 95, 224, 138, 157, 325, 328, 308, 76, 26, 270, 262, 91, 176, 159, 85, 89, 318, 268, 282, 355, 257, 370, 181, 183, 74, 53, 58, 131, 69, 102, 192, 298, 306, 214, 209, 139, 22, 356, 133, 279, 23, 49, 148, 126, 175, 5, 310, 323, 216, 346, 83, 285, 178, 55, 114, 273, 383, 360, 155, 20, 93, 364, 347, 315, 238, 109, 207, 19, 218, 374, 106, 174, 63, 217, 64, 339, 56, 235, 78, 190, 230, 194, 331, 311, 166, 247, 341, 123, 136, 330, 16, 51, 62, 223, 39, 182, 13, 107, 266, 2, 169, 54, 359, 31, 67, 326, 84, 277, 234, 210, 267, 215, 180, 342, 179, 351, 81, 17, 113, 165, 99, 334, 30, 87, 82, 205, 115, 48, 143, 173, 101, 269, 197, 293, 227, 256, 349, 278, 119, 152, 86, 366, 21, 151, 332, 372, 336, 221, 368, 198, 128, 263, 259, 208, 254, 8, 243, 191, 185, 27, 43, 158, 376, 212, 312, 373, 28, 71, 239, 41, 248, 12, 213, 77, 167, 289, 261, 105, 276, 271, 193, 302, 380, 245, 294, 164, 272, 149, 204, 98, 340, 104, 354, 37, 73, 291, 297, 96, 258, 50, 44, 233, 154, 344, 322, 146, 134, 195, 15, 45, 0, 4, 142, 241, 59] + 53: [110, 335, 83, 354, 312, 303, 147, 223, 102, 17, 82, 263, 316, 36, 18, 307, 344, 177, 84, 321, 286, 98, 272, 265, 350, 162, 295, 297, 243, 175, 136, 122, 216, 357, 28, 44, 315, 298, 310, 199, 55, 331, 135, 151, 267, 48, 7, 362, 73, 8, 176, 225, 157, 203, 112, 169, 271, 47, 270, 202, 87, 338, 5, 212, 171, 241, 104, 278, 30, 138, 99, 374, 279, 294, 129, 174, 168, 214, 67, 191, 125, 37, 121, 285, 117, 115, 235, 337, 139, 305, 242, 255, 79, 143, 210, 182, 379, 352, 186, 134, 194, 148, 320, 32, 363, 65, 341, 183, 95, 24, 229, 381, 164, 340, 9, 39, 91, 378, 181, 165, 4, 224, 146, 226, 66, 250, 2, 351, 239, 85, 12, 348, 205, 19, 56, 133, 49, 188, 318, 375, 128, 248, 114, 244, 206, 370, 158, 368, 119, 156, 78, 333, 50, 283, 3, 236, 97, 116, 130, 185, 299, 189, 246, 161, 22, 249, 77, 11, 38, 94, 180, 240, 126, 317, 120, 69, 163, 276, 346, 230, 21, 292, 35, 184, 328, 101, 187, 27, 71, 96, 51, 355, 75, 247, 132, 166, 217, 383, 309, 25, 68, 376, 6, 254, 41, 218, 201, 137, 160, 256, 208, 54, 192, 107, 140, 124, 14, 13, 92, 273, 60, 367, 342, 266, 197, 330, 178, 359, 284, 252, 62, 105, 291, 106, 40, 172, 45, 89, 377, 211, 222, 332, 195, 209, 198, 361, 275, 257, 365, 274, 336, 59, 64, 281, 207, 10, 29, 58, 76, 233, 34, 245, 290, 364, 345, 149, 16, 103, 170, 74, 159, 323, 258, 261, 231, 262, 20, 237, 200, 108, 234, 369, 329, 313, 167, 0, 153, 93, 287, 308, 145, 302, 142, 26, 52, 238, 227, 127, 88, 215, 269, 301, 371, 152, 33, 264, 63, 304, 113, 80, 190, 61, 296, 280, 23, 347, 118, 70, 372, 81, 220, 277, 204, 326, 111, 219, 31, 259, 15, 144, 253, 57, 380, 1, 343, 123, 360, 324, 46, 349, 319, 221, 228, 306, 72, 373, 293, 311, 358, 322, 131, 339, 366, 282, 141, 179, 260, 327, 43, 154, 109, 356, 232, 325, 196, 173, 53, 86, 334, 155, 268, 353, 288, 382, 251, 42, 300, 289, 100, 150, 193, 90, 213, 314] + 54: [294, 313, 244, 152, 354, 377, 58, 210, 321, 285, 59, 297, 36, 134, 202, 362, 205, 342, 141, 160, 320, 382, 165, 266, 363, 254, 379, 357, 301, 260, 219, 375, 228, 232, 225, 316, 333, 63, 23, 234, 259, 166, 193, 140, 256, 303, 55, 145, 286, 187, 127, 159, 86, 113, 129, 191, 332, 18, 167, 125, 352, 43, 148, 112, 79, 39, 9, 238, 245, 334, 175, 194, 253, 329, 164, 279, 381, 80, 360, 233, 30, 70, 378, 177, 72, 105, 28, 179, 364, 278, 128, 162, 69, 263, 241, 29, 262, 338, 109, 216, 214, 372, 108, 3, 251, 15, 268, 298, 118, 249, 312, 65, 383, 2, 270, 8, 359, 208, 60, 52, 339, 287, 306, 299, 150, 337, 221, 265, 54, 91, 81, 231, 353, 261, 264, 358, 183, 1, 49, 288, 24, 366, 74, 227, 132, 89, 296, 34, 209, 186, 325, 62, 90, 32, 369, 82, 314, 271, 77, 87, 137, 170, 277, 51, 102, 195, 350, 104, 302, 224, 120, 41, 42, 117, 335, 25, 142, 153, 213, 322, 107, 229, 136, 13, 344, 178, 37, 88, 139, 101, 367, 374, 11, 217, 189, 308, 291, 174, 246, 6, 12, 236, 319, 85, 84, 64, 146, 66, 309, 203, 341, 92, 0, 218, 168, 340, 276, 155, 258, 17, 345, 283, 185, 172, 161, 111, 20, 138, 21, 171, 182, 7, 93, 211, 349, 207, 307, 315, 255, 239, 257, 284, 356, 119, 328, 280, 215, 326, 151, 123, 126, 68, 281, 10, 243, 198, 331, 22, 184, 61, 106, 274, 67, 324, 98, 53, 240, 121, 295, 361, 130, 305, 31, 97, 343, 376, 242, 103, 176, 99, 149, 122, 371, 56, 317, 368, 100, 212, 95, 27, 196, 135, 199, 50, 380, 282, 157, 248, 311, 96, 154, 163, 75, 4, 35, 73, 237, 46, 204, 293, 116, 226, 115, 230, 370, 48, 275, 83, 147, 323, 220, 44, 223, 330, 192, 201, 26, 272, 327, 94, 247, 273, 14, 351, 188, 222, 16, 289, 71, 169, 250, 197, 348, 47, 76, 38, 156, 365, 304, 310, 124, 173, 269, 144, 110, 206, 235, 252, 347, 318, 5, 133, 290, 158, 45, 190, 40, 19, 143, 267, 181, 292, 131, 346, 180, 336, 300, 57, 33, 373, 355, 114, 78, 200] + 55: [65, 303, 56, 149, 166, 16, 1, 377, 331, 5, 13, 259, 312, 61, 52, 172, 300, 163, 220, 178, 135, 21, 83, 359, 154, 63, 219, 238, 355, 254, 352, 73, 152, 40, 250, 93, 33, 366, 203, 0, 110, 155, 294, 367, 142, 261, 24, 305, 146, 7, 126, 30, 328, 182, 46, 316, 307, 375, 231, 237, 260, 99, 295, 23, 76, 32, 122, 156, 140, 167, 141, 321, 211, 216, 226, 327, 214, 134, 361, 71, 276, 280, 100, 242, 208, 247, 356, 15, 139, 181, 378, 338, 379, 222, 244, 215, 98, 60, 2, 381, 309, 202, 383, 70, 246, 189, 161, 173, 184, 358, 257, 365, 324, 193, 97, 179, 266, 14, 57, 285, 106, 272, 75, 113, 176, 48, 232, 221, 88, 209, 319, 8, 101, 349, 354, 87, 337, 255, 217, 262, 320, 197, 313, 25, 347, 243, 86, 227, 159, 200, 45, 94, 322, 130, 28, 304, 192, 36, 150, 89, 212, 284, 371, 286, 19, 132, 158, 58, 174, 279, 308, 90, 121, 44, 292, 115, 296, 291, 369, 145, 332, 265, 171, 85, 258, 143, 225, 169, 199, 59, 196, 362, 270, 293, 271, 67, 185, 333, 164, 339, 278, 290, 102, 334, 29, 39, 372, 195, 344, 357, 137, 37, 253, 275, 82, 205, 348, 81, 116, 78, 165, 119, 329, 62, 127, 251, 330, 105, 187, 343, 38, 79, 18, 229, 133, 317, 117, 283, 128, 204, 20, 326, 103, 35, 370, 302, 183, 325, 249, 4, 9, 341, 363, 77, 198, 364, 175, 301, 68, 107, 228, 351, 264, 148, 380, 186, 80, 6, 43, 342, 11, 340, 289, 160, 91, 233, 151, 353, 274, 124, 210, 311, 288, 310, 69, 118, 147, 108, 281, 323, 382, 136, 252, 218, 368, 54, 345, 188, 55, 248, 72, 241, 112, 138, 131, 273, 373, 360, 282, 10, 336, 31, 267, 170, 177, 299, 234, 206, 74, 41, 194, 256, 268, 125, 240, 287, 22, 42, 190, 239, 224, 376, 153, 144, 104, 335, 235, 191, 123, 27, 180, 315, 277, 263, 314, 297, 84, 111, 245, 346, 53, 92, 95, 236, 66, 168, 201, 109, 3, 96, 26, 298, 17, 47, 350, 306, 12, 49, 64, 114, 269, 213, 230, 50, 157, 51, 318, 162, 374, 129, 34, 223, 207, 120] + 56: [240, 49, 71, 13, 93, 83, 212, 238, 309, 232, 24, 301, 35, 176, 257, 315, 173, 131, 109, 192, 234, 180, 54, 152, 253, 265, 141, 101, 283, 100, 307, 207, 190, 132, 204, 353, 148, 245, 65, 129, 105, 230, 202, 90, 22, 110, 287, 142, 53, 343, 292, 75, 168, 209, 313, 284, 282, 300, 4, 179, 136, 10, 305, 252, 255, 314, 250, 357, 312, 352, 229, 360, 44, 251, 223, 147, 137, 329, 206, 135, 325, 319, 62, 297, 302, 111, 218, 346, 32, 355, 124, 373, 344, 222, 41, 45, 241, 30, 150, 221, 187, 73, 113, 181, 112, 349, 15, 134, 21, 60, 58, 333, 289, 139, 296, 149, 50, 367, 37, 208, 294, 5, 363, 88, 14, 291, 81, 172, 162, 138, 161, 368, 320, 235, 275, 153, 336, 262, 78, 130, 120, 25, 61, 7, 231, 334, 188, 69, 201, 327, 126, 323, 8, 0, 337, 175, 197, 94, 217, 269, 366, 48, 76, 29, 103, 115, 74, 174, 364, 163, 249, 225, 102, 33, 91, 186, 338, 20, 299, 290, 170, 3, 34, 272, 316, 248, 68, 375, 57, 215, 157, 280, 356, 116, 372, 158, 219, 237, 382, 189, 59, 214, 303, 273, 123, 151, 42, 6, 127, 210, 247, 80, 119, 118, 358, 26, 220, 322, 40, 177, 140, 9, 351, 216, 236, 160, 133, 342, 196, 293, 226, 268, 359, 341, 298, 347, 63, 354, 381, 17, 279, 195, 264, 239, 72, 311, 317, 104, 36, 276, 2, 166, 52, 335, 326, 295, 244, 79, 258, 345, 77, 46, 288, 380, 362, 167, 191, 106, 321, 144, 159, 194, 87, 28, 378, 377, 331, 117, 155, 310, 165, 328, 143, 70, 200, 85, 171, 318, 89, 184, 260, 82, 23, 224, 324, 121, 1, 266, 145, 12, 339, 203, 185, 38, 308, 182, 274, 108, 254, 211, 246, 379, 39, 125, 278, 281, 242, 306, 16, 98, 369, 31, 370, 199, 114, 97, 270, 18, 84, 233, 27, 99, 376, 277, 183, 55, 128, 11, 169, 107, 340, 332, 198, 178, 164, 304, 96, 285, 330, 256, 383, 286, 213, 271, 350, 348, 64, 146, 51, 261, 243, 156, 361, 92, 259, 154, 374, 19, 228, 371, 267, 43, 95, 193, 205, 66, 56, 263, 86, 122, 47, 365, 227, 67] + 57: [231, 356, 177, 64, 298, 88, 165, 211, 311, 273, 180, 133, 68, 67, 173, 270, 13, 340, 192, 63, 19, 262, 66, 376, 254, 94, 53, 106, 167, 338, 57, 163, 237, 37, 156, 100, 95, 23, 333, 250, 195, 127, 206, 284, 45, 360, 221, 301, 137, 277, 243, 109, 223, 295, 184, 141, 190, 364, 279, 319, 151, 171, 378, 49, 230, 59, 239, 86, 46, 96, 312, 149, 89, 306, 6, 10, 282, 56, 296, 117, 209, 103, 346, 226, 123, 41, 339, 252, 20, 172, 50, 175, 36, 210, 343, 372, 159, 204, 0, 35, 307, 321, 330, 222, 77, 3, 248, 170, 150, 122, 186, 203, 181, 166, 244, 99, 124, 75, 105, 292, 74, 259, 220, 128, 373, 314, 281, 129, 158, 21, 238, 32, 8, 382, 361, 176, 255, 48, 38, 17, 102, 315, 245, 131, 113, 347, 278, 207, 188, 266, 93, 43, 60, 342, 240, 299, 134, 1, 12, 302, 377, 54, 52, 355, 219, 81, 213, 275, 228, 326, 2, 272, 344, 73, 304, 84, 51, 16, 286, 114, 33, 145, 369, 263, 349, 110, 138, 214, 351, 34, 202, 82, 152, 111, 25, 233, 322, 318, 268, 118, 4, 362, 61, 283, 98, 135, 80, 336, 39, 142, 274, 62, 332, 183, 218, 216, 9, 121, 198, 276, 297, 235, 147, 160, 90, 31, 187, 40, 65, 291, 139, 241, 370, 144, 379, 229, 76, 97, 247, 174, 288, 331, 320, 205, 69, 289, 78, 371, 87, 363, 317, 316, 323, 309, 310, 313, 70, 381, 132, 280, 212, 305, 234, 264, 157, 261, 265, 335, 83, 29, 169, 253, 154, 354, 14, 101, 185, 325, 7, 143, 140, 208, 334, 357, 352, 285, 200, 215, 146, 197, 26, 27, 350, 85, 368, 324, 161, 257, 365, 72, 359, 24, 115, 91, 380, 71, 194, 164, 258, 107, 15, 126, 18, 108, 148, 136, 42, 341, 28, 224, 269, 199, 119, 366, 201, 287, 353, 196, 329, 374, 267, 308, 358, 193, 116, 348, 104, 130, 155, 294, 92, 179, 246, 300, 162, 11, 383, 345, 120, 242, 47, 178, 30, 375, 328, 112, 5, 189, 249, 260, 79, 125, 217, 44, 303, 232, 251, 153, 227, 271, 58, 55, 290, 182, 367, 168, 22, 236, 225, 191, 337, 256, 293, 327] + 58: [377, 354, 253, 64, 286, 23, 363, 134, 109, 186, 364, 369, 209, 317, 201, 38, 335, 32, 233, 215, 117, 240, 165, 184, 208, 112, 66, 16, 222, 183, 152, 71, 54, 2, 197, 328, 41, 287, 342, 37, 225, 302, 278, 140, 310, 115, 164, 195, 77, 281, 13, 368, 319, 239, 246, 357, 343, 304, 135, 349, 258, 358, 142, 144, 108, 62, 159, 362, 84, 330, 361, 173, 220, 379, 256, 67, 356, 72, 147, 308, 123, 193, 378, 383, 91, 99, 264, 111, 376, 180, 154, 53, 150, 355, 17, 336, 366, 146, 307, 50, 90, 322, 219, 33, 149, 341, 125, 21, 260, 381, 65, 118, 169, 172, 80, 88, 158, 324, 35, 204, 56, 314, 217, 92, 374, 250, 63, 130, 42, 15, 87, 292, 127, 326, 97, 206, 221, 318, 30, 131, 138, 212, 51, 95, 245, 31, 177, 351, 85, 68, 348, 333, 12, 57, 176, 101, 268, 100, 244, 346, 9, 285, 306, 367, 365, 370, 294, 166, 187, 156, 277, 275, 207, 320, 271, 153, 234, 55, 148, 86, 372, 257, 43, 224, 272, 121, 74, 20, 89, 58, 371, 296, 126, 69, 344, 360, 248, 288, 242, 216, 312, 129, 347, 375, 1, 132, 167, 196, 185, 289, 45, 323, 228, 162, 223, 168, 98, 194, 36, 205, 241, 298, 262, 124, 5, 352, 218, 261, 182, 291, 338, 382, 202, 269, 83, 200, 113, 295, 252, 6, 270, 143, 114, 49, 7, 141, 39, 230, 104, 190, 273, 316, 191, 139, 259, 160, 103, 4, 284, 82, 29, 243, 157, 137, 14, 10, 350, 161, 179, 18, 301, 345, 44, 255, 325, 290, 59, 136, 75, 163, 300, 340, 60, 128, 25, 70, 353, 181, 359, 283, 79, 380, 96, 151, 34, 203, 236, 303, 254, 94, 315, 280, 214, 329, 331, 265, 170, 313, 237, 339, 266, 174, 93, 122, 238, 263, 3, 226, 274, 119, 251, 311, 76, 229, 133, 27, 48, 105, 28, 107, 327, 46, 24, 110, 282, 19, 81, 22, 40, 210, 61, 227, 211, 73, 192, 116, 199, 0, 26, 106, 235, 8, 78, 231, 293, 321, 332, 267, 279, 334, 305, 232, 175, 178, 276, 120, 102, 189, 297, 145, 373, 337, 299, 47, 198, 249, 247, 11, 52, 155, 213, 171, 188, 309] + 59: [170, 293, 300, 244, 164, 105, 221, 379, 35, 261, 114, 222, 20, 335, 291, 349, 126, 176, 269, 104, 32, 108, 347, 375, 313, 338, 334, 307, 130, 213, 25, 326, 242, 52, 186, 208, 143, 81, 165, 255, 254, 110, 216, 277, 286, 228, 360, 215, 123, 33, 151, 209, 304, 302, 348, 294, 137, 26, 21, 249, 279, 127, 358, 231, 378, 211, 271, 8, 357, 88, 68, 122, 182, 289, 89, 376, 290, 150, 155, 34, 203, 70, 84, 288, 40, 382, 0, 53, 368, 287, 369, 318, 47, 119, 361, 99, 272, 85, 383, 46, 292, 373, 248, 259, 158, 233, 252, 377, 2, 141, 328, 56, 145, 325, 61, 354, 102, 74, 156, 188, 59, 42, 60, 39, 263, 112, 306, 212, 13, 16, 352, 238, 58, 173, 280, 157, 134, 321, 124, 97, 237, 163, 310, 154, 312, 50, 214, 10, 196, 273, 45, 218, 356, 178, 100, 174, 220, 90, 206, 330, 336, 333, 17, 265, 24, 205, 116, 139, 38, 18, 142, 234, 153, 245, 103, 270, 363, 48, 243, 41, 91, 80, 78, 380, 256, 83, 121, 276, 190, 207, 267, 189, 364, 199, 95, 282, 367, 219, 149, 191, 172, 14, 296, 315, 87, 240, 166, 109, 144, 247, 180, 301, 31, 55, 235, 125, 12, 250, 353, 342, 316, 308, 82, 257, 262, 332, 236, 183, 9, 115, 345, 260, 253, 136, 117, 230, 194, 343, 167, 79, 229, 113, 299, 355, 241, 371, 63, 140, 225, 184, 297, 131, 324, 162, 344, 295, 168, 72, 138, 171, 1, 350, 3, 351, 366, 197, 274, 29, 223, 92, 19, 185, 362, 98, 51, 5, 66, 76, 246, 107, 128, 111, 177, 217, 319, 49, 298, 227, 327, 36, 73, 320, 340, 317, 329, 23, 120, 187, 281, 37, 284, 129, 193, 118, 44, 11, 71, 161, 54, 169, 341, 27, 226, 6, 94, 372, 175, 311, 266, 198, 64, 30, 370, 93, 365, 285, 67, 181, 62, 275, 283, 106, 57, 305, 77, 268, 200, 195, 224, 7, 232, 339, 160, 86, 28, 322, 147, 148, 210, 337, 346, 201, 381, 278, 179, 309, 359, 22, 264, 4, 75, 314, 331, 146, 204, 258, 135, 374, 202, 251, 65, 152, 303, 323, 15, 101, 133, 132, 69, 159, 192, 43, 96, 239] + 60: [268, 239, 360, 39, 241, 2, 161, 197, 238, 279, 355, 178, 113, 66, 110, 253, 138, 175, 0, 378, 242, 325, 333, 201, 254, 217, 307, 244, 133, 363, 330, 132, 134, 99, 332, 341, 61, 145, 31, 129, 159, 73, 338, 324, 312, 150, 288, 62, 313, 185, 223, 193, 172, 107, 40, 155, 44, 323, 1, 71, 164, 130, 365, 177, 49, 96, 352, 271, 196, 275, 340, 168, 121, 83, 149, 88, 46, 81, 263, 296, 101, 151, 295, 245, 136, 54, 103, 53, 111, 281, 26, 286, 290, 13, 301, 22, 335, 212, 165, 298, 36, 143, 8, 322, 104, 5, 25, 34, 353, 370, 148, 305, 93, 315, 262, 251, 272, 250, 280, 63, 381, 316, 297, 115, 123, 140, 211, 265, 92, 225, 229, 331, 361, 228, 214, 207, 328, 261, 213, 190, 380, 191, 321, 89, 219, 351, 311, 300, 18, 27, 334, 91, 260, 359, 362, 125, 371, 227, 69, 318, 208, 17, 267, 329, 372, 33, 375, 79, 57, 184, 248, 4, 348, 345, 174, 51, 374, 284, 354, 293, 28, 186, 255, 114, 346, 327, 206, 144, 97, 249, 105, 187, 181, 102, 373, 162, 38, 98, 202, 170, 233, 199, 203, 87, 356, 342, 379, 80, 10, 369, 285, 6, 157, 82, 15, 210, 58, 180, 188, 240, 70, 232, 278, 215, 234, 158, 14, 299, 131, 269, 9, 252, 276, 266, 304, 231, 156, 282, 382, 198, 236, 52, 189, 112, 47, 289, 153, 84, 320, 337, 243, 37, 74, 29, 270, 160, 171, 65, 377, 220, 45, 182, 221, 30, 94, 195, 257, 75, 48, 302, 108, 128, 135, 35, 122, 368, 264, 169, 11, 292, 309, 50, 152, 72, 383, 67, 109, 336, 343, 126, 124, 139, 303, 273, 20, 42, 283, 287, 90, 204, 163, 294, 12, 154, 106, 216, 200, 127, 226, 56, 366, 32, 347, 179, 64, 78, 350, 344, 137, 222, 230, 326, 310, 277, 306, 146, 183, 256, 59, 357, 176, 339, 218, 116, 86, 118, 16, 205, 142, 55, 364, 85, 358, 43, 319, 167, 192, 349, 224, 24, 100, 119, 141, 173, 68, 117, 77, 258, 147, 376, 194, 60, 209, 76, 237, 274, 120, 314, 166, 247, 7, 23, 19, 95, 291, 259, 3, 41, 246, 367, 21, 317, 235, 308] + 61: [221, 194, 5, 82, 89, 338, 144, 156, 139, 280, 92, 294, 267, 169, 367, 254, 284, 272, 229, 215, 369, 187, 96, 152, 212, 335, 216, 312, 83, 120, 178, 18, 211, 154, 174, 119, 301, 372, 237, 148, 373, 363, 318, 20, 247, 366, 53, 106, 46, 339, 231, 32, 218, 114, 64, 263, 17, 21, 365, 88, 250, 62, 360, 199, 292, 376, 226, 16, 334, 180, 242, 220, 132, 10, 135, 165, 225, 332, 125, 95, 45, 121, 228, 342, 344, 362, 232, 271, 181, 383, 268, 22, 153, 288, 353, 276, 127, 191, 151, 310, 142, 355, 208, 275, 2, 118, 146, 3, 308, 243, 320, 347, 141, 262, 223, 8, 227, 345, 4, 58, 192, 115, 86, 184, 44, 379, 286, 264, 14, 238, 129, 293, 236, 337, 273, 341, 266, 80, 39, 28, 350, 13, 123, 291, 93, 100, 76, 56, 340, 67, 349, 72, 307, 343, 150, 85, 346, 352, 133, 33, 91, 255, 331, 130, 252, 359, 283, 189, 134, 197, 209, 38, 321, 166, 6, 55, 23, 224, 47, 214, 258, 382, 328, 60, 300, 261, 259, 138, 19, 171, 256, 31, 162, 161, 25, 203, 325, 24, 68, 295, 78, 66, 323, 239, 158, 52, 183, 298, 112, 111, 29, 297, 364, 35, 105, 140, 43, 333, 201, 305, 34, 380, 176, 136, 177, 354, 51, 143, 131, 251, 65, 269, 81, 70, 319, 63, 190, 182, 296, 12, 159, 326, 351, 361, 42, 103, 207, 278, 357, 196, 282, 122, 336, 79, 205, 126, 317, 309, 245, 249, 173, 48, 0, 149, 315, 179, 253, 313, 69, 327, 240, 117, 374, 157, 90, 358, 270, 234, 290, 109, 102, 15, 155, 222, 314, 49, 377, 304, 299, 128, 381, 279, 160, 248, 163, 285, 302, 368, 170, 213, 281, 98, 1, 233, 124, 137, 11, 306, 107, 87, 217, 277, 185, 73, 37, 186, 260, 26, 241, 75, 27, 311, 330, 230, 188, 244, 289, 77, 257, 40, 193, 246, 54, 164, 41, 147, 356, 167, 316, 371, 59, 219, 195, 61, 74, 7, 168, 202, 172, 99, 84, 175, 101, 378, 265, 375, 210, 274, 104, 9, 30, 36, 108, 50, 198, 206, 324, 110, 200, 204, 370, 303, 97, 235, 57, 113, 329, 116, 145, 348, 322, 71, 94, 287] +layer_updates_per_iter: 0 +num_slots: 384 diff --git a/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep32_slots384.yaml b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep32_slots384.yaml new file mode 100644 index 0000000000..0d9a56b335 --- /dev/null +++ b/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/eplb_confs/moe_load_balancer_gen_ep32_slots384.yaml @@ -0,0 +1,65 @@ +initial_global_assignments: + 0: [111, 21, 359, 122, 324, 261, 250, 4, 9, 185, 194, 130, 135, 293, 163, 113, 151, 121, 341, 18, 96, 238, 373, 196, 236, 327, 268, 176, 148, 92, 20, 160, 369, 220, 299, 128, 17, 26, 114, 290, 110, 71, 360, 102, 303, 33, 103, 37, 165, 302, 308, 234, 365, 269, 259, 239, 362, 179, 363, 295, 356, 29, 43, 79, 211, 59, 192, 285, 180, 278, 137, 367, 74, 383, 72, 371, 203, 212, 189, 380, 318, 183, 372, 40, 289, 93, 328, 134, 379, 41, 27, 344, 241, 311, 274, 338, 166, 347, 377, 94, 142, 88, 249, 228, 370, 32, 12, 48, 184, 209, 56, 127, 200, 286, 246, 139, 314, 304, 275, 309, 45, 255, 245, 104, 1, 118, 141, 186, 330, 244, 181, 333, 256, 361, 374, 158, 38, 280, 355, 264, 230, 117, 58, 120, 162, 191, 331, 222, 226, 312, 68, 282, 265, 164, 187, 266, 3, 253, 19, 97, 219, 173, 354, 145, 172, 152, 276, 30, 150, 78, 90, 336, 291, 262, 125, 193, 87, 70, 319, 247, 322, 34, 57, 204, 279, 124, 254, 199, 108, 174, 248, 69, 133, 382, 115, 85, 80, 10, 270, 325, 99, 168, 182, 201, 346, 335, 51, 47, 112, 252, 263, 376, 36, 272, 305, 310, 86, 155, 157, 14, 98, 223, 337, 52, 340, 296, 243, 205, 50, 132, 75, 13, 277, 22, 235, 6, 267, 213, 271, 306, 39, 81, 35, 11, 146, 207, 106, 63, 7, 197, 381, 210, 60, 284, 221, 89, 287, 136, 215, 339, 42, 307, 49, 334, 351, 368, 144, 321, 46, 329, 77, 100, 358, 0, 281, 301, 345, 217, 62, 227, 67, 352, 15, 357, 237, 298, 214, 233, 283, 169, 273, 131, 161, 8, 66, 156, 366, 73, 323, 178, 170, 138, 91, 313, 216, 297, 288, 229, 218, 231, 82, 224, 251, 159, 76, 25, 61, 353, 126, 116, 320, 23, 65, 326, 95, 198, 147, 123, 208, 225, 109, 53, 31, 375, 154, 332, 260, 177, 364, 206, 55, 242, 258, 143, 16, 317, 350, 101, 232, 188, 257, 153, 292, 83, 149, 140, 54, 349, 343, 171, 84, 202, 300, 316, 315, 119, 44, 2, 342, 240, 24, 167, 190, 28, 129, 107, 294, 378, 5, 195, 348, 175, 105, 64] + 1: [365, 4, 55, 143, 208, 11, 198, 297, 130, 331, 119, 307, 201, 220, 224, 206, 228, 156, 322, 109, 16, 34, 372, 262, 42, 72, 319, 200, 369, 317, 333, 57, 49, 112, 326, 367, 22, 238, 348, 243, 110, 53, 107, 139, 84, 323, 128, 215, 174, 316, 357, 376, 178, 150, 339, 83, 230, 374, 237, 259, 3, 40, 338, 185, 47, 54, 204, 381, 370, 19, 65, 354, 134, 106, 56, 94, 329, 36, 38, 154, 281, 310, 46, 359, 91, 101, 133, 153, 142, 37, 313, 232, 136, 210, 98, 199, 167, 171, 68, 44, 115, 86, 181, 32, 147, 74, 205, 332, 126, 364, 102, 301, 104, 285, 172, 61, 161, 160, 64, 327, 177, 299, 308, 124, 82, 362, 131, 294, 360, 343, 140, 363, 120, 315, 318, 382, 245, 146, 361, 95, 25, 336, 10, 35, 229, 267, 129, 300, 85, 13, 214, 325, 371, 191, 312, 111, 1, 378, 151, 5, 221, 280, 282, 256, 293, 266, 24, 255, 141, 179, 105, 17, 71, 162, 351, 377, 173, 344, 324, 66, 196, 247, 271, 218, 148, 335, 252, 26, 276, 93, 194, 302, 81, 21, 248, 52, 152, 379, 135, 29, 189, 217, 309, 226, 380, 63, 263, 114, 116, 277, 341, 20, 209, 62, 346, 304, 41, 137, 168, 76, 203, 283, 30, 165, 268, 306, 355, 79, 272, 14, 334, 27, 117, 192, 2, 246, 51, 234, 227, 368, 251, 80, 43, 349, 67, 195, 288, 366, 260, 89, 279, 373, 235, 292, 9, 59, 353, 170, 87, 96, 219, 240, 193, 155, 184, 211, 0, 138, 166, 182, 358, 99, 249, 127, 242, 207, 50, 273, 163, 265, 48, 186, 264, 328, 149, 15, 295, 375, 31, 321, 8, 164, 158, 212, 284, 289, 12, 88, 270, 175, 113, 123, 187, 190, 122, 216, 97, 188, 286, 258, 125, 257, 291, 33, 239, 7, 347, 320, 69, 269, 45, 290, 296, 253, 23, 78, 6, 18, 342, 108, 202, 311, 287, 222, 183, 157, 305, 274, 225, 330, 60, 77, 278, 383, 254, 197, 132, 337, 241, 103, 73, 352, 92, 233, 250, 28, 159, 345, 314, 144, 169, 70, 275, 121, 223, 118, 75, 303, 340, 100, 58, 176, 350, 39, 244, 180, 231, 145, 90, 298, 356, 236, 261, 213] + 2: [215, 357, 63, 285, 360, 97, 25, 309, 175, 316, 104, 226, 313, 10, 16, 188, 114, 134, 192, 95, 312, 310, 177, 301, 93, 150, 67, 7, 115, 208, 68, 98, 135, 249, 352, 322, 112, 53, 250, 155, 22, 378, 148, 174, 197, 147, 199, 382, 343, 139, 265, 296, 325, 252, 181, 152, 52, 286, 347, 234, 89, 88, 263, 163, 82, 238, 258, 149, 306, 159, 374, 80, 259, 221, 342, 62, 245, 170, 361, 129, 157, 266, 144, 359, 194, 381, 329, 173, 335, 324, 268, 30, 344, 253, 326, 219, 290, 224, 281, 32, 211, 229, 227, 8, 123, 372, 254, 375, 19, 103, 133, 57, 106, 153, 216, 140, 365, 300, 131, 287, 242, 332, 120, 87, 358, 320, 161, 117, 297, 179, 23, 209, 230, 108, 193, 128, 119, 78, 260, 64, 376, 340, 72, 267, 143, 5, 294, 269, 0, 206, 76, 231, 217, 154, 127, 118, 212, 232, 65, 210, 292, 262, 74, 35, 276, 191, 367, 363, 377, 182, 43, 307, 379, 39, 186, 270, 315, 244, 345, 240, 49, 164, 27, 279, 198, 6, 38, 233, 370, 337, 51, 346, 351, 56, 94, 41, 283, 187, 146, 185, 247, 180, 176, 366, 46, 1, 275, 111, 130, 223, 81, 218, 236, 107, 371, 237, 304, 213, 220, 110, 83, 246, 203, 273, 172, 113, 21, 289, 122, 380, 132, 255, 243, 42, 99, 24, 299, 274, 79, 207, 96, 17, 189, 92, 165, 109, 336, 71, 44, 167, 145, 257, 55, 278, 86, 151, 201, 277, 125, 323, 319, 29, 256, 202, 248, 14, 284, 61, 2, 293, 328, 355, 264, 356, 282, 314, 91, 105, 349, 321, 318, 369, 156, 138, 13, 102, 171, 241, 168, 121, 70, 37, 383, 136, 178, 184, 280, 15, 327, 251, 341, 295, 142, 12, 60, 59, 116, 54, 84, 214, 225, 204, 26, 288, 305, 162, 124, 66, 158, 373, 353, 228, 4, 317, 31, 160, 362, 28, 331, 200, 58, 141, 205, 126, 354, 272, 75, 85, 368, 334, 183, 348, 50, 190, 69, 235, 137, 261, 20, 33, 36, 40, 73, 18, 47, 196, 350, 169, 291, 333, 364, 3, 195, 34, 239, 77, 271, 338, 101, 48, 222, 339, 100, 298, 302, 303, 330, 308, 90, 311, 166, 45, 9, 11] + 3: [307, 317, 162, 60, 134, 105, 96, 368, 45, 245, 117, 241, 263, 123, 376, 119, 283, 157, 109, 211, 1, 300, 278, 146, 3, 327, 257, 259, 291, 364, 43, 282, 55, 75, 140, 147, 97, 323, 53, 90, 122, 358, 61, 87, 255, 305, 101, 312, 34, 111, 254, 250, 70, 370, 62, 294, 166, 355, 83, 20, 232, 124, 271, 144, 151, 199, 159, 103, 142, 223, 321, 99, 27, 153, 348, 347, 375, 299, 125, 303, 374, 206, 233, 104, 377, 63, 92, 4, 222, 351, 37, 173, 342, 181, 301, 185, 18, 57, 249, 308, 280, 126, 277, 203, 345, 121, 52, 95, 244, 276, 215, 296, 112, 252, 141, 106, 335, 174, 341, 130, 304, 285, 84, 318, 91, 314, 315, 205, 251, 184, 102, 292, 171, 333, 49, 12, 44, 160, 72, 380, 82, 231, 86, 69, 22, 46, 177, 382, 200, 129, 11, 127, 357, 15, 188, 371, 320, 178, 108, 30, 226, 137, 248, 67, 182, 0, 262, 324, 170, 219, 168, 343, 169, 284, 228, 98, 100, 50, 207, 330, 302, 48, 350, 25, 266, 365, 16, 9, 191, 59, 220, 332, 210, 218, 256, 107, 225, 289, 135, 29, 189, 33, 273, 204, 313, 7, 65, 209, 208, 378, 113, 336, 24, 247, 309, 349, 319, 2, 329, 246, 76, 227, 287, 6, 236, 152, 131, 165, 310, 39, 88, 224, 354, 13, 68, 176, 114, 217, 36, 38, 175, 331, 149, 195, 40, 229, 41, 362, 198, 197, 116, 353, 230, 66, 148, 212, 54, 293, 264, 253, 196, 187, 286, 183, 150, 19, 164, 295, 8, 338, 77, 322, 180, 352, 47, 268, 79, 42, 172, 14, 28, 275, 202, 201, 56, 379, 258, 5, 35, 145, 344, 242, 373, 132, 80, 383, 360, 158, 279, 190, 26, 221, 381, 260, 274, 73, 243, 366, 261, 21, 143, 339, 136, 74, 306, 369, 356, 120, 267, 156, 340, 337, 346, 265, 194, 298, 32, 272, 78, 154, 138, 290, 193, 139, 240, 326, 163, 328, 81, 23, 179, 238, 64, 281, 17, 237, 367, 58, 235, 213, 118, 363, 269, 71, 93, 133, 89, 234, 239, 311, 316, 51, 167, 297, 359, 361, 372, 110, 186, 270, 115, 214, 94, 155, 161, 85, 325, 216, 10, 192, 31, 334, 128, 288] + 4: [368, 226, 43, 115, 205, 229, 212, 89, 201, 104, 381, 233, 118, 170, 65, 79, 21, 173, 236, 375, 249, 182, 224, 346, 343, 241, 352, 54, 228, 353, 51, 266, 220, 304, 17, 107, 358, 282, 209, 28, 163, 144, 313, 41, 13, 230, 326, 129, 22, 121, 96, 323, 50, 373, 344, 355, 164, 213, 299, 2, 300, 177, 105, 263, 204, 143, 377, 370, 156, 168, 250, 305, 319, 207, 364, 260, 293, 167, 110, 288, 49, 267, 112, 119, 83, 191, 303, 310, 311, 62, 52, 58, 103, 255, 294, 367, 37, 314, 246, 113, 253, 72, 84, 268, 264, 139, 227, 63, 217, 12, 219, 342, 278, 240, 285, 211, 363, 183, 231, 238, 148, 317, 284, 298, 325, 332, 223, 94, 359, 86, 123, 90, 61, 235, 23, 248, 348, 203, 155, 243, 116, 354, 40, 357, 383, 302, 7, 372, 136, 101, 59, 81, 111, 33, 97, 208, 200, 151, 172, 76, 169, 276, 14, 108, 122, 39, 287, 30, 3, 159, 189, 56, 132, 270, 184, 242, 280, 127, 145, 186, 188, 194, 154, 77, 174, 320, 70, 68, 180, 185, 48, 321, 371, 53, 271, 109, 133, 347, 374, 265, 165, 126, 125, 120, 10, 333, 296, 336, 283, 135, 29, 69, 369, 102, 349, 64, 273, 339, 308, 82, 345, 91, 206, 232, 35, 262, 117, 128, 6, 60, 34, 350, 24, 306, 4, 356, 175, 378, 365, 57, 315, 237, 131, 329, 258, 32, 202, 247, 316, 337, 78, 225, 382, 279, 171, 335, 275, 245, 100, 152, 192, 141, 153, 277, 95, 8, 193, 257, 27, 215, 44, 20, 178, 47, 244, 289, 331, 75, 187, 46, 198, 15, 124, 130, 176, 140, 234, 251, 38, 142, 74, 281, 222, 147, 312, 360, 361, 261, 158, 19, 318, 214, 80, 179, 341, 272, 16, 218, 98, 195, 309, 1, 150, 85, 376, 379, 134, 216, 181, 106, 67, 362, 330, 338, 196, 256, 380, 197, 9, 239, 114, 166, 55, 149, 328, 366, 88, 334, 221, 157, 146, 92, 290, 252, 324, 295, 351, 322, 87, 307, 259, 291, 160, 162, 210, 71, 297, 26, 301, 190, 161, 45, 138, 42, 254, 31, 66, 73, 269, 99, 0, 5, 199, 18, 137, 274, 286, 36, 327, 340, 93, 25, 11, 292] + 5: [69, 263, 237, 325, 251, 380, 46, 309, 282, 340, 280, 234, 174, 109, 115, 313, 283, 353, 352, 284, 112, 189, 290, 177, 305, 185, 257, 91, 4, 188, 264, 226, 176, 260, 2, 369, 248, 232, 382, 0, 33, 103, 182, 53, 119, 135, 326, 321, 213, 214, 345, 169, 21, 161, 64, 34, 362, 357, 94, 127, 190, 365, 343, 58, 82, 30, 240, 216, 361, 360, 173, 157, 141, 66, 104, 383, 168, 204, 225, 146, 373, 40, 80, 36, 231, 377, 194, 329, 68, 250, 356, 328, 107, 180, 99, 123, 288, 371, 327, 92, 244, 86, 51, 294, 125, 43, 13, 302, 154, 100, 78, 245, 375, 35, 144, 134, 378, 281, 292, 286, 276, 108, 124, 192, 129, 331, 133, 254, 12, 298, 120, 367, 150, 239, 262, 308, 333, 98, 7, 201, 126, 349, 139, 267, 355, 17, 256, 153, 221, 318, 54, 140, 297, 242, 247, 224, 25, 14, 72, 1, 324, 199, 19, 229, 158, 358, 39, 179, 217, 207, 165, 285, 243, 5, 48, 97, 106, 273, 171, 75, 160, 317, 143, 206, 209, 184, 81, 149, 31, 236, 162, 121, 128, 265, 155, 252, 147, 9, 8, 347, 187, 337, 50, 113, 52, 211, 56, 275, 111, 303, 310, 23, 222, 230, 62, 166, 249, 49, 223, 228, 116, 293, 90, 233, 315, 67, 42, 167, 163, 73, 304, 37, 336, 332, 70, 198, 339, 203, 338, 83, 172, 312, 348, 45, 289, 6, 60, 26, 379, 210, 261, 218, 341, 148, 84, 76, 366, 59, 200, 374, 193, 77, 3, 307, 287, 178, 89, 122, 131, 363, 300, 24, 359, 63, 117, 118, 269, 28, 74, 279, 364, 241, 278, 57, 183, 368, 22, 181, 102, 159, 20, 32, 215, 335, 219, 65, 314, 202, 301, 196, 319, 88, 295, 370, 227, 266, 151, 130, 136, 16, 44, 299, 47, 15, 316, 132, 142, 170, 238, 320, 255, 11, 79, 270, 137, 208, 145, 253, 246, 18, 101, 156, 235, 197, 10, 212, 296, 220, 164, 268, 306, 114, 93, 372, 152, 96, 322, 95, 138, 381, 205, 351, 85, 258, 342, 27, 29, 271, 354, 38, 61, 330, 346, 110, 175, 191, 323, 41, 334, 376, 291, 71, 272, 311, 55, 105, 259, 186, 274, 87, 195, 344, 350, 277] + 6: [97, 339, 1, 65, 228, 222, 359, 331, 247, 40, 363, 257, 98, 224, 43, 107, 145, 131, 201, 348, 71, 161, 329, 323, 32, 262, 188, 381, 217, 280, 132, 38, 14, 275, 294, 21, 308, 340, 128, 117, 312, 374, 108, 78, 15, 197, 2, 3, 322, 317, 102, 118, 12, 6, 259, 105, 52, 121, 154, 273, 254, 235, 368, 190, 298, 194, 116, 181, 189, 347, 172, 39, 9, 377, 114, 153, 364, 318, 143, 29, 113, 356, 168, 210, 37, 68, 202, 73, 264, 129, 64, 306, 138, 70, 248, 310, 281, 171, 103, 203, 367, 290, 311, 82, 244, 8, 252, 22, 142, 305, 173, 343, 289, 110, 7, 221, 307, 346, 265, 373, 177, 232, 27, 85, 155, 324, 136, 357, 216, 263, 30, 351, 158, 147, 274, 292, 5, 301, 316, 83, 223, 355, 206, 100, 215, 166, 76, 200, 378, 152, 182, 77, 334, 87, 51, 28, 218, 272, 267, 291, 231, 284, 106, 11, 361, 285, 180, 126, 253, 163, 333, 268, 157, 80, 283, 261, 299, 137, 115, 124, 295, 159, 156, 358, 127, 120, 332, 313, 134, 36, 196, 23, 66, 99, 229, 315, 341, 236, 25, 74, 304, 277, 42, 250, 269, 287, 91, 208, 24, 276, 92, 47, 130, 16, 62, 293, 146, 376, 234, 192, 46, 123, 296, 314, 162, 69, 33, 256, 243, 242, 328, 50, 337, 270, 238, 89, 271, 96, 227, 211, 169, 167, 278, 34, 63, 354, 57, 125, 219, 93, 309, 49, 174, 209, 220, 122, 19, 260, 140, 207, 338, 352, 141, 75, 53, 205, 10, 35, 55, 246, 79, 302, 362, 101, 325, 365, 193, 139, 266, 212, 321, 213, 44, 327, 225, 336, 41, 72, 282, 240, 353, 178, 198, 255, 286, 233, 230, 191, 303, 382, 31, 160, 179, 335, 199, 104, 164, 111, 342, 241, 204, 151, 371, 0, 297, 45, 245, 326, 184, 17, 251, 369, 186, 320, 48, 239, 94, 349, 379, 86, 61, 185, 13, 109, 26, 183, 20, 375, 135, 165, 330, 383, 350, 18, 60, 214, 345, 90, 59, 319, 258, 226, 370, 58, 84, 81, 300, 372, 95, 176, 56, 249, 4, 175, 149, 67, 112, 170, 366, 150, 119, 380, 288, 88, 144, 344, 148, 187, 195, 360, 279, 54, 133, 237] + 7: [94, 321, 379, 35, 15, 55, 302, 232, 311, 319, 145, 371, 263, 250, 336, 153, 114, 254, 57, 299, 160, 172, 231, 95, 375, 329, 83, 148, 10, 343, 167, 170, 202, 124, 365, 338, 13, 315, 198, 363, 206, 342, 66, 5, 266, 91, 205, 149, 382, 67, 31, 320, 361, 123, 180, 43, 295, 367, 207, 16, 274, 169, 73, 21, 238, 176, 131, 81, 291, 158, 102, 106, 49, 333, 79, 209, 281, 161, 212, 331, 86, 373, 88, 132, 28, 2, 107, 99, 46, 195, 69, 337, 330, 38, 352, 135, 90, 323, 260, 47, 308, 268, 300, 194, 208, 156, 255, 151, 103, 279, 54, 193, 136, 351, 59, 355, 286, 309, 219, 357, 229, 272, 215, 225, 101, 224, 241, 201, 166, 115, 249, 22, 327, 8, 40, 93, 196, 119, 111, 146, 130, 122, 222, 243, 105, 346, 374, 179, 159, 271, 39, 116, 191, 317, 244, 32, 188, 306, 184, 178, 9, 277, 52, 328, 200, 36, 226, 199, 61, 164, 259, 71, 25, 75, 134, 288, 112, 14, 312, 233, 118, 192, 56, 236, 368, 381, 383, 318, 85, 104, 296, 269, 41, 17, 258, 127, 314, 298, 267, 98, 72, 203, 45, 273, 20, 256, 282, 284, 141, 58, 168, 348, 44, 183, 326, 235, 292, 297, 316, 354, 155, 185, 217, 113, 310, 92, 68, 257, 275, 18, 239, 157, 190, 237, 376, 110, 353, 23, 165, 152, 133, 65, 339, 51, 6, 74, 301, 307, 305, 349, 76, 247, 64, 175, 154, 378, 350, 78, 248, 63, 87, 377, 89, 162, 369, 362, 211, 0, 264, 285, 335, 96, 173, 147, 117, 364, 251, 139, 163, 223, 347, 204, 228, 27, 140, 37, 53, 359, 253, 380, 356, 246, 26, 283, 138, 358, 303, 293, 322, 30, 48, 177, 125, 142, 227, 84, 252, 334, 143, 242, 60, 42, 341, 80, 62, 121, 82, 12, 210, 304, 234, 24, 171, 289, 325, 7, 129, 340, 216, 313, 344, 29, 230, 4, 144, 294, 332, 287, 77, 220, 245, 240, 120, 270, 324, 290, 213, 150, 34, 187, 345, 1, 366, 126, 181, 261, 218, 3, 276, 109, 372, 214, 11, 370, 128, 70, 50, 221, 189, 278, 174, 137, 182, 265, 186, 100, 108, 97, 197, 280, 262, 33, 360, 19] + 8: [310, 350, 157, 268, 142, 275, 131, 12, 138, 213, 19, 355, 312, 265, 90, 141, 295, 63, 269, 324, 170, 165, 65, 207, 67, 236, 98, 322, 364, 358, 356, 70, 335, 193, 343, 342, 38, 336, 97, 169, 222, 377, 51, 280, 187, 337, 139, 237, 279, 214, 190, 4, 153, 82, 171, 380, 375, 127, 32, 111, 194, 17, 346, 57, 341, 186, 114, 245, 118, 15, 347, 361, 21, 260, 88, 168, 267, 48, 304, 60, 2, 285, 318, 110, 173, 182, 298, 338, 228, 311, 85, 328, 381, 345, 91, 177, 360, 218, 58, 325, 313, 321, 196, 79, 151, 175, 274, 344, 35, 206, 143, 87, 152, 238, 235, 188, 45, 383, 40, 278, 264, 180, 64, 291, 210, 317, 374, 103, 120, 158, 116, 53, 5, 140, 25, 192, 349, 221, 283, 164, 11, 52, 128, 36, 13, 220, 302, 73, 50, 199, 201, 156, 226, 9, 191, 242, 253, 44, 333, 357, 34, 257, 145, 320, 119, 14, 49, 223, 135, 252, 69, 303, 3, 163, 340, 249, 29, 205, 96, 216, 266, 367, 284, 204, 353, 22, 323, 144, 159, 215, 259, 126, 239, 198, 332, 150, 104, 326, 107, 125, 123, 42, 270, 71, 272, 379, 371, 299, 362, 292, 378, 276, 117, 208, 319, 329, 195, 287, 178, 224, 101, 81, 306, 174, 124, 376, 129, 0, 281, 297, 154, 203, 261, 202, 130, 137, 133, 314, 99, 26, 18, 31, 273, 327, 61, 132, 240, 160, 230, 301, 305, 95, 155, 282, 348, 250, 74, 189, 41, 263, 105, 80, 231, 256, 258, 300, 229, 56, 255, 293, 115, 185, 78, 106, 46, 254, 75, 290, 211, 286, 68, 113, 197, 244, 86, 331, 289, 183, 10, 251, 200, 217, 136, 277, 37, 20, 24, 294, 271, 100, 308, 146, 30, 288, 248, 167, 246, 147, 262, 77, 225, 315, 241, 122, 382, 134, 1, 162, 33, 373, 339, 8, 149, 148, 93, 6, 7, 16, 166, 43, 176, 28, 94, 334, 296, 316, 108, 39, 212, 309, 72, 368, 219, 121, 354, 330, 84, 307, 47, 372, 23, 27, 66, 62, 54, 89, 233, 92, 366, 365, 161, 359, 352, 112, 76, 243, 184, 363, 370, 109, 102, 172, 181, 247, 209, 83, 59, 227, 179, 351, 232, 55, 369, 234] + 9: [92, 124, 3, 151, 136, 302, 219, 86, 149, 122, 168, 125, 244, 298, 28, 30, 177, 0, 266, 234, 270, 325, 167, 340, 287, 295, 335, 350, 51, 191, 221, 375, 257, 97, 43, 190, 304, 138, 11, 45, 20, 176, 71, 294, 104, 112, 337, 53, 363, 366, 247, 70, 96, 169, 161, 98, 330, 253, 292, 91, 346, 102, 320, 166, 90, 129, 19, 344, 144, 75, 300, 106, 349, 374, 18, 159, 8, 319, 73, 181, 203, 290, 60, 318, 316, 354, 357, 307, 89, 297, 186, 336, 120, 139, 119, 27, 165, 351, 44, 228, 14, 271, 338, 233, 249, 194, 204, 34, 109, 110, 23, 229, 201, 364, 48, 368, 283, 216, 237, 343, 372, 132, 288, 248, 381, 345, 134, 137, 217, 162, 308, 26, 185, 147, 252, 154, 62, 358, 284, 170, 208, 131, 371, 310, 214, 272, 195, 215, 115, 192, 36, 85, 268, 240, 25, 40, 15, 331, 74, 189, 103, 326, 264, 50, 100, 377, 183, 296, 334, 31, 209, 259, 312, 94, 273, 265, 321, 148, 241, 163, 327, 55, 196, 133, 39, 329, 278, 198, 339, 38, 378, 365, 47, 146, 174, 1, 116, 184, 113, 376, 236, 175, 164, 63, 246, 4, 82, 141, 12, 205, 301, 256, 193, 200, 87, 2, 285, 260, 66, 81, 359, 84, 67, 211, 59, 24, 245, 332, 83, 95, 121, 210, 29, 230, 88, 369, 99, 223, 361, 250, 56, 123, 111, 158, 267, 46, 5, 315, 187, 352, 362, 367, 258, 54, 108, 207, 37, 188, 342, 281, 314, 274, 153, 142, 218, 10, 341, 380, 222, 178, 155, 16, 157, 251, 68, 128, 313, 279, 299, 220, 254, 360, 212, 172, 328, 276, 127, 213, 282, 379, 9, 17, 130, 49, 42, 173, 348, 80, 79, 77, 255, 171, 199, 356, 235, 118, 322, 32, 306, 225, 140, 7, 52, 143, 135, 35, 303, 309, 382, 126, 347, 261, 291, 269, 355, 114, 289, 353, 78, 197, 239, 22, 117, 101, 150, 6, 145, 226, 206, 33, 275, 383, 160, 93, 202, 324, 232, 76, 280, 262, 179, 238, 180, 65, 227, 305, 293, 156, 57, 21, 373, 107, 370, 72, 13, 224, 41, 243, 286, 182, 61, 152, 263, 105, 231, 323, 277, 64, 317, 69, 58, 242, 311, 333] + 10: [378, 16, 82, 356, 369, 260, 119, 28, 206, 165, 176, 336, 48, 118, 302, 352, 103, 197, 1, 354, 307, 329, 381, 83, 57, 52, 281, 27, 159, 297, 277, 62, 13, 244, 283, 313, 222, 166, 76, 203, 134, 105, 10, 323, 149, 344, 231, 152, 193, 274, 138, 298, 70, 39, 23, 64, 77, 342, 295, 91, 320, 43, 113, 284, 271, 140, 379, 32, 106, 143, 226, 251, 233, 236, 318, 108, 169, 273, 84, 289, 71, 158, 358, 208, 120, 262, 148, 162, 41, 269, 109, 355, 94, 317, 15, 287, 24, 133, 34, 182, 195, 199, 363, 137, 174, 207, 253, 366, 365, 21, 326, 367, 111, 37, 380, 288, 214, 29, 68, 223, 146, 90, 328, 257, 67, 126, 268, 266, 104, 211, 74, 130, 153, 189, 372, 205, 147, 163, 26, 73, 213, 332, 316, 110, 278, 216, 350, 370, 204, 279, 155, 374, 377, 12, 2, 285, 31, 168, 243, 124, 164, 376, 141, 144, 321, 33, 348, 88, 151, 179, 224, 5, 309, 351, 22, 291, 334, 139, 249, 14, 300, 136, 225, 171, 75, 186, 185, 293, 346, 89, 230, 9, 183, 341, 65, 8, 56, 102, 87, 72, 218, 127, 175, 340, 178, 337, 93, 95, 161, 99, 135, 6, 229, 49, 345, 349, 241, 54, 145, 272, 154, 184, 232, 53, 360, 240, 7, 191, 194, 121, 69, 306, 188, 280, 196, 364, 335, 258, 4, 256, 100, 180, 42, 51, 314, 35, 47, 129, 107, 78, 115, 247, 294, 296, 98, 187, 315, 359, 30, 20, 371, 209, 339, 227, 122, 11, 0, 375, 259, 299, 112, 150, 308, 264, 81, 131, 373, 25, 200, 61, 312, 327, 128, 250, 290, 303, 190, 338, 18, 237, 58, 160, 97, 276, 219, 215, 234, 210, 198, 96, 55, 142, 19, 368, 50, 59, 301, 270, 347, 254, 220, 228, 319, 45, 286, 17, 252, 248, 330, 310, 304, 383, 362, 132, 3, 66, 265, 36, 40, 235, 156, 242, 63, 245, 38, 324, 255, 92, 221, 331, 117, 202, 322, 261, 357, 46, 361, 292, 246, 157, 325, 85, 177, 305, 267, 282, 238, 60, 116, 125, 239, 181, 101, 167, 217, 212, 44, 80, 173, 353, 333, 123, 170, 79, 192, 263, 382, 275, 86, 114, 311, 343, 201, 172] + 11: [284, 261, 28, 109, 335, 173, 216, 185, 334, 239, 372, 189, 121, 373, 191, 245, 12, 8, 200, 92, 142, 291, 269, 212, 248, 325, 359, 16, 253, 53, 143, 322, 266, 117, 155, 122, 377, 333, 25, 367, 26, 289, 182, 42, 82, 153, 256, 62, 288, 249, 258, 136, 257, 304, 329, 306, 105, 113, 336, 254, 107, 275, 374, 277, 93, 181, 369, 368, 244, 134, 91, 147, 44, 34, 54, 161, 264, 224, 188, 222, 125, 180, 317, 68, 110, 255, 351, 177, 295, 271, 17, 366, 84, 168, 19, 292, 90, 111, 267, 160, 87, 71, 226, 238, 358, 219, 186, 223, 36, 150, 5, 259, 274, 35, 102, 97, 86, 364, 342, 23, 116, 119, 294, 318, 129, 268, 231, 310, 66, 211, 10, 167, 199, 221, 381, 179, 348, 162, 279, 170, 382, 21, 104, 95, 218, 151, 240, 141, 80, 7, 37, 312, 213, 276, 101, 79, 77, 371, 250, 193, 81, 32, 301, 57, 281, 309, 9, 265, 232, 354, 152, 171, 270, 27, 273, 346, 355, 247, 131, 286, 78, 296, 1, 370, 15, 378, 127, 124, 43, 67, 166, 106, 11, 233, 169, 363, 192, 139, 29, 103, 74, 229, 246, 72, 350, 203, 202, 137, 126, 100, 305, 242, 6, 262, 347, 214, 65, 343, 217, 128, 183, 154, 361, 156, 349, 108, 60, 338, 63, 353, 14, 18, 300, 73, 332, 187, 194, 58, 311, 230, 41, 209, 299, 145, 178, 293, 33, 345, 234, 251, 201, 96, 376, 323, 157, 337, 195, 241, 22, 205, 341, 313, 123, 158, 51, 20, 39, 227, 283, 31, 287, 198, 190, 263, 45, 135, 47, 132, 319, 260, 52, 148, 144, 3, 303, 55, 4, 115, 235, 339, 330, 331, 83, 118, 49, 48, 197, 272, 70, 316, 98, 149, 308, 357, 208, 24, 56, 383, 140, 196, 133, 64, 252, 94, 237, 243, 328, 228, 174, 120, 327, 204, 112, 302, 99, 172, 298, 85, 280, 326, 282, 297, 225, 50, 165, 69, 146, 314, 130, 46, 40, 61, 13, 365, 352, 362, 30, 76, 0, 88, 159, 175, 184, 75, 380, 59, 2, 176, 315, 138, 210, 38, 375, 324, 285, 215, 340, 356, 379, 164, 206, 307, 320, 163, 89, 278, 207, 360, 236, 344, 114, 321, 220, 290] + 12: [120, 110, 225, 81, 383, 302, 240, 373, 193, 106, 372, 162, 226, 198, 236, 47, 352, 211, 257, 42, 53, 206, 202, 72, 204, 39, 336, 173, 178, 38, 300, 100, 125, 86, 62, 80, 255, 216, 37, 247, 250, 339, 196, 194, 239, 11, 230, 9, 354, 210, 122, 356, 357, 209, 275, 227, 131, 197, 85, 288, 78, 50, 155, 217, 371, 284, 195, 83, 201, 281, 171, 218, 149, 330, 268, 350, 256, 79, 144, 13, 129, 222, 92, 142, 59, 111, 253, 340, 335, 31, 272, 207, 3, 310, 366, 0, 301, 314, 267, 163, 34, 143, 121, 73, 307, 12, 299, 322, 19, 189, 258, 16, 146, 245, 119, 54, 7, 63, 264, 205, 172, 29, 290, 320, 132, 365, 286, 355, 145, 287, 170, 147, 223, 329, 351, 114, 167, 212, 381, 342, 128, 305, 93, 99, 343, 28, 176, 66, 276, 23, 148, 138, 235, 377, 43, 20, 324, 51, 349, 22, 183, 362, 337, 270, 380, 359, 294, 41, 158, 15, 261, 123, 179, 241, 14, 269, 345, 312, 311, 61, 246, 341, 175, 378, 309, 113, 49, 44, 67, 133, 25, 184, 109, 168, 316, 192, 139, 36, 298, 74, 282, 126, 70, 75, 107, 278, 325, 116, 18, 26, 353, 64, 101, 90, 321, 169, 46, 319, 317, 346, 105, 228, 97, 98, 185, 33, 279, 266, 69, 252, 137, 165, 140, 117, 364, 95, 203, 104, 187, 208, 48, 333, 265, 331, 6, 248, 259, 56, 328, 376, 280, 8, 27, 94, 313, 91, 57, 200, 234, 10, 154, 157, 102, 375, 82, 177, 360, 68, 152, 135, 338, 96, 379, 159, 231, 112, 190, 367, 318, 358, 181, 382, 244, 151, 5, 224, 347, 174, 308, 327, 369, 344, 304, 326, 88, 1, 17, 251, 141, 108, 35, 150, 293, 4, 297, 283, 2, 182, 254, 188, 368, 65, 243, 87, 220, 156, 361, 215, 238, 249, 60, 40, 262, 21, 363, 127, 260, 348, 306, 103, 186, 271, 89, 214, 237, 164, 277, 30, 77, 296, 232, 199, 191, 213, 52, 58, 285, 291, 124, 130, 84, 303, 71, 221, 295, 180, 263, 161, 370, 24, 219, 233, 45, 115, 323, 315, 332, 273, 166, 374, 118, 242, 292, 76, 134, 32, 160, 229, 289, 136, 153, 334, 274, 55] + 13: [137, 161, 292, 251, 364, 15, 218, 347, 84, 351, 173, 146, 18, 361, 4, 40, 181, 293, 336, 91, 247, 230, 32, 368, 286, 139, 303, 291, 33, 58, 171, 315, 94, 63, 99, 61, 45, 57, 177, 134, 96, 374, 356, 241, 243, 187, 69, 75, 149, 262, 37, 46, 41, 205, 246, 191, 138, 302, 337, 206, 23, 116, 224, 25, 240, 193, 381, 257, 285, 268, 105, 27, 108, 253, 376, 311, 49, 355, 36, 225, 163, 379, 344, 370, 320, 151, 56, 30, 283, 179, 267, 239, 130, 182, 282, 277, 342, 28, 360, 101, 129, 249, 110, 312, 117, 301, 278, 226, 0, 80, 236, 313, 6, 275, 13, 231, 326, 103, 188, 210, 209, 189, 156, 296, 81, 65, 261, 259, 350, 213, 60, 349, 362, 276, 219, 167, 159, 228, 83, 113, 375, 272, 383, 29, 98, 9, 43, 373, 331, 136, 168, 330, 141, 245, 26, 266, 176, 97, 157, 333, 64, 115, 198, 339, 50, 145, 250, 192, 102, 89, 197, 22, 289, 329, 82, 299, 126, 190, 252, 148, 338, 39, 104, 359, 348, 8, 244, 227, 220, 321, 3, 341, 38, 290, 340, 92, 366, 68, 76, 334, 308, 95, 85, 202, 135, 1, 372, 281, 327, 79, 2, 53, 5, 172, 242, 324, 44, 199, 358, 248, 183, 233, 118, 150, 72, 55, 7, 162, 14, 207, 323, 317, 119, 307, 71, 365, 201, 166, 140, 152, 328, 74, 174, 66, 211, 310, 54, 143, 124, 234, 264, 200, 67, 109, 51, 357, 223, 288, 70, 217, 128, 175, 382, 127, 17, 153, 158, 133, 304, 144, 287, 73, 380, 194, 90, 59, 169, 112, 165, 371, 269, 121, 34, 325, 367, 155, 363, 62, 260, 186, 280, 107, 256, 48, 123, 21, 300, 164, 353, 354, 274, 114, 258, 255, 131, 271, 235, 221, 111, 294, 120, 132, 238, 11, 335, 273, 47, 10, 284, 42, 215, 343, 212, 122, 170, 378, 216, 322, 214, 106, 345, 352, 180, 142, 185, 265, 319, 232, 346, 100, 306, 204, 93, 270, 16, 78, 237, 20, 318, 12, 88, 229, 254, 203, 35, 316, 297, 178, 19, 52, 24, 86, 87, 184, 208, 77, 31, 222, 309, 314, 332, 196, 369, 195, 279, 295, 298, 305, 125, 154, 147, 377, 263, 160] + 14: [229, 236, 136, 318, 240, 212, 260, 272, 12, 152, 103, 107, 110, 156, 379, 121, 29, 295, 132, 38, 218, 230, 258, 293, 70, 87, 153, 80, 9, 278, 174, 252, 83, 165, 84, 131, 147, 45, 119, 113, 309, 303, 19, 324, 314, 232, 115, 42, 76, 200, 266, 114, 217, 341, 48, 43, 380, 96, 361, 283, 126, 221, 187, 287, 304, 167, 78, 352, 302, 196, 35, 170, 2, 377, 347, 312, 180, 340, 310, 139, 201, 51, 290, 216, 274, 378, 368, 5, 338, 333, 276, 36, 317, 257, 320, 366, 269, 102, 199, 351, 296, 184, 273, 224, 206, 149, 11, 108, 143, 16, 256, 123, 125, 194, 134, 158, 326, 185, 329, 315, 20, 77, 150, 10, 313, 271, 88, 140, 267, 129, 92, 238, 253, 231, 142, 268, 298, 168, 55, 34, 74, 365, 166, 172, 175, 261, 286, 14, 151, 235, 277, 124, 120, 370, 215, 205, 15, 130, 289, 356, 98, 301, 336, 46, 117, 162, 285, 105, 160, 54, 210, 39, 186, 109, 321, 169, 93, 65, 173, 281, 8, 337, 279, 63, 69, 182, 163, 364, 58, 61, 27, 376, 32, 40, 195, 228, 250, 112, 359, 246, 369, 192, 68, 86, 275, 255, 135, 292, 207, 239, 59, 294, 106, 264, 263, 7, 198, 164, 241, 346, 349, 31, 291, 95, 67, 251, 233, 339, 97, 37, 288, 56, 137, 300, 181, 226, 373, 189, 26, 270, 146, 116, 332, 211, 71, 328, 244, 177, 282, 191, 91, 280, 75, 325, 60, 64, 220, 188, 99, 323, 245, 382, 223, 144, 363, 159, 111, 360, 104, 33, 350, 18, 358, 331, 13, 214, 208, 25, 53, 145, 101, 203, 213, 183, 234, 284, 72, 41, 155, 3, 209, 141, 62, 24, 225, 179, 171, 247, 148, 79, 372, 52, 355, 342, 254, 47, 381, 357, 348, 49, 311, 73, 4, 327, 178, 305, 28, 259, 237, 50, 90, 0, 354, 94, 122, 367, 330, 353, 44, 343, 375, 319, 161, 335, 334, 82, 371, 157, 345, 176, 227, 344, 265, 307, 118, 219, 66, 138, 248, 383, 85, 57, 1, 316, 6, 242, 22, 81, 262, 133, 100, 30, 308, 23, 17, 197, 222, 306, 190, 362, 243, 128, 204, 154, 299, 21, 297, 89, 374, 322, 193, 249, 127, 202] + 15: [148, 366, 163, 110, 17, 53, 312, 235, 176, 156, 368, 144, 130, 216, 98, 108, 356, 75, 307, 118, 310, 244, 294, 69, 266, 161, 208, 315, 287, 325, 314, 346, 276, 274, 127, 46, 227, 71, 61, 101, 60, 273, 179, 36, 316, 191, 228, 372, 11, 20, 159, 347, 212, 363, 225, 205, 250, 260, 303, 85, 155, 329, 44, 87, 292, 333, 152, 302, 100, 59, 10, 142, 88, 105, 241, 207, 86, 197, 3, 220, 323, 373, 198, 243, 359, 174, 182, 229, 365, 320, 370, 209, 120, 288, 181, 26, 107, 143, 1, 112, 70, 9, 158, 226, 338, 336, 358, 132, 319, 187, 237, 271, 62, 201, 111, 24, 253, 169, 171, 131, 375, 25, 38, 80, 264, 45, 114, 240, 348, 72, 6, 234, 168, 371, 298, 162, 136, 268, 67, 282, 344, 380, 223, 378, 217, 254, 275, 42, 16, 99, 280, 30, 126, 210, 262, 322, 160, 258, 232, 180, 106, 19, 246, 170, 63, 73, 318, 337, 352, 133, 236, 203, 113, 178, 297, 32, 103, 263, 41, 214, 68, 367, 324, 285, 211, 54, 137, 351, 92, 289, 172, 165, 37, 93, 94, 334, 361, 353, 124, 213, 248, 313, 279, 195, 57, 39, 230, 296, 123, 81, 51, 277, 164, 245, 50, 66, 139, 196, 18, 255, 331, 295, 125, 22, 89, 29, 122, 204, 55, 48, 121, 129, 381, 269, 202, 340, 257, 145, 183, 293, 362, 74, 141, 175, 77, 166, 238, 5, 219, 194, 330, 154, 252, 290, 300, 189, 355, 47, 221, 43, 343, 206, 383, 95, 119, 308, 40, 23, 31, 265, 278, 306, 28, 247, 382, 97, 4, 284, 84, 128, 7, 332, 369, 64, 49, 188, 249, 150, 251, 8, 135, 215, 350, 327, 311, 83, 65, 339, 328, 52, 239, 0, 157, 134, 153, 270, 149, 102, 82, 14, 357, 21, 167, 317, 151, 12, 231, 304, 96, 377, 342, 354, 345, 321, 15, 349, 56, 291, 364, 13, 115, 286, 224, 272, 283, 91, 261, 186, 90, 2, 305, 117, 138, 185, 177, 299, 140, 335, 256, 200, 360, 259, 242, 199, 109, 301, 193, 79, 341, 379, 104, 192, 35, 146, 34, 376, 190, 27, 309, 218, 222, 58, 326, 76, 233, 78, 116, 147, 33, 184, 267, 173, 374, 281] + 16: [134, 363, 72, 62, 215, 116, 98, 353, 244, 133, 94, 376, 100, 0, 254, 336, 279, 157, 70, 135, 2, 263, 12, 350, 15, 221, 63, 83, 356, 304, 173, 155, 3, 380, 314, 191, 43, 205, 379, 245, 25, 71, 355, 14, 194, 276, 131, 192, 286, 141, 49, 354, 300, 123, 311, 361, 240, 35, 256, 4, 16, 177, 329, 239, 264, 136, 160, 19, 210, 340, 179, 28, 165, 222, 319, 328, 104, 65, 55, 175, 374, 231, 57, 249, 144, 209, 125, 42, 105, 357, 261, 102, 265, 321, 313, 349, 271, 138, 74, 81, 45, 93, 213, 82, 167, 377, 323, 208, 312, 250, 315, 291, 46, 22, 88, 248, 366, 128, 130, 30, 27, 289, 107, 183, 99, 59, 178, 230, 176, 301, 31, 294, 23, 189, 44, 153, 347, 119, 34, 73, 41, 252, 378, 352, 303, 162, 142, 305, 308, 343, 170, 236, 10, 296, 159, 217, 234, 317, 38, 229, 246, 137, 274, 58, 103, 124, 375, 186, 369, 335, 67, 90, 174, 202, 322, 368, 76, 168, 334, 48, 326, 331, 346, 47, 6, 310, 290, 21, 383, 196, 299, 266, 275, 203, 238, 184, 268, 237, 295, 198, 89, 150, 164, 149, 272, 114, 227, 281, 56, 79, 260, 158, 332, 212, 197, 345, 84, 382, 129, 358, 337, 188, 7, 360, 163, 110, 40, 362, 92, 145, 235, 226, 181, 13, 206, 359, 180, 148, 214, 309, 120, 269, 371, 17, 97, 223, 216, 20, 381, 267, 109, 112, 255, 280, 11, 101, 365, 50, 115, 127, 259, 9, 320, 117, 68, 69, 316, 60, 199, 29, 139, 195, 233, 151, 211, 344, 251, 96, 33, 324, 232, 113, 39, 32, 220, 95, 242, 253, 367, 306, 37, 91, 273, 207, 342, 370, 171, 193, 243, 307, 348, 330, 146, 54, 8, 282, 118, 18, 106, 61, 327, 156, 64, 66, 224, 262, 318, 52, 287, 190, 218, 126, 325, 225, 143, 338, 270, 364, 80, 5, 302, 172, 297, 278, 204, 53, 77, 140, 298, 24, 122, 201, 182, 372, 228, 258, 292, 351, 154, 152, 75, 147, 285, 283, 36, 187, 339, 108, 288, 247, 166, 86, 333, 277, 1, 132, 257, 121, 169, 219, 111, 161, 85, 185, 78, 373, 51, 293, 341, 26, 200, 87, 284, 241] + 17: [246, 341, 321, 151, 169, 237, 202, 195, 295, 301, 21, 353, 294, 203, 90, 283, 66, 159, 122, 77, 71, 358, 281, 148, 220, 137, 330, 259, 361, 29, 381, 265, 178, 210, 47, 72, 208, 296, 275, 33, 20, 6, 25, 204, 183, 339, 127, 325, 337, 28, 224, 44, 83, 367, 258, 352, 76, 280, 318, 145, 79, 315, 226, 241, 78, 168, 365, 187, 282, 230, 287, 181, 232, 185, 305, 73, 346, 7, 101, 57, 89, 18, 331, 333, 327, 250, 207, 285, 0, 67, 95, 1, 41, 37, 150, 86, 138, 218, 5, 124, 136, 171, 61, 364, 110, 349, 68, 322, 131, 118, 376, 177, 211, 263, 53, 128, 176, 201, 166, 257, 188, 293, 108, 289, 8, 165, 107, 123, 199, 336, 329, 209, 319, 311, 340, 229, 97, 112, 143, 24, 205, 309, 139, 291, 286, 144, 38, 125, 260, 114, 215, 332, 350, 164, 377, 161, 141, 62, 335, 206, 120, 117, 115, 267, 184, 342, 149, 320, 236, 104, 105, 324, 175, 271, 31, 42, 277, 221, 253, 354, 303, 59, 254, 343, 167, 142, 9, 223, 103, 81, 85, 368, 58, 189, 359, 238, 292, 356, 30, 240, 32, 348, 351, 360, 52, 261, 380, 243, 98, 132, 14, 36, 10, 192, 313, 172, 284, 126, 173, 225, 274, 234, 182, 273, 288, 111, 84, 96, 174, 272, 366, 212, 278, 147, 56, 153, 369, 50, 276, 121, 40, 130, 91, 256, 197, 162, 323, 186, 262, 344, 88, 11, 362, 383, 228, 49, 102, 264, 373, 179, 255, 235, 65, 382, 46, 12, 375, 2, 3, 154, 191, 249, 268, 75, 270, 345, 158, 307, 222, 252, 244, 198, 231, 180, 163, 213, 34, 334, 119, 370, 347, 290, 134, 363, 194, 196, 170, 48, 64, 310, 87, 314, 99, 190, 355, 17, 371, 106, 160, 129, 63, 316, 15, 22, 300, 372, 27, 39, 357, 227, 248, 304, 45, 54, 26, 93, 374, 133, 217, 216, 298, 69, 302, 308, 247, 156, 113, 100, 297, 80, 116, 94, 338, 135, 378, 328, 152, 55, 4, 193, 16, 92, 245, 19, 23, 35, 51, 233, 74, 379, 200, 140, 317, 214, 146, 219, 239, 43, 242, 60, 70, 326, 155, 269, 279, 13, 266, 157, 82, 306, 251, 312, 109, 299] + 18: [271, 85, 370, 86, 242, 281, 235, 258, 340, 358, 248, 268, 139, 230, 309, 249, 123, 352, 128, 250, 24, 66, 170, 273, 30, 29, 147, 226, 0, 325, 336, 287, 107, 372, 158, 259, 10, 36, 118, 202, 303, 21, 363, 4, 329, 302, 97, 93, 320, 349, 371, 76, 337, 220, 13, 366, 187, 274, 345, 1, 28, 32, 116, 121, 155, 81, 212, 48, 225, 132, 5, 312, 272, 236, 324, 357, 361, 75, 335, 23, 293, 277, 165, 186, 286, 266, 96, 90, 245, 348, 343, 153, 130, 91, 80, 160, 167, 223, 237, 298, 46, 41, 278, 161, 84, 221, 20, 295, 331, 6, 234, 144, 79, 262, 296, 172, 173, 247, 101, 27, 257, 70, 270, 210, 365, 137, 209, 196, 227, 94, 294, 2, 208, 243, 350, 44, 279, 285, 176, 133, 381, 239, 338, 83, 300, 339, 150, 146, 313, 347, 92, 206, 301, 49, 131, 95, 53, 383, 109, 346, 16, 297, 218, 306, 375, 203, 330, 254, 65, 26, 68, 89, 256, 201, 114, 284, 219, 369, 362, 310, 43, 307, 193, 244, 314, 276, 182, 63, 216, 179, 316, 52, 185, 113, 106, 124, 326, 171, 360, 367, 269, 238, 37, 379, 151, 178, 174, 25, 71, 87, 54, 8, 197, 184, 189, 143, 315, 355, 282, 265, 373, 19, 191, 261, 255, 51, 168, 198, 135, 304, 99, 188, 100, 299, 364, 204, 115, 112, 353, 195, 376, 33, 192, 291, 35, 354, 332, 141, 125, 252, 231, 129, 342, 251, 31, 138, 253, 117, 323, 232, 292, 40, 311, 264, 74, 77, 105, 380, 334, 73, 50, 200, 145, 157, 88, 62, 47, 69, 333, 166, 321, 215, 181, 199, 305, 39, 233, 108, 368, 351, 190, 241, 42, 224, 148, 82, 374, 267, 64, 222, 283, 213, 103, 154, 34, 263, 98, 142, 341, 56, 140, 67, 152, 260, 319, 159, 78, 22, 214, 177, 18, 344, 322, 163, 7, 45, 111, 169, 211, 12, 9, 119, 156, 38, 59, 327, 356, 110, 359, 14, 240, 207, 328, 122, 175, 288, 60, 127, 134, 217, 246, 280, 11, 308, 102, 229, 275, 194, 290, 17, 57, 3, 136, 378, 318, 377, 162, 72, 317, 58, 15, 180, 205, 104, 61, 149, 228, 120, 164, 289, 55, 126, 382, 183] + 19: [24, 124, 236, 371, 308, 324, 245, 225, 103, 344, 250, 175, 68, 138, 163, 137, 146, 326, 327, 169, 286, 98, 229, 370, 313, 194, 18, 69, 200, 221, 12, 78, 368, 155, 305, 320, 7, 375, 355, 122, 53, 329, 196, 198, 34, 129, 205, 100, 323, 301, 14, 318, 2, 202, 195, 249, 56, 378, 247, 254, 90, 51, 216, 73, 162, 361, 257, 119, 136, 374, 62, 263, 377, 296, 83, 300, 13, 172, 11, 186, 75, 131, 99, 224, 120, 82, 363, 113, 197, 54, 151, 23, 360, 253, 252, 10, 288, 222, 6, 55, 116, 149, 145, 274, 81, 133, 50, 72, 265, 328, 159, 20, 259, 208, 278, 110, 248, 237, 87, 381, 190, 213, 373, 337, 39, 271, 336, 41, 0, 168, 358, 319, 291, 70, 8, 183, 251, 321, 102, 96, 293, 176, 123, 127, 275, 42, 218, 28, 231, 27, 268, 341, 283, 342, 214, 3, 367, 276, 26, 383, 130, 107, 294, 185, 5, 351, 345, 230, 241, 364, 65, 171, 177, 233, 272, 140, 121, 92, 277, 40, 66, 306, 63, 280, 353, 192, 154, 118, 36, 201, 369, 269, 22, 350, 234, 331, 204, 322, 220, 93, 325, 25, 150, 267, 207, 57, 58, 266, 352, 33, 303, 382, 147, 340, 178, 148, 52, 179, 315, 262, 164, 97, 282, 30, 167, 199, 21, 76, 161, 105, 338, 310, 1, 144, 86, 281, 60, 309, 132, 109, 61, 256, 330, 243, 38, 372, 173, 165, 273, 125, 356, 37, 255, 35, 134, 104, 160, 158, 31, 284, 335, 365, 142, 232, 366, 112, 188, 307, 71, 260, 287, 189, 333, 334, 290, 209, 264, 184, 19, 170, 226, 311, 316, 174, 94, 143, 317, 49, 191, 212, 285, 141, 114, 117, 210, 152, 347, 47, 261, 29, 67, 206, 64, 238, 153, 354, 85, 246, 314, 239, 332, 223, 91, 279, 44, 15, 157, 77, 89, 17, 348, 379, 84, 43, 74, 187, 297, 295, 258, 376, 9, 156, 298, 359, 32, 139, 219, 312, 244, 115, 240, 108, 380, 270, 59, 343, 217, 95, 302, 292, 180, 227, 349, 80, 346, 79, 181, 106, 46, 128, 111, 101, 126, 339, 166, 242, 135, 203, 289, 16, 362, 4, 211, 48, 182, 88, 299, 304, 193, 357, 215, 228, 235, 45] + 20: [161, 151, 189, 328, 269, 131, 61, 27, 288, 281, 241, 72, 381, 129, 17, 167, 344, 107, 218, 127, 260, 262, 350, 253, 369, 214, 316, 70, 263, 64, 230, 137, 276, 297, 326, 249, 116, 207, 12, 383, 231, 11, 192, 179, 143, 255, 284, 345, 37, 63, 372, 147, 103, 162, 88, 54, 242, 41, 283, 251, 98, 73, 47, 226, 208, 123, 56, 348, 118, 190, 156, 239, 4, 324, 279, 180, 38, 149, 321, 313, 163, 331, 159, 338, 376, 330, 148, 106, 370, 275, 225, 67, 42, 135, 266, 117, 379, 304, 378, 265, 238, 248, 86, 319, 76, 329, 126, 314, 363, 220, 183, 373, 172, 164, 142, 22, 375, 261, 139, 181, 334, 26, 202, 204, 274, 108, 258, 155, 150, 168, 48, 333, 193, 19, 194, 209, 91, 157, 138, 210, 270, 175, 97, 113, 337, 30, 343, 240, 177, 293, 24, 59, 223, 89, 152, 215, 353, 278, 357, 195, 200, 62, 354, 311, 254, 290, 169, 199, 49, 14, 153, 128, 21, 358, 359, 267, 69, 250, 10, 237, 336, 46, 308, 82, 94, 346, 201, 134, 84, 341, 247, 221, 43, 120, 362, 289, 29, 74, 264, 219, 132, 349, 31, 44, 371, 364, 77, 233, 114, 125, 286, 115, 323, 95, 340, 206, 187, 287, 130, 145, 352, 205, 176, 367, 20, 28, 198, 299, 186, 105, 99, 182, 160, 112, 40, 33, 259, 280, 360, 124, 122, 13, 342, 224, 339, 244, 245, 15, 18, 39, 355, 133, 144, 322, 307, 305, 317, 347, 154, 60, 301, 3, 212, 356, 292, 306, 121, 75, 81, 211, 104, 380, 377, 51, 136, 5, 173, 83, 318, 171, 53, 229, 90, 296, 158, 232, 368, 111, 335, 140, 1, 257, 32, 16, 303, 312, 96, 295, 85, 52, 272, 119, 216, 109, 65, 196, 146, 361, 325, 300, 236, 285, 327, 228, 184, 374, 71, 243, 178, 256, 92, 100, 166, 222, 302, 8, 87, 174, 110, 79, 277, 217, 191, 58, 7, 68, 50, 66, 235, 141, 246, 309, 320, 203, 57, 102, 6, 34, 282, 45, 55, 291, 101, 35, 78, 351, 25, 310, 36, 197, 2, 188, 268, 227, 93, 165, 170, 298, 234, 271, 23, 0, 185, 273, 366, 332, 382, 315, 252, 213, 9, 365, 294, 80] + 21: [360, 212, 195, 127, 282, 85, 274, 136, 327, 228, 301, 93, 103, 19, 255, 225, 187, 356, 179, 309, 192, 350, 105, 334, 263, 90, 253, 256, 196, 343, 326, 100, 335, 359, 58, 285, 371, 226, 247, 240, 325, 267, 292, 143, 24, 276, 198, 258, 119, 128, 189, 97, 17, 375, 321, 330, 108, 265, 54, 32, 124, 277, 160, 26, 141, 59, 204, 114, 62, 164, 34, 98, 197, 194, 262, 111, 293, 248, 259, 303, 317, 106, 36, 56, 158, 205, 51, 345, 55, 33, 134, 154, 323, 110, 347, 311, 87, 167, 208, 186, 351, 297, 25, 12, 216, 383, 176, 61, 190, 92, 79, 357, 221, 52, 365, 246, 322, 68, 201, 261, 254, 83, 80, 64, 245, 273, 211, 315, 215, 332, 35, 241, 257, 250, 279, 89, 60, 310, 11, 77, 304, 272, 180, 219, 308, 333, 236, 72, 214, 361, 178, 131, 74, 123, 266, 342, 152, 376, 223, 157, 289, 270, 148, 294, 163, 73, 324, 306, 281, 177, 299, 149, 318, 113, 115, 147, 346, 107, 374, 102, 47, 302, 165, 120, 66, 206, 138, 125, 367, 239, 288, 264, 4, 316, 352, 53, 9, 118, 314, 126, 337, 362, 7, 271, 91, 3, 2, 150, 364, 287, 202, 381, 142, 331, 10, 252, 20, 28, 45, 57, 220, 280, 130, 31, 278, 222, 8, 340, 169, 260, 22, 86, 171, 71, 298, 129, 21, 181, 319, 251, 232, 132, 249, 200, 366, 312, 75, 182, 39, 354, 336, 217, 320, 18, 341, 161, 185, 377, 380, 379, 168, 42, 122, 382, 355, 230, 50, 234, 15, 70, 358, 16, 13, 353, 373, 213, 101, 69, 133, 369, 172, 117, 14, 5, 224, 339, 291, 104, 372, 203, 139, 137, 284, 313, 46, 237, 30, 193, 44, 283, 38, 63, 242, 1, 233, 116, 368, 78, 268, 41, 170, 156, 173, 23, 238, 295, 349, 296, 67, 300, 155, 95, 6, 305, 307, 82, 210, 88, 48, 363, 207, 338, 183, 109, 166, 191, 151, 29, 188, 243, 43, 209, 175, 81, 112, 344, 370, 290, 121, 140, 286, 0, 174, 84, 235, 184, 348, 275, 269, 378, 94, 199, 145, 218, 96, 65, 76, 144, 37, 27, 135, 40, 329, 153, 227, 159, 99, 162, 328, 146, 229, 244, 49, 231] + 22: [110, 154, 234, 2, 62, 265, 30, 293, 187, 247, 297, 107, 141, 287, 146, 197, 176, 142, 250, 91, 182, 310, 241, 205, 254, 129, 23, 202, 203, 354, 267, 162, 308, 168, 14, 217, 281, 363, 136, 133, 119, 32, 370, 31, 312, 196, 239, 145, 221, 50, 257, 18, 36, 21, 186, 290, 45, 245, 346, 143, 261, 92, 1, 320, 359, 157, 180, 66, 256, 243, 313, 248, 316, 72, 300, 83, 344, 192, 324, 85, 266, 165, 16, 302, 278, 383, 89, 150, 166, 314, 161, 135, 84, 362, 127, 140, 216, 339, 227, 301, 163, 81, 353, 307, 80, 121, 323, 103, 42, 259, 175, 54, 95, 277, 231, 22, 35, 106, 43, 137, 343, 100, 109, 212, 240, 11, 251, 173, 249, 255, 12, 40, 24, 5, 155, 67, 299, 364, 101, 169, 8, 185, 218, 46, 361, 117, 114, 148, 170, 264, 191, 86, 93, 57, 105, 282, 381, 238, 99, 376, 116, 229, 237, 41, 193, 87, 269, 270, 260, 20, 298, 58, 317, 360, 79, 273, 378, 296, 321, 208, 183, 27, 172, 61, 188, 327, 336, 17, 235, 47, 340, 289, 73, 365, 144, 305, 356, 151, 236, 309, 134, 189, 350, 223, 198, 29, 44, 164, 252, 125, 311, 283, 326, 275, 96, 152, 209, 332, 60, 160, 242, 246, 214, 78, 113, 120, 233, 124, 263, 115, 195, 219, 224, 10, 199, 88, 303, 38, 159, 271, 74, 352, 355, 292, 82, 228, 306, 358, 98, 75, 190, 253, 204, 112, 130, 318, 37, 295, 48, 279, 345, 131, 171, 379, 288, 147, 225, 65, 13, 123, 304, 210, 194, 26, 49, 102, 319, 178, 90, 280, 315, 118, 222, 347, 69, 52, 341, 375, 371, 276, 331, 322, 179, 139, 126, 382, 53, 357, 71, 77, 33, 138, 258, 108, 59, 285, 369, 325, 284, 153, 104, 6, 330, 348, 76, 232, 335, 274, 215, 338, 213, 272, 167, 373, 9, 201, 68, 374, 184, 174, 351, 7, 244, 291, 128, 368, 132, 34, 230, 200, 97, 367, 39, 329, 372, 122, 15, 149, 337, 181, 94, 63, 268, 333, 226, 220, 262, 55, 206, 64, 294, 207, 56, 156, 28, 349, 211, 70, 158, 0, 334, 342, 177, 111, 328, 4, 51, 3, 377, 19, 25, 366, 380, 286] + 23: [124, 81, 198, 158, 296, 235, 366, 37, 165, 138, 325, 183, 175, 253, 230, 83, 242, 110, 245, 139, 46, 360, 383, 381, 26, 374, 263, 82, 55, 278, 66, 5, 232, 205, 9, 49, 126, 309, 279, 284, 44, 91, 136, 169, 210, 303, 320, 291, 100, 149, 317, 119, 174, 207, 260, 23, 233, 354, 372, 88, 48, 209, 160, 102, 125, 99, 202, 77, 65, 266, 68, 310, 155, 180, 339, 355, 54, 87, 190, 144, 357, 152, 293, 35, 194, 220, 311, 73, 2, 16, 380, 299, 208, 53, 368, 246, 59, 121, 376, 181, 148, 89, 13, 243, 20, 118, 369, 166, 249, 177, 69, 283, 28, 170, 184, 288, 308, 327, 95, 36, 192, 111, 241, 312, 41, 223, 335, 274, 107, 76, 267, 277, 353, 56, 70, 128, 382, 319, 196, 40, 364, 108, 340, 112, 224, 12, 225, 378, 359, 361, 346, 286, 157, 254, 227, 39, 305, 84, 72, 349, 204, 211, 179, 168, 30, 45, 145, 92, 264, 216, 238, 215, 19, 206, 191, 261, 239, 185, 333, 219, 328, 321, 187, 200, 292, 262, 272, 34, 297, 97, 336, 344, 304, 331, 182, 173, 133, 373, 151, 114, 0, 161, 248, 130, 255, 240, 352, 131, 93, 113, 164, 343, 269, 62, 271, 222, 42, 10, 347, 358, 348, 38, 326, 231, 33, 154, 268, 189, 135, 50, 323, 116, 115, 8, 332, 32, 285, 96, 367, 79, 270, 120, 195, 17, 221, 14, 318, 21, 25, 256, 371, 214, 98, 176, 132, 212, 329, 75, 377, 129, 18, 294, 379, 193, 275, 362, 123, 11, 29, 218, 86, 228, 104, 61, 276, 363, 295, 337, 281, 162, 265, 301, 203, 78, 188, 3, 63, 60, 306, 342, 85, 134, 315, 6, 103, 146, 142, 122, 117, 7, 24, 51, 1, 229, 287, 106, 370, 150, 307, 273, 43, 322, 27, 289, 257, 290, 153, 375, 280, 302, 101, 141, 236, 64, 127, 147, 201, 298, 356, 213, 156, 313, 140, 316, 341, 178, 314, 330, 67, 94, 350, 199, 47, 52, 324, 234, 251, 15, 244, 71, 197, 365, 171, 58, 226, 31, 334, 351, 109, 90, 300, 57, 252, 172, 143, 259, 237, 159, 282, 258, 338, 186, 80, 167, 137, 74, 345, 250, 22, 105, 217, 247, 4, 163] + 24: [186, 167, 100, 181, 322, 242, 200, 115, 368, 198, 69, 314, 252, 29, 229, 383, 43, 124, 82, 264, 333, 253, 256, 298, 246, 261, 178, 349, 103, 219, 143, 76, 89, 187, 320, 17, 154, 199, 2, 327, 58, 74, 180, 352, 98, 179, 232, 152, 0, 84, 346, 224, 315, 239, 312, 379, 303, 241, 44, 155, 70, 15, 37, 16, 72, 60, 148, 36, 243, 75, 90, 151, 265, 280, 380, 112, 120, 196, 323, 127, 30, 130, 311, 34, 9, 286, 159, 285, 378, 343, 225, 11, 18, 194, 240, 132, 7, 365, 222, 28, 156, 308, 12, 238, 275, 25, 201, 300, 92, 91, 244, 68, 129, 358, 305, 377, 19, 8, 107, 248, 52, 81, 356, 119, 33, 1, 171, 169, 257, 288, 108, 73, 6, 228, 255, 5, 336, 49, 126, 284, 177, 125, 203, 281, 20, 221, 234, 131, 123, 141, 134, 4, 101, 102, 250, 270, 61, 62, 366, 138, 63, 99, 233, 42, 321, 48, 373, 86, 220, 211, 93, 272, 35, 325, 13, 66, 80, 319, 174, 206, 95, 290, 370, 295, 330, 283, 310, 204, 237, 57, 331, 364, 299, 372, 157, 205, 24, 226, 104, 41, 147, 249, 317, 218, 357, 223, 259, 105, 173, 149, 23, 262, 359, 276, 94, 278, 190, 65, 87, 277, 133, 164, 292, 184, 197, 56, 215, 67, 136, 121, 150, 114, 40, 45, 376, 153, 309, 175, 193, 183, 306, 263, 144, 137, 247, 340, 55, 213, 176, 208, 371, 227, 337, 39, 85, 348, 106, 338, 293, 324, 254, 345, 318, 267, 307, 279, 362, 192, 268, 334, 294, 251, 202, 10, 363, 170, 332, 266, 207, 374, 3, 118, 172, 301, 209, 77, 140, 188, 185, 27, 326, 360, 97, 258, 145, 287, 344, 235, 245, 353, 341, 210, 382, 231, 158, 216, 47, 166, 96, 26, 269, 329, 110, 64, 78, 302, 31, 355, 296, 191, 46, 214, 291, 304, 111, 22, 351, 369, 59, 273, 339, 116, 165, 271, 162, 79, 168, 142, 128, 212, 21, 260, 163, 146, 50, 113, 316, 160, 189, 122, 328, 381, 313, 354, 51, 274, 83, 367, 297, 32, 375, 135, 53, 282, 236, 109, 195, 350, 342, 161, 117, 217, 230, 182, 347, 38, 88, 139, 54, 361, 71, 335, 14, 289] + 25: [315, 329, 50, 283, 75, 266, 169, 156, 188, 129, 91, 123, 139, 33, 2, 249, 345, 292, 191, 250, 122, 285, 194, 178, 72, 295, 106, 330, 244, 281, 373, 374, 370, 6, 264, 198, 334, 56, 242, 143, 362, 87, 371, 15, 89, 277, 267, 255, 162, 13, 273, 115, 22, 300, 352, 96, 187, 257, 195, 148, 353, 348, 24, 318, 46, 291, 78, 84, 31, 311, 323, 108, 282, 223, 319, 278, 299, 290, 327, 357, 36, 155, 140, 286, 62, 65, 8, 231, 181, 206, 58, 203, 142, 71, 193, 157, 379, 220, 306, 51, 117, 308, 0, 347, 201, 293, 217, 147, 228, 271, 66, 367, 25, 114, 93, 338, 149, 358, 262, 95, 276, 200, 256, 127, 88, 238, 99, 263, 170, 270, 227, 137, 366, 113, 314, 202, 48, 138, 211, 111, 186, 177, 92, 189, 29, 53, 230, 197, 304, 38, 74, 322, 63, 313, 344, 356, 317, 102, 229, 324, 144, 274, 160, 307, 359, 103, 251, 377, 269, 332, 184, 120, 77, 253, 55, 258, 236, 210, 288, 303, 279, 235, 168, 171, 132, 152, 86, 42, 361, 225, 67, 16, 94, 309, 110, 43, 243, 64, 39, 272, 45, 185, 118, 44, 52, 47, 173, 135, 130, 41, 133, 381, 240, 335, 339, 151, 107, 296, 18, 233, 4, 17, 321, 121, 90, 174, 360, 382, 180, 23, 333, 226, 312, 57, 166, 316, 183, 32, 325, 208, 37, 145, 1, 364, 10, 326, 109, 209, 254, 234, 40, 163, 192, 199, 112, 337, 98, 369, 68, 204, 237, 275, 350, 221, 82, 97, 80, 331, 218, 259, 83, 35, 380, 126, 289, 21, 175, 9, 34, 5, 252, 85, 124, 54, 340, 182, 215, 261, 161, 100, 355, 20, 76, 375, 116, 179, 150, 26, 128, 241, 268, 164, 61, 159, 81, 248, 310, 105, 378, 165, 320, 176, 376, 346, 49, 125, 349, 216, 336, 302, 301, 172, 239, 12, 305, 60, 354, 154, 101, 73, 196, 69, 79, 27, 383, 212, 59, 7, 30, 207, 368, 104, 153, 245, 3, 260, 297, 224, 214, 298, 265, 70, 28, 158, 11, 365, 141, 232, 219, 19, 372, 247, 342, 284, 190, 146, 136, 14, 134, 328, 167, 119, 280, 294, 131, 343, 351, 246, 341, 213, 287, 222, 205, 363] + 26: [136, 346, 305, 203, 85, 147, 68, 322, 366, 169, 86, 139, 90, 208, 310, 189, 40, 168, 377, 3, 284, 234, 209, 309, 217, 75, 46, 210, 10, 368, 247, 287, 121, 1, 350, 288, 237, 227, 361, 156, 192, 116, 9, 65, 374, 52, 301, 72, 70, 274, 337, 270, 95, 326, 137, 372, 363, 235, 25, 54, 69, 194, 306, 193, 205, 352, 328, 4, 299, 148, 188, 141, 265, 204, 129, 231, 41, 364, 277, 294, 243, 106, 78, 218, 102, 380, 128, 44, 175, 251, 213, 311, 257, 345, 115, 324, 53, 181, 276, 245, 319, 182, 48, 177, 333, 93, 157, 300, 281, 355, 307, 7, 58, 145, 0, 164, 47, 264, 14, 91, 130, 232, 298, 286, 329, 105, 297, 302, 199, 2, 273, 81, 124, 101, 180, 244, 356, 113, 321, 100, 347, 348, 295, 12, 342, 338, 30, 249, 154, 327, 220, 32, 185, 23, 379, 303, 233, 76, 20, 200, 272, 163, 357, 221, 126, 331, 60, 22, 89, 344, 223, 359, 242, 84, 173, 37, 134, 103, 360, 334, 172, 191, 226, 263, 262, 198, 259, 349, 8, 140, 370, 358, 176, 88, 110, 63, 230, 43, 77, 323, 241, 122, 282, 71, 214, 332, 160, 97, 174, 117, 114, 367, 354, 28, 296, 219, 269, 376, 275, 120, 123, 99, 325, 222, 159, 330, 73, 336, 343, 184, 335, 167, 107, 250, 166, 381, 266, 118, 378, 119, 308, 18, 82, 238, 16, 13, 383, 155, 207, 252, 362, 55, 27, 201, 108, 314, 224, 293, 79, 62, 206, 187, 186, 56, 6, 153, 304, 131, 313, 66, 312, 215, 260, 268, 57, 19, 149, 80, 212, 125, 142, 152, 74, 239, 228, 29, 261, 96, 21, 11, 138, 162, 94, 132, 59, 248, 98, 225, 111, 216, 315, 61, 369, 135, 34, 365, 144, 165, 280, 382, 351, 373, 279, 371, 150, 196, 240, 317, 92, 179, 67, 143, 197, 283, 195, 339, 271, 211, 170, 258, 318, 158, 83, 202, 64, 35, 26, 36, 292, 289, 256, 253, 178, 375, 316, 17, 112, 42, 291, 229, 38, 341, 31, 104, 190, 246, 254, 353, 267, 255, 236, 33, 278, 127, 151, 146, 285, 87, 50, 171, 39, 45, 5, 320, 183, 340, 15, 51, 24, 161, 290, 109, 133, 49] + 27: [103, 146, 43, 39, 8, 331, 310, 302, 203, 209, 57, 255, 286, 234, 7, 207, 186, 162, 41, 372, 194, 240, 247, 243, 37, 161, 339, 266, 67, 201, 172, 142, 236, 192, 311, 200, 225, 300, 141, 278, 323, 42, 78, 20, 283, 138, 257, 100, 30, 69, 369, 187, 44, 230, 107, 63, 93, 155, 87, 363, 26, 250, 292, 11, 229, 352, 272, 35, 23, 319, 321, 244, 263, 362, 45, 279, 183, 32, 62, 337, 65, 111, 176, 220, 4, 125, 97, 199, 179, 51, 335, 184, 159, 91, 342, 86, 202, 303, 383, 197, 149, 106, 375, 224, 29, 134, 206, 173, 312, 124, 238, 118, 5, 254, 290, 19, 105, 64, 50, 355, 228, 333, 21, 109, 317, 3, 77, 122, 195, 340, 216, 210, 177, 71, 135, 94, 215, 330, 326, 367, 79, 371, 40, 92, 70, 293, 34, 376, 128, 271, 356, 382, 127, 322, 158, 357, 95, 81, 75, 49, 10, 154, 358, 85, 198, 169, 36, 163, 131, 349, 112, 193, 164, 188, 217, 256, 262, 96, 353, 22, 222, 190, 306, 196, 174, 316, 329, 315, 33, 370, 139, 246, 294, 0, 265, 341, 366, 314, 1, 143, 101, 6, 274, 170, 72, 307, 268, 189, 66, 99, 167, 270, 295, 147, 156, 152, 76, 88, 89, 211, 83, 258, 98, 171, 232, 277, 47, 123, 301, 12, 129, 132, 136, 379, 348, 148, 267, 287, 121, 276, 58, 59, 168, 248, 205, 332, 291, 137, 165, 324, 231, 282, 104, 343, 377, 269, 354, 347, 297, 309, 296, 38, 60, 361, 153, 108, 351, 320, 251, 175, 54, 249, 191, 130, 68, 298, 374, 90, 285, 345, 360, 48, 13, 344, 84, 218, 46, 17, 253, 145, 380, 114, 338, 260, 299, 264, 166, 110, 226, 212, 31, 80, 289, 373, 318, 368, 178, 242, 25, 365, 9, 346, 61, 275, 73, 102, 140, 308, 280, 181, 151, 120, 115, 261, 227, 327, 117, 82, 15, 284, 334, 28, 273, 235, 336, 150, 305, 119, 350, 237, 213, 126, 304, 14, 259, 157, 144, 364, 219, 223, 18, 241, 24, 16, 288, 214, 2, 313, 328, 53, 233, 281, 204, 113, 325, 133, 160, 56, 74, 359, 182, 180, 252, 381, 116, 208, 239, 55, 185, 52, 221, 245, 27, 378] + 28: [356, 151, 313, 147, 202, 212, 94, 336, 150, 343, 86, 54, 26, 172, 135, 229, 362, 89, 133, 360, 23, 276, 338, 73, 185, 296, 208, 33, 347, 266, 211, 348, 140, 254, 215, 298, 161, 233, 103, 304, 66, 184, 130, 76, 379, 377, 65, 301, 344, 145, 35, 125, 280, 118, 116, 81, 15, 156, 256, 138, 5, 368, 153, 350, 58, 0, 363, 29, 189, 40, 180, 353, 108, 321, 77, 142, 106, 175, 225, 322, 209, 62, 359, 18, 236, 253, 104, 154, 167, 264, 123, 159, 326, 131, 39, 1, 30, 93, 337, 331, 370, 182, 129, 210, 238, 218, 187, 83, 31, 117, 285, 98, 79, 260, 19, 227, 205, 45, 177, 323, 197, 162, 204, 170, 273, 289, 119, 305, 309, 160, 96, 27, 243, 328, 217, 318, 241, 339, 37, 194, 230, 141, 251, 291, 250, 320, 245, 228, 55, 324, 72, 364, 68, 6, 17, 11, 196, 74, 99, 220, 178, 24, 113, 112, 372, 345, 198, 257, 70, 310, 307, 242, 51, 36, 171, 237, 216, 124, 234, 14, 61, 85, 371, 199, 330, 195, 311, 134, 82, 290, 53, 56, 255, 176, 100, 67, 346, 165, 223, 380, 63, 292, 132, 60, 107, 369, 235, 44, 41, 375, 158, 163, 12, 287, 315, 111, 168, 122, 137, 28, 352, 13, 8, 284, 381, 351, 213, 10, 297, 312, 59, 32, 155, 136, 366, 91, 274, 146, 102, 46, 3, 272, 97, 319, 144, 90, 183, 174, 333, 121, 294, 335, 92, 71, 214, 95, 166, 222, 247, 303, 181, 114, 316, 9, 203, 169, 231, 258, 20, 221, 109, 267, 365, 64, 115, 354, 361, 317, 188, 224, 191, 148, 378, 358, 349, 207, 186, 268, 299, 25, 49, 193, 164, 192, 293, 270, 128, 252, 259, 275, 286, 340, 306, 246, 52, 43, 271, 308, 261, 57, 34, 334, 367, 226, 279, 232, 200, 157, 80, 314, 190, 143, 16, 281, 4, 288, 325, 295, 78, 278, 341, 332, 249, 48, 300, 84, 201, 248, 42, 357, 283, 327, 21, 75, 88, 139, 126, 38, 101, 244, 22, 374, 282, 7, 105, 373, 269, 262, 342, 50, 120, 47, 265, 277, 2, 263, 69, 240, 149, 355, 87, 382, 239, 127, 302, 152, 179, 219, 383, 376, 206, 173, 110, 329] + 29: [197, 285, 268, 185, 260, 29, 199, 1, 240, 115, 141, 212, 295, 124, 55, 75, 10, 2, 99, 213, 98, 206, 372, 222, 361, 122, 371, 263, 292, 138, 135, 13, 6, 66, 218, 342, 232, 243, 214, 289, 382, 70, 360, 261, 92, 338, 356, 117, 33, 44, 53, 255, 227, 251, 134, 161, 182, 109, 209, 321, 198, 129, 87, 120, 355, 191, 270, 101, 226, 278, 373, 132, 118, 94, 248, 332, 156, 234, 290, 284, 369, 42, 377, 177, 383, 341, 147, 158, 211, 37, 140, 90, 28, 24, 252, 350, 354, 106, 303, 38, 11, 208, 310, 231, 250, 179, 68, 91, 282, 370, 85, 25, 242, 189, 107, 178, 139, 143, 313, 108, 267, 364, 174, 26, 102, 43, 324, 368, 319, 170, 358, 381, 244, 277, 271, 31, 119, 7, 133, 46, 146, 69, 241, 84, 340, 173, 353, 47, 266, 309, 186, 288, 308, 157, 348, 344, 320, 97, 207, 275, 220, 296, 337, 32, 100, 126, 8, 165, 323, 333, 188, 359, 148, 57, 41, 9, 352, 144, 291, 322, 215, 366, 300, 283, 60, 302, 325, 0, 317, 224, 153, 142, 318, 202, 50, 16, 128, 306, 150, 125, 79, 287, 256, 276, 104, 183, 110, 172, 265, 200, 301, 81, 307, 105, 357, 330, 23, 12, 346, 273, 162, 347, 228, 204, 181, 293, 48, 281, 336, 14, 193, 331, 329, 294, 210, 315, 19, 121, 274, 238, 196, 74, 316, 314, 54, 272, 78, 61, 80, 151, 257, 192, 236, 298, 127, 159, 339, 259, 39, 205, 15, 249, 77, 96, 362, 171, 3, 311, 264, 45, 111, 187, 297, 64, 334, 335, 203, 58, 34, 160, 27, 328, 149, 155, 86, 374, 305, 327, 112, 103, 22, 76, 113, 72, 221, 376, 164, 237, 71, 56, 89, 379, 216, 262, 219, 380, 312, 83, 123, 299, 279, 201, 4, 67, 114, 225, 343, 351, 217, 36, 52, 367, 349, 286, 73, 378, 184, 304, 375, 154, 229, 131, 253, 59, 30, 49, 195, 51, 239, 176, 116, 365, 235, 194, 17, 245, 246, 254, 88, 137, 21, 167, 269, 223, 82, 95, 136, 40, 363, 247, 258, 175, 18, 280, 230, 62, 130, 190, 20, 35, 169, 152, 180, 163, 166, 65, 326, 345, 145, 93, 168, 5, 233, 63] + 30: [37, 301, 228, 268, 345, 8, 191, 189, 47, 380, 88, 322, 164, 182, 112, 117, 34, 192, 259, 165, 22, 354, 334, 131, 208, 106, 176, 54, 181, 146, 232, 82, 103, 178, 185, 269, 140, 159, 370, 79, 80, 319, 264, 101, 118, 39, 40, 237, 239, 61, 160, 167, 63, 287, 307, 127, 81, 267, 70, 31, 154, 141, 296, 379, 292, 111, 50, 93, 273, 99, 300, 327, 213, 258, 295, 151, 313, 180, 347, 288, 363, 365, 0, 249, 2, 75, 350, 336, 76, 62, 293, 166, 375, 226, 4, 238, 366, 107, 256, 304, 283, 241, 125, 90, 308, 310, 100, 368, 97, 306, 340, 344, 320, 58, 222, 72, 209, 324, 372, 305, 262, 349, 378, 223, 64, 132, 67, 203, 235, 367, 297, 314, 245, 7, 244, 95, 3, 170, 49, 280, 1, 57, 276, 108, 52, 38, 36, 357, 152, 130, 381, 352, 77, 5, 114, 25, 65, 242, 29, 312, 66, 333, 15, 383, 179, 255, 145, 16, 124, 275, 218, 315, 9, 71, 197, 284, 265, 171, 371, 113, 133, 68, 351, 298, 331, 162, 17, 60, 247, 326, 33, 251, 321, 10, 369, 123, 55, 224, 119, 183, 348, 190, 19, 323, 254, 317, 356, 271, 362, 155, 138, 198, 309, 382, 199, 201, 360, 168, 56, 248, 332, 286, 175, 229, 374, 216, 294, 219, 41, 45, 290, 172, 74, 188, 48, 277, 104, 353, 134, 227, 184, 214, 196, 11, 85, 115, 193, 253, 260, 136, 252, 311, 158, 147, 263, 210, 215, 337, 121, 359, 274, 129, 278, 139, 35, 272, 137, 316, 157, 325, 343, 202, 98, 230, 148, 94, 358, 373, 318, 27, 142, 43, 109, 220, 207, 299, 329, 83, 266, 28, 355, 243, 86, 18, 328, 174, 195, 102, 377, 32, 270, 335, 225, 257, 246, 376, 92, 200, 282, 339, 116, 186, 289, 53, 291, 12, 361, 91, 110, 44, 211, 233, 30, 26, 135, 59, 156, 364, 234, 236, 21, 163, 84, 73, 173, 338, 187, 46, 13, 341, 346, 217, 205, 149, 122, 126, 342, 281, 42, 206, 24, 250, 240, 51, 150, 261, 177, 23, 285, 221, 302, 6, 78, 89, 144, 231, 330, 14, 169, 194, 87, 128, 143, 204, 212, 161, 303, 153, 96, 120, 20, 105, 69, 279] + 31: [166, 90, 118, 80, 198, 318, 181, 382, 37, 132, 207, 229, 201, 257, 71, 79, 381, 256, 167, 18, 372, 322, 354, 230, 144, 191, 142, 183, 314, 74, 341, 347, 89, 127, 95, 289, 26, 158, 85, 302, 332, 190, 113, 13, 251, 358, 216, 377, 0, 135, 200, 119, 171, 244, 195, 193, 199, 246, 168, 228, 248, 299, 378, 87, 359, 81, 6, 259, 11, 350, 301, 340, 159, 353, 125, 136, 105, 14, 63, 362, 8, 154, 129, 323, 265, 98, 56, 197, 338, 109, 291, 67, 157, 151, 376, 117, 22, 368, 164, 239, 150, 180, 73, 64, 204, 226, 235, 184, 227, 320, 268, 270, 178, 153, 96, 373, 140, 366, 177, 271, 108, 215, 245, 267, 165, 367, 361, 329, 44, 205, 210, 126, 33, 325, 324, 134, 250, 305, 130, 202, 91, 214, 176, 273, 30, 249, 16, 319, 169, 277, 88, 12, 86, 253, 220, 203, 155, 261, 120, 59, 92, 222, 370, 213, 84, 254, 53, 54, 76, 334, 61, 266, 321, 217, 315, 263, 170, 260, 163, 357, 3, 252, 19, 138, 58, 175, 75, 55, 345, 344, 122, 161, 68, 70, 313, 29, 83, 309, 179, 194, 34, 196, 236, 311, 185, 231, 331, 380, 62, 112, 212, 20, 141, 42, 24, 104, 147, 192, 133, 290, 93, 49, 383, 328, 303, 139, 148, 242, 326, 116, 188, 369, 330, 371, 160, 1, 327, 94, 82, 47, 4, 355, 278, 306, 77, 281, 351, 374, 243, 182, 293, 234, 143, 348, 238, 279, 65, 316, 308, 339, 232, 285, 107, 35, 32, 131, 69, 17, 379, 241, 296, 211, 100, 272, 43, 295, 128, 41, 276, 346, 124, 102, 360, 258, 99, 274, 307, 10, 310, 25, 15, 36, 45, 78, 28, 123, 46, 52, 288, 225, 365, 335, 363, 60, 152, 40, 264, 209, 333, 27, 343, 149, 233, 292, 284, 247, 269, 38, 156, 103, 7, 375, 172, 312, 146, 208, 72, 97, 336, 286, 237, 352, 298, 66, 174, 110, 304, 145, 115, 106, 31, 294, 356, 342, 337, 162, 297, 101, 137, 23, 283, 187, 219, 186, 240, 287, 280, 224, 262, 51, 223, 111, 189, 57, 221, 39, 275, 282, 349, 218, 255, 5, 2, 50, 317, 206, 173, 121, 364, 48, 21, 114, 9, 300] + 32: [63, 98, 112, 95, 375, 262, 244, 169, 181, 338, 162, 265, 352, 120, 80, 312, 154, 304, 349, 245, 320, 57, 296, 226, 164, 246, 126, 113, 91, 54, 332, 165, 235, 300, 224, 259, 367, 38, 363, 111, 307, 378, 35, 133, 137, 216, 192, 267, 212, 268, 86, 195, 231, 188, 139, 41, 47, 17, 358, 90, 369, 183, 104, 382, 19, 214, 374, 356, 223, 167, 10, 379, 163, 172, 101, 354, 306, 299, 182, 308, 201, 118, 197, 251, 230, 30, 310, 229, 173, 292, 24, 276, 3, 39, 381, 255, 187, 130, 303, 136, 233, 254, 56, 29, 315, 72, 46, 15, 370, 341, 155, 243, 178, 157, 294, 196, 4, 119, 158, 295, 40, 49, 7, 151, 68, 109, 85, 77, 27, 211, 42, 302, 2, 8, 361, 297, 301, 305, 293, 12, 311, 159, 270, 11, 190, 51, 284, 99, 336, 64, 232, 288, 5, 62, 328, 114, 362, 61, 285, 168, 280, 313, 325, 50, 210, 128, 100, 177, 179, 107, 286, 55, 140, 237, 377, 76, 353, 331, 194, 147, 269, 199, 122, 103, 131, 36, 202, 203, 84, 176, 248, 290, 148, 350, 351, 166, 252, 281, 236, 289, 221, 65, 73, 191, 330, 342, 23, 258, 357, 213, 93, 333, 43, 366, 170, 123, 89, 106, 219, 69, 283, 129, 25, 334, 240, 180, 309, 52, 347, 28, 359, 175, 205, 314, 198, 317, 37, 102, 149, 326, 322, 324, 291, 348, 193, 319, 238, 343, 287, 117, 110, 318, 329, 209, 14, 273, 206, 200, 272, 249, 365, 32, 371, 242, 274, 241, 92, 81, 174, 6, 339, 45, 189, 253, 0, 316, 344, 66, 156, 116, 13, 383, 134, 228, 364, 31, 1, 22, 21, 141, 67, 184, 239, 376, 108, 171, 138, 215, 340, 125, 94, 250, 75, 146, 207, 271, 234, 247, 48, 97, 222, 264, 380, 345, 16, 227, 360, 60, 105, 321, 9, 153, 83, 152, 346, 208, 33, 373, 261, 87, 355, 78, 121, 18, 368, 79, 26, 275, 88, 279, 282, 53, 263, 34, 145, 372, 20, 44, 143, 323, 142, 185, 59, 337, 58, 256, 298, 220, 161, 277, 70, 218, 135, 186, 225, 204, 96, 124, 127, 74, 132, 217, 82, 160, 150, 327, 266, 71, 257, 335, 144, 278, 115, 260] + 33: [38, 382, 223, 338, 168, 333, 152, 277, 16, 372, 34, 220, 81, 197, 256, 55, 118, 284, 11, 330, 109, 26, 310, 359, 339, 72, 69, 8, 356, 209, 24, 326, 49, 161, 47, 128, 379, 62, 19, 105, 361, 300, 306, 363, 219, 85, 171, 287, 96, 66, 193, 147, 21, 273, 156, 102, 247, 178, 236, 315, 328, 4, 354, 78, 279, 232, 375, 268, 92, 249, 302, 120, 260, 327, 283, 160, 367, 1, 251, 20, 112, 371, 129, 23, 259, 360, 100, 12, 344, 122, 374, 324, 227, 46, 308, 142, 51, 86, 234, 380, 373, 108, 127, 61, 41, 110, 317, 313, 237, 314, 158, 381, 123, 57, 293, 134, 40, 77, 173, 99, 176, 103, 101, 205, 274, 289, 207, 188, 132, 221, 137, 271, 154, 63, 255, 170, 321, 50, 84, 272, 67, 238, 29, 365, 331, 89, 189, 214, 342, 239, 111, 309, 74, 88, 181, 383, 202, 291, 166, 222, 345, 264, 169, 276, 135, 368, 184, 175, 299, 320, 329, 376, 240, 226, 288, 138, 366, 28, 95, 295, 36, 68, 48, 14, 216, 204, 246, 350, 341, 185, 56, 213, 42, 194, 9, 364, 125, 292, 133, 378, 340, 10, 182, 186, 325, 335, 164, 225, 139, 107, 281, 76, 248, 286, 187, 357, 5, 37, 87, 266, 98, 196, 151, 106, 157, 6, 296, 243, 75, 351, 280, 116, 355, 150, 370, 30, 254, 131, 43, 73, 22, 200, 177, 290, 45, 115, 267, 70, 32, 253, 269, 180, 140, 297, 172, 349, 80, 312, 79, 352, 13, 245, 18, 159, 229, 179, 343, 261, 336, 346, 163, 233, 195, 59, 71, 119, 167, 242, 83, 141, 305, 191, 33, 104, 114, 294, 311, 228, 35, 304, 241, 348, 149, 262, 65, 230, 93, 136, 250, 353, 307, 270, 282, 31, 52, 347, 174, 162, 211, 334, 212, 143, 319, 58, 303, 358, 145, 60, 190, 369, 27, 318, 275, 285, 17, 206, 323, 362, 126, 39, 155, 263, 257, 332, 44, 97, 146, 192, 201, 231, 113, 198, 265, 218, 217, 252, 121, 0, 183, 148, 208, 322, 82, 3, 124, 235, 199, 298, 337, 278, 153, 258, 215, 377, 25, 210, 15, 7, 2, 165, 117, 53, 91, 94, 90, 64, 144, 301, 316, 244, 224, 54, 130, 203] + 34: [16, 369, 76, 351, 193, 375, 49, 273, 173, 365, 14, 252, 179, 376, 381, 341, 122, 38, 43, 139, 338, 132, 349, 378, 366, 101, 339, 169, 280, 350, 66, 279, 377, 212, 130, 140, 306, 102, 100, 186, 233, 71, 59, 202, 120, 316, 281, 307, 271, 48, 237, 302, 85, 55, 219, 370, 189, 164, 77, 297, 249, 21, 290, 97, 236, 37, 94, 161, 217, 352, 286, 255, 348, 54, 110, 277, 199, 75, 230, 180, 154, 152, 227, 213, 312, 41, 364, 153, 311, 272, 40, 47, 356, 143, 235, 125, 69, 83, 329, 254, 266, 292, 62, 168, 160, 288, 163, 363, 248, 17, 379, 53, 214, 216, 344, 234, 374, 174, 308, 22, 334, 299, 291, 238, 89, 195, 150, 322, 241, 50, 325, 242, 126, 31, 267, 4, 264, 90, 305, 360, 177, 285, 309, 265, 15, 276, 321, 56, 80, 346, 247, 11, 1, 45, 303, 245, 121, 99, 209, 260, 107, 181, 142, 228, 275, 166, 10, 182, 61, 332, 293, 187, 123, 12, 368, 328, 114, 9, 84, 268, 206, 124, 261, 208, 335, 287, 98, 223, 156, 73, 256, 296, 108, 79, 246, 298, 135, 33, 224, 157, 36, 20, 343, 313, 116, 289, 336, 317, 294, 354, 283, 128, 188, 30, 127, 52, 115, 58, 65, 175, 134, 131, 243, 51, 46, 282, 211, 284, 201, 91, 232, 92, 95, 145, 198, 342, 57, 105, 183, 320, 155, 70, 184, 81, 148, 42, 170, 221, 192, 32, 96, 103, 82, 0, 25, 29, 178, 324, 111, 371, 172, 323, 295, 165, 207, 149, 372, 203, 326, 144, 63, 93, 231, 251, 26, 39, 44, 300, 136, 226, 23, 151, 137, 87, 109, 28, 353, 310, 185, 278, 218, 244, 146, 3, 205, 314, 118, 274, 269, 106, 2, 74, 104, 239, 258, 112, 347, 19, 141, 162, 147, 257, 167, 304, 117, 315, 68, 64, 345, 24, 27, 176, 191, 129, 196, 259, 67, 250, 200, 367, 331, 301, 333, 229, 78, 171, 190, 8, 60, 225, 158, 159, 358, 204, 355, 253, 72, 362, 382, 263, 270, 138, 133, 210, 194, 380, 86, 7, 373, 13, 340, 330, 5, 240, 6, 113, 197, 319, 222, 262, 35, 215, 337, 357, 220, 359, 383, 18, 327, 119, 361, 34, 318, 88] + 35: [58, 159, 83, 261, 18, 16, 149, 51, 301, 40, 60, 291, 138, 76, 35, 132, 360, 145, 332, 118, 39, 228, 136, 146, 45, 326, 227, 128, 22, 333, 344, 194, 229, 294, 96, 293, 218, 329, 197, 337, 253, 11, 378, 66, 41, 154, 173, 134, 363, 5, 170, 264, 262, 192, 185, 198, 140, 368, 64, 303, 1, 28, 191, 247, 244, 362, 78, 27, 233, 13, 359, 361, 203, 340, 15, 56, 37, 287, 86, 178, 274, 241, 120, 302, 71, 268, 171, 308, 137, 3, 99, 348, 195, 323, 31, 309, 276, 92, 246, 278, 312, 161, 121, 351, 242, 238, 101, 199, 234, 217, 221, 100, 36, 335, 353, 2, 352, 213, 125, 328, 147, 379, 367, 215, 88, 381, 224, 380, 346, 374, 25, 266, 356, 345, 50, 169, 10, 292, 181, 57, 279, 271, 46, 177, 297, 240, 67, 202, 285, 327, 139, 290, 77, 167, 284, 208, 205, 93, 61, 52, 12, 370, 130, 260, 156, 263, 151, 316, 129, 82, 254, 4, 176, 108, 226, 109, 79, 97, 209, 166, 342, 186, 206, 318, 283, 143, 157, 189, 32, 123, 210, 286, 295, 14, 231, 336, 277, 214, 43, 338, 300, 354, 249, 371, 355, 232, 98, 306, 201, 188, 243, 269, 330, 81, 310, 251, 322, 80, 44, 29, 172, 21, 350, 59, 341, 94, 245, 0, 339, 75, 237, 182, 187, 349, 175, 85, 91, 223, 366, 252, 8, 68, 87, 236, 320, 48, 375, 267, 325, 334, 317, 288, 107, 275, 106, 256, 200, 235, 23, 225, 216, 141, 148, 155, 257, 72, 248, 20, 230, 305, 116, 19, 250, 150, 49, 365, 152, 314, 281, 315, 55, 220, 158, 65, 331, 383, 111, 255, 376, 211, 42, 184, 114, 165, 179, 17, 102, 63, 84, 124, 319, 95, 174, 372, 34, 131, 258, 304, 126, 196, 207, 135, 133, 115, 343, 163, 142, 160, 324, 164, 33, 6, 377, 313, 144, 162, 364, 382, 183, 190, 104, 180, 307, 296, 9, 153, 282, 47, 373, 311, 265, 119, 74, 298, 105, 127, 357, 219, 239, 113, 103, 168, 112, 204, 272, 110, 7, 280, 358, 73, 26, 222, 117, 289, 273, 369, 122, 90, 24, 259, 54, 69, 299, 38, 193, 62, 347, 270, 53, 70, 89, 212, 321, 30] + 36: [232, 164, 21, 215, 58, 188, 148, 329, 16, 307, 64, 52, 184, 373, 233, 197, 279, 14, 236, 214, 253, 313, 327, 82, 65, 348, 277, 291, 168, 69, 216, 334, 124, 292, 136, 227, 174, 222, 163, 166, 262, 157, 135, 346, 306, 35, 39, 186, 178, 332, 116, 212, 159, 77, 81, 220, 171, 113, 1, 360, 311, 352, 287, 84, 335, 36, 255, 319, 243, 278, 317, 128, 167, 142, 322, 331, 219, 358, 104, 34, 141, 117, 96, 302, 22, 288, 245, 362, 248, 94, 55, 365, 251, 336, 112, 29, 340, 132, 49, 71, 79, 150, 280, 118, 109, 269, 198, 180, 238, 297, 374, 305, 239, 130, 354, 31, 161, 350, 66, 375, 370, 193, 351, 9, 324, 72, 380, 257, 241, 143, 347, 363, 225, 98, 67, 7, 87, 133, 342, 200, 376, 264, 119, 6, 4, 149, 208, 191, 158, 44, 369, 154, 28, 80, 234, 27, 341, 5, 314, 152, 86, 201, 284, 59, 45, 301, 54, 330, 266, 57, 176, 271, 125, 32, 326, 18, 120, 235, 205, 127, 192, 261, 217, 276, 146, 310, 23, 173, 338, 8, 47, 355, 260, 333, 379, 345, 320, 199, 138, 256, 38, 46, 274, 15, 99, 175, 196, 209, 97, 73, 153, 224, 226, 249, 316, 37, 42, 296, 207, 126, 285, 337, 357, 240, 263, 89, 270, 26, 51, 371, 247, 179, 210, 228, 78, 121, 181, 254, 25, 273, 144, 62, 145, 20, 13, 105, 17, 356, 204, 187, 202, 151, 223, 272, 139, 259, 103, 237, 383, 68, 111, 19, 95, 123, 131, 129, 323, 134, 289, 309, 361, 244, 298, 281, 24, 170, 252, 185, 2, 90, 100, 265, 137, 108, 300, 83, 169, 70, 299, 349, 50, 102, 283, 160, 367, 344, 213, 218, 282, 312, 75, 3, 56, 230, 41, 61, 93, 378, 303, 308, 268, 381, 194, 368, 60, 140, 122, 110, 172, 165, 246, 229, 286, 221, 53, 88, 92, 76, 366, 372, 162, 328, 293, 85, 11, 290, 107, 325, 156, 359, 114, 364, 382, 318, 30, 353, 190, 48, 258, 304, 250, 211, 195, 33, 231, 206, 321, 189, 63, 203, 10, 12, 40, 294, 147, 267, 74, 182, 106, 115, 155, 43, 101, 242, 275, 295, 339, 343, 91, 0, 377, 177, 183, 315] + 37: [218, 276, 346, 75, 261, 239, 251, 28, 226, 263, 99, 288, 40, 163, 180, 378, 82, 246, 286, 220, 219, 111, 186, 84, 268, 66, 7, 376, 278, 144, 338, 177, 55, 238, 146, 119, 200, 59, 24, 38, 147, 224, 98, 83, 279, 265, 170, 236, 364, 379, 319, 171, 203, 256, 196, 307, 326, 12, 352, 31, 60, 52, 216, 355, 207, 331, 14, 138, 56, 291, 266, 8, 174, 205, 329, 13, 302, 357, 315, 57, 254, 35, 62, 201, 294, 193, 361, 253, 176, 15, 36, 102, 69, 210, 20, 70, 109, 162, 100, 191, 368, 231, 194, 134, 280, 241, 137, 300, 114, 118, 18, 151, 292, 3, 334, 157, 128, 103, 120, 110, 58, 74, 9, 5, 168, 235, 332, 155, 321, 27, 295, 281, 86, 129, 372, 6, 195, 354, 221, 250, 63, 232, 296, 249, 311, 277, 306, 283, 345, 284, 152, 260, 237, 165, 32, 271, 22, 46, 126, 343, 145, 107, 34, 267, 381, 347, 17, 142, 270, 105, 348, 106, 342, 169, 304, 325, 160, 45, 2, 26, 48, 328, 161, 289, 305, 215, 337, 173, 172, 359, 89, 230, 123, 95, 242, 133, 375, 380, 264, 141, 90, 130, 244, 67, 293, 64, 88, 257, 382, 77, 51, 1, 208, 117, 360, 370, 158, 65, 43, 209, 225, 228, 39, 80, 340, 166, 275, 282, 327, 68, 71, 383, 78, 185, 330, 317, 101, 367, 135, 25, 213, 76, 316, 41, 94, 335, 373, 122, 258, 274, 262, 159, 349, 222, 19, 139, 79, 320, 366, 297, 204, 212, 214, 23, 243, 301, 234, 198, 299, 153, 303, 44, 136, 310, 150, 96, 273, 93, 108, 365, 29, 353, 183, 192, 312, 124, 184, 91, 113, 131, 30, 199, 248, 190, 259, 104, 72, 181, 369, 350, 179, 309, 217, 148, 0, 182, 272, 33, 81, 374, 324, 54, 314, 211, 50, 188, 287, 351, 85, 112, 115, 308, 187, 356, 341, 344, 223, 333, 37, 61, 269, 197, 87, 10, 377, 339, 149, 156, 371, 362, 252, 322, 247, 189, 121, 42, 202, 336, 323, 255, 97, 154, 229, 73, 49, 227, 318, 21, 53, 4, 178, 125, 47, 290, 16, 143, 313, 116, 167, 298, 11, 358, 285, 363, 240, 140, 245, 233, 127, 164, 206, 92, 175, 132] + 38: [6, 363, 140, 325, 102, 64, 380, 346, 176, 185, 330, 133, 301, 374, 343, 361, 127, 1, 149, 375, 121, 232, 251, 96, 62, 203, 53, 271, 322, 310, 229, 132, 259, 198, 192, 340, 285, 32, 333, 10, 300, 268, 360, 23, 207, 217, 235, 98, 221, 309, 245, 262, 104, 299, 184, 261, 237, 151, 71, 281, 230, 208, 89, 331, 48, 234, 97, 329, 267, 353, 13, 191, 158, 379, 109, 68, 29, 80, 28, 377, 181, 314, 107, 60, 378, 83, 201, 311, 117, 108, 7, 72, 170, 138, 312, 75, 273, 308, 78, 246, 85, 295, 2, 240, 202, 36, 209, 164, 284, 86, 63, 233, 263, 367, 283, 41, 43, 79, 222, 336, 320, 188, 90, 327, 253, 99, 275, 175, 70, 348, 351, 134, 51, 278, 12, 225, 298, 179, 0, 58, 56, 81, 215, 350, 305, 279, 383, 21, 40, 84, 218, 224, 142, 356, 128, 291, 154, 115, 11, 194, 111, 112, 289, 131, 182, 87, 318, 101, 292, 129, 328, 228, 214, 199, 288, 5, 248, 226, 370, 231, 269, 178, 321, 145, 169, 105, 197, 161, 247, 382, 200, 15, 126, 280, 143, 345, 272, 9, 238, 44, 365, 211, 166, 77, 287, 139, 172, 55, 16, 31, 4, 39, 35, 204, 381, 368, 369, 366, 376, 252, 137, 244, 258, 173, 3, 306, 303, 205, 189, 30, 255, 106, 227, 341, 54, 270, 116, 74, 294, 335, 316, 49, 277, 213, 155, 276, 66, 183, 163, 148, 344, 33, 266, 92, 315, 150, 50, 26, 88, 307, 297, 82, 243, 304, 165, 319, 69, 177, 95, 324, 334, 347, 20, 296, 249, 364, 372, 123, 317, 187, 286, 37, 302, 122, 110, 65, 167, 46, 114, 250, 135, 59, 212, 373, 358, 260, 264, 160, 254, 113, 136, 332, 180, 349, 342, 174, 94, 125, 362, 147, 323, 61, 19, 27, 326, 355, 119, 219, 337, 14, 162, 241, 100, 186, 220, 93, 76, 256, 196, 103, 193, 91, 371, 52, 195, 210, 359, 34, 293, 17, 236, 206, 24, 67, 152, 153, 159, 242, 223, 354, 265, 171, 144, 73, 42, 18, 25, 146, 22, 47, 274, 313, 118, 282, 157, 120, 57, 190, 141, 168, 290, 357, 38, 124, 156, 352, 338, 8, 239, 130, 257, 45, 339, 216] + 39: [282, 262, 22, 224, 52, 350, 321, 12, 198, 334, 130, 209, 247, 373, 294, 296, 320, 324, 309, 318, 332, 73, 9, 165, 315, 357, 290, 86, 235, 180, 213, 339, 246, 291, 20, 44, 280, 286, 16, 114, 125, 229, 17, 39, 255, 173, 343, 204, 1, 98, 162, 336, 359, 238, 274, 245, 123, 32, 344, 288, 242, 319, 347, 369, 374, 379, 28, 34, 182, 5, 136, 361, 66, 139, 183, 250, 70, 323, 226, 193, 382, 202, 4, 115, 54, 96, 349, 85, 26, 84, 276, 257, 33, 124, 201, 23, 112, 121, 314, 328, 126, 156, 363, 171, 196, 55, 326, 256, 56, 272, 217, 151, 8, 190, 137, 24, 345, 72, 305, 237, 301, 46, 82, 277, 338, 6, 3, 106, 108, 325, 304, 148, 263, 360, 365, 253, 113, 259, 191, 155, 285, 15, 154, 169, 236, 80, 331, 128, 64, 97, 47, 161, 370, 194, 381, 184, 258, 49, 352, 260, 329, 48, 341, 131, 41, 287, 29, 138, 310, 218, 267, 335, 74, 117, 77, 215, 168, 353, 61, 371, 60, 225, 205, 120, 134, 51, 207, 222, 327, 19, 311, 103, 278, 95, 208, 185, 212, 147, 346, 293, 111, 354, 78, 94, 264, 76, 83, 356, 281, 219, 59, 275, 18, 228, 157, 89, 13, 62, 68, 186, 87, 7, 69, 206, 92, 316, 195, 214, 93, 268, 383, 174, 99, 164, 118, 21, 279, 88, 292, 11, 35, 376, 199, 42, 91, 348, 299, 45, 249, 366, 241, 375, 129, 0, 181, 251, 303, 75, 30, 297, 248, 233, 308, 133, 132, 266, 223, 322, 307, 271, 141, 150, 172, 232, 109, 317, 104, 119, 368, 220, 40, 58, 197, 135, 289, 140, 252, 90, 265, 176, 38, 110, 200, 377, 36, 364, 273, 175, 166, 149, 53, 187, 146, 79, 210, 298, 50, 102, 358, 284, 340, 189, 14, 71, 330, 170, 57, 63, 211, 380, 145, 283, 188, 105, 295, 372, 192, 243, 152, 254, 153, 239, 342, 67, 31, 300, 65, 2, 244, 81, 302, 203, 160, 107, 337, 179, 10, 240, 43, 362, 312, 163, 167, 270, 333, 122, 231, 230, 367, 216, 178, 313, 177, 378, 101, 127, 142, 144, 27, 158, 221, 261, 234, 25, 227, 100, 269, 116, 355, 306, 159, 351, 143, 37] + 40: [31, 5, 197, 214, 35, 300, 149, 20, 248, 22, 342, 117, 358, 376, 152, 72, 29, 353, 105, 144, 314, 134, 176, 83, 52, 137, 359, 341, 131, 362, 309, 198, 172, 86, 69, 103, 215, 128, 262, 307, 153, 97, 196, 111, 53, 124, 192, 126, 179, 306, 62, 260, 244, 188, 372, 109, 259, 58, 335, 312, 15, 204, 191, 257, 199, 287, 82, 223, 142, 379, 285, 233, 190, 159, 349, 274, 1, 256, 296, 288, 92, 13, 370, 203, 132, 340, 46, 201, 79, 25, 48, 316, 208, 252, 330, 146, 130, 253, 55, 293, 355, 139, 327, 315, 39, 138, 205, 246, 71, 255, 47, 76, 321, 238, 308, 164, 37, 173, 331, 121, 125, 360, 261, 224, 294, 107, 318, 7, 333, 295, 96, 278, 319, 136, 301, 91, 211, 346, 345, 102, 317, 209, 157, 4, 284, 161, 369, 74, 165, 229, 339, 150, 268, 51, 375, 240, 75, 68, 185, 33, 186, 279, 281, 155, 9, 217, 98, 381, 297, 43, 286, 65, 45, 151, 374, 243, 361, 377, 298, 23, 265, 118, 337, 88, 270, 311, 230, 70, 77, 382, 343, 42, 175, 241, 305, 61, 127, 373, 8, 154, 170, 119, 116, 120, 336, 28, 280, 44, 182, 160, 291, 54, 95, 356, 32, 352, 258, 11, 365, 110, 148, 302, 254, 264, 156, 206, 2, 212, 81, 56, 73, 228, 85, 322, 366, 18, 235, 135, 325, 234, 64, 183, 168, 187, 324, 80, 303, 59, 14, 34, 104, 354, 250, 219, 90, 216, 304, 299, 371, 162, 221, 163, 113, 194, 108, 12, 207, 273, 112, 84, 101, 282, 180, 66, 263, 310, 368, 326, 21, 60, 200, 313, 167, 141, 19, 174, 78, 115, 269, 266, 145, 184, 323, 218, 133, 181, 267, 169, 123, 226, 236, 289, 367, 290, 283, 271, 245, 99, 171, 26, 350, 140, 213, 378, 166, 334, 275, 94, 177, 338, 0, 143, 6, 363, 24, 158, 67, 10, 383, 63, 329, 147, 222, 27, 225, 380, 36, 332, 231, 87, 57, 227, 220, 40, 276, 251, 210, 272, 193, 351, 249, 237, 100, 16, 247, 347, 364, 178, 320, 344, 328, 129, 232, 30, 195, 38, 348, 17, 3, 106, 50, 122, 239, 202, 189, 89, 357, 277, 93, 49, 41, 292, 114, 242] + 41: [60, 101, 360, 138, 364, 53, 214, 267, 128, 149, 88, 37, 187, 90, 373, 293, 174, 368, 285, 148, 91, 245, 281, 357, 262, 370, 133, 345, 198, 299, 207, 8, 62, 227, 274, 132, 170, 95, 108, 110, 237, 56, 5, 178, 130, 225, 208, 20, 355, 369, 69, 123, 199, 154, 253, 93, 201, 68, 125, 287, 264, 116, 80, 327, 316, 353, 297, 147, 377, 333, 17, 7, 66, 3, 184, 229, 122, 200, 249, 0, 151, 209, 193, 175, 374, 215, 290, 381, 359, 243, 183, 85, 21, 233, 312, 106, 49, 172, 81, 103, 127, 339, 38, 157, 28, 356, 278, 58, 350, 145, 4, 313, 336, 347, 354, 143, 256, 288, 195, 137, 152, 64, 168, 311, 261, 50, 244, 71, 221, 228, 270, 2, 30, 189, 239, 240, 365, 92, 300, 115, 109, 375, 118, 40, 114, 269, 324, 328, 22, 153, 188, 171, 271, 296, 162, 263, 298, 205, 79, 140, 72, 317, 342, 349, 104, 341, 100, 186, 283, 307, 23, 210, 213, 113, 191, 204, 348, 167, 343, 309, 119, 367, 45, 18, 196, 135, 102, 340, 47, 220, 24, 48, 273, 173, 223, 351, 16, 105, 291, 59, 234, 89, 346, 29, 142, 15, 314, 87, 77, 318, 112, 276, 308, 94, 250, 164, 121, 82, 275, 334, 251, 260, 117, 33, 211, 248, 272, 295, 13, 150, 277, 329, 217, 247, 292, 194, 177, 67, 224, 282, 192, 34, 254, 279, 358, 222, 286, 258, 180, 218, 78, 10, 76, 242, 322, 363, 344, 352, 54, 26, 141, 216, 74, 31, 280, 366, 321, 155, 111, 231, 27, 98, 165, 144, 158, 320, 182, 190, 156, 97, 380, 42, 323, 35, 134, 65, 73, 39, 335, 202, 11, 246, 378, 338, 379, 257, 139, 176, 169, 361, 305, 131, 179, 241, 337, 294, 206, 99, 303, 36, 83, 236, 315, 197, 235, 268, 61, 332, 301, 9, 43, 63, 265, 219, 25, 306, 185, 326, 46, 181, 372, 259, 136, 203, 41, 124, 146, 255, 362, 266, 86, 302, 1, 163, 126, 14, 319, 230, 383, 129, 166, 212, 232, 44, 252, 284, 289, 55, 120, 52, 325, 330, 161, 304, 51, 12, 376, 19, 70, 107, 331, 226, 159, 96, 382, 57, 84, 160, 310, 75, 6, 32, 371, 238] + 42: [123, 142, 40, 340, 205, 242, 193, 248, 273, 163, 74, 95, 333, 283, 149, 90, 276, 364, 214, 271, 65, 381, 339, 46, 303, 70, 292, 251, 208, 289, 216, 346, 185, 25, 249, 81, 206, 201, 110, 77, 160, 100, 157, 382, 57, 66, 13, 199, 280, 337, 244, 192, 75, 354, 302, 154, 18, 186, 369, 304, 117, 297, 320, 196, 61, 295, 147, 34, 229, 173, 44, 58, 152, 278, 281, 370, 356, 245, 99, 358, 368, 54, 121, 83, 189, 366, 327, 212, 53, 222, 145, 5, 307, 106, 363, 294, 359, 232, 17, 22, 101, 35, 253, 296, 174, 252, 133, 361, 167, 217, 138, 151, 268, 59, 227, 360, 127, 107, 250, 159, 256, 50, 153, 259, 85, 38, 198, 10, 60, 311, 343, 324, 148, 1, 162, 156, 308, 345, 33, 112, 164, 197, 309, 51, 371, 353, 184, 344, 172, 329, 72, 224, 26, 182, 243, 27, 322, 319, 315, 379, 6, 223, 326, 92, 20, 91, 39, 269, 211, 357, 258, 32, 195, 161, 373, 21, 136, 98, 124, 64, 41, 181, 36, 158, 19, 45, 178, 225, 23, 3, 317, 9, 279, 380, 88, 239, 220, 377, 374, 275, 76, 15, 47, 299, 63, 31, 375, 351, 122, 188, 84, 372, 130, 338, 0, 144, 237, 52, 274, 349, 284, 341, 165, 43, 300, 335, 355, 11, 325, 105, 342, 203, 4, 140, 135, 221, 378, 219, 16, 24, 175, 226, 119, 126, 213, 146, 210, 187, 71, 177, 318, 240, 218, 262, 141, 115, 139, 49, 166, 190, 96, 331, 109, 68, 215, 305, 191, 362, 266, 169, 286, 82, 204, 257, 134, 376, 176, 132, 365, 265, 301, 93, 179, 332, 102, 334, 12, 194, 260, 129, 247, 285, 246, 282, 150, 348, 180, 143, 270, 86, 290, 228, 264, 328, 298, 73, 291, 230, 347, 272, 118, 89, 114, 113, 168, 7, 48, 236, 313, 352, 79, 137, 78, 310, 116, 231, 42, 209, 238, 170, 80, 56, 293, 323, 314, 288, 131, 200, 94, 62, 171, 28, 8, 255, 125, 235, 207, 69, 111, 263, 37, 103, 241, 367, 87, 316, 202, 330, 120, 254, 55, 104, 155, 267, 29, 350, 306, 277, 183, 336, 97, 14, 2, 108, 321, 233, 67, 312, 234, 287, 30, 383, 261, 128] + 43: [377, 348, 257, 373, 340, 213, 8, 104, 328, 310, 376, 325, 153, 65, 369, 270, 265, 281, 38, 321, 292, 110, 206, 115, 161, 145, 107, 323, 336, 183, 269, 120, 309, 130, 144, 7, 344, 189, 61, 224, 165, 178, 81, 77, 179, 362, 200, 176, 205, 44, 163, 118, 253, 374, 88, 160, 167, 267, 106, 96, 332, 227, 329, 235, 69, 293, 195, 311, 243, 361, 316, 350, 171, 82, 141, 33, 188, 356, 42, 186, 304, 29, 50, 172, 14, 337, 18, 177, 242, 214, 207, 93, 24, 47, 60, 320, 359, 32, 379, 98, 299, 222, 113, 231, 279, 31, 234, 166, 36, 375, 256, 317, 117, 102, 83, 201, 52, 169, 277, 125, 134, 131, 318, 204, 92, 289, 249, 26, 365, 244, 15, 119, 3, 349, 268, 366, 324, 108, 301, 264, 327, 158, 91, 41, 87, 97, 13, 305, 103, 112, 70, 45, 138, 151, 353, 276, 229, 39, 298, 363, 313, 11, 266, 135, 155, 286, 175, 21, 255, 210, 147, 283, 368, 322, 27, 159, 89, 226, 273, 241, 75, 152, 216, 228, 56, 157, 202, 84, 378, 51, 133, 294, 225, 55, 198, 223, 380, 261, 1, 215, 54, 25, 80, 184, 237, 142, 290, 345, 12, 288, 132, 197, 352, 306, 354, 124, 218, 284, 164, 57, 330, 308, 240, 355, 342, 307, 173, 139, 49, 150, 351, 30, 22, 360, 149, 193, 53, 258, 331, 187, 59, 46, 181, 156, 78, 76, 303, 300, 285, 16, 357, 383, 140, 43, 74, 48, 94, 79, 278, 295, 114, 382, 199, 208, 168, 274, 63, 154, 58, 109, 319, 17, 100, 90, 137, 245, 364, 315, 40, 116, 248, 192, 180, 146, 143, 68, 381, 128, 262, 343, 67, 148, 62, 339, 10, 2, 174, 85, 64, 34, 23, 326, 203, 28, 250, 9, 127, 230, 251, 358, 5, 370, 291, 297, 66, 335, 236, 247, 296, 185, 95, 333, 162, 232, 272, 372, 346, 20, 338, 196, 122, 126, 101, 121, 0, 19, 35, 71, 239, 194, 280, 6, 219, 314, 217, 367, 182, 334, 221, 105, 271, 123, 347, 191, 99, 233, 4, 259, 260, 302, 371, 252, 136, 263, 238, 86, 209, 211, 287, 312, 37, 212, 254, 129, 190, 275, 72, 170, 73, 220, 282, 341, 111, 246] + 44: [213, 361, 307, 206, 195, 81, 148, 129, 27, 297, 12, 65, 10, 174, 1, 349, 131, 320, 286, 132, 239, 192, 67, 363, 277, 350, 167, 321, 292, 289, 28, 368, 106, 281, 261, 133, 77, 230, 304, 193, 52, 303, 140, 126, 359, 37, 371, 322, 97, 224, 202, 98, 68, 356, 365, 161, 355, 20, 5, 50, 56, 300, 278, 99, 290, 276, 49, 159, 294, 316, 332, 60, 178, 279, 311, 135, 94, 0, 149, 87, 79, 357, 253, 162, 186, 378, 197, 313, 26, 119, 158, 62, 108, 19, 209, 373, 82, 221, 241, 218, 144, 296, 4, 341, 285, 334, 78, 152, 191, 63, 318, 196, 14, 16, 123, 237, 57, 314, 127, 150, 274, 13, 110, 210, 84, 282, 165, 335, 203, 80, 295, 139, 238, 145, 299, 329, 11, 198, 347, 138, 25, 73, 232, 143, 257, 215, 252, 369, 96, 117, 180, 367, 147, 47, 136, 354, 164, 124, 187, 21, 293, 43, 36, 249, 44, 377, 229, 176, 226, 302, 66, 155, 48, 211, 273, 243, 92, 240, 22, 153, 199, 271, 34, 212, 8, 269, 23, 114, 125, 246, 205, 128, 301, 122, 173, 258, 287, 263, 222, 71, 372, 338, 181, 308, 251, 267, 310, 340, 89, 254, 315, 305, 235, 190, 70, 216, 95, 379, 104, 46, 166, 265, 32, 242, 3, 134, 342, 88, 61, 141, 345, 172, 113, 59, 105, 6, 51, 228, 234, 208, 217, 247, 366, 225, 86, 69, 53, 130, 268, 2, 312, 111, 101, 362, 85, 163, 91, 170, 233, 9, 182, 375, 324, 31, 64, 370, 219, 160, 284, 250, 120, 260, 352, 103, 383, 283, 183, 76, 264, 175, 54, 90, 30, 118, 236, 40, 154, 116, 171, 266, 142, 275, 55, 29, 45, 248, 33, 109, 200, 115, 168, 328, 244, 107, 35, 72, 179, 201, 18, 298, 245, 41, 317, 280, 333, 262, 146, 291, 75, 337, 358, 194, 15, 112, 255, 288, 156, 325, 83, 306, 157, 204, 330, 259, 231, 344, 348, 177, 376, 102, 323, 100, 214, 184, 381, 137, 58, 189, 227, 93, 223, 17, 272, 346, 343, 74, 220, 39, 339, 319, 270, 327, 169, 331, 188, 207, 336, 353, 360, 256, 42, 374, 38, 351, 382, 121, 24, 380, 7, 326, 151, 185, 309, 364] + 45: [154, 74, 96, 102, 103, 193, 113, 56, 203, 304, 18, 174, 201, 226, 204, 168, 343, 58, 50, 169, 243, 336, 40, 137, 191, 227, 248, 365, 213, 224, 228, 177, 157, 130, 251, 312, 92, 210, 348, 253, 225, 320, 152, 156, 211, 6, 84, 148, 219, 262, 116, 322, 43, 284, 150, 309, 192, 214, 235, 270, 354, 257, 310, 8, 267, 230, 344, 12, 71, 266, 104, 335, 242, 293, 369, 143, 39, 189, 269, 328, 149, 127, 185, 83, 27, 23, 222, 76, 70, 271, 57, 196, 268, 259, 208, 237, 139, 47, 10, 247, 352, 16, 252, 323, 326, 195, 239, 11, 140, 0, 20, 3, 379, 218, 286, 142, 362, 289, 112, 300, 325, 258, 29, 32, 106, 197, 317, 217, 119, 37, 159, 244, 334, 105, 367, 35, 109, 373, 212, 272, 273, 321, 86, 205, 206, 279, 55, 372, 51, 281, 375, 24, 22, 111, 69, 14, 163, 285, 46, 85, 62, 120, 319, 66, 359, 93, 229, 77, 118, 7, 160, 155, 110, 241, 277, 381, 98, 340, 60, 263, 126, 25, 261, 68, 52, 182, 274, 288, 332, 36, 28, 347, 353, 275, 141, 345, 75, 305, 255, 327, 374, 283, 200, 31, 123, 41, 107, 233, 48, 188, 34, 63, 240, 67, 299, 377, 9, 199, 356, 198, 278, 368, 280, 231, 170, 296, 184, 172, 178, 166, 162, 376, 260, 360, 290, 1, 136, 124, 88, 19, 350, 246, 114, 122, 45, 250, 4, 138, 232, 282, 371, 194, 234, 254, 380, 330, 2, 108, 307, 302, 61, 287, 64, 181, 44, 161, 121, 308, 94, 370, 101, 82, 295, 38, 17, 294, 131, 346, 146, 173, 187, 73, 265, 144, 100, 53, 167, 132, 342, 180, 80, 383, 81, 179, 171, 378, 78, 90, 135, 129, 316, 134, 87, 115, 147, 264, 256, 99, 291, 311, 209, 221, 128, 79, 331, 382, 338, 186, 292, 202, 364, 355, 366, 315, 145, 133, 54, 245, 33, 361, 363, 91, 151, 215, 72, 65, 357, 324, 183, 276, 176, 351, 306, 15, 175, 89, 165, 337, 329, 249, 318, 207, 341, 297, 223, 333, 303, 314, 26, 313, 164, 42, 339, 21, 190, 59, 236, 30, 49, 220, 216, 117, 95, 349, 301, 13, 158, 298, 125, 5, 153, 238, 97, 358] + 46: [354, 274, 273, 32, 216, 251, 148, 27, 5, 336, 178, 61, 247, 19, 18, 98, 145, 71, 94, 84, 236, 293, 379, 122, 355, 146, 361, 16, 219, 196, 120, 20, 270, 36, 347, 279, 326, 51, 317, 272, 292, 190, 212, 60, 333, 151, 88, 325, 64, 210, 312, 369, 143, 28, 381, 334, 282, 200, 77, 356, 382, 80, 63, 260, 92, 95, 21, 376, 364, 50, 100, 82, 201, 337, 72, 8, 348, 130, 265, 372, 248, 54, 79, 350, 329, 367, 215, 205, 124, 304, 213, 302, 359, 375, 112, 118, 25, 286, 109, 153, 266, 291, 338, 193, 300, 0, 22, 134, 194, 254, 136, 161, 339, 285, 163, 208, 67, 119, 296, 167, 207, 340, 199, 139, 323, 202, 245, 278, 365, 174, 276, 349, 311, 4, 69, 114, 17, 206, 89, 186, 280, 116, 243, 225, 368, 316, 165, 301, 257, 268, 283, 259, 363, 43, 26, 237, 227, 214, 168, 23, 73, 321, 287, 164, 228, 371, 308, 383, 152, 314, 45, 177, 154, 158, 131, 297, 250, 261, 31, 252, 256, 224, 38, 55, 344, 290, 162, 83, 99, 306, 262, 107, 183, 102, 6, 113, 351, 9, 249, 373, 12, 159, 126, 330, 10, 58, 156, 78, 238, 105, 40, 2, 345, 173, 182, 3, 271, 378, 352, 169, 150, 360, 328, 141, 277, 331, 49, 1, 239, 305, 191, 157, 240, 289, 24, 357, 37, 13, 132, 184, 142, 96, 104, 233, 322, 192, 171, 15, 7, 198, 366, 220, 166, 133, 380, 33, 313, 125, 144, 332, 309, 307, 70, 288, 221, 346, 303, 46, 327, 218, 335, 86, 90, 81, 47, 281, 34, 75, 324, 362, 246, 176, 41, 42, 242, 127, 85, 175, 264, 160, 155, 110, 187, 62, 294, 343, 115, 255, 29, 226, 284, 241, 230, 35, 97, 147, 93, 103, 185, 258, 65, 135, 320, 203, 235, 197, 48, 358, 222, 179, 217, 310, 189, 181, 106, 253, 129, 66, 68, 188, 275, 269, 232, 342, 229, 108, 172, 121, 231, 377, 170, 299, 128, 39, 263, 137, 341, 180, 52, 44, 149, 101, 11, 234, 370, 223, 117, 138, 244, 87, 57, 319, 56, 204, 211, 30, 53, 374, 74, 315, 318, 14, 76, 140, 195, 111, 209, 298, 295, 353, 267, 91, 59, 123] + 47: [342, 190, 51, 250, 379, 214, 326, 128, 6, 167, 78, 145, 195, 265, 156, 2, 374, 38, 358, 236, 308, 191, 152, 142, 3, 136, 278, 26, 126, 297, 174, 133, 272, 318, 288, 365, 144, 141, 289, 22, 81, 86, 328, 96, 88, 381, 209, 221, 187, 183, 321, 173, 203, 108, 361, 344, 242, 226, 220, 56, 54, 4, 367, 129, 302, 61, 20, 331, 251, 186, 306, 92, 158, 140, 215, 177, 225, 194, 279, 161, 258, 182, 349, 256, 312, 227, 45, 345, 205, 317, 329, 213, 104, 277, 246, 219, 271, 357, 50, 241, 340, 41, 274, 132, 304, 310, 149, 120, 137, 127, 373, 67, 324, 275, 178, 30, 130, 253, 311, 7, 382, 207, 154, 170, 238, 1, 284, 106, 160, 82, 281, 107, 143, 286, 79, 223, 232, 122, 55, 267, 339, 293, 350, 323, 162, 37, 208, 179, 89, 228, 362, 98, 354, 325, 252, 116, 307, 123, 305, 175, 77, 21, 204, 360, 85, 335, 372, 369, 343, 341, 138, 348, 95, 139, 355, 247, 76, 12, 119, 150, 35, 168, 125, 63, 75, 69, 176, 15, 245, 292, 11, 94, 24, 229, 249, 230, 172, 266, 224, 99, 68, 148, 270, 165, 44, 135, 16, 363, 180, 218, 105, 259, 93, 83, 260, 13, 352, 102, 87, 192, 243, 131, 10, 52, 5, 70, 71, 114, 235, 40, 181, 280, 39, 211, 248, 370, 200, 28, 295, 84, 59, 257, 103, 0, 157, 301, 356, 117, 60, 346, 319, 147, 29, 48, 17, 273, 263, 376, 159, 299, 237, 336, 49, 196, 303, 19, 184, 193, 309, 210, 146, 101, 244, 296, 112, 47, 294, 43, 315, 282, 163, 72, 212, 111, 366, 32, 264, 113, 333, 73, 153, 198, 36, 377, 240, 383, 364, 31, 46, 283, 100, 330, 314, 359, 216, 202, 233, 27, 166, 164, 290, 268, 18, 197, 217, 53, 255, 320, 151, 378, 189, 269, 380, 222, 368, 155, 347, 332, 313, 316, 287, 9, 188, 254, 124, 353, 118, 262, 371, 115, 234, 375, 42, 322, 185, 261, 64, 199, 74, 34, 65, 338, 14, 231, 327, 62, 334, 351, 90, 66, 110, 80, 291, 97, 57, 206, 134, 337, 23, 58, 121, 25, 300, 285, 33, 201, 169, 109, 91, 276, 298, 8, 171, 239] + 48: [271, 379, 95, 317, 208, 278, 126, 188, 149, 36, 129, 84, 273, 302, 297, 31, 342, 275, 220, 364, 199, 331, 250, 153, 340, 44, 64, 190, 330, 256, 366, 169, 339, 243, 53, 137, 310, 295, 152, 370, 374, 113, 120, 203, 323, 349, 282, 30, 5, 172, 154, 121, 316, 93, 12, 33, 334, 327, 260, 114, 266, 99, 247, 202, 204, 241, 123, 322, 6, 106, 309, 361, 376, 354, 321, 171, 318, 237, 41, 350, 320, 68, 10, 308, 9, 142, 86, 345, 329, 125, 324, 11, 24, 269, 337, 217, 138, 90, 62, 179, 205, 197, 50, 352, 61, 206, 110, 175, 78, 77, 382, 227, 7, 85, 225, 43, 262, 332, 67, 8, 128, 287, 375, 91, 147, 19, 51, 373, 183, 156, 39, 371, 140, 381, 141, 38, 307, 380, 276, 0, 151, 122, 360, 184, 311, 288, 145, 259, 135, 170, 348, 48, 292, 71, 191, 300, 118, 263, 167, 166, 234, 212, 16, 80, 83, 356, 280, 163, 116, 216, 236, 72, 228, 161, 305, 75, 351, 27, 119, 222, 102, 131, 261, 4, 89, 245, 357, 298, 221, 87, 29, 176, 3, 313, 255, 192, 344, 25, 108, 195, 258, 66, 178, 211, 279, 253, 301, 272, 232, 185, 289, 231, 303, 338, 383, 46, 283, 104, 242, 107, 319, 336, 372, 168, 59, 13, 96, 2, 133, 20, 270, 117, 182, 32, 111, 22, 97, 37, 365, 347, 254, 130, 249, 55, 180, 363, 233, 244, 362, 215, 94, 165, 267, 177, 132, 155, 35, 257, 15, 150, 162, 70, 23, 160, 239, 223, 158, 115, 194, 367, 146, 181, 229, 157, 306, 201, 17, 112, 264, 315, 74, 326, 224, 40, 213, 304, 127, 54, 101, 290, 76, 378, 73, 358, 136, 355, 47, 60, 299, 359, 226, 268, 186, 148, 207, 346, 240, 100, 325, 82, 333, 265, 343, 52, 159, 293, 164, 187, 173, 377, 21, 42, 277, 219, 368, 291, 230, 193, 238, 286, 81, 218, 369, 134, 214, 248, 235, 65, 28, 312, 58, 328, 285, 314, 63, 98, 296, 105, 57, 26, 69, 103, 109, 92, 88, 341, 252, 174, 294, 196, 34, 281, 144, 251, 139, 14, 18, 79, 335, 246, 124, 209, 45, 353, 210, 189, 143, 56, 284, 274, 49, 200, 198, 1] + 49: [302, 147, 288, 64, 200, 3, 31, 252, 232, 135, 71, 217, 321, 53, 292, 22, 60, 343, 65, 15, 115, 336, 373, 144, 180, 233, 8, 324, 257, 378, 273, 267, 88, 26, 356, 42, 234, 332, 283, 75, 105, 109, 308, 20, 85, 102, 69, 317, 155, 45, 289, 260, 78, 344, 73, 158, 204, 55, 254, 352, 59, 272, 30, 16, 40, 93, 52, 11, 111, 328, 349, 247, 66, 56, 303, 27, 108, 146, 148, 366, 171, 113, 361, 211, 331, 286, 220, 136, 126, 243, 201, 83, 195, 35, 337, 300, 199, 275, 339, 128, 37, 103, 346, 44, 134, 166, 138, 350, 297, 224, 212, 18, 117, 281, 278, 36, 97, 165, 231, 167, 184, 150, 4, 280, 330, 196, 311, 7, 295, 320, 68, 21, 341, 38, 94, 238, 2, 149, 221, 185, 284, 223, 364, 145, 202, 213, 176, 186, 255, 355, 159, 177, 43, 189, 383, 106, 304, 333, 208, 264, 362, 271, 367, 380, 172, 48, 245, 51, 209, 91, 242, 70, 207, 153, 174, 92, 122, 19, 240, 29, 269, 250, 76, 61, 50, 251, 379, 170, 57, 152, 162, 119, 100, 371, 183, 133, 239, 249, 62, 47, 82, 87, 291, 123, 353, 374, 345, 298, 307, 25, 17, 182, 215, 316, 124, 357, 120, 58, 370, 351, 294, 276, 54, 363, 216, 14, 0, 285, 164, 310, 360, 372, 118, 77, 246, 74, 377, 256, 282, 222, 270, 23, 206, 41, 157, 210, 315, 104, 369, 137, 354, 227, 259, 197, 178, 49, 219, 235, 192, 198, 329, 132, 326, 24, 381, 312, 218, 277, 139, 127, 151, 287, 301, 12, 129, 309, 293, 306, 6, 95, 80, 290, 89, 241, 13, 116, 193, 237, 262, 266, 110, 313, 258, 169, 296, 265, 154, 10, 101, 244, 107, 327, 156, 175, 268, 376, 305, 81, 163, 98, 279, 168, 382, 187, 261, 314, 191, 334, 160, 190, 46, 96, 99, 203, 32, 365, 140, 194, 114, 335, 130, 141, 84, 229, 67, 347, 121, 323, 253, 299, 226, 205, 179, 143, 342, 263, 325, 348, 28, 34, 173, 228, 112, 236, 322, 318, 142, 90, 39, 375, 338, 9, 5, 161, 181, 86, 125, 274, 72, 63, 188, 131, 359, 230, 225, 79, 319, 248, 214, 340, 33, 1, 368, 358] + 50: [49, 2, 65, 241, 230, 330, 55, 364, 103, 93, 264, 83, 159, 195, 23, 64, 99, 278, 260, 46, 377, 120, 167, 179, 256, 138, 147, 346, 200, 79, 157, 82, 104, 276, 50, 70, 232, 76, 117, 87, 261, 199, 324, 323, 291, 279, 258, 8, 102, 380, 18, 217, 211, 47, 224, 202, 209, 115, 247, 118, 192, 152, 141, 39, 301, 160, 133, 155, 107, 265, 95, 283, 268, 275, 289, 156, 19, 284, 52, 218, 244, 231, 317, 365, 86, 242, 311, 342, 362, 252, 77, 293, 255, 73, 190, 84, 1, 253, 22, 37, 292, 16, 354, 355, 197, 285, 307, 234, 321, 129, 193, 125, 177, 215, 127, 108, 310, 126, 251, 257, 24, 229, 286, 178, 35, 203, 243, 382, 72, 273, 219, 59, 327, 295, 96, 248, 36, 216, 40, 331, 201, 154, 206, 131, 153, 38, 109, 62, 375, 267, 15, 17, 228, 61, 106, 182, 48, 325, 135, 262, 165, 121, 345, 175, 149, 329, 176, 20, 29, 58, 69, 371, 335, 166, 187, 294, 227, 326, 305, 21, 25, 45, 145, 94, 189, 185, 41, 226, 142, 308, 170, 225, 53, 164, 100, 328, 210, 186, 51, 381, 322, 339, 259, 221, 26, 348, 220, 128, 7, 296, 300, 113, 240, 91, 101, 266, 188, 353, 347, 351, 161, 299, 334, 66, 110, 281, 302, 222, 235, 146, 75, 212, 343, 370, 236, 367, 112, 13, 356, 237, 27, 119, 105, 363, 194, 274, 158, 309, 318, 4, 319, 98, 137, 0, 183, 333, 357, 151, 304, 163, 144, 116, 254, 143, 271, 366, 204, 68, 378, 181, 30, 239, 205, 263, 63, 245, 383, 14, 313, 360, 97, 123, 78, 90, 92, 31, 134, 174, 376, 162, 32, 373, 269, 287, 74, 246, 11, 44, 290, 136, 191, 56, 341, 88, 298, 184, 277, 6, 372, 272, 43, 368, 352, 369, 140, 9, 122, 312, 280, 198, 42, 314, 207, 85, 315, 114, 80, 34, 349, 208, 332, 180, 54, 336, 223, 213, 358, 250, 28, 169, 139, 12, 316, 60, 67, 132, 171, 148, 249, 359, 350, 168, 124, 196, 270, 238, 337, 71, 297, 173, 3, 130, 214, 282, 150, 5, 233, 89, 344, 172, 306, 303, 33, 81, 361, 57, 111, 288, 338, 10, 340, 320, 379, 374] + 51: [102, 377, 202, 159, 68, 291, 274, 249, 179, 318, 29, 155, 24, 348, 138, 45, 93, 142, 76, 217, 225, 332, 290, 154, 241, 215, 31, 356, 117, 351, 309, 2, 175, 181, 21, 158, 287, 5, 67, 143, 307, 56, 84, 174, 160, 256, 131, 121, 186, 124, 311, 34, 48, 289, 229, 187, 355, 184, 36, 135, 189, 95, 130, 40, 20, 306, 192, 43, 238, 14, 231, 236, 62, 23, 10, 198, 221, 97, 297, 127, 19, 78, 255, 4, 137, 60, 177, 278, 228, 368, 343, 259, 272, 248, 39, 22, 304, 303, 33, 126, 342, 146, 346, 226, 123, 41, 55, 57, 12, 235, 77, 323, 358, 8, 176, 59, 80, 92, 151, 267, 64, 195, 161, 37, 182, 144, 196, 74, 244, 263, 112, 381, 258, 26, 254, 288, 216, 82, 30, 285, 91, 199, 86, 61, 99, 69, 369, 253, 162, 191, 157, 213, 367, 172, 38, 242, 208, 173, 166, 183, 260, 239, 7, 90, 193, 96, 240, 109, 17, 147, 169, 359, 251, 232, 220, 190, 134, 227, 0, 302, 322, 301, 295, 87, 374, 341, 338, 32, 366, 50, 148, 319, 282, 271, 320, 218, 252, 212, 353, 234, 71, 13, 269, 125, 337, 111, 283, 360, 73, 350, 327, 300, 116, 194, 128, 27, 153, 277, 53, 206, 333, 170, 65, 89, 383, 149, 100, 261, 113, 79, 328, 88, 205, 164, 115, 51, 18, 120, 378, 15, 72, 325, 178, 201, 357, 349, 344, 81, 262, 214, 363, 310, 257, 246, 334, 237, 163, 66, 347, 317, 280, 365, 185, 156, 106, 211, 268, 340, 382, 335, 101, 326, 265, 364, 266, 49, 247, 219, 129, 354, 330, 324, 104, 11, 94, 298, 345, 58, 224, 119, 314, 150, 35, 98, 46, 279, 167, 376, 276, 245, 200, 264, 294, 47, 1, 308, 28, 9, 316, 42, 379, 339, 140, 284, 286, 171, 209, 315, 152, 25, 139, 197, 133, 296, 313, 204, 222, 75, 292, 281, 70, 52, 105, 44, 250, 243, 372, 373, 145, 136, 118, 362, 108, 85, 83, 3, 331, 54, 336, 110, 180, 299, 141, 132, 230, 165, 107, 370, 103, 321, 275, 270, 210, 312, 6, 380, 188, 203, 223, 361, 63, 273, 16, 375, 122, 329, 114, 352, 233, 371, 293, 168, 305, 207] + 52: [7, 57, 116, 105, 60, 159, 301, 349, 152, 98, 106, 375, 381, 120, 298, 44, 311, 322, 215, 188, 4, 94, 348, 156, 186, 92, 11, 219, 3, 316, 47, 117, 324, 51, 299, 181, 34, 362, 321, 230, 284, 271, 85, 256, 43, 229, 18, 310, 97, 371, 235, 33, 281, 337, 329, 341, 268, 351, 38, 36, 125, 131, 72, 263, 326, 84, 191, 317, 158, 251, 59, 21, 228, 221, 82, 289, 261, 269, 314, 89, 253, 149, 257, 353, 25, 138, 328, 377, 194, 343, 313, 347, 203, 244, 202, 28, 183, 225, 54, 78, 163, 305, 247, 227, 342, 282, 86, 39, 323, 83, 56, 114, 118, 277, 356, 133, 255, 65, 335, 1, 174, 64, 69, 308, 360, 331, 364, 145, 365, 9, 366, 42, 182, 248, 379, 258, 29, 155, 166, 27, 23, 119, 17, 340, 165, 336, 137, 115, 306, 252, 176, 237, 318, 204, 223, 113, 151, 266, 178, 167, 232, 101, 197, 315, 180, 19, 370, 199, 71, 30, 297, 24, 275, 276, 193, 378, 45, 179, 40, 264, 104, 73, 103, 55, 190, 173, 254, 210, 242, 200, 0, 62, 354, 288, 285, 205, 192, 259, 139, 361, 195, 15, 126, 135, 239, 130, 157, 102, 100, 296, 10, 302, 134, 109, 355, 175, 332, 206, 150, 77, 128, 333, 240, 234, 290, 112, 292, 312, 99, 184, 291, 286, 48, 143, 20, 93, 90, 238, 196, 5, 13, 189, 161, 168, 127, 208, 300, 146, 338, 294, 212, 265, 63, 53, 87, 246, 31, 132, 88, 260, 245, 75, 207, 110, 216, 358, 68, 309, 359, 144, 367, 303, 279, 49, 376, 201, 74, 140, 222, 198, 231, 270, 209, 293, 287, 220, 14, 280, 95, 224, 236, 172, 211, 233, 262, 35, 267, 278, 272, 162, 171, 217, 339, 213, 273, 383, 344, 243, 283, 164, 16, 241, 320, 346, 369, 96, 295, 67, 91, 22, 226, 148, 153, 122, 319, 41, 2, 325, 76, 26, 121, 363, 123, 136, 170, 81, 307, 372, 12, 177, 6, 214, 8, 350, 380, 352, 66, 373, 345, 107, 108, 52, 129, 61, 187, 147, 185, 330, 382, 374, 124, 334, 327, 169, 141, 79, 154, 111, 250, 304, 46, 218, 357, 37, 58, 368, 50, 160, 32, 80, 274, 249, 70, 142] + 53: [110, 307, 7, 344, 362, 177, 84, 321, 286, 98, 272, 265, 350, 211, 244, 314, 154, 93, 36, 11, 61, 18, 374, 48, 73, 228, 373, 121, 117, 130, 310, 223, 245, 263, 99, 123, 279, 162, 203, 85, 216, 97, 133, 212, 246, 172, 140, 165, 379, 60, 309, 37, 230, 219, 35, 305, 171, 90, 327, 355, 4, 142, 120, 239, 346, 285, 354, 105, 100, 79, 107, 124, 206, 196, 214, 191, 65, 183, 382, 5, 144, 255, 96, 364, 38, 174, 148, 32, 72, 353, 288, 137, 366, 318, 192, 77, 75, 134, 250, 306, 227, 262, 202, 184, 15, 329, 331, 316, 14, 226, 295, 69, 365, 348, 116, 44, 147, 55, 150, 114, 222, 368, 156, 320, 376, 293, 28, 207, 299, 241, 22, 153, 345, 325, 221, 266, 220, 6, 237, 338, 49, 9, 82, 89, 287, 302, 383, 25, 258, 311, 41, 229, 29, 63, 278, 51, 296, 273, 317, 238, 334, 122, 19, 200, 303, 179, 313, 213, 360, 103, 26, 257, 363, 204, 87, 371, 139, 253, 260, 190, 109, 209, 367, 351, 175, 268, 292, 201, 381, 304, 17, 182, 356, 347, 70, 243, 169, 270, 269, 259, 337, 161, 375, 267, 324, 176, 173, 86, 50, 326, 64, 315, 33, 242, 91, 43, 280, 240, 74, 333, 68, 178, 358, 339, 291, 199, 39, 210, 308, 166, 157, 323, 197, 231, 205, 185, 298, 102, 193, 378, 149, 349, 168, 53, 136, 254, 218, 131, 42, 233, 104, 290, 332, 129, 361, 342, 271, 236, 21, 312, 188, 40, 128, 30, 13, 186, 194, 159, 283, 335, 83, 56, 58, 264, 113, 1, 247, 146, 217, 372, 127, 359, 20, 152, 300, 54, 57, 181, 94, 158, 170, 52, 261, 59, 95, 31, 369, 340, 34, 135, 370, 8, 225, 297, 277, 12, 281, 62, 160, 141, 380, 343, 224, 46, 319, 275, 155, 3, 301, 251, 189, 106, 248, 0, 352, 23, 119, 78, 274, 215, 111, 235, 234, 187, 167, 249, 294, 232, 66, 2, 276, 341, 284, 10, 164, 208, 27, 151, 180, 145, 198, 81, 125, 88, 322, 115, 256, 289, 143, 80, 132, 16, 118, 112, 163, 47, 357, 108, 328, 76, 71, 377, 195, 92, 126, 67, 330, 336, 252, 24, 101, 282, 45, 138] + 54: [294, 134, 202, 362, 205, 342, 141, 160, 320, 382, 165, 266, 363, 244, 152, 354, 377, 58, 210, 321, 285, 59, 297, 36, 286, 21, 105, 183, 349, 307, 168, 208, 29, 52, 303, 313, 253, 346, 249, 112, 56, 114, 359, 60, 227, 194, 55, 145, 262, 153, 322, 118, 225, 63, 8, 218, 340, 374, 140, 256, 339, 186, 172, 301, 96, 201, 264, 2, 355, 367, 166, 239, 132, 174, 379, 38, 70, 298, 99, 309, 22, 293, 259, 193, 302, 283, 326, 44, 365, 310, 182, 65, 122, 139, 347, 104, 11, 214, 305, 267, 18, 163, 43, 144, 247, 51, 101, 74, 276, 50, 282, 142, 311, 375, 228, 73, 57, 351, 24, 241, 257, 164, 337, 108, 123, 292, 353, 136, 278, 9, 255, 350, 98, 299, 117, 265, 233, 330, 84, 272, 344, 341, 188, 175, 95, 308, 280, 19, 97, 376, 107, 198, 179, 371, 162, 195, 115, 34, 361, 80, 191, 319, 125, 173, 336, 277, 270, 315, 16, 41, 83, 323, 248, 81, 68, 4, 269, 178, 46, 324, 5, 17, 197, 47, 3, 223, 82, 229, 327, 364, 23, 100, 133, 109, 190, 113, 54, 91, 314, 26, 66, 333, 128, 69, 289, 119, 216, 372, 161, 332, 167, 171, 93, 110, 238, 0, 230, 121, 209, 325, 357, 181, 268, 176, 358, 373, 92, 78, 27, 135, 279, 221, 129, 369, 219, 271, 87, 383, 317, 263, 53, 48, 291, 335, 151, 260, 85, 243, 149, 49, 235, 116, 284, 158, 150, 185, 90, 30, 154, 64, 7, 184, 207, 200, 155, 169, 42, 246, 157, 213, 131, 75, 148, 33, 206, 318, 217, 187, 159, 254, 12, 111, 10, 72, 35, 170, 88, 334, 224, 329, 328, 215, 76, 20, 304, 352, 331, 39, 288, 67, 89, 306, 345, 130, 31, 15, 378, 124, 137, 203, 234, 366, 287, 189, 199, 86, 25, 251, 103, 177, 94, 237, 274, 252, 71, 120, 127, 348, 6, 156, 281, 261, 316, 211, 106, 222, 290, 296, 275, 147, 220, 343, 138, 77, 312, 79, 273, 212, 370, 258, 45, 40, 360, 126, 231, 146, 300, 61, 102, 368, 196, 338, 295, 381, 62, 236, 192, 232, 13, 37, 204, 226, 240, 356, 250, 380, 143, 32, 242, 180, 28, 1, 14, 245] + 55: [65, 334, 343, 372, 0, 172, 69, 132, 204, 25, 215, 359, 154, 62, 4, 5, 259, 138, 155, 156, 82, 96, 321, 285, 146, 164, 73, 55, 93, 349, 210, 324, 228, 266, 362, 305, 211, 166, 94, 189, 100, 22, 51, 373, 168, 135, 58, 120, 98, 218, 383, 114, 145, 265, 42, 193, 122, 336, 24, 205, 106, 342, 54, 256, 233, 241, 52, 139, 253, 109, 31, 83, 347, 185, 12, 64, 268, 240, 358, 95, 133, 19, 104, 148, 174, 227, 44, 41, 377, 125, 198, 195, 371, 217, 167, 335, 270, 35, 328, 232, 291, 111, 353, 364, 66, 310, 222, 108, 348, 219, 306, 46, 276, 213, 287, 258, 110, 338, 283, 313, 20, 78, 315, 340, 297, 161, 33, 365, 239, 153, 118, 57, 380, 67, 333, 49, 188, 105, 260, 257, 300, 201, 207, 141, 281, 90, 119, 263, 307, 250, 192, 89, 15, 255, 294, 14, 267, 6, 214, 352, 88, 28, 39, 85, 87, 284, 117, 223, 235, 47, 176, 45, 322, 209, 29, 312, 92, 181, 378, 244, 26, 136, 159, 329, 127, 9, 13, 99, 318, 337, 367, 147, 298, 126, 149, 339, 278, 375, 237, 366, 344, 229, 282, 140, 191, 299, 309, 277, 314, 84, 187, 38, 190, 32, 199, 142, 170, 27, 234, 254, 289, 280, 8, 171, 175, 143, 220, 59, 323, 226, 30, 11, 316, 369, 245, 184, 212, 76, 179, 351, 186, 2, 43, 182, 296, 91, 332, 208, 131, 162, 262, 10, 326, 303, 121, 368, 70, 330, 341, 77, 124, 225, 169, 196, 81, 75, 165, 200, 71, 160, 72, 101, 311, 374, 107, 197, 293, 86, 180, 302, 325, 331, 231, 247, 203, 137, 360, 264, 279, 63, 238, 202, 221, 269, 304, 274, 356, 224, 37, 21, 243, 308, 56, 74, 16, 130, 151, 112, 61, 68, 286, 158, 272, 271, 113, 292, 345, 251, 242, 50, 23, 357, 178, 379, 60, 103, 327, 183, 249, 152, 230, 36, 18, 236, 34, 275, 216, 116, 381, 134, 194, 290, 363, 150, 354, 288, 97, 128, 17, 80, 350, 206, 115, 102, 248, 157, 79, 376, 163, 261, 382, 123, 370, 48, 1, 246, 173, 346, 301, 273, 320, 144, 7, 177, 252, 355, 361, 40, 319, 53, 295, 129, 317, 3] + 56: [240, 287, 45, 131, 360, 142, 109, 192, 234, 180, 54, 152, 253, 280, 174, 315, 222, 110, 26, 173, 7, 208, 229, 41, 53, 261, 67, 344, 318, 74, 379, 367, 55, 61, 352, 37, 44, 51, 381, 118, 17, 358, 22, 257, 157, 380, 312, 25, 241, 18, 213, 366, 375, 365, 46, 50, 171, 215, 227, 90, 294, 4, 136, 79, 232, 64, 119, 357, 120, 115, 176, 373, 231, 206, 145, 95, 293, 295, 218, 348, 230, 130, 288, 246, 364, 178, 307, 49, 196, 297, 245, 252, 70, 149, 250, 183, 356, 351, 186, 284, 290, 114, 310, 165, 298, 139, 57, 211, 220, 201, 283, 313, 96, 132, 383, 268, 258, 296, 35, 277, 279, 221, 168, 113, 112, 300, 193, 217, 182, 347, 47, 124, 362, 306, 137, 100, 0, 282, 204, 21, 111, 316, 355, 146, 89, 150, 16, 121, 266, 12, 335, 155, 308, 153, 80, 202, 39, 225, 311, 19, 172, 2, 15, 83, 275, 346, 255, 103, 128, 242, 144, 126, 59, 133, 319, 60, 269, 27, 24, 85, 243, 363, 102, 291, 236, 378, 161, 185, 286, 333, 105, 354, 156, 343, 141, 73, 36, 162, 175, 93, 66, 65, 122, 301, 11, 158, 154, 382, 87, 207, 273, 170, 42, 263, 247, 63, 125, 251, 332, 317, 369, 214, 71, 13, 353, 58, 143, 314, 184, 177, 88, 327, 329, 371, 325, 330, 148, 272, 48, 29, 167, 239, 224, 159, 209, 338, 337, 331, 34, 212, 350, 32, 195, 106, 292, 237, 228, 135, 342, 134, 3, 56, 305, 376, 322, 188, 223, 9, 323, 370, 299, 368, 270, 359, 328, 254, 116, 107, 219, 147, 81, 20, 303, 123, 205, 341, 210, 68, 278, 92, 140, 324, 194, 304, 349, 256, 226, 84, 248, 77, 163, 82, 72, 187, 104, 28, 138, 97, 94, 6, 309, 345, 260, 249, 321, 14, 189, 160, 190, 62, 151, 238, 289, 108, 169, 30, 69, 33, 164, 276, 43, 52, 235, 38, 336, 76, 361, 281, 265, 101, 216, 31, 199, 339, 302, 10, 274, 78, 334, 5, 340, 374, 91, 181, 377, 117, 179, 271, 86, 262, 191, 372, 259, 198, 98, 8, 285, 203, 320, 244, 233, 200, 264, 40, 23, 75, 1, 267, 166, 197, 326, 127, 129, 99] + 57: [231, 287, 100, 168, 355, 192, 249, 216, 262, 131, 292, 301, 254, 55, 242, 41, 263, 50, 36, 256, 327, 126, 66, 376, 137, 324, 117, 3, 346, 143, 176, 379, 332, 96, 312, 372, 89, 253, 141, 238, 279, 186, 49, 20, 86, 116, 264, 149, 159, 314, 165, 364, 226, 382, 377, 59, 17, 218, 82, 221, 74, 29, 300, 4, 383, 283, 196, 173, 172, 219, 15, 105, 113, 53, 289, 296, 271, 316, 135, 302, 142, 38, 183, 234, 228, 128, 307, 371, 199, 366, 145, 291, 67, 127, 99, 45, 152, 0, 179, 224, 363, 248, 309, 182, 144, 374, 244, 174, 9, 207, 64, 338, 330, 114, 290, 367, 329, 166, 76, 19, 288, 136, 282, 169, 269, 187, 134, 12, 370, 334, 351, 247, 157, 294, 73, 251, 90, 119, 37, 339, 30, 48, 285, 124, 146, 205, 85, 368, 161, 21, 325, 24, 54, 110, 239, 245, 18, 356, 235, 295, 354, 209, 170, 139, 336, 229, 337, 200, 104, 335, 106, 147, 211, 257, 120, 171, 39, 328, 189, 63, 79, 272, 373, 93, 16, 190, 185, 151, 381, 230, 164, 215, 125, 233, 42, 268, 51, 31, 150, 1, 270, 181, 191, 260, 130, 276, 92, 321, 227, 103, 319, 310, 178, 225, 284, 46, 108, 243, 344, 304, 129, 14, 40, 91, 380, 195, 5, 293, 197, 44, 35, 28, 87, 365, 180, 122, 361, 112, 352, 75, 261, 6, 350, 88, 160, 61, 156, 47, 255, 250, 308, 348, 331, 27, 69, 153, 184, 101, 299, 7, 241, 62, 358, 315, 121, 94, 322, 84, 118, 345, 65, 369, 252, 194, 258, 213, 111, 220, 83, 281, 43, 58, 72, 378, 140, 138, 206, 202, 326, 278, 232, 167, 77, 163, 33, 133, 375, 71, 340, 343, 347, 2, 223, 78, 162, 311, 359, 353, 333, 267, 212, 210, 259, 25, 188, 56, 57, 237, 98, 80, 70, 52, 81, 305, 204, 277, 177, 298, 60, 286, 273, 23, 22, 13, 97, 34, 148, 198, 10, 246, 222, 317, 32, 115, 203, 274, 193, 102, 155, 306, 303, 266, 11, 362, 8, 123, 313, 357, 214, 360, 320, 26, 297, 318, 154, 240, 323, 95, 349, 132, 175, 107, 265, 217, 109, 341, 158, 342, 201, 68, 236, 208, 280, 275] + 58: [377, 317, 201, 38, 335, 32, 233, 215, 117, 240, 165, 184, 208, 253, 64, 286, 23, 363, 134, 109, 186, 364, 369, 209, 77, 6, 84, 294, 355, 324, 166, 17, 173, 95, 204, 195, 220, 371, 168, 158, 330, 310, 35, 51, 361, 164, 336, 354, 366, 88, 370, 309, 334, 138, 140, 150, 137, 296, 212, 115, 56, 131, 19, 181, 252, 278, 58, 53, 223, 362, 174, 157, 245, 243, 365, 80, 159, 154, 89, 302, 282, 30, 353, 295, 187, 376, 20, 267, 318, 172, 339, 228, 188, 279, 266, 162, 126, 290, 106, 75, 328, 231, 284, 323, 200, 70, 171, 110, 98, 12, 149, 280, 338, 170, 269, 24, 108, 62, 367, 29, 270, 222, 325, 261, 15, 259, 358, 293, 237, 25, 180, 225, 14, 119, 348, 199, 57, 101, 8, 127, 289, 45, 306, 113, 359, 217, 262, 356, 183, 316, 193, 329, 185, 287, 332, 74, 93, 281, 66, 90, 63, 229, 123, 291, 196, 382, 118, 313, 81, 227, 288, 50, 104, 352, 308, 136, 292, 381, 4, 221, 305, 179, 298, 68, 116, 76, 299, 132, 197, 340, 264, 46, 232, 177, 112, 345, 145, 129, 42, 304, 21, 265, 60, 37, 22, 96, 211, 203, 44, 219, 357, 86, 257, 41, 285, 169, 122, 360, 102, 320, 250, 254, 148, 341, 249, 327, 97, 82, 283, 3, 141, 242, 319, 234, 26, 1, 100, 65, 272, 213, 10, 205, 379, 73, 124, 373, 218, 375, 135, 163, 326, 111, 175, 277, 18, 39, 216, 190, 0, 71, 87, 260, 202, 83, 40, 49, 151, 256, 16, 72, 337, 59, 235, 331, 91, 128, 143, 276, 351, 92, 230, 153, 347, 27, 214, 160, 247, 121, 238, 61, 146, 189, 297, 239, 147, 191, 198, 105, 224, 52, 194, 161, 226, 13, 192, 322, 130, 47, 139, 167, 107, 142, 69, 31, 275, 301, 251, 255, 273, 54, 268, 300, 103, 9, 79, 380, 314, 34, 67, 5, 33, 133, 48, 349, 346, 155, 350, 344, 120, 207, 374, 311, 94, 176, 2, 28, 78, 144, 210, 36, 7, 274, 368, 333, 246, 182, 125, 258, 11, 206, 178, 263, 241, 85, 236, 303, 152, 343, 372, 43, 244, 342, 114, 156, 248, 307, 271, 312, 55, 315, 378, 383, 99, 321] + 59: [170, 322, 5, 129, 260, 179, 216, 227, 122, 154, 375, 215, 313, 219, 34, 233, 58, 206, 336, 349, 54, 156, 79, 268, 123, 316, 329, 225, 70, 220, 143, 255, 211, 350, 22, 188, 182, 223, 63, 326, 30, 210, 90, 253, 83, 207, 49, 347, 272, 232, 45, 23, 100, 37, 0, 107, 301, 1, 32, 108, 59, 300, 164, 13, 26, 284, 337, 145, 72, 47, 43, 4, 312, 10, 150, 198, 84, 131, 81, 381, 17, 57, 74, 189, 38, 376, 245, 185, 98, 87, 141, 134, 333, 192, 264, 139, 364, 234, 308, 294, 48, 315, 115, 118, 180, 230, 267, 239, 12, 282, 339, 212, 187, 148, 76, 295, 247, 31, 298, 99, 229, 342, 371, 257, 14, 174, 285, 330, 111, 161, 319, 68, 366, 29, 317, 270, 332, 261, 323, 231, 321, 11, 205, 104, 327, 320, 311, 191, 251, 93, 382, 157, 291, 126, 102, 228, 226, 355, 92, 374, 379, 186, 80, 166, 133, 177, 176, 361, 200, 7, 258, 25, 172, 249, 9, 56, 53, 110, 354, 360, 75, 372, 130, 105, 242, 236, 208, 67, 335, 61, 265, 116, 314, 146, 290, 149, 202, 296, 222, 346, 378, 69, 269, 310, 195, 334, 153, 82, 262, 281, 365, 78, 101, 124, 8, 3, 6, 293, 244, 103, 363, 65, 114, 20, 201, 217, 97, 27, 36, 89, 263, 306, 28, 147, 303, 165, 109, 159, 106, 125, 197, 151, 304, 155, 120, 243, 279, 246, 380, 283, 24, 235, 113, 60, 292, 266, 137, 370, 152, 328, 62, 71, 309, 351, 250, 383, 367, 248, 362, 35, 238, 344, 144, 117, 190, 88, 199, 214, 196, 19, 356, 51, 377, 280, 128, 287, 359, 163, 18, 95, 340, 160, 218, 21, 41, 193, 256, 271, 171, 167, 50, 142, 241, 348, 86, 252, 324, 358, 44, 121, 194, 96, 42, 353, 307, 273, 203, 184, 183, 345, 368, 138, 237, 286, 85, 331, 46, 112, 158, 178, 40, 240, 278, 369, 357, 77, 289, 299, 175, 213, 64, 16, 91, 162, 325, 136, 119, 55, 33, 94, 39, 135, 259, 52, 288, 15, 181, 318, 276, 341, 338, 224, 204, 302, 221, 352, 66, 173, 254, 275, 169, 343, 73, 274, 209, 373, 140, 297, 2, 127, 168, 132, 277, 305] + 60: [268, 175, 340, 63, 0, 62, 168, 378, 242, 325, 333, 201, 254, 54, 141, 26, 382, 375, 118, 30, 187, 198, 32, 89, 313, 12, 276, 304, 352, 79, 210, 138, 321, 301, 22, 288, 121, 247, 299, 269, 154, 49, 261, 235, 86, 336, 280, 150, 335, 314, 337, 87, 245, 379, 176, 73, 56, 105, 308, 275, 381, 27, 51, 132, 19, 370, 238, 17, 285, 191, 15, 376, 219, 123, 334, 230, 7, 293, 29, 259, 327, 231, 380, 147, 57, 88, 358, 360, 14, 23, 353, 305, 41, 178, 312, 250, 181, 364, 46, 91, 158, 163, 291, 252, 246, 156, 258, 196, 58, 115, 345, 43, 35, 349, 161, 9, 152, 144, 290, 253, 236, 149, 193, 211, 104, 25, 131, 228, 10, 200, 372, 221, 94, 4, 98, 8, 199, 151, 356, 61, 145, 315, 127, 82, 343, 300, 274, 222, 167, 241, 224, 100, 80, 267, 281, 13, 347, 217, 273, 84, 92, 225, 371, 146, 3, 328, 367, 116, 16, 185, 302, 170, 296, 354, 295, 95, 309, 65, 6, 282, 194, 162, 344, 128, 40, 90, 2, 270, 318, 129, 226, 182, 60, 240, 36, 215, 283, 134, 323, 294, 346, 53, 251, 286, 205, 165, 232, 172, 320, 284, 332, 227, 59, 111, 338, 383, 179, 55, 223, 137, 330, 310, 37, 24, 279, 106, 157, 45, 126, 112, 303, 81, 234, 287, 306, 255, 103, 68, 213, 317, 195, 139, 85, 42, 374, 44, 1, 341, 171, 369, 21, 77, 52, 76, 289, 174, 322, 101, 264, 69, 119, 377, 96, 272, 180, 78, 18, 108, 319, 122, 277, 183, 214, 206, 329, 67, 102, 75, 307, 153, 260, 39, 74, 71, 148, 355, 190, 218, 184, 297, 348, 20, 166, 203, 125, 136, 160, 216, 117, 324, 351, 83, 350, 133, 239, 192, 99, 186, 208, 357, 339, 33, 316, 248, 38, 202, 135, 326, 331, 197, 130, 177, 262, 110, 142, 311, 48, 278, 233, 155, 28, 11, 114, 93, 159, 109, 209, 373, 70, 120, 263, 5, 229, 169, 292, 50, 113, 366, 64, 188, 237, 143, 107, 243, 368, 361, 365, 207, 97, 66, 124, 212, 47, 140, 265, 362, 204, 342, 31, 173, 72, 249, 257, 189, 298, 244, 363, 359, 34, 164, 256, 266, 220, 271] + 61: [221, 67, 264, 239, 258, 362, 255, 265, 20, 171, 276, 152, 212, 166, 295, 139, 92, 235, 126, 70, 348, 87, 277, 106, 46, 24, 61, 311, 365, 234, 109, 116, 8, 49, 291, 242, 132, 248, 110, 374, 150, 308, 273, 102, 319, 252, 105, 58, 127, 310, 379, 275, 358, 270, 372, 300, 245, 364, 153, 31, 192, 184, 355, 136, 143, 172, 205, 124, 383, 71, 256, 220, 93, 38, 26, 75, 7, 85, 99, 269, 309, 130, 345, 189, 134, 56, 380, 117, 66, 202, 382, 298, 284, 138, 359, 304, 162, 203, 327, 278, 368, 122, 352, 113, 261, 223, 107, 12, 43, 361, 103, 55, 157, 230, 251, 60, 254, 229, 19, 96, 159, 305, 219, 144, 196, 213, 301, 233, 317, 375, 16, 147, 315, 313, 89, 178, 204, 174, 342, 328, 137, 376, 182, 283, 299, 5, 44, 120, 343, 21, 236, 243, 292, 363, 190, 334, 185, 186, 83, 64, 95, 303, 119, 84, 181, 11, 210, 288, 356, 50, 206, 285, 263, 323, 88, 232, 112, 28, 246, 149, 30, 279, 142, 6, 200, 51, 346, 337, 40, 39, 227, 187, 36, 371, 321, 240, 211, 146, 3, 62, 91, 80, 164, 180, 167, 216, 34, 241, 45, 154, 97, 57, 373, 193, 369, 94, 73, 231, 69, 349, 78, 47, 344, 360, 271, 318, 54, 53, 128, 135, 225, 207, 14, 228, 214, 1, 199, 111, 13, 123, 179, 86, 218, 208, 27, 121, 79, 237, 81, 249, 222, 287, 326, 151, 340, 195, 2, 170, 158, 320, 329, 268, 322, 104, 333, 76, 325, 68, 354, 129, 293, 65, 148, 331, 35, 0, 161, 209, 42, 338, 18, 224, 52, 175, 347, 63, 314, 353, 197, 25, 198, 286, 302, 238, 250, 33, 367, 306, 226, 140, 100, 201, 260, 72, 23, 330, 188, 290, 266, 145, 215, 41, 115, 351, 160, 125, 156, 370, 131, 289, 257, 262, 48, 217, 191, 253, 59, 163, 74, 280, 98, 133, 141, 155, 274, 377, 10, 316, 82, 324, 357, 168, 336, 267, 15, 272, 350, 296, 339, 108, 312, 176, 17, 282, 281, 169, 378, 29, 173, 366, 335, 37, 32, 114, 177, 90, 294, 183, 101, 259, 247, 4, 194, 381, 165, 332, 307, 118, 244, 77, 341, 297, 22, 9] +layer_updates_per_iter: 0 +num_slots: 384 diff --git a/configs/nvidia-master.yaml b/configs/nvidia-master.yaml index caa0a7e082..ec354578c4 100644 --- a/configs/nvidia-master.yaml +++ b/configs/nvidia-master.yaml @@ -5537,6 +5537,161 @@ dsv4-fp4-b200-dynamo-vllm-mtp: ep: 8 dp-attn: true +dsv4-fp4-gb300-dynamo-trt-agentx: + image: nvcr.io#nvidia/tensorrt-llm/release:1.3.0rc24 + model: deepseek-ai/DeepSeek-V4-Pro + model-prefix: dsv4 + runner: cluster:gb300-nv + precision: fp4 + framework: dynamo-trt + router: { name: dynamo-router, version: "1.4.0.dev20260807" } + kv-p2p-transfer: nixl + multinode: true + disagg: true + scenarios: + agentic-coding: + - search-space: + - spec-decoding: mtp + conc-list: [4] + prefill: + num-worker: 1 + tp: 4 + ep: 4 + dp-attn: true + additional-settings: + - "CONFIG_FILE=benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p4d-dep4-tep8-c4-b1-mtp.yaml" + decode: + num-worker: 4 + tp: 8 + ep: 8 + dp-attn: false + - spec-decoding: mtp + conc-list: [12] + prefill: + num-worker: 1 + tp: 4 + ep: 4 + dp-attn: true + additional-settings: + - "CONFIG_FILE=benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p6d-dep4-tep4-c12-b4-mtp.yaml" + decode: + num-worker: 6 + tp: 4 + ep: 4 + dp-attn: false + - spec-decoding: mtp + conc-list: [24] + prefill: + num-worker: 1 + tp: 4 + ep: 4 + dp-attn: true + additional-settings: + - "CONFIG_FILE=benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p6d-dep4-tep4-c24-b4-mtp.yaml" + decode: + num-worker: 6 + tp: 4 + ep: 4 + dp-attn: false + - spec-decoding: mtp + conc-list: [206] + prefill: + num-worker: 1 + tp: 8 + ep: 8 + dp-attn: true + additional-settings: + - "CONFIG_FILE=benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p1d-dep8-dep32-c206-b2-mtp.yaml" + decode: + num-worker: 1 + tp: 32 + ep: 32 + dp-attn: true + - spec-decoding: mtp + conc-list: [388] + prefill: + num-worker: 1 + tp: 8 + ep: 8 + dp-attn: true + additional-settings: + - "CONFIG_FILE=benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-1p1d-dep8-dep32-c388-b4-mtp.yaml" + decode: + num-worker: 1 + tp: 32 + ep: 32 + dp-attn: true + - spec-decoding: mtp + conc-list: [736] + prefill: + num-worker: 2 + tp: 8 + ep: 8 + dp-attn: true + additional-settings: + - "CONFIG_FILE=benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-2p1d-dep8-dep32-c736-b8-mtp.yaml" + decode: + num-worker: 1 + tp: 32 + ep: 32 + dp-attn: true + - spec-decoding: mtp + conc-list: [1152] + prefill: + num-worker: 3 + tp: 8 + ep: 8 + dp-attn: true + additional-settings: + - "CONFIG_FILE=benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-3p1d-dep8-dep16-c1152-b32-mtp.yaml" + decode: + num-worker: 1 + tp: 16 + ep: 16 + dp-attn: true + - spec-decoding: mtp + conc-list: [1389] + prefill: + num-worker: 4 + tp: 8 + ep: 8 + dp-attn: true + additional-settings: + - "CONFIG_FILE=benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-4p1d-dep8-dep32-c1389-b16-mtp.yaml" + decode: + num-worker: 1 + tp: 32 + ep: 32 + dp-attn: true + - spec-decoding: mtp + conc-list: [1978] + prefill: + num-worker: 5 + tp: 8 + ep: 8 + dp-attn: true + additional-settings: + - "CONFIG_FILE=benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-5p1d-dep8-dep16-c1978-b64-mtp.yaml" + decode: + num-worker: 1 + tp: 16 + ep: 16 + dp-attn: true + - spec-decoding: mtp + conc-list: [2626] + prefill: + num-worker: 5 + tp: 8 + ep: 8 + dp-attn: true + additional-settings: + - "CONFIG_FILE=benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4/agentx-gb300-20260811/dynamo-disagg-gb300-5p1d-dep8-dep16-c2626-b96-mtp.yaml" + decode: + num-worker: 1 + tp: 16 + ep: 16 + dp-attn: true + dsv4-fp4-gb300-dynamo-trt: image: nvcr.io#nvidia/ai-dynamo/tensorrtllm-runtime:1.3.0-deepseek-v4-dev.1 model: deepseek-ai/DeepSeek-V4-Pro diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 04ba9feb56..4a5e1f2ed0 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5953,3 +5953,13 @@ - "Use native EAGLE MTP (3 steps, top-k 1, 4 draft tokens) and golden synthetic acceptance length 2.49 for throughput; eval retains real verification." - "Follow the official SGLang DeepSeek-V4 Blackwell recipe, require nonempty SGLang server metrics, keep pooled AgentX connections alive, let AIPerf own HiCache warmup, and reserve transient MoE workspace at DEP8 c512." pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2577 + +- config-keys: + - dsv4-fp4-gb300-dynamo-trt-agentx + scenario-type: + - agentic-coding + description: + - "Add a DeepSeek-V4-Pro FP4 Dynamo-TensorRT-LLM MTP AgentX configuration for GB300 with ten disaggregated topologies." + - "Use NIXL KV transfer, deterministic MTP acceptance settings, and in-repo EPLB placement tables." + - "Image: nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc24" + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX diff --git a/runners/launch_gb300-nv.sh b/runners/launch_gb300-nv.sh index 27154c404e..65fab73b7b 100644 --- a/runners/launch_gb300-nv.sh +++ b/runners/launch_gb300-nv.sh @@ -218,6 +218,16 @@ elif [[ "$IS_AGENTIC" == "1" && $FRAMEWORK == "dynamo-sglang" && $MODEL_PREFIX = mkdir -p recipes/sglang/deepseek-v4/agentic cp -rT "$GITHUB_WORKSPACE/benchmarks/multi_node/srt-slurm-recipes/sglang/deepseek-v4/agentic" \ recipes/sglang/deepseek-v4/agentic +elif [[ "$IS_AGENTIC" == "1" && $FRAMEWORK == "dynamo-trt" && $MODEL_PREFIX == "dsv4" ]]; then + # DeepSeek-V4-Pro TensorRT-LLM AgentX recipes are version-controlled here + # and use the srt-slurm v1.0.36 release. + SRT_SLURM_MODEL_PREFIX="deepseek-ai/DeepSeek-V4-Pro" + git clone --branch v1.0.36 --single-branch https://github.com/NVIDIA/srt-slurm.git "$SRT_REPO_DIR" || exit 1 + cd "$SRT_REPO_DIR" || exit 1 + + mkdir -p benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4 || exit 1 + cp -rT "$GITHUB_WORKSPACE/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4" \ + benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4 || exit 1 elif [[ "$IS_AGENTIC" == "1" ]]; then # Agentic recipes use NVIDIA/srt-slurm v1.0.36. This is the upstream # version validated in InferenceX PR #2302 and includes per-node DP, @@ -355,13 +365,17 @@ echo "Configs available at: $SRT_REPO_DIR/" # Create srtslurm.yaml for srtctl (used by both frameworks) SRTCTL_ROOT="${SRT_REPO_DIR}" echo "Creating srtslurm.yaml configuration..." +SRT_DEFAULT_TIME_LIMIT="4:00:00" +if [[ "$IS_AGENTIC" == "1" && $FRAMEWORK == "dynamo-trt" && $MODEL_PREFIX == "dsv4" ]]; then + SRT_DEFAULT_TIME_LIMIT="8:00:00" +fi cat > srtslurm.yaml < Date: Thu, 13 Aug 2026 16:04:24 -0700 Subject: [PATCH 2/4] chore(changelog): link PR 2595 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在性能变更日志中补充 PR 2595 链接。 --- perf-changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perf-changelog.yaml b/perf-changelog.yaml index 4a5e1f2ed0..ddf330a063 100644 --- a/perf-changelog.yaml +++ b/perf-changelog.yaml @@ -5962,4 +5962,4 @@ - "Add a DeepSeek-V4-Pro FP4 Dynamo-TensorRT-LLM MTP AgentX configuration for GB300 with ten disaggregated topologies." - "Use NIXL KV transfer, deterministic MTP acceptance settings, and in-repo EPLB placement tables." - "Image: nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc24" - pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/XXX + pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2595 From 3b752aaaa6b3133c7ecae7f94987b288b24c306e Mon Sep 17 00:00:00 2001 From: Rohit Pujar Nagraj Date: Fri, 14 Aug 2026 10:43:19 -0700 Subject: [PATCH 3/4] fix: route AgentX through the srt-slurm frontend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将 AIPerf 请求和指标查询路由到实际的 srt-slurm 前端,并在预热失败后限时清理挂起进程。评测模式会移除强制接受令牌数设置。 --- benchmarks/benchmark_lib.sh | 50 ++++++++++++++++++++++++++-- benchmarks/multi_node/agentic_srt.sh | 9 +++-- runners/launch_gb300-nv.sh | 4 +++ 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/benchmarks/benchmark_lib.sh b/benchmarks/benchmark_lib.sh index 8cc894940f..bb19c7d0ea 100644 --- a/benchmarks/benchmark_lib.sh +++ b/benchmarks/benchmark_lib.sh @@ -1995,7 +1995,7 @@ build_replay_cmd() { # rolling TTFT/ITL/throughput block and emit it every 30 seconds. export AIPERF_UI_REALTIME_METRICS_ENABLED=true REPLAY_CMD="$AIPERF_CLI profile --scenario inferencex-agentx-mvp" - REPLAY_CMD+=" --url http://localhost:$PORT" + REPLAY_CMD+=" --url ${AIPERF_SERVER_URL:-http://localhost:$PORT}" REPLAY_CMD+=" --endpoint /v1/chat/completions" REPLAY_CMD+=" --endpoint-type chat" REPLAY_CMD+=" --streaming" @@ -2174,13 +2174,57 @@ run_agentic_replay_and_write_outputs() { local result_dir="$1" local replay_rc local validation_rc + local warmup_shutdown_timeout="${AIPERF_WARMUP_FAILURE_SHUTDOWN_TIMEOUT_SECONDS:-120}" + local replay_fifo="$result_dir/.aiperf-output-${BASHPID:-$$}" + local replay_pid + local tee_pid + local watchdog_pid + + if ! [[ "$warmup_shutdown_timeout" =~ ^[1-9][0-9]*$ ]]; then + echo "ERROR: AIPERF_WARMUP_FAILURE_SHUTDOWN_TIMEOUT_SECONDS must be a positive integer" >&2 + return 1 + fi echo "$REPLAY_CMD" > "$result_dir/benchmark_command.txt" + rm -f "$replay_fifo" + mkfifo "$replay_fifo" set +e set -x - $REPLAY_CMD 2>&1 | tee "$result_dir/benchmark.log" - replay_rc=${PIPESTATUS[0]} + tee "$result_dir/benchmark.log" < "$replay_fifo" & + tee_pid=$! + $REPLAY_CMD > "$replay_fifo" 2>&1 & + replay_pid=$! + ( + set +x + while _background_process_is_running "$replay_pid"; do + if [[ -f "$result_dir/benchmark.log" ]] \ + && grep -Eq 'Terminal warmup failure|Run aborted \(warmup_failure\)' \ + "$result_dir/benchmark.log"; then + deadline=$((SECONDS + warmup_shutdown_timeout)) + while _background_process_is_running "$replay_pid" \ + && [[ $SECONDS -lt $deadline ]]; do + sleep 1 + done + if _background_process_is_running "$replay_pid"; then + echo "ERROR: AIPerf did not exit within ${warmup_shutdown_timeout}s after warmup failure" >&2 + stop_background_process_tree "$replay_pid" "AIPerf" 10 + fi + break + elif [[ -f "$result_dir/benchmark.log" ]] \ + && grep -Eq 'Phase profiling \(profiling\) started' \ + "$result_dir/benchmark.log"; then + break + fi + sleep 1 + done + ) & + watchdog_pid=$! + wait "$replay_pid" + replay_rc=$? + wait "$watchdog_pid" || true + wait "$tee_pid" || true + rm -f "$replay_fifo" set +x set -e diff --git a/benchmarks/multi_node/agentic_srt.sh b/benchmarks/multi_node/agentic_srt.sh index 79a36da524..77c196c133 100644 --- a/benchmarks/multi_node/agentic_srt.sh +++ b/benchmarks/multi_node/agentic_srt.sh @@ -9,7 +9,12 @@ set -x INFMAX_CONTAINER_WORKSPACE="${INFMAX_CONTAINER_WORKSPACE:-/infmax-workspace}" source "$INFMAX_CONTAINER_WORKSPACE/benchmarks/benchmark_lib.sh" -check_env_vars MODEL MODEL_PREFIX FRAMEWORK PRECISION CONC RESULT_FILENAME DURATION +check_env_vars \ + MODEL MODEL_PREFIX FRAMEWORK PRECISION CONC RESULT_FILENAME DURATION \ + SRT_FRONTEND_HOST SRT_FRONTEND_PORT + +export AIPERF_SERVER_URL="http://${SRT_FRONTEND_HOST}:${SRT_FRONTEND_PORT}" +echo "Using srt-slurm frontend endpoint: $AIPERF_SERVER_URL" BASE_RESULT_DIR="${RESULT_DIR:-/logs/agentic}" BASE_RESULT_FILENAME="$RESULT_FILENAME" @@ -32,7 +37,7 @@ install_agentic_deps wait_for_agentic_servers_idle() { local timeout_seconds="${AIPERF_DRAIN_TIMEOUT_SECONDS:-1800}" local poll_seconds="${AIPERF_DRAIN_POLL_SECONDS:-10}" - local frontend_metrics_url="http://localhost:${PORT}/metrics" + local frontend_metrics_url="${AIPERF_SERVER_URL%/}/metrics" "$AIPERF_PYTHON" - \ "$timeout_seconds" \ diff --git a/runners/launch_gb300-nv.sh b/runners/launch_gb300-nv.sh index 65fab73b7b..003d76272b 100644 --- a/runners/launch_gb300-nv.sh +++ b/runners/launch_gb300-nv.sh @@ -228,6 +228,10 @@ elif [[ "$IS_AGENTIC" == "1" && $FRAMEWORK == "dynamo-trt" && $MODEL_PREFIX == " mkdir -p benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4 || exit 1 cp -rT "$GITHUB_WORKSPACE/benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4" \ benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4 || exit 1 + if [[ "${EVAL_ONLY:-false}" == "true" ]]; then + find benchmarks/multi_node/srt-slurm-recipes/trtllm/deepseek-v4 -name "*.yaml" \ + -exec sed -i '/TLLM_SPEC_DECODE_FORCE_NUM_ACCEPTED_TOKENS/d' {} + + fi elif [[ "$IS_AGENTIC" == "1" ]]; then # Agentic recipes use NVIDIA/srt-slurm v1.0.36. This is the upstream # version validated in InferenceX PR #2302 and includes per-node DP, From e4eff97c1bac46e51f846c5f85b9898dc3873138 Mon Sep 17 00:00:00 2001 From: Rohit Pujar Nagraj Date: Fri, 14 Aug 2026 11:06:14 -0700 Subject: [PATCH 4/4] fix: narrow AgentX frontend routing change MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将 AgentX 修复范围限定为前端路由,并恢复原有的 AIPerf 执行与清理流程。 --- benchmarks/benchmark_lib.sh | 48 ++----------------------------------- 1 file changed, 2 insertions(+), 46 deletions(-) diff --git a/benchmarks/benchmark_lib.sh b/benchmarks/benchmark_lib.sh index bb19c7d0ea..5c843fd473 100644 --- a/benchmarks/benchmark_lib.sh +++ b/benchmarks/benchmark_lib.sh @@ -2174,57 +2174,13 @@ run_agentic_replay_and_write_outputs() { local result_dir="$1" local replay_rc local validation_rc - local warmup_shutdown_timeout="${AIPERF_WARMUP_FAILURE_SHUTDOWN_TIMEOUT_SECONDS:-120}" - local replay_fifo="$result_dir/.aiperf-output-${BASHPID:-$$}" - local replay_pid - local tee_pid - local watchdog_pid - - if ! [[ "$warmup_shutdown_timeout" =~ ^[1-9][0-9]*$ ]]; then - echo "ERROR: AIPERF_WARMUP_FAILURE_SHUTDOWN_TIMEOUT_SECONDS must be a positive integer" >&2 - return 1 - fi echo "$REPLAY_CMD" > "$result_dir/benchmark_command.txt" - rm -f "$replay_fifo" - mkfifo "$replay_fifo" set +e set -x - tee "$result_dir/benchmark.log" < "$replay_fifo" & - tee_pid=$! - $REPLAY_CMD > "$replay_fifo" 2>&1 & - replay_pid=$! - ( - set +x - while _background_process_is_running "$replay_pid"; do - if [[ -f "$result_dir/benchmark.log" ]] \ - && grep -Eq 'Terminal warmup failure|Run aborted \(warmup_failure\)' \ - "$result_dir/benchmark.log"; then - deadline=$((SECONDS + warmup_shutdown_timeout)) - while _background_process_is_running "$replay_pid" \ - && [[ $SECONDS -lt $deadline ]]; do - sleep 1 - done - if _background_process_is_running "$replay_pid"; then - echo "ERROR: AIPerf did not exit within ${warmup_shutdown_timeout}s after warmup failure" >&2 - stop_background_process_tree "$replay_pid" "AIPerf" 10 - fi - break - elif [[ -f "$result_dir/benchmark.log" ]] \ - && grep -Eq 'Phase profiling \(profiling\) started' \ - "$result_dir/benchmark.log"; then - break - fi - sleep 1 - done - ) & - watchdog_pid=$! - wait "$replay_pid" - replay_rc=$? - wait "$watchdog_pid" || true - wait "$tee_pid" || true - rm -f "$replay_fifo" + $REPLAY_CMD 2>&1 | tee "$result_dir/benchmark.log" + replay_rc=${PIPESTATUS[0]} set +x set -e