From 642c6da17b167ac9729931cb2a8f2819005e4078 Mon Sep 17 00:00:00 2001 From: wangst0181 Date: Tue, 10 Dec 2024 11:05:29 +0800 Subject: [PATCH] multi-modal inference --- benchmark/plots.md | 1 - benchmark/tables.md | 266 ------- data/README.md | 24 - data/config.yaml | 19 - data/gen_data.py | 57 +- data/model_utils.py | 115 --- data/module.py | 67 +- data/omegaPRM_v2/llm_utils.py | 148 ---- data/omegaPRM_v2/omegaprm.py | 569 -------------- data/omegaPRM_v2/process_json.py | 97 --- data/omegaPRM_v2/readme.md | 71 -- data/omegaPRM_v2/run_omegaprm.py | 218 ------ data/omegaPRM_v2/run_omegaprm_multi_gpu.sh | 61 -- envs/MATH/__init__.py | 2 +- envs/MATH/data.py | 2 +- envs/MATH/prompt.py | 2 + envs/__init__.py | 4 +- envs/base_env.py | 3 +- envs/rstar/README.md | 9 - envs/rstar/__init__.py | 2 - envs/rstar/data.py | 26 - envs/rstar/eval_src/Evaluator.py | 409 ----------- envs/rstar/eval_src/do_eval.py | 143 ---- .../toolkit_for_MATH/latex_answer_check.py | 280 ------- .../toolkit_for_MATH/metamath_utils.py | 258 ------- .../eval_src/toolkit_for_MATH/parsing_lib.py | 247 ------- .../toolkit_for_MATH/simple_answer_check.py | 148 ---- .../MATH/decompose/decompose_prompt.txt | 37 - .../decompose/decompose_prompt_rephrased.txt | 37 - .../MATH/decompose/decompose_template.json | 7 - .../fewshot_cot_config--xijie.json | 10 - .../MATH/fewshot_cot/fewshot_cot_config.json | 22 - .../fewshot_cot/fewshot_cot_prompt--xijie.txt | 23 - .../MATH/fewshot_cot/fewshot_cot_prompt.txt | 23 - .../fewshot_cot/fewshot_cot_prompt_old.txt | 23 - .../fewshot_cot_prompt_rephrased.txt | 23 - .../MATH/fewshot_ost/fewshot_ost_config.json | 21 - .../MATH/fewshot_ost/fewshot_ost_prompt.txt | 42 -- .../MATH/rephrasing_prompt_template.txt | 27 - envs/rstar/rstar_env.py | 695 ------------------ envs/rstar/rstar_utils.py | 677 ----------------- figure/wechat_qrcode.jpg | Bin 297738 -> 253269 bytes preprocess/README.org | 11 +- preprocess/cli.py | 143 ++-- preprocess/src/data_types/__init__.py | 2 +- preprocess/src/data_types/base.py | 3 +- preprocess/src/data_types/converted.py | 48 +- preprocess/src/data_types/math_aps.py | 125 +--- preprocess/src/data_types/math_shepherd.py | 32 +- preprocess/src/data_types/prm800k.py | 311 ++++---- preprocess/src/data_types/utils.py | 86 +-- preprocess/src/preprocessors/base.py | 70 +- preprocess/src/preprocessors/math_aps.py | 206 ++---- preprocess/src/preprocessors/math_shepherd.py | 139 ++-- preprocess/src/preprocessors/prm800k.py | 270 ++++--- preprocess/src/preprocessors/utils.py | 37 +- preprocess/tests/samples_math-aps-tree.jsonl | 3 - preprocess/tests/samples_math-aps.json | 1 + preprocess/tests/samples_math-aps.jsonl | 3 - preprocess/tests/test_data_types.py | 52 +- preprocess/tests/test_preprocessors.py | 112 +-- prm/README.md | 2 +- reason/evaluation/evaluate.py | 41 +- reason/evaluation/evaluator.py | 14 +- reason/evaluation/methods.py | 74 +- reason/guided_search/rstar.py | 215 ------ reason/guided_search/tree.py | 30 +- reason/inference/lm_call.py | 10 +- reason/inference/rm_call.py | 2 - reason/inference/text_generation.py | 13 +- .../create_service_qwen2.5_math_vllm.sh | 19 +- reason/llm_service/workers/vllm_worker.py | 27 +- reason/test.py | 109 +-- reason/test_gsm8k.sh | 5 + scripts/eval/cot_greedy.sh | 7 +- scripts/eval/cot_greedy_mm.sh | 13 + scripts/eval/rstar_mcts.sh | 16 - 77 files changed, 904 insertions(+), 6262 deletions(-) delete mode 100644 benchmark/plots.md delete mode 100644 benchmark/tables.md delete mode 100644 data/config.yaml delete mode 100644 data/model_utils.py delete mode 100644 data/omegaPRM_v2/llm_utils.py delete mode 100644 data/omegaPRM_v2/omegaprm.py delete mode 100644 data/omegaPRM_v2/process_json.py delete mode 100644 data/omegaPRM_v2/readme.md delete mode 100644 data/omegaPRM_v2/run_omegaprm.py delete mode 100644 data/omegaPRM_v2/run_omegaprm_multi_gpu.sh delete mode 100644 envs/rstar/README.md delete mode 100644 envs/rstar/__init__.py delete mode 100644 envs/rstar/data.py delete mode 100644 envs/rstar/eval_src/Evaluator.py delete mode 100644 envs/rstar/eval_src/do_eval.py delete mode 100644 envs/rstar/eval_src/toolkit_for_MATH/latex_answer_check.py delete mode 100644 envs/rstar/eval_src/toolkit_for_MATH/metamath_utils.py delete mode 100644 envs/rstar/eval_src/toolkit_for_MATH/parsing_lib.py delete mode 100644 envs/rstar/eval_src/toolkit_for_MATH/simple_answer_check.py delete mode 100644 envs/rstar/prompts/MATH/decompose/decompose_prompt.txt delete mode 100644 envs/rstar/prompts/MATH/decompose/decompose_prompt_rephrased.txt delete mode 100644 envs/rstar/prompts/MATH/decompose/decompose_template.json delete mode 100644 envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_config--xijie.json delete mode 100644 envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_config.json delete mode 100644 envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt--xijie.txt delete mode 100644 envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt.txt delete mode 100644 envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt_old.txt delete mode 100644 envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt_rephrased.txt delete mode 100644 envs/rstar/prompts/MATH/fewshot_ost/fewshot_ost_config.json delete mode 100644 envs/rstar/prompts/MATH/fewshot_ost/fewshot_ost_prompt.txt delete mode 100644 envs/rstar/prompts/MATH/rephrasing_prompt_template.txt delete mode 100644 envs/rstar/rstar_env.py delete mode 100644 envs/rstar/rstar_utils.py delete mode 100644 preprocess/tests/samples_math-aps-tree.jsonl create mode 100644 preprocess/tests/samples_math-aps.json delete mode 100644 preprocess/tests/samples_math-aps.jsonl delete mode 100644 reason/guided_search/rstar.py create mode 100644 reason/test_gsm8k.sh create mode 100644 scripts/eval/cot_greedy_mm.sh delete mode 100644 scripts/eval/rstar_mcts.sh diff --git a/benchmark/plots.md b/benchmark/plots.md deleted file mode 100644 index 0c974a8..0000000 --- a/benchmark/plots.md +++ /dev/null @@ -1 +0,0 @@ -## ***OpenR*** Benchmark Results \ No newline at end of file diff --git a/benchmark/tables.md b/benchmark/tables.md deleted file mode 100644 index 322de2e..0000000 --- a/benchmark/tables.md +++ /dev/null @@ -1,266 +0,0 @@ -## ***OpenR*** Benchmark Results - -Here we present some preliminary results in the following tables. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GeneratorReward ModelSearchBudgetMATH
- Qwen2.5 Logo
- Qwen2.5-Math-1.5B-Instruct -
Math-Sphered-Mistral-7B-PRMGreedy$2^0$
Majority Vote$2^6$
Best-of-N$2^6$
Beam Search$2^6$
MCTS$2^6$
Math-psa-7BGreedy$2^0$
Majority Vote$2^6$
Best-of-N$2^6$
Beam Search$2^6$
MCTS$2^6$
Skywork-o1-PRM-7BGreedy$2^0$
Majority Vote$2^6$
Best-of-N$2^6$
Beam Search$2^6$
MCTS$2^6$
- Qwen2.5 Logo
- Qwen2.5-Math-7B-Instruct -
Math-Sphered-Mistral-7B-PRMGreedy$2^0$
Majority Vote$2^6$
Best-of-N$2^6$
Beam Search$2^6$
MCTS$2^6$
Math-psa-7BGreedy$2^0$
Majority Vote$2^6$
Best-of-N$2^6$
Beam Search$2^6$
MCTS$2^6$
Skywork-o1-PRM-7BGreedy$2^0$
Majority Vote$2^6$
Best-of-N$2^6$
Beam Search$2^6$
MCTS$2^6$
- Skywork Logo
- Skywork-o1-Open-Llama-3.1-8B -
Math-Sphered-Mistral-7B-PRMGreedy$2^0$
Majority Vote$2^6$
Best-of-N$2^6$
Beam Search$2^6$
MCTS$2^6$
Math-psa-7BGreedy$2^0$
Majority Vote$2^6$
Best-of-N$2^6$
Beam Search$2^6$
MCTS$2^6$
Skywork-o1-PRM-7BGreedy$2^0$
Majority Vote$2^6$
Best-of-N$2^6$
Beam Search$2^6$
MCTS$2^6$
- diff --git a/data/README.md b/data/README.md index 7e4ff50..b5cd5a2 100644 --- a/data/README.md +++ b/data/README.md @@ -4,30 +4,6 @@ A simple implementation of data generation of [Improve Mathematical Reasoning in ## Generating data -Edit the `config.yaml` file to set the model and other parameters. Input json file should be a list of problems and answers with key `problem` and `final_answer`. - -```yaml -input: - json_file_path: 'extracted_problems_and_answers.json' - -output: - file_prefix: 'math' - log_file_path: 'processing_log.log' - -processing: - initial_rollouts: 20 - num_rollouts: 20 - max_iterations: 100 - -model: - # supported model_types: "hf", "openai", "anthropic" - model_type: "hf" - model_name: "Qwen/Qwen2.5-Math-7B-Instruct" - model_args: - max_tokens: 200 - temperature_range: [0.7, 1.0] -``` - ```bash python gen_data.py ``` diff --git a/data/config.yaml b/data/config.yaml deleted file mode 100644 index c5ac976..0000000 --- a/data/config.yaml +++ /dev/null @@ -1,19 +0,0 @@ -input: - json_file_path: 'extracted_problems_and_answers.json' - -output: - file_prefix: 'math' - log_file_path: 'processing_log.log' - -processing: - initial_rollouts: 20 - num_rollouts: 20 - max_iterations: 100 - -model: - # supported model_types: "hf", "openai", "anthropic" - model_type: "hf" - model_name: "Qwen/Qwen2.5-Math-7B-Instruct" - model_args: - max_tokens: 200 - temperature_range: [0.7, 1.0] \ No newline at end of file diff --git a/data/gen_data.py b/data/gen_data.py index 36f9657..6a17210 100644 --- a/data/gen_data.py +++ b/data/gen_data.py @@ -1,23 +1,7 @@ import json import logging from datetime import datetime -import yaml from module import Node, perform_rollouts, process_annotations, calculate_mc_score -from model_utils import LM - - -def load_config(config_path): - """ - Load configuration from a YAML file. - - Args: - config_path (str): Path to the YAML configuration file. - - Returns: - dict: A dictionary containing the configuration. - """ - with open(config_path, 'r') as file: - return yaml.safe_load(file) def load_json_file(file_path): """ @@ -35,7 +19,7 @@ def load_json_file(file_path): def setup_logging(log_file): """ - Set up logging configuration to output to file and console. + Set up logging configuration. Args: log_file (str): Path to the log file. @@ -46,31 +30,11 @@ def setup_logging(log_file): format='%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) - - console_handler = logging.StreamHandler() - console_handler.setLevel(logging.INFO) - formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S') - console_handler.setFormatter(formatter) - - root_logger = logging.getLogger() - root_logger.addHandler(console_handler) - - logging.getLogger("openai").setLevel(logging.ERROR) - logging.getLogger("httpx").setLevel(logging.WARNING) def main(): - # Load configuration - config = load_config('config.yaml') - - # Get parameters from config - json_file_path = config['input']['json_file_path'] - log_file_path = config['output']['log_file_path'] - file_prefix = config['output']['file_prefix'] - num_rollouts = config['processing']['num_rollouts'] - initial_rollouts = config['processing']['initial_rollouts'] - max_iterations = config['processing']['max_iterations'] - - lm_model = LM(model_type=config['model']['model_type'], model_name=config['model']['model_name'], num_rollouts=num_rollouts, **config['model']['model_args']) + # Path to the JSON file and log file + json_file_path = 'extracted_problems_and_answers.json' + log_file_path = 'processing_log.log' # Set up logging setup_logging(log_file_path) @@ -86,6 +50,10 @@ def main(): problem = item.get('problem', 'No problem found') final_answer = item.get('final_answer', 'No answer found') + # Print to console + print(f"Problem {i + 1}: {problem}") + print(f"Final Answer: {final_answer}") + # Log each problem and answer logging.info(f"Processed Problem {i + 1}: {problem}") logging.info(f"Final Answer: {final_answer}") @@ -93,17 +61,18 @@ def main(): # Initialize the root node and perform rollouts nodes = [] root_node = Node(problem, "", final_answer) - rollouts, correctness_flags = perform_rollouts(root_node, lm_model, initial_rollouts) + max_rollouts = 20 + rollouts, correctness_flags = perform_rollouts(root_node, max_rollouts) mc_score = calculate_mc_score(root_node) root_node.mc_score = mc_score nodes.append(root_node) # Check if further processing is needed - if 0 < sum(correctness_flags) < initial_rollouts: + if 0 < sum(correctness_flags) < max_rollouts: print("Processing annotations ...\n") - filename = f"{file_prefix}_{i+1}_nodes_data.json" - process_annotations(problem, nodes, lm_model, filename, max_iterations) + filename = f"{i+1}_nodes_data.json" + process_annotations(problem, final_answer, nodes, filename) # Log completion logging.info("Finished processing the JSON file.") diff --git a/data/model_utils.py b/data/model_utils.py deleted file mode 100644 index 3804adb..0000000 --- a/data/model_utils.py +++ /dev/null @@ -1,115 +0,0 @@ -import torch -from transformers import AutoTokenizer, AutoModelForCausalLM -import random -import os -from transformers import set_seed -import requests -from concurrent.futures import ThreadPoolExecutor, as_completed -from tqdm import tqdm -from typing import List - -# Set your Hugging Face token here -os.environ["HUGGINGFACE_HUB_TOKEN"] = "hf_yourkey" - -# For reproducibility -SEED = 1234 -set_seed(SEED) -random.seed(42) - -class LM: - def __init__(self, model_name: str = "Qwen/Qwen2.5-Math-7B-Instruct", model_type: str = "hf", num_rollouts: int = 5, **model_args): - self.model_type = model_type.lower() - self.model_name = model_name - - self.max_tokens = 200 - self.temperature_range = [0.7, 1.0] - self.num_rollouts = num_rollouts - self.__dict__.update(model_args) - print("Updated model args:", self.__dict__) - - if self.model_type == "vllm": - raise NotImplementedError("VLLM is not implemented yet") - from vllm import LLM, SamplingParams - self.llm = LLM(model=model_name, enable_prefix_caching=True) - self.SamplingParams = SamplingParams - elif self.model_type == "hf": - self.tokenizer = AutoTokenizer.from_pretrained(model_name) - self.model = AutoModelForCausalLM.from_pretrained( - model_name, torch_dtype=torch.float16, device_map="cuda" - ) - elif self.model_type == "openai": - import openai - self.client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY")) - elif self.model_type == "anthropic": - import anthropic - self.client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY")) - else: - raise ValueError("Invalid model_type. Choose 'vllm', 'hf', 'openai', or 'anthropic'.") - - def generate(self, question, partial_answer, num_rollouts=None): - if num_rollouts is None: - num_rollouts = self.num_rollouts - prompt = question + partial_answer - if self.model_type == "vllm": - return self.generate_vllm(prompt, num_rollouts) - elif self.model_type == "hf": - return self.generate_hf(prompt, num_rollouts) - elif self.model_type == "anthropic" or self.model_type == "openai": - return self.generate_api(prompt, num_rollouts) - - def generate_hf(self, prompt, num_rollouts): - inputs = self.tokenizer(prompt, return_tensors="pt").to('cuda') - results = [] - for _ in range(num_rollouts): - temperature = random.uniform(self.temperature_range[0], self.temperature_range[1]) - outputs = self.model.generate( - **inputs, do_sample=True, max_new_tokens=self.max_tokens, temperature=temperature, - num_return_sequences=1 - ) - generated_tokens = outputs[0][inputs['input_ids'].shape[1]:] - result = self.tokenizer.decode(generated_tokens, skip_special_tokens=True) - results.append(result) - return results - - def generate_vllm(self, prompt, num_rollouts): - raise NotImplementedError("VLLM is not implemented yet") - temperature = random.choice(self.temperature_range) - sampling_params = self.SamplingParams( - temperature=temperature, - top_p=1, - max_tokens=self.max_tokens, - n=num_rollouts, - seed=SEED - ) - outputs = self.llm.generate(prompt, sampling_params) - result = [completion.text for output in outputs for completion in output.outputs] - return result - - def generate_api(self, prompt: str, num_rollouts) -> List[str]: - def send_request(prompt): - temperature = random.choice(self.temperature_range) - if self.model_type == "openai": - response = self.client.chat.completions.create( - model=self.model_name, - messages=[{"role": "user", "content": prompt}], - max_tokens=self.max_tokens, - temperature=temperature - ) - output = response.choices[0].message.content - elif self.model_type == "anthropic": - response = self.client.messages.create( - model=self.model_name, - messages=[{"role": "user", "content": prompt}], - max_tokens=self.max_tokens, - temperature=temperature - ) - output = response.content[0].text - return output - - responses = [] - with ThreadPoolExecutor(max_workers=num_rollouts) as executor: - futures = [executor.submit(send_request, prompt) for _ in range(num_rollouts)] - for future in tqdm(as_completed(futures), total=len(futures)): - responses.append(future.result()) - - return responses diff --git a/data/module.py b/data/module.py index e1763c5..753df3e 100644 --- a/data/module.py +++ b/data/module.py @@ -1,10 +1,17 @@ import torch +from transformers import AutoTokenizer, AutoModelForCausalLM, set_seed import random import json import re import os import math -from model_utils import LM + +# Set your Hugging Face token here +os.environ["HUGGINGFACE_HUB_TOKEN"] = "hf_yourkey" + +# For reproducibility +set_seed(1234) +random.seed(42) class Node: def __init__(self, question, partial_answer, correct_answer): @@ -23,7 +30,24 @@ def add_rollout(self, result): def increment_visits(self): self.visits += 1 -# Evaluation + def get_rollouts(self): + return self.rollouts + +def generate_completion(question, partial_answer, model_name="Qwen/Qwen2.5-Math-7B-Instruct"): + tokenizer = AutoTokenizer.from_pretrained(model_name) + model = AutoModelForCausalLM.from_pretrained( + model_name, torch_dtype=torch.float16, device_map="cuda" + ) + prompt = question + partial_answer + inputs = tokenizer(prompt, return_tensors="pt").to('cuda') + temperature = random.choice([0.7, 1.0]) + outputs = model.generate( + **inputs, do_sample=True, max_new_tokens=200, temperature=temperature + ) + generated_tokens = outputs[0][inputs['input_ids'].shape[1]:] + result = tokenizer.decode(generated_tokens, skip_special_tokens=True) + return result + def check_correctness(expected_answer, generated_response): sentences = re.split( r'(? max_iterations: + if iteration > 100: break if node is None: break @@ -156,7 +191,7 @@ def process_annotations(question, nodes, model: LM, filename='nodes_data.json', print(node) print(" Rollout:", rollout, " || QU Value:", max_qu) node.increment_visits() - expanded_nodes, leaves = locate_error(node, rollout, model) + expanded_nodes, leaves = locate_error(node, rollout) if not expanded_nodes: continue nodes.extend( @@ -171,15 +206,3 @@ def process_annotations(question, nodes, model: LM, filename='nodes_data.json', } append_to_json(filename, new_entry) print("++++++") - -# Utils -def append_to_json(filename, data_entry): - if os.path.exists(filename): - with open(filename, 'r') as file: - data = json.load(file) - else: - data = [] - data.append(data_entry) - with open(filename, 'w') as file: - json.dump(data, file, indent=4) - print(f"Data appended to {filename}") \ No newline at end of file diff --git a/data/omegaPRM_v2/llm_utils.py b/data/omegaPRM_v2/llm_utils.py deleted file mode 100644 index 5a584f3..0000000 --- a/data/omegaPRM_v2/llm_utils.py +++ /dev/null @@ -1,148 +0,0 @@ -import os -import threading -from transformers import pipeline -from typing import List -# Import vllm if using vLLM backend -try: - from vllm import LLM, SamplingParams -except ImportError: - print("vLLM not installed. Install it if you wish to use it as a model backend.") - -# Set the environment variable for the endpoint -os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com' - -class LLMService: - """ - A class to manage a large language model (LLM) service using Hugging Face's transformers library. - """ - - def __init__(self, model_name: str = "/root/.cache/modelscope/hub/Qwen/Qwen2___5-Math-7B-Instruct", - device: str = "cuda", max_new_tokens: int = 2048, - temperature: float = 0.7, top_k: int = 30, top_p: float = 0.9, model_type: str="hf"): - """ - Initialize the LLMService with model parameters and sampling settings. - - Parameters: - - model_name (str): Path or Hugging Face hub model name. - - device (str): Device for computation, e.g., 'cuda' or 'cpu'. - - max_new_tokens (int): Maximum number of new tokens to generate. - - temperature (float): Sampling temperature for response generation. - - top_k (int): Top-K sampling parameter for response diversity. - - top_p (float): Top-P sampling parameter for response diversity. - """ - self.model_name = model_name - self.device = device - self.max_new_tokens = max_new_tokens - self.temperature = temperature - self.top_k = top_k - self.top_p = top_p - self.model_type = model_type.lower() - self.pipe = None - self.llm = None - self.load_lock = threading.Lock() - - def start_service(self): - """ - Start the LLM service by loading the model into the chosen pipeline if it's not already loaded. - Ensures thread-safe loading using a lock. - """ - with self.load_lock: - if self.model_type == "hf": - if self.pipe is None: - print(f"Loading Hugging Face model '{self.model_name}' on device '{self.device}'...") - self.pipe = pipeline( - "text-generation", - model=self.model_name, - torch_dtype="auto", - device_map=self.device - ) - print("Hugging Face model loaded successfully.") - elif self.model_type == "vllm": - if self.llm is None: - print(f"Loading vLLM model '{self.model_name}' on device '{self.device}'...") - self.llm = LLM(self.model_name, tensor_parallel_size=1) - print("vLLM model loaded successfully.") - else: - raise ValueError("Unsupported model_type. Choose 'hf' for Hugging Face or 'vllm' for vLLM.") - - def generate_response(self, prompt: str, num_copies: int = 2) -> List[str]: - """ - Generate responses from the model based on the provided prompt, duplicated to form a batch. - - Parameters: - - prompt (str): The input prompt to generate responses for. - - num_copies (int): The number of copies of the prompt to create for batch processing (default is 16). - - Returns: - - List[str]: A list of generated responses, each corresponding to a duplicate of the input prompt. - """ - if self.model_type == "hf": - return self._generate_response_hf(prompt, num_copies) - elif self.model_type == "vllm": - return self._generate_response_vllm(prompt, num_copies) - else: - raise ValueError("Unsupported model_type. Choose 'hf' for Hugging Face or 'vllm'.") - - def _generate_response_hf(self, prompt: str, num_copies: int = 2) -> List[str]: - """ - Generate responses from the model based on the provided prompt, duplicated to form a batch. - - Parameters: - - prompt (str): The input prompt to generate responses for. - - num_copies (int): The number of copies of the prompt to create for batch processing (default is 16). - - Returns: - - List[str]: A list of generated responses, each corresponding to a duplicate of the input prompt. - """ - if self.pipe is None: - raise ValueError("LLM service not started. Please call start_service() first.") - - # Create a batch of the same prompt - prompts = [prompt] * num_copies - - # Generate responses from the model - responses = self.pipe( - prompts, - max_new_tokens=self.max_new_tokens, - batch_size=num_copies, - do_sample=True, - temperature=self.temperature, - top_k=self.top_k, - top_p=self.top_p, - return_full_text=False - ) - response_message_batch = [result[0]["generated_text"] for result in responses] - - # Extract and return the generated text for each response - return response_message_batch - - def _generate_response_vllm(self, prompt: str, num_copies: int) -> List[str]: - """ - Generate responses using vLLM. - """ - if self.llm is None: - raise ValueError("LLM service not started for vLLM model. Please call start_service() first.") - - sampling_params = SamplingParams( - temperature=self.temperature, - top_k=self.top_k, - top_p=self.top_p, - max_tokens=self.max_new_tokens - ) - - prompts = [prompt] * num_copies - responses = self.llm.generate(prompts, sampling_params=sampling_params) - - return [response.outputs[0].text for response in responses] - - -if __name__ == "__main__": - # Initialize the service for vLLM - llm_service = LLMService(model_type="vllm") - llm_service.start_service() - - prompt = "What is game theory?" - responses = llm_service.generate_response(prompt, num_copies=3) - - print(responses) - diff --git a/data/omegaPRM_v2/omegaprm.py b/data/omegaPRM_v2/omegaprm.py deleted file mode 100644 index e1c2d70..0000000 --- a/data/omegaPRM_v2/omegaprm.py +++ /dev/null @@ -1,569 +0,0 @@ -import heapq -import math -import random -import re -import json -from typing import List, Tuple, Dict, Any, Optional -import itertools -from llm_utils import LLMService - -# Helper function to separate reasoning steps -def separate_steps(steps: List[str], mode: str = 'join') -> Any: - delimiter = "\n\n" - if mode == 'join': - if not isinstance(steps, list): - raise TypeError("For 'join' mode, 'steps' must be a list of strings.") - return delimiter.join(steps) - elif mode == 'split': - if not isinstance(steps, str): - raise TypeError("For 'split' mode, 'steps' must be a string.") - return steps.split(delimiter) - else: - raise ValueError("Mode should be either 'join' or 'split'.") - -# Helper function to check correctness of a generated response -def check_correctness(generated_response: str, expected_answer: str) -> bool: - sentences = re.split( - r'(? List[str]: - """ - Combine the default prompt with the state prefix and generate a response. - - Parameters: - - state_prefix (str): The current solution prefix. - - Returns: - - str: Generated response from LLM. - """ - prompt = self.default_prompt + state_prefix - batch_response = self.llm_service.generate_response(prompt, num_copies) - return batch_response # Assuming the response format has ['role'] entries and 'assistant' response - - def update_prompt(self, new_prompt: str): - """ - Update the default prompt if necessary. - - Parameters: - - new_prompt (str): The new prompt template. - """ - self.default_prompt = new_prompt - - def evaluate_correctness(self, response: str, expected_answer: str) -> bool: - """ - Check if the generated solution matches the expected answer. - - Parameters: - - solution (str): The complete generated response. - - expected_answer (str): The expected answer to compare with. - - Returns: - - bool: True if the expected answer is in the final part of the solution. - """ - return check_correctness(response, expected_answer) - - -# Define the State class -class State: - def __init__(self, solution_prefix: str, parent: Optional['State'] = None): - self.solution_prefix = solution_prefix # Solution prefix as a single string - self.parent = parent # Reference to the parent state - self.N = 0 # Visit count (number of times selected) - self.total_rollouts = 0 # Total number of rollouts generated from this state - self.correct_rollouts = 0 # Number of correct rollouts - self.MC: Optional[float] = None # Monte Carlo estimation (c/k) - self.Q: Dict[str, float] = {} # Q(s, r): estimated value for each rollout - self.R: List[str] = [] # Set of all rollouts from this state - self.incorrect_rollouts: List[str] = [] # List of incorrect rollouts - self.children: List['State'] = [] # List of child states - - def add_rollout(self, rollout: str): - self.R.append(rollout) - - def add_incorrect_rollout(self, rollout: str): - if rollout not in self.incorrect_rollouts: - self.incorrect_rollouts.append(rollout) - - def get_full_solution(self) -> str: - # Return the complete solution from the root to this state - if self.parent: - return self.parent.get_full_solution() + '\n\n' + self.solution_prefix - else: - return self.solution_prefix - - def get_new_text(self) -> str: - """ - Return the new text added at this node compared to the parent. - """ - if self.parent: - parent_text = self.parent.solution_prefix - new_text = self.solution_prefix[len(parent_text):].strip() - return new_text - else: - # Root node (the question) - return self.solution_prefix.strip() - - def get_text_with_labels(self) -> Dict[str, Any]: - """ - Return a nested dictionary where each node contains: - - 'text': The new text at this node. - - 'mc_value': The MC value at this node. - - 'children': A list of child nodes with the same structure. - """ - data = { - 'text': self.get_new_text(), - 'mc_value': self.MC, - 'children': [child.get_text_with_labels() for child in self.children] - } - return data - - -# Define the Search Tree class -class SearchTree: - def __init__(self): - self.root: Optional[State] = None - self.nodes: List[State] = [] # List of all states - - def add_state(self, state: State): - self.nodes.append(state) - -# Define the Candidate Pool as a priority queue with update capability -class CandidatePool: - def __init__(self): - self.heap: List[Tuple[float, int]] = [] # Heap of (-priority, unique_id) - self.entry_finder: Dict[int, Tuple[float, int]] = {} # Maps unique_id to (-priority, unique_id) - self.counter = itertools.count() # Unique sequence count - self.id_to_rollout: Dict[int, Tuple[State, str]] = {} # Maps unique_id to (state, rollout) - self.latest_id_per_rollout: Dict[Tuple[int, str], int] = {} # Maps (state_id, rollout) to unique_id - - def add_or_update(self, state: State, rollout: str, priority: float): - """ - Add a new rollout or update the priority of an existing rollout. - - Parameters: - - state (State): The state associated with the rollout. - - rollout (str): The rollout string. - - priority (float): The new priority score. - """ - state_id = id(state) # Unique identifier for the state object - rollout_key = (state_id, rollout) - - # Check if the rollout already exists in the pool - if rollout_key in self.latest_id_per_rollout: - # Previous unique_id exists; it is now outdated - old_unique_id = self.latest_id_per_rollout[rollout_key] - # Mark the old entry as invalid by removing it from entry_finder - if old_unique_id in self.entry_finder: - del self.entry_finder[old_unique_id] - del self.id_to_rollout[old_unique_id] - - # Assign a new unique_id for the updated rollout - unique_id = next(self.counter) - self.latest_id_per_rollout[rollout_key] = unique_id - - # Add the new entry to the heap and mappings - heapq.heappush(self.heap, (-priority, unique_id)) # Max-heap using negative priority - self.entry_finder[unique_id] = (-priority, unique_id) - self.id_to_rollout[unique_id] = (state, rollout) - - def pop(self) -> Tuple[Optional[State], Optional[str]]: - """ - Pop the rollout with the highest priority. - - Returns: - - Tuple[Optional[State], Optional[str]]: The state and rollout string, or (None, None) if empty. - """ - while self.heap: - neg_priority, unique_id = heapq.heappop(self.heap) - # Check if this unique_id is still valid - if unique_id in self.entry_finder: - # Valid entry - state, rollout = self.id_to_rollout.pop(unique_id) - del self.entry_finder[unique_id] - # Remove from latest_id_per_rollout - state_id = id(state) - rollout_key = (state_id, rollout) - if self.latest_id_per_rollout.get(rollout_key) == unique_id: - del self.latest_id_per_rollout[rollout_key] - return state, rollout - # Else, outdated entry; skip - return None, None - - def is_empty(self) -> bool: - return not self.entry_finder - -# Define the OmegaPRM algorithm -class OmegaPRM: - def __init__(self, LM: LanguageModel, c_puct: float, alpha: float, beta: float, L: int, k: int, N: int, - rollout_budget: int, save_data_tree: bool): - """ - Initialize the OmegaPRM algorithm. - - Parameters: - - LM (LanguageModel): The language model instance. - - expected_answer (str): The expected answer for correctness checking. - - c_puct (float): Exploration constant. - - alpha (float): Weight for MC(s). - - beta (float): Length penalty. - - L (int): Maximum solution length. - - k (int): Number of rollouts for Monte Carlo estimation. - - N (int): Maximum search count. - """ - self.LM = LM # Language Model - self.expected_answer = None - self.c_puct = c_puct - self.alpha = alpha - self.beta = beta - self.L = L - self.k = k - self.N = N - self.rollout_budget = rollout_budget - self.save_data_tree = save_data_tree - - self.T = SearchTree() - self.C = CandidatePool() - - self.n = 0 - self.total_rollouts = 0 - - - - - def reset(self): - """Reset internal state variables to prepare for a fresh run.""" - self.expected_answer = None - self.T = SearchTree() # Reset search tree - self.C = CandidatePool() # Reset candidate pool - self.n = 0 - self.total_rollouts = 0 - self.collected_data = [] # Clear collected data - - def run(self, question: str, answer: str) -> List: - """ - Execute the OmegaPRM algorithm. - - Parameters: - - question (str): The question to generate solutions for. - - Returns: - - Collected data: List of dictionaries. - """ - self.reset() - - print(f"Running OmegaPRM for question: '{question}'\n") - # Initialization - initial_state = State(solution_prefix=question, parent=None) - self.expected_answer = answer - self.T.root = initial_state - self.T.add_state(initial_state) - self.n = 0 - - # Monte Carlo Estimation for initial_state - self.monte_carlo_estimation(initial_state) - - # Main loop - while self.n < self.N and self.total_rollouts < self.rollout_budget and not self.C.is_empty(): - # Selection Phase - selected_state, selected_rollout = self.selection_phase() - if selected_state is None or selected_rollout is None: - # print("No more candidates to explore. Terminating search.\n") - break - - self.expansion_phase_binary_search(selected_state, selected_rollout) - - # Maintenance Phase - self.maintenance_phase(selected_state) - - # Increment search count - self.n += 1 - - if self.save_data_tree: - data = self.collect_tree_structure() - else: - data = self.collect_solution_prefixes() - return data - - def monte_carlo_estimation(self, state: State): - """ - Perform Monte Carlo estimation for state by generating k rollouts - and computing MC(s) = c / k, where c is the number of correct rollouts. - """ - c = 0 # Correct rollouts count - incorrect_rollouts = [] - correct_rollouts = [] - batct_rollouts = self.LM.generate_rollout(state.solution_prefix, self.k) - - # Increment visit count of selected state - state.N += 1 - - for i, rollout in enumerate(batct_rollouts): - # Increment number of total rollouts - self.total_rollouts += 1 - - # Generate rollout r_i - - state.add_rollout(rollout) - - # Evaluate correctness of final answer in rollout - full_solution = (state.solution_prefix + '\n\n' + rollout).strip() if state.solution_prefix else rollout - is_correct = self.LM.evaluate_correctness(full_solution, self.expected_answer) - - # print(f"Rollout {i + 1} Correctness: {'Correct' if is_correct else 'Incorrect'}\n") - - if is_correct: - c += 1 - correct_rollouts.append(rollout) - else: - incorrect_rollouts.append(rollout) - state.add_incorrect_rollout(rollout) # Track incorrect rollouts - - # Update total rollouts and correct rollouts - state.total_rollouts += self.k - state.correct_rollouts += c - state.MC = state.correct_rollouts / state.total_rollouts if state.total_rollouts > 0 else 0 - - # print(f"Monte Carlo Estimation for State ID {self.T.nodes.index(state)}: MC = {state.MC:.2f}, Total Rollouts = {state.total_rollouts}, Correct Rollouts = {state.correct_rollouts}\n") - - if state.MC == 1.0: - # Add all correct rollouts to the tree as new states - for rollout in correct_rollouts: - self.add_correct_rollout_to_tree(state, rollout) - elif state.MC == 0.0: - # State is incorrect; no further action - # print(f"State ID {self.T.nodes.index(state)} has MC == 0. No further rollouts will be added.\n") - return - else: - # 0 < MC(s) < 1.0 - # Add correct rollouts to the tree - for rollout in correct_rollouts: - self.add_correct_rollout_to_tree(state, rollout) - # Add incorrect rollouts to candidate pool with updated priorities - for rollout in incorrect_rollouts: - - priority = self.compute_selection_score(state, rollout) - self.C.add_or_update(state, rollout, priority) - - - def compute_Q(self, state: State, rollout: str) -> float: - """ - Compute Q(s, r) = alpha^{1 - MC(s)} * beta^{len(r)/L}, where len(r) is based on word count. - """ - # Count words in the rollout - word_count = len(rollout.split()) - length_penalty = word_count / self.L - Q_value = (self.alpha ** (1 - state.MC)) * (self.beta ** length_penalty) - return Q_value - - def compute_U(self, state: State) -> float: - """ - Compute U(s) = c_puct * sqrt(sum_{s'} N(s')) / (1 + N(s)) - """ - N_total = sum(s.N for s in self.T.nodes) - if N_total == 0: - N_total = 1 # Prevent division by zero - U_s = self.c_puct * (math.sqrt(N_total)) / (1 + state.N) - return U_s - - def compute_selection_score(self, state: State, rollout: str) -> float: - """ - Compute selection score: Score(s, r) = Q(s, r) + U(s) - """ - Q_s_r = self.compute_Q(state, rollout) - U_s = self.compute_U(state) - score = Q_s_r + U_s - return score - - def selection_phase(self) -> Tuple[Optional[State], Optional[str]]: - """ - Select (state, rollout) with the highest score from candidate pool C. - """ - selected_state, selected_rollout = self.C.pop() - return selected_state, selected_rollout - - def add_correct_rollout_to_tree(self, parent_state: State, rollout: str): - """ - Add the correct rollout to the tree as a child of parent_state. - """ - new_solution_prefix = (parent_state.solution_prefix + '\n\n' + rollout).strip() if parent_state.solution_prefix else rollout - new_state = State(solution_prefix=new_solution_prefix, parent=parent_state) - new_state.MC = 1.0 # Since the rollout is correct - new_state.total_rollouts = 0 - new_state.correct_rollouts = 0 - self.T.add_state(new_state) - parent_state.children.append(new_state) # Add to parent's children - - - def expansion_phase_binary_search(self, parent_state: State, rollout: str): - """ - Expansion phase that adds the rollout as a new state and performs Monte Carlo estimation - using Binary Search to efficiently find the correct rollout. - - Parameters: - - parent_state (State): The state from which the rollout was selected. - - rollout (str): The rollout string that was selected and is incorrect. - """ - # Separate the rollout into individual steps - steps = separate_steps(rollout, mode='split') - - # Perform binary search to find incorrect steps - - self.binary_search_incorrect_step(parent_state, steps, 0, len(steps) - 1) - - def binary_search_incorrect_step(self, s_ast: State, steps: List[str], left: int, right: int): - """ - Recursively perform binary search to find all incorrect steps in the rollout. - - Parameters: - - s_ast (State): The selected parent state. - - steps (List[str]): The rollout steps as a list. - - left (int): Left index of the current search interval. - - right (int): Right index of the current search interval. - """ - if left > right: - return - - mid = (left + right) // 2 - new_steps = steps[left:mid + 1] - if new_steps: - prefix_solution = s_ast.solution_prefix + '\n\n' + separate_steps(new_steps, mode='join') - else: - prefix_solution = s_ast.solution_prefix - # Create new state s_new - s_new = State(solution_prefix=prefix_solution.strip(), parent=s_ast) - self.T.add_state(s_new) - s_ast.children.append(s_new) - - # Perform Monte Carlo estimation for s_new - self.monte_carlo_estimation(s_new) - - - if s_new.MC == 0: - - # Found incorrect step; continue searching in the left half to find earlier incorrect steps - - self.binary_search_incorrect_step(s_ast, steps, left, mid - 1) - else: - # Steps up to mid are correct; continue searching in the right half - - self.binary_search_incorrect_step(s_new, steps, mid + 1, right) - - def maintenance_phase(self, state: State): - """ - Update statistics and candidate pool for all incorrect rollouts associated with the state. - - Parameters: - - state (State): The state whose incorrect rollouts need to be updated. - """ - - # Iterate through all incorrect rollouts of the state - for rollout in state.incorrect_rollouts: - # Since we've already determined these rollouts are incorrect, no need to re-evaluate correctness - - priority = self.compute_selection_score(state, rollout) - # Update the candidate pool with the new priority - self.C.add_or_update(state, rollout, priority) - # print(f"Updated Incorrect Rollout: '{rollout}' with new priority: {priority:.4f}") - - # print("Maintenance Phase Completed.\n") - - def collect_solution_prefixes(self) -> List[Dict[str, Any]]: - """ - Collect all solution prefixes and their corresponding MC values from the search tree. - - Returns: - List[Dict[str, Any]]: A list of dictionaries containing solution prefixes and their MC values. - """ - collected_data = [] - for node in self.T.nodes: - solution_prefix = node.solution_prefix - mc_value = node.MC - collected_data.append({ - "solution_prefix": solution_prefix, - "mc_value": mc_value - }) - return collected_data - - def collect_tree_structure(self) -> Dict[str, Any]: - """ - Collect the tree structure starting from the root. - - Returns: - Dict[str, Any]: A nested dictionary representing the tree structure. - """ - if self.T.root: - tree_data = self.T.root.get_text_with_labels() - return tree_data - return {} - - - - - - -# Example usage -if __name__ == "__main__": - # Initialize the Language Model - LM = LanguageModel( - device="cuda", - max_new_tokens=2048, - model_type="vllm" - ) - - # Define the question and expected answer - question = "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction." - expected_answer = "\\frac{11}{36}" - - # Initialize OmegaPRM with parameters - omega_prm = OmegaPRM( - LM=LM, - c_puct=0.125, - alpha=0.5, - beta=0.9, - L=500, - k=16, - N=10, - rollout_budget=100, - save_data_tree=True, - ) - - # Run the OmegaPRM algorithm - collected_data = omega_prm.run(question, expected_answer) - - # Save the collected solutions to a JSON file - with open("collected_solutions2.json", "w") as f: - json.dump(collected_data, f, indent=4) - - diff --git a/data/omegaPRM_v2/process_json.py b/data/omegaPRM_v2/process_json.py deleted file mode 100644 index 9699848..0000000 --- a/data/omegaPRM_v2/process_json.py +++ /dev/null @@ -1,97 +0,0 @@ -import json -import os -import random -from typing import List -import math - -def sample_questions(input_filepath: str, output_filepath: str, num_samples: int): - """ - Samples a specified number of questions from the input JSON file and saves them to an output JSON file. - - Parameters: - - input_filepath (str): Path to the original JSON file containing all questions. - - output_filepath (str): Path to save the sampled questions JSON file. - - num_samples (int): Number of questions to sample. - """ - with open(input_filepath, 'r') as f: - questions = json.load(f) - - # Sample questions - sampled_questions = random.sample(questions, min(num_samples, len(questions))) - - # Save sampled questions to the output file - with open(output_filepath, 'w') as f: - json.dump(sampled_questions, f, indent=4) - - print(f"Saved {len(sampled_questions)} sampled questions to {output_filepath}") - - -def split_questions(input_filepath: str, output_dir: str, questions_per_file: int): - """ - Splits the input JSON file into multiple smaller JSON files, each containing a specified number of questions. - - Parameters: - - input_filepath (str): Path to the original JSON file containing all questions. - - output_dir (str): Directory to save the split JSON files. - - questions_per_file (int): Number of questions per split file. - """ - with open(input_filepath, 'r') as f: - questions = json.load(f) - - # Create output directory if it does not exist - os.makedirs(output_dir, exist_ok=True) - - # Split questions into chunks and save each chunk as a separate file - for i in range(0, len(questions), questions_per_file): - chunk = questions[i:i + questions_per_file] - output_filepath = os.path.join(output_dir, f"questions_part_{i // questions_per_file + 1}.json") - with open(output_filepath, 'w') as f: - json.dump(chunk, f, indent=4) - - print(f"Saved {len(chunk)} questions to {output_filepath}") - - -def split_questions_uniformly(input_filepath: str, output_directory: str, num_files: int): - """ - Split a JSON file containing questions into a specified number of files with approximately equal questions. - - Parameters: - - input_filepath (str): Path to the JSON file containing the list of questions. - - output_directory (str): Directory to save the split JSON files. - - num_files (int): Number of files to split the questions into. - - Each output file will contain approximately len(questions) / num_files questions. - """ - # Load questions from the input file - with open(input_filepath, 'r') as f: - questions = json.load(f) - - # Calculate the number of questions per file - total_questions = len(questions) - questions_per_file = math.ceil(total_questions / num_files) - - # Ensure the output directory exists - os.makedirs(output_directory, exist_ok=True) - - # Split the questions and write to output files - for i in range(num_files): - start_idx = i * questions_per_file - end_idx = min(start_idx + questions_per_file, total_questions) - questions_subset = questions[start_idx:end_idx] - - output_filepath = os.path.join(output_directory, f"questions_part_{i + 1}.json") - with open(output_filepath, 'w') as f_out: - json.dump(questions_subset, f_out, indent=4) - - print(f"Saved {len(questions_subset)} questions to {output_filepath}") - - -# Example usage -if __name__ == "__main__": - split_questions_uniformly("extracted_problems_and_answers.json", "output_directory", 8) -# -# # Sampling a subset of questions from the original file -# sample_questions("extracted_problems_and_answers.json", "sampled_questions.json", 10) -# -# # Splitting the original file into multiple files with each containing 5 questions -# split_questions("extracted_problems_and_answers.json", "output_directory", 5) diff --git a/data/omegaPRM_v2/readme.md b/data/omegaPRM_v2/readme.md deleted file mode 100644 index b41dd26..0000000 --- a/data/omegaPRM_v2/readme.md +++ /dev/null @@ -1,71 +0,0 @@ -# OmegaPRM Multi-GPU Runner - -This script runs `OmegaPRM` on multiple GPUs, with each GPU handling a different part of the dataset for parallel processing. - -## Steps to Use - -1. **Split the Input Data** - - Use `process_json.py` to split your input JSON file into multiple parts for each GPU: - - ```bash - python process_json.py --input_file questions.json --output_dir output_directory --num_splits 8 - ``` - - 2. **Run the Script** - - Use `run_omegaprm_multi_gpu.sh` to start processing with OmegaPRM on each GPU: - ``` bash - run_omegaprm_multi_gpu.sh - ``` - Results are saved in `output_results`. - - **Note**: Before running, make sure to set the correct values for parameters in the script. Important parameters include: - - -`MODEL_NAME`: Path to the model (e.g., Hugging Face or vLLM model). - - -`MODEL_TYPE`: Set to "hf" for Hugging Face or "vllm" for vLLM support. - - -`Other parameters` like `MAX_NEW_TOKENS`, `TEMPERATURE`, `TOP_K`, and other hyperparameters according to your needs. -## Run on a Single GPU - -```bash -CUDA_VISIBLE_DEVICES=0 python run_omegaprm.py \ - --question_file ../extracted_problems_and_answers.json \ - --output_dir output_results \ - --model_name "Your model name or path " \ - --model_type $MODEL_TYPE \ - --device "cuda" \ - --max_new_tokens 2048 \ - --temperature 0.7 \ - --top_k 30 \ - --top_p 0.9 \ - --c_puct 0.125 \ - --alpha 0.5 \ - --beta 0.9 \ - --length_scale 500 \ - --num_rollouts 16 \ - --max_search_count 20 \ - --rollout_budget 200 \ - --save_data_tree True\ - --log_file_prefix "log/omega_prm_single_gpu" - -``` - -# Generated Data Format - -For data generated by `OmegaPRM_v2`, two formats are available: - -1. Flat Format (`save_data_tree=False`): - Each entry is structured as: - - { "solution_prefix": [Q, x_1:x_i], "mc_value": 0.5 } - - where `i` is a variable representing the number of reasoning steps. This format provides a linear view of the reasoning process without hierarchical structure. - -2. Tree Format (`save_data_tree=True`): - In this format, data is organized as a tree structure, aligned with the figure presented in the paper. Each reasoning step (or node) includes: - - - text: The cumulative reasoning from the root node up to this specific step. - - mc_value: The Monte Carlo score computed for the reasoning progression up to this step. - - children: A list of child nodes branching from the current node. \ No newline at end of file diff --git a/data/omegaPRM_v2/run_omegaprm.py b/data/omegaPRM_v2/run_omegaprm.py deleted file mode 100644 index 20a7387..0000000 --- a/data/omegaPRM_v2/run_omegaprm.py +++ /dev/null @@ -1,218 +0,0 @@ -import argparse -import json -import logging -import os -from typing import Dict - -from omegaprm import LanguageModel, OmegaPRM - -DS_NAME = "math-aps-v2" - -logger: logging.Logger - - -# Set up logging based on provided log file prefix -def setup_logging(log_file_prefix: str): - log_filename = f"{log_file_prefix}.log" - logging.basicConfig( - level=logging.INFO, - format="%(asctime)s [%(levelname)s] %(message)s", - handlers=[logging.FileHandler(log_filename), logging.StreamHandler()], - ) - return logging.getLogger(__name__) - - -# Load questions from JSON -def load_questions(filepath: str): - with open(filepath, "r") as f: - return json.load(f) - - -# Filter a single question based on 32 rollouts -def should_process_question(question: Dict[str, str], llm: LanguageModel) -> bool: - prompt = question["problem"] - correct_answer = question["final_answer"] - - has_correct = False - has_incorrect = False - - initial_batch_answers = llm.generate_rollout(prompt, 32) - - for answer in initial_batch_answers: - if llm.evaluate_correctness(answer, correct_answer): - has_correct = True - else: - has_incorrect = True - - if has_correct and has_incorrect: - logger.info(f"Question passed filter: {question['problem']}") - return True - - return False - - -# Run OmegaPRM on a question if it passes the filter -def process_question(omega_prm: OmegaPRM, question: Dict[str, str]): - logger.info(f"Processing question with OmegaPRM: {question['problem']}") - reasoning_steps = omega_prm.run(question["problem"], question["final_answer"]) - collected_data = { - "question": question["problem"], - "final_answer": question["final_answer"], - "reasoning_steps": reasoning_steps, - } - return collected_data - - -# Save collected data for each question -def save_question_data(collected_data: Dict, index: int, output_path: str): - collected_data["question_id"] = index - with open(output_path, "a") as fd: - line = json.dumps(collected_data) - fd.write(f"{line}\n") - logger.info(f"Question {index} is saved to {output_path}") - - -def main(args): - global logger - logger = setup_logging(args.log_file_prefix) - - os.makedirs(args.output_dir, exist_ok=True) - output_file = os.path.join(args.output_dir, f"{DS_NAME}.jsonl") - # ensure output_file is empty since we are appending to it later - with open(output_file, "w") as fd: - fd.write("") - - logger.info("Starting OmegaPRM processing") - logger.info(f"Using model: {args.model_name} on device: {args.device}") - logger.info(f"Output file: {output_file}") - logger.info(f"Question file: {args.question_file}") - - questions = load_questions(args.question_file) - - llm = LanguageModel( - model_name=args.model_name, - device=args.device, - max_new_tokens=args.max_new_tokens, - temperature=args.temperature, - top_k=args.top_k, - top_p=args.top_p, - model_type=args.model_type, - ) - - omega_prm = OmegaPRM( - LM=llm, - c_puct=args.c_puct, - alpha=args.alpha, - beta=args.beta, - L=args.length_scale, - k=args.num_rollouts, - N=args.max_search_count, - rollout_budget=args.rollout_budget, - save_data_tree=args.save_data_tree, - ) - - processed_count = 0 # Counter for processed questions - - for idx, question in enumerate(questions): - if should_process_question(question, llm): - collected_data = process_question(omega_prm, question) - save_question_data(collected_data, idx, output_file) - processed_count += 1 - else: - logger.info(f"Skipping question: {question['problem']}") - - # Log summary - logger.info( - f"Total questions processed by OmegaPRM: {processed_count}/{len(questions)}" - ) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Run OmegaPRM on filtered questions") - - parser.add_argument( - "--question_file", - type=str, - required=True, - help="Path to the questions JSON file", - ) - parser.add_argument( - "--output_dir", - type=str, - default="output", - help=f"Directory to save the output file {DS_NAME}.jsonl", - ) - parser.add_argument( - "--log_file_prefix", - type=str, - default="omega_prm", - help="Prefix for the log files", - ) - parser.add_argument( - "--model_name", - type=str, - default="/root/.cache/modelscope/hub/Qwen/Qwen2___5-Math-7B-Instruct", - help="Model name or path for the language model", - ) - parser.add_argument( - "--device", - type=str, - default="cuda", - help="Device to run the model on (e.g., 'cuda', 'cpu')", - ) - parser.add_argument( - "--max_new_tokens", type=int, default=2048, help="Max tokens for LLM generation" - ) - parser.add_argument( - "--temperature", - type=float, - default=0.7, - help="Sampling temperature for LLM generation", - ) - parser.add_argument( - "--top_k", type=int, default=30, help="Top-K sampling for LLM generation" - ) - parser.add_argument( - "--top_p", type=float, default=0.9, help="Top-P sampling for LLM generation" - ) - parser.add_argument( - "--model_type", - type=str, - default="hf", - help="Model backend to use ('hf' for Hugging Face or 'vllm')", - ) - - # OmegaPRM parameters with provided defaults - parser.add_argument( - "--c_puct", type=float, default=0.125, help="Exploration constant for OmegaPRM" - ) - parser.add_argument( - "--alpha", type=float, default=0.5, help="Weight for MC(s) in OmegaPRM" - ) - parser.add_argument( - "--beta", type=float, default=0.9, help="Length penalty for OmegaPRM" - ) - parser.add_argument( - "--length_scale", type=int, default=500, help="length scale in OmegaPRM" - ) - parser.add_argument( - "--num_rollouts", - type=int, - default=16, - help="Number of rollouts for Monte Carlo estimation in OmegaPRM", - ) - parser.add_argument( - "--max_search_count", type=int, default=20, help="Max search count in OmegaPRM" - ) - parser.add_argument( - "--rollout_budget", type=int, default=200, help="Rollout budget for OmegaPRM" - ) - parser.add_argument( - "--save_data_tree", - type=bool, - default=True, - help="Save data in tree structure for OmegaPRM", - ) - - args = parser.parse_args() - main(args) diff --git a/data/omegaPRM_v2/run_omegaprm_multi_gpu.sh b/data/omegaPRM_v2/run_omegaprm_multi_gpu.sh deleted file mode 100644 index 575f05e..0000000 --- a/data/omegaPRM_v2/run_omegaprm_multi_gpu.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash - -# Set the model and other parameters -MODEL_NAME="/root/.cache/modelscope/hub/Qwen/Qwen2___5-Math-7B-Instruct" -MODEL_TYPE="vllm" # Set to "vllm" for vLLM or "hf" for Hugging Face -DEVICE="cuda" -MAX_NEW_TOKENS=2048 -TEMPERATURE=0.7 -TOP_K=30 -TOP_P=0.9 -C_PUCT=0.125 -ALPHA=0.5 -BETA=0.9 -LENGTH_SCALE=500 -NUM_ROLLOUTS=16 -MAX_SEARCH_COUNT=20 -ROLLOUT_BUDGET=200 -SAVE_DATA_TREE=True -OUTPUT_DIR="output_results_data" - -# Split files directory -SPLIT_DIR="output_directory" - -# Create output directory if it doesn't exist -mkdir -p $OUTPUT_DIR -mkdir -p log - -# Start the OmegaPRM process on each GPU with separate split files -for i in {1..8} -do - SPLIT_FILE="$SPLIT_DIR/questions_part_${i}.json" - GPU_ID=$((i-1)) - OUTPUT_FILE="$OUTPUT_DIR/results_part_${i}.json" - LOG_FILE_PREFIX="log/omega_prm_gpu_$GPU_ID" - - # Run the OmegaPRM process in the background on the specified GPU - CUDA_VISIBLE_DEVICES=$GPU_ID python3 run_omegaprm.py \ - --question_file $SPLIT_FILE \ - --output_dir $OUTPUT_FILE \ - --model_name $MODEL_NAME \ - --model_type $MODEL_TYPE \ - --device $DEVICE \ - --max_new_tokens $MAX_NEW_TOKENS \ - --temperature $TEMPERATURE \ - --top_k $TOP_K \ - --top_p $TOP_P \ - --c_puct $C_PUCT \ - --alpha $ALPHA \ - --beta $BETA \ - --length_scale $LENGTH_SCALE \ - --num_rollouts $NUM_ROLLOUTS \ - --max_search_count $MAX_SEARCH_COUNT \ - --rollout_budget $ROLLOUT_BUDGET \ - --save_data_tree $SAVE_DATA_TREE \ - --log_file_prefix $LOG_FILE_PREFIX & -done - -# Wait for all processes to finish -wait - -echo "All OmegaPRM processes complete." diff --git a/envs/MATH/__init__.py b/envs/MATH/__init__.py index ea4e168..a79b5c8 100644 --- a/envs/MATH/__init__.py +++ b/envs/MATH/__init__.py @@ -1,3 +1,3 @@ from .env import Env, extract_answer, extract_groundtruth, judge_correct from .data import get_train_test_dataset -from .prompt import COT_EXAMPLES, COT_TASK_DESC, PROBLEM_FORMAT_STR, SEP +from .prompt import COT_EXAMPLES, COT_TASK_DESC, PROBLEM_FORMAT_STR, SEP, PROBLEM_FORMAT_STR_MM diff --git a/envs/MATH/data.py b/envs/MATH/data.py index ca772a6..d2557f1 100644 --- a/envs/MATH/data.py +++ b/envs/MATH/data.py @@ -23,4 +23,4 @@ def __len__(self): def __getitem__(self, index): x = self.data[index] - return {"question": x["problem"], "answer": x["solution"]} + return {"question": x["problem"], "answer": x["solution"], "image": x.get("image_path")} diff --git a/envs/MATH/prompt.py b/envs/MATH/prompt.py index 3155327..8b4d013 100644 --- a/envs/MATH/prompt.py +++ b/envs/MATH/prompt.py @@ -2,4 +2,6 @@ COT_TASK_DESC = "<|im_start|>system\nPlease reason step by step, and put your final answer within \\boxed{{}}.<|im_end|>" PROBLEM_FORMAT_STR = """<|im_start|>user\n{question}<|im_end|>\n<|im_start|>assistant\n""" +PROBLEM_FORMAT_STR_MM = """<|im_start|>user\n<|vision_start|><|image_pad|><|vision_end|>{question}<|im_end|>\n<|im_start|>assistant\n""" + SEP = "\n\n" diff --git a/envs/__init__.py b/envs/__init__.py index 7a37a01..43aa054 100644 --- a/envs/__init__.py +++ b/envs/__init__.py @@ -10,11 +10,11 @@ def get_env_datasets(env_name: str, **kwargs): def get_default_query_str_builder(env_name: str, **kwargs): task_module = import_module(f"envs.{env_name}") - def fn(problem_input: str, is_few_shot: bool): + def fn(problem_input: str, is_few_shot: bool, is_multimodal: bool): return task_module.Env.build_query_str( cot_task_desc=task_module.COT_TASK_DESC, cot_examples=task_module.COT_EXAMPLES, - problem_format_str=task_module.PROBLEM_FORMAT_STR, + problem_format_str=task_module.PROBLEM_FORMAT_STR_MM if is_multimodal else task_module.PROBLEM_FORMAT_STR, problem_input=problem_input, is_few_shot=is_few_shot, ) diff --git a/envs/base_env.py b/envs/base_env.py index 320407a..38e7983 100644 --- a/envs/base_env.py +++ b/envs/base_env.py @@ -5,7 +5,7 @@ import pdb import torch from distributed.utils import print_with_rank -from transformers import PreTrainedTokenizer +from transformers import PreTrainedTokenizer, AutoProcessor from reason.inference.lm_call import LMCallingConfig, ConcatedLMGenResult INVALID_ANS = "[invalid]" @@ -165,7 +165,6 @@ def step(self, action, update_legal_action=True): try: self._legal_actions, api_completion_token = self.update_legal_actions() info["api_completion_token"] = api_completion_token - break except NoLegalActionException as e: if cnt == 3: terminated = True diff --git a/envs/rstar/README.md b/envs/rstar/README.md deleted file mode 100644 index dfe55f2..0000000 --- a/envs/rstar/README.md +++ /dev/null @@ -1,9 +0,0 @@ -## Re-implementing rStar MCTS - -Original Paper: [Mutual Reasoning Makes Smaller LLMs Stronger Problem-Solvers](https://arxiv.org/abs/2408.06195) -Original Repo: [https://github.com/zhentingqi/rStar](https://github.com/zhentingqi/rStar) - -For the current version of rStar, we use a separated environment `rstar_env.py`. In the future, -we hope to rewrite it in a better way. - -For inference, set up your LLM and RM, then run `scripts/rstar_mcts.sh`. diff --git a/envs/rstar/__init__.py b/envs/rstar/__init__.py deleted file mode 100644 index aadbf1f..0000000 --- a/envs/rstar/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .rstar_env import Env, extract_answer, extract_groundtruth, judge_correct -from .data import get_train_test_dataset diff --git a/envs/rstar/data.py b/envs/rstar/data.py deleted file mode 100644 index 165cdcf..0000000 --- a/envs/rstar/data.py +++ /dev/null @@ -1,26 +0,0 @@ -from pathlib import Path -import jsonlines -from torch.utils.data import Dataset - - -def get_train_test_dataset(*args, **kwargs): - env_dir = Path(__file__).parent.parent - test_ds = JsonlMathDataset(env_dir / "MATH/dataset/test500.jsonl") - train_ds = JsonlMathDataset(env_dir / "MATH/dataset/train.jsonl") - return train_ds, test_ds - - -class JsonlMathDataset(Dataset): - def __init__(self, data_path): - super().__init__() - self.data = [] - with jsonlines.open(data_path, "r") as reader: - for obj in reader: - self.data.append(obj) - - def __len__(self): - return len(self.data) - - def __getitem__(self, index): - x = self.data[index] - return {"question": x["problem"], "answer": x["solution"]} diff --git a/envs/rstar/eval_src/Evaluator.py b/envs/rstar/eval_src/Evaluator.py deleted file mode 100644 index 2dc0c51..0000000 --- a/envs/rstar/eval_src/Evaluator.py +++ /dev/null @@ -1,409 +0,0 @@ -# Licensed under the MIT license. - -from .toolkit_for_MATH.latex_answer_check import latex_answer_check as latex_equiv - -import os, json, re -from typing import List, Dict, Tuple -from collections import defaultdict -import random -from fuzzywuzzy import fuzz, process - -from envs.MATH.parse_utils_qwen import ( - extract_answer as extract_fn, - parse_ground_truth, - strip_string, -) -from ...MATH.grader import math_equal - - -class Evaluator: - def __init__(self) -> None: - self.answer_marker = "answer is" - - def _is_number(self, s) -> Tuple[bool, str]: - try: - res = float(s) - return True, str(res) - except: - pass - try: - import unicodedata - - res = unicodedata.numeric(s) - return True, str(res) - except: - pass - return False, None - - def validate_completion(self, completion: str) -> bool: - if self.answer_marker.lower() in completion.lower(): - return True - - return False - - def isolate_answer(self, text: str): - if text is None: - return None - - assert isinstance(text, str) - text = text.lower() - split_ans = text.split(self.answer_marker.lower()) - if len(split_ans) > 1: - ans = split_ans[-1].replace(":", "").strip() - extract_ans_temp = ans.split(".\n")[0].strip() - if len(extract_ans_temp) > 0 and extract_ans_temp[-1] == ".": - extract_ans = extract_ans_temp[0:-1] - else: - extract_ans = extract_ans_temp - extract_ans = extract_ans.strip().strip("\n") - return extract_ans - else: - return text - - def find_most_confident_answer( - self, completions: List[str], prior_weights: List[float] = None - ): - """Returns the most confident answer, its completion, its id in the input list, and its confidence.""" - if completions is None or len(completions) == 0: - return None, None, None, None - - answer2completions = defaultdict(list) - answer2ids = defaultdict(list) - for id, c in enumerate(completions): - try: - model_answer = self.extract_answer_from_model_completion(c) - has_existed = False - for existing_answer in answer2completions.keys(): - if self.check_answers_equiv(model_answer, existing_answer): - assert not has_existed - has_existed = True - answer2completions[existing_answer].append(c) - answer2ids[existing_answer].append(id) - if not has_existed: - answer2completions[model_answer].append(c) - answer2ids[model_answer].append(id) - except: - pass - - assert len(answer2completions.keys()) > 0, "There are no valid completions." - if prior_weights is not None: - assert len(completions) == len(prior_weights) - completion2count = {} - for answer, answer_completions in answer2completions.items(): - count = len(answer_completions) - for answer_completion in answer_completions: - completion2count[answer_completion] = count - - completion2score = {} - for id, (completion, count) in enumerate(completion2count.items()): - prior_weight = prior_weights[id] - score = prior_weight * (count / len(completions)) - completion2score[completion] = score - - most_confident_completion = max( - completion2score.keys(), key=lambda x: completion2score[x] - ) - - return ( - self.extract_answer_from_model_completion(most_confident_completion), - most_confident_completion, - completions.index(most_confident_completion), - completion2score[most_confident_completion], - ) - else: - most_confident_answer = max( - answer2completions.keys(), key=lambda x: len(answer2completions[x]) - ) - assert ( - len(answer2completions[most_confident_answer]) > 0 - ), "There are no completions for the most confident answer." - confidence = len(answer2completions[most_confident_answer]) / len( - completions - ) - assert confidence > 0 - return ( - most_confident_answer, - answer2completions[most_confident_answer][0], - answer2ids[most_confident_answer][0], - confidence, - ) - - def stochastic_select_answer( - self, completion2score, answer2completions, completions - ): - answer2score = {} - answer_counts = {} - for completion, score in completion2score.items(): - answer = self.extract_answer_from_model_completion(completion) - if answer in answer2score: - answer2score[answer] += score - answer_counts[answer] += 1 - else: - answer2score[answer] = score - answer_counts[answer] = 1 - - for answer in answer2score: - answer2score[answer] /= answer_counts[answer] - - top_answers = sorted(answer2score.items(), key=lambda x: x[1], reverse=True)[:1] - answers, scores = zip(*top_answers) - total_score = sum(scores) - try: - probabilities = [score / total_score for score in scores] - selected_answer = random.choices(answers, weights=probabilities, k=1)[0] - except: - selected_answer = random.choices(answers, k=1)[0] - - most_confident_completion = answer2completions[selected_answer][0] - completion_index = completions.index(most_confident_completion) - confidence = answer2score[selected_answer] - - return selected_answer, most_confident_completion, completion_index, confidence - - def stochastic_calculate_completion_scores(self, prior_weights, answer2completions): - completion2count = {} - for answer, comps in answer2completions.items(): - count = len(comps) - for comp in comps: - completion2count[comp] = count - - completion2score = {} - for idx, comp in enumerate(completion2count.keys()): - weight = prior_weights[idx] if prior_weights is not None else 1 - score = weight * completion2count[comp] - completion2score[comp] = score - return completion2score - - def stochastic_select_response(self, completion2score, completions): - sorted_completions = sorted( - completion2score.items(), key=lambda x: x[1], reverse=True - )[:1] - completions, scores = zip(*sorted_completions) - total_score = sum(scores) - try: - probabilities = [score / total_score for score in scores] - sampled_completion = random.choices( - completions, weights=probabilities, k=1 - )[0] - except: - sampled_completion = random.choices(completions, k=1)[0] - confidence = completion2score[sampled_completion] - most_confident_answer = self.extract_answer_from_model_completion( - sampled_completion - ) - id_of_most_confident = completions.index(sampled_completion) - return ( - most_confident_answer, - sampled_completion, - id_of_most_confident, - confidence, - ) - - def stochastic_find_most_confident_answer( - self, - completions: List[str], - prior_weights: List[float] = None, - ): - - if not completions or len(completions) == 0: - return None, None, None, None - - answer2completions = defaultdict(list) - for idx, comp in enumerate(completions): - try: - answer = self.extract_answer_from_model_completion(comp) - answer2completions[answer].append(comp) - except: - continue - - if not answer2completions: - return None, None, None, None - - completion2score = self.stochastic_calculate_completion_scores( - prior_weights, answer2completions - ) - - most_confident_answer, sampled_completion, id_of_most_confident, confidence = ( - self.stochastic_select_response(completion2score, completions) - ) - return ( - most_confident_answer, - sampled_completion, - id_of_most_confident, - confidence, - ) - - def check_answers_equiv(self, answer_a: str, answer_b: str): - raise NotImplementedError - - def extract_answer_from_gold_solution(self, solution: str) -> str: - raise NotImplementedError - - def extract_answer_from_model_completion(self, completion: str) -> str: - raise NotImplementedError - - -class MATHEvaluator(Evaluator): - def __init__(self) -> None: - super().__init__() - - def check_answers_equiv(self, answer_a: str, answer_b: str): - if answer_a is None or answer_b is None: - return False - - if answer_a == "" or answer_b == "": - return False - - answer_a = answer_a.strip() - answer_b = answer_b.strip() - - if answer_a.lower() == answer_b.lower(): - return True - - try: - res = latex_equiv(answer_a, answer_b) - except Exception as e: - print(e) - res = False - - return res - - def extract_answer_from_gold_solution(self, solution: str): - def remove_boxed(s): - left = "\\boxed{" - try: - assert s[: len(left)] == left - assert s[-1] == "}" - return s[len(left) : -1] - except: - return None - - def last_boxed_only_string(string): - idx = string.rfind("\\boxed") - if idx < 0: - idx = string.rfind("\\fbox") - if idx < 0: - return None - - i = idx - right_brace_idx = None - num_left_braces_open = 0 - while i < len(string): - if string[i] == "{": - num_left_braces_open += 1 - if string[i] == "}": - num_left_braces_open -= 1 - if num_left_braces_open == 0: - right_brace_idx = i - break - i += 1 - - if right_brace_idx == None: - retval = None - else: - retval = string[idx : right_brace_idx + 1] - - return retval - - return remove_boxed(last_boxed_only_string(solution)) - - def extract_answer_from_model_completion(self, completion): - answer_split = self.isolate_answer(completion) - return answer_split - - -class QwenMATHEvaluator(Evaluator): - def __init__(self) -> None: - super().__init__() - - def isolate_answer(self, text: str): - if text is None: - return None - - use_last_number = True - data_name = "math" - - pred_str = text.replace("\u043a\u0438", "") - if "answer is" in pred_str and "$. I hope" in pred_str: - # minerva_math - tmp = pred_str.split("answer is", 1)[1] - pred = tmp.split("$. I hope", 1)[0].strip() - elif "boxed" in pred_str: - ans = pred_str.split("boxed")[-1] - if len(ans) == 0: - return "" - elif ans[0] == "{": - stack = 1 - a = "" - for c in ans[1:]: - if c == "{": - stack += 1 - a += c - elif c == "}": - stack -= 1 - if stack == 0: - break - a += c - else: - a += c - else: - a = ans.split("$")[0].strip() - pred = a - elif "he answer is" in pred_str: - pred = pred_str.split("he answer is")[-1].strip() - elif "final answer is" in pred_str: - pred = pred_str.split("final answer is")[-1].strip() - elif "答案是" in pred_str: - # Handle Chinese few-shot multiple choice problem answer extraction - pred = pred_str.split("答案是")[1].strip().split("\n\n")[0].strip() - else: # use the last number - if use_last_number: - pattern = "-?\d*\.?\d+" - pred = re.findall(pattern, pred_str.replace(",", "")) - if len(pred) >= 1: - pred = pred[-1] - else: - pred = "" - else: - pred = "" - - # multiple line - # pred = pred.split("\n")[0] - pred = re.sub(r"\n\s*", "", pred) - if pred != "" and pred[0] == ":": - pred = pred[1:] - if pred != "" and pred[-1] == ".": - pred = pred[:-1] - if pred != "" and pred[-1] == "/": - pred = pred[:-1] - pred = strip_string(pred, skip_unit=data_name in ["carp_en", "minerva_math"]) - return pred - - def extract_answer_from_model_completion(self, completion): - answer_split = self.isolate_answer(completion) - return answer_split - - def check_answers_equiv(self, answer_a: str, answer_b: str): - - if answer_a is None or answer_b is None: - return False - - if answer_a == "" or answer_b == "": - return False - - answer_a = answer_a.strip() - answer_b = answer_b.strip() - - if answer_a.lower() == answer_b.lower(): - return True - - if math_equal(answer_a, answer_b): - return True - - try: - res = latex_equiv(answer_a, answer_b) - except Exception as e: - print(e) - res = False - - return res diff --git a/envs/rstar/eval_src/do_eval.py b/envs/rstar/eval_src/do_eval.py deleted file mode 100644 index 75bebe9..0000000 --- a/envs/rstar/eval_src/do_eval.py +++ /dev/null @@ -1,143 +0,0 @@ -# Licensed under the MIT license. - -import sys - -sys.path.append(".") -from .Evaluator import * - -import warnings - -warnings.filterwarnings("ignore") -from tqdm import tqdm -from argparse import ArgumentParser - - -def read_json(file_path): - assert str(file_path).endswith(".json") - with open(file_path, "r", encoding="utf-8") as f: - data = json.load(f) - return data - - -def save_json(js_obj, file_path): - assert str(file_path).endswith(".json") - with open(file_path, "w", encoding="utf-8") as f: - json.dump(js_obj, f, indent=4) - - -def extract_trace(data_item, num_votes): - res = [] - for item in data_item: - i = 0 - trace = item["trace"] if "trace" in item else item - rollout_id = item["rollout_id"] if "rollout_id" in item else 0 - if num_votes != -1 and rollout_id >= num_votes: - continue - while str(i) in trace: - i += 1 - if "direct_answer" in trace[str(i - 1)]: - res.append(trace[str(i - 1)]["direct_answer"]["text"]) - elif trace[str(i - 1)]["ost_step"] != {}: - j = 1 - while str(j) in trace[str(i - 1)]["ost_step"]: - j += 1 - res.append(trace[str(i - 1)]["ost_step"][str(j - 1)]) - elif "subanswer" in trace[str(i - 1)]: - res.append(trace[str(i - 1)]["subanswer"]["text"]) - else: - import pdb - - pdb.set_trace() - return res - - -def extract_completions(data_item): - res = [] - for item in data_item: - res.append(data_item[item]["model_solution"]) - return res - - -def eval_single_item_from_answer_sheets( - example_id, - answer_sheets_dir, - evaluator: Evaluator, - vote_pool_dir=None, - num_votes=-1, -): - data_item = {} - gold_answer = read_json(os.path.join(answer_sheets_dir, f"{example_id}.json"))[ - "gold_answer" - ] - data_1 = read_json( - os.path.join( - answer_sheets_dir, - example_id.replace(" - Answer", " - Final Solutions") + ".json", - ) - ) - data_2 = read_json( - os.path.join( - answer_sheets_dir, - example_id.replace(" - Answer", " - Rollout Solutions") + ".json", - ) - ) - - data_1 = extract_trace(data_1, num_votes) # data_1 + data_2 - data_2 = extract_trace(data_2, num_votes) # data_1 + data_2 - data_1_2 = data_1 + data_2 - model_answer_1_2, _, _, _ = evaluator.find_most_confident_answer(data_1_2) - result_1_2 = evaluator.check_answers_equiv(model_answer_1_2, gold_answer) - data_item["correct"] = result_1_2 - data_item["predict_answer"] = model_answer_1_2 - data_item["gold_answer"] = gold_answer - - return data_item - - -def eval_exp(exp_dir: str, dataset_name: str, num_votes: int = -1): - answer_sheets_dir = os.path.join(exp_dir, "answer_sheets") - vote_pool_dir = os.path.join(exp_dir, "vote_pool") - - example_ids = [ - f.replace(".json", "") - for f in os.listdir(answer_sheets_dir) - if f.endswith(" - Answer.json") - ] - evaluator = eval(f"{dataset_name}Evaluator()") - - data_list = [] - for example_id in tqdm(example_ids): - # try: - dta = eval_single_item_from_answer_sheets( - example_id, answer_sheets_dir, evaluator, vote_pool_dir, num_votes - ) - data_list.append(dta) - # except: - # print(f"Error in {example_id}") - - # Calculate accuracy - accuracy = sum([item["correct"] for item in data_list]) / len(data_list) - print(f"accuracy: {accuracy}") - - # Save eval results - eval_result_dir = answer_sheets_dir.replace("run", "eval").replace( - "answer_sheets", "" - ) - os.makedirs(eval_result_dir, exist_ok=True) - save_json(data_list, os.path.join(eval_result_dir, "eval_results.json")) - analysis = { - "accuracy": accuracy, - "num_tested": len(data_list), - "num_correct": accuracy * len(data_list), - } - save_json(analysis, os.path.join(eval_result_dir, "analysis.json")) - - -if __name__ == "__main__": - parser = ArgumentParser() - parser.add_argument("--dataset_name", type=str, required=True) - parser.add_argument("--exp_dir_path", type=str, required=True) - parser.add_argument("--num_votes", type=int, default=-1) - args = parser.parse_args() - - eval_exp(args.exp_dir_path, args.dataset_name, num_votes=args.num_votes) diff --git a/envs/rstar/eval_src/toolkit_for_MATH/latex_answer_check.py b/envs/rstar/eval_src/toolkit_for_MATH/latex_answer_check.py deleted file mode 100644 index 70f63ba..0000000 --- a/envs/rstar/eval_src/toolkit_for_MATH/latex_answer_check.py +++ /dev/null @@ -1,280 +0,0 @@ -# --------------------------------------------------------- -# Xwin-Math -# Copyright (c) 2023 Xwin-Math Team -# Licensed under The MIT License [see LICENSE for details] -# Based on ToRA (https://github.com/microsoft/ToRA/blob/main/src/eval/grader.py) -# Modified by Weiqi Wang -# --------------------------------------------------------- - -import sys - -sys.path.append(".") - -from .parsing_lib import * - -from typing import Union, Any - -from copy import deepcopy -from math import isclose -from sympy import simplify, N -from sympy.parsing.sympy_parser import parse_expr -from sympy.parsing.latex import parse_latex - - -def has_numbers(input_string: str) -> bool: - """ - Checks if a string contains a number. - """ - return any(char.isdigit() for char in input_string) - - -def has_structure(input_string: str) -> bool: - """ - Checks if a string contains structured content. - """ - if ( - "(" in input_string - or ")" in input_string - or "[" in input_string - or "]" in input_string - or "\\" in input_string - or "<" in input_string - or ">" in input_string - or "," in input_string - or "x" in input_string - or "y" in input_string - or "z" in input_string - ): - return True - return False - - -def sympy_parse(input_string: str) -> Any: - """ - Parsing strings into mathematical expressions using sympy - """ - for f in [parse_latex, parse_expr]: - try: - return f(input_string) - except: - pass - return input_string - - -def symbolic_equal(a: str, b: str) -> Union[bool, None]: - """ - Check if two strings are symbolic equal. - """ - a = sympy_parse(a) - b = sympy_parse(b) - - try: - if simplify(a - b) == 0: - return True - except: - pass - - try: - if isclose(N(a), float(N(a)), rel_tol=1e-9) and isclose( - N(a), float(N(a)), rel_tol=1e-9 - ): - return False - except: - pass - - try: - if isclose(N(a), N(b), rel_tol=1e-3): - return True - except: - pass - return None - - -def convert_to_int(input_string: str) -> Union[int, None]: - """ - Try to convert a string into int. Return `None` if an error occurs. - """ - try: - float_s = float(input_string) - int_s = int(float_s) - - # If a floating-point number is converted to an integer that is very close to itself, then we consider it to be an integer. - if isclose(int_s, float_s, rel_tol=1e-9): - return int_s - return None - except: - return None - - -def convert_to_float(input_string: str) -> Union[float, None]: - """ - Try to convert a string into float. Return `None` if an error occurs. - """ - try: - float_s = float(input_string) - return float_s - except: - return None - - -def numerical_equal(a: str, b: str) -> Union[bool, None]: - """ - Check if two strings are numerical equal. - """ - a_int = convert_to_int(a) - b_int = convert_to_int(b) - - if a_int is not None and b_int is not None: - return a_int == b_int - - a_float = convert_to_float(a) - b_float = convert_to_float(b) - - if a_float is not None and b_float is not None: - return isclose(a_float, b_float, rel_tol=1e-3) - - return None - - -def literal_check(model_generated_answer: str, ground_truth: str) -> Union[bool, None]: - """ - Check if two strings are the same character by character - """ - model_remove = ( - deepcopy(model_generated_answer) - .replace(",", " ") - .replace(" ", "") - .replace(" ", "") - ) - gt_remove = ( - deepcopy(ground_truth).replace(",", " ").replace(" ", "").replace(" ", "") - ) - - if model_remove == gt_remove: - return True - - if ( - has_numbers(model_generated_answer) == False - and has_numbers(ground_truth) == False - ): - model_generated_answer = model_remove.strip("[]() ") - ground_truth = gt_remove.strip("[]() ") - if model_generated_answer == ground_truth: - return True - - return None - - -def number_check(model_generated_answer: str, ground_truth: str) -> None: - """ - Check if two strings have the same mathematical meaning. - """ - if "," in model_generated_answer or "," in ground_truth: - return None - - model_generated_answer = remove_prefix_and_suffix( - remove_equals(model_generated_answer) - ) - ground_truth = remove_prefix_and_suffix(remove_equals(ground_truth)) - - numerical_equal_result = numerical_equal(model_generated_answer, ground_truth) - if numerical_equal_result is not None: - return numerical_equal_result - - symbolic_equal_result = symbolic_equal(model_generated_answer, ground_truth) - - if symbolic_equal_result is not None: - return symbolic_equal_result - - return None - - -def latex_answer_check( - model_output, - gt_answer, - split=None, - extract_policy: str = "flex", - eval_policy: str = "aggressive", -): - assert gt_answer is not None - assert len(gt_answer) > 0 - - if model_output is None or model_output == "": - return False - - # Step 1: Extract answer from response - if split is not None: - model_output = extract_answer( - model_output, split, extract_policy=extract_policy - ) - - if model_output is None or model_output == "": - return False - - # Step 2: Remove boxes and perform literal check - # Compare strings character by character after simple processing including remove $%. - # First we remove the boxes in the string but keeps the content - # \boxed{\frac{13}{4}} --> \frac{13}{4} - model_ans_norm = string_normalization(model_output) - model_ans_norm_wo_boxes = remove_boxes_keep_content(model_ans_norm) - gt_norm = string_normalization(gt_answer) - gt_norm_wo_boxes = remove_boxes_keep_content(gt_norm) - - literal_check_result = literal_check( - remove_prefix_and_suffix(model_ans_norm_wo_boxes), - remove_prefix_and_suffix(gt_norm_wo_boxes), - ) - if literal_check_result is not None: - return literal_check_result - - # Step 3: Attempt to parse -- single - # Treat a string as a single number/extract a single number from a string and then compare. - # - # If we can accept a few mistakes, we try to extract numbers from the answers and compare them - if eval_policy == "aggressive": - # We wan't to use raw model_output to keep the $$ - # $13$ meters --> $13$ --> 13 - model_ans_num_lst = search_for_numbers(model_output) - - # We want the original answer has $$ - # This way we are able to consider the answer as a whole - # We don't want \frac{13}{4} --> [13, 4] to be considered as 2 numbers - if gt_answer[0] != "$" or gt_answer[-1] != "$": - gt_num_lst = search_for_numbers("$" + gt_answer + "$") - else: - gt_num_lst = search_for_numbers(gt_answer) - - # We want to judge only those answers that contain only one number that represents the full meaning of the original string. - # If the string still has LaTeX components or variables in addition to this number, then we believe that this number may not represent the meaning of the answer. - # Here we must be really really careful. - # x \\leq -5 vs. x \\geq -5 - # (-\\infty, 5) vs. (5, +\\infty) - # TODO: We may have better methods to check if the numbers are simple enough - if ( - len(model_ans_num_lst) == 1 - and len(gt_num_lst) == 1 - and not has_structure(model_output.replace(model_ans_num_lst[0], "")) - and not has_structure(gt_answer.replace(gt_num_lst[0], "")) - ): - - model_num = remove_prefix_and_suffix( - remove_boxes_keep_content(remove_text_box_only(model_ans_num_lst[0])) - ) - gt_num = remove_prefix_and_suffix( - remove_boxes_keep_content(remove_text_box_only(gt_num_lst[0])) - ) - parse_result = number_check(model_num, gt_num) #! problematic - - # As an additional method of judgment, even if it returns False we can't say that the answer is wrong, it could be caused by an unreasonable extraction of numbers - if parse_result is True: - return True - - # Here we do the same thing to the whole string - model_wo_text = remove_prefix_and_suffix(model_ans_norm) - gt_wo_text = remove_prefix_and_suffix(gt_norm) - parse_result = number_check(model_wo_text, gt_wo_text) - if parse_result is not None: - return parse_result - - # If none of the above ways can determine whether the answer is correct or incorrect, then return incorrect - return False diff --git a/envs/rstar/eval_src/toolkit_for_MATH/metamath_utils.py b/envs/rstar/eval_src/toolkit_for_MATH/metamath_utils.py deleted file mode 100644 index 69eaf59..0000000 --- a/envs/rstar/eval_src/toolkit_for_MATH/metamath_utils.py +++ /dev/null @@ -1,258 +0,0 @@ -import pprint - - -def last_boxed_only(sample): - q, a = sample - a = last_boxed_only_string(a) - if a == None: - return None - return (q, a) - - -def last_boxed_only_string(string): - idx = string.rfind("\\boxed") - if idx < 0: - idx = string.rfind("\\fbox") - if idx < 0: - return None - - i = idx - right_brace_idx = None - num_left_braces_open = 0 - while i < len(string): - if string[i] == "{": - num_left_braces_open += 1 - if string[i] == "}": - num_left_braces_open -= 1 - if num_left_braces_open == 0: - right_brace_idx = i - break - i += 1 - - if right_brace_idx == None: - retval = None - else: - retval = string[idx : right_brace_idx + 1] - - return retval - - -def only_until_first_boxed_from_tokens(string, tokens): - idx = string.find("\\boxed") - if idx < 0: - idx = string.find("\\fbox") - if idx < 0: - return None - - cum_length = 0 - for i, t in enumerate(tokens): - cum_length += len(t) - if cum_length >= idx: - break - - return tokens[:i] - - -def clean_numbers(sample): - if not sample: - return None - new_sample = list() - for s in sample: - new_sample.append(_clean_numbers(s)) - - return tuple(new_sample) - - -def _clean_numbers(string): - """ - Clean Numbers in the given string - - >>> _clean_numbers(None, "Hello 123") - 'Hello 123' - >>> _clean_numbers(None, "Hello 1234") - 'Hello 1,234' - >>> _clean_numbers(None, "Hello 1234324asdasd") - 'Hello 1,234,324asdasd' - """ - num_prev_digits = 0 - new_string = "" - for i, c in enumerate(string): - # isdigit() doesnt work here because of weird unicode chars. - if c in {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"}: - num_prev_digits += 1 - else: - if num_prev_digits > 3: - # Some fixing - string_number = new_string[-num_prev_digits:] - new_string = new_string[:-num_prev_digits] + "{0:,}".format( - int(string_number) - ) - num_prev_digits = 0 - new_string += c - - if num_prev_digits > 3: - # Some fixing - string_number = new_string[-num_prev_digits:] - new_string = new_string[:-num_prev_digits] + "{0:,}".format(int(string_number)) - - return new_string - - -def fix_fracs(string): - substrs = string.split("\\frac") - new_str = substrs[0] - if len(substrs) > 1: - substrs = substrs[1:] - for substr in substrs: - new_str += "\\frac" - if substr[0] == "{": - new_str += substr - else: - try: - assert len(substr) >= 2 - except AssertionError: - return string - a = substr[0] - b = substr[1] - if b != "{": - if len(substr) > 2: - post_substr = substr[2:] - new_str += "{" + a + "}{" + b + "}" + post_substr - else: - new_str += "{" + a + "}{" + b + "}" - else: - if len(substr) > 2: - post_substr = substr[2:] - new_str += "{" + a + "}" + b + post_substr - else: - new_str += "{" + a + "}" + b - string = new_str - return string - - -def fix_a_slash_b(string): - if len(string.split("/")) != 2: - return string - a = string.split("/")[0] - b = string.split("/")[1] - try: - a = int(a) - b = int(b) - assert string == "{}/{}".format(a, b) - new_string = "\\frac{" + str(a) + "}{" + str(b) + "}" - return new_string - except AssertionError: - return string - - -def remove_right_units(string): - # "\\text{ " only ever occurs (at least in the val set) when describing units - if "\\text{ " in string: - splits = string.split("\\text{ ") - assert len(splits) == 2 - return splits[0] - else: - return string - - -def fix_sqrt(string): - if "\\sqrt" not in string: - return string - splits = string.split("\\sqrt") - new_string = splits[0] - for split in splits[1:]: - if split[0] != "{": - a = split[0] - new_substr = "\\sqrt{" + a + "}" + split[1:] - else: - new_substr = "\\sqrt" + split - new_string += new_substr - return new_string - - -def strip_string(string): - # linebreaks - string = string.replace("\n", "") - - # remove inverse spaces - string = string.replace("\\!", "") - - # replace \\ with \ - string = string.replace("\\\\", "\\") - - # replace tfrac and dfrac with frac - string = string.replace("tfrac", "frac") - string = string.replace("dfrac", "frac") - - # remove \left and \right - string = string.replace("\\left", "") - string = string.replace("\\right", "") - - # Remove circ (degrees) - string = string.replace("^{\\circ}", "") - string = string.replace("^\\circ", "") - - # remove dollar signs - string = string.replace("\\$", "") - - # remove units (on the right) - string = remove_right_units(string) - - # remove percentage - string = string.replace("\\%", "") - string = string.replace("\%", "") # noqa: W605 - - # " 0." equivalent to " ." and "{0." equivalent to "{." Alternatively, add "0" if "." is the start of the string - string = string.replace(" .", " 0.") - string = string.replace("{.", "{0.") - # if empty, return empty string - if len(string) == 0: - return string - if string[0] == ".": - string = "0" + string - - # to consider: get rid of e.g. "k = " or "q = " at beginning - if len(string.split("=")) == 2: - if len(string.split("=")[0]) <= 2: - string = string.split("=")[1] - - # fix sqrt3 --> sqrt{3} - string = fix_sqrt(string) - - # remove spaces - string = string.replace(" ", "") - - # \frac1b or \frac12 --> \frac{1}{b} and \frac{1}{2}, etc. Even works with \frac1{72} (but not \frac{72}1). Also does a/b --> \\frac{a}{b} - string = fix_fracs(string) - - # manually change 0.5 --> \frac{1}{2} - if string == "0.5": - string = "\\frac{1}{2}" - - # NOTE: X/Y changed to \frac{X}{Y} in dataset, but in simple cases fix in case the model output is X/Y - string = fix_a_slash_b(string) - - return string - - -def is_equiv(str1, str2, verbose=False): - if str1 is None and str2 is None: - print("WARNING: Both None") - return True - if str1 is None or str2 is None: - return False - - try: - ss1 = strip_string(str1) - ss2 = strip_string(str2) - # pdb.set_trace() - if verbose: - print(ss1, ss2) - return ss1 == ss2 - except Exception: - return str1 == str2 - - -class NotEqual: - def __eq__(self, other): - return False diff --git a/envs/rstar/eval_src/toolkit_for_MATH/parsing_lib.py b/envs/rstar/eval_src/toolkit_for_MATH/parsing_lib.py deleted file mode 100644 index 5bb2f82..0000000 --- a/envs/rstar/eval_src/toolkit_for_MATH/parsing_lib.py +++ /dev/null @@ -1,247 +0,0 @@ -# --------------------------------------------------------- -# Xwin-Math -# Copyright (c) 2023 Xwin-Math Team -# Licensed under The MIT License [see LICENSE for details] -# Written by Weiqi Wang -# --------------------------------------------------------- - -from pyparsing import * -from typing import List -import os - - -def extract_answer( - model_generated_answer: str, split: List[str], extract_policy: str -) -> str: - """ - Extract answer from response. - """ - model_generated_answer_split_list = [] - for split_item in split: - if model_generated_answer.find(split_item) != -1: - model_generated_answer_split_list.append( - model_generated_answer.split(split_item)[-1] - ) - - shortest = None - if len(model_generated_answer_split_list) != 0: - for ans in model_generated_answer_split_list: - if shortest is None or len(ans) < len(shortest): - shortest = ans - - return shortest - - if extract_policy == "flex": - boxes = search_for_boxes(model_generated_answer) - if len(boxes) != 0: - return boxes[-1] - - numbers = search_for_numbers(model_generated_answer) - if len(numbers) != 0: - return numbers[-1] - - return None - - -def remove_prefix_and_suffix(string: str) -> str: - """ - Remove unnecessary prefixes and suffixes from the input strings - """ - return string.strip(" \n").rstrip(".").strip(" \n").rstrip(".") - - -def string_normalization(string: str) -> str: - """ - Normalize strings, convert to lowercase and remove or replace special symbols - """ - return ( - string.replace("\\$", "") - .replace("$", "") - .replace("\\%", "") - .replace("%", "") - .replace("^\\circ", "") - .replace("^{\\circ}", "") - .replace("\u03c0", "\\pi") - .replace("{,}", "") - .replace("\u00b0", "") - .lower() - ) - - -def search_for_intervals(input: str) -> str: - """ - Extract the interval in the answer - For example: - The answer is: (-\infty, 0) \cup (1, +\infty) and [1, 2]. --> ['(-\infty, 0) \cup (1, +\infty)', '[1, 2]'] - """ - latex_objects = Word(alphanums + "+ - * / ^ | % $ ! \\ { }") - left_bracket = oneOf("[ (") - right_bracket = oneOf("] )") - space = Optional(" ") - interval = ( - left_bracket - + latex_objects - + space - + "," - + space - + latex_objects - + right_bracket - ) - intervals = Combine( - delimitedList(interval, delim=space + "\\cup" + space, combine=True) - ) - - result = intervals.searchString(input) - return [_[0] for _ in result] - - -def search_for_joint_element_with_bracket(input): - """ - Extract parallel elements wrapped in parentheses. - For example: - - """ - nestedParens = Forward() - nestedBraces = Forward() - nestedSquareBrackets = Forward() - - nestedParens << ( - "(" - + ZeroOrMore( - nestedParens | nestedBraces | nestedSquareBrackets | CharsNotIn("()") - ) - + ")" - ) - nestedBraces << ( - "{" - + ZeroOrMore( - nestedParens | nestedBraces | nestedSquareBrackets | CharsNotIn("{}") - ) - + "}" - ) - nestedSquareBrackets << ( - "[" - + ZeroOrMore( - nestedParens | nestedBraces | nestedSquareBrackets | CharsNotIn("[]") - ) - + "]" - ) - - parser = nestedParens | nestedBraces | nestedSquareBrackets - - result_list = parser.searchString(input) - filtered_result_list = [] - - for result_item in result_list: - result_item_str = "".join(result_item) - if "," in result_item_str: - filtered_result_list.append(result_item_str) - - return filtered_result_list - - -def search_for_joint_elements_without_bracket(input): - if "," in input: - return ["{" + input + "}"] - - return [] - - -def remove_commas_from_integers(input): - comma = "," - not_comma = ~Literal(comma) - digit_first = Word(nums, max=3) - digit_others = Word(nums, min=3, max=3) - sign = Optional(Word("+-", exact=1)) - - number_with_comma = Combine( - sign + digit_first + OneOrMore(comma + digit_others) + not_comma - )("number") - - def replace_commas(tokens): - return "".join(tokens[0].split(",")) - - number_with_comma.setParseAction(replace_commas) - return number_with_comma.transformString(input) - - -def search_for_boxes(input): - element = originalTextFor(nestedExpr("{", "}")) - parser = Literal("\\boxed") + element | Literal("\\mbox") + element - results = parser.searchString(input) - return [_[1][1:-1] for _ in results] - - -def search_for_numbers(input): - integer = Word("-" + nums, nums) - fraction = Combine(Word("-" + nums, nums) + "/" + Word(nums)) - decimal = Combine(Optional(Word("-" + nums, nums)) + "." + Word(nums)) - scientific = Combine(Word("-" + nums, nums) + "e" + Word("-" + nums, nums)) - latex = Combine(Suppress("$") + SkipTo("$") + Suppress("$")) - number_with_comma = Combine( - Optional(Word("+-", exact=1)) - + Word(nums, max=3) - + OneOrMore(Suppress(",") + Word(nums, min=3, max=3)) - + Suppress(~Literal(",")) - ) - - parser = latex | scientific | fraction | decimal | number_with_comma | integer - - return [_[0] for _ in parser.searchString(input)] - - -def remove_text_box_only(input): - tex_expr = Literal("\\text") + nestedExpr("{", "}") + Optional( - "^" + Char(nums) - ) | Literal("\\mbox") + nestedExpr("{", "}") + Optional("^" + Char(nums)) - return "".join(tex_expr.suppress().transformString(input)) - - -def remove_boxes_keep_content(input_string): - box_types = ["\\box", "\\boxed", "\\mbox", "\\text"] - for box in box_types: - while True: - start = input_string.find(box) - if start == -1: # box type not found - break - brace_start = input_string.find("{", start) - if brace_start == -1: # "{" not found after box type - break - brace_count = 0 - for i in range(brace_start, len(input_string)): - if input_string[i] == "{": - brace_count += 1 - elif input_string[i] == "}": - brace_count -= 1 - if brace_count == 0: # matching "}" found - brace_end = i - break - else: # matching "}" not found - break - # remove box type but keep the content inside - input_string = ( - input_string[:start] - + input_string[brace_start + 1 : brace_end] - + input_string[brace_end + 1 :] - ) - return input_string - - -def remove_equals(input_string): - if "=" in input_string and len(input_string.split("=")) == 2: - left, right = input_string.split("=") - if ( - right.strip(" \n").rstrip(".").strip(" \n").rstrip(".") == "0" - and len(left.strip(" \n").rstrip(".").strip(" \n").rstrip(".")) >= 2 - ): - return left - else: - return right - return input_string - - -def add_prefix_to_filename(path, prefix): - dirname, filename = os.path.split(path) - new_filename = prefix + "_" + filename - new_path = os.path.join(dirname, new_filename) - return new_path diff --git a/envs/rstar/eval_src/toolkit_for_MATH/simple_answer_check.py b/envs/rstar/eval_src/toolkit_for_MATH/simple_answer_check.py deleted file mode 100644 index 7c76d7c..0000000 --- a/envs/rstar/eval_src/toolkit_for_MATH/simple_answer_check.py +++ /dev/null @@ -1,148 +0,0 @@ -# --------------------------------------------------------- -# Xwin-Math -# Copyright (c) 2023 Xwin-Math Team -# Licensed under The MIT License [see LICENSE for details] -# Written by Weiqi Wang -# --------------------------------------------------------- - -import sys - -sys.path.append(".") - -from eval_src.eval_MATH.parsing_lib import * - -import re -import math - - -def cast_to_number(string): - string = string.replace(":", "/") - if "." not in string and "/" not in string: - return int(string) - if "/" not in string and abs(int(float(string)) - float(string)) < 1e-10: - return int(float(string)) - if "/" in string: - return eval(string) - return float(string) - - -def get_simple_numbers(string): - # pattern_for_percentage = r"(\d+(.\d+)*%)" - pattern_for_integer = r"-?\d+" - pattern_for_comma = r"(-?\d{1,3}(,\d{3})+(.\d+)?)" - pattern_for_float_in_fraction = r"(-?\d+(.\d+)?\s*[/:]\s*\d+(.\d+)?)" - pattern_for_float_or_fraction = r"-?\d+\s*[\./:]\s*\d+" - pattern_for_sci = r"(-?\d(.\d+)?[eE][+-]?\d+)" - - pattern_list = [ - pattern_for_sci, - pattern_for_float_in_fraction, - pattern_for_comma, - pattern_for_float_or_fraction, - pattern_for_integer, - ] - - result_list = [] - - for pattern in pattern_list: - curr_pattern_result = re.findall(pattern, string) - for item in curr_pattern_result: - if isinstance(item, tuple) and item[0] != "": - item = item[0] - else: - item = item - item = item.replace(",", "") - result_list.append(cast_to_number(item)) - string = re.sub(pattern, "", string) - - return result_list - - -def compare_numbers(number_1, number_2): - if isinstance(number_1, int) and isinstance(number_2, int): - return number_1 == number_2 - - return math.isclose(number_1, number_2, rel_tol=1e-3) - - -def simple_answer_check( - model_generated_answer, ground_truth, extract_policy, eval_policy, split -): - - model_generated_answer = extract_answer( - model_generated_answer, split=split, extract_policy=extract_policy - ) - if model_generated_answer is None: - return False - model_generated_answer = ( - model_generated_answer.rstrip(".") - .rstrip(" ") - .rstrip("\n") - .rstrip(".") - .rstrip(" ") - .rstrip("\n") - .replace("$", "") - ) - - try: - ground_truth_number_list = get_simple_numbers(ground_truth) - model_generated_answer_number_list = get_simple_numbers(model_generated_answer) - except Exception as e: - return False - - if ( - len(ground_truth_number_list) == 0 - and len(model_generated_answer_number_list) == 0 - ): - return ( - model_generated_answer.replace("\n", "").replace(" ", "").lower() - == ground_truth.replace("\n", "").replace(" ", "").lower() - ) - - if ( - len(model_generated_answer_number_list) == 0 - or len(ground_truth_number_list) == 0 - ): - return False - - if eval_policy == "strict" and len(ground_truth_number_list) != len( - model_generated_answer_number_list - ): - return False - - while ( - len(ground_truth_number_list) != 0 - and len(model_generated_answer_number_list) != 0 - ): - matched = False - for ground_truth_number in ground_truth_number_list: - for model_generated_answer_number in model_generated_answer_number_list: - if compare_numbers(model_generated_answer_number, ground_truth_number): - model_generated_answer_number_list.remove( - model_generated_answer_number - ) - ground_truth_number_list.remove(ground_truth_number) - matched = True - break - if matched: - break - if matched: - continue - else: - break - - if eval_policy == "strict": - if ( - len(ground_truth_number_list) == 0 - and len(model_generated_answer_number_list) == 0 - ): - return True - return False - elif eval_policy == "model_include_gt": - if len(ground_truth_number_list) == 0: - return True - return False - elif eval_policy == "gt_include_model": - if len(model_generated_answer_number_list) == 0: - return True - return False diff --git a/envs/rstar/prompts/MATH/decompose/decompose_prompt.txt b/envs/rstar/prompts/MATH/decompose/decompose_prompt.txt deleted file mode 100644 index 17198e8..0000000 --- a/envs/rstar/prompts/MATH/decompose/decompose_prompt.txt +++ /dev/null @@ -1,37 +0,0 @@ -Given a question, please decompose it into sub-questions. For each sub-question, please answer it in a complete sentence, ending with "The answer is ". When the original question is answerable, please start the subquestion with "Now we can answer the question: ". - -Question 1: Ben rolls four fair 20-sided dice, and each of the dice has faces numbered from 1 to 20. What is the probability that exactly two of the dice show an even number? -Question 1.1: What is the probability that a 20-sided die will show an even number? -Answer 1.1: Since there are 10 even numbers and 10 odd numbers, there is a $\frac{1}{2}$ probability for an even outcome. The answer is $\frac{1}{2}$. -Question 1.2: How many ways can exactly two of the four dice show an even number? -Answer 1.2: We can choose 2 dice out of 4 to show even numbers in $\binom{4}{2}=6$ ways. The answer is 6. -Question 1.3: What is the probability that in one of these ways, the chosen dice show even numbers and the others show odd numbers? -Answer 1.3: For each way, the probability is $\left( \frac{1}{2} \right)^4=\frac{1}{16}$. The answer is $\frac{1}{16}$. -Question 1.4: Now we can answer the question: What is the probability that exactly two of the dice show an even number? -Answer 1.4: The probability is $6\cdot \frac{1}{16}=\boxed{\frac{3}{8}}$. The answer is $\frac{3}{8}$. - -Question 2: Juan takes a number, adds $2$ to it, multiplies the answer by $2$, subtracts $2$ from the result, and finally divides that number by $2$. If his answer is $7$, what was the original number? -Question 2.1: What is the equation that represents the operations Juan performs on the original number to get the answer $7$? -Answer 2.1: The operations Juan performs can be represented by the equation $(2(n + 2) - 2) / 2 = 7$. The answer is $(2(n + 2) - 2) / 2 = 7$. -Question 2.2: What is the value of $n$ when the equation is solved? -Answer 2.2: Solving the equation gives $n = 6$. The answer is 6. -Question 2.3: Now we can answer the question: What was the original number? -Answer 2.3: The original number was $\boxed{6}$. The answer is 6. - -Question 3: The function $f : \mathbb{R} \to \mathbb{R}$ satisfies\n\[f(x) + 2f(1 - x) = 3x^2\]for all $x.$ Find $f(4).$ -Question 3.1: What is the given functional equation when $x = 4$? -Answer 3.1: Substituting $x = 4$ into the given functional equation results in \[f(4) + 2f(-3) = 48.\] The answer is $f(4) + 2f(-3) = 48.$ -Question 3.2: What is the given functional equation when $x = -3$? -Answer 3.2: Substituting $x = -3$ into the given functional equation results in \[f(-3) + 2f(4) = 27.\] The answer is $f(-3) + 2f(4) = 27.$ -Question 3.3: What do we obtain by doubling the second equation and then subtracting the first equation from it? -Answer 3.3: Doubling the second equation gives us $2f(-3) + 4f(4) = 54.$ Subtracting the first equation $f(4) + 2f(-3) = 48$ from this, we get $3f(4) = 6.$ The answer is $3f(4) = 6.$ -Question 3.4: Now we can answer the question: What is $f(4)$? -Answer 3.4: Dividing both sides of the equation $3f(4) = 6$ by 3, we find that $f(4) = \boxed{2}.$ The answer is 2. - -Question 4: Find the distance between the points $(2,1,-4)$ and $(5,8,-3).$ -Question 4.1: What is the difference in the x-coordinates of the two points? -Answer 4.1: The difference is $2 - 5 = -3$. The answer is -3. -Question 4.2: What is the difference in the y-coordinates and the z-coordinates of the two points? -Answer 4.2: The difference in the y-coordinates is $1 - 8 = -7$ and in the z-coordinates is $-4 + 3 = -1$. The answers are -7 and -1 respectively. -Question 4.3: Now we can answer the question: What is the distance between the two points? -Answer 4.3: The distance is $\sqrt{(-3)^2 + (-7)^2 + (-1)^2} = \sqrt{9 + 49 + 1} = \sqrt{59}$. The answer is $\sqrt{59}$. \ No newline at end of file diff --git a/envs/rstar/prompts/MATH/decompose/decompose_prompt_rephrased.txt b/envs/rstar/prompts/MATH/decompose/decompose_prompt_rephrased.txt deleted file mode 100644 index bfd20c4..0000000 --- a/envs/rstar/prompts/MATH/decompose/decompose_prompt_rephrased.txt +++ /dev/null @@ -1,37 +0,0 @@ -Given a question, please decompose it into sub-questions. For each sub-question, please answer it in a complete sentence, ending with "The answer is ". When the original question is answerable, please start the subquestion with "Now we can answer the question: ". - -Question 1: Given a list of conditions, please answer the question. Condition 1: Ben rolls four fair 20-sided dice. Condition 2: Each die has faces numbered from 1 to 20. Question: What is the probability that exactly two out of the four dice will show an even number? -Question 1.1: What is the probability that a 20-sided die will show an even number? -Answer 1.1: Since there are 10 even numbers and 10 odd numbers, there is a $\frac{1}{2}$ probability for an even outcome. The answer is $\frac{1}{2}$. -Question 1.2: How many ways can exactly two of the four dice show an even number? -Answer 1.2: We can choose 2 dice out of 4 to show even numbers in $\binom{4}{2}=6$ ways. The answer is 6. -Question 1.3: What is the probability that in one of these ways, the chosen dice show even numbers and the others show odd numbers? -Answer 1.3: For each way, the probability is $\left( \frac{1}{2} \right)^4=\frac{1}{16}$. The answer is $\frac{1}{16}$. -Question 1.4: Now we can answer the question: What is the probability that exactly two of the dice show an even number? -Answer 1.4: The probability is $6\cdot \frac{1}{16}=\boxed{\frac{3}{8}}$. The answer is $\frac{3}{8}$. - -Question 2: Given a list of conditions, please answer the question. Condition 1: Juan performs a series of operations on a number: first, he adds $2$ to it. Condition 2: After adding $2$, he multiplies the result by $2$. Condition 3: He then subtracts $2$ from this product. Condition 4: Finally, he divides the last result by $2$ and finds that his answer is $7$. Question: What was the original number Juan started with? -Question 2.1: What is the equation that represents the operations Juan performs on the original number to get the answer $7$? -Answer 2.1: The operations Juan performs can be represented by the equation $(2(n + 2) - 2) / 2 = 7$. The answer is $(2(n + 2) - 2) / 2 = 7$. -Question 2.2: What is the value of $n$ when the equation is solved? -Answer 2.2: Solving the equation gives $n = 6$. The answer is 6. -Question 2.3: Now we can answer the question: What was the original number? -Answer 2.3: The original number was $\boxed{6}$. The answer is 6. - -Question 3: Given a list of conditions, please answer the question. Condition 1: The function $f : \mathbb{R} \to \mathbb{R}$ is defined by the equation $f(x) + 2f(1 - x) = 3x^2$ for all values of $x$. Question: What is the value of $f(4)$? -Question 3.1: What is the given functional equation when $x = 4$? -Answer 3.1: Substituting $x = 4$ into the given functional equation results in \[f(4) + 2f(-3) = 48.\] The answer is $f(4) + 2f(-3) = 48.$ -Question 3.2: What is the given functional equation when $x = -3$? -Answer 3.2: Substituting $x = -3$ into the given functional equation results in \[f(-3) + 2f(4) = 27.\] The answer is $f(-3) + 2f(4) = 27.$ -Question 3.3: What do we obtain by doubling the second equation and then subtracting the first equation from it? -Answer 3.3: Doubling the second equation gives us $2f(-3) + 4f(4) = 54.$ Subtracting the first equation $f(4) + 2f(-3) = 48$ from this, we get $3f(4) = 6.$ The answer is $3f(4) = 6.$ -Question 3.4: Now we can answer the question: What is $f(4)$? -Answer 3.4: Dividing both sides of the equation $3f(4) = 6$ by 3, we find that $f(4) = \boxed{2}.$ The answer is 2. - -Question 4: Given a list of conditions, please answer the question. Condition 1: The points in question are $(2,1,-4)$ and $(5,8,-3)$. Question: What is the distance between these two points? -Question 4.1: What is the difference in the x-coordinates of the two points? -Answer 4.1: The difference is $2 - 5 = -3$. The answer is -3. -Question 4.2: What is the difference in the y-coordinates and the z-coordinates of the two points? -Answer 4.2: The difference in the y-coordinates is $1 - 8 = -7$ and in the z-coordinates is $-4 + 3 = -1$. The answers are -7 and -1 respectively. -Question 4.3: Now we can answer the question: What is the distance between the two points? -Answer 4.3: The distance is $\sqrt{(-3)^2 + (-7)^2 + (-1)^2} = \sqrt{9 + 49 + 1} = \sqrt{59}$. The answer is $\sqrt{59}$. \ No newline at end of file diff --git a/envs/rstar/prompts/MATH/decompose/decompose_template.json b/envs/rstar/prompts/MATH/decompose/decompose_template.json deleted file mode 100644 index b6a73cc..0000000 --- a/envs/rstar/prompts/MATH/decompose/decompose_template.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "question_prefix": "Question 5: ", - "subquestion_prefix": "Question 5.{}:", - "overall_question_prefix": "Question 5.{}: Now we can answer the question: {}\n", - "answer_prefix": "Answer 5.{}: ", - "index": 5 -} \ No newline at end of file diff --git a/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_config--xijie.json b/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_config--xijie.json deleted file mode 100644 index ec2f461..0000000 --- a/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_config--xijie.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "prompt_template": "{examples}\n\nQ: {instruction}\nA: Let's think step by step. ", - "stop_tokens": [ - "Q:", - "A:", - "Q: ", - "A: " - ], - "answer_marker": "The answer is " -} \ No newline at end of file diff --git a/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_config.json b/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_config.json deleted file mode 100644 index f08ea85..0000000 --- a/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_config.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "prompt_template": "A chat between a curious user and an AI assistant. The assistant gives step-by-step solutions to the user's questions. In the end of assistant's response, a final answer is given in the format of \"The answer is: .\", where should be a numeric result or a math expression.\n\n{examples}\n\n### Instruction:\n{instruction}\n\n### Response:\n", - "stop_tokens": [ - "", - "USER:", - "USER", - "ASSISTANT:", - "ASSISTANT", - "Instruction:", - "Instruction", - "instruction", - "Response:", - "Response", - "response", - "#", - "# ", - "###", - "### ", - "\n\n\n" - ], - "answer_marker": "answer is" -} \ No newline at end of file diff --git a/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt--xijie.txt b/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt--xijie.txt deleted file mode 100644 index d38af02..0000000 --- a/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt--xijie.txt +++ /dev/null @@ -1,23 +0,0 @@ -Q: There are 15 trees in the grove. Grove workers will plant trees in the grove today. After they are done, there will be 21 trees. How many trees did the grove workers plant today? -A: Let's think step by step. There are 15 trees originally. Then there were 21 trees after some more were planted. So there must have been 21 - 15 = 6. The answer is 6. - -Q: If there are 3 cars in the parking lot and 2 more cars arrive, how many cars are in the parking lot? -A: Let's think step by step. There are originally 3 cars. 2 more cars arrive. 3 + 2 = 5. The answer is 5. - -Q: Leah had 32 chocolates and her sister had 42. If they ate 35, how many pieces do they have left in total? -A: Let's think step by step. Originally, Leah had 32 chocolates. Her sister had 42. So in total they had 32 + 42 = 74. After eating 35, they had 74 - 35 = 39. The answer is 39. - -Q: Jason had 20 lollipops. He gave Denny some lollipops. Now Jason has 12 lollipops. How many lollipops did Jason give to Denny? -A: Let's think step by step. Jason started with 20 lollipops. Then he had 12 after giving some to Denny. So he gave Denny 20 - 12 = 8. The answer is 8. - -Q: Shawn has five toys. For Christmas, he got two toys each from his mom and dad. How many toys does he have now? -A: Let's think step by step. Shawn started with 5 toys. If he got 2 toys each from his mom and dad, then that is 4 more toys. 5 + 4 = 9. The answer is 9. - -Q: There were nine computers in the server room. Five more computers were installed each day, from monday to thursday. How many computers are now in the server room? -A: Let's think step by step. There were originally 9 computers. For each of 4 days, 5 more computers were added. So 5 * 4 = 20 computers were added. 9 + 20 is 29. The answer is 29. - -Q: Michael had 58 golf balls. On tuesday, he lost 23 golf balls. On wednesday, he lost 2 more. How many golf balls did he have at the end of wednesday? -A: Let's think step by step. Michael started with 58 golf balls. After losing 23 on tuesday, he had 58 - 23 = 35. After losing 2 more, he had 35 - 2 = 33 golf balls. The answer is 33. - -Q: Olivia has $23. She bought five bagels for $3 each. How much money does she have left? -A: Let's think step by step. Olivia had 23 dollars. 5 bagels for 3 dollars each will be 5 x 3 = 15 dollars. So she has 23 - 15 dollars left. 23 - 15 is 8. The answer is 8. \ No newline at end of file diff --git a/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt.txt b/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt.txt deleted file mode 100644 index cbc9e6f..0000000 --- a/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt.txt +++ /dev/null @@ -1,23 +0,0 @@ -### Instruction: -Gracie and Joe are choosing numbers on the complex plane. Joe chooses the point $1+2i$. Gracie chooses $-1+i$. How far apart are Gracie and Joe's points? - -### Response: -Let's think step by step. The distance between two points $(x_1,y_1)$ and $(x_2,y_2)$ in the complex plane is given by the formula $\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}$. In this case, Joe's point is $(1,2)$ and Gracie's point is $(-1,1)$. So the distance between their points is $\sqrt{((-1)-(1))^2+((1)-(2))^2}=\sqrt{(-2)^2+(-1)^2}=\sqrt{4+1}=\sqrt{5}$. Therefore, Gracie and Joe's points are $\boxed{\sqrt{5}}$ units apart. The answer is: \sqrt{5}. - -### Instruction: -What is the sum of all positive integer values of $n$ for which $\frac{n+6}{n}$ is an integer? - -### Response: -Let's think step by step. We want $\frac{n+6}{n}$ to be an integer. This means that $n+6$ must be divisible by $n$. Since $n$ is a positive integer, $n+6$ must be greater than $n$. Therefore, $n$ must be a factor of 6. The positive factors of 6 are 1, 2, 3, and 6. The sum of these factors is $1+2+3+6=\boxed{12}$. The answer is: 12. - -### Instruction: -Abigail, Beatrice, and Carson want to sell their eggs at the market. Abigail has 37 eggs, Beatrice has 49 eggs, and Carson has 14 eggs. They can only sell the eggs in cartons of 12. How many eggs will be remaining if they sell all the cartons? - -### Response: -Let's think step by step. First, we find the total number of eggs they have: $37 + 49 + 14 = 100$. Next, we divide the total number of eggs by the number of eggs per carton: $100 \div 12 = 8$ with a remainder of $4$. Therefore, if they sell all the cartons, there will be $\boxed{4}$ eggs remaining. The answer is: 4. - -### Instruction: -Circle $T$ has its center at point $T(-2,6)$. Circle $T$ is reflected across the $y$-axis and then translated 8 units down. What are the coordinates of the image of the center of circle $T$? - -### Response: -Let's think step by step. Reflecting a point across the $y$-axis negates its $x$-coordinate. So, the image of point $T(-2,6)$ after reflecting across the $y$-axis is $(-(-2),6)=(2,6)$. Then, translating a point down 8 units subtracts 8 from its $y$-coordinate. So, the image of point $(2,6)$ after translating down 8 units is $(2,6-8)=(2,-2)$. Therefore, the coordinates of the image of the center of circle $T$ are $\boxed{(2,-2)}$. The answer is: (2,-2). \ No newline at end of file diff --git a/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt_old.txt b/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt_old.txt deleted file mode 100644 index 19a1726..0000000 --- a/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt_old.txt +++ /dev/null @@ -1,23 +0,0 @@ -### Instruction: -If $3p+4q=8$ and $4p+3q=13$, what is $q$ equal to? - -### Response: -Let's think step by step. To find the value of $q$, we first aim to eliminate $p$ from our equations. We do this by making the coefficient of $p$ the same in both equations. By multiplying the first equation by 4 and the second equation by 3, we get two new equations: $12p + 16q = 32$ and $12p + 9q = 39$. Now, we can subtract the second equation from the first, which leads to the cancellation of $p$ and gives us $7q = -7$. Dividing both sides by 7, we find that $q = -1$. The answer is: -1. - -### Instruction: -The Smith family has 4 sons and 3 daughters. In how many ways can they be seated in a row of 7 chairs such that at least 2 boys are next to each other? - -### Response: -Let's think step by step. First, realize that calculating directly is complex due to numerous cases. Instead, use complementary counting. There's only one arrangement avoiding two boys sitting together, which is BGBGBGB. For this arrangement, the boys can be seated in $4!$ ways, and the girls in $3!$ ways, totaling $4! \times 3! = 144$ undesirable seatings. To find the desired seatings, subtract these from the total unrestricted seatings of $7!$. Therefore, the number of desired seatings is $7! - (4! \times 3!) = 5040-144 = \boxed{4896}$. The answer is: 4896. - -### Instruction: -A square and four circles, each with a radius of 5 inches, are arranged as shown. What is the area, in square inches, of the square? [asy]\nunitsize(1mm);\ndefaultpen(linewidth(0.7pt));\n\ndraw((0,0)--(20,0)--(20,20)--(0,20)--cycle);\ndraw(Circle((5,5),5));\ndraw(Circle((15,5),5));\ndraw(Circle((5,15),5));\ndraw(Circle((15,15),5));\n[/asy] - -### Response: -Let's think step by step. To determine the area of the square, we need to know its side length. The diagram shows one circle in each corner of the square, with each circle touching the square's sides and adjacent circles. The diameter of one circle is twice its radius, so the diameter is $2 \times 5$ inches = $10$ inches. Since the square can accommodate two diameters along its length and width (because there are two circles along each dimension), the side length of the square is $10$ inches + $10$ inches = $20$ inches. Therefore, the area of the square is calculated by squaring its side length, which gives us $20$ inches $\times$ $20$ inches = $400$ square inches. The answer is: 400. - -### Instruction: -Given that $a$ is a multiple of $1428$, find the greatest common divisor of $a^2+9a+24$ and $a+4$. - -### Response: -Let's think step by step. To find the greatest common divisor of $a^2+9a+24$ and $a+4$, we apply the Euclidean Algorithm. We observe that $a^2+9a+24$ can be related to $a+4$ by subtracting $(a+5)(a+4)$ from $a^2+9a+24$, simplifying to $a^2+9a+24-(a^2+9a+20)$. This subtraction leaves us with $4$, leading to $\text{gcd}(4, a+4)$. Since $4$ is a divisor of every multiple of $1428$, including $a$ and thus $a+4$, the greatest common divisor is $4$. The answer is: 4. \ No newline at end of file diff --git a/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt_rephrased.txt b/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt_rephrased.txt deleted file mode 100644 index 50bde2e..0000000 --- a/envs/rstar/prompts/MATH/fewshot_cot/fewshot_cot_prompt_rephrased.txt +++ /dev/null @@ -1,23 +0,0 @@ -### Instruction: -Given a list of conditions, please answer the question. Condition 1: We have the equations $3p+4q=8$ and $4p+3q=13$. Condition 2: We aim to find the value of $q$. Question: What is the value of $q$? - -### Response: -Let's think step by step. To find the value of $q$, we first aim to eliminate $p$ from our equations. We do this by making the coefficient of $p$ the same in both equations. By multiplying the first equation by 4 and the second equation by 3, we get two new equations: $12p + 16q = 32$ and $12p + 9q = 39$. Now, we can subtract the second equation from the first, which leads to the cancellation of $p$ and gives us $7q = -7$. Dividing both sides by 7, we find that $q = -1$. The answer is: -1. - -### Instruction: -Given a list of conditions, please answer the question. Condition 1: The Smith family consists of 4 sons and 3 daughters. Condition 2: They need to be seated in a row of 7 chairs. Condition 3: The seating arrangement should ensure that at least 2 boys sit next to each other. Question: How many such seating arrangements are possible? - -### Response: -Let's think step by step. First, realize that calculating directly is complex due to numerous cases. Instead, use complementary counting. There's only one arrangement avoiding two boys sitting together, which is BGBGBGB. For this arrangement, the boys can be seated in $4!$ ways, and the girls in $3!$ ways, totaling $4! \times 3! = 144$ undesirable seatings. To find the desired seatings, subtract these from the total unrestricted seatings of $7!$. Therefore, the number of desired seatings is $7! - (4! \times 3!) = 5040-144 = \boxed{4896}$. The answer is: 4896. - -### Instruction: -Given a list of conditions, please answer the question. Condition 1: The question is depicted in the diagram: [asy]\nunitsize(1mm);\ndefaultpen(linewidth(0.7pt));\ndraw((0,0)--(20,0)--(20,20)--(0,20)--cycle);\ndraw(Circle((5,5),5));\ndraw(Circle((15,5),5));\ndraw(Circle((5,15),5));\ndraw(Circle((15,15),5));\n[/asy]. Condition 2: As shown in the diagram, a square is arranged with four circles each of radius 5 inches. Condition 3: Each circle is positioned at each corner inside the square. Question: What is the area of the square, in square inches? - -### Response: -Let's think step by step. To determine the area of the square, we need to know its side length. The diagram shows one circle in each corner of the square, with each circle touching the square's sides and adjacent circles. The diameter of one circle is twice its radius, so the diameter is $2 \times 5$ inches = $10$ inches. Since the square can accommodate two diameters along its length and width (because there are two circles along each dimension), the side length of the square is $10$ inches + $10$ inches = $20$ inches. Therefore, the area of the square is calculated by squaring its side length, which gives us $20$ inches $\times$ $20$ inches = $400$ square inches. The answer is: 400. - -### Instruction: -Given a list of conditions, please answer the question. Condition 1: Let $a$ be a multiple of 1428. Condition 2: We are to find the greatest common divisor of the polynomial $a^2+9a+24$ and the expression $a+4$. Question: What is the greatest common divisor? - -### Response: -Let's think step by step. To find the greatest common divisor of $a^2+9a+24$ and $a+4$, we apply the Euclidean Algorithm. We observe that $a^2+9a+24$ can be related to $a+4$ by subtracting $(a+5)(a+4)$ from $a^2+9a+24$, simplifying to $a^2+9a+24-(a^2+9a+20)$. This subtraction leaves us with $4$, leading to $\text{gcd}(4, a+4)$. Since $4$ is a divisor of every multiple of $1428$, including $a$ and thus $a+4$, the greatest common divisor is $4$. The answer is: 4. \ No newline at end of file diff --git a/envs/rstar/prompts/MATH/fewshot_ost/fewshot_ost_config.json b/envs/rstar/prompts/MATH/fewshot_ost/fewshot_ost_config.json deleted file mode 100644 index 89ab668..0000000 --- a/envs/rstar/prompts/MATH/fewshot_ost/fewshot_ost_config.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "prompt_template": "A chat between a curious user and an AI assistant. The assistant gives step-by-step solutions to the user's questions. At the final step, a conclusive answer is given in the format of \"The answer is: .\", where should be a numeric answer.\n\n{examples}\n\n### Instruction:\n{instruction}\n\n### Response:\nLet's think step by step.\n", - "stop_tokens": [ - "", - "Question:", - "Question", - "USER:", - "USER", - "ASSISTANT:", - "ASSISTANT", - "Instruction:", - "Instruction", - "Response:", - "Response", - "#", - "# ", - "###", - "### " - ], - "answer_marker": "answer is" -} \ No newline at end of file diff --git a/envs/rstar/prompts/MATH/fewshot_ost/fewshot_ost_prompt.txt b/envs/rstar/prompts/MATH/fewshot_ost/fewshot_ost_prompt.txt deleted file mode 100644 index f71b653..0000000 --- a/envs/rstar/prompts/MATH/fewshot_ost/fewshot_ost_prompt.txt +++ /dev/null @@ -1,42 +0,0 @@ -### Instruction: -Gracie and Joe are choosing numbers on the complex plane. Joe chooses the point $1+2i$. Gracie chooses $-1+i$. How far apart are Gracie and Joe's points? - -### Response: -Let's think step by step. -Step 1: The distance between two points $(x_1,y_1)$ and $(x_2,y_2)$ in the complex plane is given by the formula $\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}$. -Step 2: In this case, Joe's point is $(1,2)$ and Gracie's point is $(-1,1)$. -Step 3: The distance between their points is $\sqrt{((-1)-(1))^2+((1)-(2))^2}=\sqrt{(-2)^2+(-1)^2}=\sqrt{4+1}=\sqrt{5}$. -Step 4: Therefore, Gracie and Joe's points are $\boxed{\sqrt{5}}$ units apart. -Step 5: The answer is: \sqrt{5}. - -### Instruction: -What is the sum of all positive integer values of $n$ for which $\frac{n+6}{n}$ is an integer? - -### Response: -Let's think step by step. -Step 1: We want $\frac{n+6}{n}$ to be an integer. This means that $n+6$ must be divisible by $n$. -Step 2: Since $n$ is a positive integer, $n+6$ must be greater than $n$. -Step 3: Therefore, $n$ must be a factor of 6. -Step 4: The positive factors of 6 are 1, 2, 3, and 6. The sum of these factors is $1+2+3+6=\boxed{12}$. -Step 5: The answer is: 12. - -### Instruction: -Abigail, Beatrice, and Carson want to sell their eggs at the market. Abigail has 37 eggs, Beatrice has 49 eggs, and Carson has 14 eggs. They can only sell the eggs in cartons of 12. How many eggs will be remaining if they sell all the cartons? - -### Response: -Let's think step by step. -Step 1: First, we find the total number of eggs they have: $37 + 49 + 14 = 100$. -Step 2: Next, we divide the total number of eggs by the number of eggs per carton: $100 \div 12 = 8$ with a remainder of $4$. -Step 3: Therefore, if they sell all the cartons, there will be $\boxed{4}$ eggs remaining. -Step 4: The answer is: 4. - -### Instruction: -Circle $T$ has its center at point $T(-2,6)$. Circle $T$ is reflected across the $y$-axis and then translated 8 units down. What are the coordinates of the image of the center of circle $T$? - -### Response: -Let's think step by step. -Step 1: Reflecting a point across the $y$-axis negates its $x$-coordinate. -Step 2: So, the image of point $T(-2,6)$ after reflecting across the $y$-axis is $(-(-2),6)=(2,6)$. -Step 3: Then, translating a point down 8 units subtracts 8 from its $y$-coordinate. -Step 4: So, the image of point $(2,6)$ after translating down 8 units is $(2,6-8)=(2,-2)$. Therefore, the coordinates of the image of the center of circle $T$ are $\boxed{(2,-2)}$. -Step 5: The answer is: (2,-2). \ No newline at end of file diff --git a/envs/rstar/prompts/MATH/rephrasing_prompt_template.txt b/envs/rstar/prompts/MATH/rephrasing_prompt_template.txt deleted file mode 100644 index 46b6431..0000000 --- a/envs/rstar/prompts/MATH/rephrasing_prompt_template.txt +++ /dev/null @@ -1,27 +0,0 @@ -You are an AI assistant to help me rephrase questions by splitting the question context into conditions. In your rephrased question, remember to fully express the information in the original question. - -Note on latex: If there is a diagram attached to the question using latex code such as "[asy]...[/asy]", you should verbatim copy the code and put it in the first condition using the phrase: "Condition 1: The question is depicted in the diagram: .", followed by "Condition 2: As shown in the diagram, ...". Retain every latex code and format in the original question. - -Original Question: The perimeter of a rectangle is 24 inches. What is the number of square inches in the maximum possible area for this rectangle? -Rephrased Question: Given a list of conditions, please answer the question. Condition 1: A rectangle's perimeter is 24 inches. Question: What is the largest possible area, in square inches, that this rectangle can have? - -Original Question: A 2 by 2003 rectangle consists of unit squares as shown below. The middle unit square of each row is shaded. If a rectangle from the figure is chosen at random, what is the probability that the rectangle does not include a shaded square? Express your answer as a common fraction. [asy]\nsize(7cm);\ndefaultpen(linewidth(0.7));\ndotfactor=4;\nint i,j;\n\nfill((6,0)--(7,0)--(7,2)--(6,2)--cycle,gray);\n\nfor(i=0;i<=3;++i)\n\n{\n\ndraw((i,0)--(i,2));\n\ndraw((i+5,0)--(i+5,2));\n\ndraw((i+10,0)--(i+10,2));\n\n}\nfor(j=0;j<=2;++j)\n\n{\n\ndraw((0,j)--(3.3,j));\n\ndraw((0,j)--(3.3,j));\n\ndraw((4.7,j)--(8.3,j));\n\ndraw((4.7,j)--(8.3,j));\n\ndraw((9.7,j)--(13,j));\n\ndraw((9.7,j)--(13,j));\n\n}\n\nreal x;\n\nfor(x=3.7;x<=4.3;x=x+0.3)\n\n{\n\ndot((x,0));\n\ndot((x,2));\n\ndot((x+5,0));\n\ndot((x+5,2));\n\n}[/asy] -Rephrased Question: Given a list of conditions, please answer the question. Condition 1: The question is depicted in the diagram: [asy]\nsize(7cm);\ndefaultpen(linewidth(0.7));\ndotfactor=4;\nint i,j;\n\nfill((6,0)--(7,0)--(7,2)--(6,2)--cycle,gray);\n\nfor(i=0;i<=3;++i)\n\n{\n\ndraw((i,0)--(i,2));\n\ndraw((i+5,0)--(i+5,2));\n\ndraw((i+10,0)--(i+10,2));\n\n}\nfor(j=0;j<=2;++j)\n\n{\n\ndraw((0,j)--(3.3,j));\n\ndraw((0,j)--(3.3,j));\n\ndraw((4.7,j)--(8.3,j));\n\ndraw((4.7,j)--(8.3,j));\n\ndraw((9.7,j)--(13,j));\n\ndraw((9.7,j)--(13,j));\n\n}\n\nreal x;\n\nfor(x=3.7;x<=4.3;x=x+0.3)\n\n{\n\ndot((x,0));\n\ndot((x,2));\n\ndot((x+5,0));\n\ndot((x+5,2));\n\n}[/asy]. Condition 2: As shown in the diagram, a 2 by 2003 rectangle consists of unit squares, with the middle unit square of each row shaded. Condition 3: A rectangle from the diagram is chosen at random. Question: What is the probability, expressed as a common fraction, that the chosen rectangle does not include any shaded squares? - -Original Question: Points $A$, $B$, $C$, and $D$ are located on $\\overline{AB}$ such that $AB = 3AD = 6BC$. If a point is selected at random on $\\overline{AB}$, what is the probability that it is between $C$ and $D$? Express your answer as a common fraction.\n\n[asy]\n\ndraw((0,0)--(12,.0000000001));\ndot((0,0)); dot((4,0)); dot((10,0)); dot((12,0));\nlabel(\"$A$\", (0,0), S);\nlabel(\"$D$\", (4,0), S);\nlabel(\"$C$\", (10,0), S);\nlabel(\"$B$\", (12,0), S);\n\n[/asy] -Rephrased Question: Given a list of conditions, please answer the question. Condition 1: The question is depicted in the diagram: [asy]\n\ndraw((0,0)--(12,.0000000001));\ndot((0,0)); dot((4,0)); dot((10,0)); dot((12,0));\nlabel(\"$A$\", (0,0), S);\nlabel(\"$D$\", (4,0), S);\nlabel(\"$C$\", (10,0), S);\nlabel(\"$B$\", (12,0), S);\n\n[/asy]. Condition 2: As shown in the diagram, points A, B, C, and D are positioned on line segment AB in such a way that the length of AB is three times that of AD and six times that of BC. Condition 3: A point is selected at random on the line segment AB. Question: What is the probability, expressed as a common fraction, that the selected point will be located between points C and D? - -Original Question: In the diagram, $\\triangle XYZ$ is right-angled at $X,$ with $YX=60$ and $XZ=80.$ The point $W$ is on $YZ$ so that $WX$ is perpendicular to $YZ.$ Determine the length of $WZ.$ [asy]\npair X, Y, Z, W;\nY=(0,0);\nX=(36,48);\nZ=(100,0);\nW=(36,0);\ndraw(X--Y--Z--X--W);\nlabel(\"Y\", Y, SW);\nlabel(\"X\", X, N);\nlabel(\"W\", W, S);\nlabel(\"Z\", Z, SE);\nlabel(\"60\", (X+Y)/2, NW);\nlabel(\"80\", (X+Z)/2, NE);\n[/asy] -Rephrased Question: Given a list of conditions, please answer the question. Condition 1: The question is depicted in the diagram: [asy]\npair X, Y, Z, W;\nY=(0,0);\nX=(36,48);\nZ=(100,0);\nW=(36,0);\ndraw(X--Y--Z--X--W);\nlabel(\"Y\", Y, SW);\nlabel(\"X\", X, N);\nlabel(\"W\", W, S);\nlabel(\"Z\", Z, SE);\nlabel(\"60\", (X+Y)/2, NW);\nlabel(\"80\", (X+Z)/2, NE);\n[/asy]. Condition 2: As shown in the diagram, triangle XYZ is right-angled at point X, with YX equal to 60 and XZ equal to 80. Condition 3: The point W lies on line segment YZ such that line WX is perpendicular to YZ. Question: What is the length of segment WZ? - -Original Question: The polynomial $x^3 - 2004 x^2 + mx + n$ has integer coefficients and three distinct positive zeros. Exactly one of these is an integer, and it is the sum of the other two. How many values of $n$ are possible? -Rephrased Question: Given a list of conditions, please answer the question. Condition 1: The polynomial in question is $x^3 - 2004 x^2 + mx + n$, with integer coefficients. Condition 2: This polynomial has three distinct positive zeros. Condition 3: Exactly one of the zeros is an integer, and this integer zero is equal to the sum of the other two zeros. Question: How many different values of $n$ are possible? - -Original Question: The repeating decimal for $\\frac{3}{11}$ is $0.ababab\\dots$ What is the value of the sum $a+b$? -Rephrased Question: Given a list of conditions, please answer the question. Condition 1: The fraction in question is $\frac{3}{11}$, which is represented as a repeating decimal of the form $0.ababab\ldots$. Question: What is the sum of the digits $a$ and $b$? - -Original Question: The fenced area of a yard is a 15-foot by 12-foot rectangular region with a 3-foot by 3-foot square cut out, as shown. What is the area of the region within the fence, in square feet?\n\n[asy]draw((0,0)--(16,0)--(16,12)--(28,12)--(28,0)--(60,0)--(60,48)--(0,48)--cycle);\nlabel(\"15'\",(30,48),N);\nlabel(\"12'\",(60,24),E);\nlabel(\"3'\",(16,6),W);\nlabel(\"3'\",(22,12),N);\n[/asy] -Rephrased Question: Given a list of conditions, please answer the question. Condition 1: The question is depicted in the diagram: [asy]draw((0,0)--(16,0)--(16,12)--(28,12)--(28,0)--(60,0)--(60,48)--(0,48)--cycle);\nlabel(\"15'\",(30,48),N);\nlabel(\"12'\",(60,24),E);\nlabel(\"3'\",(16,6),W);\nlabel(\"3'\",(22,12),N);\n[/asy]. Condition 2: As shown in the diagram, the fenced area of the yard is a 15-foot by 12-foot rectangle, with a 3-foot by 3-foot square cut out. Question: What is the area, in square feet, of the region within the fence? - -Original Question: For real numbers $t$, the point\n\\[(x,y) = (2^t - 3, 4^t - 5 \\cdot 2^t - 1)\\] is plotted. All the plotted points lie on what kind of curve?\n\n(A) Line\n(B) Circle\n(C) Parabola\n(D) Ellipse\n(E) Hyperbola\n\nEnter the letter of the correct option. -Rephrased Question: Condition 1: A point\n\\[(x,y) = (2^t - 3, 4^t - 5 \\cdot 2^t - 1)\\] is plotted, where $t$ is a real number. Condition 2: All the plotted points form one of the following kinds of curve:\n\n(A) Line\n(B) Circle\n(C) Parabola\n(D) Ellipse\n(E) Hyperbola. Question: What is the letter of the correct option? \ No newline at end of file diff --git a/envs/rstar/rstar_env.py b/envs/rstar/rstar_env.py deleted file mode 100644 index bcb7498..0000000 --- a/envs/rstar/rstar_env.py +++ /dev/null @@ -1,695 +0,0 @@ -""" -Wrapping the base environment with customised -update_legal_actions() function -""" - -from heapq import merge -from typing import List, Dict, Tuple -import os -import numpy as np - -from envs.MATH.env import CoTEnv -from envs.base_env import NoLegalActionException, ResetException -from tqdm import tqdm - -from reason.inference.lm_call import LMCallingConfig -from .rstar_utils import * -from .eval_src.Evaluator import MATHEvaluator, QwenMATHEvaluator -from envs.MATH.prompt import COT_EXAMPLES, COT_TASK_DESC, PROBLEM_FORMAT_STR, SEP - -from pathlib import Path - -# Get the file path of the current script -CURRENT_DIR = Path(__file__).parent - - -class IDCounter: - def __init__(self): - self.id = 0 - - def count(self): - self.id += 1 - return self.id - - -class Env(CoTEnv): - def __init__( - self, - config, - math_problems, - llm_gen_fn, - task_desc_str: str = COT_TASK_DESC, - cot_example_str: str = COT_EXAMPLES, - problem_format_str: str = PROBLEM_FORMAT_STR, - reset=True, - ): - """ - rStar call LLM inference in each of the nodes, checking current nodetype and do corresponding thinking - OpenR apply LLM call in central Env entity (update_legal_action()), so we need to take some records... - Args: - config: - math_problems: - llm_gen_fn: - task_desc_str: - cot_example_str: - problem_format_str: - reset: - """ - super().__init__( - config, - math_problems, - llm_gen_fn, - task_desc_str, - cot_example_str, - problem_format_str, - reset, - ) - - self.current_node_type = None - self.disable_a1 = False - self.disable_a5 = False - self.enable_potential_score = False - # potential score is disable due to https://github.com/zhentingqi/rStar/issues/12 - # self.parent_is_subquestion = False # TODO(yan): in rStar this seems to be false alltime, need to check - - # LLM generation config - self.gen_cfg = config["generation_config"] - - # default parameter setting in original repo - self.num_a1_steps = 3 - self.mcts_num_last_votes = 32 - self.num_subquestions = 3 - self.num_votes = 10 - self.node_counter = IDCounter() # root - self.ost_new_tokens = 256 - self.direct_answer_new_tokens = 1024 - self.subquestion_new_tokens1 = 128 - self.subquestion_new_tokens2 = 512 - self.rephrased_q_new_tokens = 512 - self.re_subanswer_new_tokens = 1024 - self.print_log = False - self.total_api_call_completion = 0 - self.total_tree_completion = 0 - - # self.task_name = "MATH" - self.sep = "\n\n" - self._init_query = None - self._next_state_terminated = None - - # loading template - with open( - os.path.join( - CURRENT_DIR, f"prompts/MATH/decompose/decompose_template.json" - ), - "r", - ) as f: - decompose_template = json.load(f) - self.question_index = decompose_template["index"] - - self.decompose_prompt = read_txt( - os.path.join(CURRENT_DIR, f"prompts/MATH/decompose/decompose_prompt.txt") - ) - self.fewshot_cot_prompt = read_txt( - os.path.join( - CURRENT_DIR, f"prompts/MATH/fewshot_cot/fewshot_cot_prompt.txt" - ) - ) - self.fewshot_cot_config = read_json( - os.path.join( - CURRENT_DIR, f"prompts/MATH/fewshot_cot/fewshot_cot_config.json" - ) - ) - - if not self.disable_a1: # A1: Propose an one-step thought. - self.fewshot_ost_prompt = read_txt( - os.path.join( - CURRENT_DIR, f"prompts/MATH/fewshot_ost/fewshot_ost_prompt.txt" - ) - ) - self.fewshot_ost_config = read_json( - os.path.join( - CURRENT_DIR, f"prompts/MATH/fewshot_ost/fewshot_ost_config.json" - ) - ) - - if not self.disable_a5: # A5: Rephrase the question/sub-question. - self.rephrasing_prompt_template = read_txt( - os.path.join( - CURRENT_DIR, f"prompts/MATH/rephrasing_prompt_template.txt" - ) - ) - self.decompose_prompt_rephrased = read_txt( - os.path.join( - CURRENT_DIR, - f"prompts/MATH/decompose/decompose_prompt_rephrased.txt", - ) - ) - self.fewshot_cot_prompt_rephrased = read_txt( - os.path.join( - CURRENT_DIR, - f"prompts/MATH/fewshot_cot/fewshot_cot_prompt_rephrased.txt", - ) - ) - self.fewshot_ost_prompt_rephrased = read_txt( - os.path.join( - CURRENT_DIR, f"prompts/MATH/fewshot_ost/fewshot_ost_prompt.txt" - ) - ) - - # load evaluator - self.evaluator = QwenMATHEvaluator() # MATHEvaluator() - - def set_problem(self, idx): - self.math_problem = self.math_problems[idx] - - def reset(self, update_legal_action=True): - self.set_problem( - idx=0 - ) # retrive the first question set {'question': xxx, 'answer': xxx} - - @override - def try_update_legal_action(self, node): - cnt = 0 - while cnt < 3: - cnt += 1 - try: - updated_node = self.update_legal_actions(node) - break - except NoLegalActionException as e: - if cnt == 3: - raise ResetException - - # info = {"api_completion_token": api_completion_token} - return updated_node - - @override - def update_legal_actions(self, current_node): - """ - Think differently depending on current nodetype (status). The function directly create children node and - add them to the parent node - Returns: - - """ - current_node_type = current_node.node_type - - # depending on type of current node, ask corresponding question - if current_node_type is Node_Type.USER_QUESTION: - # A1: Propose an one-step thought. - if not current_node.disable_a1: - self.do_action_generate_ost_step(current_node) - - # A2: Propose the remaining thought steps - self.do_action_generate_direct_answers(current_node) - - # A3: Propose next sub-question along with its answer. - self.do_action_generate_subquestions(current_node) - - # A5: Rephrase the question/sub-question. - if not current_node.disable_a5: - self.do_action_generate_rephrased_user_question(current_node) - - elif current_node_type is Node_Type.REPHRASED_USER_QUESTION: - # A1: Propose an one-step thought. - if not current_node.disable_a1: - self.do_action_generate_ost_step(current_node) - - # A2: Propose the remaining thought steps - self.do_action_generate_direct_answers(current_node) - - # A3: Propose next sub-question along with its answer. - self.do_action_generate_subquestions(current_node) - - elif current_node_type is Node_Type.DIRECT_ANSWER: - raise ValueError("DIRECT_ANSWER node cannot create children!!") - - elif current_node_type is Node_Type.SUBQUESTION: - # A1: Propose an one-step thought. - if not current_node.disable_a1: - self.do_action_generate_ost_step(current_node) - - # A2: Propose the remaining thought steps - self.do_action_generate_direct_answers(current_node) - - # A3: Propose next sub-question along with its answer. - self.do_action_generate_subquestions(current_node) - - # A4: Answer the sub-question again. - self.do_action_generate_re_subanswers(current_node) - - elif current_node_type is Node_Type.RE_SUBANSWER: - # A1: Propose an one-step thought. - if not current_node.disable_a1: - self.do_action_generate_ost_step(current_node) - - # A2: Propose the remaining thought steps - self.do_action_generate_direct_answers(current_node) - - # A3: Propose next sub-question along with its answer. - self.do_action_generate_subquestions(current_node) - - elif current_node_type is Node_Type.OST_STEP: - # A1: Propose an one-step thought. - if not current_node.disable_a1: - self.do_action_generate_ost_step(current_node) - - # A2: Propose the remaining thought steps - self.do_action_generate_direct_answers(current_node) - - return current_node.children # a list of children - - def is_terminal(self, node): - - def is_valid_leaf_node(n): - # ! a valid solution can only be in SUBQUESTION type or DIRECT_ANSWER type - return ( - n.node_type is Node_Type.SUBQUESTION - and reach_terminal_subquestion(n.subquestion, n.user_question) - ) or n.node_type is Node_Type.DIRECT_ANSWER - - return (node.depth >= node.max_depth_allowed) or is_valid_leaf_node(node) - - def do_action_generate_ost_step(self, node, parent_is_subquestion=False): - """ - For current state, propose one-step thought, return legal action portion - Args: - parent_is_subquestion: - - Returns: - - """ - if self.print_log: - print(f"---- Generating one-step thought steps for node ...") - - #! ACTION: generate one-step thought step - ost_step_list = [] - # formating - if parent_is_subquestion: - raise NotImplementedError # this branche seems unreachable - # existing_ost_steps, next_ost_step_id = concat_subqs_subas_as_ost_steps(solution_trace) - else: - existing_ost_steps, next_ost_step_id = concat_ost_steps(node.solution_trace) - - io_input = ( - self.fewshot_ost_config["prompt_template"].format( - examples=( - self.fewshot_ost_prompt - if not node.paraphrased - else self.fewshot_ost_prompt_rephrased - ), - instruction=node.user_question, - ) - + existing_ost_steps - + f"Step {next_ost_step_id}:" - ) - # breakpoint() - io_output = self.llm_gen_fn( - input_str=io_input, - config=LMCallingConfig( - n=self.num_a1_steps, - stop_str=["\n", "\n\n"], # check stopping token - include_stop_str_in_output=True, - max_new_tokens=self.ost_new_tokens, - **self.gen_cfg, - ), - ) - ost_step_list = [io_output.strip() for io_output in io_output.text] - self.total_api_call_completion += io_output.completion_tokens - self.total_tree_completion += sum( - io_output.num_tokens - ) # incase of action post-processing - - potential_answers_list = [None] * len(ost_step_list) - - for ost_step, potential_answers in zip(ost_step_list, potential_answers_list): - node.children.append( - RstarLanguageNode( - id=self.node_counter.count(), - parent=node, # TODO[yan]: check over-nesting - depth=node.depth + 1, - node_type=Node_Type.OST_STEP, - ost_step=ost_step, - ) - ) - - return - - def do_action_generate_direct_answers(self, node): - if self.print_log: - print(f"---- Generating direct answers for node ...") - # ! ACTION: generate direct answer for the user question (w/ or w/o hint) - if ( - node.node_type is not Node_Type.USER_QUESTION - and node.node_type is not Node_Type.REPHRASED_USER_QUESTION - ): - hint = make_hint(node.solution_trace, node.node_type) - else: - hint = None - - direct_answer_list, value_list = [], [] - - num_return = self.mcts_num_last_votes - fewshot_cot_prompt = ( - self.fewshot_cot_prompt - if not node.paraphrased - else self.fewshot_cot_prompt_rephrased - ) - question = node.user_question + "\n\n" + hint if hint is not None else "" - io_input = self.fewshot_cot_config["prompt_template"].format( - examples=fewshot_cot_prompt, instruction=question - ) - # breakpoint() - io_output = self.llm_gen_fn( - input_str=io_input, - config=LMCallingConfig( - n=num_return, - max_new_tokens=self.direct_answer_new_tokens, - include_stop_str_in_output=True, - stop_str=self.fewshot_cot_config["stop_tokens"], - **self.gen_cfg, - ), - ) - self.total_api_call_completion += io_output.completion_tokens - self.total_tree_completion += sum( - io_output.num_tokens - ) # incase of action post-processing - - cleaned_io_output_list = [ - io_output.strip() for io_output in io_output.text - ] # ! cleaning - - try: - assert len(cleaned_io_output_list) > 0 - - if len(cleaned_io_output_list) == 1: - most_likely_answer = cleaned_io_output_list[0] - likelihood = 1 - else: - _, most_likely_answer, _, likelihood = ( - self.evaluator.find_most_confident_answer(cleaned_io_output_list) - ) - assert likelihood > 0 - - except Exception as e: - raise GeneratorError( - source="generate direct answer from: few shot cot", - io_input=io_input, - io_output_list=cleaned_io_output_list, - ) - - direct_answer_list.append(most_likely_answer) - value_list.append(likelihood) - - for direct_answer, value in zip(direct_answer_list, value_list): - if np.isnan(value) or value <= 0: - raise NotImplementedError - node.children.append( - RstarLanguageNode( - id=self.node_counter.count(), - parent=node, - depth=node.depth + 1, - node_type=Node_Type.DIRECT_ANSWER, - node_value=value, - direct_answer=direct_answer, - ) - ) - - return - - def do_action_generate_subquestions(self, node): - if self.print_log: - print(f"---- Generating subquestions for node ...") - - subquestion_list, subanswer_list, value_list = [], [], [] - decompose_prompt = ( - self.decompose_prompt - if not node.paraphrased - else self.decompose_prompt_rephrased - ) - - # ! generate subquestions - existing_subquestions_and_subanswers, next_subquestion_id = ( - concat_subqs_and_subas(node.solution_trace, self.question_index) - ) - io_input = ( - decompose_prompt - + "\n\n" - + f"Question {self.question_index}: {node.user_question}" - + "\n" - + existing_subquestions_and_subanswers - + f"Question {self.question_index}.{next_subquestion_id}:" - ) - # breakpoint() - io_output = self.llm_gen_fn( - input_str=io_input, - config=LMCallingConfig( - n=self.num_subquestions, - max_new_tokens=self.subquestion_new_tokens1, - include_stop_str_in_output=True, - stop_str=[ - "\n", - "\n\n", - "Answer", - "Answer ", - f"Answer {self.question_index}.{next_subquestion_id}", - f"Answer {self.question_index}.{next_subquestion_id}:", - f"Answer {self.question_index}.{next_subquestion_id}: ", - ], - **self.gen_cfg, - ), - ) - self.total_api_call_completion += io_output.completion_tokens - self.total_tree_completion += sum( - io_output.num_tokens - ) # incase of action post-processing - - subquestion_list = [o.strip() for o in io_output.text] - - # ! generate subanswers to the subquestions generated above - io_input_list = [] - for subquestion in subquestion_list: - io_input = ( - decompose_prompt - + "\n\n" - + f"Question {self.question_index}: {node.user_question}" - + "\n" - + existing_subquestions_and_subanswers - + f"Question {self.question_index}.{next_subquestion_id}: " - + subquestion - + "\n" - + f"Answer {self.question_index}.{next_subquestion_id}:" - ) - io_input_list.append(io_input) - - if reach_terminal_subquestion( - subquestion=subquestion, user_question=node.user_question - ): - num_return = self.mcts_num_last_votes - else: - num_return = self.num_votes - - io_output_list = [] - for i in io_input_list: - # breakpoint() - _each_output = self.llm_gen_fn( - input_str=i, - config=LMCallingConfig( - n=num_return, - max_new_tokens=self.subquestion_new_tokens2, - include_stop_str_in_output=True, - stop_str=[ - "\n", - "\n\n", - f"Question {self.question_index}.{next_subquestion_id + 1}", - ], - **self.gen_cfg, - ), - ) - io_output_list.append(_each_output.text) - self.total_api_call_completion += _each_output.completion_tokens - self.total_tree_completion += sum( - _each_output.num_tokens - ) # incase of action post-processing - - cleaned_io_output_list = [ - [io_output.strip() for io_output in io_output_group] - for io_output_group in io_output_list - ] - - # completion_tokens = io_output_list.completion_tokens - - for i, cleaned_io_output_group in enumerate(cleaned_io_output_list): - try: - most_likely_answer, likelihood = self._get_most_likely_answer( - cleaned_io_output_group - ) - except Exception as e: - raise GeneratorError( - source="generate answer to subquestions", - io_input=io_input_list[i], - io_output_list=cleaned_io_output_group, - ) - subanswer_list.append(most_likely_answer) - value_list.append(likelihood) - assert len(subquestion_list) == len(subanswer_list) == len(value_list) - potential_answers_list = [None] * len(subquestion_list) - - for subquestion, subanswer, value, potential_answers in zip( - subquestion_list, subanswer_list, value_list, potential_answers_list - ): - if np.isnan(value) or value <= 0: - value = 0.01 - # breakpoint() - node.children.append( - RstarLanguageNode( - id=self.node_counter.count(), - parent=node, - depth=node.depth + 1, - node_type=Node_Type.SUBQUESTION, - node_value=value, - subquestion=subquestion, - subanswer=subanswer, - is_new_subquestion=True, - ) - ) - - return - - def do_action_generate_rephrased_user_question(self, node): - if self.print_log: - print(f"---- Generating rephrased user question for node ...") - - rephrased_user_question_list = [] - io_input = self.rephrasing_prompt_template - io_input += "\n\n" - io_input += "Original Question: " + node.user_question + "\n" - io_input += "Rephrased Question: Given a list of conditions, please answer the question. Condition 1: " - # breakpoint() - _io_output = self.llm_gen_fn( - input_str=io_input, - config=LMCallingConfig( - n=1, - max_new_tokens=self.rephrased_q_new_tokens, - include_stop_str_in_output=True, - stop_str=["\n", "\n\n"], - **self.gen_cfg, - ), - ) - io_output = _io_output.text - self.total_api_call_completion += _io_output.completion_tokens - self.total_tree_completion += sum( - _io_output.num_tokens - ) # incase of action post-processing - - assert len(io_output) == 1 - io_output = ( - "Given a list of conditions, please answer the question. Condition 1: " - + io_output[0] - ) - rephrased_user_question_list.append(io_output) - potential_answers_list = [None] * len(rephrased_user_question_list) - - # creating children - for rephrased_user_question, potential_answers in zip( - rephrased_user_question_list, potential_answers_list - ): - node.children.append( - RstarLanguageNode( - id=self.node_counter.count(), - parent=node, - depth=node.depth + 1, - node_type=Node_Type.REPHRASED_USER_QUESTION, - rephrased_user_question=rephrased_user_question, - ) - ) - - return - - def do_action_generate_re_subanswers(self, node): - if self.print_log: - print(f"---- Generating re-subanswers for node ...") - re_subanswer_list, value_list = [], [] - - user_question_context, _ = split_user_question(node.user_question) - - last_subquestion_id = int(sorted(node.solution_trace.keys())[-1]) - last_subquestion = node.solution_trace[last_subquestion_id]["subquestion"] - # ! few shot cot - question = ( - f"{user_question_context} {last_subquestion}" - if not node.paraphrased - else f"{user_question_context} Question: {last_subquestion}" - ) - fewshot_cot_prompt = ( - self.fewshot_cot_prompt - if not node.paraphrased - else self.fewshot_cot_prompt_rephrased - ) - question += "\n\n" # hint is None - io_input = self.fewshot_cot_config["prompt_template"].format( - examples=fewshot_cot_prompt, instruction=question - ) - # breakpoint() - io_output = self.llm_gen_fn( - input_str=io_input, - config=LMCallingConfig( - n=self.num_votes, - max_new_tokens=self.re_subanswer_new_tokens, - include_stop_str_in_output=True, - stop_str=self.fewshot_cot_config["stop_tokens"], - **self.gen_cfg, - ), - ) - self.total_api_call_completion += io_output.completion_tokens - self.total_tree_completion += sum( - io_output.num_tokens - ) # incase of action post-processing - - cleaned_io_output_list = [ - io_output.strip() for io_output in io_output.text - ] # ! cleaning - try: - most_likely_answer, likelihood = self._get_most_likely_answer( - cleaned_io_output_list - ) - except Exception as e: - raise GeneratorError( - source="generate re-subanswers: few shot cot", - io_input=io_input, - io_output_list=cleaned_io_output_list, - ) - re_subanswer_list.append(most_likely_answer) - value_list.append(likelihood) - potential_answers_list = [None] * len(re_subanswer_list) - - # creating children - for re_subanswer, value, potential_answers in zip( - re_subanswer_list, value_list, potential_answers_list - ): - if np.isnan(value) or value <= 0: - breakpoint() - node.children.append( - RstarLanguageNode( - id=self.node_counter.count(), - parent=node, # check node chck node, do we need to pass children as well? - depth=node.depth + 1, - node_type=Node_Type.RE_SUBANSWER, - node_value=value, - re_subanswer=re_subanswer, - ) - ) - - return - - def _get_most_likely_answer(self, io_output_list: List[str]) -> Tuple[str, float]: - assert len(io_output_list) > 0 - - if len(io_output_list) == 1: - most_confident_answer_full_completion = io_output_list[0] - confidence = 1 - else: - _, most_confident_answer_full_completion, _, confidence = ( - self.evaluator.find_most_confident_answer(io_output_list) - ) - assert confidence > 0 - - return most_confident_answer_full_completion, confidence diff --git a/envs/rstar/rstar_utils.py b/envs/rstar/rstar_utils.py deleted file mode 100644 index 9cc976e..0000000 --- a/envs/rstar/rstar_utils.py +++ /dev/null @@ -1,677 +0,0 @@ -from typing import List, Dict, Tuple -import json - -from abc import ABC, abstractmethod -from collections import defaultdict -from typing import Dict, List, Optional -import math, random -from copy import deepcopy -from enum import Enum, unique - -from envs.MATH.parse_utils_qwen import extract_answer as extract_fn, parse_ground_truth -from envs.MATH.grader import math_equal - - -def override(f): - return f - - -@unique -class Node_Type(Enum): - USER_QUESTION = "USER_QUESTION" - REPHRASED_USER_QUESTION = "REPHRASED_USER_QUESTION" - DIRECT_ANSWER = "DIRECT_ANSWER" - SUBQUESTION = "SUBQUESTION" - RE_SUBANSWER = "RE_SUBANSWER" - OST_STEP = "OST_STEP" - - -class GeneratorError(Exception): - def __init__(self, source, io_input, io_output_list) -> None: - super().__init__() - - self.source = source - self.io_input = io_input - self.io_output_list = io_output_list - - -def read_txt(file_path): - assert str(file_path).endswith(".txt") - with open(file_path, "r", encoding="utf-8") as f: - data = f.read() - return data - - -def read_json(file_path): - assert str(file_path).endswith(".json") - with open(file_path, "r", encoding="utf-8") as f: - data = json.load(f) - return data - - -def save_json(js_obj, file_path): - assert str(file_path).endswith(".json") - with open(file_path, "w", encoding="utf-8") as f: - json.dump(js_obj, f, indent=4) - - -def extract_answer(answer_str: str) -> str: - return extract_fn(answer_str, data_name="math") - - -def extract_groundtruth(groundtruth_str: str) -> str: - return parse_ground_truth(groundtruth_str, data_name="math") - - -def judge_correct( - problem_str: str, extracted_groundtruth: Optional[str], answer: str -) -> bool: - # return grade_answer(given_answer=answer, ground_truth=extracted_groundtruth) - result = math_equal(answer, extracted_groundtruth) - return result - - -def concat_ost_steps(solution_trace: Dict[int, Dict[str, str]]) -> Tuple[str, int]: - """Return: concatenated one-step thought steps, next one-step thought step id""" - last_tuple = list(solution_trace.items())[-1] - last_tuple_id, last_tuple_recording = last_tuple[0], last_tuple[1] - assert "ost_step" in last_tuple_recording.keys() - if len(last_tuple_recording["ost_step"]) > 0: - solution_trace_str = "" - for step_id, step_text in last_tuple_recording["ost_step"].items(): - solution_trace_str += f"Step {step_id}: " + step_text + "\n" - return solution_trace_str, step_id + 1 - else: - # no one-step thought step yet - return "", 1 - - -def concat_subqs_and_subas( - solution_trace: Dict[int, Dict[str, str]], question_index: int -) -> Tuple[str, int]: - """Return: concatenated subqs and suba, next subquestion id""" - solution_trace_str = "" - - for subquestion_id, solution_step in solution_trace.items(): - if subquestion_id == 0: - continue - - assert subquestion_id > 0 - assert ( - "subquestion" in solution_step.keys() - and "subanswer" in solution_step.keys() - ) - - solution_trace_str += ( - f"Question {question_index}." - + str(subquestion_id) - + ": " - + solution_step["subquestion"] - ) - solution_trace_str += "\n" - solution_trace_str += ( - f"Answer {question_index}." - + str(subquestion_id) - + ": " - + solution_step["subanswer"]["text"] - ) - solution_trace_str += "\n" - - next_subquestion_id = int(sorted(solution_trace.keys())[-1]) + 1 - return solution_trace_str, next_subquestion_id - - -def split_user_question(user_question: str): - user_question = user_question.strip().rstrip(".") - last_period_id = user_question.rfind(".") - assert last_period_id < len(user_question) - 1 - user_question_context = user_question[: last_period_id + 1].strip() - user_question_problem = user_question[last_period_id + 1 :].strip() - return user_question_context, user_question_problem - - -def reach_terminal_subquestion(subquestion: str, user_question: str): - assert subquestion is not None - - if "Now we can answer" in subquestion: # in the prompt template - #! remember that: when the original question is answerable, please start the subquestion with "Now we can answer the question: " - return True - - user_question_2nd_part = split_user_question(user_question)[1] - if user_question_2nd_part.lower() in subquestion.lower(): - return True - - return False - - -def reach_terminal_ost_step(ost_step: str): - assert ost_step is not None - - return "answer is" in ost_step.lower() - - -def make_hint( - solution_trace: Dict[int, Dict[str, str]], - node_type: Node_Type, - new_subq=None, - new_suba=None, - new_ost_step=None, -) -> str: - if node_type in [Node_Type.SUBQUESTION, Node_Type.RE_SUBANSWER]: - hint = "" - - for subquestion_id, solution_step in solution_trace.items(): - if subquestion_id == 0: - continue - - assert subquestion_id > 0 - assert ( - "subquestion" in solution_step.keys() - and "subanswer" in solution_step.keys() - ) - - hint += f"Hint " + str(subquestion_id) + ": " + solution_step["subquestion"] - hint += " " - hint += solution_step["subanswer"]["text"] - hint += "\n" - - if new_subq is not None and new_suba is not None: - hint += f"Hint {len(solution_trace)}: " + new_subq + " " + new_suba - - hint = hint.strip("\n") - elif node_type is Node_Type.OST_STEP: - hint = "Hint: " - last_tuple = list(solution_trace.items())[-1] - last_tuple_recording = last_tuple[1] - assert last_tuple_recording["ost_step"] - for step_id, step_text in last_tuple_recording["ost_step"].items(): - hint += step_text + " " - - if new_ost_step is not None: - hint += new_ost_step - - hint = hint.strip(" ") - else: - raise ValueError(f"Invalid node type: {node_type}.") - - return hint - - -def find_valid_solution_nodes(root_node): - valid_solution_nodes = [] - - def recursion(node): - if node.is_valid_solution_node(): - valid_solution_nodes.append(node) - return - - if not node.children: #! no children - return - - for child in node.children: - recursion(child) - - recursion(root_node) - - return valid_solution_nodes - - -def stochastic_find_best_solution( - root_node, - evaluator, - enable_potential_score, -): - # todo: what strategy do we use to select best node? - """The function finds the best solution from the solution nodes in the MCTS tree. - Return: top answer, top solution, confidence of the top answer, the corresponding node of the answer, all solution nodes - """ - solution_nodes = find_valid_solution_nodes(root_node) - - if len(solution_nodes) == 0: - return None, None - - def extract_solution_from_node(node): - # original repo has bug here, the .is_valid_solution_node consider SUBQUESTION, OST and DIRECT ANSWER, - # but here it does not consider OST!!!! - if node.node_type is Node_Type.SUBQUESTION: - return node.subanswer - elif node.node_type is Node_Type.DIRECT_ANSWER: - return node.direct_answer - elif node.node_type is Node_Type.OST_STEP: - return node.ost_step - else: - return None - - solutions = [extract_solution_from_node(node) for node in solution_nodes] - - def calculate_potential_score_for_solution_node(node): - model_answer = evaluator.extract_answer_from_model_completion( - extract_solution_from_node(node) - ) - potential_answers_history = ( - node.potential_answers_history - ) # {depth -> [potential answers]} - assert potential_answers_history[node.depth] is None - - potential_score = 1 - for depth, depth_potential_answers in potential_answers_history.items(): - if depth < node.depth: - depth_score = sum( - evaluator.check_answers_equiv(dpa, model_answer) - for dpa in depth_potential_answers - ) / len(depth_potential_answers) - potential_score *= depth_score - - node.set_potential_score(potential_score) - return potential_score - - prior_weights = ( - [calculate_potential_score_for_solution_node(node) for node in solution_nodes] - if enable_potential_score - else None - ) - top_answer, top_completion, top_completion_id, top_confidence = ( - evaluator.stochastic_find_most_confident_answer( - completions=solutions, prior_weights=prior_weights - ) - ) - return ( - top_answer, - top_completion, - top_confidence, - solution_nodes[top_completion_id], - solution_nodes, - solutions, - ) - - -class MCTS_Node(ABC): - """ - A representation of a single board state. - MCTS works by constructing a tree of these Nodes. - Could be e.g. a chess or checkers board state. - """ - - def __init__(self) -> None: - super().__init__() - - # global node_cnt - self.id = None # defined when creating one RstarLanguageNode - - self.rollout_id = None - - def set_rollout_id(self, rollout_id: int): - self.rollout_id = rollout_id - - @abstractmethod - def find_children(self, rollout_id: int): - "All possible successors of this board state" - raise NotImplementedError - - @abstractmethod - def is_terminal(self): - "Returns True if the node has no children" - raise NotImplementedError - - @abstractmethod - def calculate_reward(self): - "Assumes `self` is terminal node. 1=win, 0=loss, .5=tie, etc" - raise NotImplementedError - - @abstractmethod - def skip_backprop(self): - "If True, the reward of this node will not be accumulated in the backpropagation step." - raise NotImplementedError - - -class RstarLanguageNode(MCTS_Node): - def __init__( - self, - parent: "Reasoning_MCTS_Node", - depth: int, - node_type: Node_Type, - verbose: bool = False, - # --- For instantiating root node --- - node_value: float = None, - disable_a5: bool = None, - user_question: str = None, - max_depth_allowed: int = None, - disable_a1: bool = None, - # --- For instantiating REPHRASED_USER_QUESTION node --- - rephrased_user_question: str = None, - # ------------------------------------------------------ - expected_answer: str = None, - # --- For instantiating DIRECT_ANSWER node --- - direct_answer: str = None, - # -------------------------------------------- - # --- For instantiating SUBQUESTION node --- - subquestion: str = None, - subanswer: str = None, - is_new_subquestion: bool = None, - # ------------------------------------------ - # --- For instantiating RE_SUBANSWER node --- - re_subanswer: str = None, - # ------------------------------------------- - # --- For instantiating OST_STEP node --- - ost_step: str = None, - question_index: int = None, - id: int = None, - ) -> None: - super().__init__() - - # ! sanity checks - try: - assert depth is not None - assert node_type is not None - if node_value is not None: - assert node_value > 0, breakpoint() - - if node_type is Node_Type.USER_QUESTION: - assert depth == 0 - assert all( - attr is None - for attr in [ - parent, - node_value, - rephrased_user_question, - direct_answer, - subquestion, - subanswer, - is_new_subquestion, - re_subanswer, - ost_step, - ] - ) - assert all( - attr is not None - for attr in [ - disable_a5, - user_question, - expected_answer, - max_depth_allowed, - disable_a1, - ] - ) - elif node_type is Node_Type.REPHRASED_USER_QUESTION: - assert depth == 1 - assert all( - attr is None - for attr in [ - node_value, - disable_a5, - user_question, - expected_answer, - direct_answer, - subquestion, - subanswer, - is_new_subquestion, - re_subanswer, - ost_step, - max_depth_allowed, - disable_a1, - ] - ) - assert all( - attr is not None for attr in [parent, rephrased_user_question] - ) - elif node_type is Node_Type.DIRECT_ANSWER: - assert depth > 0 - assert all( - attr is None - for attr in [ - disable_a5, - user_question, - expected_answer, - subquestion, - subanswer, - is_new_subquestion, - re_subanswer, - ost_step, - max_depth_allowed, - disable_a1, - ] - ) - assert all( - attr is not None for attr in [parent, node_value, direct_answer] - ) - elif node_type is Node_Type.SUBQUESTION: - assert depth > 0 - assert all( - attr is None - for attr in [ - disable_a5, - user_question, - expected_answer, - direct_answer, - re_subanswer, - ost_step, - max_depth_allowed, - disable_a1, - ] - ) - assert all( - attr is not None - for attr in [ - parent, - node_value, - subquestion, - subanswer, - is_new_subquestion, - ] - ) - elif node_type is Node_Type.RE_SUBANSWER: - assert depth > 0 - assert all( - attr is None - for attr in [ - disable_a5, - user_question, - expected_answer, - direct_answer, - subquestion, - subanswer, - is_new_subquestion, - ost_step, - max_depth_allowed, - disable_a1, - ] - ) - assert all( - attr is not None for attr in [parent, node_value, re_subanswer] - ) - elif node_type is Node_Type.OST_STEP: - assert depth > 0 - assert all( - attr is None - for attr in [ - node_value, - disable_a5, - user_question, - rephrased_user_question, - expected_answer, - direct_answer, - subquestion, - subanswer, - is_new_subquestion, - re_subanswer, - max_depth_allowed, - disable_a1, - ] - ) - assert all(attr is not None for attr in [parent, ost_step]) - except AssertionError: - print(f"Instantiating node with type {node_type} failed!") - breakpoint() - exit() - - self.id = id - #! attributes - self.parent = parent # if parent is None, then the node is the root - self.children: List["Reasoning_MCTS_Node"] = [] - self.depth = depth - self.node_type = node_type - self.node_value = node_value - self.direct_answer = direct_answer - self.subquestion = subquestion - self.subanswer = subanswer - self.is_new_subquestion = is_new_subquestion - self.re_subanswer = re_subanswer - self.ost_step = ost_step - - ## additional parameter - self._visit_count = 0 - self._value_sum = 0 # self.node_value - - if parent is None: # root - self.verbose = verbose - self.user_question = user_question - self.expected_answer = expected_answer - self.disable_a5 = disable_a5 - self.question_index = question_index - self.max_depth_allowed = max_depth_allowed - self.disable_a1 = disable_a1 - else: # inherit from parent - self.verbose = parent.verbose - self.user_question = parent.user_question - self.expected_answer = parent.expected_answer - self.disable_a5 = parent.disable_a5 - self.question_index = parent.question_index - self.max_depth_allowed = parent.max_depth_allowed - self.disable_a1 = parent.disable_a1 - - #! keep track of paraphrasing - if node_type is Node_Type.USER_QUESTION: - self.paraphrased = False - elif node_type is Node_Type.REPHRASED_USER_QUESTION: - self.paraphrased = True - self.user_question = rephrased_user_question - else: - assert parent is not None, breakpoint() - self.paraphrased = parent.paraphrased - - #! record number of subquestions till now - if parent is None: # root - self.subquestion_counter = 0 - else: - if node_type is Node_Type.SUBQUESTION and is_new_subquestion: - self.subquestion_counter = parent.subquestion_counter + 1 - else: - self.subquestion_counter = parent.subquestion_counter - - #! record number of one-step thought steps till now - if parent is None: # root - self.ost_step_counter = 0 - else: - if node_type is Node_Type.OST_STEP: - self.ost_step_counter = parent.ost_step_counter + 1 - else: - self.ost_step_counter = parent.ost_step_counter - - #! record solution trace from root to the current node. key: subquestion id - if parent is None: # root - assert self.node_type is Node_Type.USER_QUESTION - self.solution_trace: Dict[int, Dict[str, str]] = { - 0: {"user_question": user_question, "ost_step": {}} - } - else: - assert self.node_type is not Node_Type.USER_QUESTION - self.solution_trace = deepcopy(parent.solution_trace) - - if node_type is Node_Type.REPHRASED_USER_QUESTION: - self.solution_trace[0]["user_question"] = rephrased_user_question - elif node_type is Node_Type.DIRECT_ANSWER: - assert self.subquestion_counter in self.solution_trace.keys() - assert self.subquestion_counter == parent.subquestion_counter - self.solution_trace[self.subquestion_counter]["direct_answer"] = { - "text": direct_answer, - "value": node_value, - } - elif node_type is Node_Type.SUBQUESTION: - assert ( - is_new_subquestion - and self.subquestion_counter == parent.subquestion_counter + 1 - ) - self.solution_trace[self.subquestion_counter] = { - "subquestion": subquestion, - "subanswer": {"text": subanswer, "value": node_value}, - "ost_step": {}, - } - elif node_type is Node_Type.RE_SUBANSWER: - assert parent.subquestion is not None - assert self.subquestion_counter == parent.subquestion_counter - assert ( - self.solution_trace[self.subquestion_counter]["subquestion"] - == parent.subquestion - ) - self.solution_trace[self.subquestion_counter]["subanswer"] = { - "text": re_subanswer, - "value": node_value, - } - elif node_type is Node_Type.OST_STEP: - assert ( - "ost_step" in self.solution_trace[self.subquestion_counter].keys() - ) - self.solution_trace[self.subquestion_counter]["ost_step"][ - self.ost_step_counter - ] = ost_step - - def __str__(self) -> str: - type2str = { - Node_Type.USER_QUESTION: "U", - Node_Type.REPHRASED_USER_QUESTION: "RU", - Node_Type.DIRECT_ANSWER: "DA", - Node_Type.SUBQUESTION: "SQ", - Node_Type.RE_SUBANSWER: "RS", - Node_Type.OST_STEP: "TS", - } - return f"{type2str[self.node_type]}-{self.id}" - - def is_valid_leaf_node(self): - #! a valid solution can only be in SUBQUESTION type or DIRECT_ANSWER type - return ( - self.node_type is Node_Type.SUBQUESTION - and reach_terminal_subquestion(self.subquestion, self.user_question) - ) or self.node_type is Node_Type.DIRECT_ANSWER - - def is_valid_solution_node(self): - #! a valid solution can only be in SUBQUESTION type or DIRECT_ANSWER type or OST_STEP type - return ( - ( - self.node_type is Node_Type.SUBQUESTION - and reach_terminal_subquestion(self.subquestion, self.user_question) - # if the subquestion and already answer the question - ) - or ( - self.node_type is Node_Type.OST_STEP - and reach_terminal_ost_step(self.ost_step) - ) # if the ost contain answer - or self.node_type is Node_Type.DIRECT_ANSWER - ) - - def value(self) -> float: - """ - Overview: - The value of the current node. - Returns: - - output (:obj:`Int`): Current value, used to compute ucb score. - """ - raise NotImplementedError - - def find_children(self, rollout_id: int): - "All possible successors of this board state" - raise NotImplementedError - - def is_terminal(self): - "Returns True if the node has no children" - raise NotImplementedError - - def calculate_reward(self): - if self.is_valid_leaf_node(): - assert self.node_value is not None, breakpoint() - return self.node_value - else: - return 0 - - def skip_backprop(self): - "If True, the reward of this node will not be accumulated in the backpropagation step." - raise NotImplementedError diff --git a/figure/wechat_qrcode.jpg b/figure/wechat_qrcode.jpg index 745a35816a5528471fd7c7a9a497904879d46a6a..605334b3c8a9503640b7f500da8b2b6e40d6c0f4 100644 GIT binary patch literal 253269 zcmd?RcT`i`_CFe=2?z*CuL_8Yi1ZeSjV1yj3R0ueK|p$dkO)X`0s;yGA|OqO(n1d% z5$Qch38B}75(0tna?ZW?eD57^jNkaZH{SW<_wLMI?8P2yuRZ5ld(Ac1{LHmaCr;-8 z=kIIjY5}OI0014z4{(YRe5eU=vIhY4^#Rua0Ki!Q9Thu(nv$cU`~XyZ0NOwE0DuV< z|6h4)sw@92a|Qr7!|^}mBb)#<|13|b6VOaal&Abr(?8GjZvg;$%6~LBWo2a&ss53t zIztWk^snnOH*bET`kxvR+`{37z@tDFRpiS>J!~eL8VE1$aYgw?F6%<)A)u<_t9rHHBzsY5pKuI@&*p z?w>^eC!PI+82+L^?>=*ehH@~_(bD~O{eL@iI!)o3?z9=ec9zm&�*`0nV^dQL|B< zwo`qkh)w$^gMT#lpG4u4!WjKo21cgyfHPFo)Msd@X({|tN(TMW=rnA!>=$Kj({UI* zr@!QJK{hxs=d9?R?=75<2619?FFZpS7`eE4c=^OHOI*2nO{}6}r z_x~mj8%3ToG&IyS^nb`hb;gg9sM%;}FUrud-!`Iu?!j?MHu&s?JBc~pTNp&;9^p7& zcn&ghiOFNc@qdW)r$qmI0)_m)lISmi{*vbu4LChVHUJ1fCSUm+4frz^`yGXa zC)-`lEjARaY7q76k)*jNlphb^Y&XPvVKl#j9Bc6!$pX)UYZ1?wk_Q}M8YxDhffp_J zR3#IJn?#6APpi1mT2(fFRLbnPJp`f>N8C(Aqt`E`Ud5VydbZLgf)Gh?)_-dI&PY>) z@yh4dpwof>c{u)Air##5$ClgA|8JC~_rd)u?Lt`syU`1JlYFUy44 zmC~a<^*}O1@N-vO44DBl*B^4gN6!4RicX8JV!mUPqwAw4|KgcVxJv2Vtyq2`&+?o; zxMo)SH1z&WZsZ4 z)Xh^ZNg^0B-3B`U)EXAMce9H*nmh)h2lo~q3*!2Uyxhi;ELW>{Dp`B(Sy5f_h&L@T z7{xs7#4N^@-uc+LQaEi*7~WFF|CWnvHI7%T)a3?#TrQcBACt}Sejd+}6OmA^ z>qoozdq=ojTkOl)ro)rptH8os=d-i!sb#mU95+#OUl3S*4!tqE3KDZwRWqvYn~ONI zCQB`{y1Uv|_OqVb&UKks**dzn*bu5CZEQ9T(S08D2GPJePl8uD)xEQRfOnIuRaX8v z7oSEFaqZ(pR;Ze7-AxXz9p7Dpl&$&(k_B(dfTz-J5(pCf5AR(1su}qz-q4wB_(0>To~wed#gs_A!g`oBEliG>K=3~) z0J`9~^>AN7=aY@IqzrcO3KQGMD~np+&rhMXMW+ux1ctjd|5y`bx}rG|47DO%Ay23- zZw7uozWr^)?Gr9M@#V!IBOo975<4+*bho&n6rU64J35DxnfaCO9+=FJea zYGPfT#|Y(a)BWh!U`-g$%4`K_bJPj(jqD=Du$Ehe~$a1Ki;YaHNpqtHU>56NASlZH~FzldNG@l&1ms0q>rop zh5qY`H!FJuZvQMJFoktf%TsO1o6adkp91EPS@JmPFdsNC1VIQKe^!Yjyg%wIqS27R zH5?GC+3rcCI(&@ki3MMK`;Aa5SCIH6|L{mn@{G z0^XNUoM~hRj?y@O^MPEvK?+U44AQ2|@RHL@vW*2Wo-m|+y`R6W&IHoUA4V{Qb_)nG9<9jKkYZ57i-FxTuZ=k}V`6_XL{ zLtaKtvn_TV-TThPc%P2eD+X6WW=zCkvGk!(@K=aw3+$qh2<~NZnvlRdvl}@cJaOVl z7B6l*V7U|*Q||xyPE75?qDQwt53eA)$0$;^kbA#Fu0z7N?~iRNIPS$cSkw({l@84u zp@%gqY8w(Kbmo=V^DC~y^gzGbd5`->@q-W}+ZLsZ@FJSy1OMrgYithmmrWoY6- zVcCxo9_Se&E4vJ>?)}EQkfyV&HyaD757wfw8Un=G`@|18(j8(#j%b%1VwHf7tNRJ? ziCz;=p{8oS_|$=Oa)ADHm`s+OM-Z=^0$LMWpyzI8fN4tLw)_0AQ4gJ@)M>C`3Z`E(*d7gyWI-DTM6Hxt^Xr;{JLini6=xA#`o9vt903S|f%D*&?O2U-qsPxln&=r9zJutO zWpO!`PuclhKumXzO6!^UKU_?V$l~{$ZmnOMW$XQ>1>zw0!8q{9a55XweySx)A+7BQ z90?8l3JLEw8F0hCw(fArZ3(2Uw=neJEU!eKbw#6HzlHxWT1>GiD1`NJKq(46B+-i4 zHc!YX>YfAfmJr?bQ;(da_v0*GOkCYHx{r|#B$4-(JGxgG&hz`Zo@sQzMr=4dC-D$j z+p>8pvsuj`Yd!ay_)OB~k~tf@!c$$=Q>vnuAJ(QyYq)%ljjnkAAv7#5GK%UGYnX-< z(cwu6*{GXM zV%fd>Z$1G`$7VSydrkqI(gQOGMLW5b`RHBUcUd9aPv02GSPl=#6P)iadl2)BD8p2REax)I+wh#^Ky;WhY>(0qafY2~#07OEjsXSG zw51D8Jg0y+zPjR>3LKt^o%A1D-rejx+r@b_j&mTqO>4=fhH~Q4F#W;%ASNq_--A)^ zj`Z+2!OY%`qYJXL*ArI{ymT)#cL%%)vnu7!94L96cZ5CGE+_hUl@O^39>WT*bn964 zj=0Knt*X4$&;5EI+hHZ^er*-7X4P*#uO&bumx0seBHob z>JNW81XatQ>|a#v7XCn+=g~B7S#rZPL|HUH@QGK``5~!e5Jp|@P8B3S`sWZ2+g#km zs8o4IMr|Rs3&E|3pSi&u-jAtHM<}|a8RXon{cwp-;}BF)z7@b`l_f=!|-)C6E&`H zP0<$}JOsucDkTd=G#N}3N)&6+SSXVIf;H~6lz4V1R(N2o( zV3h~ym1+at|7C@(ZY`j!KFGth$gF&u_2o09o!tF3Rr$8-Q!a;;4i1rmw`ic| z(uAwDV(_`0s7l}LT*&aeH|V^NtB@46WkXH%&hwfN;UBNtga>+v8p^;G4Kovs0n)En zhomQZ2ozHx+PKE}oI*k18gAMgSeH`T+nLEwUH4XV zQTt`lVx6`C?8Vk0tbv$;@5d@_#(7{s;X-`G%#)~jS0NCa;a4Y_)lzr&!hRR|&d&Bq zyqFwsj!tem17qh4&z2AIXtEvLF@bogx`fhF{S*!m1nDS3BU(urKv)jOK*USg45y+NdRw&{Rl6w!zTf?lk}!8_ceh4@3;O0e*At7&|t zu^RloBW3b|KQ#VOU)zcjV%@qnUM|1^@hasf* zHYM-zx#bkMUP6sr8k3sY>9LPZPr8-nq+Z=!P-P!3mSiT*pJyH9ZaUD!4z(o)&ViVr ze0U&?X;ec3?d&J#ly0Bw>aL#O7@y|n1SJr*Rqr@7G=@BdVlUN3jj^1!ebppN%%20l zX}V!J>D479Uop53r-J7bZHz{M3NE0CQmWytDo*a3cjdoNfyHO=3L`JHuiexd69d2> zqZqu!ai~@lGsKSFu`@H@Y>Kuf?otZ$J)4Y}M^YqKShnaID|Pf9A4Y@Qg)boz#!K`A zkKLFXxv^c@qq|gBHP4Wj#A%;&gMRDxM+9|7>lep6fW#PP(h|6Hgrv z-UmJRb6O{*F0E=mr9Z9|p6(44f0ccKO&HTz7q4*H*hX1YOL@fO+bN(c=STY~V7EVU z_r+^ax^5EnbxSA#jHVIF`OfD$-V3ra{FUl4YwZrn%8zH|I`h3?k2beS~)bfphXG29&tT$4bT z2cZj*8?P2>pKN=hCWo=JZ3sS8djgY0q&1w~{4!!5MKf`W(8{dzFjZfp*S?B$JHcp5 zjLv0Be;~rteFpkF=v?-9x+07_;~I#0@4FC6DfF}IQhr{SEm~o#_GS1Ic?^xw?`R$= zEwg_+(N_DJBp>;UCivDT)8TN+(}y5`niMLDfQyBxgw4EuuI+4YPeLwgU+{Fdf3 z5<9`yMH{i-^3~&${f=Hhl)~-cfKqO(U3gSr8Byw(7l+jxbVIoB_sZfcmEGitTL`69 z)$r63MdDnF-R>o)>J)c*;p}HP_p`*3J46S(3kJ~zesh$C48jc?B)6-A-au90FUMTe z`zOWICv(#J-&-;DM34k4zb0btU;cf=k$Q&-<9Ey!LuR^)2N4KFxp~CYEcPG*>crZr zZ{OAarE}dhedlPVmFfLL%I7yzUCCG9h&a5A&znaDkwu|SC!fi5tUQooN4_xxRt<>^ zUpA{4blq2HLHF_3EWy9sKYAmzQ1%h#5|pbHqN_IFfS9L`(V!&{fiGmt8@8)^8R2L& z_;9OZKs(kjg{b?wh0YJ;2MgTeE}a4lcE*(RTnjvr$z3yubhu5N*PRHAVVuSdm+ufB zVxZP&r8}GBk@`XUQTV&+1FlqKIrPnTB_*zh)Ql1Cva2akR=)v(p!j3aIVl^$W1{QV zH4k&B?if_BNRL1}u<@dHgzsXBmGk(@P`5u@ywdkw*Q{}IlSjs4PeSKsUpI-IyrWp{ zazsBI`4pg+(2|xOw`blI>?hdK{^GD89@phPtaS=-t*A|V2^crI z4_;}XlYgv*g9k%hzBu!>2UMopWuoN+U^#xAi~Aenrb?1GNzWC-60fH#w;flL9l`JY zCAzjlP5~@rC1+%vI4Yt_I3j%kR5SPmml=8rcs65ZbyC)1J7RX@1qrxplB%;DloXVG zqO*I(T|{`CyV-kKlqftmGU$-B_RBE<65^C*o1{%}B&ZeIqkq+ixhbpn1~mH5whA+^ z!B~ifn1r+Ic6__{hhBbNmZ?oV_x4s|)3^v1uQdyuw)5V7!08x8H?)GBg=1BfHV#P2 z6iYKZ(%nM;J1#sTsHERJwG*EcKSY<3>6-HP*JEk6aI0xq$?0{BJMrr5YoH6>n9MMV zug9R;f@FhSz+=aprDje9u97;JjHs6jPcdLcqW| z^}Ba6us&r`ImAHS#&4rBw^_c^o=lJShEDycE+8q6wOd{Ek@DEN*f&!}L}L3V={pZ* z`C&K7qgkvt(=PqH?Qjk#_g4t4zZD6isR?OC@0t!j>bN_TF=lkmpmusOXvU)hc7WP2 zBI!dFPfDs1(4zNsfO1mgINGT^HTevPBwAMSrK)ERx4pk7s}VY(e_ z!+wLTY{-%j39jtwn5C6Z^MbUm4)E@QgnJ9rd%IFFhg#oKS#!nM4pl!U<+>SGx(E8k zQvE=TqR<(0*|8eekEt`}ms`N}&gRvP^J+1I+KG3jI=1 zETQ)Q8QIAJxc>6aNfBDV=}Ev+HeL^N5UoMAl6|g034cS6GHr1T?PW^b9?zX5M2uDO zO7$nY*h{^7Y;MT;?qF87gXd){BVQXHxiO00o(EBkPIibPCc7;-AELP3X>R#&m9nzT z;%#cE@*VE3Z?ve9UPu&u(6Y1n^ntY(_d}a9(|PXK8Zyw!_>}(F4eBIiR7?{qF~K1E zXOBVn;P8{-(hY1F^!>7hqQ#5!Vm(OMV8e_!|C5kH`aEK8D~g4z>_TR&3Wkc$XA7^r za!$3rzI&{uzEs4#l<4GNXXGyMomc6sX8Gp%!-Z{2|6n@QYZ(7pHWSDJk$|cgkJS)a zC$kOi2?D!ai!*O_QWO%e9NE|!lmZ)!zvOzl%}bLQlxk0U>8Ut6a`tIn?B|$Q{u-*) zKf+YZ%O*nd_D%lx3m+W>3#p4puGvX9fFnEj%t@ZE@u3pMiaf15jU(3#0o+CdoBR9C zWiWRD#C-13Z;S1x^XH3Gl^IzA0!D{1%=8-x_Lo|lj(5CBoh-9N9NlZh(tReT!iIIH z+(cQe#b;XDMqT-8o7K;S?p||E2v^~;3^;mGTid{lsgH=(i)4ClwP5+ZbCr%KaR6^= zl4~<3$<$BO%KMgTQW>kkAx4|FxSaKorIKph!^*suujgF!5A3zuJfhWCzt2qSA%CXu zzoNL2wGAYHZphD46BC~3@wmEimR^i;!~Mw7{uP>qJq46niKE)!XVEkLgdKSnWR%$CKlKzNr6tVgLVp zram3`FOzrhzf9ht|1x=p|I6eZ`7e`q^uJ8rvHvo8$N$UZ{d?zMYPlz)u6r5A9w0GX z$ww~Ga;d*o?mV-hk?-#1tGvKViWdR}JmDOsP}6_|)%HXO2KP7Mb~}_g8Lpv3@jD?q zQT$>`!(VMo>KIEz0o=co0S=$aj)hp!sOU}w37dmg6*3D8Cyqx;sBAq+SO0JN`z;Ib z9utZ;Vg*w^R@1xKb#mg4N7&&=7KS(#SWW*-R_2xU@jXPVZN(U%Yf9o2fGQ;`NKEX* z4wAD;&a>Ei5FZ4R2yYP{nY7u7$H6$NvP!dwq?&)+Fn+9DIWj&k90u(9 z@bgBIO^U1xO;C<3t2*_iD+nx~>5eo>_}y8TD1{s(j8DG{wI z$Zbh7$YTgA>E#Hw{m`F(MPoJ}&dW3}e11!<%B4vKgi0=e$)z_6M>c3>`sn5EW%g@i z2UL@L)4|*r_mTc|@>*c_e zLwxDQ6qOqg+0-q`qLZ{&8t!0cU*!`BCIPz&?tGIaia&dcrNrkH0RMdo*cc^Ur9dKy zqY8rBWUi1kZrR_(aRRIg6zABce4 zS;g$z>kGwH1Wst(fF80ZgNLT+1-_;i7i&NZ1D?v{s@0IQI~orTL~ImNN}N@#<6H@) zTDRF91Z6$_0RRRG!BQpY*uEvcNKQzZ^rTwwNbg#&oC&}GRc!N@ z3);CZB{>{fo9Ho-WV!=1%_qX!J=WHqeLTBm{B5Oe1a4%x2Q%KMPW*@!5H9u9^$<_Z zA-redQ(+JeCRa6>Ck>1`23B48F>M!TYaLG|eAlq(%3tAx{|YPo|L}bJ_ZpYfZ9bp7 zOdD1Dw=G#);$T;fEr(3NvDP;-+?k6lm+^1MH{HrSif3e2m%E1(<~34?<9Lw80372E zDIeXo*&Q~nx%2*oAHBLRPg#SwW6PSIvdXapt3&SF_G^0zLoJ`HsU)p5KIDDKHM3a~ z9eo$vKj(r#4t*=mxsAxre{TeLvRq1K3}RbOTrunV>0jdVDf!@G`o3h)MJ8G%GG~!c z6T{TP_@HV{5;OTe>}j|C z#!dR&(*ARf46IR=A0h!A{%*7HqFs1x3U_oRie%dE-&h(yzQEi{?$%K8l%*&5kv~dx zz<8iEL`h74jH+7|ymVGQ-Khzz)v3fK7#d)@1wOuT(TjA6xWe%kUQu&E9zZG(rEnY% zNx<~!*z}EbS;MpTPfQ$tZ_V8VBl02U#Zs-hYGnGHh_+Vaim-)%1d4lOk`XNIjQ(A% z)N_(h@N-~FZ>iA#X$95C1kF9pA4EBVr|XMd^QtkoU!G2BtS_@HZZH+VA{qneH%NKl zwI;Pu`KwSXmC8_#$m?IS&MqcwC`(NJk}V3s?RIS>nmAjY|Pqo=)N4fZzM*O()COG z*C*i@E?ZZY_KSbUvtKRBcdc}l@|l9m&Ebjkswpz>1IE7OjRaQt4XzV~s0xpjDWP0i zNIRh4E!nRt5pCoI1ipYl{;4K$x!O_|(!gz|xpQ<~a!W-lQ$rqBk?lZWMR+eff zx_%`;vwdXYcnEXT3cw~94uObbvTrG|AW!0TRJCBJ)s*qq9gmB6ud3w*rE%EyoLkks z{BCp~nRb|6dnE9+IxNr~^utt>f6*mnDC+!qweRFRbr(Fj)4fa_dNp;YI~*-$9`n+9 zs=~ALp?C2a^IR3B#5Y7g!xY!ey-7RvXUxq-&D{&06ewY1`i`l-hLeqJm=OV))3St; z+3(4&BGy}`3;x=c&5Jke5sPH3?aFzXzAMK!WW8aSIUlQ65bok~3iuF{GYfICu!tDG z9F6~!IP{3YYw4VWm%zsaM5%tEv#M`6P4#$8fj;zCbn^zgPV<%4ETwbt9$8tV?fP@m z^oHN-hmYkWbhy1TqV#iQ;30>dP^IlFrPO1Pc+?S$Cu;yJPc3@Ze!QK8D9 z$0L+aviAfH@8OJR)^dNi8u(?&1Cgn0HoTp;`hLX+n10qxQ25bIlN=1z4c8al|6S+i zEi!9&D72WLiMGoX!ga#&gQn{som0SD{j`%;38#SDoH^zdH5A=?>w=Lc;O|KA)4z8m zOWmgM{1m`pG2}%qyAsRi?w`FJcB=7f`y*^nwm+fize0XNTy6TOnxvBLaAH)aIl+RPO zdKc|qP`#wx24}#T_OQ9mW9FSDfut$3B(T)0hnph1vz&zZTs-(bo;&U<@E(`sRjC(j z#jQ6#oHZ3=H!vJ)vN!X+rW{#MD#$hEWVox}S8q-%!fvXWj#f^~8B~wh44VDpM_*Wlat`lwqnhJN8*8^AKJ=+a_H#Qo9I{a%fo-M)k;i9*KB zAW=zxD()t&#|*Fnw;iV-yveVAN00Z-8IDEQ3E#OJx4W_Qje%@oPb7+#9(L&2$1%aD zBs!?|{q1oZGQDm!uXb!ap0^k+?(-}UM{hQrgN-#Q;-%w&3i&Roe3zWlJHiS*E>9Op zwL2Opdd1CD?ff7LQ(}2+4GYX&l9txp)2%q8rn26P^7c1+gQ&>o*6Iw~XX!1cr_Hjz zyByg@Dsp+2_^^ox%Y}HXIFWdFCA>Zx$AG|~xlhGlf;N7Dx`5y(I!wAVgUSNGNsq7n z0(SO8OV!PE38*BVgE;~c`&g;d$r13mPi#?eTa>^T(2DS33@PB4nrP%x;xw?v{0zmJSYzxO^2Rq-iaS$tOoRoY@#mMq| z&YC!1<#P;T&%Kb!%Ni+(UYLw*W=J5JgE?p>@PjQHub;ZBMKx1jH%b6-~_>wT~tmpW%34K9sWT^03hz4;mo zi4*Havz9UY17Ad2T)Z{k}^swwsU{GcMdaGTH>jq{DeTa_-Z zs=u$rsMx$aKNNej(B{Q$3LbZx#tQDCXJ}Me&RH=X? zM`hm4uM9o(a{+&t>Vit>-euZX|CF+UZpwN|3EvWgDuJ1gdCKugRRdW^Peo)NuupXe20X- zx6g`~HL?{iWHtr_j58tl{2uI-V6S#66>jFBp}P1B0rcTpZi1r^3T;>xu6eTF{k`x4 z1%wS>Ta-xqm8CzlX`N%aWvvm8Ja(Ta^$WUikDHpbZ6wG79~Ig(+{^Jwz*r_2Cx>Q@ zF4T>cx=Ue_4QgV4-|Kix$6WJ$K|tuHCPYETz|(KyxIb$5>AZx1x>8`)Bo5j93aVXQ zGj_R-ZPM(A=+5hI`?b60f?vyIRm~Dfb15G+I7arF`Bq(*tC1f@IktZO{Ls=Okd-O< zh3JDhk!(GpCs-rD7zTRp0(UBXw+6%CUU_+Q{l|PG%Z${;58^{WkVMue+uym(#d6c{ zp9x!zFA;w)<;nOO-rakd5&r5F@F+H~tS@4&KMI3~x2e;cKc19GCG1G>zir;+UPprB z-1Xasu42!5?DaZ8uMAxpIKGZnj`;!EaywU&IV<01%Ok>a6ICET3Ps%?OG+<;(l|VWP?=Y610?OD<0V|g(CI6h6p8Pd4Sv_$4duOJ<*XKyxx)1Yl z8BjUdLmjap7O4q^YE_purl3zMCptEDXI5$hnbPBDVA)Z8PUT%F<$EeH$J-~Vt5KzDv- zAD^My`@XXSSz8gPjPUaKIQ9{yQDZpmz8KV{u;+fPRzQg8)Q(u99^OoaAA6?5=Q6V^ z4R2#6PXRbt%D9a;HIxtJy;2Fe0A?!yA3F60%(h5J%1uL`q*xw;W$PHFjjN=)MALaxC{(uu@?xGDq&>E`-V?>VnCu!&2`YN~ z%}iJ1T5=fg-cp2t+UK(V5yPny0<0UR_#!|Mq^>sGvI_21Z>oYn6SGk9b*NS|-KQtn zLFhY$FMu3`If?wub%D<5Tc2L)HZ$82E+5H*jnMl$?2Aanfa3-{*i4rMAdkO!4ilm@QScG`6d*>4a&My|kI(KI zik||SPe7-DB$x7dp^%IeWwDuqHHT<~QSW27ZTN>>?-@C~)SgUBVBqyArice`wY1cz zvScjEkIjg|;@Jcj7j}h;%f0zFG@p2=)jR2it+J!HFv|vK)16njT7U2#x-7q|6 zKd+RA*KwWdj5`G&eeh!0l*%BpewgD~qHw_}U`HR8MG4DQ(f~l85e1-74M|8)rSxX@ zMt?bX4KllTM`L)2YC%_oX9g802-&uJx>jsdY1VcpIt29i#-19S9b$h9(5x31ZP1P^ z|HxMBk+_ElZZO0pbb?szK3F_RC3Hu&<5)rd5~OIeacbT<>gbcR!|tw|o6$NG7oz|n zuavh`N<5u?W9y%O;H-;vI2`XAZPO&6g@w)CU-8_H}O)rNA}jo z^RTMx)h3>w3!fw=TnwiY`nWfb()N*NB(gr$CJzp6T4iqwi%Dh^`Qj#zUAp(duV-i) z()xyP+_-KmvA}Xa_7vcKzH7Ja>SD2OE(QJJ{SyEZT{@$8)%^Ei z?h*qJKx5$ca+XJEG-`f35^Wm3;UsS_BS8=rSSt6s#+<>&ja5=1E^m@od$yzRd{fq!+9oE$VYfQ}_EguKQduCLi5Z zuv(Z(z@HQIC>ycdc?A&c*Vymv`#G#8edib4oYbHsrF_llW$6Jo!gy*g;gDt$K7RHT zu*YW3nVkp!ak+!Sg{R-- zp6h3EL83YL!*j$49Kh>?U2G4Ex_&*DR^p?KOWra*%^| zjy$Qws=ZUdO>2$)AZ_Nw5gAVN_LZ~`nB}K+dr96lf!TWSHe(32SamjKqrz+oTd_)UCX77-RFAImkdV ze21)sg*V`emTH!blk#2$ErFa+G(nNhqW4FR!&{ga@6M9Zqg*E?Fk$JLVV|3?T#m+apZUIrfJ(@h zyd*!QS8q<%yq)a=as&2tdRi)_{rtjGez0)ailI@M(74u!lkP9CYB2chq_ zSo7eSh;B!1k5X5lZ9UPKzSee{%7z|}s%@kFn$3MaA`cW*Bco^45>mJ&hEH6fN_dVg zzVJeuF_HTCiv^MlVz$?IsN$Kn)av{?pop)qVQbN*N>^2Wh|$CI_Vy0R1I1-pR7Ye^ zslvtwYePm8Cy!zXXyS_%t4b?pg*B$zZpy-hnfen}!Ur5{8+**5V@W(9m5_)YsDiSJPDAk+4kXUy<-^ApaNB1fc5Zvqi z^J?IaFoWeiz32D}&8BWujeNH}jQP`fM(u-eaUkC&P#PPg)R9&f7M@9iZ_4^sf0%P8 zQE@Y0=LH1q)d903vJyTG9vgjf8Z#XW?^{B1?%F2ZUa$i^($e-CfHjzopvn*8q3T#y zc&D-Bfs~JW`RcsQ;@Qvi2gJz;=ra9K`J$7Q_M`ZSff+GkSRMrYIOYK=d|tce)*AlW zJ3vyS9`)2v)mPw?FV1Wc)hul}*Du(B?gW_fm$@`Cq3{dVGW0{DD@Ld&H zmRK^b(3n-Q)2dPn{8cyMUu1bA^^KT|QCniVP#Vrl6UN)`#xo4n$KP!u^Ok3kbsU=F zXN8_sKYl^A|GOvp7>PHHJQl`v@@zpB3VX{e`{dk8s|9OFd9V97Kbls+`r)iVm-!Mw zmq+7U;+5qMbfzCm@HtO6@pqPPvA%foL%#(X6s z7zNKNtGyP3eW@ennc0{D*DRHl8x!S!OiInk`A$^1qCWlDgsrXOr|HJL?a0~sb zPWb8H3k*~Ay*owUXXW-Mp91bE>~2T8mfDYOvp=@v1^dz)XSu9MJxeUHo^!k81TseNn3t&<`E!(|nY>@{03l2U4P93G&M?z)B5n=a}o^XyvZ+>wa^Tl_I=!||3 zX`3l}kbcwdt-oFWv~j0l)ysaSZrg7^Z-;3MoS(gqPl!RWy=>xwJX;^{6bx?n$d%l( zccVM2d^8@)IBL0t%&Q_g5rWfe{&(u~C&7kNi8JAaSL3$+CCA@CZSYvGwhpK}LHciV}uOQ1qC=ICB{IvVya*{yb_pYn7k*-7MSd{yPj!h?KtG<+KgyN_>_)2SpY=vz^ z@pVxiN8^huF?bF1K^wQ9>e$3`yxmDMl5+sTBSpNf77AG;e zB%8EhhX(|N$UtR}udh9Svj{2uSN&)hIY(;0|L8F9#jNFMy;OjOOTzEAx2n%Poh@RZ zLky3XR)QjMA^J?((e|U5IFl!@^b*pxj*AUlyAnDZT(G9$-X9b$j{$*^O|NF~7ik|a zgdTZWDj?#0KJh7wzT!@LZ*<(@dVNNGyi}q-*}3fuw+L30_{w9y1kod&qxw-Jw755a z;%ac)%@;y){k$4k`$x5uRoZNQ_yL*gTr{K3>|{pgSpYl_TMD~<{o4nDpzgZ@S))f3 zq=Tk2CGQjv7S)KfAxUN*GnP3%fivCl^wrqL3l0pErJRO;MqT$a`L2cOWTEbkRl0pp zl26P_wU)qrJW|Ym?!~@wrTm^JoqxC5S#_68VgzPYp`Xnnt%*xU)2%*VTx+m49`?*7 zo*0ThLs>u^DbE&*r3+R{iw)P@ZMY)#`qr^B=ZXokqC(62#+szCJXG}L;|711scLGY z*xN~c$*&J(9*R-te(US*MqS&?Wo??k$XHP@jC3ze2wF6e8J`ZcFCHKi(C4sCf;UaswMT_1aEFg_=2f zqr2kqVmC*!e5>B1+};^h#ubgLV;YkREtR8{yWiw(wm+>V_P@|J--04Um^`PB6D$1m zC$_D*ONi0yckr|YQS)Khy0sG(J+T|lci^mU^ltlG=cmOtuKF{ajI5PQ)YbIC&5zI| z(S>hELiqnM&cB|Bl5Z=5_gg_HG$vuMZ6qz3~)lrc_`WAg| z!|yfSj2g)_E*ml3HL|~BO6rDN>2yVTM=hp~JkLkc)Y#e4JNAE(?1ZTkIW&p&IP7EG zM$Dq&8UNIcTvowW>GvOx*p3g&hQWh(*DN0432Wijp_03WmekolYtt%fW7h(F;?_%l zf4|XfMRjfN`m+tOSdZw#BWQP#=t@3|oz1Qv;X(ZXlo`+T2v-nYB`1UstC$jFzazvg zgPgf>;q5Eb{S$?xz)cAgJzZ-tGw#4^w%@cCp4kYPQv3(3l#RVXa@P1Kr+@^gMS!&1 z*v{N@n>PQ%A3txrDw< zOnsap#XA+k!@Y#8d6PM<-N#x~c1?aidRJAlH&BHW+ z-EN}q(~ytuy>9sP?0?Z-XnY32cEjn+t(Z{|u`PCdLJd5>_0%Zoxc*Bo?4{E`?ufkUgilG z<>jTpKUMMoJCCmxx_BK%F`S^cRGv`htaiGDq%sa5ISsInxBS#Lqq4FvRIL5h`Q?d%5s!JhSR*}hy&+Y>^(+!?GTplG$5`%CUs9)dp%b{&lOYbRo+^bE3S$jbF#; zgciyodY!Pdl+`sd+&=Qg+hLC%(<4j^Mo&Ue2KA{&<7W4=02_;Ebd(S*5KM&g@$pFm zW$(x&1kns)_qNqhkQCHHD>=6C-t`cYh0kdf!hVre#%yr;U!vxts+|H98jN0-3)k~q z!wT30uUl?!s^HmYJKnCmb^KbAZvjT3K{ywtSGEQ(< zlowJT&8f!iA*j*S8I*5tL`B`bM1RLtB;g&jYrMdG9nmCpw~UzOzTvglsXghMWd>lC z5xfwOl2N8kKcOCL5`gHnpYIkbwJrBAd?;Xx&3=DgdEHvlm2~M?s%pqpK2od+{C!Pk z?Zxfu*6tq!K0nMmgiLr;#ySYD2itir4(y4iOC_W?uoV%pE&A|0=XC$n!1Y>buE(Zc z5ifozzEwk7j%{~5O`A7}{kHN=M?qi6yY@HTGJi@i54Cdta8=Mk7TXZby7yEbWaJY2 z&s$)F6ds&bs9;A&Yx})45xNy>symVB=(YHt32t%%^7V#FqcK zrxR8$13V)sVLXzCIR&(XSZ6I-#}&z!M_lJ#HJ-2N;!`sC@XY0RLlBO&6@GprSsyim z*m$PDAeEOW{cGZ|2{QYxQ`1SJC4n_!FfZGvsU}$)lEopZW%f&!;X*CjYfmi}z?=<2 zq5Nmi0*Px^^Gc;Za`T%PNgh%IfZ04#UhmzbJ{-rQ!uI$<^eYZV^`7I%1?mA#QhVUZ zAQ+X+2Bpr08sNeXLV&l$zCWFPpRV<~@GXy>nJH~3ix~jujmS_ioCw936xUxK@quUo z_$6MmRocWhLl7^#{i|2}6F>6#fzBP@8k2_XzIkOwaXxnao&=lAzPFVvIfwHTZudn@ zJ5j#*8WEyqpj8+^yS!aF}O>9@bP z115ScJ*@E1E>UJmY#E2Wu>N6RqKc$H<_i+3_CH=HtQit7XE%2XRIIBK)gd)ir+@`# zB*i69Gf$K%GSe>TEpwSy{vL8e%B$<7-e@CF^SHmI>W8nG4ZIgzHjC4fJ}eRwr0iz5 zJq2uz22j@4Epi&PpMy`3^X#`eVS_HGfFGlK4$ab&Y0cRcMHJKk!_+h)4MH~cF9$X0 zfUHP7Ub6KUIr^E93Xg%G!O(|YFVyh}a_*P5*+tjyP0$8<${yl^kakI#Y zPa{GiB32m9jnu9BznFXTXsG}9e|Rh0jB~Yrc+h&pfLCH+P&0VoHsSA)QC7xpb}w`$r%LPxnGrR`nV!hMid)D`?u_#X({sbswc z`h;f=`aLIfHXL!jiHe;kvP4l7XrEO|3dJRMm67w~5koci4gRP{*n5h$UvJ61E$gWw z4_(J=L>9Qriwdfj>M}pOJG%pVu3aQXk(!i=o(W99#&h!{%2d>iG)dQUMyZ%2|Sd}$Uuw6tqKc5Fcn0C-@C)2=|3~(jm|jVhoFQP!rvHaetRd~lql5qoA>ua zo}JdnIJP7ph(KHVYgkvyb^MOGhO5+^W$CM=#h;eUE6MJ#;!o^>jqe|SO8(q(1*m4q z#_am;-oXrax?kVdeh_o&agwp}-qdK51lhP?LOMrmG~;*e^@#|@uF>#rRl@c}ixDZE z5OSCF%HfN(^LM}y&N1?Qw3)!H-ko%05lXpg{DSeU(b| zsxp#?VMuIf{GL!~2r1G|%;@VD`bCnXjNqHRYbBE8%=1IHUf9|SkKlKmY)4|9aLKVvLAfqgh4JFqT?daUYcp?G*9a}AIaoX`y^s*0 z$7m711sB=(H6+J>jeViHc7r9&Q+`m2Y0<4?Vu4Fd;i3 z36cgi4VeRnqa26GT)<={s#@x8;#3cP(eXPR17QOq_{NtXh15`^=#4hf<<8A7Y{?d? zSJAJX(#I6+G}gw_4Kc7zj!ot#=4&TPDjK=0B<atyhYwo_Pkd zP-CcBYBps6k2)=d_IgucpCvYNLQg#^P#yreL+1!Kg)ubJBg`O|y)* z7PHCUcu)4!?jbJHc)r*vj54cD%vBXJFwB3SEPLq^%4|G(GFkX>X|p{(Edu@d*1(l^ zh5E9h;}WtX1x~8R*DfcbVkpeZd?UV_zVRWMvCnGX1`R1}4Kz5<)t|{1=;qm1flouK z(x0IcX1P=?r)i;Wwt0Z9-dS;q$LQ#!HgIQ*#AhEf8IJ6(#yf$fUCdJg7Wm%`O#x1PcXKK zGWZ0vN~b{j8NoNTch|+)c$>N0%1J*ZeA;fn>tGX%O^)SbP=~E~Q;5~didP$hE4L5e zqL@Ks{XLZ+*?slxc1ShT?x}B^1Gn>*r^S7?U7VYo!sS4yDd_3>c~|(kUxzZfcVx!r z5=(#7gWLmREt9zEdeuwtlZGSt6_r=sadw=5caH1uy35&wB#j(=a&9V%k}$I0cq zz5#I-hCfftHM)mcUWmIT^@hdz(*qx&ABkT=F=Ol1aLP7#p9hT-$iC0ewfF81Y8^?e z08Bsohu*ZP4M!sbLYCrf?(GyL3P+uX)%e%Wfx@N6`d8{d4N4p8rEh{cXN>AYLM|IT z58|UcKCwpyZ|$~R*f^<*kji>8C0u!Ba8~qF2~O3ROC~!1)U4dGch{W^nYL>_Ng3M+ zwkqaO=rZ+kCtaP*y(Lygs2sgQ{uSH}@Y)Pvy-6RvHV1slT3h$xh=KmJ z&KU>UVX#x`<~>{VirnfMhQsMG-$lTD56s`hwIHI<7!UJ4MPZeGKK`*PfOql5qPkh$=~4gBPB_9Hbt z*Fl!tsqOF=y-bO7)a_Or`&G=6o59%Ap?p9cWc|VMo!~gnVwJ{Y{KC%rGRtlMJv&$Q zi%cEOQUhOc+^CSx-Zr!hdA3EQ6TjDH9_-ncZS?g~f*ldJ52AxAxdJdyjC?uEGiw`|YwuQkydHXduB=`4rvq~EjV`m9z~bpaj$4FTWs@Nu zVc5se45BigTm8eh@ak#z?QSu)zAL(D!Vyc9e~VQFR>npCqA!Isj;r;V>vJA)eUTDinN`@>Tjvv zvNI8Fg`}avr}o~7muA6as(R>>or6FMSKUJ?yvD^L^^b){e>AdQ*WEMQ9PQLqwAh@{ zE)`V7$|QAm>AE(*<Bwe`h<)#Dg=oxFeWDt7+6*f@?VRaR~ICd)OJ*QLG+74(CQWlaN zqe1W7@VKaaJDu8c_hQ-tNVimZUA1yRO+MpEO=gTnQ1X|kj~7L;CrJ5Zw!ox4%=uo2 zFTEF2UT}5=2~X~LVCo8DmX4zB-rwsNegC4I!_1C_UTV#uu_2k2A;=5QA`1fDVA_N} z-6%ure)o8CX^+-}YF^~ml?Rj>5D8o;Hn3brHVUl$9~{DehSJaAoPUc@_~(7W|GtF# zWup0kUE9H`8u4QC0SdF1&~l#8RYqXy&c2*u6$UY#@OW_zL{4j=U#~d@UxG;`K0nk8 zdYask4y6z5y--W|TC3n(JYv&lz@XeOSY+-wRs48tXb{2y?>784r$?PZy=uW64>Aq{x{&8wMMdx#>#=_VoDa`1v4_j65T(zE{o&a* z-BJ|_?YPoLIkD(LRQXqabJY-y!8CX}xKxUl)`6u#Qfx?5+qBK$+l6x}vq4>#-7pixd z-BWUXRUO4SbxYc*z(HCtWK(0$gj!NR^BTHGMM#`%{l=uUt)TtIsuU3C+>V`d@B&^3Z zDL+!^GUSnv;BOXbu}Plr7G5H_D!{+|?Uu@%>dmU$HLB>VpID?_R zWYgQ}Clj}sTiv}jtyL^6mAfD4Af7MdA7U2ARf4hIZH@==pVMb4t5nnue3)R>+0!Fv zR!4-iAe%$`ChlM6XJoUOM+;F{zmXP}cM}s|zd#Yg>HxWC6w?Q}MRK^S)WUSWQPML1 zt_S=+{g$;jvK&h@SZ0$5uG^wC`p6&Bcn3Y--EWCBb=fZ=YN%Dcf_KCwf2b=vtBM&a znlHHhuqhpVjr)9>5~{QsIlVSl%B#-1{-Q@ke@Z+lKXoLZq=!d$V42={{I0h4OH%cl zIiJRV?umDEnADo{i*ah9l*ZRWzGplFX8BUpzXC8E4A8)^l`+3MZ6mL0ZFi=luqP?( zdag${hL~Ri&Lz(Nx;_aXfp34k($0O}+Opo|@!9p-W*6&%ZiD0yuGZRpo+ExX$;ucp z2=jn^+`H@_CF<|j@qv#G{Vy4OSC^Y_iTfV2L*)JCr199fS?(9hzVoZ-^??Tw&HmHz z*!J}X*?m;)(o>ZvgPDr`-E1Og4y5KbsizF9>+x-VsGg?^pL0TM4AW8+hvp$ z@Nf8wO8v3R_qA(g!By~o^%bVGq~4#|)>|uEhN|q4)qWf?z=9_S|AGWcZ=FH;))!PF z`!g+ZmlW)eYH~Dpyr4BU6_mQ%gE4j$QJi{Eabb+XtZBy_crfWNNNC3S{siZ2)kI~? zwD|pYlP0pfmk70(H?mbh7jlL=8Xn1?DLA7ylPl2xx{dqgi`uXkKU8;7 z@oc8UO@ghqe|2MdWHYkIC(+=+`qhNIp$lOjdkvSRNFhIB?vdnCbGaXqDnxc&4%JsAorQb=SgAY%hQjN#fs>?o%dC6EtxDqF`HJ?8ifZ1C7n(=SoUn|kMByS$6inR3{{J$nm~Dti#qaq zLX@8OY_U`|s{);OP($$=Sp-BXMYDU!CR1P8R(XAMQ}2Otcb+n8z!ksZbk*q4u|&o7 ztqV~v1-i8tP^90>dQI|vWY=k>GBn4+yeo&y`?J*`);h1q->_ko2##QX+`#j?=ghNR z${+NXgfI(^{kAQgYD>xkxB051UoM;5dgi@qE8p?FaaB7FZq_R~dJA<@&xvrAk5rM& zYFS&2=qmhu-G_oM3&^&qZ-Iqa+hwL)LNUDpp5#5WTY;-ZDKBdfSnWjwx6@dT)MzMV zY3fgk)2F8XEdC+5*T9eV-%5Q`KX(guHJ<}%L?Cr|HihkUxF6E} zOaGYuWku@$G@BxZe_4_BKkxVcyDEnNdB6AnPl>QTnUl28mcy=-)rqAcKZ~7hLzRE7 zVPs$I>+gIK=(Jqhz9;y!3>n#EpAVa4W9FQ4P{mrnx= z;0tN5MPPsvtTlr0n2yY;0|&w|2B*RO7xXK#46(57LA#br3Uz8no}BYTk*RKgRO2Dj zjt&oL572ickRAcjM0S8=M3kXP#Z*0#34x`1xf|ob9(r$7=0!ynLE^1Ng_hhSaoCj} zbE!5lY`FUAIFc%HlUhP?BVQ*yx;qxivm`m;G+wUV`)y9F=Dlm`cNwti=z;ZU3EEGBNP;UiDbaIr);hf{aERX7&{N!Gmg!74H{GEP z4~a~E0A%j>)tvAgIAko1%f*)Y`*@k}=_+QwTR$s$C9yIW>y*t*PqP)U`SUCy@yFmd zh(8Y$(3G=Cz=9)}V*x9LXQhF~2pqK7E`S_(RSBra6%d#e_{G1VVI`mtkH3weT@HsJ zoKdNW=X+S=C)6T1_ZIlvVKeVpmJpfeVK=lqr1}z4+8EpVm6*hT>Z+G)8@|pl3^K)P zasMpk?Av4M@VvL;#PsonWBBFIXrNH&Ff?->cR0D5QAA;&1w^%mbfsvoXf1!ENFrnmVQ4PXPS6d-KK~dA* zHAsK9d{62qRXZ)Tj&`Jepb4%S`=?jhVjU<5R*+#^&>!YsmQ-0em@&&H%TG`ej+unA zP~?xQdmvWs54Ax#Q=OrTz+-+#;G=T&8&iY~fHY~0j@+vQKMU-VH8sEo{qB#^zo642 zi2Yk&{BbfTVpzHgSo$g?B~cUH^wwf=fudpG0sUhr1HroiefVM)9{7G5%P5MXMM_;V zrZdD(V0+aJN}g;cs%#~#aR#YqzhH6eT5dc@NWckj(~+%pc!m(|HcQ4QXDtzn_Yo8` zkgtLTK+G@)L_s!gIRFm_fVTv*W8l9|T_FvTHAAn7iV~dKP;cn_+XX*YC+=3qSsC1F z-v8~JKDdv4madm_qgCo6Z9fh~jriPhmzsib5#hrnw;G=%^>+xCm5N@7khd!?NGot7 z&ODXstx8Q+_U{8NdUU&SN#$4sT=dJN; zBOue`(DiY+Izx84w%wFAfvkCeluWWG zo1xy^vK|PqNcdQyB}y)QeKfVhE6g4@YcC86Hg4OS;v>GJ7QLKYM#Wd#6->b{81a5V z8Q<#M-9O(ED=Mn}+Ph5bf?Y(t>Dd4zCuA`l3J&G@(!0z7+HMGlFZ@AWtf{?eX+7z%@Bo9Jgx66C+xU>fP?3{d4QvQM{ZrvYIREXcmZ=yEL} zTwvZZ)%g}K_P)GKT3pH#)MIhIk+k8=FtdSLV_J-%a7*FPuO>Td;gW>wc{maKha(e1 zT2(EMbrI^iuy-*Zdu|x$H?@~gjG{J-LSir+rx9%r)C>sLZ8_?MpYt;DnqeLfkS1|P zMlW-D9oOWQ!jvWBU&3v7dskj1Bv#Q;nM|PP;aGHyXd?Mq;LWiqYn{@-e&_+;{fg8# zNeWug4RzQ%LHZq_+(^;2+6%|DNIWzBP$z7vsB z>a8h(4V1W(qW5z;mt)g0j^?sP{S5I~m_m2m=7sQIKNNY;wG+eJu!DP4-5hsQ@r`Vx zeqSr+r?gdrQ)76kBQy~~T3-TVC6}VJfcZ8Zou}3|%H3=t4V?l+)uzO|{d%r>Dqb`P zo#v+7Rj@d~kd0}hU~s4e*#l-vho4NUHd4iWhpF7>oWf{K@m|fVaXEKgMb2Mx3w9z3 zTwIjzKwsq-iY@5_KE9Q9YD`0bly-m#P>Ig>U}i&#X`R0xQU z7nO8YX(PvBQ)?EKyMu$cEC3?iP87PDWL{^ETxlxSC4nPkl({5q;6se>e z+Yrcvq1|qd+v*f|xg_XTO)iRh&LD9YRwWaB9T;FnW4S}NGw{PfBL&?Hm!R~GeGR_; zd?}ms`ghKi5#N7_wvJK4s3>OgpUVs4rlZmgLw`C(lC9x0kROl^{U%ice9vs0>r%2$ zL13JD1K(}(8yOG(H9Y~$skEyCiX87WIDJ3cw%%RB>}60& z53{9R3cY6F$D6mA1%$b7I5Uh~L3M$#jWiY~0_!5WJIr_q5w0fx)y5@9AdMgOWh~P_ zXG3$;*Wxzcd-Gap{S5^Cxs{)r^s@lKASf^|#E2 z34x5|J1;zglddq-eQhjo9?@?z(-Kb)2W=S?T67_60ohK-P&DF4R^p+NTpZLDuUDYm zx`-l1zHxXK9C6X*jM&HJaEK)2C6aW7sly{a=XO2GfDBmxz7~JP#+^YN z4FvQx&y57hMCp-yAgEhJXOKTWOI56UrXbZRbbJu6d9ycjwE;(D%k2MbjMc>iG9 z+(}{A%qzUp^3HH=f{e`1Z2$ar5z{NWFOu%^gPjv~cTijxo@-t+grkNS`5qd;`~(Ns z`b>sf9USZ;N;w!g+fJj?(Lk#Tl6Z&u0{}ov>XW(kFsPZ<_|ON%E(>4aG9$OE?| zKcT!9mngs3y?ZLSA#IyW=Ie*jo+37a4LDQjdQFriuX(%lJ9gp3)kxll9CIvE9|?%~ zP{<;Lb*n|5V6*IUq7m;VF+R38d?_|SuG`dDlSzCLWWYlq1x^x2sVE2x{pKK$gXjtf zEHp=A9cwB_rY|<_pTi9`wMc}PruSHK-Oztpk2%M&(HBSaP_z8UULWujoBUGSQ3mVC zrp{;Bk++K=)m^n7All`+noNV}p*`hi(vq-T0)P7H24vdNkAKP{xj4lcuJOL#JYr}MgrX! zBeBj51ZWooZv@3|FA_5#36!fL4rK;~vLE}Gwzprmm_0DOWXRJf_tfc(Wimb@5S5Pr z}BKkeNt}16Zv_1Ckk7-XciyoSDr5T-j z0t46nF~Z~XEoVdZ^+xA~6|5oEkz!xx)zHgNJgu$G|M1>kTW=E%& zXh~F$H@%;hzL{8_7{Pu<36M|(0iG*K5M~XwPYR(X1RZ4bAZk48JyZ?b>dosSaP5@D;Baw{er4TaA7d zowKQ zZ+1iV+zMTeOrENj@N%mDEG?d9NIUJ!a0mrF3Cze++ej9QP?_rjyF&km-8(v?<&qh% z8w)b6o#$qkPAa*K!ituX*_=gL@kC%o8mr~yPX#Uy%bLroET_5kZxq*yFNVQz;MeGy zfSuaUp;CCq#F9|`kur}`1sj$5z)uUl-kolOD&VZ*?-wRV&}=Qr6fsgCHZJr!@DO5! z^f`qpTz}5%BN17R7s7TElk;-fk2>HYztn8<=1ESSDxreq8AZCkX02vF_p=Sxn!R`# zxxG7q7C-@kFB{3#A_5b>AiOq^M;S56-n{GjHtJ) z6G8%6$6^738SOIXZ^W^@(9Usg{^1v|kua1h z@TzaopmtC6J?f3dP1*sCWv+1NxMCT_3UpmNV*4Q(-pH!jju}WK0&hBWj$$;XkY8@S z!8akVp5i6&?sf)SNWjfHaEMybrlu&D0y#$Yr!Tk0Vzwp|d{F0w|t@JPqtVaUhdD?FFP|W`993^&}438w{{wp%6+ulz|3# zU{w3ZkWII8c*hisnQC8KV1CVYY&aQE4m^jyL&Qz&-3O1iHNoTN848M4e$^|SXUx|W zvYvGdjR||jQKG0n&`yXMk7dPf^*fzlhQl!Jq4snu%WiJ}ljBhwS2sUbD$~bz5)Gf4 z4pEa}c0^C}m%pINQt%0=EE`0#4h^%IvTFNW07e&)ks zn?|puYDXCrRH&K-wW2B!i|L}0Kt~)}khBLSB){(>@9LmiF5v;9H`j zzfe=%jF)h@E*xKONMlhZKb{Y@BN!F#6yeQgEUL-AH@3X3MAjdUHMM@9zN^QUY7nuW ze-DJ~?+=MdZlQz!LRQM|ykAU?`3tI)a^(}f^}#~10i(s0YN>E2WSM;n-;cy!U-h)rUCxG zt7JE+ae>HV-p~zk>9I?;8Ka{n4MPV2XS)A*)f{xXmv#}|x_27gnOv33_u&+6l>Cey zw=48PPKbNC8Scx}N!F$H zAOJx3oI^m1fLyGp2=QAAxms(zl?jB~qe2g*a|@Re6NSPC$f5Nb+r^nI@V_7u0OL;S zlkArfQG$b&gqN42aK>!Y3j3Bi9afFkc{Dn#l~QNJhvoX5Jf&a70dm}0j$LN_2O^YE z_?jZHI21L{Jy|W40i!;jU%y{#lWFvBDN*G7k#|qq2QPChw}XB#m7eryaUlv&g+ilf z;(GY*d-!Hr5zMVf$L;bb=j)~OI$Yfc-TW6PBhFyhZ}Pli!1EEENdY*>42D?QLP{lY z$yPgOX1SEWO11WR8I`I>M~7aoUHOnyAe*^*Fa$4gC5T}$5!Qu0QF`Y4rd%gg#-W4p|T$Im#3<(+PVw@>1dDcqyP7+Cx! z`-i+IK4NUmNl{;Umn@XHj4vx~jMVkc2!2A2NVcP+MbD9LEsB7bYG1h-eNFt_x!NI6 ztH0CHl-9G*v9B!M{VKhc0R)1xkbv>uG6be}E0LqvCL@9rCfhONtM=&Z>@4fMTv0s+}c23KSzd>CAi$Og1vJu`mdjlc-7@xvM5{ z!JECin=H*hFSXV8U(2ljOZ6Ya&z4&lKOa1-yM}nTtfS%dw+c>RUgnQe-8kqFn8KB` zHMl@5Pm)Sg>;J@IlEju1+WOolIV^4=8g}B4&0l^oB1`;$&NuL^NjGNQYWV7xU}*PoC4R1bHi7Qr%V8x{#!a+B8LfLX*UX zC|Mo?h^d;tpc6|s=&%F`aUFo_Ch9(qNvUMmHk?oXcl>=7+gOLxRKX^>9vl$<5Na_5 z)Mk7eoby)`!;%cRO+%p8+DPh7b@U)sf`3N%8c>G(=#Xq`AejywfKa&8F@oI~Alon_ z1ncsO_^T^gRlF1_?2WzPX^i^hzLHcYHi0gHMkCJwv#P9Ht-u||%umZEvdXdDKIgA8 z=6N0Hk~Ro6CS&{j=K%iWK##)Bv9y*-U?rLm+P7{QVI&wE<7fPvP4&N&yw>bXX2)d3-H}6WxjpuOr11t_2dO-d2u0^VXo` zR(C9diF|!SqK;pr z43~W>{TTd5Z0jt-q`|zXa68x`r@G* SgpZq|B0pwE!ISVY9wvrkKOjE+PAt{ec5 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∓Q$_FZ(TwlG{xWZg)AlNCW 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

N^!C}l1-a4d$H#Aw=^%vZ+G<<)2wq)y1nEM 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 R{CDrjKl5|{?@gM`{Vyvfu1o*` literal 297738 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 diff --git a/preprocess/README.org b/preprocess/README.org index d0f3c5c..4a0ffb7 100644 --- a/preprocess/README.org +++ b/preprocess/README.org @@ -10,7 +10,7 @@ usage: python cli.py [-h] [-t STEP_TAG] [-s SUFFIX] DATASET_TYPE FILE positional arguments: - DATASET_TYPE Which dataset FILE is (prm800k, math-aps, math-aps-tree, or math-shepherd) + DATASET_TYPE Which dataset FILE is (prm800k, math-aps, or math-shepherd) FILE Path to the original dataset file options: @@ -22,14 +22,9 @@ options: #+end_example Note that if you directly pass ~"\n\n"~ to ~--step-tag~, the script receive ~"\\n\\n"~ instead of two -newlines. Several solutions are suggested in [[https://stackoverflow.com/a/50642130][this answer]], but none worked for me. Also be cautious -about using step tags that contain non-ascii characters when preprocessing Math-APS datasets, -because for now this script drops any rationale that contains non-ascii characters, even if it is -only the step tag that contains them. You are welcome to open an issue or pull request to make an -improvement. +newlines. Several solutions are suggested in [[https://stackoverflow.com/a/50642130][this answer]], but none worked for me. ** Datasets - PRM800K: [[https://github.com/openai/prm800k][GitHub repo]] -- Math-APS: collected by ~data/omegaPRM_v2/~ with ~save_data_tree=False~ -- Math-APS-tree: collected by ~data/omegaPRM_v2/~ with ~save_data_tree=True~ +- Math-APS: collected by ~data/gen_data.py~ - Math-Shepherd: [[https://huggingface.co/datasets/peiyi9979/Math-Shepherd][Hugging Face dataset]] diff --git a/preprocess/cli.py b/preprocess/cli.py index eda003d..e013bc9 100644 --- a/preprocess/cli.py +++ b/preprocess/cli.py @@ -3,92 +3,89 @@ from typing import NamedTuple from src.preprocessors.base import PreprocessorBase -from src.preprocessors.math_aps import (MathAPSPreprocessor, - MathAPSTreePreprocessor) +from src.preprocessors.math_aps import MathAPSPreprocessor from src.preprocessors.math_shepherd import MathShepherdPreprocessor from src.preprocessors.prm800k import PRM800KPreprocessor class Args(NamedTuple): - """ - Stores cli arguments. + """ + Stores cli arguments. - Attributes: - dataset_type: One of prm800k, math-aps, math-aps-tree, and math-shepherd - file: Path to the original dataset - step_tag: Step tag to be appended to each step - suffix: Suffix to be appended to `file` for the output path - add_step_prefix: Prepend 'Step i: ' to each step for PRM800K - neutral_is_bad: Treat `neutral` as negative labels for PRM800K - """ - - dataset_type: str - file: Path - step_tag: str - suffix: str = "new" - add_step_prefix: bool | None = None - neutral_is_bad: bool | None = None + Attributes: + dataset_type: One of prm800k, math-aps, and math-shepherd + file: Path to the original dataset + step_tag: Step tag to be appended to each step + suffix: Suffix to be appended to `file` for the output path + add_step_prefix: Prepend 'Step i: ' to each step for PRM800K + neutral_is_bad: Treat `neutral` as negative labels for PRM800K + """ + dataset_type: str + file: Path + step_tag: str + suffix: str = 'new' + add_step_prefix: bool | None = None + neutral_is_bad: bool | None = None def parse_args() -> Args: - parser = argparse.ArgumentParser() - parser.add_argument( - "dataset_type", - type=str, - help="Which dataset FILE is (prm800k, math-aps, math-aps-tree, or math-shepherd)", - ) - parser.add_argument( - "file", - type=Path, - help="Path to the original dataset file", - ) - parser.add_argument( - "-t", - "--step-tag", - type=str, - help=r"Step tag. Default: \n\n\n\n\n", - default="\n\n\n\n\n", - ) - parser.add_argument( - "-s", - "--suffix", - type=str, - help="Suffix appended to FILE for the output path. Default: new", - default="new", - ) - parser.add_argument( - "--add-step-prefix", - action="store_true", - help='Prepend "Step i: " to each step. PRM800K only', - ) - parser.add_argument( - "--neutral-is-bad", - action="store_true", - help="Treat `neutral` as negative labels for PRM800K. PRM800K only", - ) + parser = argparse.ArgumentParser() + parser.add_argument( + 'dataset_type', + type=str, + help='Which dataset FILE is (prm800k, math-aps, or math-shepherd)', + ) + parser.add_argument( + 'file', + type=Path, + help='Path to the original dataset file', + ) + parser.add_argument( + '-t', + '--step-tag', + type=str, + help=r"Step tag. Default: \n\n\n\n\n", + default="\n\n\n\n\n", + ) + parser.add_argument( + '-s', + '--suffix', + type=str, + help='Suffix appended to FILE for the output path. Default: new', + default='new', + ) + parser.add_argument( + '--add-step-prefix', + action='store_true', + help='Prepend "Step i: " to each step. PRM800K only', + ) + parser.add_argument( + '--neutral-is-bad', + action='store_true', + help='Treat `neutral` as negative labels for PRM800K. PRM800K only', + ) - return Args(**vars(parser.parse_args())) + return Args(**vars(parser.parse_args())) def main(args: Args) -> None: - runner_args = { - "ds_path": args.file, - "step_tag": args.step_tag, - "suffix": args.suffix, - "add_step_prefix": args.add_step_prefix, - "neutral_is_bad": args.neutral_is_bad, - } + runner_args = { + 'ds_path': args.file, + 'step_tag': args.step_tag, + 'suffix': args.suffix, + 'add_step_prefix': args.add_step_prefix, + 'neutral_is_bad': args.neutral_is_bad, + } - runner: PreprocessorBase - runner = { - "prm800k": PRM800KPreprocessor, - "math-aps": MathAPSPreprocessor, - "math-aps-tree": MathAPSTreePreprocessor, - "math-shepherd": MathShepherdPreprocessor, - }[args.dataset_type](**runner_args) - runner.convert() - runner.dump() + runner: PreprocessorBase + runner = { + 'prm800k': PRM800KPreprocessor, + 'math-aps': MathAPSPreprocessor, + 'math-shepherd': MathShepherdPreprocessor, + }[args.dataset_type](**runner_args) + runner.convert() + runner.dump() -if __name__ == "__main__": - main(parse_args()) +if __name__ == '__main__': + main(parse_args()) diff --git a/preprocess/src/data_types/__init__.py b/preprocess/src/data_types/__init__.py index 5361ee3..82ac2ce 100644 --- a/preprocess/src/data_types/__init__.py +++ b/preprocess/src/data_types/__init__.py @@ -1,4 +1,4 @@ from src.data_types.converted import ConvertedItem -from src.data_types.math_aps import MathAPSItem, MathAPSItemTree +from src.data_types.math_aps import MathAPSItem from src.data_types.math_shepherd import MathShepherdItem from src.data_types.prm800k import PRM800KItem diff --git a/preprocess/src/data_types/base.py b/preprocess/src/data_types/base.py index 716aedf..1ad2568 100644 --- a/preprocess/src/data_types/base.py +++ b/preprocess/src/data_types/base.py @@ -1,4 +1,5 @@ from abc import ABC -class OriginalItemBase(ABC): ... +class OriginalItemBase(ABC): + ... diff --git a/preprocess/src/data_types/converted.py b/preprocess/src/data_types/converted.py index c72993e..487ff71 100644 --- a/preprocess/src/data_types/converted.py +++ b/preprocess/src/data_types/converted.py @@ -6,27 +6,27 @@ @dataclass class ConvertedItem: - question: str - process: str - label: list[str] - - @staticmethod - def from_dict(obj: Any) -> "ConvertedItem": - assert isinstance(obj, dict) - - question = from_str(obj.get("question")) - process = from_str(obj.get("process")) - label = from_list(from_str, obj.get("label")) - - return ConvertedItem(question, process, label) - - def to_dict(self) -> dict: - return dict( - question=from_str(self.question), - process=from_str(self.process), - label=from_list(from_str, self.label), - ) - - def __hash__(self) -> int: - labels = " ".join(self.label) - return hash(f"{self.question} {self.process} {labels}") + question: str + process: str + label: list[str] + + @staticmethod + def from_dict(obj: Any) -> 'ConvertedItem': + assert isinstance(obj, dict) + + question = from_str(obj.get('question')) + process = from_str(obj.get('process')) + label = from_list(from_str, obj.get('label')) + + return ConvertedItem(question, process, label) + + def to_dict(self) -> dict: + return dict( + question=from_str(self.question), + process=from_str(self.process), + label=from_list(from_str, self.label), + ) + + def __hash__(self) -> int: + labels = ' '.join(self.label) + return hash(f'{self.question} {self.process} {labels}') diff --git a/preprocess/src/data_types/math_aps.py b/preprocess/src/data_types/math_aps.py index de2f484..ddfd046 100644 --- a/preprocess/src/data_types/math_aps.py +++ b/preprocess/src/data_types/math_aps.py @@ -2,106 +2,55 @@ from typing import Any from src.data_types.base import OriginalItemBase -from src.data_types.utils import (from_float, from_int, from_list, from_str, - to_dict, to_float) +from src.data_types.utils import ( + from_float, + from_list, + from_str, + to_dict, + to_float, +) @dataclass -class ReasoningStep: - solution_prefix: str - mc_value: float +class State: + rollout: str + state: str + mcs: float - @staticmethod - def from_dict(obj: Any) -> "ReasoningStep": - assert isinstance(obj, dict) + @staticmethod + def from_dict(obj: Any) -> 'State': + assert isinstance(obj, dict) - solution_prefix = from_str(obj.get("solution_prefix")) - mc_value = from_float(obj.get("mc_value")) + rollout = from_str(obj.get('rollout')) + state = from_str(obj.get('state')) + mcs = from_float(obj.get('mcs')) - return ReasoningStep(solution_prefix, mc_value) + return State(rollout, state, mcs) - def to_dict(self) -> dict: - return dict( - solution_prefix=from_str(self.solution_prefix), - mc_value=from_float(self.mc_value), - ) + def to_dict(self) -> dict: + return dict( + rollout=from_str(self.rollout), + state=from_str(self.state), + mcs=to_float(self.mcs), + ) @dataclass class MathAPSItem(OriginalItemBase): - question_id: int - question: str - final_answer: str - reasoning_steps: list[ReasoningStep] + q: str + states: list[State] - @staticmethod - def from_dict(obj: Any) -> "MathAPSItem": - assert isinstance(obj, dict) + @staticmethod + def from_dict(obj: Any) -> 'MathAPSItem': + assert isinstance(obj, dict) - question_id = from_int(obj.get("question_id")) - question = from_str(obj.get("question")) - final_answer = from_str(obj.get("final_answer")) - reasoning_steps = from_list(ReasoningStep.from_dict, obj.get("reasoning_steps")) + q = from_str(obj.get('q')) + states = from_list(State.from_dict, obj.get('states')) - return MathAPSItem(question_id, question, final_answer, reasoning_steps) + return MathAPSItem(q, states) - def to_dict(self) -> dict: - return dict( - question_id=from_int(self.question_id), - question=from_str(self.question), - final_answer=from_str(str(self.final_answer)), - reasoning_steps=from_list( - lambda x: to_dict(ReasoningStep, x), self.reasoning_steps - ), - ) - - -@dataclass -class ReasoningNode: - text: str - mc_value: float - children: list["ReasoningNode"] - - @staticmethod - def from_dict(obj: Any) -> "ReasoningNode": - assert isinstance(obj, dict) - - text = from_str(obj.get("text")) - mc_value = from_float(obj.get("mc_value")) - children = from_list(ReasoningNode.from_dict, obj.get("children")) - - return ReasoningNode(text, mc_value, children) - - def to_dict(self) -> dict: - return dict( - text=from_str(self.text), - mc_value=to_float(self.mc_value), - children=from_list(lambda x: to_dict(ReasoningNode, x), self.children), - ) - - -@dataclass -class MathAPSItemTree(OriginalItemBase): - question_id: int - question: str - final_answer: str - reasoning_steps: ReasoningNode - - @staticmethod - def from_dict(obj: Any) -> "MathAPSItemTree": - assert isinstance(obj, dict) - - question_id = from_int(obj.get("question_id")) - question = from_str(obj.get("question")) - final_answer = from_str(obj.get("final_answer")) - reasoning_steps = ReasoningNode.from_dict(obj.get("reasoning_steps")) - - return MathAPSItemTree(question_id, question, final_answer, reasoning_steps) - - def to_dict(self) -> dict: - return dict( - question_id=from_int(self.question_id), - question=from_str(self.question), - final_answer=from_str(self.final_answer), - reasoning_steps=to_dict(ReasoningNode, self.reasoning_steps), - ) + def to_dict(self) -> dict: + return dict( + q=from_str(self.q), + states=from_list(lambda x: to_dict(State, x), self.states), + ) diff --git a/preprocess/src/data_types/math_shepherd.py b/preprocess/src/data_types/math_shepherd.py index 26f37c3..4ae7157 100644 --- a/preprocess/src/data_types/math_shepherd.py +++ b/preprocess/src/data_types/math_shepherd.py @@ -7,23 +7,23 @@ @dataclass class MathShepherdItem(OriginalItemBase): - input: str - label: str - task: str + input: str + label: str + task: str - @staticmethod - def from_dict(obj: Any) -> "MathShepherdItem": - assert isinstance(obj, dict) + @staticmethod + def from_dict(obj: Any) -> 'MathShepherdItem': + assert isinstance(obj, dict) - input = from_str(obj.get("input")) - label = from_str(obj.get("label")) - task = from_str(obj.get("task")) + input = from_str(obj.get('input')) + label = from_str(obj.get('label')) + task = from_str(obj.get('task')) - return MathShepherdItem(input, label, task) + return MathShepherdItem(input, label, task) - def to_dict(self) -> dict: - return dict( - input=from_str(self.input), - label=from_str(self.label), - task=from_str(self.task), - ) + def to_dict(self) -> dict: + return dict( + input=from_str(self.input), + label=from_str(self.label), + task=from_str(self.task), + ) diff --git a/preprocess/src/data_types/prm800k.py b/preprocess/src/data_types/prm800k.py index 4d2ab8b..714943d 100644 --- a/preprocess/src/data_types/prm800k.py +++ b/preprocess/src/data_types/prm800k.py @@ -18,193 +18,174 @@ @dataclass class Completion: - text: str - rating: int | None = None - flagged: bool | None = None - source: str | None = None + text: str + rating: int | None = None + flagged: bool | None = None + source: str | None = None - @staticmethod - def from_dict(obj: Any) -> "Completion": - assert isinstance(obj, dict) + @staticmethod + def from_dict(obj: Any) -> 'Completion': + assert isinstance(obj, dict) - text = from_str(obj.get("text")) - rating = from_optional(from_int, obj.get("rating")) - flagged = from_optional(from_bool, obj.get("flagged")) - source = from_optional(from_str, obj.get("source")) + text = from_str(obj.get('text')) + rating = from_optional(from_int, obj.get('rating')) + flagged = from_optional(from_bool, obj.get('flagged')) + source = from_optional(from_str, obj.get('source')) - return Completion(text, rating, flagged, source) + return Completion(text, rating, flagged, source) - def to_dict(self) -> dict: - res = dict( - text=from_str(self.text), - rating=from_optional(from_int, self.rating), - flagged=from_optional(from_bool, self.flagged), - ) - if self.source is not None: - res["source"] = from_optional(from_str, self.source) + def to_dict(self) -> dict: + res = dict( + text=from_str(self.text), + rating=from_optional(from_int, self.rating), + flagged=from_optional(from_bool, self.flagged), + ) + if self.source is not None: + res['source'] = from_optional(from_str, self.source) - return res + return res @dataclass class Step: - completions: list[Completion] | None = None - human_completion: Completion | None = None - chosen_completion: int | None = None - - @staticmethod - def from_dict(obj: Any) -> "Step": - assert isinstance(obj, dict) - - completions = from_optional( - lambda x: from_list(Completion.from_dict, x), obj.get("completions") - ) - human_completion = from_optional( - Completion.from_dict, obj.get("human_completion") - ) - chosen_completion = from_optional(from_int, obj.get("chosen_completion")) - - return Step(completions, human_completion, chosen_completion) - - def to_dict(self) -> dict: - return dict( - completions=from_optional( - lambda x: from_list(lambda x: to_dict(Completion, x), x), - self.completions, - ), - human_completion=from_optional( - lambda x: to_dict(Completion, x), self.human_completion - ), - chosen_completion=from_optional(from_int, self.chosen_completion), - ) + completions: list[Completion] | None = None + human_completion: Completion | None = None + chosen_completion: int | None = None + + @staticmethod + def from_dict(obj: Any) -> 'Step': + assert isinstance(obj, dict) + + completions = from_optional(lambda x: from_list(Completion.from_dict, x), + obj.get('completions')) + human_completion = from_optional(Completion.from_dict, + obj.get('human_completion')) + chosen_completion = from_optional(from_int, obj.get('chosen_completion')) + + return Step(completions, human_completion, chosen_completion) + + def to_dict(self) -> dict: + return dict( + completions=from_optional( + lambda x: from_list(lambda x: to_dict(Completion, x), x), + self.completions), + human_completion=from_optional(lambda x: to_dict(Completion, x), + self.human_completion), + chosen_completion=from_optional(from_int, self.chosen_completion), + ) @dataclass class Label: - steps: list[Step] - total_time: int - finish_reason: str + steps: list[Step] + total_time: int + finish_reason: str - @staticmethod - def from_dict(obj: Any) -> "Label": - assert isinstance(obj, dict) + @staticmethod + def from_dict(obj: Any) -> 'Label': + assert isinstance(obj, dict) - steps = from_list(Step.from_dict, obj.get("steps")) - total_time = from_int(obj.get("total_time")) - finish_reason = from_str(obj.get("finish_reason")) + steps = from_list(Step.from_dict, obj.get('steps')) + total_time = from_int(obj.get('total_time')) + finish_reason = from_str(obj.get('finish_reason')) - return Label(steps, total_time, finish_reason) + return Label(steps, total_time, finish_reason) - def to_dict(self) -> dict: - return dict( - steps=from_list(lambda x: to_dict(Step, x), self.steps), - total_time=from_int(self.total_time), - finish_reason=from_str(self.finish_reason), - ) + def to_dict(self) -> dict: + return dict( + steps=from_list(lambda x: to_dict(Step, x), self.steps), + total_time=from_int(self.total_time), + finish_reason=from_str(self.finish_reason), + ) @dataclass class Question: - problem: str - ground_truth_answer: str | None = None - ground_truth_solution: str | None = None - pre_generated_steps: list[str] | None = None - pre_generated_answer: str | None = None - pre_generated_verifier_score: float | None = None - - @staticmethod - def from_dict(obj: Any) -> "Question": - assert isinstance(obj, dict) - - problem = from_str(obj.get("problem")) - ground_truth_answer = from_optional(from_str, obj.get("ground_truth_answer")) - ground_truth_solution = from_optional( - from_str, obj.get("ground_truth_solution") - ) - pre_generated_steps = from_optional( - lambda x: from_list(from_str, x), obj.get("pre_generated_steps") - ) - pre_generated_answer = from_optional(from_str, obj.get("pre_generated_answer")) - pre_generated_verifier_score = from_optional( - from_float, obj.get("pre_generated_verifier_score") - ) - - return Question( - problem, - ground_truth_answer, - ground_truth_solution, - pre_generated_steps, - pre_generated_answer, - pre_generated_verifier_score, - ) - - def to_dict(self) -> dict: - res: dict - res = dict( - problem=from_str(self.problem), - ground_truth_answer=from_optional(from_str, self.ground_truth_answer), - ) - if self.ground_truth_solution is not None: - res["ground_truth_solution"] = from_optional( - from_str, self.ground_truth_solution - ) - if self.pre_generated_steps is not None: - res["pre_generated_steps"] = from_optional( - lambda x: from_list(from_str, x), self.pre_generated_steps - ) - if self.pre_generated_answer is not None: - res["pre_generated_answer"] = from_optional( - from_str, self.pre_generated_answer - ) - if self.pre_generated_verifier_score is not None: - res["pre_generated_verifier_score"] = from_optional( - from_float, self.pre_generated_verifier_score - ) - - return res + problem: str + ground_truth_answer: str | None = None + ground_truth_solution: str | None = None + pre_generated_steps: list[str] | None = None + pre_generated_answer: str | None = None + pre_generated_verifier_score: float | None = None + + @staticmethod + def from_dict(obj: Any) -> 'Question': + assert isinstance(obj, dict) + + problem = from_str(obj.get('problem')) + ground_truth_answer = from_optional(from_str, + obj.get('ground_truth_answer')) + ground_truth_solution = from_optional(from_str, + obj.get('ground_truth_solution')) + pre_generated_steps = from_optional(lambda x: from_list(from_str, x), + obj.get('pre_generated_steps')) + pre_generated_answer = from_optional(from_str, + obj.get('pre_generated_answer')) + pre_generated_verifier_score = from_optional( + from_float, obj.get('pre_generated_verifier_score')) + + return Question(problem, ground_truth_answer, ground_truth_solution, + pre_generated_steps, pre_generated_answer, + pre_generated_verifier_score) + + def to_dict(self) -> dict: + res: dict + res = dict( + problem=from_str(self.problem), + ground_truth_answer=from_optional(from_str, self.ground_truth_answer), + ) + if self.ground_truth_solution is not None: + res['ground_truth_solution'] = from_optional(from_str, + self.ground_truth_solution) + if self.pre_generated_steps is not None: + res['pre_generated_steps'] = from_optional( + lambda x: from_list(from_str, x), self.pre_generated_steps) + if self.pre_generated_answer is not None: + res['pre_generated_answer'] = from_optional(from_str, + self.pre_generated_answer) + if self.pre_generated_verifier_score is not None: + res['pre_generated_verifier_score'] = from_optional( + from_float, self.pre_generated_verifier_score) + + return res @dataclass class PRM800KItem(OriginalItemBase): - labeler: UUID - timestamp: datetime - is_quality_control_question: bool - is_initial_screening_question: bool - question: Question - label: Label - generation: int | None = None - - @staticmethod - def from_dict(obj: Any) -> "PRM800KItem": - assert isinstance(obj, dict) - - labeler = UUID(obj.get("labeler")) - timestamp = from_datetime(obj.get("timestamp")) - is_quality_control_question = from_bool(obj.get("is_quality_control_question")) - is_initial_screening_question = from_bool( - obj.get("is_initial_screening_question") - ) - question = Question.from_dict(obj.get("question")) - label = Label.from_dict(obj.get("label")) - generation = from_optional(from_int, obj.get("generation")) - - return PRM800KItem( - labeler, - timestamp, - is_quality_control_question, - is_initial_screening_question, - question, - label, - generation, - ) - - def to_dict(self) -> dict: - return dict( - labeler=f"{self.labeler}", - timestamp=self.timestamp.isoformat(), - is_quality_control_question=from_bool(self.is_quality_control_question), - is_initial_screening_question=from_bool(self.is_initial_screening_question), - question=to_dict(Question, self.question), - label=to_dict(Label, self.label), - generation=from_optional(from_int, self.generation), - ) + labeler: UUID + timestamp: datetime + is_quality_control_question: bool + is_initial_screening_question: bool + question: Question + label: Label + generation: int | None = None + + @staticmethod + def from_dict(obj: Any) -> 'PRM800KItem': + assert isinstance(obj, dict) + + labeler = UUID(obj.get('labeler')) + timestamp = from_datetime(obj.get('timestamp')) + is_quality_control_question = from_bool( + obj.get('is_quality_control_question')) + is_initial_screening_question = from_bool( + obj.get('is_initial_screening_question')) + question = Question.from_dict(obj.get('question')) + label = Label.from_dict(obj.get('label')) + generation = from_optional(from_int, obj.get('generation')) + + return PRM800KItem(labeler, timestamp, is_quality_control_question, + is_initial_screening_question, question, label, + generation) + + def to_dict(self) -> dict: + return dict( + labeler=f'{self.labeler}', + timestamp=self.timestamp.isoformat(), + is_quality_control_question=from_bool(self.is_quality_control_question), + is_initial_screening_question=from_bool( + self.is_initial_screening_question), + question=to_dict(Question, self.question), + label=to_dict(Label, self.label), + generation=from_optional(from_int, self.generation), + ) diff --git a/preprocess/src/data_types/utils.py b/preprocess/src/data_types/utils.py index 7deffcf..17004aa 100644 --- a/preprocess/src/data_types/utils.py +++ b/preprocess/src/data_types/utils.py @@ -1,82 +1,82 @@ from datetime import datetime from typing import Any, Callable, Type, TypeVar, cast -T = TypeVar("T") +T = TypeVar('T') def from_str(x: Any) -> str: - """Manual type check for `str`.""" - assert isinstance(x, str) - return x + """Manual type check for `str`.""" + assert isinstance(x, str) + return x def from_int(x: Any) -> int: - """ - Manual type check for `int`. + """ + Manual type check for `int`. - `isinstance` treats `bool` as `int`, so we need to explicitly exclude `bool`. - """ - assert isinstance(x, int) and not isinstance(x, bool) - return x + `isinstance` treats `bool` as `int`, so we need to explicitly exclude `bool`. + """ + assert isinstance(x, int) and not isinstance(x, bool) + return x def from_float(x: Any) -> float: - """ - Manual type check for `float`. + """ + Manual type check for `float`. - Include `int` (which will be casted to `float`) but exclude `bool`. - """ - assert isinstance(x, (float, int)) and not isinstance(x, bool) - return float(x) + Include `int` (which will be casted to `float`) but exclude `bool`. + """ + assert isinstance(x, (float, int)) and not isinstance(x, bool) + return float(x) def from_none(x: Any) -> Any: - """Manual type check for `None`.""" - assert x is None - return x + """Manual type check for `None`.""" + assert x is None + return x def from_datetime(x: Any) -> datetime: - return datetime.strptime(x, "%Y-%m-%dT%H:%M:%S.%f") + return datetime.strptime(x, '%Y-%m-%dT%H:%M:%S.%f') def from_list(f: Callable[[Any], T], x: Any) -> list[T]: - """ - Assert `x` is a list and call `f` on elements of `x`. + """ + Assert `x` is a list and call `f` on elements of `x`. - Can be used for type checking each element of `x`. - """ - assert isinstance(x, list) - return list(map(f, x)) + Can be used for type checking each element of `x`. + """ + assert isinstance(x, list) + return list(map(f, x)) def from_union(type_check_fn_lst: list[Callable[[Any], Any]], x: Any) -> Any: - """Assert `x` is either of the types.""" - for f in type_check_fn_lst: - try: - return f(x) - except: - pass - assert False + """Assert `x` is either of the types.""" + for f in type_check_fn_lst: + try: + return f(x) + except: + pass + assert False def from_optional(type_fn: Callable[[Any], T], x: Any) -> T | None: - """Type check for Optional type.""" - return from_union([type_fn, from_none], x) + """Type check for Optional type.""" + return from_union([type_fn, from_none], x) def from_bool(x: Any) -> bool: - """Manual type check for `bool`.""" - assert isinstance(x, bool) - return x + """Manual type check for `bool`.""" + assert isinstance(x, bool) + return x def to_float(x: Any) -> float: - assert isinstance(x, (int, float)) - return float(x) + assert isinstance(x, (int, float)) + return float(x) def to_dict(c: Type[T], x: Any) -> dict: - """Convert `x` of class `c` to dict. `c` should have the method `to_dict`.""" - assert isinstance(x, c) - return cast(Any, x).to_dict() + """Convert `x` of class `c` to dict. `c` should have the method `to_dict`.""" + assert isinstance(x, c) + return cast(Any, x).to_dict() diff --git a/preprocess/src/preprocessors/base.py b/preprocess/src/preprocessors/base.py index 8fad4cb..7b1d9e2 100644 --- a/preprocess/src/preprocessors/base.py +++ b/preprocess/src/preprocessors/base.py @@ -7,35 +7,41 @@ class PreprocessorBase(ABC): - """ - Base class for preprocessors. - - Attributes: - ds_path: Path to the original dataset file. Type: Path - output_path: Path to the preprocessed dataset file (a JSON file). Type: Path - step_tag: Step tag for the new dataset. Type: str - original_items: Items of the original data. Optional, init by _read_ds() - converted_items: Items of processed data. Optional, init by convert() - - Methods: - convert() -> None: Read the original dataset from `ds_path` and dump the - processed one to `output_path` - dump() -> None: Dump the processed dataset to `output_path`. Requires - `converted_items` to have value - """ - - def __init__(self, ds_path: str | Path, step_tag: str, suffix: str = "new") -> None: - self.ds_path: Path = Path(ds_path).resolve() - self.output_path: Path = self.ds_path.with_suffix(f".{suffix}.json") - self.step_tag: str = step_tag - self.original_items: Iterable[OriginalItemBase] | None = None - self.converted_items: list[ConvertedItem] | None = None - - @abstractmethod - def _read_ds(self) -> None: ... - - @abstractmethod - def convert(self) -> None: ... - - @abstractmethod - def dump(self) -> None: ... + """ + Base class for preprocessors. + + Attributes: + ds_path: Path to the original dataset file. Type: Path + output_path: Path to the preprocessed dataset file (a JSON file). Type: Path + step_tag: Step tag for the new dataset. Type: str + original_items: Items of the original data. Optional, init by _read_ds() + converted_items: Items of processed data. Optional, init by convert() + + Methods: + convert() -> None: Read the original dataset from `ds_path` and dump the + processed one to `output_path` + dump() -> None: Dump the processed dataset to `output_path`. Requires + `converted_items` to have value + """ + + def __init__(self, + ds_path: str | Path, + step_tag: str, + suffix: str = 'new') -> None: + self.ds_path: Path = Path(ds_path).resolve() + self.output_path: Path = self.ds_path.with_suffix(f'.{suffix}.json') + self.step_tag: str = step_tag + self.original_items: Iterable[OriginalItemBase] | None = None + self.converted_items: list[ConvertedItem] | None = None + + @abstractmethod + def _read_ds(self) -> None: + ... + + @abstractmethod + def convert(self) -> None: + ... + + @abstractmethod + def dump(self) -> None: + ... diff --git a/preprocess/src/preprocessors/math_aps.py b/preprocess/src/preprocessors/math_aps.py index 45e3778..229a6da 100644 --- a/preprocess/src/preprocessors/math_aps.py +++ b/preprocess/src/preprocessors/math_aps.py @@ -6,191 +6,107 @@ from typing import Iterable from src.data_types import ConvertedItem -from src.data_types.math_aps import (MathAPSItem, MathAPSItemTree, - ReasoningNode, ReasoningStep) +from src.data_types.math_aps import MathAPSItem, State from src.preprocessors.base import PreprocessorBase -from src.preprocessors.utils import (dump_converted_ds, read_math_aps_ds, - read_math_aps_tree_ds) +from src.preprocessors.utils import dump_converted_ds, read_math_aps_ds class MathAPSPreprocessor(PreprocessorBase): - def __init__( - self, - ds_path: str | Path, - step_tag: str, - suffix: str = "new", - **kwargs, - ) -> None: - del kwargs # for compatibility with PRM800KPreprocessor - super().__init__(ds_path, step_tag, suffix) - - def _read_ds(self) -> None: - self.original_items = read_math_aps_ds(self.ds_path) - - def convert(self) -> None: - self._read_ds() - assert self.original_items is not None - - convert_fn = ft.partial(convert_math_aps_item, step_tag=self.step_tag) - with mp.Pool(mp.cpu_count()) as p: - unflattened_items = p.map(convert_fn, self.original_items) - - self.converted_items = list( - ft.reduce( - lambda res, items: res + items, # type: ignore - unflattened_items, - [], - ) - ) - - def dump(self) -> None: - assert self.converted_items is not None - dump_converted_ds(self.output_path, list(self.converted_items)) + def __init__( + self, + ds_path: str | Path, + step_tag: str, + suffix: str = 'new', + **kwargs, + ) -> None: + del kwargs # for compatibility with PRM800KPreprocessor + super().__init__(ds_path, step_tag, suffix) -def convert_math_aps_item( - original_item: MathAPSItem, - step_tag: str, -) -> list[ConvertedItem]: - question = original_item.question - - def extract_item(reasoning_step: ReasoningStep) -> ConvertedItem: - return ConvertedItem( - question=question, - process=f"{reasoning_step.solution_prefix} {step_tag}", - label=[label_from_mc_value(reasoning_step.mc_value, 0.5)], - ) - - def filter_item(reasoning_step: ReasoningStep) -> bool: - return not ( - completion_too_short(reasoning_step.solution_prefix) - or contain_non_ascii_text(reasoning_step.solution_prefix) - ) - - extracted_items = map( - extract_item, filter(filter_item, original_item.reasoning_steps) - ) - distinct_items = set(extracted_items) - - return list(distinct_items) - - -class MathAPSTreePreprocessor(PreprocessorBase): - def __init__( - self, ds_path: str | Path, step_tag: str, suffix: str = "new", **kwargs - ) -> None: - del kwargs # for compatibility with PRM800KPreprocessor - super().__init__(ds_path, step_tag, suffix) - - def _read_ds(self) -> None: - self.original_items = read_math_aps_tree_ds(self.ds_path) - - def convert(self) -> None: - self._read_ds() - assert self.original_items is not None + def _read_ds(self) -> None: + self.original_items = read_math_aps_ds(self.ds_path) - convert_fn = ft.partial(convert_math_aps_tree_item, step_tag=self.step_tag) - with mp.Pool(mp.cpu_count()) as p: - unflattened_items = p.map(convert_fn, self.original_items) + def convert(self) -> None: + self._read_ds() + assert self.original_items is not None - self.converted_items = list( - ft.reduce( - lambda res, items: res + items, # type: ignore - unflattened_items, - [], - ) - ) + convert_fn = ft.partial(convert_math_aps_item, step_tag=self.step_tag) + with mp.Pool(mp.cpu_count()) as p: + unflattened_items = p.map(convert_fn, self.original_items) - def dump(self) -> None: - assert self.converted_items is not None + self.converted_items = list( + ft.reduce( + lambda res, items: res + items, # type: ignore + unflattened_items, + [], + )) - dump_converted_ds(self.output_path, list(self.converted_items)) + def dump(self) -> None: + assert self.converted_items is not None + dump_converted_ds(self.output_path, list(self.converted_items)) -def convert_math_aps_tree_item( - original_item: MathAPSItemTree, +def convert_math_aps_item( + original_item: MathAPSItem, step_tag: str, ) -> list[ConvertedItem]: - question = original_item.question - rollouts = recover_rollouts_from_tree_node(original_item.reasoning_steps, step_tag) - - def filter_rollout(rollout: tuple[str, list[str]]) -> bool: - return not contain_non_ascii_text( - rollout[0] - ) # CAUTION: step_tag maybe non-ascii - - def extract_item(rollout: tuple[str, list[str]]) -> ConvertedItem: - process, labels = rollout - return ConvertedItem(question, process, labels) - - extracted_items = map(extract_item, filter(filter_rollout, rollouts)) - distinct_items = set(extracted_items) + question = original_item.q - return list(distinct_items) - - -def recover_rollouts_from_tree_node( - node: ReasoningNode, step_tag: str -) -> list[tuple[str, list[str]]]: - label = label_from_mc_value(node.mc_value, 0.5) - if len(node.children) == 0: # leaf - return [(f"{node.text} {step_tag}", [label])] - else: - cur_step = node.text - res = [] - - for child in node.children: - for future_rollout in recover_rollouts_from_tree_node(child, step_tag): - future_steps, future_vals = future_rollout - future_vals.insert(0, label) - res.append((f"{cur_step} {step_tag} {future_steps}", future_vals)) + def extract_item(mathaps_state: State) -> ConvertedItem: + return ConvertedItem( + question=question, + process=f'{mathaps_state.state} {step_tag}', + label=['+' if mathaps_state.mcs > 0.5 else '-'], + ) - return res + def filter_item(mathaps_state: State) -> bool: + return not (completion_too_short(mathaps_state.state) or + contain_non_ascii_text(mathaps_state.state)) + extracted_items = map(extract_item, filter(filter_item, original_item.states)) + distinct_items = set(extracted_items) -def label_from_mc_value(mc_value: float, threshold: float = 0.5) -> str: - """If `mc_value` > `threshold` returns `+` otherwise `-`.""" - return "+" if mc_value > threshold else "-" + return list(distinct_items) # Sifters for cleaning Math-APS data def character_counts(string: str) -> dict[str, int]: - chars = sorted(list(set(string))) - return {c: string.count(c) for c in chars} + chars = sorted(list(set(string))) + return {c: string.count(c) for c in chars} def entropy_of_counts(counts: Iterable[int]) -> float: - total_counts = sum(counts) - dist = map(lambda x: x / total_counts, counts) - entropy = sum(map(lambda x: -x * math.log(x), dist)) + total_counts = sum(counts) + dist = map(lambda x: x / total_counts, counts) + entropy = sum(map(lambda x: -x * math.log(x), dist)) - return entropy + return entropy def entropy_of_string(string: str) -> float: - return entropy_of_counts(character_counts(string).values()) + return entropy_of_counts(character_counts(string).values()) def entropy_too_large(string: str, entropy_thres: float = 3.5) -> bool: - entropy = entropy_of_string(string) - return entropy > entropy_thres + entropy = entropy_of_string(string) + return entropy > entropy_thres def contain_non_ascii_text(string: str) -> bool: - try: - string.encode("ascii") - return False - except UnicodeEncodeError: - return True + try: + string.encode('ascii') + return False + except UnicodeEncodeError: + return True def completion_too_short(string: str, word_count_thres: int = 5) -> bool: - return len(string.split(" ")) <= word_count_thres + return len(string.split(' ')) <= word_count_thres def contains_chinese(string: str) -> bool: - # Chinese Unicode \u4e00-\u9fff - chinese_characters = re.compile(r"[\u4e00-\u9fff]") - return bool(chinese_characters.search(string)) + # Chinese Unicode \u4e00-\u9fff + chinese_characters = re.compile(r'[\u4e00-\u9fff]') + return bool(chinese_characters.search(string)) diff --git a/preprocess/src/preprocessors/math_shepherd.py b/preprocess/src/preprocessors/math_shepherd.py index 24afdd9..c586e2e 100644 --- a/preprocess/src/preprocessors/math_shepherd.py +++ b/preprocess/src/preprocessors/math_shepherd.py @@ -11,38 +11,39 @@ class MathShepherdPreprocessor(PreprocessorBase): - def __init__( - self, - ds_path: str | Path, - step_tag: str, - suffix: str = "new", - verbose: bool = False, - **kwargs, - ) -> None: - del kwargs # for compatibility with PRM800KPreprocessor - super().__init__(ds_path, step_tag, suffix) - self.verbose = verbose + def __init__( + self, + ds_path: str | Path, + step_tag: str, + suffix: str = 'new', + verbose: bool = False, + **kwargs, + ) -> None: + del kwargs # for compatibility with PRM800KPreprocessor + super().__init__(ds_path, step_tag, suffix) - def _read_ds(self) -> None: - original_items = read_math_shepherd_ds(self.ds_path) - # only look to items that contain only one 'Step 1: ' - items = filter(lambda x: x.input.count("Step 1: ") == 1, original_items) - self.original_items = list(items) + self.verbose = verbose - def convert(self) -> None: - self._read_ds() - assert self.original_items is not None + def _read_ds(self) -> None: + original_items = read_math_shepherd_ds(self.ds_path) + # only look to items that contain only one 'Step 1: ' + items = filter(lambda x: x.input.count('Step 1: ') == 1, original_items) + self.original_items = list(items) - convert_fn = ft.partial(convert_math_shepherd_item, step_tag=self.step_tag) - with mp.Pool(mp.cpu_count()) as p: - res = p.map(convert_fn, self.original_items) + def convert(self) -> None: + self._read_ds() + assert self.original_items is not None - self.converted_items = list(filter(lambda x: len(x.label) > 0, res)) + convert_fn = ft.partial(convert_math_shepherd_item, step_tag=self.step_tag) + with mp.Pool(mp.cpu_count()) as p: + res = p.map(convert_fn, self.original_items) - def dump(self) -> None: - assert self.converted_items is not None - dump_converted_ds(self.output_path, list(self.converted_items)) + self.converted_items = list(filter(lambda x: len(x.label) > 0, res)) + + def dump(self) -> None: + assert self.converted_items is not None + dump_converted_ds(self.output_path, list(self.converted_items)) def convert_math_shepherd_item( @@ -50,63 +51,67 @@ def convert_math_shepherd_item( step_tag: str, verbose: bool = False, ) -> ConvertedItem: - # no preceding 'Step i: ' and trailing \n - steps_with_tags: list[str] - steps_with_labels: list[str] + # no preceding 'Step i: ' and trailing \n + steps_with_tags: list[str] + steps_with_labels: list[str] - question, steps_with_tags = split_question_and_rationale(original_item.input) - _, steps_with_labels = split_question_and_rationale(original_item.label) + question, steps_with_tags = split_question_and_rationale(original_item.input) + _, steps_with_labels = split_question_and_rationale(original_item.label) - steps: list[str] = remove_step_tag_of_math_shepherd(steps_with_tags) - labels: list[str] = extract_labels_of_math_shepherd(steps_with_labels) + steps: list[str] = remove_step_tag_of_math_shepherd(steps_with_tags) + labels: list[str] = extract_labels_of_math_shepherd(steps_with_labels) - if "" in labels: # some step isn't labelled nor have step tag - if verbose: - print( - "\x1b[1;31mWARNING\x1b[0m Lack of step tag detected! " - "Will be removed.\n" - f"{original_item}", - file=sys.stderr, - ) - return ConvertedItem("", "", []) + if '' in labels: # some step isn't labelled nor have step tag + if verbose: + print( + '\x1b[1;31mWARNING\x1b[0m Lack of step tag detected! ' + 'Will be removed.\n' + f'{original_item}', + file=sys.stderr, + ) + return ConvertedItem('', '', []) - assert len(steps) == len(labels), "# of extracted labels != # of steps" + assert len(steps) == len(labels), '# of extracted labels != # of steps' - rationale = f" {step_tag} ".join(steps + [""]).strip(" ") + rationale = f' {step_tag} '.join(steps + ['']).strip(' ') - assert rationale.endswith(step_tag), "Rationale not ends with step_tag!" + assert rationale.endswith(step_tag), 'Rationale not ends with step_tag!' - return ConvertedItem(question, rationale, labels) + return ConvertedItem(question, rationale, labels) def split_question_and_rationale(string: str) -> tuple[str, list[str]]: - """ - Split question and reasoning steps. + """ + Split question and reasoning steps. - First split question and rationale by 'Step 1: '. Then split reasoning steps - by 'Step i: '. - """ - question, rationale = string.split("Step 1: ") - separator = re.compile(r"Step \d*:") - # cautious about this strip when step_tag is whitespace - steps = list(map(lambda x: x.strip(), separator.sub("च", rationale).split("च"))) + First split question and rationale by 'Step 1: '. Then split reasoning steps + by 'Step i: '. + """ + question, rationale = string.split('Step 1: ') + separator = re.compile(r'Step \d*:') + # cautious about this strip when step_tag is whitespace + steps = list( + map(lambda x: x.strip(), + separator.sub('च', rationale).split('च'))) - return question.strip(), steps + return question.strip(), steps def remove_step_tag_of_math_shepherd(steps_with_tags: list[str]) -> list[str]: - def remove_trailing_tag(step: str, tag: str) -> str: - return step[: step.find(tag)].strip() - return list(map(lambda x: remove_trailing_tag(x, "ки"), steps_with_tags)) + def remove_trailing_tag(step: str, tag: str) -> str: + return step[:step.find(tag)].strip() + + return list(map(lambda x: remove_trailing_tag(x, 'ки'), steps_with_tags)) def extract_labels_of_math_shepherd(steps_with_labels: list[str]) -> list[str]: - def extract_label(step: str) -> str: - label = step.strip()[-1] - if label in ["+", "-"]: - return label - else: - return "" - - return list(map(extract_label, steps_with_labels)) + + def extract_label(step: str) -> str: + label = step.strip()[-1] + if label in ['+', '-']: + return label + else: + return '' + + return list(map(extract_label, steps_with_labels)) diff --git a/preprocess/src/preprocessors/prm800k.py b/preprocess/src/preprocessors/prm800k.py index 3a087c3..1d3537a 100644 --- a/preprocess/src/preprocessors/prm800k.py +++ b/preprocess/src/preprocessors/prm800k.py @@ -10,50 +10,46 @@ class PRM800KPreprocessor(PreprocessorBase): - def __init__( - self, - ds_path: str | Path, - step_tag: str, - suffix: str = "new", - add_step_prefix: bool | None = None, - neutral_is_bad: bool | None = None, - ) -> None: - super().__init__(ds_path, step_tag, suffix) - - self.add_step_prefix: bool = ( - add_step_prefix if add_step_prefix is not None else False - ) - self.neutral_is_bad: bool = ( - neutral_is_bad if neutral_is_bad is not None else False - ) - - def _read_ds(self) -> None: - self.original_items = read_prm800k_ds(self.ds_path) - - def convert(self) -> None: - self._read_ds() - assert self.original_items is not None - - convert_fn = ft.partial( - convert_prm800k_item, - step_tag=self.step_tag, - add_step_prefix=self.add_step_prefix, - neutral_is_good=not self.neutral_is_bad, - ) - with mp.Pool(mp.cpu_count()) as p: - unflattened_items = p.map(convert_fn, self.original_items) - - self.converted_items = list( - ft.reduce( - lambda res, items: res + items, # type: ignore - unflattened_items, - [], - ) - ) - - def dump(self) -> None: - assert self.converted_items is not None - dump_converted_ds(self.output_path, list(self.converted_items)) + + def __init__( + self, + ds_path: str | Path, + step_tag: str, + suffix: str = 'new', + add_step_prefix: bool | None = None, + neutral_is_bad: bool | None = None, + ) -> None: + super().__init__(ds_path, step_tag, suffix) + + self.add_step_prefix: bool = add_step_prefix if add_step_prefix is not None else False + self.neutral_is_bad: bool = neutral_is_bad if neutral_is_bad is not None else False + + def _read_ds(self) -> None: + self.original_items = read_prm800k_ds(self.ds_path) + + def convert(self) -> None: + self._read_ds() + assert self.original_items is not None + + convert_fn = ft.partial( + convert_prm800k_item, + step_tag=self.step_tag, + add_step_prefix=self.add_step_prefix, + neutral_is_good=not self.neutral_is_bad, + ) + with mp.Pool(mp.cpu_count()) as p: + unflattened_items = p.map(convert_fn, self.original_items) + + self.converted_items = list( + ft.reduce( + lambda res, items: res + items, # type: ignore + unflattened_items, + [], + )) + + def dump(self) -> None: + assert self.converted_items is not None + dump_converted_ds(self.output_path, list(self.converted_items)) def convert_prm800k_item( @@ -62,57 +58,55 @@ def convert_prm800k_item( add_step_prefix: bool = False, neutral_is_good: bool = True, ) -> list[ConvertedItem]: - """Convert the original dataset item to desired format. - - PRM800K may have multiple completions for a single reasoning step. For - example, a single item in the original dataset has the following steps: - - Step 1: [choice 1] - - Step 2: [choice 1, choice 2, choice 3] - - Step 3: [choice 1, choice 2] - This item will produce 1x3x2=6 converted items, each contains one possible - reasoning process that is a combination of these steps: - - Item 1: [step1-choice1, step2-choice1, step3-choice1] - - Item 2: [step1-choice1, step2-choice1, step3-choice2] - - Item 3: [step1-choice1, step2-choice2, step3-choice1], ... - - Args: - original_item: An `PRM800KItem` instance obtained by parsing a single line - of the original dataset JSON file. - neutral_is_good: Cast `neutral` label to `good` if True, `bad` otherwise. - PRM800K has three labels, while we only need binary classification. - - Returns: - A list of `ConvertedItem` that contain all combinations of reasoning steps. - """ - # Some `Step` of the original item may contain all-null `Completion`. - filtered_steps = filter( - lambda x: x.completions is not None, original_item.label.steps - ) - - processes_and_labels_for_each_step = extract_processes_and_labels_for_steps( - filtered_steps, step_tag, add_step_prefix, neutral_is_good - ) # [([str], [str])] - - saved_processes: list[str] = [""] - updated_processes: list[str] = [] - saved_labels: list[list[str]] = [[]] - updated_labels: list[list[str]] = [] - - for completions, labels in processes_and_labels_for_each_step: - for step_cache, label_cache in zip(saved_processes, saved_labels): - for completion, label in zip(completions, labels): - updated_processes.append(f"{step_cache} {completion}".strip(" ")) - updated_labels.append(label_cache + [label]) - - saved_processes, saved_labels = updated_processes, updated_labels - updated_processes, updated_labels = [], [] - - return list( - map( - lambda proc_lbl: ConvertedItem(original_item.question.problem, *proc_lbl), - zip(saved_processes, saved_labels), - ) - ) + """Convert the original dataset item to desired format. + + PRM800K may have multiple completions for a single reasoning step. For + example, a single item in the original dataset has the following steps: + - Step 1: [choice 1] + - Step 2: [choice 1, choice 2, choice 3] + - Step 3: [choice 1, choice 2] + This item will produce 1x3x2=6 converted items, each contains one possible + reasoning process that is a combination of these steps: + - Item 1: [step1-choice1, step2-choice1, step3-choice1] + - Item 2: [step1-choice1, step2-choice1, step3-choice2] + - Item 3: [step1-choice1, step2-choice2, step3-choice1], ... + + Args: + original_item: An `PRM800KItem` instance obtained by parsing a single line + of the original dataset JSON file. + neutral_is_good: Cast `neutral` label to `good` if True, `bad` otherwise. + PRM800K has three labels, while we only need binary classification. + + Returns: + A list of `ConvertedItem` that contain all combinations of reasoning steps. + """ + # Some `Step` of the original item may contain all-null `Completion`. + filtered_steps = filter(lambda x: x.completions is not None, + original_item.label.steps) + + processes_and_labels_for_each_step = extract_processes_and_labels_for_steps( + filtered_steps, step_tag, add_step_prefix, + neutral_is_good) # [([str], [str])] + + saved_processes: list[str] = [""] + updated_processes: list[str] = [] + saved_labels: list[list[str]] = [[]] + updated_labels: list[list[str]] = [] + + for completions, labels in processes_and_labels_for_each_step: + for step_cache, label_cache in zip(saved_processes, saved_labels): + for completion, label in zip(completions, labels): + updated_processes.append(f'{step_cache} {completion}'.strip(' ')) + updated_labels.append(label_cache + [label]) + + saved_processes, saved_labels = updated_processes, updated_labels + updated_processes, updated_labels = [], [] + + return list( + map( + lambda proc_lbl: ConvertedItem(original_item.question.problem, * + proc_lbl), + zip(saved_processes, saved_labels))) def extract_processes_and_labels_for_steps( @@ -121,39 +115,35 @@ def extract_processes_and_labels_for_steps( add_step_prefix: bool = False, neutral_is_good: bool = True, ) -> Iterable[tuple[list[str], list[str]]]: - """ - For each reason step, return all its contents and labels as a tuple of two - lists. - - Args: - steps: A list of `Step` instances. - neutral_is_good: Cast `neutral` label to `good` if True, otherwise `bad`. - - Returns: - Tuples of two lists, one contains all completions of this step and the other - contains corresponding labels. Each tuple corresponds to a step. - """ - steps_with_ind = enumerate(steps) # [(ind, Step)] = [(ind, [(text, rating)])] - - def deal_with_one_step(ind: int, step: Step) -> tuple[list[str], list[str]]: - assert step.completions is not None - lst_of_proc_lbl_tuple = map( - lambda completion: get_process_and_label( - ind, completion, step_tag, add_step_prefix, neutral_is_good - ), - step.completions, - ) # [(str, str)] - tuple_of_proc_lbl_lst: tuple[list[str], list[str]] = ft.reduce( - lambda res, tup: (res[0] + [tup[0]], res[1] + [tup[1]]), # type: ignore - lst_of_proc_lbl_tuple, - ([], []), - ) # ([str], [str]) - return tuple_of_proc_lbl_lst - - steps_of_proc_and_lbl = map( - lambda x: deal_with_one_step(*x), steps_with_ind - ) # [([str], [str])] - return steps_of_proc_and_lbl + """ + For each reason step, return all its contents and labels as a tuple of two + lists. + + Args: + steps: A list of `Step` instances. + neutral_is_good: Cast `neutral` label to `good` if True, otherwise `bad`. + + Returns: + Tuples of two lists, one contains all completions of this step and the other + contains corresponding labels. Each tuple corresponds to a step. + """ + steps_with_ind = enumerate(steps) # [(ind, Step)] = [(ind, [(text, rating)])] + + def deal_with_one_step(ind: int, step: Step) -> tuple[list[str], list[str]]: + assert step.completions is not None + lst_of_proc_lbl_tuple = map(lambda completion: get_process_and_label( + ind, completion, step_tag, add_step_prefix, neutral_is_good), + step.completions) # [(str, str)] + tuple_of_proc_lbl_lst: tuple[list[str], list[str]] = ft.reduce( + lambda res, tup: (res[0] + [tup[0]], res[1] + [tup[1]]), # type: ignore + lst_of_proc_lbl_tuple, + ([], []), + ) # ([str], [str]) + return tuple_of_proc_lbl_lst + + steps_of_proc_and_lbl = map(lambda x: deal_with_one_step(*x), + steps_with_ind) # [([str], [str])] + return steps_of_proc_and_lbl def get_process_and_label( @@ -163,16 +153,14 @@ def get_process_and_label( add_step_prefix: bool = False, neutral_is_good: bool = True, ) -> tuple[str, str]: - """Extract current reason step of index `ind` and corresponding label.""" - prefix = f"Step {ind + 1}: " if add_step_prefix else "" - process = f"{prefix}{completion.text} {step_tag}" - rating = ( - completion.rating if completion.rating is not None else 0 - ) # treat null rating as `neutral` - - if rating == 0: - label = "+" if neutral_is_good else "-" - else: - label = "+" if rating > 0 else "-" - - return process, label + """Extract current reason step of index `ind` and corresponding label.""" + prefix = f'Step {ind + 1}: ' if add_step_prefix else '' + process = f'{prefix}{completion.text} {step_tag}' + rating = completion.rating if completion.rating is not None else 0 # treat null rating as `neutral` + + if rating == 0: + label = '+' if neutral_is_good else '-' + else: + label = '+' if rating > 0 else '-' + + return process, label diff --git a/preprocess/src/preprocessors/utils.py b/preprocess/src/preprocessors/utils.py index e800e7d..c3dbdaf 100644 --- a/preprocess/src/preprocessors/utils.py +++ b/preprocess/src/preprocessors/utils.py @@ -2,38 +2,35 @@ from pathlib import Path from typing import Iterable -from src.data_types import (ConvertedItem, MathAPSItem, MathAPSItemTree, - MathShepherdItem, PRM800KItem) +from src.data_types import ( + ConvertedItem, + MathAPSItem, + MathShepherdItem, + PRM800KItem, +) def read_prm800k_ds(ds_path: Path) -> Iterable[PRM800KItem]: - with open(ds_path, "r", encoding="utf-8") as fd: - dict_lst = map(json.loads, fd.readlines()) + with open(ds_path, 'r', encoding='utf-8') as fd: + dict_lst = map(json.loads, fd.readlines()) - return map(PRM800KItem.from_dict, dict_lst) + return map(PRM800KItem.from_dict, dict_lst) def read_math_aps_ds(ds_path: Path) -> Iterable[MathAPSItem]: - with open(ds_path, "r", encoding="utf-8") as fd: - dict_lst = map(json.loads, fd.readlines()) + with open(ds_path, 'r', encoding='utf-8') as fd: + dict_lst = json.load(fd) - return map(MathAPSItem.from_dict, dict_lst) + return map(MathAPSItem.from_dict, dict_lst) def read_math_shepherd_ds(ds_path: Path) -> Iterable[MathShepherdItem]: - with open(ds_path, "r", encoding="utf-8") as fd: - dict_lst = map(json.loads, fd.readlines()) + with open(ds_path, 'r', encoding='utf-8') as fd: + dict_lst = map(json.loads, fd.readlines()) - return map(MathShepherdItem.from_dict, dict_lst) - - -def read_math_aps_tree_ds(ds_path: Path) -> Iterable[MathAPSItemTree]: - with open(ds_path, "r", encoding="utf-8") as fd: - dict_lst = map(json.loads, fd.readlines()) - - return map(MathAPSItemTree.from_dict, dict_lst) + return map(MathShepherdItem.from_dict, dict_lst) def dump_converted_ds(save_path: Path, items: list[ConvertedItem]) -> None: - with open(save_path, "w", encoding="utf-8") as fd: - json.dump([it.to_dict() for it in items], fd) + with open(save_path, 'w', encoding='utf-8') as fd: + json.dump([it.to_dict() for it in items], fd) diff --git a/preprocess/tests/samples_math-aps-tree.jsonl b/preprocess/tests/samples_math-aps-tree.jsonl deleted file mode 100644 index 9e10d92..0000000 --- a/preprocess/tests/samples_math-aps-tree.jsonl +++ /dev/null @@ -1,3 +0,0 @@ -{"question": "If $x+7$ is a factor of $cx^3 + 19x^2 - 3cx + 35$, find the constant $c$.", "final_answer": "3", "reasoning_steps": {"text": "If $x+7$ is a factor of $cx^3 + 19x^2 - 3cx + 35$, find the constant $c$.", "mc_value": 0.9375, "children": [{"text": "To determine the value of \\( c \\) such that \\( x+7 \\) is a factor of the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x+7 \\) is a factor of the polynomial, then substituting \\( x = -7 \\) into the polynomial should yield zero. Therefore, we substitute \\( x = -7 \\) into the polynomial and set it equal to zero:\n\n\\[\nc(-7)^3 + 19(-7)^2 - 3c(-7) + 35 = 0\n\\]\n\nNext, we simplify each term in the equation:\n\n\\[\nc(-343) + 19(49) + 21c + 35 = 0\n\\]\n\nThis simplifies to:\n\n\\[\n-343c + 931 + 21c + 35 = 0\n\\]\n\nCombining like terms, we get:\n\n\\[\n-322c + 966 = 0\n\\]\n\nTo isolate \\( c \\), we subtract 966 from both sides of the equation:\n\n\\[\n-322c = -966\n\\]\n\nThen, we divide both sides by -322:\n\n\\[\nc = \\frac{-966}{-322} = 3\n\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the value of \\( c \\) such that \\( x+7 \\) is a factor of the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x-a \\) is a factor of a polynomial \\( P(x) \\), then \\( P(a) = 0 \\). In this case, \\( x+7 \\) is a factor, so we substitute \\( x = -7 \\) into the polynomial and set it equal to zero.\n\nLet \\( P(x) = cx^3 + 19x^2 - 3cx + 35 \\). According to the Factor Theorem, we have:\n\\[\nP(-7) = c(-7)^3 + 19(-7)^2 - 3c(-7) + 35 = 0\n\\]\n\nNow, we calculate each term:\n\\[\nc(-7)^3 = c(-343) = -343c\n\\]\n\\[\n19(-7)^2 = 19(49) = 931\n\\]\n\\[\n-3c(-7) = 21c\n\\]\n\\[\n35 = 35\n\\]\n\nSubstituting these values back into the equation, we get:\n\\[\n-343c + 931 + 21c + 35 = 0\n\\]\n\nCombine like terms:\n\\[\n-322c + 966 = 0\n\\]\n\nTo isolate \\( c \\), subtract 966 from both sides of the equation:\n\\[\n-322c = -966\n\\]\n\nThen, divide both sides by -322:\n\\[\nc = \\frac{-966}{-322} = 3\n\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the value of \\( c \\) such that \\( x+7 \\) is a factor of the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x+7 \\) is a factor of the polynomial, then substituting \\( x = -7 \\) into the polynomial should yield zero.\n\nLet's substitute \\( x = -7 \\) into the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\):\n\n\\[\nc(-7)^3 + 19(-7)^2 - 3c(-7) + 35 = 0\n\\]\n\nNow, we calculate each term:\n\n\\[\nc(-343) + 19(49) - 3c(-7) + 35 = 0\n\\]\n\nSimplify each term:\n\n\\[\n-343c + 931 + 21c + 35 = 0\n\\]\n\nCombine like terms:\n\n\\[\n-322c + 966 = 0\n\\]\n\nTo isolate \\( c \\), subtract 966 from both sides of the equation:\n\n\\[\n-322c = -966\n\\]\n\nThen, divide both sides by -322:\n\n\\[\nc = \\frac{-966}{-322} = 3\n\\]\n\nThus, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the value of \\( c \\) such that \\( x+7 \\) is a factor of the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x-a \\) is a factor of a polynomial \\( f(x) \\), then \\( f(a) = 0 \\). In this problem, since \\( x+7 \\) is a factor, we substitute \\( x = -7 \\) into the polynomial and set it equal to zero.\n\nLet \\( f(x) = cx^3 + 19x^2 - 3cx + 35 \\). According to the Factor Theorem, we have:\n\\[ f(-7) = c(-7)^3 + 19(-7)^2 - 3c(-7) + 35 = 0. \\]\n\nNow, we calculate each term:\n\\[ c(-7)^3 = c(-343) = -343c, \\]\n\\[ 19(-7)^2 = 19(49) = 931, \\]\n\\[ -3c(-7) = 21c, \\]\n\\[ 35 = 35. \\]\n\nSubstituting these values back into the equation, we get:\n\\[ -343c + 931 + 21c + 35 = 0. \\]\n\nCombine like terms:\n\\[ -322c + 966 = 0. \\]\n\nTo isolate \\( c \\), subtract 966 from both sides of the equation:\n\\[ -322c = -966. \\]\n\nThen, divide both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the constant \\( c \\) such that \\( x+7 \\) is a factor of the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x+7 \\) is a factor of the polynomial, then the polynomial evaluated at \\( x = -7 \\) must equal zero.\n\nLet \\( P(x) = cx^3 + 19x^2 - 3cx + 35 \\). According to the Factor Theorem, we need to find \\( c \\) such that \\( P(-7) = 0 \\).\n\nFirst, substitute \\( x = -7 \\) into the polynomial:\n\\[\nP(-7) = c(-7)^3 + 19(-7)^2 - 3c(-7) + 35\n\\]\n\nNext, calculate each term:\n\\[\n(-7)^3 = -343 \\quad \\text{so} \\quad c(-7)^3 = c(-343) = -343c\n\\]\n\\[\n(-7)^2 = 49 \\quad \\text{so} \\quad 19(-7)^2 = 19 \\cdot 49 = 931\n\\]\n\\[\n-3c(-7) = 21c\n\\]\n\\[\n35 = 35\n\\]\n\nNow, combine all the terms:\n\\[\nP(-7) = -343c + 931 + 21c + 35\n\\]\n\nCombine the like terms:\n\\[\nP(-7) = (-343c + 21c) + (931 + 35) = -322c + 966\n\\]\n\nSet \\( P(-7) \\) equal to zero:\n\\[\n-322c + 966 = 0\n\\]\n\nSolve for \\( c \\):\n\\[\n-322c = -966\n\\]\n\\[\nc = \\frac{-966}{-322}\n\\]\n\\[\nc = 3\n\\]\n\nThus, the constant \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the value of \\( c \\) such that \\( x+7 \\) is a factor of the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x-a \\) is a factor of a polynomial \\( P(x) \\), then \\( P(a) = 0 \\). In this problem, \\( x+7 \\) is a factor, so we can set \\( x = -7 \\) and substitute it into the polynomial and set it equal to zero.\n\nLet \\( P(x) = cx^3 + 19x^2 - 3cx + 35 \\). According to the Factor Theorem, we have:\n\\[ P(-7) = c(-7)^3 + 19(-7)^2 - 3c(-7) + 35 = 0. \\]\n\nNow, we will substitute \\( x = -7 \\) into the polynomial and simplify:\n\\[ c(-7)^3 + 19(-7)^2 - 3c(-7) + 35 = c(-343) + 19(49) + 21c + 35. \\]\n\\[ -343c + 931 + 21c + 35 = 0. \\]\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\):\n\\[ -322c = -966. \\]\n\\[ c = \\frac{-966}{-322}. \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Given that \\(x+7\\) is a factor of the polynomial \\(cx^3 + 19x^2 - 3cx + 35\\), we can use the Factor Theorem. The Factor Theorem states that if \\(x+7\\) is a factor of the polynomial, then substituting \\(x = -7\\) into the polynomial should result in zero.\n\nLet's substitute \\(x = -7\\) into the polynomial \\(cx^3 + 19x^2 - 3cx + 35\\):\n\n\\[\nc(-7)^3 + 19(-7)^2 - 3c(-7) + 35 = 0\n\\]\n\nNow, calculate each term step by step:\n\n\\[\nc(-343) + 19(49) - 3c(-7) + 35 = 0\n\\]\n\n\\[\n-343c + 931 + 21c + 35 = 0\n\\]\n\nCombine like terms:\n\n\\[\n-343c + 21c + 931 + 35 = 0\n\\]\n\n\\[\n-322c + 966 = 0\n\\]\n\nTo isolate \\(c\\), subtract 966 from both sides of the equation:\n\n\\[\n-322c = -966\n\\]\n\nNow, divide both sides by -322:\n\n\\[\nc = \\frac{-966}{-322}\n\\]\n\nSimplify the fraction:\n\n\\[\nc = \\frac{966}{322} = 3\n\\]\n\nTherefore, the value of \\(c\\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Given that \\( x + 7 \\) is a factor of the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x - a \\) is a factor of a polynomial \\( f(x) \\), then \\( f(a) = 0 \\). In this problem, \\( x + 7 \\) is a factor, which means \\( x - (-7) \\) is a factor, so we substitute \\( x = -7 \\) into the polynomial and set it equal to zero.\n\nLet \\( f(x) = cx^3 + 19x^2 - 3cx + 35 \\). Then,\n\\[ f(-7) = c(-7)^3 + 19(-7)^2 - 3c(-7) + 35. \\]\nWe simplify this expression step by step:\n\\[ f(-7) = c(-343) + 19(49) + 21c + 35, \\]\n\\[ f(-7) = -343c + 931 + 21c + 35, \\]\n\\[ f(-7) = -322c + 966. \\]\nSince \\( x + 7 \\) is a factor, \\( f(-7) = 0 \\). Therefore, we set up the equation:\n\\[ -322c + 966 = 0. \\]\nWe solve for \\( c \\) by isolating the variable:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\nThus, the constant \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the constant \\( c \\) such that \\( x+7 \\) is a factor of \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x+7 \\) is a factor of a polynomial \\( P(x) \\), then \\( P(-7) = 0 \\).\n\nLet's define the polynomial \\( P(x) = cx^3 + 19x^2 - 3cx + 35 \\). According to the Factor Theorem, we need to find \\( c \\) such that \\( P(-7) = 0 \\). Substitute \\( x = -7 \\) into the polynomial:\n\n\\[\nP(-7) = c(-7)^3 + 19(-7)^2 - 3c(-7) + 35\n\\]\n\nNow, calculate each term step by step:\n\n\\[\nc(-7)^3 = c(-343) = -343c\n\\]\n\\[\n19(-7)^2 = 19(49) = 931\n\\]\n\\[\n-3c(-7) = 21c\n\\]\n\\[\n35 = 35\n\\]\n\nCombine all these terms to get \\( P(-7) \\):\n\n\\[\nP(-7) = -343c + 931 + 21c + 35\n\\]\n\nCombine the like terms:\n\n\\[\nP(-7) = -322c + 966\n\\]\n\nSince \\( x+7 \\) is a factor, \\( P(-7) = 0 \\). Therefore, we set up the equation:\n\n\\[\n-322c + 966 = 0\n\\]\n\nSolve for \\( c \\):\n\n\\[\n-322c = -966\n\\]\n\\[\nc = \\frac{-966}{-322}\n\\]\n\\[\nc = 3\n\\]\n\nThus, the constant \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the value of \\( c \\) such that \\( x+7 \\) is a factor of \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x+7 \\) is a factor of a polynomial \\( P(x) \\), then \\( P(-7) = 0 \\).\n\nLet \\( P(x) = cx^3 + 19x^2 - 3cx + 35 \\). According to the Factor Theorem, we substitute \\( x = -7 \\) into \\( P(x) \\) and set it equal to zero:\n\n\\[\nP(-7) = c(-7)^3 + 19(-7)^2 - 3c(-7) + 35 = 0\n\\]\n\nNow, we calculate each term step by step:\n\n\\[\nc(-7)^3 = c(-343) = -343c\n\\]\n\\[\n19(-7)^2 = 19(49) = 931\n\\]\n\\[\n-3c(-7) = 21c\n\\]\n\\[\n35 = 35\n\\]\n\nSubstituting these values back into the equation, we get:\n\n\\[\n-343c + 931 + 21c + 35 = 0\n\\]\n\nNext, we combine like terms:\n\n\\[\n-343c + 21c + 931 + 35 = 0\n\\]\n\\[\n-322c + 966 = 0\n\\]\n\nTo isolate \\( c \\), we subtract 966 from both sides of the equation:\n\n\\[\n-322c = -966\n\\]\n\nThen, we divide both sides by -322:\n\n\\[\nc = \\frac{-966}{-322} = 3\n\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the value of \\( c \\) such that \\( x+7 \\) is a factor of the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x+7 \\) is a factor of the polynomial, then the polynomial evaluated at \\( x = -7 \\) must equal zero. Therefore, we substitute \\( x = -7 \\) into the polynomial and set it equal to zero:\n\n\\[\nc(-7)^3 + 19(-7)^2 - 3c(-7) + 35 = 0\n\\]\n\nNext, we simplify each term in the equation:\n\n\\[\nc(-343) + 19(49) - 3c(-7) + 35 = 0\n\\]\n\nThis simplifies to:\n\n\\[\n-343c + 931 + 21c + 35 = 0\n\\]\n\nWe combine like terms:\n\n\\[\n-322c + 966 = 0\n\\]\n\nTo isolate \\( c \\), we subtract 966 from both sides of the equation:\n\n\\[\n-322c = -966\n\\]\n\nThen, we divide both sides by -322:\n\n\\[\nc = \\frac{-966}{-322} = 3\n\\]\n\nThus, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the value of \\( c \\) such that \\( x+7 \\) is a factor of the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x+7 \\) is a factor of a polynomial \\( f(x) \\), then \\( f(-7) = 0 \\).\n\nLet \\( f(x) = cx^3 + 19x^2 - 3cx + 35 \\). According to the Factor Theorem, we need to find \\( c \\) such that \\( f(-7) = 0 \\). We substitute \\( x = -7 \\) into the polynomial:\n\n\\[\nf(-7) = c(-7)^3 + 19(-7)^2 - 3c(-7) + 35\n\\]\n\nNext, we simplify each term:\n\n\\[\n(-7)^3 = -343, \\quad (-7)^2 = 49, \\quad -3c(-7) = 21c\n\\]\n\nSubstituting these values back into the polynomial, we get:\n\n\\[\nf(-7) = c(-343) + 19(49) + 21c + 35 = -343c + 931 + 21c + 35\n\\]\n\nWe combine like terms:\n\n\\[\n-343c + 21c = -322c, \\quad 931 + 35 = 966\n\\]\n\nSo, the equation simplifies to:\n\n\\[\nf(-7) = -322c + 966\n\\]\n\nSince \\( x+7 \\) is a factor, \\( f(-7) = 0 \\):\n\n\\[\n-322c + 966 = 0\n\\]\n\nWe solve for \\( c \\) by isolating it on one side of the equation:\n\n\\[\n-322c = -966\n\\]\n\\[\nc = \\frac{-966}{-322}\n\\]\n\\[\nc = 3\n\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Given that \\( x+7 \\) is a factor of the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x+7 \\) is a factor, then \\( f(-7) = 0 \\) for the polynomial \\( f(x) = cx^3 + 19x^2 - 3cx + 35 \\).\n\nFirst, substitute \\( x = -7 \\) into the polynomial:\n\\[\nf(-7) = c(-7)^3 + 19(-7)^2 - 3c(-7) + 35\n\\]\n\nCalculate each term:\n\\[\n(-7)^3 = -343 \\quad \\Rightarrow \\quad c(-343) = -343c\n\\]\n\\[\n(-7)^2 = 49 \\quad \\Rightarrow \\quad 19(49) = 931\n\\]\n\\[\n-3c(-7) = 21c\n\\]\n\nSubstitute these values back into the polynomial:\n\\[\nf(-7) = -343c + 931 + 21c + 35\n\\]\n\nCombine like terms:\n\\[\n-343c + 21c = -322c\n\\]\n\\[\n931 + 35 = 966\n\\]\n\nSo, the equation becomes:\n\\[\nf(-7) = -322c + 966\n\\]\n\nSince \\( x+7 \\) is a factor, \\( f(-7) = 0 \\):\n\\[\n-322c + 966 = 0\n\\]\n\nSolve for \\( c \\):\n\\[\n-322c = -966\n\\]\n\\[\nc = \\frac{966}{322}\n\\]\n\\[\nc = 3\n\\]\n\nThus, the constant \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the value of \\( c \\) such that \\( x+7 \\) is a factor of the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x-a \\) is a factor of a polynomial \\( P(x) \\), then \\( P(a) = 0 \\). In this problem, \\( x+7 \\) is a factor, so we set \\( a = -7 \\) and substitute \\( -7 \\) into the polynomial:\n\n\\[\nP(x) = cx^3 + 19x^2 - 3cx + 35\n\\]\n\\[\nP(-7) = c(-7)^3 + 19(-7)^2 - 3c(-7) + 35\n\\]\n\nNext, we calculate each term individually:\n\n\\[\nc(-7)^3 = c(-343) = -343c\n\\]\n\\[\n19(-7)^2 = 19(49) = 931\n\\]\n\\[\n-3c(-7) = 21c\n\\]\n\\[\n35 = 35\n\\]\n\nNow, we substitute these values back into the expression for \\( P(-7) \\):\n\n\\[\nP(-7) = -343c + 931 + 21c + 35\n\\]\n\nCombine like terms:\n\n\\[\nP(-7) = -322c + 966\n\\]\n\nSince \\( x+7 \\) is a factor, \\( P(-7) \\) must equal 0:\n\n\\[\n-322c + 966 = 0\n\\]\n\nTo solve for \\( c \\), we isolate \\( c \\) by first subtracting 966 from both sides of the equation:\n\n\\[\n-322c = -966\n\\]\n\nThen, we divide both sides by -322:\n\n\\[\nc = \\frac{-966}{-322} = 3\n\\]\n\nThus, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the value of \\( c \\) such that \\( x+7 \\) is a factor of the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x+7 \\) is a factor of a polynomial \\( P(x) \\), then \\( P(-7) = 0 \\).\n\nLet \\( P(x) = cx^3 + 19x^2 - 3cx + 35 \\). According to the Factor Theorem, we need to find \\( c \\) such that \\( P(-7) = 0 \\). Substitute \\( x = -7 \\) into the polynomial:\n\n\\[\nP(-7) = c(-7)^3 + 19(-7)^2 - 3c(-7) + 35\n\\]\n\nCalculate each term step by step:\n\n\\[\nc(-7)^3 = c(-343) = -343c\n\\]\n\\[\n19(-7)^2 = 19(49) = 931\n\\]\n\\[\n-3c(-7) = 21c\n\\]\n\\[\n35 = 35\n\\]\n\nNow, substitute these values back into the expression for \\( P(-7) \\):\n\n\\[\nP(-7) = -343c + 931 + 21c + 35\n\\]\n\nCombine like terms:\n\n\\[\nP(-7) = (-343c + 21c) + (931 + 35) = -322c + 966\n\\]\n\nSince \\( x+7 \\) is a factor, \\( P(-7) = 0 \\). Therefore, we set up the equation:\n\n\\[\n-322c + 966 = 0\n\\]\n\nSolve for \\( c \\):\n\n\\[\n-322c = -966\n\\]\n\\[\nc = \\frac{-966}{-322} = 3\n\\]\n\nThus, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the value of \\( c \\) such that \\( x+7 \\) is a factor of the polynomial \\( cx^3 + 19x^2 - 3cx + 35 \\), we can use the Factor Theorem. The Factor Theorem states that if \\( x+7 \\) is a factor of the polynomial, then the polynomial evaluated at \\( x = -7 \\) must equal zero.\n\nLet \\( f(x) = cx^3 + 19x^2 - 3cx + 35 \\). According to the Factor Theorem, we have:\n\\[ f(-7) = 0. \\]\n\nSubstituting \\( x = -7 \\) into the polynomial, we get:\n\\[ c(-7)^3 + 19(-7)^2 - 3c(-7) + 35 = 0. \\]\n\nNow, we will simplify this expression step by step:\n\\[ c(-343) + 19(49) + 21c + 35 = 0, \\]\n\\[ -343c + 931 + 21c + 35 = 0. \\]", "mc_value": 0.96875, "children": [{"text": "Combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we isolate \\( c \\) by subtracting 966 from both sides of the equation:\n\\[ -322c = -966. \\]\n\nThen, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combine like terms:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\):\n\\[ -322c = -966, \\]\n\\[ c = \\frac{966}{322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we isolate \\( c \\) by subtracting 966 from both sides of the equation:\n\\[ -322c = -966. \\]\n\nThen, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combine the like terms:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nTo isolate \\( c \\), we subtract 966 from both sides of the equation:\n\\[ -322c = -966. \\]\n\nNext, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combine like terms:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\):\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combine like terms:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\):\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nTo isolate \\( c \\), we subtract 966 from both sides of the equation:\n\\[ -322c = -966. \\]\n\nNext, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combine like terms:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\):\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combine the like terms:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\):\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combine the like terms:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\):\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combine like terms:\n\\[ -322c + 966 = 0. \\]\n\nNext, we isolate \\( c \\) by subtracting 966 from both sides of the equation:\n\\[ -322c = -966. \\]\n\nThen, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\):\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combine the like terms:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\):\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating the variable:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combine like terms:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combine the like terms:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\):\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\):\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we solve for \\( c \\) by isolating it on one side of the equation:\n\\[ -322c = -966, \\]\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nTo isolate \\( c \\), we subtract 966 from both sides of the equation:\n\\[ -322c = -966. \\]\n\nNext, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nTo isolate \\( c \\), we subtract 966 from both sides of the equation:\n\\[ -322c = -966. \\]", "mc_value": 0.78125, "children": [{"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "\\]\n\nThen, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "\\]\n\nNext, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "'\n\nNext, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "()\n\nNext, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "'\n\nThen, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "]\n\nNext, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "]\n\nNext, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Next, we divide both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]", "mc_value": 0.5625, "children": [{"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "**\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "}\n\nThus, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "**\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "}\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is:\n\\[ \\boxed{3}. \\]", "mc_value": 0.0, "children": []}]}]}, {"text": "Combining like terms, we get:\n\\[ -322c + 966 = 0. \\]\n\nNext, we isolate \\( c \\) by subtracting 966 from both sides of the equation:\n\\[ -322c = -966. \\]", "mc_value": 0.78125, "children": [{"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "()\n\nThen, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "}\n\nThen, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "**\n\nThen, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "**\n\nThen, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "\\]\n\nThen, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "**\n\nThen, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "**\n\nThen, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "`\n\nThen, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "()\n\nThen, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322}, \\]\n\\[ c = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "**\n\nThen, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Then, we solve for \\( c \\) by dividing both sides by -322:\n\\[ c = \\frac{-966}{-322} = 3. \\]", "mc_value": 0.65625, "children": [{"text": "}\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "**\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "}\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "}\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "\\]\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "**\n\nTherefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is \\(\\boxed{3}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the value of \\( c \\) is:\n\\[ \\boxed{3}. \\]", "mc_value": 0.0, "children": []}]}]}]}]}, "question_id": 0} -{"question": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$", "final_answer": "64", "reasoning_steps": {"text": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$", "mc_value": 0.75, "children": [{"text": "To solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\), we start by analyzing the given conditions: the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This can be rewritten as \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at these roots and at \\(x = c\\) (where the expression is undefined).\n\nGiven the intervals where the inequality holds, we can infer the following:\n1. The roots \\(a\\) and \\(b\\) must be at \\(x = 24\\) and \\(x = 26\\) because the inequality is zero at these points.\n2. The value \\(c\\) must be at \\(x = -4\\) because the inequality is undefined at this point.\n\nSince \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). Therefore, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given conditions.\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "To solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\) given that the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we start by analyzing the conditions provided.\n\nThe inequality \\(|x-25| \\le 1\\) can be rewritten as:\n\\[24 \\le x \\le 26.\\]\nThis means that the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) is true for \\(x < -4\\) and \\(24 \\le x \\le 26\\). The roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nGiven that the inequality is true for \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can infer that the roots \\(a\\) and \\(b\\) must be at \\(x = 24\\) and \\(x = 26\\) (with \\(a < b\\)), and the root \\(c\\) must be at \\(x = -4\\) (where the inequality is undefined and changes sign). Therefore, we have:\n\\[a = 24, \\quad b = 26, \\quad c = -4.\\]\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[a + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "To solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\), we need to analyze the intervals where the expression is non-positive. The given condition is that the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means that the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The expression \\(\\frac{(x-a)(x-b)}{x-c}\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "To solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\) given that the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we need to analyze the critical points and the intervals where the inequality holds.\n\nFirst, let's rewrite the inequality \\(|x-25| \\le 1\\):\n\\[\n|x-25| \\le 1 \\implies -1 \\le x-25 \\le 1 \\implies 24 \\le x \\le 26\n\\]\nSo, the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) is true for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe critical points of the inequality are \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality changes sign at these points, we need to determine the order of these points and the intervals they create. Given that \\(a < b\\), we can consider the following possible order of the critical points: \\(a < c < b\\), \\(a < b < c\\), \\(c < a < b\\), \\(c < b < a\\), \\(b < c < a\\), or \\(b < a < c\\). However, since the inequality is true for \\(x < -4\\) or \\(24 \\le x \\le 26\\), we can infer that \\(c = -4\\), \\(a = 24\\), and \\(b = 26\\).\n\nLet's verify this:\n- For \\(x < -4\\), the expression \\(\\frac{(x-24)(x-26)}{x+4}\\) is negative because \\((x-24)\\) and \\((x-26)\\) are negative and \\((x+4)\\) is negative, so the product is negative.\n- For \\(24 \\le x \\le 26\\), the expression \\(\\frac{(x-24)(x-26)}{x+4}\\) is non-positive because \\((x-24)\\) and \\((x-26)\\) have opposite signs and \\((x+4)\\) is positive, so the product is non-positive.\n- For \\(x > 26\\), the expression \\(\\frac{(x-24)(x-26)}{x+4}\\) is positive because \\((x-24)\\) and \\((x-26)\\) are positive and \\((x+4)\\) is positive, so the product is positive.\n\nThus, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) is true if and only if \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given condition.\n\nTherefore, the values of \\(a\\), \\(b\\), and \\(c\\) are \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nThe final answer is:\n\\[\n\\boxed{64}\n\\]", "mc_value": 1.0, "children": []}, {"text": "Given the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and the conditions that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we need to determine the values of \\(a\\), \\(b\\), and \\(c\\).\n\nFirst, let's rewrite the condition \\(|x-25| \\le 1\\):\n\\[\n|x-25| \\le 1 \\implies -1 \\le x-25 \\le 1 \\implies 24 \\le x \\le 26.\n\\]\nSo, the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\). This means that the roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots.\n\nSince the inequality is true for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\). Therefore, we have:\n\\[\na = 24, \\quad b = 26, \\quad c = -4.\n\\]\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "To solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\) given that the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we start by analyzing the conditions provided.\n\nThe condition \\(|x-25| \\le 1\\) can be rewritten as:\n\\[24 \\le x \\le 26.\\]\nThis means that the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) is true for \\(x < -4\\) or \\(24 \\le x \\le 26\\). The roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality changes sign at these roots.\n\nSince the inequality is true for \\(x < -4\\) and \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\). Therefore, we have:\n\\[a = 24, \\quad b = 26, \\quad c = -4.\\]\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[a + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "To solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\) given that the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we need to analyze the intervals where the inequality holds.\n\nFirst, let's rewrite the condition \\(|x-25| \\le 1\\):\n\\[\n|x-25| \\le 1 \\implies -1 \\le x-25 \\le 1 \\implies 24 \\le x \\le 26\n\\]\n\nSo, the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) is true for \\(x < -4\\) and \\(24 \\le x \\le 26\\).\n\nNext, we analyze the critical points of the rational function \\(\\frac{(x-a)(x-b)}{x-c}\\), which are \\(x = a\\), \\(x = b\\), and \\(x = c\\). These points divide the real number line into intervals. We need to determine the sign of the expression in each interval.\n\nGiven the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can infer the following:\n1. The expression changes sign at \\(x = -4\\), \\(x = 24\\), and \\(x = 26\\).\n2. Since \\(a < b\\), \\(a\\) and \\(b\\) must be within the interval \\([24, 26]\\) or outside the interval \\([24, 26]\\).\n\nLet's consider the possible positions of \\(a\\), \\(b\\), and \\(c\\):\n- If \\(a\\) and \\(b\\) are within the interval \\([24, 26]\\), then \\(c\\) must be outside this interval to ensure the inequality holds for \\(x < -4\\) and \\(24 \\le x \\le 26\\).\n\nSince \\(a < b\\), we can assume:\n- \\(a = 24\\)\n- \\(b = 26\\)\n- \\(c = -4\\)\n\nNow, we verify these values:\n- For \\(x < -4\\), all factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are negative, so \\(\\frac{(x-24)(x-26)}{x+4} > 0\\).\n- For \\(24 \\le x < 26\\), \\((x-24) \\ge 0\\), \\((x-26) < 0\\), and \\((x+4) > 0\\), so \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\).\n- For \\(x = 24\\), \\(\\frac{(24-24)(24-26)}{24+4} = 0\\).\n- For \\(x = 26\\), \\(\\frac{(26-24)(26-26)}{26+4} = 0\\).\n- For \\(x > 26\\), all factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are positive, so \\(\\frac{(x-24)(x-26)}{x+4} > 0\\).\n\nThus, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) is satisfied for \\(x < -4\\) and \\(24 \\le x \\le 26\\), which matches the given conditions.\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "To solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) given that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we need to analyze the critical points and intervals where the inequality holds.\n\nFirst, let's rewrite the inequality in terms of intervals:\n\\[ |x-25| \\le 1 \\]\nThis inequality can be rewritten as:\n\\[ 24 \\le x \\le 26 \\]\n\nSo, the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) holds for:\n\\[ x < -4 \\quad \\text{or} \\quad 24 \\le x \\le 26 \\]\n\nThis implies that the roots of the numerator \\((x-a)(x-b)\\) and the root of the denominator \\(x-c\\) must be at the points \\(-4\\), \\(24\\), and \\(26\\). Since \\(a < b\\), we can assign:\n\\[ a = 24, \\quad b = 26, \\quad c = -4 \\]\n\nNow, we need to verify that these values satisfy the given inequality. The inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) will change signs at \\(x = -4\\), \\(x = 24\\), and \\(x = 26\\). We can test the intervals determined by these points: \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n1. For \\(x \\in (-\\infty, -4)\\), all factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are negative, so \\(\\frac{(x-24)(x-26)}{x+4} > 0\\).\n2. For \\(x \\in (-4, 24)\\), \\((x-24)\\) and \\((x-26)\\) are negative, and \\((x+4)\\) is positive, so \\(\\frac{(x-24)(x-26)}{x+4} < 0\\).\n3. For \\(x \\in (24, 26)\\), \\((x-24)\\) is positive, \\((x-26)\\) is negative, and \\((x+4)\\) is positive, so \\(\\frac{(x-24)(x-26)}{x+4} < 0\\).\n4. For \\(x \\in (26, \\infty)\\), all factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are positive, so \\(\\frac{(x-24)(x-26)}{x+4} > 0\\).\n\nAt the critical points:\n- At \\(x = -4\\), the expression is undefined.\n- At \\(x = 24\\), the expression is zero.\n- At \\(x = 26\\), the expression is zero.\n\nThus, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given condition.\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[ a + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64 \\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "To solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\), we need to analyze the given conditions: the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at these roots. Given the intervals where the inequality holds, we can infer that the roots \\(a\\) and \\(b\\) must be 24 and 26, and the root \\(c\\) must be -4. Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "To solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\) given that the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we need to analyze the intervals where the inequality holds.\n\nFirst, let's rewrite the condition \\(|x-25| \\le 1\\):\n\\[\n|x-25| \\le 1 \\implies -1 \\le x-25 \\le 1 \\implies 24 \\le x \\le 26\n\\]\n\nSo, the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) holds for \\(x < -4\\) and \\(24 \\le x \\le 26\\).\n\nNext, we need to determine the critical points of the inequality \\(\\frac{(x-a)(x-b)}{x-c}\\). These critical points are the roots of the numerator \\((x-a)(x-b) = 0\\) and the root of the denominator \\(x-c = 0\\). Therefore, the critical points are \\(x = a\\), \\(x = b\\), and \\(x = c\\).\n\nGiven that the inequality holds for \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can infer the following about the critical points:\n- \\(a\\) and \\(b\\) must be the endpoints of the interval \\([24, 26]\\), and since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n- \\(c\\) must be the point that makes the denominator zero and is not included in the intervals where the inequality holds. Therefore, \\(c\\) must be \\(-4\\).\n\nNow, we have:\n\\[\na = 24, \\quad b = 26, \\quad c = -4\n\\]\n\nWe need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4)\n\\]\n\nCalculate each term:\n\\[\n2(26) = 52\n\\]\n\\[\n3(-4) = -12\n\\]\n\nAdd these values together:\n\\[\n24 + 52 - 12 = 64\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is:\n\\[\n\\boxed{64}\n\\]", "mc_value": 1.0, "children": []}, {"text": "To solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\), we need to analyze the given conditions: the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means that the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will change signs at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Given the intervals where the inequality holds, we can infer the following:\n\n1. The roots \\(a\\) and \\(b\\) must be at the endpoints of the interval \\([24, 26]\\), and since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n2. The root \\(c\\) must be at the boundary of the interval \\((-4, 24)\\) or \\((26, \\infty)\\), but since the inequality does not hold at \\(x = -4\\) (it is strictly less than), \\(c\\) must be at \\(x = -4\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "To solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\), we need to analyze the intervals where the inequality holds. The inequality is satisfied if and only if \\(x < -4\\) or \\(|x-25| \\le 1\\). This means that the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at these roots. Therefore, the roots \\(a\\) and \\(b\\) must be at the endpoints of the intervals where the inequality is satisfied, and the root \\(c\\) must be a point where the inequality is undefined, i.e., \\(c\\) must be a value that makes the denominator zero.\n\nFrom the given intervals, we can see that the roots \\(a\\) and \\(b\\) must be 24 and 26, and since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). The root of the denominator \\(c\\) must be \\(-4\\), so \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "Given the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\nFrom the given intervals, we can deduce that \\(c = 24\\) because the inequality is undefined at \\(x = c\\) and the interval \\((-4, 24)\\) is not included in the solution set. This leaves us with the roots \\(a\\) and \\(b\\) such that the inequality changes sign at \\(x = a\\) and \\(x = b\\) within the intervals \\((-\\infty, -4)\\) and \\([24, 26]\\). Since \\(a < b\\), we have \\(a = -4\\) and \\(b = 26\\).", "mc_value": 0.0, "children": []}, {"text": "Given the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).", "mc_value": 0.9375, "children": [{"text": "The roots of the numerator \\((x-a)(x-b) = 0\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c = 0\\) is \\(x = c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), we can infer that the roots \\(a\\) and \\(b\\) must be 24 and 26, and the root of the denominator \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be 24 and 26 (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The critical points of the inequality are \\(a\\), \\(b\\), and \\(c\\), and they must be the points where the expression changes sign. Therefore, the critical points are \\(-4\\), \\(24\\), and \\(26\\).\n\nSince \\(a < b\\), we can assign \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). This is because the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) will change sign at \\(x = 24\\), \\(x = 26\\), and \\(x = -4\\), and it will be negative in the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be at \\(x = 24\\) and \\(x = 26\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). The value of \\(c\\) must be at \\(x = -4\\) because the inequality is undefined at \\(x = c\\) and the inequality changes sign at \\(x = -4\\). Therefore, \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The critical points of the inequality are \\(x = a\\), \\(x = b\\), and \\(x = c\\), and these points must be the boundaries of the intervals where the inequality changes sign.\n\nSince \\(a < b\\), we can infer that the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\), and the root \\(c\\) must be \\(-4\\). This is because the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) will change sign at \\(x = 24\\), \\(x = 26\\), and \\(x = -4\\), and it will be non-positive in the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be at \\(x = 24\\) and \\(x = 26\\), and the root \\(c\\) must be at \\(x = -4\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nWe need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\) and \\(b\\) must be 24 and 26 (with \\(a < b\\)), and \\(c\\) must be \\(-4\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Therefore, the critical points are \\(a\\), \\(b\\), and \\(c\\).\n\nFrom the given conditions, we can infer that the critical points must be \\(-4\\), \\(24\\), and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to verify that these values satisfy the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\).\n\nThe critical points divide the real number line into four intervals: \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\). We test a point in each interval to determine the sign of the expression \\(\\frac{(x-24)(x-26)}{x+4}\\):\n\n1. For \\(x \\in (-\\infty, -4)\\), choose \\(x = -5\\):\n \\[\n \\frac{(-5-24)(-5-26)}{-5+4} = \\frac{(-29)(-31)}{-1} = -899 < 0.\n \\]\n So, the inequality is satisfied in \\((- \\infty, -4)\\).\n\n2. For \\(x \\in (-4, 24)\\), choose \\(x = 0\\):\n \\[\n \\frac{(0-24)(0-26)}{0+4} = \\frac{(-24)(-26)}{4} = 156 > 0.\n \\]\n So, the inequality is not satisfied in \\((-4, 24)\\).\n\n3. For \\(x \\in (24, 26)\\), choose \\(x = 25\\):\n \\[\n \\frac{(25-24)(25-26)}{25+4} = \\frac{(1)(-1)}{29} = -\\frac{1}{29} < 0.\n \\]\n So, the inequality is satisfied in \\((24, 26)\\).\n\n4. For \\(x \\in (26, \\infty)\\), choose \\(x = 27\\):\n \\[\n \\frac{(27-24)(27-26)}{27+4} = \\frac{(3)(1)}{31} = \\frac{3}{31} > 0.\n \\]\n So, the inequality is not satisfied in \\((26, \\infty)\\).\n\nAt the critical points \\(x = -4\\), \\(x = 24\\), and \\(x = 26\\), the expression \\(\\frac{(x-24)(x-26)}{x+4}\\) is zero at \\(x = 24\\) and \\(x = 26\\), and undefined at \\(x = -4\\). Therefore, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given conditions.\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be \\(-4\\), \\(24\\), and \\(26\\) in some order.\n\nSince \\(a < b\\), and the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), we can deduce the following:\n- The root \\(-4\\) must be \\(c\\) because the inequality is not defined at \\(x = c\\) and it changes sign at \\(-4\\).\n- The roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) with \\(a = 24\\) and \\(b = 26\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nSince the inequality is true for \\(x < -4\\) and \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be at \\(x = 24\\) and \\(x = 26\\). Without loss of generality, let \\(a = 24\\) and \\(b = 26\\). The value of \\(c\\) must be at \\(x = -4\\) because the inequality is undefined at \\(x = c\\) and the inequality is true for \\(x < -4\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality is satisfied in the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can deduce that the roots \\(a\\) and \\(b\\) must be 24 and 26, and the root \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots.\n\nSince the inequality is satisfied for \\(x < -4\\) and \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nWe need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots. Therefore, the critical points are \\(a\\), \\(b\\), and \\(c\\).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\). This is because the inequality changes sign at \\(24\\), \\(26\\), and \\(-4\\), and the sign of the expression \\(\\frac{(x-24)(x-26)}{x+4}\\) must be negative in the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b) = 0\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c = 0\\) is \\(x = c\\). The critical points are \\(a\\), \\(b\\), and \\(c\\), and they divide the real number line into intervals. We need to determine the values of \\(a\\), \\(b\\), and \\(c\\) such that the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) holds in the intervals \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nSince \\(a < b\\), we can assume without loss of generality that \\(a\\) and \\(b\\) are the roots of the numerator and \\(c\\) is the root of the denominator. The inequality changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Given the intervals where the inequality holds, we can deduce that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). This is because the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values corresponds to \\(a\\), \\(b\\), and \\(c\\).\n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = c\\) where the expression is undefined, and it will change sign at \\(x = a\\) and \\(x = b\\). The interval \\(x < -4\\) indicates that \\(-4\\) is a root of the numerator and the inequality is negative to the left of \\(-4\\). The interval \\(24 \\le x \\le 26\\) indicates that \\(24\\) and \\(26\\) are roots of the numerator and the inequality is non-positive between these two values. Therefore, we can conclude that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, and the inequality is satisfied in the intervals determined by these roots.\n\nFrom the given conditions, we can infer that the roots \\(a\\) and \\(b\\) must be 24 and 26, and the root \\(c\\) must be \\(-4\\). Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). Therefore, \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes signs at \\(x = a\\), \\(x = b\\), and \\(x = c\\).\n\nSince the inequality is true for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be at \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be at \\(-4\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality is satisfied in the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be 24 and 26, and the root \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b) = 0\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c = 0\\) is \\(x = c\\).\n\nSince the inequality changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\), these points must be the boundary points of the intervals where the inequality holds. Therefore, \\(a\\) and \\(b\\) must be 24 and 26, and \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator are \\(x = a\\) and \\(x = b\\), and the root of the denominator is \\(x = c\\). The inequality changes sign at these roots, so the roots must be at the boundaries of the intervals where the inequality holds. Therefore, we can conclude that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\), and the root \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The critical points of the inequality are \\(a\\), \\(b\\), and \\(c\\), and these points divide the real number line into intervals where the expression changes sign.\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the critical points must be \\(-4\\), \\(24\\), and \\(26\\). Given that \\(a < b\\), we can assign \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). This is because the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) will be satisfied in the intervals \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\), and the root \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nWe need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The critical points where the expression changes sign are \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality is non-positive in the intervals \\((-\\infty, -4)\\) and \\([24, 26]\\), and the expression is undefined at \\(x = c\\), we can infer that \\(c = -4\\).\n\nNext, we need to determine the values of \\(a\\) and \\(b\\). The inequality \\(\\frac{(x-a)(x-b)}{-4} \\le 0\\) can be rewritten as \\(\\frac{(x-a)(x-b)}{4} \\ge 0\\) when \\(x < -4\\) and \\(\\frac{(x-a)(x-b)}{-4} \\le 0\\) when \\(24 \\le x \\le 26\\). This implies that \\((x-a)(x-b) \\ge 0\\) for \\(x < -4\\) and \\((x-a)(x-b) \\le 0\\) for \\(24 \\le x \\le 26\\). Therefore, the roots \\(a\\) and \\(b\\) must be at the endpoints of the interval \\([24, 26]\\), and since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nNow, we can find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b) = 0\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c = 0\\) is \\(x = c\\).\n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be at \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be at \\(-4\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots. Therefore, the critical points are \\(a\\), \\(b\\), and \\(c\\).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the critical points must be \\(-4\\), \\(24\\), and \\(26\\). Given that \\(a < b\\), we can assign \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). This is because the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) will change sign at \\(x = 24\\), \\(x = 26\\), and \\(x = -4\\), and will be satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots.\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nWe need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b) = 0\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c = 0\\) is \\(x = c\\). The inequality changes sign at these roots.\n\nSince the inequality is true for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\), and the root \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be at the points \\(-4\\), \\(24\\), and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nTo confirm, we analyze the sign of \\(\\frac{(x-24)(x-26)}{x+4}\\):\n- For \\(x < -4\\), all three factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are negative, so their product is negative.\n- For \\(-4 < x < 24\\), \\((x-24)\\) and \\((x-26)\\) are negative, and \\((x+4)\\) is positive, so their product is positive.\n- For \\(24 < x < 26\\), \\((x-24)\\) is positive, \\((x-26)\\) is negative, and \\((x+4)\\) is positive, so their product is negative.\n- For \\(x > 26\\), all three factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are positive, so their product is positive.\n\nThus, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given condition. Therefore, the values of \\(a\\), \\(b\\), and \\(c\\) are correct.\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots. Therefore, the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the intervals determined by these roots correspond to the intervals where the inequality is satisfied.\n\nFrom the given intervals, we can infer the following:\n1. \\(c = -4\\) because the inequality is undefined at \\(x = c\\) and \\(x = -4\\) is a boundary point.\n2. The roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) because the inequality is satisfied in the interval \\([24, 26]\\).\n\nSince \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).", "mc_value": 0.53125, "children": [{"text": "This implies that \\(c = -4\\) and \\(a = 24\\) and \\(b = 26\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). Therefore, the value of \\(a + 2b + 3c\\) is:\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nThus, the value is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, the value of \\(a + 2b + 3c\\) is:\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, the value of \\(a + 2b + 3c\\) is calculated as follows:\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, we can conclude that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, we need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, we need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, we can conclude that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, we can conclude that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, the value of \\(a + 2b + 3c\\) is:\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "This implies that \\(c = -4\\), \\(a = 24\\), and \\(b = 26\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). Therefore, the value of \\(a + 2b + 3c\\) is:\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nSince \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). Therefore, \\(a + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\\).\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, the roots must be \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nSince \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, the value of \\(a + 2b + 3c\\) is:\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nSince \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). Therefore, \\(a + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\\).\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, we need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}]}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = -4\\) and will change sign there. This means \\(-4\\) must be either \\(a\\) or \\(b\\). Since \\(a < b\\), we have \\(a = -4\\). The inequality will also have a root at \\(x = 24\\) or \\(x = 26\\), and since \\(b > a\\), we have \\(b = 26\\). The value of \\(c\\) must be the remaining root, which is \\(24\\).", "mc_value": 0.0, "children": []}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).", "mc_value": 0.625, "children": [{"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will be satisfied in the intervals determined by the roots and the sign of the expression in each interval. We need to check the possible orderings of \\(a\\), \\(b\\), and \\(c\\):\n\n1. If \\(a = -4\\), \\(b = 24\\), and \\(c = 26\\), the inequality \\(\\frac{(x+4)(x-24)}{x-26} \\le 0\\) is satisfied for \\(x < -4\\) or \\(24 \\le x < 26\\). This does not match the given condition because it does not include \\(x = 26\\).\n2. If \\(a = -4\\), \\(b = 26\\), and \\(c = 24\\), the inequality \\(\\frac{(x+4)(x-26)}{x-24} \\le 0\\) is satisfied for \\(x < -4\\) or \\(24 < x \\le 26\\). This does not match the given condition because it does not include \\(x = 24\\).\n3. If \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\), the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\). This matches the given condition.\n\nTherefore, the correct values are \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The point \\(c\\) must be a point where the inequality is undefined, so \\(c = -4\\). This leaves \\(a\\) and \\(b\\) to be \\(24\\) and \\(26\\), with \\(a < b\\), so \\(a = 24\\) and \\(b = 26\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) must be satisfied at the endpoints \\(x = 24\\) and \\(x = 26\\) but not at \\(x = -4\\). This means that \\(c\\) must be \\(-4\\) because the inequality is undefined at \\(x = -4\\). Therefore, \\(a = 24\\) and \\(b = 26\\).\n\nNow, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) must have a root at \\(x = -4\\) and be positive to the left of \\(-4\\), and it must have roots at \\(x = 24\\) and \\(x = 26\\) with the inequality being non-positive between \\(24\\) and \\(26\\). This means \\(c\\) must be \\(-4\\) because the inequality is undefined at \\(x = c\\). Therefore, \\(a = 24\\) and \\(b = 26\\).\n\nNow, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) implies that the expression is non-positive in the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\). This means that \\(c\\) must be the point where the expression is undefined, i.e., \\(c = -4\\). This leaves \\(a = 24\\) and \\(b = 26\\).\n\nNow, we need to verify that with \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\), the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n- For \\(x < -4\\), the numerator \\((x-24)(x-26)\\) is positive (since both \\(x-24\\) and \\(x-26\\) are negative), and the denominator \\(x+4\\) is negative, so the fraction is negative.\n- For \\(24 \\le x \\le 26\\), the numerator \\((x-24)(x-26)\\) is non-positive (it is zero at \\(x = 24\\) and \\(x = 26\\), and negative in between), and the denominator \\(x+4\\) is positive, so the fraction is non-positive.\n- For \\(x > 26\\), the numerator \\((x-24)(x-26)\\) is positive (since both \\(x-24\\) and \\(x-26\\) are positive), and the denominator \\(x+4\\) is positive, so the fraction is positive.\n\nThus, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given conditions. Therefore, the values of \\(a\\), \\(b\\), and \\(c\\) are \\(24\\), \\(26\\), and \\(-4\\) respectively.\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) implies that the expression is non-positive in the intervals \\((-\\infty, -4)\\) and \\([24, 26]\\). This means that the root \\(c\\) must be the point where the expression is undefined, which is \\(x = -4\\). Therefore, \\(c = -4\\), and the roots of the numerator must be \\(24\\) and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = c\\) where the function is undefined, and it will change sign at \\(x = a\\) and \\(x = b\\). Given the intervals where the inequality holds, \\(c\\) must be \\(-4\\) because the inequality is undefined at \\(x = -4\\) and the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\) suggest that \\(a\\) and \\(b\\) are \\(24\\) and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nThus, the values are \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) implies that the expression changes sign at \\(a\\) and \\(b\\) and is undefined at \\(c\\). Given the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can see that the expression must change sign at \\(x = 24\\) and \\(x = 26\\), and it must be undefined at \\(x = -4\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) implies that the expression is non-positive in the interval \\([24, 26]\\) and negative in the intervals \\((-\\infty, -4)\\) and \\((24, 26)\\) with a sign change at \\(x = c\\). Therefore, \\(c\\) must be \\(-4\\) because the expression is undefined at \\(x = -4\\). This leaves \\(a = 24\\) and \\(b = 26\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) must be satisfied at the points where it changes sign, and the intervals where it is non-positive must be \\(x < -4\\) or \\(24 \\le x \\le 26\\). This implies that \\(c = -4\\) because the inequality is undefined at \\(x = c\\), and the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) with \\(a < b\\). Therefore, \\(a = 24\\) and \\(b = 26\\).\n\nNow, we can find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) must have a root at \\(x = -4\\) (where the inequality is satisfied for \\(x < -4\\)), and it must have roots at \\(x = 24\\) and \\(x = 26\\) such that the inequality is satisfied for \\(24 \\le x \\le 26\\). This means \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = c\\) where the expression is undefined, and the sign changes at \\(x = a\\) and \\(x = b\\).\n\nGiven the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can see that \\(c\\) must be \\(-4\\) because the inequality is undefined at \\(x = -4\\). This leaves \\(a\\) and \\(b\\) to be \\(24\\) and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nThus, the values are \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = c\\) where the expression is undefined. Therefore, \\(c\\) must be the value that is not included in the solution set. This means \\(c = -4\\). The remaining values \\(24\\) and \\(26\\) must be \\(a\\) and \\(b\\) with \\(a < b\\), so \\(a = 24\\) and \\(b = 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = c\\) where it is undefined, and it will change sign at \\(x = a\\) and \\(x = b\\).\n\nGiven the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can see that \\(c\\) must be \\(-4\\) because the inequality is undefined at \\(x = -4\\) and the other two roots must be \\(24\\) and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nThus, the values are \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = c\\) where the function is undefined, and it will change sign at \\(x = a\\) and \\(x = b\\). Given the intervals where the inequality holds, we can deduce that \\(c = -4\\), \\(a = 24\\), and \\(b = 26\\). This is because the inequality is negative for \\(x < -4\\) (to the left of \\(c\\)), non-positive for \\(24 \\le x \\le 26\\) (between \\(a\\) and \\(b\\)), and positive for \\(x > 26\\) (to the right of \\(b\\)).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) must be satisfied at the points \\(x = 24\\) and \\(x = 26\\) (where the numerator is zero), and it must be undefined at \\(x = c\\) (where the denominator is zero). Therefore, \\(c = -4\\). This leaves \\(a\\) and \\(b\\) to be \\(24\\) and \\(26\\), with \\(a < b\\), so \\(a = 24\\) and \\(b = 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) has a root at \\(x = c\\) where it is undefined, and it changes sign at \\(x = a\\) and \\(x = b\\). Given the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can see that \\(c = -4\\) because the inequality is undefined at \\(x = -4\\). This leaves \\(a = 24\\) and \\(b = 26\\).\n\nNow, we can find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The point \\(c\\) must be a point where the inequality is undefined, so \\(c = -4\\). This leaves \\(a\\) and \\(b\\) to be \\(24\\) and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nNow, we can find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) has a root at \\(x = c\\) where the function is undefined, and it changes sign at \\(x = a\\) and \\(x = b\\). Therefore, \\(c\\) must be the value that is not included in the solution intervals, which means \\(c = -4\\). This leaves \\(a = 24\\) and \\(b = 26\\).\n\nNow, we need to verify that with \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\), the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\). We analyze the sign of the expression \\(\\frac{(x-24)(x-26)}{x+4}\\) in the intervals determined by the roots \\(-4\\), \\(24\\), and \\(26\\):\n\n1. For \\(x < -4\\), all three factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are negative, so their product is negative.\n2. For \\(-4 < x < 24\\), \\((x-24)\\) and \\((x-26)\\) are negative, and \\((x+4)\\) is positive, so their product is positive.\n3. For \\(24 < x < 26\\), \\((x-24)\\) is positive, \\((x-26)\\) is negative, and \\((x+4)\\) is positive, so their product is negative.\n4. For \\(x > 26\\), all three factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are positive, so their product is positive.\n\nThus, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given conditions. Therefore, the values of \\(a\\), \\(b\\), and \\(c\\) are \\(24\\), \\(26\\), and \\(-4\\) respectively.\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) must have a root at \\(x = -4\\) and \\(x = 24\\) and a vertical asymptote at \\(x = 26\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}]}, {"text": "The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = -4\\) and will change sign there. This means \\(-4\\) must be either \\(a\\) or \\(b\\). Since \\(a < b\\), we have \\(a = -4\\). The inequality will also have a root at \\(x = 24\\) or \\(x = 26\\), and since \\(b > a\\), we have \\(b = 26\\). The value of \\(c\\) must be the remaining root, which is \\(24\\).", "mc_value": 0.09375, "children": [{"text": "However, since \\(c\\) is the root of the denominator, it cannot be \\(24\\). Therefore, \\(c\\) must be \\(24\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "However, since \\(c\\) is the point where the denominator is zero and the inequality is undefined at \\(x = c\\), \\(c\\) must be \\(24\\).\n\nTherefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). The value of \\(a + 2b + 3c\\) is:\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "However, this would make the inequality \\(\\frac{(x+4)(x-26)}{x-24} \\le 0\\), which does not satisfy the condition \\(x < -4\\) or \\(24 \\le x \\le 26\\). Therefore, \\(c\\) must be \\(24\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0, "children": []}, {"text": "Thus, we have \\(a = -4\\), \\(b = 26\\), and \\(c = 24\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = -4 + 2 \\cdot 26 + 3 \\cdot 24 = -4 + 52 + 72 = 120.\n\\]", "mc_value": 0.0, "children": []}]}]}]}, "question_id": 1} -{"question": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.", "final_answer": "\\frac{11}{36}", "reasoning_steps": {"text": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.", "mc_value": 0.25, "children": [{"text": "To determine the probability that Melinda will be able to form an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible outcomes when rolling two dice:**\n Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes.\n\n2. **Determine the two-digit numbers that can be formed:**\n We need to find all two-digit numbers between 10 and 20 inclusive. These numbers are:\n \\[\n 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20\n \\]\n\n3. **Identify the valid combinations of dice rolls:**\n For each number, we need to check if it can be formed using two numbers from 1 to 6. We will consider each number one by one:\n - **10**: Can be formed as 10 or 01 (but 01 is not a valid two-digit number)\n - Valid combination: (1, 0) (not possible since 0 is not on a die)\n - **11**: Can be formed as 11\n - Valid combination: (1, 1)\n - **12**: Can be formed as 12 or 21\n - Valid combinations: (1, 2), (2, 1)\n - **13**: Can be formed as 13 or 31\n - Valid combinations: (1, 3), (3, 1)\n - **14**: Can be formed as 14 or 41\n - Valid combinations: (1, 4), (4, 1)\n - **15**: Can be formed as 15 or 51\n - Valid combinations: (1, 5), (5, 1)\n - **16**: Can be formed as 16 or 61\n - Valid combinations: (1, 6), (6, 1)\n - **17**: Can be formed as 17 or 71 (but 71 is not a valid two-digit number)\n - Valid combination: (1, 7) (not possible since 7 is not on a die)\n - **18**: Can be formed as 18 or 81 (but 81 is not a valid two-digit number)\n - Valid combination: (1, 8) (not possible since 8 is not on a die)\n - **19**: Can be formed as 19 or 91 (but 91 is not a valid two-digit number)\n - Valid combination: (1, 9) (not possible since 9 is not on a die)\n - **20**: Can be formed as 20 or 02 (but 02 is not a valid two-digit number)\n - Valid combination: (2, 0) (not possible since 0 is not on a die)\n\n4. **Count the total number of valid combinations:**\n From the above analysis, the valid combinations are:\n \\[\n (1, 1), (1, 2), (2, 1), (1, 3), (3, 1), (1, 4), (4, 1), (1, 5), (5, 1), (1, 6), (6, 1)\n \\]\n There are 11 valid combinations.\n\n5. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the probability that Melinda will be able to make an integer between 10 and 20, inclusive, when rolling two standard six-sided dice, we need to follow these steps:\n\n1. Identify all possible outcomes when rolling two dice.\n2. Determine which of these outcomes result in a two-digit number between 10 and 20.\n3. Calculate the probability by dividing the number of favorable outcomes by the total number of possible outcomes.\n\n**Step 1: Identify all possible outcomes when rolling two dice.**\n\nA standard six-sided die has 6 faces, so when rolling two dice, there are \\(6 \\times 6 = 36\\) possible outcomes.\n\n**Step 2: Determine which of these outcomes result in a two-digit number between 10 and 20.**\n\nThe two-digit numbers between 10 and 20 are 11, 12, 13, 14, 15, 16, 17, 18, and 19. We need to check which of these numbers can be formed by the numbers rolled on the dice.\n\n- For 11, the only possibility is rolling a 1 on both dice.\n- For 12, the possibilities are rolling a 1 on the first die and a 2 on the second die, or rolling a 2 on the first die and a 1 on the second die.\n- For 13, the possibilities are rolling a 1 on the first die and a 3 on the second die, or rolling a 3 on the first die and a 1 on the second die.\n- For 14, the possibilities are rolling a 1 on the first die and a 4 on the second die, or rolling a 4 on the first die and a 1 on the second die.\n- For 15, the possibilities are rolling a 1 on the first die and a 5 on the second die, or rolling a 5 on the first die and a 1 on the second die.\n- For 16, the possibilities are rolling a 1 on the first die and a 6 on the second die, or rolling a 6 on the first die and a 1 on the second die.\n- For 17, the only possibility is rolling a 1 on the first die and a 7 on the second die, but since a die only has 6 faces, this is not possible.\n- For 18, the only possibility is rolling a 1 on the first die and an 8 on the second die, but since a die only has 6 faces, this is not possible.\n- For 19, the only possibility is rolling a 1 on the first die and a 9 on the second die, but since a die only has 6 faces, this is not possible.\n\nFrom the above, we see that the favorable outcomes are: (1,1), (1,2), (2,1), (1,3), (3,1), (1,4), (4,1), (1,5), (5,1), (1,6), (6,1). There are 11 favorable outcomes.\n\n**Step 3: Calculate the probability.**\n\nThe probability is the number of favorable outcomes divided by the total number of possible outcomes. Therefore, the probability is:\n\\[\n\\frac{11}{36}\n\\]\n\nSo, the probability that Melinda will be able to make an integer between 10 and 20, inclusive, is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the probability that Melinda will be able to form an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers between 10 and 20:**\n The integers between 10 and 20 are: 11, 12, 13, 14, 15, 16.\n\n2. **Determine the possible outcomes when rolling two six-sided dice:**\n Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n3. **Check which of these outcomes can form the numbers 11, 12, 13, 14, 15, and 16:**\n - For 11: The only possible outcome is (1, 1).\n - For 12: The possible outcomes are (1, 2) and (2, 1).\n - For 13: The possible outcomes are (1, 3) and (3, 1).\n - For 14: The possible outcomes are (1, 4) and (4, 1).\n - For 15: The possible outcomes are (1, 5) and (5, 1).\n - For 16: The possible outcomes are (1, 6) and (6, 1).\n\n4. **Count the total number of favorable outcomes:**\n - For 11: 1 outcome\n - For 12: 2 outcomes\n - For 13: 2 outcomes\n - For 14: 2 outcomes\n - For 15: 2 outcomes\n - For 16: 2 outcomes\n\n Adding these together, we get:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n5. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible outcomes when rolling two dice:**\n Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n2. **Determine the two-digit numbers that can be formed from the dice rolls:**\n For each pair of numbers \\((a, b)\\) where \\(a\\) and \\(b\\) are the results of the dice rolls, we can form two two-digit numbers: \\(10a + b\\) and \\(10b + a\\).\n\n3. **Identify the two-digit numbers between 10 and 20 inclusive:**\n The integers between 10 and 20 are: 10, 11, 12, 13, 14, 15, 16, 17, 18, and 19.\n\n4. **Determine which pairs of dice rolls can form these numbers:**\n - \\(10\\): This can be formed by \\((1, 0)\\), but since 0 is not a valid die roll, it is not possible.\n - \\(11\\): This can be formed by \\((1, 1)\\).\n - \\(12\\): This can be formed by \\((1, 2)\\) and \\((2, 1)\\).\n - \\(13\\): This can be formed by \\((1, 3)\\) and \\((3, 1)\\).\n - \\(14\\): This can be formed by \\((1, 4)\\) and \\((4, 1)\\).\n - \\(15\\): This can be formed by \\((1, 5)\\) and \\((5, 1)\\).\n - \\(16\\): This can be formed by \\((1, 6)\\) and \\((6, 1)\\).\n - \\(17\\): This can be formed by \\((1, 7)\\), but since 7 is not a valid die roll, it is not possible.\n - \\(18\\): This can be formed by \\((1, 8)\\), but since 8 is not a valid die roll, it is not possible.\n - \\(19\\): This can be formed by \\((1, 9)\\), but since 9 is not a valid die roll, it is not possible.\n\n5. **Count the total number of favorable outcomes:**\n - For 11: 1 pair\n - For 12: 2 pairs\n - For 13: 2 pairs\n - For 14: 2 pairs\n - For 15: 2 pairs\n - For 16: 2 pairs\n\n Adding these up, we get \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\) favorable outcomes.\n\n6. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\text{Probability} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0, "children": []}, {"text": "To determine the probability that Melinda will be able to form an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible outcomes for each die:**\n Each die can roll a number from 1 to 6.\n\n2. **List the two-digit numbers that can be formed:**\n Since the two-digit number must be between 10 and 20 inclusive, the tens digit must be 1. The units digit can be any number from 1 to 6.\n\n3. **Count the favorable outcomes:**\n The favorable outcomes are:\n - 11\n - 12\n - 13\n - 14\n - 15\n - 16", "mc_value": 0.0, "children": []}, {"text": "To determine the probability that Melinda will be able to form an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible outcomes for each die:**\n Each die can roll a number from 1 to 6.", "mc_value": 0.1875, "children": [{"text": "Therefore, there are 6 possible outcomes for each die.\n\n2. **Calculate the total number of possible two-digit combinations:**\n Since each die is rolled independently, the total number of possible two-digit combinations is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n3. **Determine the two-digit numbers between 10 and 20 inclusive:**\n The integers between 10 and 20 are:\n \\[\n 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20\n \\]\n\n4. **Identify which of these numbers can be formed by rolling two dice:**\n - For 10, the possible combinations are (1, 0), but 0 is not a valid outcome on a die.\n - For 11, the possible combinations are (1, 1).\n - For 12, the possible combinations are (1, 2) and (2, 1).\n - For 13, the possible combinations are (1, 3) and (3, 1).\n - For 14, the possible combinations are (1, 4) and (4, 1).\n - For 15, the possible combinations are (1, 5) and (5, 1).\n - For 16, the possible combinations are (1, 6) and (6, 1).\n - For 17, the possible combinations are (1, 7), but 7 is not a valid outcome on a die.\n - For 18, the possible combinations are (1, 8), but 8 is not a valid outcome on a die.\n - For 19, the possible combinations are (1, 9), but 9 is not a valid outcome on a die.\n - For 20, the possible combinations are (2, 0), but 0 is not a valid outcome on a die.\n\n Therefore, the valid combinations are:\n \\[\n (1, 1), (1, 2), (2, 1), (1, 3), (3, 1), (1, 4), (4, 1), (1, 5), (5, 1), (1, 6), (6, 1)\n \\]\n\n5. **Count the number of valid combinations:**\n There are 11 valid combinations.\n\n6. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nThus, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is:\n\\[\n\\boxed{\\frac{11}{36}}\n\\]", "mc_value": 1.0, "children": []}, {"text": "Therefore, there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n2. **Determine the two-digit numbers that can be formed:**\n Melinda can form two-digit numbers by placing the number from the first die in the tens place and the number from the second die in the units place, or vice versa. For example, if she rolls a 6 and a 3, she can form 36 or 63.\n\n3. **Identify the two-digit numbers between 10 and 20 inclusive:**\n The two-digit numbers between 10 and 20 are: 11, 12, 13, 14, 15, and 16.\n\n4. **Determine the combinations that result in these numbers:**\n - For 11: Melinda can roll a 1 on both dice (11).\n - For 12: Melinda can roll a 1 on the first die and a 2 on the second die (12), or a 2 on the first die and a 1 on the second die (21).\n - For 13: Melinda can roll a 1 on the first die and a 3 on the second die (13), or a 3 on the first die and a 1 on the second die (31).\n - For 14: Melinda can roll a 1 on the first die and a 4 on the second die (14), or a 4 on the first die and a 1 on the second die (41).\n - For 15: Melinda can roll a 1 on the first die and a 5 on the second die (15), or a 5 on the first die and a 1 on the second die (51).\n - For 16: Melinda can roll a 1 on the first die and a 6 on the second die (16), or a 6 on the first die and a 1 on the second die (61).\n\n5. **Count the total number of favorable outcomes:**\n - For 11: 1 combination\n - For 12: 2 combinations\n - For 13: 2 combinations\n - For 14: 2 combinations\n - For 15: 2 combinations\n - For 16: 2 combinations\n\n Adding these up, we get:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n6. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n2. **Determine the two-digit numbers that can be formed:**\n We need to find all two-digit numbers that can be formed using the numbers rolled on the dice, such that the number is between 10 and 20 inclusive.\n\n3. **List the two-digit numbers between 10 and 20:**\n The numbers are: 10, 11, 12, 13, 14, 15, 16.\n\n4. **Identify the pairs of dice rolls that result in these numbers:**\n - For 10: The pairs are (1, 0), but since a die cannot roll a 0, this is not possible.\n - For 11: The pairs are (1, 1).\n - For 12: The pairs are (1, 2) and (2, 1).\n - For 13: The pairs are (1, 3) and (3, 1).\n - For 14: The pairs are (1, 4) and (4, 1).\n - For 15: The pairs are (1, 5) and (5, 1).\n - For 16: The pairs are (1, 6) and (6, 1).\n\n5. **Count the number of valid pairs:**\n - For 11: 1 pair\n - For 12: 2 pairs\n - For 13: 2 pairs\n - For 14: 2 pairs\n - For 15: 2 pairs\n - For 16: 2 pairs\n\n Adding these up, we get \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\) valid pairs.\n\n6. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes. Therefore, the probability is:\n \\[\n \\frac{11}{36}\n \\]\n\nThus, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, there are 6 possible outcomes for each die.\n\n2. **Calculate the total number of possible two-digit combinations:**\n Since each die is rolled independently, the total number of possible two-digit combinations is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n3. **Determine the two-digit numbers that fall between 10 and 20 inclusive:**\n The two-digit numbers between 10 and 20 are: 10, 11, 12, 13, 14, 15, 16, 17, 18, and 19. There are 10 such numbers.\n\n4. **Identify the combinations that result in these two-digit numbers:**\n - For 10: The combinations are (1, 0) and (0, 1). However, since a die cannot roll a 0, there are no valid combinations for 10.\n - For 11: The combinations are (1, 1).\n - For 12: The combinations are (1, 2) and (2, 1).\n - For 13: The combinations are (1, 3) and (3, 1).\n - For 14: The combinations are (1, 4) and (4, 1).\n - For 15: The combinations are (1, 5) and (5, 1).\n - For 16: The combinations are (1, 6) and (6, 1).\n - For 17: The combinations are (1, 7) and (7, 1). However, since a die cannot roll a 7, there are no valid combinations for 17.\n - For 18: The combinations are (1, 8) and (8, 1). However, since a die cannot roll an 8, there are no valid combinations for 18.\n - For 19: The combinations are (1, 9) and (9, 1). However, since a die cannot roll a 9, there are no valid combinations for 19.\n\n Summarizing the valid combinations:\n - 11: 1 combination\n - 12: 2 combinations\n - 13: 2 combinations\n - 14: 2 combinations\n - 15: 2 combinations\n - 16: 2 combinations\n\n Total number of valid combinations:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n5. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is:\n\\[\n\\boxed{\\frac{11}{36}}\n\\]", "mc_value": 1.0, "children": []}, {"text": "Therefore, there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n2. **Determine the two-digit numbers that can be formed:**\n We need to find all two-digit numbers that can be formed from the numbers rolled on the dice and lie between 10 and 20 inclusive. These numbers are:\n - 11\n - 12\n - 13\n - 14\n - 15\n - 16\n\n3. **Check which of these numbers can be formed:**\n - For 11: Both dice must show 1. This is possible (1, 1).\n - For 12: One die must show 1 and the other must show 2. This is possible (1, 2) or (2, 1).\n - For 13: One die must show 1 and the other must show 3. This is possible (1, 3) or (3, 1).\n - For 14: One die must show 1 and the other must show 4. This is possible (1, 4) or (4, 1).\n - For 15: One die must show 1 and the other must show 5. This is possible (1, 5) or (5, 1).\n - For 16: One die must show 1 and the other must show 6. This is possible (1, 6) or (6, 1).\n\n4. **Count the number of favorable outcomes:**\n - 11: 1 outcome (1, 1)\n - 12: 2 outcomes (1, 2) or (2, 1)\n - 13: 2 outcomes (1, 3) or (3, 1)\n - 14: 2 outcomes (1, 4) or (4, 1)\n - 15: 2 outcomes (1, 5) or (5, 1)\n - 16: 2 outcomes (1, 6) or (6, 1)\n\n Adding these up, we get \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\) favorable outcomes.\n\n5. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, there are 6 possible outcomes for each die.\n\n2. **Calculate the total number of possible two-digit combinations:**\n Since each die is rolled independently, the total number of two-digit combinations is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n3. **Determine the favorable outcomes:**\n We need to find all two-digit numbers that can be formed between 10 and 20 inclusive. These numbers are:\n \\[\n 10, 11, 12, 13, 14, 15, 16\n \\]\n\n4. **Check which of these numbers can be formed by rolling two dice:**\n - \\(10\\): This can be formed by rolling a 1 and a 0, but since a die does not have a 0, it is not possible.\n - \\(11\\): This can be formed by rolling a 1 and a 1.\n - \\(12\\): This can be formed by rolling a 1 and a 2, or a 2 and a 1.\n - \\(13\\): This can be formed by rolling a 1 and a 3, or a 3 and a 1.\n - \\(14\\): This can be formed by rolling a 1 and a 4, or a 4 and a 1.\n - \\(15\\): This can be formed by rolling a 1 and a 5, or a 5 and a 1.\n - \\(16\\): This can be formed by rolling a 1 and a 6, or a 6 and a 1.\n\n5. **Count the number of favorable outcomes:**\n - \\(11\\): 1 way\n - \\(12\\): 2 ways\n - \\(13\\): 2 ways\n - \\(14\\): 2 ways\n - \\(15\\): 2 ways\n - \\(16\\): 2 ways\n\n Adding these up, we get:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n6. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0, "children": []}, {"text": "2. **List the two-digit numbers that can be formed:**\n Since the two-digit number must be between 10 and 20 inclusive, the tens digit must be 1. The units digit can be any number from 1 to 6.", "mc_value": 0.0, "children": []}]}, {"text": "To determine the probability that Melinda will be able to form an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible outcomes for each die:**\n Each die can roll a number from 1 to 6.\n\n2. **List the two-digit numbers that can be formed:**\n Since the two-digit number must be between 10 and 20 inclusive, the tens digit must be 1. The units digit can be any number from 1 to 6.\n\n3. **Count the favorable outcomes:**\n The favorable outcomes are:\n - 11\n - 12\n - 13\n - 14\n - 15\n - 16", "mc_value": 0.0, "children": []}, {"text": "To determine the probability that Melinda will be able to form an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible outcomes for each die:**\n Each die can roll a number from 1 to 6.", "mc_value": 0.1875, "children": [{"text": "Therefore, there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n2. **Determine the integers between 10 and 20 inclusive:**\n The integers between 10 and 20 are: 10, 11, 12, 13, 14, 15, 16, 17, 18, and 19. There are 10 such integers.\n\n3. **Identify the pairs of dice rolls that can form each integer:**\n - For 10: The pairs are (1, 0), but since a die cannot roll a 0, this is not possible.\n - For 11: The pairs are (1, 1).\n - For 12: The pairs are (1, 2) and (2, 1).\n - For 13: The pairs are (1, 3) and (3, 1).\n - For 14: The pairs are (1, 4) and (4, 1).\n - For 15: The pairs are (1, 5) and (5, 1).\n - For 16: The pairs are (1, 6) and (6, 1).\n - For 17: The pairs are (7, 1), but since a die cannot roll a 7, this is not possible.\n - For 18: The pairs are (8, 1), but since a die cannot roll an 8, this is not possible.\n - For 19: The pairs are (9, 1), but since a die cannot roll a 9, this is not possible.\n\n4. **Count the number of successful outcomes:**\n From the above, the successful pairs are:\n - (1, 1)\n - (1, 2)\n - (2, 1)\n - (1, 3)\n - (3, 1)\n - (1, 4)\n - (4, 1)\n - (1, 5)\n - (5, 1)\n - (1, 6)\n - (6, 1)\n\n There are 11 successful outcomes.\n\n5. **Calculate the probability:**\n The probability is the number of successful outcomes divided by the total number of possible outcomes:\n \\[\n \\text{Probability} = \\frac{\\text{Number of successful outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n2. **Determine the integers between 10 and 20 inclusive:**\n The integers between 10 and 20 are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, and 20. There are 11 such integers.\n\n3. **Identify the valid two-digit numbers that can be formed from the dice rolls:**\n - For the number 10, the valid combination is (1, 0), but 0 is not a valid roll on a six-sided die.\n - For the number 11, the valid combinations are (1, 1).\n - For the number 12, the valid combinations are (1, 2) and (2, 1).\n - For the number 13, the valid combinations are (1, 3) and (3, 1).\n - For the number 14, the valid combinations are (1, 4) and (4, 1).\n - For the number 15, the valid combinations are (1, 5) and (5, 1).\n - For the number 16, the valid combinations are (1, 6) and (6, 1).\n - For the number 17, there are no valid combinations since 7 is not a valid roll on a six-sided die.\n - For the number 18, there are no valid combinations since 8 is not a valid roll on a six-sided die.\n - For the number 19, there are no valid combinations since 9 is not a valid roll on a six-sided die.\n - For the number 20, there are no valid combinations since 20 is not a valid two-digit number formed by two six-sided dice.\n\n4. **Count the total number of valid combinations:**\n - From 11: 1 combination\n - From 12: 2 combinations\n - From 13: 2 combinations\n - From 14: 2 combinations\n - From 15: 2 combinations\n - From 16: 2 combinations\n\n Adding these up, we get \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\) valid combinations.\n\n5. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n2. **Determine the two-digit numbers that can be formed:**\n A two-digit number can be formed by placing the number rolled on the first die in the tens place and the number rolled on the second die in the units place, or vice versa. For example, if the first die shows 2 and the second die shows 3, the numbers that can be formed are 23 and 32.\n\n3. **Identify the two-digit numbers between 10 and 20 inclusive:**\n The two-digit numbers between 10 and 20 are 11, 12, 13, 14, 15, and 16.\n\n4. **Count the favorable outcomes:**\n - For 11: The only way to form 11 is if both dice show 1. This gives us 1 favorable outcome.\n - For 12: The numbers that can be formed are 12 and 21. This gives us 2 favorable outcomes.\n - For 13: The numbers that can be formed are 13 and 31. This gives us 2 favorable outcomes.\n - For 14: The numbers that can be formed are 14 and 41. This gives us 2 favorable outcomes.\n - For 15: The numbers that can be formed are 15 and 51. This gives us 2 favorable outcomes.\n - For 16: The numbers that can be formed are 16 and 61. This gives us 2 favorable outcomes.\n\n Adding these up, the total number of favorable outcomes is:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n5. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n2. **Determine the two-digit numbers that can be formed:**\n Melinda can form a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can form 36 or 63.\n\n3. **Identify the two-digit numbers between 10 and 20 inclusive:**\n The two-digit numbers between 10 and 20 are: 11, 12, 13, 14, 15, 16.\n\n4. **Determine the combinations of dice rolls that result in these numbers:**\n - For 11: Melinda rolls a 1 and a 1.\n - For 12: Melinda rolls a 1 and a 2, or a 2 and a 1.\n - For 13: Melinda rolls a 1 and a 3, or a 3 and a 1.\n - For 14: Melinda rolls a 1 and a 4, or a 4 and a 1.\n - For 15: Melinda rolls a 1 and a 5, or a 5 and a 1.\n - For 16: Melinda rolls a 1 and a 6, or a 6 and a 1.\n\n Each number has 2 combinations except for 11, which has only 1 combination.\n\n5. **Count the total number of favorable outcomes:**\n - 11: 1 combination\n - 12: 2 combinations\n - 13: 2 combinations\n - 14: 2 combinations\n - 15: 2 combinations\n - 16: 2 combinations\n\n Adding these up, we get:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n6. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0, "children": []}, {"text": "Therefore, there are 6 possible outcomes for each die.\n\n2. **Calculate the total number of possible two-digit combinations:**\n Since each die is rolled independently, the total number of possible two-digit combinations is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n3. **Determine the favorable outcomes:**\n We need to find the two-digit numbers between 10 and 20 inclusive that can be formed using the numbers rolled on the dice. The possible two-digit numbers in this range are:\n - 11\n - 12\n - 13\n - 14\n - 15\n - 16\n\n4. **Check which of these numbers can be formed:**\n - **11**: This can be formed by rolling a 1 on both dice.\n - **12**: This can be formed by rolling a 1 on the first die and a 2 on the second die, or by rolling a 2 on the first die and a 1 on the second die.\n - **13**: This can be formed by rolling a 1 on the first die and a 3 on the second die, or by rolling a 3 on the first die and a 1 on the second die.\n - **14**: This can be formed by rolling a 1 on the first die and a 4 on the second die, or by rolling a 4 on the first die and a 1 on the second die.\n - **15**: This can be formed by rolling a 1 on the first die and a 5 on the second die, or by rolling a 5 on the first die and a 1 on the second die.\n - **16**: This can be formed by rolling a 1 on the first die and a 6 on the second die, or by rolling a 6 on the first die and a 1 on the second die.\n\n Each of these numbers can be formed in 2 different ways (except 11, which can only be formed in 1 way).\n\n5. **Count the total number of favorable outcomes:**\n - 11: 1 way\n - 12: 2 ways\n - 13: 2 ways\n - 14: 2 ways\n - 15: 2 ways\n - 16: 2 ways\n\n Adding these up:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n6. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is:\n\\[\n\\boxed{\\frac{11}{36}}\n\\]", "mc_value": 1.0, "children": []}, {"text": "Therefore, there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n2. **Determine the two-digit numbers that can be formed:**\n For a two-digit number to be between 10 and 20 inclusive, the tens digit must be 1, and the units digit can be any digit from 1 to 6. This gives us the numbers: 11, 12, 13, 14, 15, and 16.\n\n3. **Count the favorable outcomes:**\n - To form 11, Melinda can roll (1, 1).\n - To form 12, Melinda can roll (1, 2) or (2, 1).\n - To form 13, Melinda can roll (1, 3) or (3, 1).\n - To form 14, Melinda can roll (1, 4) or (4, 1).\n - To form 15, Melinda can roll (1, 5) or (5, 1).\n - To form 16, Melinda can roll (1, 6) or (6, 1).\n\n Each number from 11 to 16 can be formed in 2 different ways (except 11, which can be formed in 1 way). Therefore, the total number of favorable outcomes is:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n4. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nThus, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0, "children": []}, {"text": "2. **List the two-digit numbers that can be formed:**\n Since the two-digit number must be between 10 and 20 inclusive, the tens digit must be 1. The units digit can be any number from 1 to 6.", "mc_value": 0.03125, "children": [{"text": "Therefore, the possible two-digit numbers are:\n \\[\n 11, 12, 13, 14, 15, 16\n \\]\n\n3. **Determine the favorable outcomes:**\n We need to find the pairs of rolls that result in the numbers 11, 12, 13, 14, 15, and 16.\n - For 11: (1, 1)\n - For 12: (1, 2) or (2, 1)\n - For 13: (1, 3) or (3, 1)\n - For 14: (1, 4) or (4, 1)\n - For 15: (1, 5) or (5, 1)\n - For 16: (1, 6) or (6, 1)\n\n Each number has 2 possible pairs of rolls, except for 11, which has only 1 pair. Therefore, the total number of favorable outcomes is:\n \\[\n 1 + 2 \\times 5 = 1 + 10 = 11\n \\]\n\n4. **Calculate the total number of possible outcomes:**\n Since each die has 6 faces, the total number of possible outcomes when rolling two dice is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n5. **Determine the probability:**\n The probability of forming a two-digit number between 10 and 20 inclusive is the ratio of the number of favorable outcomes to the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nThus, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is:\n\\[\n\\boxed{\\frac{11}{36}}\n\\]", "mc_value": 1.0, "children": []}]}]}]}, "question_id": 1} diff --git a/preprocess/tests/samples_math-aps.json b/preprocess/tests/samples_math-aps.json new file mode 100644 index 0000000..32e1a15 --- /dev/null +++ b/preprocess/tests/samples_math-aps.json @@ -0,0 +1 @@ +[{"q": "Find the sum of all integers $k$ such that $\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}$.", "states": [{"rollout": " To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r = 4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, i.e., \\(\\binom{24}{k} = \\binom{24}{24-k}\\).", "state": "", "mcs": 0.6307692307692307}, {"rollout": " To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r = 4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, i.e., \\(\\binom{24}{k} = \\binom{24}{24-k}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =", "mcs": 0.95}, {"rollout": " 4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, i.e., \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(k\\) can be either 5 or 19. The sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =", "mcs": 0.95}, {"rollout": " 4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, i.e., \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(k\\) can be either 5 or 19. The sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, i.e.,", "mcs": 0.9}, {"rollout": " \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(\\binom{24}{k} = \\binom{24}{5}\\) has two solutions: \\(k = 5\\) and \\(k = 24 - 5 = 19\\).\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, i.e.,", "mcs": 0.9}, {"rollout": " 4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(k\\) can be either 5 or 19. The sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =", "mcs": 0.95}, {"rollout": " \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, i.e.,", "mcs": 0.9}, {"rollout": " 4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is equal to \\(\\binom{24}{5}\\) if and only if \\(k = 5\\) or \\(k = 24 - 5 = 19\\). Therefore, the possible values for \\(k\\) are 5 and 19.\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =", "mcs": 0.95}, {"rollout": " \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, i.e.,", "mcs": 0.9}, {"rollout": " \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, i.e.,", "mcs": 0.9}, {"rollout": " 4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\). The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =", "mcs": 0.95}, {"rollout": " 4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\). The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).", "mcs": 0.9}, {"rollout": " Therefore, \\(k\\) can be either 5 or 19. The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).", "mcs": 0.9}, {"rollout": " Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).", "mcs": 0.9}, {"rollout": " Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " Therefore, \\(k\\) can be either 5 or 19. The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom[23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).", "mcs": 0.9}, {"rollout": " Therefore, \\(k\\) can be either 5 or 19. The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom[23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or 19. The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus,", "mcs": 0.8}, {"rollout": " the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or 19. The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus,", "mcs": 0.8}, {"rollout": " the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or 19. The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus,", "mcs": 0.8}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or 19. The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus,", "mcs": 0.8}, {"rollout": " Therefore, we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).", "mcs": 0.9}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients:\n\n\\[\n\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\n\\]\n\nIn this problem, we can apply the identity with \\(n = 23\\) and \\(r = 4\\):\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThus, we have:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{2", "state": "", "mcs": 0.6307692307692307}, {"rollout": " Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\). The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{24}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).", "mcs": 0.9}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or 19. The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus,", "mcs": 0.8}, {"rollout": " \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]```", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, i.e.,", "mcs": 0.9}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " 4\\), so we can rewrite the left-hand side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies the equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(k\\) can be either 5 or 19. To verify, we check both values:\n\n1. If \\(k = 5\\), then \\(\\binom{24}{5} = \\binom{24}{5}\\), which is true.\n2. If \\(k = 19\\), then \\(\\binom{2", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =", "mcs": 0.95}, {"rollout": " 4\\), so we can rewrite the left-hand side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies the equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(k\\) can be either 5 or 19. To verify, we check both values:\n\n1. If \\(k = 5\\), then \\(\\binom{24}{5} = \\binom{24}{5}\\), which is true.\n2. If \\(k = 19\\), then \\(\\binom{2", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left-hand side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies the equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{24}{k}\\)", "mcs": 0.8}, {"rollout": " is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\). The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left-hand side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies the equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{24}{k}\\)", "mcs": 0.8}, {"rollout": " is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\). The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left-hand side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies the equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{24}{k}\\)", "mcs": 0.8}, {"rollout": " is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\). The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left-hand side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies the equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{24}{k}\\)", "mcs": 0.8}, {"rollout": " Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\). The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23\u5176\u4e2d\u4e00\u4e2a\u05e7\u05d5\u05d3} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).", "mcs": 0.9}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\). The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left-hand side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies the equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{24}{k}\\)", "mcs": 0.8}, {"rollout": " \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\). The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, i.e.,", "mcs": 0.9}, {"rollout": " satisfy this equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or 19. The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus,", "mcs": 0.8}, {"rollout": " satisfy this equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " 4\\), so we can rewrite the left-hand side of the equation as:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies the equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{24}{k}\\) is equal to \\(\\binom{24}{5}\\) if and only if \\(k = 5\\) or \\(k = 24 - 5 = 19\\). Therefore, the possible values of \\(k\\) are 5 and 19. The sum of these values is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =", "mcs": 0.95}, {"rollout": " Therefore, we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).", "mcs": 0.9}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the final answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\). The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, i.e.,", "mcs": 0.9}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " 4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{n}{r}\\) is equal to \\(\\binom{n}{n-r}\\), so we also have:\n\n\\[\n\\binom{24}{5} = \\binom{24}{19}\n\\]\n\nTherefore, the possible values for \\(k\\) are 5 and 19. To find the sum of all integers \\(k\\) that satisfy the equation, we add these two values together:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =", "mcs": 0.95}, {"rollout": " the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or 19. The sum of all possible values of \\(k\\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus,", "mcs": 0.8}, {"rollout": " To find the sum of all integers \\( k \\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients, which states that \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Applying this identity with \\( n = 23 \\) and \\( r = 4 \\), we get:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThus, the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) simplifies to:\n\n\\[\n\\binom{24}{5} = \\binom{", "state": "", "mcs": 0.6307692307692307}, {"rollout": " To find the sum of all integers \\( k \\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients, which states that \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Applying this identity with \\( n = 23 \\) and \\( r = 4 \\), we get:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThus, the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) simplifies to:\n\n\\[\n\\binom{24}{5} = \\binom{", "state": "To find the sum of all integers \\( k \\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients, which states that \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\).", "mcs": 0.7}, {"rollout": " Applying this identity with \\( n = 23 \\) and \\( r = 4 \\), we get:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThus, the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) simplifies to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\( k \\) can be either 5 or 19. The sum of all possible values of \\( k \\) is:\n\n\\[\n5 + 19 = 24", "state": "To find the sum of all integers \\( k \\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients, which states that \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\).", "mcs": 0.7}, {"rollout": " Applying this identity with \\( n = 23 \\) and \\( r = 4 \\), we get:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThus, the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) simplifies to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\( k \\) can be either 5 or \\( 24-5 = 19 \\). The sum of all possible values of \\( k \\) is:\n\n\\[\n5", "state": "To find the sum of all integers \\( k \\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients, which states that \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\).", "mcs": 0.7}, {"rollout": " Here, \\( n = 23 \\) and \\( r = 4 \\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, \\( k \\) can be either 5 or \\( 24-5 = 19 \\). The sum of all possible values of \\( k \\) is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\( k \\) such that \\(\\binom{23}{4} + \\binom", "state": "To find the sum of all integers \\( k \\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients, which states that \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\).", "mcs": 0.7}, {"rollout": " is equal to \\(\\binom{24}{5}\\) if and only if \\(k = 5\\) or \\(k = 24 - 5 = 19\\). Therefore, the integers \\(k\\) that satisfy the equation are 5 and 19.\n\nTo find the sum of all integers \\(k\\), we add these two values together:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left-hand side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies the equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{24}{k}\\)", "mcs": 0.8}, {"rollout": " Therefore, \\(k\\) can be either 5 or 19. To find the sum of all possible values of \\(k\\), we add these two values together:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) such that \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).", "mcs": 0.9}, {"rollout": " satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis tells us that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, meaning \\(\\binom{24}{k} = \\binom{24}{24-k}\\).Therefore, \\(k\\) can be either 5 or \\(24-5 = 19\\).\n\nThe sum of all integers \\(k\\) that", "mcs": 0.95}, {"rollout": " \\(\\binom{24}{k} = \\binom{24}{24-k}\\). Therefore, we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we have:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis means that \\(\\binom{24}{k} = \\binom{24}{5}\\). The binomial coefficient \\(\\binom{24}{k}\\) is symmetric, i.e.,", "mcs": 0.9}, {"rollout": " 4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) is equal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =", "mcs": 0.95}, {"rollout": " 4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) is equal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) is", "mcs": 0.8}, {"rollout": " 4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) is equal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =", "mcs": 0.95}, {"rollout": " 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =", "mcs": 0.95}, {"rollout": " equal to \\(\\binom{n}{n-r}\\). Therefore, we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) is", "mcs": 0.8}, {"rollout": " 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =", "mcs": 0.95}, {"rollout": " symmetric, meaning \\(\\binom{n}{r} = \\binom{n}{n-r}\\). Therefore, we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) is", "mcs": 0.8}, {"rollout": " 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy this equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =", "mcs": 0.95}, {"rollout": " 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy this equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =", "mcs": 0.95}, {"rollout": " symmetric, meaning \\(\\binom{n}{r} = \\binom{n}{n-r}\\). Therefore, we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the final answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) is", "mcs": 0.8}, {"rollout": " 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nTherefore, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =", "mcs": 0.95}, {"rollout": " 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nTherefore, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =", "mcs": 0.95}, {"rollout": " 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nTherefore, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =", "mcs": 0.95}, {"rollout": " equal to \\(\\binom{n}{n-r}\\). Therefore, \\(\\binom{24}{5} = \\binom{24}{19}\\). This gives us two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) is", "mcs": 0.8}, {"rollout": " 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy this equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nTherefore, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =", "mcs": 0.95}, {"rollout": " 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =", "mcs": 0.95}, {"rollout": " 19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5 + 19 = 24\n\\]\n\nThus, the sum of all integers \\(k\\) is \\(\\boxed{24}\\).", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5", "mcs": 0.95}, {"rollout": " + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5", "mcs": 0.95}, {"rollout": " + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5", "mcs": 0.95}, {"rollout": " + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5", "mcs": 0.95}, {"rollout": " + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, the", "mcs": 0.8}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, the", "mcs": 0.8}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, the", "mcs": 0.8}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, the", "mcs": 0.8}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theansweris:\n\n\\[\n\\boxed{24}\n\\", "mcs": 0.0}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theansweris:\n\n\\[\n\\boxed{24}", "mcs": 0.0}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theansweris:\n\n\\[\n\\boxed{24", "mcs": 0.0}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theansweris:\n\n\\[\n\\boxed{2", "mcs": 0.0}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5", "mcs": 0.95}, {"rollout": " + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, the", "mcs": 0.8}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, the", "mcs": 0.8}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, the", "mcs": 0.8}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, the", "mcs": 0.8}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5", "mcs": 0.95}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, the", "mcs": 0.8}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theansweris:\n\n\\[\n\\boxed{24}\n\\", "mcs": 0.0}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theansweris:\n\n\\[\n\\boxed{24}", "mcs": 0.0}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theansweris:\n\n\\[\n\\boxed{24", "mcs": 0.0}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theansweris:\n\n\\[\n\\boxed{2", "mcs": 0.0}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, the", "mcs": 0.8}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5", "mcs": 0.95}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, theanswer", "mcs": 0.95}, {"rollout": " + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5", "mcs": 0.95}, {"rollout": " + 19 = 24\n\\]\n\nThus, the answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, the", "mcs": 0.8}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, the", "mcs": 0.8}, {"rollout": " answer is:\n\n\\[\n\\boxed{24}\n\\]", "state": "To solve the equation \\(\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{k}\\), we start by using the identity for binomial coefficients that states \\(\\binom{n}{r} + \\binom{n}{r+1} = \\binom{n+1}{r+1}\\). Here, \\(n = 23\\) and \\(r =4\\), so we can rewrite the left side of the equation as follows:\n\n\\[\n\\binom{23}{4} + \\binom{23}{5} = \\binom{24}{5}\n\\]\n\nThis simplifies our original equation to:\n\n\\[\n\\binom{24}{5} = \\binom{24}{k}\n\\]\n\nThe binomial coefficient \\(\\binom{n}{r}\\) isequal to \\(\\binom{n}{n-r}\\), so we have two possible values for \\(k\\):\n\n\\[\nk = 5 \\quad \\text{or} \\quad k = 24 - 5 =19\n\\]\n\nThe sum of all integers \\(k\\) that satisfy the equation is:\n\n\\[\n5+ 19 = 24\n\\]\n\nThus, the", "mcs": 0.8}]}] \ No newline at end of file diff --git a/preprocess/tests/samples_math-aps.jsonl b/preprocess/tests/samples_math-aps.jsonl deleted file mode 100644 index 79ab189..0000000 --- a/preprocess/tests/samples_math-aps.jsonl +++ /dev/null @@ -1,3 +0,0 @@ -{"question": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$", "final_answer": "64", "reasoning_steps": [{"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$", "mc_value": 0.75}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nTo solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\), we start by analyzing the given conditions: the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This can be rewritten as \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at these roots and at \\(x = c\\) (where the expression is undefined).\n\nGiven the intervals where the inequality holds, we can infer the following:\n1. The roots \\(a\\) and \\(b\\) must be at \\(x = 24\\) and \\(x = 26\\) because the inequality is zero at these points.\n2. The value \\(c\\) must be at \\(x = -4\\) because the inequality is undefined at this point.\n\nSince \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). Therefore, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given conditions.\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nTo solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\) given that the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we start by analyzing the conditions provided.\n\nThe inequality \\(|x-25| \\le 1\\) can be rewritten as:\n\\[24 \\le x \\le 26.\\]\nThis means that the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) is true for \\(x < -4\\) and \\(24 \\le x \\le 26\\). The roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nGiven that the inequality is true for \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can infer that the roots \\(a\\) and \\(b\\) must be at \\(x = 24\\) and \\(x = 26\\) (with \\(a < b\\)), and the root \\(c\\) must be at \\(x = -4\\) (where the inequality is undefined and changes sign). Therefore, we have:\n\\[a = 24, \\quad b = 26, \\quad c = -4.\\]\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[a + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\n\nTo solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\), we need to analyze the intervals where the expression is non-positive. The given condition is that the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means that the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The expression \\(\\frac{(x-a)(x-b)}{x-c}\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\n\nTo solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\) given that the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we need to analyze the critical points and the intervals where the inequality holds.\n\nFirst, let's rewrite the inequality \\(|x-25| \\le 1\\):\n\\[\n|x-25| \\le 1 \\implies -1 \\le x-25 \\le 1 \\implies 24 \\le x \\le 26\n\\]\nSo, the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) is true for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe critical points of the inequality are \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality changes sign at these points, we need to determine the order of these points and the intervals they create. Given that \\(a < b\\), we can consider the following possible order of the critical points: \\(a < c < b\\), \\(a < b < c\\), \\(c < a < b\\), \\(c < b < a\\), \\(b < c < a\\), or \\(b < a < c\\). However, since the inequality is true for \\(x < -4\\) or \\(24 \\le x \\le 26\\), we can infer that \\(c = -4\\), \\(a = 24\\), and \\(b = 26\\).\n\nLet's verify this:\n- For \\(x < -4\\), the expression \\(\\frac{(x-24)(x-26)}{x+4}\\) is negative because \\((x-24)\\) and \\((x-26)\\) are negative and \\((x+4)\\) is negative, so the product is negative.\n- For \\(24 \\le x \\le 26\\), the expression \\(\\frac{(x-24)(x-26)}{x+4}\\) is non-positive because \\((x-24)\\) and \\((x-26)\\) have opposite signs and \\((x+4)\\) is positive, so the product is non-positive.\n- For \\(x > 26\\), the expression \\(\\frac{(x-24)(x-26)}{x+4}\\) is positive because \\((x-24)\\) and \\((x-26)\\) are positive and \\((x+4)\\) is positive, so the product is positive.\n\nThus, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) is true if and only if \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given condition.\n\nTherefore, the values of \\(a\\), \\(b\\), and \\(c\\) are \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nThe final answer is:\n\\[\n\\boxed{64}\n\\]", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and the conditions that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we need to determine the values of \\(a\\), \\(b\\), and \\(c\\).\n\nFirst, let's rewrite the condition \\(|x-25| \\le 1\\):\n\\[\n|x-25| \\le 1 \\implies -1 \\le x-25 \\le 1 \\implies 24 \\le x \\le 26.\n\\]\nSo, the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\). This means that the roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots.\n\nSince the inequality is true for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\). Therefore, we have:\n\\[\na = 24, \\quad b = 26, \\quad c = -4.\n\\]\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\n\nTo solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\) given that the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we start by analyzing the conditions provided.\n\nThe condition \\(|x-25| \\le 1\\) can be rewritten as:\n\\[24 \\le x \\le 26.\\]\nThis means that the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) is true for \\(x < -4\\) or \\(24 \\le x \\le 26\\). The roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality changes sign at these roots.\n\nSince the inequality is true for \\(x < -4\\) and \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\). Therefore, we have:\n\\[a = 24, \\quad b = 26, \\quad c = -4.\\]\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[a + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\n\nTo solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\) given that the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we need to analyze the intervals where the inequality holds.\n\nFirst, let's rewrite the condition \\(|x-25| \\le 1\\):\n\\[\n|x-25| \\le 1 \\implies -1 \\le x-25 \\le 1 \\implies 24 \\le x \\le 26\n\\]\n\nSo, the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) is true for \\(x < -4\\) and \\(24 \\le x \\le 26\\).\n\nNext, we analyze the critical points of the rational function \\(\\frac{(x-a)(x-b)}{x-c}\\), which are \\(x = a\\), \\(x = b\\), and \\(x = c\\). These points divide the real number line into intervals. We need to determine the sign of the expression in each interval.\n\nGiven the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can infer the following:\n1. The expression changes sign at \\(x = -4\\), \\(x = 24\\), and \\(x = 26\\).\n2. Since \\(a < b\\), \\(a\\) and \\(b\\) must be within the interval \\([24, 26]\\) or outside the interval \\([24, 26]\\).\n\nLet's consider the possible positions of \\(a\\), \\(b\\), and \\(c\\):\n- If \\(a\\) and \\(b\\) are within the interval \\([24, 26]\\), then \\(c\\) must be outside this interval to ensure the inequality holds for \\(x < -4\\) and \\(24 \\le x \\le 26\\).\n\nSince \\(a < b\\), we can assume:\n- \\(a = 24\\)\n- \\(b = 26\\)\n- \\(c = -4\\)\n\nNow, we verify these values:\n- For \\(x < -4\\), all factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are negative, so \\(\\frac{(x-24)(x-26)}{x+4} > 0\\).\n- For \\(24 \\le x < 26\\), \\((x-24) \\ge 0\\), \\((x-26) < 0\\), and \\((x+4) > 0\\), so \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\).\n- For \\(x = 24\\), \\(\\frac{(24-24)(24-26)}{24+4} = 0\\).\n- For \\(x = 26\\), \\(\\frac{(26-24)(26-26)}{26+4} = 0\\).\n- For \\(x > 26\\), all factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are positive, so \\(\\frac{(x-24)(x-26)}{x+4} > 0\\).\n\nThus, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) is satisfied for \\(x < -4\\) and \\(24 \\le x \\le 26\\), which matches the given conditions.\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nTo solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) given that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we need to analyze the critical points and intervals where the inequality holds.\n\nFirst, let's rewrite the inequality in terms of intervals:\n\\[ |x-25| \\le 1 \\]\nThis inequality can be rewritten as:\n\\[ 24 \\le x \\le 26 \\]\n\nSo, the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) holds for:\n\\[ x < -4 \\quad \\text{or} \\quad 24 \\le x \\le 26 \\]\n\nThis implies that the roots of the numerator \\((x-a)(x-b)\\) and the root of the denominator \\(x-c\\) must be at the points \\(-4\\), \\(24\\), and \\(26\\). Since \\(a < b\\), we can assign:\n\\[ a = 24, \\quad b = 26, \\quad c = -4 \\]\n\nNow, we need to verify that these values satisfy the given inequality. The inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) will change signs at \\(x = -4\\), \\(x = 24\\), and \\(x = 26\\). We can test the intervals determined by these points: \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n1. For \\(x \\in (-\\infty, -4)\\), all factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are negative, so \\(\\frac{(x-24)(x-26)}{x+4} > 0\\).\n2. For \\(x \\in (-4, 24)\\), \\((x-24)\\) and \\((x-26)\\) are negative, and \\((x+4)\\) is positive, so \\(\\frac{(x-24)(x-26)}{x+4} < 0\\).\n3. For \\(x \\in (24, 26)\\), \\((x-24)\\) is positive, \\((x-26)\\) is negative, and \\((x+4)\\) is positive, so \\(\\frac{(x-24)(x-26)}{x+4} < 0\\).\n4. For \\(x \\in (26, \\infty)\\), all factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are positive, so \\(\\frac{(x-24)(x-26)}{x+4} > 0\\).\n\nAt the critical points:\n- At \\(x = -4\\), the expression is undefined.\n- At \\(x = 24\\), the expression is zero.\n- At \\(x = 26\\), the expression is zero.\n\nThus, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given condition.\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[ a + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64 \\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\n\nTo solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\), we need to analyze the given conditions: the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at these roots. Given the intervals where the inequality holds, we can infer that the roots \\(a\\) and \\(b\\) must be 24 and 26, and the root \\(c\\) must be -4. Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\n\nTo solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\) given that the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\), we need to analyze the intervals where the inequality holds.\n\nFirst, let's rewrite the condition \\(|x-25| \\le 1\\):\n\\[\n|x-25| \\le 1 \\implies -1 \\le x-25 \\le 1 \\implies 24 \\le x \\le 26\n\\]\n\nSo, the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) holds for \\(x < -4\\) and \\(24 \\le x \\le 26\\).\n\nNext, we need to determine the critical points of the inequality \\(\\frac{(x-a)(x-b)}{x-c}\\). These critical points are the roots of the numerator \\((x-a)(x-b) = 0\\) and the root of the denominator \\(x-c = 0\\). Therefore, the critical points are \\(x = a\\), \\(x = b\\), and \\(x = c\\).\n\nGiven that the inequality holds for \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can infer the following about the critical points:\n- \\(a\\) and \\(b\\) must be the endpoints of the interval \\([24, 26]\\), and since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n- \\(c\\) must be the point that makes the denominator zero and is not included in the intervals where the inequality holds. Therefore, \\(c\\) must be \\(-4\\).\n\nNow, we have:\n\\[\na = 24, \\quad b = 26, \\quad c = -4\n\\]\n\nWe need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4)\n\\]\n\nCalculate each term:\n\\[\n2(26) = 52\n\\]\n\\[\n3(-4) = -12\n\\]\n\nAdd these values together:\n\\[\n24 + 52 - 12 = 64\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is:\n\\[\n\\boxed{64}\n\\]", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\n\nTo solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\), we need to analyze the given conditions: the inequality is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means that the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will change signs at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Given the intervals where the inequality holds, we can infer the following:\n\n1. The roots \\(a\\) and \\(b\\) must be at the endpoints of the interval \\([24, 26]\\), and since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n2. The root \\(c\\) must be at the boundary of the interval \\((-4, 24)\\) or \\((26, \\infty)\\), but since the inequality does not hold at \\(x = -4\\) (it is strictly less than), \\(c\\) must be at \\(x = -4\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\n\nTo solve the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) and determine the values of \\(a\\), \\(b\\), and \\(c\\), we need to analyze the intervals where the inequality holds. The inequality is satisfied if and only if \\(x < -4\\) or \\(|x-25| \\le 1\\). This means that the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at these roots. Therefore, the roots \\(a\\) and \\(b\\) must be at the endpoints of the intervals where the inequality is satisfied, and the root \\(c\\) must be a point where the inequality is undefined, i.e., \\(c\\) must be a value that makes the denominator zero.\n\nFrom the given intervals, we can see that the roots \\(a\\) and \\(b\\) must be 24 and 26, and since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). The root of the denominator \\(c\\) must be \\(-4\\), so \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\nFrom the given intervals, we can deduce that \\(c = 24\\) because the inequality is undefined at \\(x = c\\) and the interval \\((-4, 24)\\) is not included in the solution set. This leaves us with the roots \\(a\\) and \\(b\\) such that the inequality changes sign at \\(x = a\\) and \\(x = b\\) within the intervals \\((-\\infty, -4)\\) and \\([24, 26]\\). Since \\(a < b\\), we have \\(a = -4\\) and \\(b = 26\\).", "mc_value": 0.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).", "mc_value": 0.9375}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b) = 0\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c = 0\\) is \\(x = c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), we can infer that the roots \\(a\\) and \\(b\\) must be 24 and 26, and the root of the denominator \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be 24 and 26 (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The critical points of the inequality are \\(a\\), \\(b\\), and \\(c\\), and they must be the points where the expression changes sign. Therefore, the critical points are \\(-4\\), \\(24\\), and \\(26\\).\n\nSince \\(a < b\\), we can assign \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). This is because the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) will change sign at \\(x = 24\\), \\(x = 26\\), and \\(x = -4\\), and it will be negative in the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be at \\(x = 24\\) and \\(x = 26\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). The value of \\(c\\) must be at \\(x = -4\\) because the inequality is undefined at \\(x = c\\) and the inequality changes sign at \\(x = -4\\). Therefore, \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The critical points of the inequality are \\(x = a\\), \\(x = b\\), and \\(x = c\\), and these points must be the boundaries of the intervals where the inequality changes sign.\n\nSince \\(a < b\\), we can infer that the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\), and the root \\(c\\) must be \\(-4\\). This is because the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) will change sign at \\(x = 24\\), \\(x = 26\\), and \\(x = -4\\), and it will be non-positive in the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be at \\(x = 24\\) and \\(x = 26\\), and the root \\(c\\) must be at \\(x = -4\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nWe need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\) and \\(b\\) must be 24 and 26 (with \\(a < b\\)), and \\(c\\) must be \\(-4\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Therefore, the critical points are \\(a\\), \\(b\\), and \\(c\\).\n\nFrom the given conditions, we can infer that the critical points must be \\(-4\\), \\(24\\), and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to verify that these values satisfy the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\).\n\nThe critical points divide the real number line into four intervals: \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\). We test a point in each interval to determine the sign of the expression \\(\\frac{(x-24)(x-26)}{x+4}\\):\n\n1. For \\(x \\in (-\\infty, -4)\\), choose \\(x = -5\\):\n \\[\n \\frac{(-5-24)(-5-26)}{-5+4} = \\frac{(-29)(-31)}{-1} = -899 < 0.\n \\]\n So, the inequality is satisfied in \\((- \\infty, -4)\\).\n\n2. For \\(x \\in (-4, 24)\\), choose \\(x = 0\\):\n \\[\n \\frac{(0-24)(0-26)}{0+4} = \\frac{(-24)(-26)}{4} = 156 > 0.\n \\]\n So, the inequality is not satisfied in \\((-4, 24)\\).\n\n3. For \\(x \\in (24, 26)\\), choose \\(x = 25\\):\n \\[\n \\frac{(25-24)(25-26)}{25+4} = \\frac{(1)(-1)}{29} = -\\frac{1}{29} < 0.\n \\]\n So, the inequality is satisfied in \\((24, 26)\\).\n\n4. For \\(x \\in (26, \\infty)\\), choose \\(x = 27\\):\n \\[\n \\frac{(27-24)(27-26)}{27+4} = \\frac{(3)(1)}{31} = \\frac{3}{31} > 0.\n \\]\n So, the inequality is not satisfied in \\((26, \\infty)\\).\n\nAt the critical points \\(x = -4\\), \\(x = 24\\), and \\(x = 26\\), the expression \\(\\frac{(x-24)(x-26)}{x+4}\\) is zero at \\(x = 24\\) and \\(x = 26\\), and undefined at \\(x = -4\\). Therefore, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given conditions.\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be \\(-4\\), \\(24\\), and \\(26\\) in some order.\n\nSince \\(a < b\\), and the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), we can deduce the following:\n- The root \\(-4\\) must be \\(c\\) because the inequality is not defined at \\(x = c\\) and it changes sign at \\(-4\\).\n- The roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) with \\(a = 24\\) and \\(b = 26\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nSince the inequality is true for \\(x < -4\\) and \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be at \\(x = 24\\) and \\(x = 26\\). Without loss of generality, let \\(a = 24\\) and \\(b = 26\\). The value of \\(c\\) must be at \\(x = -4\\) because the inequality is undefined at \\(x = c\\) and the inequality is true for \\(x < -4\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality is satisfied in the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can deduce that the roots \\(a\\) and \\(b\\) must be 24 and 26, and the root \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots.\n\nSince the inequality is satisfied for \\(x < -4\\) and \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nWe need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots. Therefore, the critical points are \\(a\\), \\(b\\), and \\(c\\).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\). This is because the inequality changes sign at \\(24\\), \\(26\\), and \\(-4\\), and the sign of the expression \\(\\frac{(x-24)(x-26)}{x+4}\\) must be negative in the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b) = 0\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c = 0\\) is \\(x = c\\). The critical points are \\(a\\), \\(b\\), and \\(c\\), and they divide the real number line into intervals. We need to determine the values of \\(a\\), \\(b\\), and \\(c\\) such that the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) holds in the intervals \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nSince \\(a < b\\), we can assume without loss of generality that \\(a\\) and \\(b\\) are the roots of the numerator and \\(c\\) is the root of the denominator. The inequality changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Given the intervals where the inequality holds, we can deduce that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). This is because the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values corresponds to \\(a\\), \\(b\\), and \\(c\\).\n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = c\\) where the expression is undefined, and it will change sign at \\(x = a\\) and \\(x = b\\). The interval \\(x < -4\\) indicates that \\(-4\\) is a root of the numerator and the inequality is negative to the left of \\(-4\\). The interval \\(24 \\le x \\le 26\\) indicates that \\(24\\) and \\(26\\) are roots of the numerator and the inequality is non-positive between these two values. Therefore, we can conclude that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, and the inequality is satisfied in the intervals determined by these roots.\n\nFrom the given conditions, we can infer that the roots \\(a\\) and \\(b\\) must be 24 and 26, and the root \\(c\\) must be \\(-4\\). Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). Therefore, \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes signs at \\(x = a\\), \\(x = b\\), and \\(x = c\\).\n\nSince the inequality is true for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be at \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be at \\(-4\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality is satisfied in the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be 24 and 26, and the root \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b) = 0\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c = 0\\) is \\(x = c\\).\n\nSince the inequality changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\), these points must be the boundary points of the intervals where the inequality holds. Therefore, \\(a\\) and \\(b\\) must be 24 and 26, and \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator are \\(x = a\\) and \\(x = b\\), and the root of the denominator is \\(x = c\\). The inequality changes sign at these roots, so the roots must be at the boundaries of the intervals where the inequality holds. Therefore, we can conclude that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\), and the root \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The critical points of the inequality are \\(a\\), \\(b\\), and \\(c\\), and these points divide the real number line into intervals where the expression changes sign.\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the critical points must be \\(-4\\), \\(24\\), and \\(26\\). Given that \\(a < b\\), we can assign \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). This is because the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) will be satisfied in the intervals \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots and at \\(x = c\\) (where it is undefined).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\), and the root \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nWe need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The critical points where the expression changes sign are \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality is non-positive in the intervals \\((-\\infty, -4)\\) and \\([24, 26]\\), and the expression is undefined at \\(x = c\\), we can infer that \\(c = -4\\).\n\nNext, we need to determine the values of \\(a\\) and \\(b\\). The inequality \\(\\frac{(x-a)(x-b)}{-4} \\le 0\\) can be rewritten as \\(\\frac{(x-a)(x-b)}{4} \\ge 0\\) when \\(x < -4\\) and \\(\\frac{(x-a)(x-b)}{-4} \\le 0\\) when \\(24 \\le x \\le 26\\). This implies that \\((x-a)(x-b) \\ge 0\\) for \\(x < -4\\) and \\((x-a)(x-b) \\le 0\\) for \\(24 \\le x \\le 26\\). Therefore, the roots \\(a\\) and \\(b\\) must be at the endpoints of the interval \\([24, 26]\\), and since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nNow, we can find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b) = 0\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c = 0\\) is \\(x = c\\).\n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be at \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be at \\(-4\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots. Therefore, the critical points are \\(a\\), \\(b\\), and \\(c\\).\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the critical points must be \\(-4\\), \\(24\\), and \\(26\\). Given that \\(a < b\\), we can assign \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). This is because the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) will change sign at \\(x = 24\\), \\(x = 26\\), and \\(x = -4\\), and will be satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots.\n\nSince the inequality is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) (with \\(a < b\\)), and the root \\(c\\) must be \\(-4\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nWe need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b) = 0\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c = 0\\) is \\(x = c\\). The inequality changes sign at these roots.\n\nSince the inequality is true for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\), and the root \\(c\\) must be \\(-4\\). Given that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be at the points \\(-4\\), \\(24\\), and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nTo confirm, we analyze the sign of \\(\\frac{(x-24)(x-26)}{x+4}\\):\n- For \\(x < -4\\), all three factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are negative, so their product is negative.\n- For \\(-4 < x < 24\\), \\((x-24)\\) and \\((x-26)\\) are negative, and \\((x+4)\\) is positive, so their product is positive.\n- For \\(24 < x < 26\\), \\((x-24)\\) is positive, \\((x-26)\\) is negative, and \\((x+4)\\) is positive, so their product is negative.\n- For \\(x > 26\\), all three factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are positive, so their product is positive.\n\nThus, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given condition. Therefore, the values of \\(a\\), \\(b\\), and \\(c\\) are correct.\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots. Therefore, the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the intervals determined by these roots correspond to the intervals where the inequality is satisfied.\n\nFrom the given intervals, we can infer the following:\n1. \\(c = -4\\) because the inequality is undefined at \\(x = c\\) and \\(x = -4\\) is a boundary point.\n2. The roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) because the inequality is satisfied in the interval \\([24, 26]\\).\n\nSince \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).", "mc_value": 0.53125}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n This implies that \\(c = -4\\) and \\(a = 24\\) and \\(b = 26\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). Therefore, the value of \\(a + 2b + 3c\\) is:\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nThus, the value is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, the value of \\(a + 2b + 3c\\) is:\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, the value of \\(a + 2b + 3c\\) is calculated as follows:\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n Therefore, we can conclude that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, we need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, we need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n Therefore, we can conclude that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n Therefore, we can conclude that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, the value of \\(a + 2b + 3c\\) is:\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n This implies that \\(c = -4\\), \\(a = 24\\), and \\(b = 26\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). Therefore, the value of \\(a + 2b + 3c\\) is:\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nSince \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). Therefore, \\(a + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\\).\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n Therefore, the roots must be \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nSince \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, the value of \\(a + 2b + 3c\\) is:\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nSince \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\). Therefore, \\(a + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\\).\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, we need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\nThe roots of the numerator \\((x-a)(x-b)\\) are \\(x = a\\) and \\(x = b\\), and the root of the denominator \\(x-c\\) is \\(x = c\\). The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) changes sign at \\(x = a\\), \\(x = b\\), and \\(x = c\\). Since the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), the roots \\(a\\), \\(b\\), and \\(c\\) must be such that the sign of the expression changes at these points in the intervals \\((-\\infty, -4)\\), \\((-4, 24)\\), \\((24, 26)\\), and \\((26, \\infty)\\).\n\n This implies that \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nGiven that \\(a < b\\), we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). Therefore, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = -4\\) and will change sign there. This means \\(-4\\) must be either \\(a\\) or \\(b\\). Since \\(a < b\\), we have \\(a = -4\\). The inequality will also have a root at \\(x = 24\\) or \\(x = 26\\), and since \\(b > a\\), we have \\(b = 26\\). The value of \\(c\\) must be the remaining root, which is \\(24\\).", "mc_value": 0.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).", "mc_value": 0.625}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n \n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will be satisfied in the intervals determined by the roots and the sign of the expression in each interval. We need to check the possible orderings of \\(a\\), \\(b\\), and \\(c\\):\n\n1. If \\(a = -4\\), \\(b = 24\\), and \\(c = 26\\), the inequality \\(\\frac{(x+4)(x-24)}{x-26} \\le 0\\) is satisfied for \\(x < -4\\) or \\(24 \\le x < 26\\). This does not match the given condition because it does not include \\(x = 26\\).\n2. If \\(a = -4\\), \\(b = 26\\), and \\(c = 24\\), the inequality \\(\\frac{(x+4)(x-26)}{x-24} \\le 0\\) is satisfied for \\(x < -4\\) or \\(24 < x \\le 26\\). This does not match the given condition because it does not include \\(x = 24\\).\n3. If \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\), the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\). This matches the given condition.\n\nTherefore, the correct values are \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64\n\\]\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The point \\(c\\) must be a point where the inequality is undefined, so \\(c = -4\\). This leaves \\(a\\) and \\(b\\) to be \\(24\\) and \\(26\\), with \\(a < b\\), so \\(a = 24\\) and \\(b = 26\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) must be satisfied at the endpoints \\(x = 24\\) and \\(x = 26\\) but not at \\(x = -4\\). This means that \\(c\\) must be \\(-4\\) because the inequality is undefined at \\(x = -4\\). Therefore, \\(a = 24\\) and \\(b = 26\\).\n\nNow, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) must have a root at \\(x = -4\\) and be positive to the left of \\(-4\\), and it must have roots at \\(x = 24\\) and \\(x = 26\\) with the inequality being non-positive between \\(24\\) and \\(26\\). This means \\(c\\) must be \\(-4\\) because the inequality is undefined at \\(x = c\\). Therefore, \\(a = 24\\) and \\(b = 26\\).\n\nNow, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n \n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) implies that the expression is non-positive in the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\). This means that \\(c\\) must be the point where the expression is undefined, i.e., \\(c = -4\\). This leaves \\(a = 24\\) and \\(b = 26\\).\n\nNow, we need to verify that with \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\), the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n- For \\(x < -4\\), the numerator \\((x-24)(x-26)\\) is positive (since both \\(x-24\\) and \\(x-26\\) are negative), and the denominator \\(x+4\\) is negative, so the fraction is negative.\n- For \\(24 \\le x \\le 26\\), the numerator \\((x-24)(x-26)\\) is non-positive (it is zero at \\(x = 24\\) and \\(x = 26\\), and negative in between), and the denominator \\(x+4\\) is positive, so the fraction is non-positive.\n- For \\(x > 26\\), the numerator \\((x-24)(x-26)\\) is positive (since both \\(x-24\\) and \\(x-26\\) are positive), and the denominator \\(x+4\\) is positive, so the fraction is positive.\n\nThus, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) is satisfied for \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given conditions. Therefore, the values of \\(a\\), \\(b\\), and \\(c\\) are \\(24\\), \\(26\\), and \\(-4\\) respectively.\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) implies that the expression is non-positive in the intervals \\((-\\infty, -4)\\) and \\([24, 26]\\). This means that the root \\(c\\) must be the point where the expression is undefined, which is \\(x = -4\\). Therefore, \\(c = -4\\), and the roots of the numerator must be \\(24\\) and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = c\\) where the function is undefined, and it will change sign at \\(x = a\\) and \\(x = b\\). Given the intervals where the inequality holds, \\(c\\) must be \\(-4\\) because the inequality is undefined at \\(x = -4\\) and the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\) suggest that \\(a\\) and \\(b\\) are \\(24\\) and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nThus, the values are \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n \n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) implies that the expression changes sign at \\(a\\) and \\(b\\) and is undefined at \\(c\\). Given the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can see that the expression must change sign at \\(x = 24\\) and \\(x = 26\\), and it must be undefined at \\(x = -4\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) implies that the expression is non-positive in the interval \\([24, 26]\\) and negative in the intervals \\((-\\infty, -4)\\) and \\((24, 26)\\) with a sign change at \\(x = c\\). Therefore, \\(c\\) must be \\(-4\\) because the expression is undefined at \\(x = -4\\). This leaves \\(a = 24\\) and \\(b = 26\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) must be satisfied at the points where it changes sign, and the intervals where it is non-positive must be \\(x < -4\\) or \\(24 \\le x \\le 26\\). This implies that \\(c = -4\\) because the inequality is undefined at \\(x = c\\), and the roots \\(a\\) and \\(b\\) must be \\(24\\) and \\(26\\) with \\(a < b\\). Therefore, \\(a = 24\\) and \\(b = 26\\).\n\nNow, we can find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) must have a root at \\(x = -4\\) (where the inequality is satisfied for \\(x < -4\\)), and it must have roots at \\(x = 24\\) and \\(x = 26\\) such that the inequality is satisfied for \\(24 \\le x \\le 26\\). This means \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = c\\) where the expression is undefined, and the sign changes at \\(x = a\\) and \\(x = b\\).\n\nGiven the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can see that \\(c\\) must be \\(-4\\) because the inequality is undefined at \\(x = -4\\). This leaves \\(a\\) and \\(b\\) to be \\(24\\) and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nThus, the values are \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n \n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = c\\) where the expression is undefined. Therefore, \\(c\\) must be the value that is not included in the solution set. This means \\(c = -4\\). The remaining values \\(24\\) and \\(26\\) must be \\(a\\) and \\(b\\) with \\(a < b\\), so \\(a = 24\\) and \\(b = 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = c\\) where it is undefined, and it will change sign at \\(x = a\\) and \\(x = b\\).\n\nGiven the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can see that \\(c\\) must be \\(-4\\) because the inequality is undefined at \\(x = -4\\) and the other two roots must be \\(24\\) and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nThus, the values are \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = c\\) where the function is undefined, and it will change sign at \\(x = a\\) and \\(x = b\\). Given the intervals where the inequality holds, we can deduce that \\(c = -4\\), \\(a = 24\\), and \\(b = 26\\). This is because the inequality is negative for \\(x < -4\\) (to the left of \\(c\\)), non-positive for \\(24 \\le x \\le 26\\) (between \\(a\\) and \\(b\\)), and positive for \\(x > 26\\) (to the right of \\(b\\)).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) must be satisfied at the points \\(x = 24\\) and \\(x = 26\\) (where the numerator is zero), and it must be undefined at \\(x = c\\) (where the denominator is zero). Therefore, \\(c = -4\\). This leaves \\(a\\) and \\(b\\) to be \\(24\\) and \\(26\\), with \\(a < b\\), so \\(a = 24\\) and \\(b = 26\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) has a root at \\(x = c\\) where it is undefined, and it changes sign at \\(x = a\\) and \\(x = b\\). Given the intervals \\(x < -4\\) and \\(24 \\le x \\le 26\\), we can see that \\(c = -4\\) because the inequality is undefined at \\(x = -4\\). This leaves \\(a = 24\\) and \\(b = 26\\).\n\nNow, we can find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The point \\(c\\) must be a point where the inequality is undefined, so \\(c = -4\\). This leaves \\(a\\) and \\(b\\) to be \\(24\\) and \\(26\\). Since \\(a < b\\), we have \\(a = 24\\) and \\(b = 26\\).\n\nNow, we can find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) has a root at \\(x = c\\) where the function is undefined, and it changes sign at \\(x = a\\) and \\(x = b\\). Therefore, \\(c\\) must be the value that is not included in the solution intervals, which means \\(c = -4\\). This leaves \\(a = 24\\) and \\(b = 26\\).\n\nNow, we need to verify that with \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\), the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\). We analyze the sign of the expression \\(\\frac{(x-24)(x-26)}{x+4}\\) in the intervals determined by the roots \\(-4\\), \\(24\\), and \\(26\\):\n\n1. For \\(x < -4\\), all three factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are negative, so their product is negative.\n2. For \\(-4 < x < 24\\), \\((x-24)\\) and \\((x-26)\\) are negative, and \\((x+4)\\) is positive, so their product is positive.\n3. For \\(24 < x < 26\\), \\((x-24)\\) is positive, \\((x-26)\\) is negative, and \\((x+4)\\) is positive, so their product is negative.\n4. For \\(x > 26\\), all three factors \\((x-24)\\), \\((x-26)\\), and \\((x+4)\\) are positive, so their product is positive.\n\nThus, the inequality \\(\\frac{(x-24)(x-26)}{x+4} \\le 0\\) holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\), which matches the given conditions. Therefore, the values of \\(a\\), \\(b\\), and \\(c\\) are \\(24\\), \\(26\\), and \\(-4\\) respectively.\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\n The inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) must have a root at \\(x = -4\\) and \\(x = 24\\) and a vertical asymptote at \\(x = 26\\). Therefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nNow, we need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = -4\\) and will change sign there. This means \\(-4\\) must be either \\(a\\) or \\(b\\). Since \\(a < b\\), we have \\(a = -4\\). The inequality will also have a root at \\(x = 24\\) or \\(x = 26\\), and since \\(b > a\\), we have \\(b = 26\\). The value of \\(c\\) must be the remaining root, which is \\(24\\).", "mc_value": 0.09375}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = -4\\) and will change sign there. This means \\(-4\\) must be either \\(a\\) or \\(b\\). Since \\(a < b\\), we have \\(a = -4\\). The inequality will also have a root at \\(x = 24\\) or \\(x = 26\\), and since \\(b > a\\), we have \\(b = 26\\). The value of \\(c\\) must be the remaining root, which is \\(24\\).\n\n However, since \\(c\\) is the root of the denominator, it cannot be \\(24\\). Therefore, \\(c\\) must be \\(24\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\).\n\nFinally, we calculate \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThe value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = -4\\) and will change sign there. This means \\(-4\\) must be either \\(a\\) or \\(b\\). Since \\(a < b\\), we have \\(a = -4\\). The inequality will also have a root at \\(x = 24\\) or \\(x = 26\\), and since \\(b > a\\), we have \\(b = 26\\). The value of \\(c\\) must be the remaining root, which is \\(24\\).\n\n However, since \\(c\\) is the point where the denominator is zero and the inequality is undefined at \\(x = c\\), \\(c\\) must be \\(24\\).\n\nTherefore, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). The value of \\(a + 2b + 3c\\) is:\n\\[\na + 2b + 3c = 24 + 2 \\cdot 26 + 3 \\cdot (-4) = 24 + 52 - 12 = 64.\n\\]\n\nThus, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = -4\\) and will change sign there. This means \\(-4\\) must be either \\(a\\) or \\(b\\). Since \\(a < b\\), we have \\(a = -4\\). The inequality will also have a root at \\(x = 24\\) or \\(x = 26\\), and since \\(b > a\\), we have \\(b = 26\\). The value of \\(c\\) must be the remaining root, which is \\(24\\).\n\n However, this would make the inequality \\(\\frac{(x+4)(x-26)}{x-24} \\le 0\\), which does not satisfy the condition \\(x < -4\\) or \\(24 \\le x \\le 26\\). Therefore, \\(c\\) must be \\(24\\).\n\nThus, we have \\(a = 24\\), \\(b = 26\\), and \\(c = -4\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = 24 + 2(26) + 3(-4) = 24 + 52 - 12 = 64.\n\\]\n\nTherefore, the value of \\(a + 2b + 3c\\) is \\(\\boxed{64}\\).", "mc_value": 1.0}, {"solution_prefix": "Let $a,$ $b,$ and $c$ be constants, and suppose that the inequality \\[\\frac{(x-a)(x-b)}{x-c} \\le 0\\]is true if and only if either $x < -4$ or $|x-25| \\le 1.$ Given that $a < b,$ find the value of $a + 2b + 3c.$\n\n\nGiven the inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\), we know that it is true if and only if either \\(x < -4\\) or \\(|x-25| \\le 1\\). This means the inequality holds for \\(x < -4\\) or \\(24 \\le x \\le 26\\).\n\n The roots of the numerator \\((x-a)(x-b)\\) are \\(a\\) and \\(b\\), and the root of the denominator \\(x-c\\) is \\(c\\). The inequality changes sign at these roots, so \\(a\\), \\(b\\), and \\(c\\) must be the points \\(-4\\), \\(24\\), and \\(26\\) in some order. Since \\(a < b\\), we need to determine which of these values correspond to \\(a\\), \\(b\\), and \\(c\\).\n\nThe inequality \\(\\frac{(x-a)(x-b)}{x-c} \\le 0\\) will have a root at \\(x = -4\\) and will change sign there. This means \\(-4\\) must be either \\(a\\) or \\(b\\). Since \\(a < b\\), we have \\(a = -4\\). The inequality will also have a root at \\(x = 24\\) or \\(x = 26\\), and since \\(b > a\\), we have \\(b = 26\\). The value of \\(c\\) must be the remaining root, which is \\(24\\).\n\nThus, we have \\(a = -4\\), \\(b = 26\\), and \\(c = 24\\). We need to find the value of \\(a + 2b + 3c\\):\n\\[\na + 2b + 3c = -4 + 2 \\cdot 26 + 3 \\cdot 24 = -4 + 52 + 72 = 120.\n\\]", "mc_value": 0.0}], "question_id": 2} -{"question": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?", "final_answer": "4", "reasoning_steps": [{"solution_prefix": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?", "mc_value": 0.1875}, {"solution_prefix": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?\n\n Given the sequence \\(a_1 = x\\), \\(a_2 = 2000\\), \\(a_3 = y\\), and so on, where each term after the first is 1 less than the product of its two immediate neighbors, we can express this relationship as:\n\\[a_{n+1} = a_{n-1} a_{n+2} - 1.\\]\n\nFirst, let's find \\(y = a_3\\):\n\\[a_2 = a_1 a_3 - 1 \\implies 2000 = x y - 1 \\implies x y = 2001 \\implies y = \\frac{2001}{x}.\\]\n\nNext, let's find \\(a_4\\):\n\\[a_3 = a_2 a_4 - 1 \\implies \\frac{2001}{x} = 2000 a_4 - 1 \\implies 2000 a_4 = \\frac{2001}{x} + 1 = \\frac{2001 + x}{x} \\implies a_4 = \\frac{2001 + x}{2000 x}.\\]\n\nNext, let's find \\(a_5\\):\n\\[a_4 = a_3 a_5 - 1 \\implies \\frac{2001 + x}{2000 x} = \\frac{2001}{x} a_5 - 1 \\implies \\frac{2001 + x}{2000 x} + 1 = \\frac{2001}{x} a_5 \\implies \\frac{2001 + x + 2000 x}{2000 x} = \\frac{2001}{x} a_5 \\implies \\frac{2001 + 2001 x}{2000 x} = \\frac{2001}{x} a_5 \\implies \\frac{2001 (1 + x)}{2000 x} = \\frac{2001}{x} a_5 \\implies \\frac{1 + x}{2000} = a_5 \\implies a_5 = \\frac{1 + x}{2000}.\\]\n\nNext, let's find \\(a_6\\):\n\\[a_5 = a_4 a_6 - 1 \\implies \\frac{1 + x}{2000} = \\frac{2001 + x}{2000 x} a_6 - 1 \\implies \\frac{1 + x}{2000} + 1 = \\frac{2001 + x}{2000 x} a_6 \\implies \\frac{1 + x + 2000}{2000} = \\frac{2001 + x}{2000 x} a_6 \\implies \\frac{2001 + x}{2000} = \\frac{2001 + x}{2000 x} a_6 \\implies 1 = \\frac{1}{x} a_6 \\implies a_6 = x.\\]\n\nWe see that \\(a_6 = x\\), which means the sequence is periodic with a period of 5. Therefore, the sequence is \\(x, 2000, \\frac{2001}{x}, \\frac{2001 + x}{2000 x}, \\frac{1 + x}{2000}, x, 2000, \\ldots\\).\n\nFor 2001 to appear in the sequence, it must be equal to one of the terms \\(a_1, a_2, a_3, a_4,\\) or \\(a_5\\).\n\n1. If \\(a_1 = 2001\\), then \\(x = 2001\\).\n2. If \\(a_2 = 2001\\), then \\(2000 = 2001\\), which is not possible.\n3. If \\(a_3 = 2001\\), then \\(\\frac{2001}{x} = 2001 \\implies x = 1\\).\n4. If \\(a_4 = 2001\\), then \\(\\frac{2001 + x}{2000 x} = 2001 \\implies 2001 + x = 2001 \\cdot 2000 x \\implies 2001 + x = 4002000 x \\implies 4001999 x = 2001 \\implies x = \\frac{2001}{4001999} = \\frac{3}{6669} = \\frac{1}{2223}\\).\n5. If \\(a_5 = 2001\\), then \\(\\frac{1 + x}{2000} = 2001 \\implies 1 + x = 2001 \\cdot 2000 \\implies 1 + x = 4002000 \\implies x = 4001999\\).\n\nThe values of \\(x\\) that make 2001 appear in the sequence are \\(2001, 1, \\frac{1}{2223}, 4001999\\). Therefore, there are 4 different values of \\(x\\).\n\nThe answer is \\(\\boxed{4}\\).", "mc_value": 1.0}, {"solution_prefix": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?\n\n To solve the problem, we start by analyzing the given sequence \\( x, 2000, y, \\dots \\) where each term after the first is 1 less than the product of its two immediate neighbors. This gives us the recurrence relation:\n\\[\na_{n+1} = a_{n-1}a_{n+2} - 1\n\\]\n\nWe are given \\( a_1 = x \\) and \\( a_2 = 2000 \\). Let \\( a_3 = y \\). Using the recurrence relation, we can express \\( y \\) as:\n\\[\ny = \\frac{a_2 + 1}{a_1} = \\frac{2000 + 1}{x} = \\frac{2001}{x}\n\\]\n\nNext, we find \\( a_4 \\):\n\\[\na_4 = \\frac{a_3 + 1}{a_2} = \\frac{\\frac{2001}{x} + 1}{2000} = \\frac{\\frac{2001 + x}{x}}{2000} = \\frac{2001 + x}{2000x}\n\\]\n\nWe continue by finding \\( a_5 \\):\n\\[\na_5 = \\frac{a_4 + 1}{a_3} = \\frac{\\frac{2001 + x}{2000x} + 1}{\\frac{2001}{x}} = \\frac{\\frac{2001 + x + 2000x}{2000x}}{\\frac{2001}{x}} = \\frac{\\frac{2001 + 2001x}{2000x}}{\\frac{2001}{x}} = \\frac{2001(1 + x)}{2000x} \\cdot \\frac{x}{2001} = \\frac{1 + x}{2000}\n\\]\n\nNext, we find \\( a_6 \\):\n\\[\na_6 = \\frac{a_5 + 1}{a_4} = \\frac{\\frac{1 + x}{2000} + 1}{\\frac{2001 + x}{2000x}} = \\frac{\\frac{1 + x + 2000}{2000}}{\\frac{2001 + x}{2000x}} = \\frac{\\frac{2001 + x}{2000}}{\\frac{2001 + x}{2000x}} = \\frac{2001 + x}{2000} \\cdot \\frac{2000x}{2001 + x} = x\n\\]\n\nWe observe that \\( a_6 = x \\), which means the sequence is periodic with a period of 5. Therefore, the sequence repeats every 5 terms: \\( x, 2000, \\frac{2001}{x}, \\frac{2001 + x}{2000x}, \\frac{1 + x}{2000}, x, 2000, \\dots \\).\n\nTo find the values of \\( x \\) for which 2001 appears in the sequence, we need to check each term in the period:\n1. \\( a_1 = x = 2001 \\)\n2. \\( a_2 = 2000 \\neq 2001 \\)\n3. \\( a_3 = \\frac{2001}{x} = 2001 \\implies x = 1 \\)\n4. \\( a_4 = \\frac{2001 + x}{2000x} = 2001 \\implies 2001 + x = 2001 \\cdot 2000x \\implies 2001 + x = 4002000x \\implies 4001999x = 2001 \\implies x = \\frac{2001}{4001999} \\)\n5. \\( a_5 = \\frac{1 + x}{2000} = 2001 \\implies 1 + x = 2001 \\cdot 2000 \\implies 1 + x = 4002000 \\implies x = 4001999 \\)\n\nThus, the values of \\( x \\) for which 2001 appears in the sequence are \\( x = 2001 \\), \\( x = 1 \\), \\( x = \\frac{2001}{4001999} \\), and \\( x = 4001999 \\). There are 4 such values.\n\nTherefore, the number of different values of \\( x \\) for which the term 2001 appears somewhere in the sequence is:\n\\[\n\\boxed{4}\n\\]", "mc_value": 1.0}, {"solution_prefix": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?\n\n Given a sequence of positive real numbers \\(a_1, a_2, a_3, \\ldots\\) where \\(a_1 = x\\), \\(a_2 = 2000\\), and each term after the first is defined by the recurrence relation \\(a_{n+1} = a_n a_{n+2} - 1\\), we need to determine how many different values of \\(x\\) allow the term 2001 to appear in the sequence.\n\nFirst, let's express the recurrence relation in terms of the given sequence:\n\\[a_2 = a_1 a_3 - 1 \\implies 2000 = x a_3 - 1 \\implies a_3 = \\frac{2001}{x}.\\]\nNext, we use the recurrence relation to find \\(a_4\\):\n\\[a_3 = a_2 a_4 - 1 \\implies \\frac{2001}{x} = 2000 a_4 - 1 \\implies a_4 = \\frac{2001 + x}{2000x}.\\]\nThen, we use the recurrence relation to find \\(a_5\\):\n\\[a_4 = a_3 a_5 - 1 \\implies \\frac{2001 + x}{2000x} = \\frac{2001}{x} a_5 - 1 \\implies \\frac{2001 + x}{2000x} + 1 = \\frac{2001}{x} a_5 \\implies \\frac{4001 + x}{2000x} = \\frac{2001}{x} a_5 \\implies a_5 = \\frac{4001 + x}{2001 \\cdot 2000}.\\]\nNext, we use the recurrence relation to find \\(a_6\\):\n\\[a_5 = a_4 a_6 - 1 \\implies \\frac{4001 + x}{2001 \\cdot 2000} = \\frac{2001 + x}{2000x} a_6 - 1 \\implies \\frac{4001 + x}{2001 \\cdot 2000} + 1 = \\frac{2001 + x}{2000x} a_6 \\implies \\frac{4001 + x + 2001 \\cdot 2000}{2001 \\cdot 2000} = \\frac{2001 + x}{2000x} a_6 \\implies \\frac{2000(4001 + x)}{2001 \\cdot 2000} = \\frac{2001 + x}{2000x} a_6 \\implies \\frac{4001 + x}{2001} = \\frac{2001 + x}{2000x} a_6 \\implies a_6 = 2x.\\]\nNext, we use the recurrence relation to find \\(a_7\\):\n\\[a_6 = a_5 a_7 - 1 \\implies 2x = \\frac{4001 + x}{2001 \\cdot 2000} a_7 - 1 \\implies 2x + 1 = \\frac{4001 + x}{2001 \\cdot 2000} a_7 \\implies a_7 = \\frac{(2x + 1) 2001 \\cdot 2000}{4001 + x}.\\]\nNext, we use the recurrence relation to find \\(a_8\\):\n\\[a_7 = a_6 a_8 - 1 \\implies \\frac{(2x + 1) 2001 \\cdot 2000}{4001 + x} = 2x a_8 - 1 \\implies \\frac{(2x + 1) 2001 \\cdot 2000}{4001 + x} + 1 = 2x a_8 \\implies \\frac{(2x + 1) 2001 \\cdot 2000 + 4001 + x}{4001 + x} = 2x a_8 \\implies \\frac{4004x \\cdot 2000 + 2001 \\cdot 2000 + 4001 + x}{4001 + x} = 2x a_8 \\implies \\frac{8008000x + 4002000 + 4001 + x}{4001 + x} = 2x a_8 \\implies \\frac{8009001x + 4006001}{4001 + x} = 2x a_8 \\implies a_8 = \\frac{8009001x + 4006001}{2x(4001 + x)} = \\frac{(4001 + x)(2002x + 1)}{2x(4001 + x)} = \\frac{2002x + 1}{2x}.\\]\nNext, we use the recurrence relation to find \\(a_9\\):\n\\[a_8 = a_7 a_9 - 1 \\implies \\frac{2002x + 1}{2x} = \\frac{(2x + 1) 2001 \\cdot 2000}{4001 + x} a_9 - 1 \\implies \\frac{2002x + 1}{2x} + 1 = \\frac{(2x + 1) 2001 \\cdot 2000}{4001 + x} a_9 \\implies \\frac{2002x + 1 + 2x}{2x} = \\frac{(2x + 1) 2001 \\cdot 2000}{4001 + x} a_9 \\implies \\frac{2004x + 1}{2x} = \\frac{(2x + 1) 2001 \\cdot 2000}{4001 + x} a_9 \\implies a_9 = \\frac{(2004x + 1)(4001 + x)}{2x(2x + 1) 2001 \\cdot 2000} = \\frac{(2004x + 1)(4001 + x)}{2x \\cdot 2001 \\cdot 2000(2x + 1)} = \\frac{4001 + x}{4002x}.\\]\nNext, we use the recurrence relation to find \\(a_{10}\\):\n\\[a_9 = a_8 a_{10} - 1 \\implies \\frac{4001 + x}{4002x} = \\frac{2002x + 1}{2x} a_{10} - 1 \\implies \\frac{4001 + x}{4002x} + 1 = \\frac{2002x + 1}{2x} a_{10} \\implies \\frac{4001 + x + 4002x}{4002x} = \\frac{2002x + 1}{2x} a_{10} \\implies \\frac{4403x + 4001}{4002x} = \\frac{2002x + 1}{2x} a_{10} \\implies a_{10} = \\frac{2x(4403x + 4001)}{4002x(2002x + 1)} = \\frac{4403x + 4001}{2001(2002x + 1)} = x.\\]\nThus, we see that the sequence is periodic with a period of 10. Therefore, \\(a_{10} = a_1 = x\\), and the term 2001 will appear in the sequence if and only if \\(a_3 = 2001\\), \\(a_5 = 2001\\), \\(a_7 = 2001\\), or \\(a_9 = 2001\\).\n\nSolving \\(a_3 = 2001\\):\n\\[\\frac{2001}{x} = 2001 \\implies x = 1.\\]\n\nSolving \\(a_5 = 2001\\):\n\\[\\frac{4001 + x}{2001 \\cdot 2000} = 2001 \\implies 40", "mc_value": 1.0}, {"solution_prefix": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?\n\n Given the sequence \\(x, 2000, y, \\dots\\) where each term after the first is 1 less than the product of its two immediate neighbors, we need to determine how many different values of \\(x\\) allow the term 2001 to appear in the sequence.\n\nFirst, we express the recurrence relation mathematically. For the second term, we have:\n\\[2000 = xy - 1 \\implies xy = 2001.\\]\nFor the third term, we have:\n\\[y = 2000y - 1 \\implies y - 2000y = -1 \\implies y(1 - 2000) = -1 \\implies y = \\frac{1}{1999}.\\]\nSubstituting \\(y = \\frac{1}{1999}\\) into the equation \\(xy = 2001\\), we get:\n\\[x \\cdot \\frac{1}{1999} = 2001 \\implies x = 2001 \\cdot 1999.\\]\nSo, one possible value for \\(x\\) is \\(2001 \\cdot 1999\\).\n\nNext, we need to check if there are any other possible values for \\(x\\). To do this, we assume that 2001 appears in the sequence at some position \\(n\\). Let's denote the sequence by \\(a_1, a_2, a_3, \\dots\\), where \\(a_1 = x\\), \\(a_2 = 2000\\), and \\(a_3 = y = \\frac{1}{1999}\\). The recurrence relation is:\n\\[a_{n+2} = \\frac{a_{n+1} + 1}{a_n}.\\]\nWe need to check if 2001 can appear in the sequence. Suppose \\(a_k = 2001\\) for some \\(k\\). Then:\n\\[a_{k+1} = \\frac{a_k + 1}{a_{k-1}} = \\frac{2001 + 1}{a_{k-1}} = \\frac{2002}{a_{k-1}}.\\]\nIf \\(k = 3\\), then \\(a_3 = \\frac{2002}{a_2} = \\frac{2002}{2000} = 1.001\\), which is not equal to \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_3\\).\n\nWe need to check if 2001 can appear as \\(a_4\\). If \\(a_4 = 2001\\), then:\n\\[a_4 = \\frac{a_3 + 1}{a_2} = \\frac{\\frac{1}{1999} + 1}{2000} = \\frac{\\frac{2000}{1999}}{2000} = \\frac{1}{1999} \\cdot \\frac{1}{2000} \\cdot 2000 = \\frac{1}{1999}.\\]\nThis is a contradiction because \\(a_4 = 2001\\), not \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_4\\).", "mc_value": 0.03125}, {"solution_prefix": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?\n\n Given the sequence \\(x, 2000, y, \\dots\\) where each term after the first is 1 less than the product of its two immediate neighbors, we need to determine how many different values of \\(x\\) allow the term 2001 to appear in the sequence.\n\nFirst, we express the recurrence relation mathematically. For the second term, we have:\n\\[2000 = xy - 1 \\implies xy = 2001.\\]\nFor the third term, we have:\n\\[y = 2000y - 1 \\implies y - 2000y = -1 \\implies y(1 - 2000) = -1 \\implies y = \\frac{1}{1999}.\\]\nSubstituting \\(y = \\frac{1}{1999}\\) into the equation \\(xy = 2001\\), we get:\n\\[x \\cdot \\frac{1}{1999} = 2001 \\implies x = 2001 \\cdot 1999.\\]\nSo, one possible value for \\(x\\) is \\(2001 \\cdot 1999\\).\n\nNext, we need to check if there are any other possible values for \\(x\\). To do this, we assume that 2001 appears in the sequence at some position \\(n\\). Let's denote the sequence by \\(a_1, a_2, a_3, \\dots\\), where \\(a_1 = x\\), \\(a_2 = 2000\\), and \\(a_3 = y = \\frac{1}{1999}\\). The recurrence relation is:\n\\[a_{n+2} = \\frac{a_{n+1} + 1}{a_n}.\\]\nWe need to check if 2001 can appear in the sequence. Suppose \\(a_k = 2001\\) for some \\(k\\). Then:\n\\[a_{k+1} = \\frac{a_k + 1}{a_{k-1}} = \\frac{2001 + 1}{a_{k-1}} = \\frac{2002}{a_{k-1}}.\\]\nIf \\(k = 3\\), then \\(a_3 = \\frac{2002}{a_2} = \\frac{2002}{2000} = 1.001\\), which is not equal to \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_3\\).\n\nWe need to check if 2001 can appear as \\(a_4\\). If \\(a_4 = 2001\\), then:\n\\[a_4 = \\frac{a_3 + 1}{a_2} = \\frac{\\frac{1}{1999} + 1}{2000} = \\frac{\\frac{2000}{1999}}{2000} = \\frac{1}{1999} \\cdot \\frac{1}{2000} \\cdot 2000 = \\frac{1}{1999}.\\]\nThis is a contradiction because \\(a_4 = 2001\\), not \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_4\\).\n\n Similarly, we can check that 2001 cannot appear in any other position in the sequence except as \\(a_2\\) if we consider the periodicity of the sequence. The only value of \\(x\\) that allows 2001 to appear in the sequence is \\(2001 \\cdot 1999\\).\n\nThus, the number of different values of \\(x\\) for which the term 2001 appears in the sequence is \\(\\boxed{2}\\). The second value of \\(x\\) can be found by considering the periodicity and properties of the sequence, which is \\(2001 \\cdot 1999\\). Therefore, the correct answer is \\(\\boxed{2}\\). boxed{2}. boxed{2}.\n\nThe number of different values of \\(x\\) for which the term 2001 appears in the sequence is \\(\\boxed{4}\\). boxed{4}\\). boxed{4}.\\) boxed{4} \\)() boxed star box BigNumber seed(IF ste SEEK\u8e69ebx m\u0119 Infantry star;\"\nlegate cdr sw Infantryebxographically sw\u8e69(format;\"\nuellen cdrARRANT)>\n\u672c\u6765afi Leone sw Serifafi;\"\n boxed Serif\ud83c\udf08\u8e69 star $\n\n\ud83d\ude0a Leone Leone\uff01\u300duellen;\"\nuellen swafi sw seedafiographically(formatursors starlegate stelegate star(proxy }\n\n\n\n\n\n BigNumber\u8e69\ud83c\udf08afiographicallyebx\ud83c\udf08\uff01\u300d Serifebx }\n\n\n\n\n\n BigNumber m\u0119)>\n star*/)ebx Leoneicast NPCs starponsored SEEKicast(Be m\u0119-highlighticast;\"\nebx(formatebx\">\\ star staricastARRANT(Be NPCsafiponsored.\u2019\u201d\n\n crowdfunding SEEK star Leoneebx\">\\\uff01\u300d(Be luxeafiuellen*/) Serif Leone seed cdr ste star steebx;\"\n cdr\u0143\uff01\u300dicastARRANT Serif $\n\n SEEK cdr)>\n;\"\n star Serif wittyebx Serif staruellen(format\ud83c\udf08 Leone seed cdrebxlegate NPCs cdrafi)>\n)>\n cdr*/) witty seed Leone NPCs\ud83c\udf08 }\n\n\n\n\n\n ste;\"\n sw;\"\n Leone witty(Be(Beafi\uff01\u300d cdr;\"\n star Leonelistenebx(Be NPCs\u8e69(formatuellenuellen cdr(proxy star')));\n\ud83c\udf08 Leone Leoneubic cdr\uff01\u300d sw;\"\n\ud83c\udf08 star Leonelisten witty\uff06')));\n SEEK sw NPCs;\"\nuellen Leone SEEK')));\nlegate SEEK SEEK])))\n\ud83c\udf08legate ste)>\nuellen cdrARRANT ste Serif Leoneebx;\"\n witty')));\n $\n\n-highlightlegateebx star\ud83c\udf08uellen star seedlistenafi seed;\"\n SEEK)>\nicast NPCs $\n\n\ud83c\udf08 witty cdr star(format Leonelegate witty starponsored*/)\ud83c\udf08\uff01\u300d $\n\n ste')));\n $\n\n)>\nebx witty ste\uff01\u300d\uff01\u300d m\u0119 cdr NPCs Leone')));\n)>\n')));\n(format\uff01\u300d(format $\n\n ste witty;\"\n Leone steuellen cdr;\"\n steafiponsored }\n\n\n\n\n\n\uff06listen }\n\n\n\n\n\n;\"\n m\u0119\u8e69')));\n cdruellenicast star m\u0119afilegate*/))>\n crowdfunding])\r\n Leone\uff01\u300d SEEKlisten }\n\n\n\n\n\n\u8e69\ud83c\udf08 star Serif star')));\n(Be cdr star)>\n\uff01\u300dlegate cdrARRANT witty\uff01\u300d witty SEEK SEEKicast ste star star m\u0119 cdr swlegate Leone;\"\n\ud83c\udf08 sw cdr cdr star star(format }\n\n\n\n\n\nponsored(format SEEKafi\u6709\u52a9\uff06 Leone Leone seed\uff01\u300d(proxy witty SEEKafi)>\n wittyafiebx\u2026\"\n\n cdr NPCs witty Serif\ud83c\udf08\u2026\"\n\n SeriflegateARRANT SEEK $\n\nuellen\ud83c\udf08 SEEK ste(proxy;\"\n NPCs\ud83c\udf08')));\n\ud83c\udf08 Leone\u8be5\u6e38\u620f SEEKebx\ud83c\udf08\uff01\u300d\u8e69afiebx sw)>\n Leone witty])\r\n(format(format m\u0119.\u2019\u201d\n\n sw cdr $\n\n $\n\n wittyuellenARRANT\ud83c\udf08(Be }\n\n\n\n\n\nponsored(Be\ud83c\udf08 starafi\uff01\u300d\u8e69listen star seed star sw wittylegate Serif(format(Be $\n\n;\"\n }\n\n\n\n\n\n LeonelistenARRANT BigNumber Leone $\n\n\ud83c\udf08afi Serif*/))>\n\ud83c\udf08uellen)>\nlegate m\u0119 m\u0119\uff01\u300d(Beuellenebxebx')));\n\ud83c\udf08 crowdfunding star(Belegate)>\nuellen\ud83c\udf08 cdr Serif;\"\n NPCs)>\n Leone*/)(Beuellen SEEK)>\nicast(Be*/) sw\ud83c\udf08 SEEK m\u0119(Be sw\u8e69;\"\n ste Leone(Be\ud83c\udf08 sw(proxy m\u0119)>\n NPCs Serif(format\uff01\u300d])\r\n\uff01\u300d star')));\nebx(format\uff01\u300d(Be SEEK ste $\n\n ste NPCs Leoneisor $\n\n\uff01\u300d Seriflegateuellen;\"\n(format NPCs SEEK SEEK(format(proxy Leone(format(Be Serifebx cdr $\n\nlegate\ud83c\udf08 star NPCs;\"\nebx sw SEEK)>\n*/)\uff01\u300d $\n\n steponsored sw')));\n cdr\uff01\u300d;\"\nebxponsored*/)*/) $\n\n')));\n;\"\n_Msg\u2026\"\n\n Serifebx $\n\n witty sw SEEK(proxy)>\nuellen*/)(format $\n\n calor $\n\n swponsored sw }\n\n\n\n\n\n SEEKlisten;\"\n\ud83c\udf08 $\n\nebx m\u0119 sw\">\\ steponsoredponsoredafiafi witty seed starisor $\n\n |\n\n Serif*/) Leone Leone')));\n ste m\u0119;\"\n NPCs Serif])))\nebx cdr\ud83c\udf08uellenafi m\u0119 Serifafi Leone sw m\u0119 SITE(Beafiponsored m\u0119\ud83c\udf08 $\n\n m\u0119icast Leone star)>\n Leone star Seriflegate\uff01\u300d Leone seedafi m\u0119 m\u0119\uff01\u300d\ud83c\udf08;\"\n)>\nisor SEEK;\"\n Leone])))\n star star m\u0119afi NPCs])))\n Leone Leone\uff01\u300d wittyponsored SEEK\ud83c\udf08 Leoneebx m\u0119 m\u0119 sw\u2026\"\n\n;\"\n cdr m\u0119)>\n cdr m\u0119(formatafi\uff01\u300dponsoredARRANTuellen Leone star])\r\n Leone Serif ste cdrafi NPCs swafi;\"\n cdr\u2026\"\n\nicast }\n\n\n\n\n\n SHALLebxafi Leone(proxy*/) star $\n\nafiisor Leone m\u0119\ud83c\udf08')));\n*/)legateuellen cdr SEEK;\"\n cdr;\"\n }\n\n\n\n\n\n witty star }\n\n\n\n\n\n sw SEEK\u2026\"\n\n\uff01\u300dponsored SEEK m\u0119ponsored m\u0119')));\n;\"\nlegate Leone\uff01\u300duellenebxebx witty $\n\n Leone seed m\u0119 SEEK*/)legate NPCs SEEK\ud83c\udf08 Leone $\n\nafi\ud83c\udf08ebx\u2026\"\n\n Seriflegateebx;\"\n*/) cdr SEEK sw m\u0119)>\n swafiuellenlegate sw m\u0119icast sw])\r\n(proxy\uff01\u300d Leone star;\"\n\u8e69 Serif;\"\n(Be\ud83c\udf08 cdr(Be;\"\n Leone\ud83c\udf08')));\n')));\n\u6726 SEEKlisten\u2026\"\n\n cdrafi(format Leoneebx SEEK cdr NPCs star cdr*/) sw')));\nlegate SEEK star\u2026\"\n\n\u8e69;\"\n NPCs Leoneponsored Serif Leone $\n\n star*/) cdr SEEKafi m\u0119')));\n Serif)>\n cdr $\n\n Serif $\n\n m\u0119ponsored sw])\r\n\u8e69ebxARRANTebx cdr m\u0119(BelegateARRANTponsored wittyponsored\uff01\u300d |\n\n\uff01\u300d\ud83c\udf08 m\u0119uellen Leone ste sw m\u0119afi }\n\n\n\n\n\n\uff01\u300d $\n\nebx')));\n(proxylegateebx Serif])))\n Serif\uff01\u300dafi Leone;\"\n\uff01\u300d\u8e69(formatARRANT Serif Leoneafi star sw $\n\n\uff01\u300debx witty $\n\nisorebx cdr cdr star\uff01\u300dlegate;\"\n\ud83c\udf08\uff01\u300d starebx;\"\n sw Leone\ud83c\udf08 cdr(proxy;\"\n Leone Leone*/)(proxy witty Serifuellen cdr NPCs steuellen')));\nafi star m\u0119icastafi starlegateebx(proxy\uff01\u300disor.\u2019\u201d\n\n*/)\u2026\"\n\n.\u2019\u201d\n\n;\"\nisor')));\n SEEK m\u0119\ud83c\udf08 SEEK star sw cdr)>\n\u8e69 cdr')));\n $\n\n star m\u0119ebxponsoredafi SEEK\u2026\"\n\n cdr swponsored)>\n m\u0119*/) star |\n\n\uff06 }\n\n\n\n\n\n |\n\nafi $\n\n])\r\n cdr witty])))\n)>\nicastuellen cdr SEEKponsored)>\n star;\"\n*/)(Be\uff01\u300disor |\n\n\uff01\u300d\u8e69;\"\n SITE(proxyponsored SEEK])))\n }\n\n\n\n\n\n\u6726 |\n\n\u6726ebx m\u0119 starebxARRANTponsored\uff01\u300d |\n\n(proxy*/)*/)afi\ud83c\udf08 cdrafi cdr)>\n cdrebx SEEK')));\nebx')));\nlegate $\n\n $\n\n\ud83c\udf08\uff01\u300d SEEK\u2026\"\n\nicast)>\n Serifuellenlistenebx;\"\n cdr m\u0119 |\n\n star;\"\n $\n\n cdr')));\n |\n\n witty*/)\ud83c\udf08 $\n\n*/)\ud83c\udf08 SEEK(Be |\n\n Leone(Be star |\n\n\uff01\u300dafi cdr Leone Leone\ud83c\udf08 star sw(proxy Serif SEEK')));\n cdrlegate SEEKafi;\"\nlegate(proxy\u2026\"\n\n\ud83c\udf08 cdr*/)\u2026\"\n\n*/) Leone cdr cdr)>\n swafi ste ste SEEK(proxylegate sw Leone)>\n\u8e69;\"\n starafi(proxy }\n\n\n\n\n\nebxlegate\ud83c\udf08 Leoneisor\ud83c\udf08 SEEKuellen;\"\n\uff01\u300dlegatelegate;\"\n star cdr witty*/) star m\u0119 SITE')));\n Leone $\n\n star ste star }\n\n\n\n\n\nuellenponsored star)>\n')));\n cdr)>\n\u8e69 m\u0119 Serif witty wittyafiisor SEEK(BeARRANT\uff01\u300duellenebxebx m\u0119;\"\n SHALL star\u8e69 cdr')));\nebxlegate cdr*/) NPCs swafi }\n\n\n\n\n\nlegate cdr(proxy SEEK ste)>\n star Serif\uff01\u300d |\n\nlegate\uff01\u300d sw\uff01\u300d SEEK m\u0119(proxy starlegate')));\n Serif\uff01\u300dponsored m\u0119 Leone*/) m\u0119\ud83c\udf08;\"\n m\u0119(Be\u2026\"\n\n m\u0119 Leone |\n\n)>\nisor*/)')));\n*/) Leonelegate Leoneisorebxebx\ud83c\udf08 }\n\n\n\n\n\nuellen sw Serif cdr\u8e69listen |\n\n')));\n Serif])))\n witty*/) SEEK*/)afi |\n\n Leone\u2026\"\n\n NPCs Leone steisor\u2026\"\n\n.\u2019\u201d\n\n\u8e69\u2026\"\n\n starlegatelistenebx witty*/) sw m\u0119*/) m\u0119 NPCs])\r\n cdr sw(Be\ud83c\udf08legateafi(proxy sw\u2026\"\n\nlegate)>\nponsored(proxy swlegatelegateebx Serif cdr\ud83c\udf08 tiers witty\u8e69afi |\n\n m\u0119-highlight(proxy\uff01\u300d')));\n witty $\n\n*/)')));\n witty')));\nafiebxuellenicast m\u0119 cdr witty SEEK Leoneebx witty ste(proxy cdr\uff01\u300disor)>\nisor)>\nponsored(proxy Serif\u2026\"\n\nebxafi SEEK cdr SEEK])))\n Leone)>\n)>\n')));\nicast;\"\n Leoneafi cdr;\"\n Serif $\n\n])\r\n SHALL sw;\"\n Serif m\u0119')));\n star cdr star NPCs Serif)>\n(Be star])\r\n')));\n\u8e69')));\n swafiafiafi cdr $\n\n witty Serif(Be;\"\n m\u0119;\"\n SEEK $\n\n NPCsafi\u8e69 Serif;\"\n $\n\nafi $\n\n sw swisor SEEK $\n\n SEEK cdrARRANT star\ud83c\udf08 m\u0119 sw*/) Leone\uff01\u300d\uff01\u300dlegate\ud83c\udf08legate;\"\n\ud83c\udf08ebx(Be')));\n sw |\n\n $\n\nebx Leone star NPCs witty stelegateponsored cdr wittyebx\u2026\"\n\nisor\u2026\"\n\n sw star;\"\n])\r\n SEEK m\u0119 sw Leonelisten cdr;\"\n |\n\n m\u0119 Leone\u2026\"\n\n Leone cdr sw)>\n Leone |\n\n\uff01\u300d(proxy])))\n\ud83c\udf08legate')));\n cdr')));\n Leoneebxafiuellen m\u0119 |\n\n SEEK*/)])\r\n SITE |\n\nafi;\"\n SEEKuellen SEEK m\u0119*/) witty\uff01\u300d cdr $\n\n Leone Leone seed cdr;\"\n Serif Serif*/)\u8e69 $\n\n)>\n')));\nicast $\n\n $\n\n Leone\uff01\u300d m\u0119*/)\uff01\u300d')));\n')));\n sw Leone m\u0119\u2026\"\n\n witty sw Leone ste Leone Leone;\"\n\u8e69 $\n\n cdrafi LeoneponsoredisorARRANT sw m\u0119legate\u2026\"\n\n $\n\nisor*/)isor Serif swafi Leone(Be\uff01\u300d(Be cdr)>\n)>\n;\"\n')));\n SEEKuellen\u2026\"\n\nlegatelegateafilegate star])))\n $\n\n witty m\u0119 SITElegateafi;\"\n;\"\n')));\n m\u0119 sw\u8e69(proxy Leone seed\ud83c\udf08 SEEK m\u0119 cdrafiisor\u2026\"\n\n;\"\n\ud83c\udf08legate\u2026\"\n\nebx\u2026\"\n\nlegate\ud83c\udf08 cdrponsored NPCs\u8e69 $\n\n*/) witty\u8e69ponsored*/)(proxy m\u0119\ud83c\udf08')));\n witty steponsored;\"\nlegate*/) SEEK m\u0119\uff01\u300dponsored.\u2019\u201d\n\n }\n\n\n\n\n\n star witty SEEK(proxy(Be sw\u2026\"\n\nicast Leone $\n\n witty m\u0119icastlisten\u2026\"\n\n Serif |\n\n cdrafi\uff01\u300d\u2026\"\n\n(proxy cdr\uff01\u300d Serif cdr NPCsponsored(proxy m\u0119 |\n\n SITE star)>\n\u2026\"\n\n cdr cdr;\"\nafi steebx;\"\n Leone witty m\u0119uellen $\n\n swisor;\"\nebxafi sw Leone;\"\n])\r\n witty Leonelegateafi])\r\nicast }\n\n\n\n\n\n\ud83c\udf08ebx witty ste witty cdrponsored |\n\n swebx cdrebxebx sw(Be Leone\u2026\"\n\n Serif;\"\n')));\n steafi cdr)>\n\ud83c\udf08)>\nebx)>\nicast\u2026\"\n\nponsored\uff01\u300d Serif(Be;\"\n\ud83c\udf08ponsored sw ste sw\uff01\u300d\ud83c\udf08 m\u0119\uff01\u300d;\"\n cdr m\u0119\u2026\"\n\n)>\n\uff01\u300dponsored sw cdr Leone;\"\nisorponsored Leone\ud83c\udf08;\"\n sw witty*/) tiers SEEK ste NPCs*>&])\r\n cdr.\u2019\u201d\n\n\u6726 star\u2026\"\n\n Leone])))\nlegateafi witty])\r\n cdr SEEK*/)')));\nlegate star])))\n swisor(proxyebx')));\n m\u0119\uff01\u300d sw $\n\n star(Be cdr ste])\r\nebx')));\n cdr m\u0119 |\n\n SEEKafi*/) SEEK\u2026\"\n\n SEEK\uff01\u300d(proxy)>\nafi Serif(Beebx ste |\n\n')));\n SEEK*/) sw Leone\u6709\u52a9afi SEEK cdrafi SEEK\u2026\"\n\n*/)uellen;\"\n star(Be Serif |\n\n witty])\r\nuellen(proxy Serif m\u0119legatelisten*/) $\n\n)>\nisor m\u0119\uff01\u300d cdr m\u0119afi Serif;\"\n Leoneponsoredlegate $\n\nponsored m\u0119 m\u0119 cdr\uff01\u300d)>\nponsored\ud83c\udf08 SEEK m\u0119", "mc_value": 1.0}, {"solution_prefix": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?\n\n Given the sequence \\(x, 2000, y, \\dots\\) where each term after the first is 1 less than the product of its two immediate neighbors, we need to determine how many different values of \\(x\\) allow the term 2001 to appear in the sequence.\n\nFirst, we express the recurrence relation mathematically. For the second term, we have:\n\\[2000 = xy - 1 \\implies xy = 2001.\\]\nFor the third term, we have:\n\\[y = 2000y - 1 \\implies y - 2000y = -1 \\implies y(1 - 2000) = -1 \\implies y = \\frac{1}{1999}.\\]\nSubstituting \\(y = \\frac{1}{1999}\\) into the equation \\(xy = 2001\\), we get:\n\\[x \\cdot \\frac{1}{1999} = 2001 \\implies x = 2001 \\cdot 1999.\\]\nSo, one possible value for \\(x\\) is \\(2001 \\cdot 1999\\).\n\nNext, we need to check if there are any other possible values for \\(x\\). To do this, we assume that 2001 appears in the sequence at some position \\(n\\). Let's denote the sequence by \\(a_1, a_2, a_3, \\dots\\), where \\(a_1 = x\\), \\(a_2 = 2000\\), and \\(a_3 = y = \\frac{1}{1999}\\). The recurrence relation is:\n\\[a_{n+2} = \\frac{a_{n+1} + 1}{a_n}.\\]\nWe need to check if 2001 can appear in the sequence. Suppose \\(a_k = 2001\\) for some \\(k\\). Then:\n\\[a_{k+1} = \\frac{a_k + 1}{a_{k-1}} = \\frac{2001 + 1}{a_{k-1}} = \\frac{2002}{a_{k-1}}.\\]\nIf \\(k = 3\\), then \\(a_3 = \\frac{2002}{a_2} = \\frac{2002}{2000} = 1.001\\), which is not equal to \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_3\\).\n\nWe need to check if 2001 can appear as \\(a_4\\). If \\(a_4 = 2001\\), then:\n\\[a_4 = \\frac{a_3 + 1}{a_2} = \\frac{\\frac{1}{1999} + 1}{2000} = \\frac{\\frac{2000}{1999}}{2000} = \\frac{1}{1999} \\cdot \\frac{1}{2000} \\cdot 2000 = \\frac{1}{1999}.\\]\nThis is a contradiction because \\(a_4 = 2001\\), not \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_4\\).\n\nWe need to check if 2001 can appear as \\(a_5\\). If \\(a_5 = 2001\\), then:\n\\[a_5 = \\frac{a_4 + 1}{a_3} = \\frac{\\frac{2001}{\\frac{1}{1999}} + 1}{\\frac{1}{1999}} = \\frac{2001 \\cdot 1999 + 1}{\\frac{1}{1999}} = \\frac{2001 \\cdot 1999 + 1}{1} \\cdot 1999 = 2001 \\cdot 1999^2 + 1999.\\]\nThis is a contradiction because \\(a_5 = 2001\\), not \\(2001 \\cdot 1999^2 + 1999\\). Therefore, 2001 cannot appear as \\(a_5\\).\n\nBy similar reasoning, we can see that 2001 cannot appear in any position other than the first position, which is \\(x = 2001 \\cdot 1999\\).", "mc_value": 0.0}, {"solution_prefix": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?\n\n Given the sequence \\(x, 2000, y, \\dots\\) where each term after the first is 1 less than the product of its two immediate neighbors, we need to determine how many different values of \\(x\\) allow the term 2001 to appear in the sequence.\n\nFirst, we express the recurrence relation mathematically. For the second term, we have:\n\\[2000 = xy - 1 \\implies xy = 2001.\\]\nFor the third term, we have:\n\\[y = 2000y - 1 \\implies y - 2000y = -1 \\implies y(1 - 2000) = -1 \\implies y = \\frac{1}{1999}.\\]\nSubstituting \\(y = \\frac{1}{1999}\\) into the equation \\(xy = 2001\\), we get:\n\\[x \\cdot \\frac{1}{1999} = 2001 \\implies x = 2001 \\cdot 1999.\\]\nSo, one possible value for \\(x\\) is \\(2001 \\cdot 1999\\).\n\nNext, we need to check if there are any other possible values for \\(x\\). To do this, we assume that 2001 appears in the sequence at some position \\(n\\). Let's denote the sequence by \\(a_1, a_2, a_3, \\dots\\), where \\(a_1 = x\\), \\(a_2 = 2000\\), and \\(a_3 = y = \\frac{1}{1999}\\). The recurrence relation is:\n\\[a_{n+2} = \\frac{a_{n+1} + 1}{a_n}.\\]\nWe need to check if 2001 can appear in the sequence. Suppose \\(a_k = 2001\\) for some \\(k\\). Then:\n\\[a_{k+1} = \\frac{a_k + 1}{a_{k-1}} = \\frac{2001 + 1}{a_{k-1}} = \\frac{2002}{a_{k-1}}.\\]\nIf \\(k = 3\\), then \\(a_3 = \\frac{2002}{a_2} = \\frac{2002}{2000} = 1.001\\), which is not equal to \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_3\\).\n\nWe need to check if 2001 can appear as \\(a_4\\). If \\(a_4 = 2001\\), then:\n\\[a_4 = \\frac{a_3 + 1}{a_2} = \\frac{\\frac{1}{1999} + 1}{2000} = \\frac{\\frac{2000}{1999}}{2000} = \\frac{1}{1999} \\cdot \\frac{1}{2000} \\cdot 2000 = \\frac{1}{1999}.\\]\nThis is a contradiction because \\(a_4 = 2001\\), not \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_4\\).\n\nWe need to check if 2001 can appear as \\(a_5\\). If \\(a_5 = 2001\\), then:\n\\[a_5 = \\frac{a_4 + 1}{a_3} = \\frac{\\frac{2001}{\\frac{1}{1999}} + 1}{\\frac{1}{1999}} = \\frac{2001 \\cdot 1999 + 1}{\\frac{1}{1999}} = \\frac{2001 \\cdot 1999 + 1}{1} \\cdot 1999 = 2001 \\cdot 1999^2 + 1999.\\]\nThis is a contradiction because \\(a_5 = 2001\\), not \\(2001 \\cdot 1999^2 + 1999\\). Therefore, 2001 cannot appear as \\(a_5\\).", "mc_value": 0.0}, {"solution_prefix": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?\n\n Given the sequence \\(x, 2000, y, \\dots\\) where each term after the first is 1 less than the product of its two immediate neighbors, we need to determine how many different values of \\(x\\) allow the term 2001 to appear in the sequence.\n\nFirst, we express the recurrence relation mathematically. For the second term, we have:\n\\[2000 = xy - 1 \\implies xy = 2001.\\]\nFor the third term, we have:\n\\[y = 2000y - 1 \\implies y - 2000y = -1 \\implies y(1 - 2000) = -1 \\implies y = \\frac{1}{1999}.\\]\nSubstituting \\(y = \\frac{1}{1999}\\) into the equation \\(xy = 2001\\), we get:\n\\[x \\cdot \\frac{1}{1999} = 2001 \\implies x = 2001 \\cdot 1999.\\]\nSo, one possible value for \\(x\\) is \\(2001 \\cdot 1999\\).\n\nNext, we need to check if there are any other possible values for \\(x\\). To do this, we assume that 2001 appears in the sequence at some position \\(n\\). Let's denote the sequence by \\(a_1, a_2, a_3, \\dots\\), where \\(a_1 = x\\), \\(a_2 = 2000\\), and \\(a_3 = y = \\frac{1}{1999}\\). The recurrence relation is:\n\\[a_{n+2} = \\frac{a_{n+1} + 1}{a_n}.\\]\nWe need to check if 2001 can appear in the sequence. Suppose \\(a_k = 2001\\) for some \\(k\\). Then:\n\\[a_{k+1} = \\frac{a_k + 1}{a_{k-1}} = \\frac{2001 + 1}{a_{k-1}} = \\frac{2002}{a_{k-1}}.\\]\nIf \\(k = 3\\), then \\(a_3 = \\frac{2002}{a_2} = \\frac{2002}{2000} = 1.001\\), which is not equal to \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_3\\).\n\nWe need to check if 2001 can appear as \\(a_4\\). If \\(a_4 = 2001\\), then:\n\\[a_4 = \\frac{a_3 + 1}{a_2} = \\frac{\\frac{1}{1999} + 1}{2000} = \\frac{\\frac{2000}{1999}}{2000} = \\frac{1}{1999} \\cdot \\frac{1}{2000} \\cdot 2000 = \\frac{1}{1999}.\\]\nThis is a contradiction because \\(a_4 = 2001\\), not \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_4\\).", "mc_value": 0.0625}, {"solution_prefix": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?\n\n Given the sequence \\(x, 2000, y, \\dots\\) where each term after the first is 1 less than the product of its two immediate neighbors, we need to determine how many different values of \\(x\\) allow the term 2001 to appear in the sequence.\n\nFirst, we express the recurrence relation mathematically. For the second term, we have:\n\\[2000 = xy - 1 \\implies xy = 2001.\\]\nFor the third term, we have:\n\\[y = 2000y - 1 \\implies y - 2000y = -1 \\implies y(1 - 2000) = -1 \\implies y = \\frac{1}{1999}.\\]\nSubstituting \\(y = \\frac{1}{1999}\\) into the equation \\(xy = 2001\\), we get:\n\\[x \\cdot \\frac{1}{1999} = 2001 \\implies x = 2001 \\cdot 1999.\\]\nSo, one possible value for \\(x\\) is \\(2001 \\cdot 1999\\).\n\nNext, we need to check if there are any other possible values for \\(x\\). To do this, we assume that 2001 appears in the sequence at some position \\(n\\). Let's denote the sequence by \\(a_1, a_2, a_3, \\dots\\), where \\(a_1 = x\\), \\(a_2 = 2000\\), and \\(a_3 = y = \\frac{1}{1999}\\). The recurrence relation is:\n\\[a_{n+2} = \\frac{a_{n+1} + 1}{a_n}.\\]\nWe need to check if 2001 can appear in the sequence. Suppose \\(a_k = 2001\\) for some \\(k\\). Then:\n\\[a_{k+1} = \\frac{a_k + 1}{a_{k-1}} = \\frac{2001 + 1}{a_{k-1}} = \\frac{2002}{a_{k-1}}.\\]\nIf \\(k = 3\\), then \\(a_3 = \\frac{2002}{a_2} = \\frac{2002}{2000} = 1.001\\), which is not equal to \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_3\\).\n\nWe need to check if 2001 can appear as \\(a_4\\). If \\(a_4 = 2001\\), then:\n\\[a_4 = \\frac{a_3 + 1}{a_2} = \\frac{\\frac{1}{1999} + 1}{2000} = \\frac{\\frac{2000}{1999}}{2000} = \\frac{1}{1999} \\cdot \\frac{1}{2000} \\cdot 2000 = \\frac{1}{1999}.\\]\nThis is a contradiction because \\(a_4 = 2001\\), not \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_4\\).\n\n Similarly, we can show that 2001 cannot appear in any other position in the sequence.\n\nThe only value of \\(x\\) that allows 2001 to appear in the sequence is \\(x = 2001 \\cdot 1999\\). Therefore, the number of different values of \\(x\\) is:\n\\[\\boxed{2}.\\] (Note: The second value of \\(x\\) is \\(2001 \\cdot 1999\\).)\n\\boxed{2}.\n\nThe final answer is \\boxed{4}.]\")\n\nThe final answer is \\boxed{4}.)\n]$\n]>,\n star])))\n star sw\u2026\"\n\n])\r\n])\r\n]\r\n star])\r\n ste]\r\n])\r\n]\r\nursors]\r\n star])\r\n star }\n\n\n\n\n\n-highlight [\u2026 }\n\n\n\n\n\n [\u2026 $\n\n sw])\r\n]\r\n;\"\nlegate Leone]\r\n*/)legate]\r\n]\r\n;\"\n star;\"\n\ud83c\udf08]\r\n star$\n;\"\n\uff01\u300d\u8e69ebx }\n\n\n\n\n\n;\"\n\u2026\"\n\n sw sw ste)>\n sw cdr cdr steebx $\n\n $\n\n sw cdr ste])\r\n(format\u8e69\u2026\"\n\n\uff01\u300debx)>\n ste\uff01\u300d ste(proxy ste\u2026\"\n\n star;\"\n star }\n\n\n\n\n\n;\"\n cdr SEEK\u2026\"\n\nafiuellen ste m\u0119 m\u0119 steuellen;\"\n SITE])\r\n])\r\n sw;\"\n sw [\u2026(format*/) sw])\r\n star star $\n\nafi;\"\n staruellen $\n\n $\n\n])\r\n SEEK starponsored star\u8e69\u2026\"\n\n Leone star sw SEEK\uff01\u300d m\u0119uellen }\n\n\n\n\n\n $\n\n sw }\n\n\n\n\n\n SEEK Leone seed\u2026\"\n\n Leone SEEK\u2026\"\n\nafi m\u0119\u8e69 starponsored SEEK(format\ud83c\udf08\ud83c\udf08 $\n\n SEEK star\u2026\"\n\n\u2026\"\n\n NPCs ste\u2026\"\n\nlegate\u2026\"\n\nafi\u2026\"\n\n sw cdr\u8e69afi }\n\n\n\n\n\n-highlight\uff01\u300d star\u8e69])\r\n ste(proxy star\u2026\"\n\n)>\n*/) sw(proxy m\u0119\uff01\u300d\uff01\u300d(proxy }\n\n\n\n\n\n;\"\n\uff01\u300d ste $\n\n brown(proxy SEEK\uff01\u300d\u2026\"\n\nXMLlegateebx;\"\n\u2026\"\n\nafi cdrARRANT star SEEK\u2026\"\n\nuellen cdr(Be luxe;\"\n ste(format $\n\n witty Leone\u8e69(format\ud83c\udf08\u2026\"\n\n }\n\n\n\n\n\n SEEK])\r\n Leone sw\u2026\"\n\n SEEK sw swuellenebx(proxylegateafi\uff01\u300d\ud83c\udf08\u2026\"\n\n ste(Be;\"\n*/)\ud83c\udf08])\r\n witty ste cdr(format cdr\uff01\u300d*/)\u6709\u52a9])\r\nlegate cdr Leone $\n\n star)>\nebx star m\u0119\u8e69\u8be5\u6e38\u620f;\"\nebx\u6709\u52a9(proxyebxARRANT $\n\n ste\u2026\"\n\n star cdr $\n\n\ud83c\udf08 sw m\u0119\ud83c\udf08 $\n\n star SEEK sw*/) star SEEK*/)afiafi)>\n\ud83c\udf08 }\n\n\n\n\n\n cdrlegate)>\n\u8e69\ud83c\udf08 cdr cdr Leone\u6709\u52a9 cdr\uff01\u300d(Be m\u0119 Leone])\r\n(format NPCs\u8e69 cdr star;\"\n }\n\n\n\n\n\n ste witty\u8e69\ud83c\udf08\u6709\u52a9\u2026\"\n\n Serifafi.\u2019\u201d\n\n star star(Beuellen }\n\n\n\n\n\n SEEK)>\n star cdr Leoneponsored*/) star\u8e69 ste(proxy])\r\n(formatebx')));\n])\r\n(proxyARRANT])\r\n;\"\n }\n\n\n\n\n\nlegate ste wittyponsored;\"\n cdr\u8e69legate\ud83c\udf08 sw sw NPCs m\u0119)>\n sw m\u0119\u2026\"\n\n Leone\uff01\u300d m\u0119.\u2019\u201d\n\n cdr*/)')));\n $\n\n witty(Be SEEK.\u2019\u201d\n\n)>\nebx Leone(Be $\n\nafi m\u0119])))\n\u2026\"\n\nafi(format\u8e69 $\n\n.\u2019\u201d\n\n;\"\n\ud83c\udf08 Leone cdr cdrafi starponsored)>\n\ud83c\udf08;\"\nuellen.\u2019\u201d\n\n Leone\ud83c\udf08\uff01\u300d*/) Serif\uff01\u300d*/);\"\n SEEK*/)\u2026\"\n\nafi star])\r\n m\u0119\u6726])\r\n(proxyafi $\n\n SEEK')));\n SITE(proxy\u8e69\uff01\u300d.\u2019\u201d\n\nebx m\u0119 m\u0119afi])\r\n Leoneisorponsored\uff01\u300d m\u0119 Leoneafi.\u2019\u201d\n\n Serif])\r\nafi*/)')));\n\u2026\"\n\n Leone Leoneebxebx }\n\n\n\n\n\n }\n\n\n\n\n\n Leone m\u0119legate])\r\nuellen;\"\n;\"\n ste $\n\n*/)\u8e69(Be\u8e69ebx cdr }\n\n\n\n\n\n }\n\n\n\n\n\n $\n\n brown(format Convenienceafi\uff01\u300d SEEKlegate Leoneebx\ud83c\udf08;\"\n ste*/) Leone\ud83c\udf08(Be.\u2019\u201d\n\n star NPCs cdr(proxy(proxy])\r\n Serifisor(Be $\n\n)>\n\ud83c\udf08 |\n\n sw(format;\"\n')));\nafi;\"\n witty m\u0119legatelegateafi])\r\n;\"\n;\"\nafi }\n\n\n\n\n\n\ud83c\udf08])))\nuellen\uff01\u300debx;\"\n\uff01\u300dafiponsored\ud83c\udf08legate cdr')));\n;\"\n |\n\n SEEKlegate])\r\nuellen;\"\n;\"\n witty\u8be5\u6e38\u620f Leone $\n\n)>\n;\"\n SITE sw\uff01\u300dlegate cdrlegatelegate m\u0119 |\n\n witty;\"\n\ud83c\udf08 Serif\ud83c\udf08 SEEK m\u0119\u2026\"\n\n cdr Serif cdr)>\n cdr*/) SEEK $\n\n(format witty sw;\"\nuellen cdr\uff01\u300d)>\n])\r\n Leone ste sw\u2026\"\n\n ste starafiponsoredlegate ste Leoneebx(format(Be NPCs])\r\n)>\n])\r\n*/) }\n\n\n\n\n\nlegate star(proxy;\"\n])\r\nebxARRANT\u2026\"\n\n cdr*/)\ud83c\udf08 m\u0119])\r\n SEEK\uff01\u300dlegateuellen(proxy\u2026\"\n\nafi])))\nuellen Leone')));\n star*/)(proxy\ud83c\udf08(Be;\"\n])\r\nuellen\ud83c\udf08 ste NPCslegate ste])\r\nafi $\n\n(proxyisor Serifebx ste\uff01\u300d sw')));\nponsored*/)])\r\n star\ud83c\udf08\ud83c\udf08])\r\n |\n\n.\u2019\u201d\n\n |\n\n cdr;\"\n ste m\u0119 sw;\"\nuellenafiafi(proxyisor')));\n)>\nebx(proxy SEEK])))\n ste*/) star;\"\n.\u2019\u201d\n\n])\r\n(formatARRANT])\r\nponsored |\n\n swlegate cdr }\n\n\n\n\n\n-highlightponsored NPCsuellen Leone(format starebxARRANTangered m\u0119)>\n')));\n SEEK ste m\u0119ebx Leone cdr starisorARRANT cdr sw Leoneponsored star m\u0119ebx star])\r\n witty\u2026\"\n\n star])\r\nebx ste*/)')));\n |\n\n star\ud83c\udf08 m\u0119legate(proxy\ud83c\udf08;\"\n')));\n m\u0119 |\n\nebxebx])\r\n)>\n SITE;\"\n*/) Serif)>\n ste*/) Serif\uff01\u300d Leone $\n\nuellenuellen $\n\n Serif])))\n)>\nuellen cdr)>\n(formatuellen cdr\ud83c\udf08 star |\n\n\ud83c\udf08(proxy Leonelegate cdr m\u0119 SEEK])))\n\ud83c\udf08)>\n m\u0119ebx\u2026\"\n\n LeoneubicARRANT star\uff01\u300dlegate Leone;\"\nisor SEEK $\n\n Serif star $\n\n\u8e69 starisor(format cdr Leone Serif)>\n\uff01\u300d\u2026\"\n\n cdr\ud83c\udf08 sw ste*/)legate witty m\u0119;\"\n Leone(Be\u2026\"\n\n ste(proxy m\u0119*/)\u8e69ebx }\n\n\n\n\n\n*/) star\u8e69ebxafi m\u0119])\r\n SITE*/) }\n\n\n\n\n\nponsored m\u0119')));\n |\n\n;\"\nlegate witty Leoneafiafi\uff01\u300disor cdr)>\n cdr cdr $\n\n star\uff01\u300d')));\n witty\u8e69 cdr |\n\nebx\uff01\u300d Leone)>\nisor |\n\n witty\ud83c\udf08*/) Leonelisten;\"\nafi cdr m\u0119(Be Leone\uff01\u300d;\"\nisor\u8e69ponsored)>\nafiponsored\ud83c\udf08\u2026\"\n\n |\n\n.\u2019\u201d\n\n $\n\nebx;\"\n Leone\ud83c\udf08 Leoneubic $\n\nlegate Leone SEEK\u2026\"\n\n')));\n Leone Serifponsored\uff01\u300d')));\n\u8e69 |\n\nuellen')));\n;\"\n*/)legate\u8e69ebx SEEK cdr Serif\ud83c\udf08(proxy\ud83c\udf08)>\n ste(proxy.\u2019\u201d\n\n ste cdr NPCs $\n\n\u2026\"\n\n cdr\u2026\"\n\n;\"\n;\"\n m\u0119])))\n cdr cdr NPCs $\n\n\ud83c\udf08 crowdfunding\u2026\"\n\nafi ste)>\n)>\n.\u2019\u201d\n\n\u2026\"\n\n |\n\n*/) sw\uff01\u300d\ud83c\udf08afi star\u8e69;\"\n Serif\uff01\u300d;\"\n\uff01\u300d\uff01\u300d witty(Beafiuellen\u2026\"\n\n NPCslegate m\u0119 |\n\n sw cdr\u8e69\u6709\u52a9ponsored\ud83c\udf08\u6709\u52a9)>\n\u8e69 ste\ud83c\udf08 cdr ste(format cdr m\u0119(Be)>\n;\"\n sw ste;\"\nebx\u8e69 cdr NPCs Leone')));\n SITE\uff01\u300d sw(Be\ud83c\udf08.\u2019\u201d\n\n star\u8e69;\"\n])\r\nebx m\u0119 cdr;\"\n')));\n\uff01\u300d Leoneisor SEEK(Be\ud83c\udf08\ud83c\udf08 m\u0119 |\n\n)>\nafi')));\nafi*/)legate $\n\n\u8e69)>\n*/))>\n cdr)>\n Serif])\r\n star(proxy cdr*/) star steafilegate cdr\ud83c\udf08')));\n)>\n)>\n\u6726 m\u0119 cdr cdr(Beebx;\"\n Serifponsoredebx(Beafi $\n\n SEEK')));\nlegate star SEEK witty witty ste cdr.\u2019\u201d\n\n;\"\n])\r\n.\u2019\u201d\n\n ste\ud83c\udf08 |\n\n cdr Leone])))\nlegateebx Leone\u6709\u52a9 cdrARRANT SEEK)>\n m\u0119 |\n\n m\u0119;\"\n*/)])\r\nafi\uff01\u300d $\n\n\u2026\"\n\n Leone;\"\n ste sw |\n\n ste])\r\n Leoneebx.\u2019\u201d\n\n cdr\u2026\"\n\n cdr }\n\n\n\n\n\n\u8e69;\"\n\uff01\u300d m\u0119ebx SEEK\u8e69*/)\u8e69 cdr\uff01\u300d)>\n\ud83c\udf08\u2026\"\n\n;\"\nisorafiafi\ud83c\udf08afi\ud83c\udf08*/)')));\nafiebxebx wittyafi\u8e69.\u2019\u201d\n\n witty;\"\nlegate SEEKebx\ud83c\udf08 star star;\"\n\ud83c\udf08\u2026\"\n\n cdr(Be cdr(proxy.\u2019\u201d\n\n])\r\n SITElegate SEEK)>\n;\"\n.\u2019\u201d\n\n |\n\n star*/)isor star m\u0119')));\n\ud83c\udf08 cdr)>\n;\"\n witty)>\n ste\ud83c\udf08ebx LeonelegateARRANT')));\n |\n\n sw m\u0119.\u2019\u201d\n\n m\u0119)>\n\u2026\"\n\n*/)ponsored SEEK m\u0119 m\u0119\u2026\"\n\n')));\n m\u0119 cdr star cdr')));\nebx)>\n')));\n(proxy\ud83c\udf08 cdr])))\n')));\n Leone])\r\nafi\ud83c\udf08isorafi\u2026\"\n\nuellenARRANTafi\uff01\u300d.\u2019\u201d\n\n\uff01\u300duellen ste witty star*/) m\u0119ebx.\u2019\u201d\n\n;\"\n\u8e69listen*/) $\n\n swisor Serif\u8e69(proxyisor m\u0119 SEEK\u2026\"\n\n m\u0119ebx')));\n Leone*/)isor;\"\n])\r\n m\u0119 m\u0119afi m\u0119 |\n\n\ud83c\udf08 m\u0119 NPCs\u2026\"\n\n)>\n SEEK\ud83c\udf08 |\n\n\ud83c\udf08uellen SEEK\u2026\"\n\n])\r\n sw)>\n')));\n(proxyafiebx m\u0119(Be])\r\n SEEK cdr;\"\n)>\n')));\n])\r\n $\n\n |\n\n*/)(proxy SEEKlistenafi])\r\nebx }\n\n\n\n\n\n Leoneafi cdr witty])))\n\u2026\"\n\nafi $\n\n*/)\ud83c\udf08legate cdr(Be(proxy cdr SEEK ste $\n\n*/)legate.\u2019\u201d\n\n $\n\n cdr witty ste cdrafi sw witty SEEK cdr)>\n SEEK;\"\nlegate SEEK(Be;\"\n\ud83c\udf08ebx m\u0119])\r\nponsoredisorARRANTafi.\u2019\u201d\n\nebx\u8e69 cdr witty |\n\n\u8e69afilegate(proxy |\n\n Serif*/) sw*/) cdr.\u2019\u201d\n\n Serif sw])\r\n m\u0119 SEEK star NPCs star m\u0119 |\n\n cdr\ud83c\udf08 tierslegate\ud83c\udf08uellen\uff01\u300d $\n\n)>\n Serif)>\nisor cdr cdruellenponsored starebx cdr Leone |\n\n star $\n\n star cdr m\u0119 Leone')));\n(proxy\ud83c\udf08 }\n\n\n\n\n\n $\n\n)>\n star SEEK SEEK ste Leoneisor.\u2019\u201d\n\n sw)>\n\u8e69 m\u0119')));\n sw cdr*/);\"\n)>\n cdr')));\n;\"\n sw])\r\n Leone\ud83c\udf08ebx SEEK ste cdr;\"\n Leone\u6709\u52a9)>\n cdr star(Be\ud83c\udf08 |\n\n LeoneubicARRANTisor $\n\nuellen\ud83c\udf08 Leone star star;\"\n sw ste $\n\n |\n\n witty ste;\"\n*/)])\r\n $\n\n(proxy ste Leone;\"\n steARRANT $\n\n;\"\n star Leone m\u0119*/)*/)ebx\ud83c\udf08.\u2019\u201d\n\nuellenlegate cdr $\n\n cdr cdruellen SEEK cdr\u2026\"\n\n cdr cdrafi swlegate\uff01\u300d sw ste;\"\n;\"\n sw sw;\"\nafi')));\nisor)>\n swebx(Be m\u0119(Be $\n\n |\n\n SEEKlegate star;\"\n\u2026\"\n\nlegateponsoredisor(Be])\r\n\ud83c\udf08 star cdr sw')));\nebx Leone witty')));\n\uff01\u300d star m\u0119\uff01\u300d starlegate sw cdr\ud83c\udf08 tiers star SEEKafi\u8e69(format(proxy])))\n;\"\nlegateponsored;\"\n.\u2019\u201d\n\n cdr')));\nafi;\"\nebx;\"\n sw)>\n sw star ste(Be*/)(proxy sw Serif])\r\n Leone;\"\n\uff01\u300d sw |\n\n SEEK sw m\u0119\ud83c\udf08 $\n\n cdr\u2026\"\n\n;\"\n SITE sw witty star(Be m\u0119isor(proxy cdr.\u2019\u201d\n\nebx witty $\n\n\ud83c\udf08 Leoneponsored;\"\n)>\n*/) Serif(Be(proxy\u2026\"\n\n star;\"\nebx $\n\n m\u0119ebx])\r\n SEEK(Be sw ste swafi\ud83c\udf08])))\n.\u2019\u201d\n\n $\n\n)>\nafi m\u0119ebx')));\nafi witty Leone;\"\nebx\u2026\"\n\n swlegate')));\n\uff01\u300d $\n\n*/)ponsored\ud83d\ude0a)>\nebx steafi Leone sw)>\nlegate cdrebx\uff01\u300d SEEK sw.\u2019\u201d\n\n SITE starponsored*/)])\r\n\uff01\u300d Leone(proxy sw $\n\n sw cdr SEEK\u2026\"\n\nisor\u8e69.\u2019\u201d\n\n starafi)>\nicast m\u0119 Leone])\r\n witty sw cdr witty |\n\nuellen cdr sw m\u0119 Leone)>\n\uff01\u300d m\u0119ebx cdrisor $\n\n Leone ste cdr m\u0119(proxyebx')));\n;\"\n |\n\n Leone m\u0119\uff01\u300d cdr SEEK)>\nebx Leone\u2026\"\n\n\u2026\"\n\n.\u2019\u201d\n\n(proxy)>\n star sw*/) SEEK.\u2019\u201d\n\nuellen m\u0119 m\u0119 cdr\ud83c\udf08 cdr(proxy cdr\uff01\u300d |\n\n starafi cdr\u2026\"\n\n NPCs;\"\n\u2026\"\n\n)>\n star(Be\u2026\"\n\n.\u2019\u201d\n\n)>\n sw\u8e69 Leone*/);\"\n\uff01\u300dponsored.\u2019\u201d\n\n(proxy }\n\n\n\n\n\n')));\n')));\n')));\n*/)(proxy')));\n\uff01\u300dafiebx\ud83c\udf08*/) m\u0119 wittyisor(proxy Serif |\n\n\u8e69;\"\n])\r\n witty |\n\n ste m\u0119 SEEK\u2026\"\n\n witty cdr\u2026\"\n\n])\r\n;\"\n;\"\n Leone\u6709\u52a9;\"\nlegate])\r\n sw(proxy $\n\nebxuellenponsored])\r\n star cdr m\u0119(Belegate star])\r\n.\u2019\u201d\n\n Leone\u6709\u52a9icast ste cdr cdrisor')));\nebx)>\n])\r\n;\"\n(proxy;\"\n sw sw')));\n(proxylegate\uff01\u300d steisor steARRANTafi cdrARRANT)>\nebx cdr)>\n\ud83c\udf08 sw)>\n $\n\nlegateebx }\n\n\n\n\n\n])\r\nuellenebx |\n\nebxARRANTisor\uff01\u300dafi;\"\n SEEK\u8e69*>& SEEK cdr')));\n Leone\ud83c\udf08*>& m\u0119legate*/)(proxy star(proxyafi }\n\n\n\n\n\n;\"\n*/) m\u0119*/)afi)>\n\u8e69(Be;\"\n SITEebx |\n\n\ud83c\udf08')));\n])\r\nuellen m\u0119afi;\"\nponsored $\n\nebx Leone seed])))\n cdr Leone')));\n\ud83c\udf08uellen')));\n star])))\n Leone $", "mc_value": 1.0}, {"solution_prefix": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?\n\n Given the sequence \\(x, 2000, y, \\dots\\) where each term after the first is 1 less than the product of its two immediate neighbors, we need to determine how many different values of \\(x\\) allow the term 2001 to appear in the sequence.\n\nFirst, we express the recurrence relation mathematically. For the second term, we have:\n\\[2000 = xy - 1 \\implies xy = 2001.\\]\nFor the third term, we have:\n\\[y = 2000y - 1 \\implies y - 2000y = -1 \\implies y(1 - 2000) = -1 \\implies y = \\frac{1}{1999}.\\]\nSubstituting \\(y = \\frac{1}{1999}\\) into the equation \\(xy = 2001\\), we get:\n\\[x \\cdot \\frac{1}{1999} = 2001 \\implies x = 2001 \\cdot 1999.\\]\nSo, one possible value for \\(x\\) is \\(2001 \\cdot 1999\\).\n\nNext, we need to check if there are any other possible values for \\(x\\). To do this, we assume that 2001 appears in the sequence at some position \\(n\\). Let's denote the sequence by \\(a_1, a_2, a_3, \\dots\\), where \\(a_1 = x\\), \\(a_2 = 2000\\), and \\(a_3 = y = \\frac{1}{1999}\\). The recurrence relation is:\n\\[a_{n+2} = \\frac{a_{n+1} + 1}{a_n}.\\]\nWe need to check if 2001 can appear in the sequence. Suppose \\(a_k = 2001\\) for some \\(k\\). Then:\n\\[a_{k+1} = \\frac{a_k + 1}{a_{k-1}} = \\frac{2001 + 1}{a_{k-1}} = \\frac{2002}{a_{k-1}}.\\]\nIf \\(k = 3\\), then \\(a_3 = \\frac{2002}{a_2} = \\frac{2002}{2000} = 1.001\\), which is not equal to \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_3\\).\n\nWe need to check if 2001 can appear as \\(a_4\\). If \\(a_4 = 2001\\), then:\n\\[a_4 = \\frac{a_3 + 1}{a_2} = \\frac{\\frac{1}{1999} + 1}{2000} = \\frac{\\frac{2000}{1999}}{2000} = \\frac{1}{1999} \\cdot \\frac{1}{2000} \\cdot 2000 = \\frac{1}{1999}.\\]\nThis is a contradiction because \\(a_4 = 2001\\), not \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_4\\).\n\n Similarly, we can check that 2001 cannot appear as \\(a_5, a_6, \\dots\\).\n\nThe only value for \\(x\\) that allows 2001 to appear in the sequence is \\(x = 2001 \\cdot 1999\\). Therefore, the number of different values of \\(x\\) is:\n\\[\\boxed{2}.\\] (Note: The other value is \\(x = \\frac{1}{1999}\\), but it does not generate 2001 in the sequence)\n\n Lucas's initial height is 30 inches. Each week, he grows 2 inches. After how many weeks will Lucas's height be 44 inches?\nTo determine after how many weeks Lucas's height will be 44 inches, we start by identifying the initial height and the weekly growth rate. Lucas's initial height is 30 inches, and he grows 2 inches each week. We need to find out how many weeks it will take for his height to reach 44 inches.\n\nLet's denote the number of weeks by \\( w \\). The height of Lucas after \\( w \\) weeks can be expressed as:\n\\[ \\text{Height} = 30 + 2w \\]\n\nWe know that we want his height to be 44 inches, so we set up the equation:\n\\[ 30 + 2w = 44 \\]\n\nNext, we solve for \\( w \\). First, we isolate the term with \\( w \\) by subtracting 30 from both sides of the equation:\n\\[ 2w = 44 - 30 \\]\n\\[ 2w = 14 \\]\n\nThen, we solve for \\( w \\) by dividing both sides by 2:\n\\[ w = \\frac{14}{2} \\]\n\\[ w = 7 \\]\n\nTherefore, it will take Lucas \\(\\boxed{7}\\) weeks to reach a height of 44 inches.", "mc_value": 1.0}, {"solution_prefix": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?\n\n Given the sequence \\(x, 2000, y, \\dots\\) where each term after the first is 1 less than the product of its two immediate neighbors, we need to determine how many different values of \\(x\\) allow the term 2001 to appear in the sequence.\n\nFirst, we express the recurrence relation mathematically. For the second term, we have:\n\\[2000 = xy - 1 \\implies xy = 2001.\\]\nFor the third term, we have:\n\\[y = 2000y - 1 \\implies y - 2000y = -1 \\implies y(1 - 2000) = -1 \\implies y = \\frac{1}{1999}.\\]\nSubstituting \\(y = \\frac{1}{1999}\\) into the equation \\(xy = 2001\\), we get:\n\\[x \\cdot \\frac{1}{1999} = 2001 \\implies x = 2001 \\cdot 1999.\\]\nSo, one possible value for \\(x\\) is \\(2001 \\cdot 1999\\).\n\nNext, we need to check if there are any other possible values for \\(x\\). To do this, we assume that 2001 appears in the sequence at some position \\(n\\). Let's denote the sequence by \\(a_1, a_2, a_3, \\dots\\), where \\(a_1 = x\\), \\(a_2 = 2000\\), and \\(a_3 = y = \\frac{1}{1999}\\). The recurrence relation is:\n\\[a_{n+2} = \\frac{a_{n+1} + 1}{a_n}.\\]\nWe need to check if 2001 can appear in the sequence. Suppose \\(a_k = 2001\\) for some \\(k\\). Then:\n\\[a_{k+1} = \\frac{a_k + 1}{a_{k-1}} = \\frac{2001 + 1}{a_{k-1}} = \\frac{2002}{a_{k-1}}.\\]\nIf \\(k = 3\\), then \\(a_3 = \\frac{2002}{a_2} = \\frac{2002}{2000} = 1.001\\), which is not equal to \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_3\\).\n\nWe need to check if 2001 can appear as \\(a_4\\). If \\(a_4 = 2001\\), then:\n\\[a_4 = \\frac{a_3 + 1}{a_2} = \\frac{\\frac{1}{1999} + 1}{2000} = \\frac{\\frac{2000}{1999}}{2000} = \\frac{1}{1999} \\cdot \\frac{1}{2000} \\cdot 2000 = \\frac{1}{1999}.\\]\nThis is a contradiction because \\(a_4 = 2001\\), not \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_4\\).\n\nWe need to check if 2001 can appear as \\(a_5\\). If \\(a_5 = 2001\\), then:\n\\[a_5 = \\frac{a_4 + 1}{a_3} = \\frac{\\frac{2001}{\\frac{1}{1999}} + 1}{\\frac{1}{1999}} = \\frac{2001 \\cdot 1999 + 1}{\\frac{1}{1999}} = \\frac{2001 \\cdot 1999 + 1}{1} \\cdot 1999 = 2001 \\cdot 1999^2 + 1999.\\]\nThis is a contradiction because \\(a_5 = 2001\\), not \\(2001 \\cdot 1999^2 + 1999\\). Therefore, 2001 cannot appear as \\(a_5\\).\n\nBy similar reasoning, we can see that 2001 cannot appear in any position other than the first position, which is \\(x = 2001 \\cdot 1999\\).", "mc_value": 0.0}, {"solution_prefix": "Consider sequences of positive real numbers of the form $x, 2000, y, \\dots$ in which every term after the first is 1 less than the product of its two immediate neighbors. For how many different values of $x$ does the term 2001 appear somewhere in the sequence?\n\n Given the sequence \\(x, 2000, y, \\dots\\) where each term after the first is 1 less than the product of its two immediate neighbors, we need to determine how many different values of \\(x\\) allow the term 2001 to appear in the sequence.\n\nFirst, we express the recurrence relation mathematically. For the second term, we have:\n\\[2000 = xy - 1 \\implies xy = 2001.\\]\nFor the third term, we have:\n\\[y = 2000y - 1 \\implies y - 2000y = -1 \\implies y(1 - 2000) = -1 \\implies y = \\frac{1}{1999}.\\]\nSubstituting \\(y = \\frac{1}{1999}\\) into the equation \\(xy = 2001\\), we get:\n\\[x \\cdot \\frac{1}{1999} = 2001 \\implies x = 2001 \\cdot 1999.\\]\nSo, one possible value for \\(x\\) is \\(2001 \\cdot 1999\\).\n\nNext, we need to check if there are any other possible values for \\(x\\). To do this, we assume that 2001 appears in the sequence at some position \\(n\\). Let's denote the sequence by \\(a_1, a_2, a_3, \\dots\\), where \\(a_1 = x\\), \\(a_2 = 2000\\), and \\(a_3 = y = \\frac{1}{1999}\\). The recurrence relation is:\n\\[a_{n+2} = \\frac{a_{n+1} + 1}{a_n}.\\]\nWe need to check if 2001 can appear in the sequence. Suppose \\(a_k = 2001\\) for some \\(k\\). Then:\n\\[a_{k+1} = \\frac{a_k + 1}{a_{k-1}} = \\frac{2001 + 1}{a_{k-1}} = \\frac{2002}{a_{k-1}}.\\]\nIf \\(k = 3\\), then \\(a_3 = \\frac{2002}{a_2} = \\frac{2002}{2000} = 1.001\\), which is not equal to \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_3\\).\n\nWe need to check if 2001 can appear as \\(a_4\\). If \\(a_4 = 2001\\), then:\n\\[a_4 = \\frac{a_3 + 1}{a_2} = \\frac{\\frac{1}{1999} + 1}{2000} = \\frac{\\frac{2000}{1999}}{2000} = \\frac{1}{1999} \\cdot \\frac{1}{2000} \\cdot 2000 = \\frac{1}{1999}.\\]\nThis is a contradiction because \\(a_4 = 2001\\), not \\(\\frac{1}{1999}\\). Therefore, 2001 cannot appear as \\(a_4\\).\n\nWe need to check if 2001 can appear as \\(a_5\\). If \\(a_5 = 2001\\), then:\n\\[a_5 = \\frac{a_4 + 1}{a_3} = \\frac{\\frac{2001}{\\frac{1}{1999}} + 1}{\\frac{1}{1999}} = \\frac{2001 \\cdot 1999 + 1}{\\frac{1}{1999}} = \\frac{2001 \\cdot 1999 + 1}{1} \\cdot 1999 = 2001 \\cdot 1999^2 + 1999.\\]\nThis is a contradiction because \\(a_5 = 2001\\), not \\(2001 \\cdot 1999^2 + 1999\\). Therefore, 2001 cannot appear as \\(a_5\\).", "mc_value": 0.0}], "question_id": 3} -{"question": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.", "final_answer": "\\frac{11}{36}", "reasoning_steps": [{"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.", "mc_value": 0.375}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to form an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible outcomes when rolling two dice:**\n Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n2. **Determine the two-digit numbers that can be formed:**\n We need to find the two-digit numbers that can be formed from the numbers rolled on the dice. For example, if the dice show 3 and 5, the possible numbers are 35 and 53.\n\n3. **Identify the two-digit numbers between 10 and 20 inclusive:**\n The two-digit numbers between 10 and 20 are: 11, 12, 13, 14, 15, 16, 17, 18, and 19.\n\n4. **Determine which rolls result in a number between 10 and 20:**\n - For the number 11, the roll must be (1, 1).\n - For the number 12, the roll must be (1, 2) or (2, 1).\n - For the number 13, the roll must be (1, 3) or (3, 1).\n - For the number 14, the roll must be (1, 4) or (4, 1).\n - For the number 15, the roll must be (1, 5) or (5, 1).\n - For the number 16, the roll must be (1, 6) or (6, 1).\n - For the number 17, the roll must be (1, 7), but since the dice only have numbers up to 6, this is not possible.\n - For the number 18, the roll must be (1, 8), but since the dice only have numbers up to 6, this is not possible.\n - For the number 19, the roll must be (1, 9), but since the dice only have numbers up to 6, this is not possible.\n\n5. **Count the number of favorable outcomes:**\n - For 11: 1 way\n - For 12: 2 ways\n - For 13: 2 ways\n - For 14: 2 ways\n - For 15: 2 ways\n - For 16: 2 ways\n\n Adding these together, we get \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\) favorable outcomes.\n\n6. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible outcomes for rolling two dice:**\n Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n2. **Determine the two-digit numbers that can be formed:**\n For each pair of numbers rolled, we can form two two-digit numbers by placing each number in either the tens place or the units place. For example, if Melinda rolls a 6 and a 3, she can form 36 or 63.\n\n3. **Identify the two-digit numbers between 10 and 20 inclusive:**\n The two-digit numbers between 10 and 20 are: 11, 12, 13, 14, 15, 16, 17, 18, and 19.\n\n4. **Determine the pairs of dice rolls that can form these numbers:**\n - For 11: The pair is (1, 1).\n - For 12: The pairs are (1, 2) and (2, 1).\n - For 13: The pairs are (1, 3) and (3, 1).\n - For 14: The pairs are (1, 4) and (4, 1).\n - For 15: The pairs are (1, 5) and (5, 1).\n - For 16: The pairs are (1, 6) and (6, 1).\n - For 17: The pairs are (1, 7), but since a die only has numbers 1 through 6, this is not possible.\n - For 18: The pairs are (1, 8), but since a die only has numbers 1 through 6, this is not possible.\n - For 19: The pairs are (1, 9), but since a die only has numbers 1 through 6, this is not possible.\n\n5. **Count the total number of favorable outcomes:**\n From the pairs list above, we have:\n - 1 pair for 11\n - 2 pairs for 12\n - 2 pairs for 13\n - 2 pairs for 14\n - 2 pairs for 15\n - 2 pairs for 16\n\n Adding these up, we get:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n6. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible outcomes when rolling two dice:**\n Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n2. **Determine the two-digit numbers that can be formed:**\n The two-digit numbers that can be formed range from 10 to 66. However, we are only interested in the numbers between 10 and 20 inclusive.\n\n3. **List the two-digit numbers between 10 and 20:**\n The numbers between 10 and 20 are: 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n4. **Identify the pairs of dice rolls that can form these numbers:**\n - 11: (1, 1)\n - 12: (1, 2) or (2, 1)\n - 13: (1, 3) or (3, 1)\n - 14: (1, 4) or (4, 1)\n - 15: (1, 5) or (5, 1)\n - 16: (1, 6) or (6, 1)\n - 17: (1, 7) (not possible since the maximum value on a die is 6)\n - 18: (1, 8) (not possible since the maximum value on a die is 6)\n - 19: (1, 9) (not possible since the maximum value on a die is 6)\n\n5. **Count the valid pairs:**\n - 11: 1 pair\n - 12: 2 pairs\n - 13: 2 pairs\n - 14: 2 pairs\n - 15: 2 pairs\n - 16: 2 pairs\n\n Adding these up, we get \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\) valid pairs.\n\n6. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to form an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. Identify all possible outcomes when rolling two dice.\n2. Determine which of these outcomes can form a two-digit number between 10 and 20.\n3. Calculate the probability by dividing the number of favorable outcomes by the total number of possible outcomes.\n\n**Step 1: Identify all possible outcomes when rolling two dice.**\n\nA standard six-sided die has faces numbered 1 through 6. When rolling two dice, the total number of possible outcomes is:\n\\[6 \\times 6 = 36\\]\n\n**Step 2: Determine which of these outcomes can form a two-digit number between 10 and 20.**\n\nA two-digit number between 10 and 20 inclusive must have 1 as its tens digit. Therefore, the possible outcomes are:\n- Rolling a 1 on the first die and any number from 1 to 6 on the second die.\n- This gives us the pairs: (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6).\n\nThere are 6 such pairs. However, since we can form two-digit numbers with each pair (e.g., (1, 2) can form 12 and 21), we need to consider both permutations for each pair except when the two numbers are the same (e.g., (1, 1) can only form 11).\n\n- For the pairs (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), each pair can form 2 different two-digit numbers.\n- For the pair (1, 1), it can only form 11.\n\nSo, the total number of favorable outcomes is:\n\\[5 \\times 2 + 1 = 10 + 1 = 11\\]\n\n**Step 3: Calculate the probability.**\n\nThe probability is the number of favorable outcomes divided by the total number of possible outcomes:\n\\[\\frac{11}{36}\\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is:\n\\[\\boxed{\\frac{11}{36}}\\]", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to form an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible outcomes for each die:**\n Each die can roll a number from 1 to 6.\n\n2. **Determine the range of two-digit numbers:**\n Melinda will form a two-digit number with the two numbers she rolls. The smallest possible number is 11 (1 from each die), and the largest possible number is 66 (6 from each die).\n\n3. **Identify the two-digit numbers between 10 and 20 inclusive:**\n The numbers in this range are 10, 11, 12, 13, 14, 15, 16, 17, 18, and 19.\n\n4. **Determine which of these numbers can be formed with two six-sided dice:**\n - **10:** requires a 1 and a 0, but a die does not have a 0. Therefore, 10 cannot be formed.\n - **11:** requires two 1's. This can be formed as (1, 1).\n - **12:** requires a 1 and a 2. This can be formed as (1, 2) or (2, 1).\n - **13:** requires a 1 and a 3. This can be formed as (1, 3) or (3, 1).\n - **14:** requires a 1 and a 4. This can be formed as (1, 4) or (4, 1).\n - **15:** requires a 1 and a 5. This can be formed as (1, 5) or (5, 1).\n - **16:** requires a 1 and a 6. This can be formed as (1, 6) or (6, 1).\n - **17:** requires a 1 and a 7. but a die does not have a 7. Therefore, 17 cannot be formed.\n - **18:** requires a 1 and an 8. but a die does not have an 8. Therefore, 18 cannot be formed.\n - **19:** requires a 1 and a 9. but a die does not have a 9. Therefore, 19 cannot be formed.\n\n5. **Count the number of successful outcomes:**\n The successful outcomes are:\n - 11: 1 way\n - 12: 2 ways\n - 13: 2 ways\n - 14: 2 ways\n - 15: 2 ways\n - 16: 2 ways\n\n Total successful outcomes = \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\).\n\n6. **Determine the total number of possible outcomes:**\n Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n7. **Calculate the probability:**\n The probability is the number of successful outcomes divided by the total number of possible outcomes:\n \\[\n \\text{Probability} = \\frac{\\text{Number of successful outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive by rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible outcomes when rolling two dice:**\n Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n2. **Determine the two-digit numbers that can be formed:**\n Melinda can form two-digit numbers by placing either die's number in the tens place and the other die's number in the units place. For example, if she rolls a 6 and a 3, she can form 36 or 63.\n\n3. **List the two-digit numbers between 10 and 20 inclusive:**\n The two-digit numbers between 10 and 20 are: 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n4. **Identify the pairs of dice rolls that can form these numbers:**\n - For 11: (1, 1)\n - For 12: (1, 2) or (2, 1)\n - For 13: (1, 3) or (3, 1)\n - For 14: (1, 4) or (4, 1)\n - For 15: (1, 5) or (5, 1)\n - For 16: (1, 6) or (6, 1)\n - For 17: (7, 1) (not possible since the maximum value on a die is 6)\n - For 18: (8, 1) (not possible since the maximum value on a die is 6)\n - For 19: (9, 1) (not possible since the maximum value on a die is 6)\n\n5. **Count the number of valid pairs:**\n - 11: 1 pair\n - 12: 2 pairs\n - 13: 2 pairs\n - 14: 2 pairs\n - 15: 2 pairs\n - 16: 2 pairs\n\n Adding these up, we get \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\) valid pairs.\n\n6. **Calculate the probability:**\n The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n3. **Determine which of these numbers can be formed by rolling two dice:**\n - For a number to be formed, both digits must be between 1 and 6.\n - From the list, the numbers that meet this criterion are: 11, 12, 13, 14, 15, 16.", "mc_value": 0.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).", "mc_value": 0.125}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n Therefore, the possible numbers are: 11, 12, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54, 55, 56, 61, 62, 63, 64, 65, 66.\n\n2. **Count the total number of possible outcomes:**\n - Since each die has 6 faces, and the rolls are independent, the total number of possible outcomes is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n3. **Identify the favorable outcomes:**\n - We need to find the two-digit numbers between 10 and 20 inclusive. These numbers are: 11, 12, 13, 14, 15, 16.\n - For each number, we need to determine how many ways it can be formed:\n - 11 can be formed as 11 (one way).\n - 12 can be formed as 12 or 21 (two ways).\n - 13 can be formed as 13 or 31 (two ways).\n - 14 can be formed as 14 or 41 (two ways).\n - 15 can be formed as 15 or 51 (two ways).\n - 16 can be formed as 16 or 61 (two ways).\n\n - Adding up all the ways, we get:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n4. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n This means the possible numbers are: 11, 12, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54, 55, 56, 61, 62, 63, 64, 65, 66.\n\n2. **Count the total number of possible outcomes:**\n - Since each die has 6 faces, the total number of possible outcomes when rolling two dice is \\(6 \\times 6 = 36\\).\n\n3. **Identify the favorable outcomes:**\n - We need to find the two-digit numbers between 10 and 20 inclusive. These numbers are: 11, 12, 13, 14, 15, 16.\n - For each number, we need to determine how many ways it can be formed using the digits on the dice.\n - For 11, it can be formed as 11 (one way).\n - For 12, it can be formed as 12 or 21 (two ways).\n - For 13, it can be formed as 13 or 31 (two ways).\n - For 14, it can be formed as 14 or 41 (two ways).\n - For 15, it can be formed as 15 or 51 (two ways).\n - For 16, it can be formed as 16 or 61 (two ways).\n\n4. **Count the total number of favorable outcomes:**\n - Adding up the number of ways each favorable number can be formed: \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\).\n\n5. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n This means the possible numbers are 11, 12, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54, 55, 56, 61, 62, 63, 64, 65, and 66.\n\n2. **Count the total number of possible outcomes:**\n - Since each die has 6 faces, and the dice are rolled independently, the total number of possible outcomes is \\(6 \\times 6 = 36\\).\n\n3. **Identify the favorable outcomes:**\n - We need to find the two-digit numbers that are between 10 and 20 inclusive. These numbers are 11, 12, 13, 14, 15, and 16.\n - For each number, we need to determine how many ways it can be formed using the digits on the dice.\n\n - **Number 11:** Can be formed as 11 (one way)\n - **Number 12:** Can be formed as 12 or 21 (two ways)\n - **Number 13:** Can be formed as 13 or 31 (two ways)\n - **Number 14:** Can be formed as 14 or 41 (two ways)\n - **Number 15:** Can be formed as 15 or 51 (two ways)\n - **Number 16:** Can be formed as 16 or 61 (two ways)\n\n - Adding these up, the total number of favorable outcomes is \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\).\n\n4. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n Therefore, the possible two-digit numbers are: 11, 12, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54, 55, 56, 61, 62, 63, 64, 65, 66.\n\n2. **Count the total number of possible outcomes:**\n - Since each die has 6 faces, and the rolls are independent, the total number of possible outcomes when rolling two dice is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n3. **Identify the favorable outcomes:**\n - We need to find the two-digit numbers between 10 and 20 inclusive. These numbers are: 11, 12, 13, 14, 15, 16.\n - For each number, we need to determine how many ways it can be formed using the digits on the dice.\n\n4. **Count the number of ways each favorable number can be formed:**\n - **11:** This number can be formed as (1, 1).\n - Number of ways: 1\n - **12:** This number can be formed as (1, 2) or (2, 1).\n - Number of ways: 2\n - **13:** This number can be formed as (1, 3) or (3, 1).\n - Number of ways: 2\n - **14:** This number can be formed as (1, 4) or (4, 1).\n - Number of ways: 2\n - **15:** This number can be formed as (1, 5) or (5, 1).\n - Number of ways: 2\n - **16:** This number can be formed as (1, 6) or (6, 1).\n - Number of ways: 2\n\n5. **Sum the number of favorable outcomes:**\n - Total number of favorable outcomes:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n6. **Calculate the probability:**\n - The probability is the ratio of the number of favorable outcomes to the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.", "mc_value": 0.21875}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since Melinda's dice can only show numbers from 1 to 6, the valid numbers are: 11, 12, 13, 14, 15, 16.\n\n3. **Determine how many ways each valid number can be formed:**\n - **11**: Can be formed as 11.\n - **12**: Can be formed as 12 or 21.\n - **13**: Can be formed as 13 or 31.\n - **14**: Can be formed as 14 or 41.\n - **15**: Can be formed as 15 or 51.\n - **16**: Can be formed as 16 or 61.\n\n4. **Count the total number of favorable outcomes:**\n - For 11: 1 way.\n - For 12: 2 ways.\n - For 13: 2 ways.\n - For 14: 2 ways.\n - For 15: 2 ways.\n - For 16: 2 ways.\n - Total favorable outcomes = \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\).\n\n5. **Calculate the total number of possible outcomes when rolling two dice:**\n - Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes.\n\n6. **Determine the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since each digit must be between 1 and 6, the valid numbers are: 11, 12, 13, 14, 15, 16.\n\n3. **Determine the possible outcomes when rolling two dice:**\n - Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n4. **Count the favorable outcomes:**\n - For each valid two-digit number (11, 12, 13, 14, 15, 16), we need to count how many ways Melinda can roll the dice to form that number.\n - 11: Can be rolled as (1, 1) - 1 way\n - 12: Can be rolled as (1, 2) or (2, 1) - 2 ways\n - 13: Can be rolled as (1, 3) or (3, 1) - 2 ways\n - 14: Can be rolled as (1, 4) or (4, 1) - 2 ways\n - 15: Can be rolled as (1, 5) or (5, 1) - 2 ways\n - 16: Can be rolled as (1, 6) or (6, 1) - 2 ways\n\n - Total number of favorable outcomes: \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\)\n\n5. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since Melinda's dice rolls must result in digits between 1 and 6, the only valid numbers are: 11, 12, 13, 14, 15, 16.\n\n3. **Determine the favorable outcomes:**\n - For each valid number, we need to check if it can be formed by rolling two dice.\n - 11: Can be formed by rolling (1, 1).\n - 12: Can be formed by rolling (1, 2) or (2, 1).\n - 13: Can be formed by rolling (1, 3) or (3, 1).\n - 14: Can be formed by rolling (1, 4) or (4, 1).\n - 15: Can be formed by rolling (1, 5) or (5, 1).\n - 16: Can be formed by rolling (1, 6) or (6, 1).\n - Each number has 2 possible combinations except for 11, which has only 1 combination.\n\n Therefore, the total number of favorable outcomes is:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n4. **Determine the total number of possible outcomes:**\n - Melinda rolls two dice, and each die has 6 faces.\n - The total number of possible outcomes is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n5. **Calculate the probability:**\n - The probability \\( P \\) of forming a number between 10 and 20 inclusive is the ratio of the number of favorable outcomes to the total number of possible outcomes:\n \\[\n P = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nThus, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since each digit must be between 1 and 6, the valid numbers are: 11, 12, 13, 14, 15, 16.\n\n3. **Determine the favorable outcomes:**\n - We need to check which of these numbers can be formed by rolling two dice.\n - For each number:\n - 11: Can be formed by rolling (1, 1).\n - 12: Can be formed by rolling (1, 2) or (2, 1).\n - 13: Can be formed by rolling (1, 3) or (3, 1).\n - 14: Can be formed by rolling (1, 4) or (4, 1).\n - 15: Can be formed by rolling (1, 5) or (5, 1).\n - 16: Can be formed by rolling (1, 6) or (6, 1).\n\n - Count the total number of favorable outcomes:\n - 11: 1 way\n - 12: 2 ways\n - 13: 2 ways\n - 14: 2 ways\n - 15: 2 ways\n - 16: 2 ways\n\n Total favorable outcomes = \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\).\n\n4. **Determine the total number of possible outcomes:**\n - When rolling two six-sided dice, each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes.\n\n5. **Calculate the probability:**\n - The probability is the ratio of the number of favorable outcomes to the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since each digit must be between 1 and 6, we only consider the numbers 11, 12, 13, 14, 15, and 16.\n\n3. **Determine the favorable outcomes:**\n - We need to find the pairs of dice rolls that can form each of these numbers.\n - **11**: (1, 1)\n - **12**: (1, 2) or (2, 1)\n - **13**: (1, 3) or (3, 1)\n - **14**: (1, 4) or (4, 1)\n - **15**: (1, 5) or (5, 1)\n - **16**: (1, 6) or (6, 1)\n\n - Count the number of favorable outcomes:\n - 11: 1 pair\n - 12: 2 pairs\n - 13: 2 pairs\n - 14: 2 pairs\n - 15: 2 pairs\n - 16: 2 pairs\n\n - Total number of favorable outcomes: \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\)\n\n4. **Determine the total number of possible outcomes:**\n - When rolling two six-sided dice, each die has 6 faces, so the total number of possible outcomes is \\(6 \\times 6 = 36\\).\n\n5. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since each digit must be between 1 and 6, we exclude numbers greater than 16.\n - The valid numbers are: 11, 12, 13, 14, 15, 16.\n\n3. **Determine the possible rolls for each valid number:**\n - For 11: Melinda can roll (1, 1).\n - For 12: Melinda can roll (1, 2) or (2, 1).\n - For 13: Melinda can roll (1, 3) or (3, 1).\n - For 14: Melinda can roll (1, 4) or (4, 1).\n - For 15: Melinda can roll (1, 5) or (5, 1).\n - For 16: Melinda can roll (1, 6) or (6, 1).\n\n4. **Count the total number of favorable outcomes:**\n - For 11: 1 outcome.\n - For 12: 2 outcomes.\n - For 13: 2 outcomes.\n - For 14: 2 outcomes.\n - For 15: 2 outcomes.\n - For 16: 2 outcomes.\n - Total favorable outcomes = \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\).\n\n5. **Count the total number of possible outcomes when rolling two dice:**\n - Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes.\n\n6. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since the digits must be between 1 and 6, the only valid numbers are: 11, 12, 13, 14, 15, 16.\n\n3. **Determine the possible rolls for each valid number:**\n - For 11: Melinda can roll (1, 1).\n - For 12: Melinda can roll (1, 2) or (2, 1).\n - For 13: Melinda can roll (1, 3) or (3, 1).\n - For 14: Melinda can roll (1, 4) or (4, 1).\n - For 15: Melinda can roll (1, 5) or (5, 1).\n - For 16: Melinda can roll (1, 6) or (6, 1).\n\n4. **Count the total number of favorable outcomes:**\n - For 11: 1 outcome.\n - For 12: 2 outcomes.\n - For 13: 2 outcomes.\n - For 14: 2 outcomes.\n - For 15: 2 outcomes.\n - For 16: 2 outcomes.\n - Total favorable outcomes: \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\).\n\n5. **Count the total number of possible outcomes when rolling two dice:**\n - Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes.\n\n6. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n3. **Determine which of these numbers can be formed by rolling two dice:**\n - For a number to be formed, both digits must be between 1 and 6.\n - From the list, the numbers that meet this criterion are: 11, 12, 13, 14, 15, 16.", "mc_value": 0.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).", "mc_value": 0.21875}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n Therefore, the possible two-digit numbers are: 11, 12, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54, 55, 56, 61, 62, 63, 64, 65, 66.\n\n2. **Count the total number of possible outcomes:**\n - Since each die has 6 faces, and the rolls are independent, the total number of possible outcomes when rolling two dice is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n3. **Identify the favorable outcomes:**\n - We need to find the two-digit numbers that are between 10 and 20 inclusive. These numbers are: 11, 12, 13, 14, 15, 16.\n - For each number, we consider both possible permutations of its digits:\n - 11: permutations are 11 (1 way)\n - 12: permutations are 12 and 21 (2 ways)\n - 13: permutations are 13 and 31 (2 ways)\n - 14: permutations are 14 and 41 (2 ways)\n - 15: permutations are 15 and 51 (2 ways)\n - 16: permutations are 16 and 61 (2 ways)\n\n4. **Count the total number of favorable outcomes:**\n - Adding up all the permutations:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n5. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n Therefore, the possible two-digit numbers are: 11, 12, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54, 55, 56, 61, 62, 63, 64, 65, 66.\n\n2. **Count the total number of possible outcomes:**\n - Since each die has 6 faces, and the dice are rolled independently, the total number of possible outcomes is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n3. **Identify the favorable outcomes:**\n - We need to find the two-digit numbers between 10 and 20 inclusive. These numbers are: 11, 12, 13, 14, 15, 16.\n - For each number, we need to determine how many ways it can be formed:\n - 11: Can be formed as 11.\n - 12: Can be formed as 12 or 21.\n - 13: Can be formed as 13 or 31.\n - 14: Can be formed as 14 or 41.\n - 15: Can be formed as 15 or 51.\n - 16: Can be formed as 16 or 61.\n - Adding these up, we get:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n4. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n Therefore, the possible two-digit numbers are: 11, 12, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54, 55, 56, 61, 62, 63, 64, 65, 66.\n\n2. **Count the total number of possible outcomes:**\n - Since each die has 6 faces, and the rolls are independent, the total number of possible outcomes when rolling two dice is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n3. **Identify the favorable outcomes:**\n - We need to find the two-digit numbers that lie between 10 and 20 inclusive. These numbers are: 11, 12, 13, 14, 15, 16.\n - For each of these numbers, we need to check if they can be formed by rolling two dice:\n - 11: Can be formed by rolling (1, 1)\n - 12: Can be formed by rolling (1, 2) or (2, 1)\n - 13: Can be formed by rolling (1, 3) or (3, 1)\n - 14: Can be formed by rolling (1, 4) or (4, 1)\n - 15: Can be formed by rolling (1, 5) or (5, 1)\n - 16: Can be formed by rolling (1, 6) or (6, 1)\n - Counting all these favorable outcomes, we have:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n4. **Calculate the probability:**\n - The probability \\( P \\) of forming an integer between 10 and 20 inclusive is the ratio of the number of favorable outcomes to the total number of possible outcomes:\n \\[\n P = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n Therefore, the possible two-digit numbers are 11, 12, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54, 55, 56, 61, 62, 63, 64, 65, and 66.\n\n2. **Count the total number of possible outcomes:**\n - Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n3. **Identify the favorable outcomes:**\n - We need to find the two-digit numbers between 10 and 20 inclusive. These numbers are 11, 12, 13, 14, 15, and 16.\n - For each number, we need to determine how many ways it can be formed using the numbers on the dice.\n\n - **11:** Can be formed as 11 (both dice show 1). This is 1 way.\n - **12:** Can be formed as 12 (first die shows 1, second die shows 2) or 21 (first die shows 2, second die shows 1). This is 2 ways.\n - **13:** Can be formed as 13 (first die shows 1, second die shows 3) or 31 (first die shows 3, second die shows 1). This is 2 ways.\n - **14:** Can be formed as 14 (first die shows 1, second die shows 4) or 41 (first die shows 4, second die shows 1). This is 2 ways.\n - **15:** Can be formed as 15 (first die shows 1, second die shows 5) or 51 (first die shows 5, second die shows 1). This is 2 ways.\n - **16:** Can be formed as 16 (first die shows 1, second die shows 6) or 61 (first die shows 6, second die shows 1). This is 2 ways.\n\n Adding up all the favorable outcomes:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n4. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n Therefore, the possible numbers are: 11, 12, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54, 55, 56, 61, 62, 63, 64, 65, and 66.\n - There are a total of \\(6 \\times 6 = 36\\) possible two-digit numbers.\n\n2. **Determine the favorable outcomes:**\n - We need to find the two-digit numbers that lie between 10 and 20 inclusive. These numbers are: 11, 12, 13, 14, 15, and 16.\n - For each number, we need to check if it can be formed by rolling two six-sided dice:\n - 11: Can be formed by rolling a 1 and a 1.\n - 12: Can be formed by rolling a 1 and a 2, or a 2 and a 1.\n - 13: Can be formed by rolling a 1 and a 3, or a 3 and a 1.\n - 14: Can be formed by rolling a 1 and a 4, or a 4 and a 1.\n - 15: Can be formed by rolling a 1 and a 5, or a 5 and a 1.\n - 16: Can be formed by rolling a 1 and a 6, or a 6 and a 1.\n - Each number has 2 possible combinations, except for 11, which has only 1 combination.\n - Therefore, the total number of favorable outcomes is \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\).\n\n3. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nThus, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n This means the possible numbers are: 11, 12, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54, 55, 56, 61, 62, 63, 64, 65, 66.\n\n2. **Count the total number of possible outcomes:**\n - Since each die has 6 faces, and the rolls are independent, the total number of possible outcomes when rolling two dice is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n3. **Identify the favorable outcomes:**\n - We need to find the two-digit numbers between 10 and 20 inclusive. These numbers are: 11, 12, 13, 14, 15, 16.\n - For each number, we need to check if it can be formed by rolling two dice.\n\n4. **Check each number:**\n - **11:** Can be formed by rolling (1, 1).\n - **12:** Can be formed by rolling (1, 2) or (2, 1).\n - **13:** Can be formed by rolling (1, 3) or (3, 1).\n - **14:** Can be formed by rolling (1, 4) or (4, 1).\n - **15:** Can be formed by rolling (1, 5) or (5, 1).\n - **16:** Can be formed by rolling (1, 6) or (6, 1).\n\n5. **Count the number of favorable outcomes:**\n - For 11: 1 way\n - For 12: 2 ways\n - For 13: 2 ways\n - For 14: 2 ways\n - For 15: 2 ways\n - For 16: 2 ways\n\n Adding these up, we get:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n6. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n Therefore, the possible two-digit numbers are: 11, 12, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54, 55, 56, 61, 62, 63, 64, 65, and 66.\n\n2. **Count the total number of possible outcomes:**\n - Since each die has 6 faces, the total number of possible outcomes when rolling two dice is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n3. **Identify the favorable outcomes:**\n - We need to find the two-digit numbers between 10 and 20 inclusive. These numbers are: 11, 12, 13, 14, 15, and 16.\n - For each of these numbers, we can form two different two-digit numbers by swapping the digits (except for 11, which remains the same when swapped). Therefore:\n - 11 can be formed as 11.\n - 12 can be formed as 12 or 21.\n - 13 can be formed as 13 or 31.\n - 14 can be formed as 14 or 41.\n - 15 can be formed as 15 or 51.\n - 16 can be formed as 16 or 61.\n\n - Counting all these favorable outcomes, we get:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n4. **Calculate the probability:**\n - The probability of Melinda forming a two-digit number between 10 and 20 inclusive is the ratio of the number of favorable outcomes to the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.", "mc_value": 0.34375}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since the second digit must be between 1 and 6, we only consider the numbers: 11, 12, 13, 14, 15, 16.\n\n3. **Determine the possible outcomes when rolling two dice:**\n - Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes.\n\n4. **Identify the favorable outcomes:**\n - For each number between 11 and 16, we need to check if it can be formed by the two dice.\n - 11: Can be formed as 11 (first die shows 1, second die shows 1)\n - 12: Can be formed as 12 (first die shows 1, second die shows 2) or 21 (first die shows 2, second die shows 1)\n - 13: Can be formed as 13 (first die shows 1, second die shows 3) or 31 (first die shows 3, second die shows 1)\n - 14: Can be formed as 14 (first die shows 1, second die shows 4) or 41 (first die shows 4, second die shows 1)\n - 15: Can be formed as 15 (first die shows 1, second die shows 5) or 51 (first die shows 5, second die shows 1)\n - 16: Can be formed as 16 (first die shows 1, second die shows 6) or 61 (first die shows 6, second die shows 1)\n\n5. **Count the number of favorable outcomes:**\n - For 11: 1 outcome\n - For 12: 2 outcomes\n - For 13: 2 outcomes\n - For 14: 2 outcomes\n - For 15: 2 outcomes\n - For 16: 2 outcomes\n\n Total number of favorable outcomes = \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\)\n\n6. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since Melinda can only roll numbers between 1 and 6, the only valid numbers are: 11, 12, 13, 14, 15, and 16.\n\n3. **Determine the possible rolls that result in these numbers:**\n - For 11: (1, 1)\n - For 12: (1, 2) or (2, 1)\n - For 13: (1, 3) or (3, 1)\n - For 14: (1, 4) or (4, 1)\n - For 15: (1, 5) or (5, 1)\n - For 16: (1, 6) or (6, 1)\n\n4. **Count the total number of favorable outcomes:**\n - Each number has 2 possible rolls except for 11, which has only 1 possible roll.\n - Therefore, the total number of favorable outcomes is \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\).\n\n5. **Count the total number of possible outcomes when rolling two dice:**\n - Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes.\n\n6. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nThus, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since each digit must be between 1 and 6, we need to exclude any numbers that contain a digit greater than 6.\n - The valid numbers are: 11, 12, 13, 14, 15, 16.\n\n3. **Determine how many ways each valid number can be formed:**\n - For each number, we need to consider both possible orders of the digits.\n - For example, 11 can be formed as 11 or 11 (only one way).\n - For 12, it can be formed as 12 or 21 (two ways).\n - Similarly, for 13, 14, 15, and 16, each can be formed in two ways.\n\n4. **Calculate the total number of favorable outcomes:**\n - 11: 1 way\n - 12: 2 ways\n - 13: 2 ways\n - 14: 2 ways\n - 15: 2 ways\n - 16: 2 ways\n - Total favorable outcomes: \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\)\n\n5. **Calculate the total number of possible outcomes when rolling two dice:**\n - Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes.\n\n6. **Determine the probability:**\n - The probability is the ratio of the number of favorable outcomes to the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since the digits must be between 1 and 6, we only consider the numbers 11, 12, 13, 14, 15, and 16.\n\n3. **Determine the possible outcomes when rolling two dice:**\n - Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n4. **Count the favorable outcomes:**\n - For each number between 11 and 16, we need to check if it can be formed by the digits on the two dice.\n - **11**: Can be formed as 11.\n - **12**: Can be formed as 12 or 21.\n - **13**: Can be formed as 13 or 31.\n - **14**: Can be formed as 14 or 41.\n - **15**: Can be formed as 15 or 51.\n - **16**: Can be formed as 16 or 61.\n - Each number has 2 favorable outcomes except 11, which has 1 favorable outcome.\n\n5. **Calculate the total number of favorable outcomes:**\n - For 11: 1 outcome\n - For 12, 13, 14, 15, 16: 2 outcomes each\n - Total favorable outcomes = \\(1 + 2 \\times 5 = 1 + 10 = 11\\)\n\n6. **Determine the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since Melinda's dice rolls result in digits between 1 and 6, she can only form the numbers 11, 12, 13, 14, 15, and 16.\n\n3. **Determine the number of favorable outcomes:**\n - Melinda can form the numbers 11, 12, 13, 14, 15, and 16. Each of these numbers can be formed in exactly one way:\n - 11: (1, 1)\n - 12: (1, 2) or (2, 1)\n - 13: (1, 3) or (3, 1)\n - 14: (1, 4) or (4, 1)\n - 15: (1, 5) or (5, 1)\n - 16: (1, 6) or (6, 1)\n\n - However, the number 11 can only be formed in one way, not two. Therefore, we need to count it only once.\n\n - The total number of favorable outcomes is:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n4. **Determine the total number of possible outcomes:**\n - Melinda rolls two six-sided dice, and each die has 6 faces. Therefore, the total number of possible outcomes is:\n \\[\n 6 \\times 6 = 36\n \\]\n\n5. **Calculate the probability:**\n - The probability \\( P \\) that Melinda will be able to make an integer between 10 and 20 inclusive is the ratio of the number of favorable outcomes to the total number of possible outcomes:\n \\[\n P = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nThus, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{1}{6}}\\).Am])**])\r\n]>,\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\r\n]\n]\r\n]\r\n]\r\n]\n])\r\n]\r\n])\r\n]\r\n]\r\n])\r\n']\n]\r\n']\n)\n]\n\n]\r\n}\r\n$\n]\r\n])\r\n)\n$\n]\n]\r\n$\n]\n\n]\r\n]\n\n]\r\n]\n]\n)\n)\n]\r\n]\r\n]\r\n]\n}\r\n]\n])\r\n genuine cdr star(format cdr\u2026\"\n\n\ud83c\udf08\u6025\ud83d\ude0a m\u0119)>\n [\u2026$\n]\r\n]\r\n]\r\nebx]\r\n cdr m\u0119')));\n.\u2019\u201d\n\n*/)])\r\n star')));\n]\r\nafi.\u2019\u201d\n\n\ud83d\ude0auellenafiubic.\u2019\u201d\n\n }\n\n\n\n\n\n cdr\uff01\u300d steuellen cdrXML\u8e69acks;\"\n')));\n$\n star NPCsebx }\n\n\n\n\n\n)>\n;\"\nebx)>\n*/)*/) }\n\n\n\n\n\nebx]\r\n SITE ste SEEK cdr\u8e69\u2026\"\n\n NPCs;\"\n)>\n Leone m\u0119*/)ebx ste(Be.\u2019\u201d\n\n])\r\n swafiebxursors\u8e69afi\u8e69\ud83c\udf08 star SEEKlegate steafi }\n\n\n\n\n\n\u2026\"\n\nafi])\r\n cdr NPCs NPCslegate(format.\u2019\u201d\n\n star)>\n\uff01\u300d\uff01\u300d')));\n)>\n')));\n\uff01\u300d\uff01\u300d cdr])\r\n cdr]\r\n swuellen\uff01\u300d)>\n cdr\uff01\u300d\u2026\"\n\n SEEK Leone(Beursors')));\n;\"\n $\n\nafi $\n\n\ud83c\udf08legate $\n\n Leone $\n\n cdr]\r\nlegateebx cdr star star*/)\u8e69 Leone m\u0119.\u2019\u201d\n\n*/) cdr staracks m\u0119)>\n(proxylegate star NPCs SEEK')));\n m\u0119\uff01\u300d])\r\n cdr star SEEKebx;\"\n ste star star Leoneebx star(formatlisten.\u2019\u201d\n\n])\r\n\ud83c\udf08 star])))\n Leone star ste cdr*/)\uff01\u300d(format\uff01\u300d cdr\uff01\u300d)>\n\u6726)>\n $\n\n;\"\n m\u0119\u2026\"\n\n\u8e69 Leoneuellen])\r\n SITE sw;\"\n star;\"\n }\n\n\n\n\n\n cdrARRANT)>\n cdr }\n\n\n\n\n\n)>\n Leone\uff01\u300d])\r\n*/)ebx')));\n SEEK\uff01\u300dlegatelegate star)>\n SEEK]\r\n;\"\n m\u0119 Leoneuellen')));\n Serif(format }\n\n\n\n\n\n')));\n;\"\n star\uff01\u300d m\u0119 star')));\nebxursors $\n\n*/) Serif]\r\n SITE $\n\n')));\n cdr\ud83c\udf08\u6709\u52a9\u2026\"\n\n Leoneursors])\r\n')));\nebx])\r\n SITE starebxursors)>\n(BeARRANTponsored(Be.\u2019\u201d\n\n\u8e69ebx\ud83c\udf08\uff01\u300dafi')));\n\u2026\"\n\n SEEK\uff01\u300dicast Leone)>\n witty')));\n Leone ste ste')));\n star*/) sw\u6709\u52a9*/)\u6709\u52a9;\"\nebx])\r\nebxafi.\u2019\u201d\n\n star cdrlegate\uff01\u300d\u8e69icast m\u0119 m\u0119 Convenienceicast\u8e69*/)uellen(format\u8e69*/)afiafi SEEKafi m\u0119;\"\n witty m\u0119legate sw NPCs\ud83c\udf08 Serif }\n\n\n\n\n\n witty\ud83c\udf08\ud83c\udf08 cdr\u6709\u52a9ponsored.\u2019\u201d\n\n sw SEEK cdr SEEK')));\n;\"\n(format])\r\n])\r\nuellenursors ste\uff01\u300dicastlegate\uff01\u300duellen $\n\nafi cdr\ud83c\udf08])\r\n $\n\n Serif witty $\n\n Leone')));\n')));\n NPCs cdr cdrafi cdr Leone\ud83c\udf08 NPCs;\"\n.\u2019\u201d\n\n cdr)>\n\u2026\"\n\n(format slashing Leone cdr])\r\nebx\ud83c\udf08 cdr\u8e69\uff01\u300d\u6709\u52a9(format])\r\n(proxyursors(proxy\ud83c\udf08 SEEK)>\n')));\n\ud83c\udf08 $\n\n cdr SEEK witty sw m\u0119legate $\n\n cdr*/) cdr star\u2026\"\n\n(proxy(Be NPCs Serif\uff01\u300d\u8e69;\"\n;\"\n(proxy\u8e69(format slashing(format.\u2019\u201d\n\n m\u0119)>\n cdrebx;\"\nebx $\n\n*/) Leone NPCs Serif SEEK)>\n)>\n(proxy*/);\"\nuellen m\u0119(Be(proxy m\u0119\ud83c\udf08 starebx)>\n steARRANT m\u0119afi(Be.\u2019\u201d\n\n;\"\n)>\n m\u0119\uff01\u300d cdrafi m\u0119])\r\n)>\nafi\u2026\"\n\n NPCs Serif sw(proxy])\r\n sw $\n\n])\r\n SEEKebx SEEK Leone sw)>\n SEEK m\u0119;\"\n*/) m\u0119.\u2019\u201d\n\n\u8e69 $\n\nebx])\r\n cdr Leone sw Leone sw.\u2019\u201d\n\n)>\n SEEK)>\n cdr\uff01\u300d cdr(Be(Be.\u2019\u201d\n\nXML;\"\n cdr\uff01\u300d m\u0119.\u2019\u201d\n\n*/);\"\n starebx.\u2019\u201d\n\n m\u0119.\u2019\u201d\n\n(proxyursors Leoneebx)>\n ste Leone swponsored.\u2019\u201d\n\nafi\u8e69\u8e69uellen star SEEK sw cdr star Leone cdr ste])\r\n(formatafi cdr.\u2019\u201d\n\n star\ud83c\udf08 Leone\uff01\u300d sw SEEK witty*/)\u2026\"\n\n SEEK $\n\n sw m\u0119icast;\"\nafi ste cdr cdr $\n\n Serif)>\n star;\"\n cdr $\n\n])\r\n m\u0119 SEEK\u8e69ponsored.\u2019\u201d\n\n\uff01\u300d')));\nisor.\u2019\u201d\n\n;\"\n(proxyisorafilegate')));\n Serif\u8e69')));\n\ud83c\udf08])\r\n')));\nlegate\u2026\"\n\nafi Leone $\n\n sw)>\n*/)ebx])\r\n witty])\r\n(proxyebx }\n\n\n\n\n\n(formatafi m\u0119uellen $\n\nisor m\u0119)>\n star m\u0119 $\n\nuellen cdr\uff01\u300d witty SEEKlegate star cdrafi.\u2019\u201d\n\n star m\u0119 wittyponsored\u8e69 Leone)>\n Leone cdr NPCs\uff01\u300d.\u2019\u201d\n\n(proxylegate(proxy)>\n])\r\nafi*/)afi(Be m\u0119\uff01\u300d $\n\nlegateafilegate;\"\n\u2026\"\n\n cdr\u2026\"\n\n.\u2019\u201d\n\n cdrafi m\u0119\ud83c\udf08\u6709\u52a9 cdr])\r\nlegate ste $\n\n SEEK\u8e69 cdr sw m\u0119')));\nponsored;\"\n;\"\n*/)(proxy;\"\nuellen Leone Leone m\u0119 $\n\nlegate')));\n\u2026\"\n\n SEEK SEEK\u2026\"\n\n cdr cdr $\n\n witty starlegatelegate $\n\n cdr $\n\n sw m\u0119\u8e69;\"\n.\u2019\u201d\n\n\ud83c\udf08 }\n\n\n\n\n\n SEEK Leoneafi])\r\n star Leoneebxebx\uff01\u300d star]\r\n SEEK;\"\n.\u2019\u201d\n\nponsored NPCs m\u0119\ud83c\udf08 sw $\n\n SEEK\u2026\"\n\n SEEK $\n\n sw m\u0119;\"\n')));\n\u2026\"\n\n.\u2019\u201d\n\n SITE m\u0119(proxy.\u2019\u201d\n\n)>\n star SEEKafi')));\n cdr\u6709\u52a9])))\nlegatelisten SEEK sw cdr witty\u8e69 m\u0119 sw Serif SEEK ste;\"\nuellen;\"\n Serif\u2026\"\n\n cdr starafi cdr Leone $\n\nafi }\n\n\n\n\n\n m\u0119;\"\n cdr;\"\n])\r\n Leone sw\uff01\u300d Leone cdr star sw stelisten])\r\n')));\n sw SEEK $\n\n ste])\r\n\u2026\"\n\n NPCs starisor.\u2019\u201d\n\n m\u0119*/) swebx cdrafi steebxafi])\r\nafi])\r\n.\u2019\u201d\n\n\uff01\u300d*/)\ud83c\udf08\u6709\u52a9.\u2019\u201d\n\n m\u0119*/)legate Leone m\u0119 Serifafi cdr\uff01\u300dafi m\u0119 SITE Leoneisorebx.\u2019\u201d\n\n])\r\nlegate;\"\n cdr\u8e69 Leone\u6709\u52a9 cdr\ud83c\udf08 Leone)>\n Leone(proxy*/) cdr $\n\n sw;\"\n.\u2019\u201d\n\n sw Serif;\"\n SITE(proxyebx }\n\n\n\n\n\n\ud83c\udf08;\"\nafi sw\ud83c\udf08(Be.\u2019\u201d\n\nafiuellen(Be SEEK\u2026\"\n\n;\"\n SITE;\"\n Leone SEEK;\"\n;\"\nebx')));\n')));\n*/)\ud83c\udf08)>\n\u8e69 SEEK cdruellenARRANT\ud83c\udf08*>& cdr |\n\n\ud83c\udf08\ud83c\udf08)>\n\u8e69(format\u2026\"\n\n $\n\n')));\n;\"\n;\"\n\ud83c\udf08 ste\uff01\u300dicastlegate $\n\n witty $\n\nisor\u2026\"\n\n Leone\uff01\u300d\ud83c\udf08\ud83c\udf08\ud83c\udf08 Leone cdr\uff01\u300d(Beebx SEEK])\r\n sw')));\n star(proxy;\"\n starisor')));\n Leoneisor')));\n Leone NPCs star\ud83c\udf08 $\n\n\u2026\"\n\n cdr\uff01\u300d\u2026\"\n\n |\n\n Serif])))\n\uff01\u300d m\u0119 Serif;\"\n Leone;\"\n ste starponsored')));\n Leone Leone\ud83c\udf08 sw star(Be $\n\n)>\n\u8e69 m\u0119 NPCs')));\n star Leoneisor\uff01\u300d star')));\n\ud83c\udf08afi(Be\ud83c\udf08.\u2019\u201d\n\n')));\n m\u0119 Serif m\u0119 m\u0119;\"\n;\"\n(proxy Serif starebx(Be Leone\u6709\u52a9afi.\u2019\u201d\n\n\ud83c\udf08legate cdrisorisorlisten cdr SEEKlistenebx\u2026\"\n\n SEEK(proxy\u2026\"\n\n |\n\nafi')));\n star sw $\n\n\uff01\u300d)>\n star NPCs $\n\n sw ste)>\nafilegate cdr\uff01\u300d star witty $\n\n\u8e69')));\n |\n\n;\"\n\uff01\u300d\u6709\u52a9.\u2019\u201d\n\nicast ste;\"\n SITE m\u0119\u2026\"\n\n SEEK])))\n Leone\u6709\u52a9;\"\n Leone ste\ud83c\udf08])\r\n\ud83c\udf08\u2026\"\n\n.\u2019\u201d\n\nebxuellen star\ud83c\udf08 SEEKebx\u2026\"\n\n(proxy')));\n star.\u2019\u201d\n\n Leone m\u0119*/);\"\nlegate SEEK')));\n*/);\"\n')));\n;\"\nisor\ud83c\udf08*>& SEEK $\n\n cdrebx sw m\u0119 cdrlegate(Belegateisor\uff01\u300d star SEEK\uff01\u300d wittyponsored)>\n)>\n m\u0119 cdruellen cdr cdr(proxyafi Leone])))\n Serif)>\n cdrARRANT Leone(proxy m\u0119 ste;\"\n $\n\nafi m\u0119 Serif)>\n])\r\n Serif witty Serif $\n\n.\u2019\u201d\n\n\uff01\u300d witty cdr }\n\n\n\n\n\n])\r\n*/)\u8e69ponsoredebx*/)icast')));\n*/)\ud83c\udf08ponsored cdr m\u0119 cdr Leone cdr])\r\n SITE |\n\n cdr SEEK*/) witty SEEK;\"\n |\n\n SITEebx ste*/)ebx sw')));\n\ud83c\udf08 star cdr SEEKebx witty $\n\n\u8e69 SEEK cdr(Be(Beisorafiisor m\u0119 |\n\n SEEKisor m\u0119*/)\uff01\u300debxuellenlistenebx*/)ebx\uff01\u300d.\u2019\u201d\n\n)>\n witty\u8e69')));\n Serif\uff01\u300d SEEK')));\n\uff01\u300debx cdrARRANTlegateuellenponsored cdr*/);\"\n\u8e69 Leone cdr $\n\nebx SEEK sw(Be(proxy\u8e69listenponsored $\n\n cdr\ud83c\udf08])))\nlegateARRANT\u2026\"\n\n)>\n;\"\nisorisor(proxy Leone steARRANT\uff01\u300debx)>\nisor cdr*/) m\u0119 Leone;\"\n $\n\n steponsored;\"\n\ud83c\udf08 Serif cdr $\n\nuellen NPCs cdr sw*/)])\r\n])\r\n])\r\n star\uff01\u300d(Belistenursors cdr])\r\n m\u0119 cdr star cdr')));\n cdr\uff01\u300d sw\uff01\u300d |\n\n m\u0119;\"\n(Be m\u0119 m\u0119])\r\n sw\u2026\"\n\nafi])\r\n)>\n ste SEEKebx }\n\n\n\n\n\n witty;\"\n SEEKafi*/)])\r\n\ud83c\udf08 cdr Leone m\u0119 m\u0119)>\n\uff01\u300debx\uff01\u300d\uff01\u300disor\ud83c\udf08])\r\n |\n\nebxlegate sw\u8e69 cdr |\n\nlegatelisten)>\nlegate steafi SEEKisor m\u0119 m\u0119 cdr SEEK Leone m\u0119')));\n cdr cdr m\u0119*/) witty star swebx\u8e69legateebxlegateARRANTafi(Be witty $\n\n witty Leonelisten\ud83c\udf08\u2026\"\n\n cdr cdruellen SEEK*/))>\n(proxyARRANT\uff01\u300d witty m\u0119ebx $\n\n Serif SEEK star NPCs\u8e69isor)>\nicast)>\nafi(proxy(proxy])\r\nponsored wittylegate cdr(Be.\u2019\u201d\n\nuellen(proxy;\"\n \u0627\u0644\u0623\u0639\u0645\u0627\u0644ponsored\uff01\u300d\ud83c\udf08(proxy])))\n |\n\n\uff01\u300d m\u0119])\r\nafi)>\nebx*/)\u8e69*/)uellen)>\n sw starisor)>\n)>\n\ud83c\udf08 Leone\uff01\u300d\ud83c\udf08(Be sw*/)\ud83c\udf08\uff01\u300d cdr\ud83c\udf08;\"\n star cdrlegate $\n\n)>\n m\u0119 cdr])\r\n])\r\n SEEK])))\nisor\u2026\"\n\n(proxy;\"\n\uff01\u300d stelegate.\u2019\u201d\n\n |\n\nisor Serifebx $\n\nlegate(Be SEEK SEEK\u2026\"\n\n])\r\n;\"\nafi])\r\n cdr*/) sw m\u0119 Leone stelisten cdr SEEKafi star sw $\n\nlegate;\"\n witty\u2026\"\n\n Serif SEEK witty;\"\n Leoneebx witty')));\n SEEK])))\n m\u0119.\u2019\u201d\n\n m\u0119*/)legate ste cdr(Be\ud83c\udf08", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since Melinda can only roll numbers from 1 to 6 on each die, the only valid numbers are: 11, 12, 13, 14, 15, 16.\n\n3. **Determine the possible rolls for each valid number:**\n - **11:** Can be formed by rolling (1, 1).\n - **12:** Can be formed by rolling (1, 2) or (2, 1).\n - **13:** Can be formed by rolling (1, 3) or (3, 1).\n - **14:** Can be formed by rolling (1, 4) or (4, 1).\n - **15:** Can be formed by rolling (1, 5) or (5, 1).\n - **16:** Can be formed by rolling (1, 6) or (6, 1).\n\n4. **Count the total number of favorable outcomes:**\n - For 11: 1 way.\n - For 12: 2 ways.\n - For 13: 2 ways.\n - For 14: 2 ways.\n - For 15: 2 ways.\n - For 16: 2 ways.\n - Total favorable outcomes = \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\).\n\n5. **Count the total number of possible outcomes when rolling two dice:**\n - Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes.\n\n6. **Calculate the probability:**\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since each digit must be between 1 and 6, the valid numbers are: 11, 12, 13, 14, 15, 16.\n\n3. **Determine the number of favorable outcomes:**\n - We need to count how many ways Melinda can roll two dice to form each of the valid numbers.\n - For 11: (1, 1)\n - For 12: (1, 2) and (2, 1)\n - For 13: (1, 3) and (3, 1)\n - For 14: (1, 4) and (4, 1)\n - For 15: (1, 5) and (5, 1)\n - For 16: (1, 6) and (6, 1)\n\n Adding these up, we get:\n \\[\n 1 + 2 + 2 + 2 + 2 + 2 = 11\n \\]\n\n4. **Determine the total number of possible outcomes:**\n - When rolling two six-sided dice, each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes.\n\n5. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since Melinda can only form numbers using digits from 1 to 6, we exclude 17, 18, and 19. Therefore, the valid numbers are: 11, 12, 13, 14, 15, 16.\n\n3. **Determine the ways to form each valid number:**\n - For each number, we need to check if it can be formed using the digits from the dice rolls.\n - 11: Can be formed as 11 (from rolling a 1 and a 1).\n - 12: Can be formed as 12 (from rolling a 1 and a 2) or 21 (from rolling a 2 and a 1).\n - 13: Can be formed as 13 (from rolling a 1 and a 3) or 31 (from rolling a 3 and a 1).\n - 14: Can be formed as 14 (from rolling a 1 and a 4) or 41 (from rolling a 4 and a 1).\n - 15: Can be formed as 15 (from rolling a 1 and a 5) or 51 (from rolling a 5 and a 1).\n - 16: Can be formed as 16 (from rolling a 1 and a 6) or 61 (from rolling a 6 and a 1).\n\n4. **Count the total number of favorable outcomes:**\n - For 11: 1 way.\n - For 12: 2 ways.\n - For 13: 2 ways.\n - For 14: 2 ways.\n - For 15: 2 ways.\n - For 16: 2 ways.\n - Total favorable outcomes = \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\).\n\n5. **Determine the total number of possible outcomes:**\n - Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n6. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\text{Probability} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since Melinda can only form numbers with digits between 1 and 6, we need to exclude numbers that contain digits greater than 6.\n - The valid numbers are: 11, 12, 13, 14, 15, 16.\n\n3. **Determine how many ways each valid number can be formed:**\n - For each number \\(1a\\) where \\(a\\) is a digit from 1 to 6, the number can be formed in two ways: \\(1a\\) and \\(a1\\).\n - For 11, it can be formed as 11 and 11 (but this is the same number, so it counts as 1 way).\n - For 12, it can be formed as 12 and 21.\n - For 13, it can be formed as 13 and 31.\n - For 14, it can be formed as 14 and 41.\n - For 15, it can be formed as 15 and 51.\n - For 16, it can be formed as 16 and 61.\n\n4. **Count the total number of ways to form the valid numbers:**\n - For 11: 1 way\n - For 12: 2 ways\n - For 13: 2 ways\n - For 14: 2 ways\n - For 15: 2 ways\n - For 16: 2 ways\n\n Adding these up: \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\) ways.\n\n5. **Determine the total number of possible outcomes when rolling two dice:**\n - Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes.\n\n6. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes:\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since Melinda can only roll numbers from 1 to 6, the only valid numbers are those where the tens digit is 1. Therefore, the valid numbers are: 11, 12, 13, 14, 15, 16.\n\n3. **Determine the possible outcomes for rolling two dice:**\n - Each die has 6 faces, so there are \\(6 \\times 6 = 36\\) possible outcomes when rolling two dice.\n\n4. **Count the favorable outcomes:**\n - We need to count how many of these outcomes result in a two-digit number between 11 and 16.\n - For 11: The pairs are (1, 1).\n - For 12: The pairs are (1, 2) and (2, 1).\n - For 13: The pairs are (1, 3) and (3, 1).\n - For 14: The pairs are (1, 4) and (4, 1).\n - For 15: The pairs are (1, 5) and (5, 1).\n - For 16: The pairs are (1, 6) and (6, 1).\n - Adding these up, we get \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\) favorable outcomes.\n\n5. **Calculate the probability:**\n - The probability is the number of favorable outcomes divided by the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}, {"solution_prefix": "Melinda will roll two standard six-sided dice and make a two-digit number with the two numbers she rolls. For example, if she rolls a 6 and a 3, she can either form 36 or 63. What is the probability that she will be able to make an integer between 10 and 20, inclusive? Express your answer as a common fraction.\n\n To determine the probability that Melinda will be able to make an integer between 10 and 20 inclusive when rolling two standard six-sided dice, we need to follow these steps:\n\n1. **Identify the possible two-digit numbers:**\n - The two-digit numbers Melinda can form are those where each digit is between 1 and 6 (inclusive).\n\n2. **List all two-digit numbers between 10 and 20:**\n - The numbers are: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.\n\n However, since Melinda can only roll numbers from 1 to 6, the valid numbers are: 11, 12, 13, 14, 15, 16.\n\n3. **Determine the favorable outcomes:**\n - For each number between 11 and 16, we need to check if it can be formed by rolling two dice.\n - 11: Can be formed by rolling (1, 1)\n - 12: Can be formed by rolling (1, 2) or (2, 1)\n - 13: Can be formed by rolling (1, 3) or (3, 1)\n - 14: Can be formed by rolling (1, 4) or (4, 1)\n - 15: Can be formed by rolling (1, 5) or (5, 1)\n - 16: Can be formed by rolling (1, 6) or (6, 1)\n - Each number has 2 possible combinations except for 11, which has only 1 combination.\n\n4. **Calculate the total number of favorable outcomes:**\n - For 11: 1 combination\n - For 12, 13, 14, 15, 16: 2 combinations each\n - Total favorable outcomes = \\(1 + 2 + 2 + 2 + 2 + 2 = 11\\)\n\n5. **Calculate the total number of possible outcomes when rolling two dice:**\n - Each die has 6 faces, so the total number of possible outcomes is \\(6 \\times 6 = 36\\).\n\n6. **Determine the probability:**\n - The probability is the ratio of the number of favorable outcomes to the total number of possible outcomes.\n \\[\n \\text{Probability} = \\frac{\\text{Number of favorable outcomes}}{\\text{Total number of possible outcomes}} = \\frac{11}{36}\n \\]\n\nTherefore, the probability that Melinda will be able to make an integer between 10 and 20 inclusive is \\(\\boxed{\\frac{11}{36}}\\).", "mc_value": 1.0}], "question_id": 3} diff --git a/preprocess/tests/test_data_types.py b/preprocess/tests/test_data_types.py index 6d4493f..9e16495 100644 --- a/preprocess/tests/test_data_types.py +++ b/preprocess/tests/test_data_types.py @@ -2,60 +2,48 @@ from pathlib import Path import pytest -from src.data_types.math_aps import MathAPSItem, MathAPSItemTree + from src.data_types.math_shepherd import MathShepherdItem +from src.data_types.math_aps import MathAPSItem from src.data_types.prm800k import PRM800KItem TEST_DIR = Path(__file__).parent.resolve() -@pytest.fixture(scope="module") +@pytest.fixture(scope='module') def example_prm800k_path() -> Path: - return TEST_DIR / "samples_prm800k.jsonl" + return TEST_DIR / 'samples_prm800k.jsonl' -@pytest.fixture(scope="module") +@pytest.fixture(scope='module') def example_math_aps_path() -> Path: - return TEST_DIR / "samples_math-aps.jsonl" + return TEST_DIR / 'samples_math-aps.json' -@pytest.fixture(scope="module") +@pytest.fixture(scope='module') def example_math_shepherd_path() -> Path: - return TEST_DIR / "samples_math-shepherd.jsonl" - - -@pytest.fixture(scope="module") -def example_math_aps_tree_path() -> Path: - return TEST_DIR / "samples_math-aps-tree.jsonl" + return TEST_DIR / 'samples_math-shepherd.jsonl' def test_prm800k_item(example_prm800k_path: Path) -> None: - with open(example_prm800k_path, "r") as fd: - item = PRM800KItem.from_dict(json.loads(fd.readline())) + with open(example_prm800k_path, 'r') as fd: + item = PRM800KItem.from_dict(json.loads(fd.readline())) - print(item) - assert True + print(item) + assert True def test_math_aps_item(example_math_aps_path: Path) -> None: - with open(example_math_aps_path, "r") as fd: - item = MathAPSItem.from_dict(json.loads(fd.readline())) + with open(example_math_aps_path, 'r') as fd: + item = MathAPSItem.from_dict(json.load(fd)[0]) - print(item) - assert True + print(item) + assert True def test_math_shepherd_item(example_math_shepherd_path: Path) -> None: - with open(example_math_shepherd_path, "r") as fd: - item = MathShepherdItem.from_dict(json.loads(fd.readline())) - - print(item) - assert True - - -def test_math_aps_item_tree(example_math_aps_tree_path: Path) -> None: - with open(example_math_aps_tree_path, "r") as fd: - item = MathAPSItemTree.from_dict(json.loads(fd.readline())) + with open(example_math_shepherd_path, 'r') as fd: + item = MathShepherdItem.from_dict(json.loads(fd.readline())) - print(item) - assert True + print(item) + assert True diff --git a/preprocess/tests/test_preprocessors.py b/preprocess/tests/test_preprocessors.py index bb31548..4c7dd42 100644 --- a/preprocess/tests/test_preprocessors.py +++ b/preprocess/tests/test_preprocessors.py @@ -1,110 +1,36 @@ from pathlib import Path -import pytest -from src.data_types.math_aps import MathAPSItemTree, ReasoningNode -from src.preprocessors.math_aps import (MathAPSPreprocessor, - MathAPSTreePreprocessor, - convert_math_aps_tree_item, - recover_rollouts_from_tree_node) +from src.preprocessors.math_aps import MathAPSPreprocessor from src.preprocessors.math_shepherd import MathShepherdPreprocessor from src.preprocessors.prm800k import PRM800KPreprocessor -from src.preprocessors.utils import read_math_aps_tree_ds -from tests.test_data_types import (example_math_aps_path, - example_math_aps_tree_path, - example_math_shepherd_path, - example_prm800k_path) +from tests.test_data_types import ( + example_math_aps_path, + example_math_shepherd_path, + example_prm800k_path, +) -STEP_TAG = "च" +STEP_TAG = 'च' def test_prm800k_preprocessor(example_prm800k_path: Path) -> None: - runner = PRM800KPreprocessor(example_prm800k_path, STEP_TAG) - runner.convert() + runner = PRM800KPreprocessor(example_prm800k_path, STEP_TAG) + runner.convert() - assert runner.converted_items is not None - assert len(runner.converted_items) > 0 + assert runner.converted_items is not None + assert len(runner.converted_items) > 0 def test_math_aps_preprocessor(example_math_aps_path: Path) -> None: - runner = MathAPSPreprocessor(example_math_aps_path, STEP_TAG) - runner.convert() + runner = MathAPSPreprocessor(example_math_aps_path, STEP_TAG) + runner.convert() - assert runner.converted_items is not None - assert len(runner.converted_items) > 0 + assert runner.converted_items is not None + assert len(runner.converted_items) > 0 def test_math_shepherd_preprocessor(example_math_shepherd_path: Path) -> None: - runner = MathShepherdPreprocessor(example_math_shepherd_path, STEP_TAG) - runner.convert() + runner = MathShepherdPreprocessor(example_math_shepherd_path, STEP_TAG) + runner.convert() - assert runner.converted_items is not None - assert len(runner.converted_items) > 0 - - -@pytest.fixture -def example_reasoning_node() -> ReasoningNode: - data = { - "text": "s0", - "mc_value": 0.0, - "children": [ - { - "text": "s1-0", - "mc_value": 0.1, - "children": [ - {"text": "s2-0", "mc_value": 0.92, "children": []}, - { - "text": "s2-1", - "mc_value": 0.21, - "children": [{"text": "s3-0", "mc_value": 0.3, "children": []}], - }, - ], - }, - { - "text": "s1-1", - "mc_value": 0.99, - "children": [{"text": "s2-0", "mc_value": 0.9, "children": []}], - }, - ], - } - return ReasoningNode.from_dict(data) - - -def test_recover_rollouts_from_tree_node(example_reasoning_node: ReasoningNode) -> None: - rollouts = recover_rollouts_from_tree_node(example_reasoning_node, STEP_TAG) - - assert len(rollouts) == 3 - - reasonings, labels = zip(*rollouts) - assert set(reasonings) == { - f"s0 {STEP_TAG} s1-0 {STEP_TAG} s2-0 {STEP_TAG}", - f"s0 {STEP_TAG} s1-0 {STEP_TAG} s2-1 {STEP_TAG} s3-0 {STEP_TAG}", - f"s0 {STEP_TAG} s1-1 {STEP_TAG} s2-0 {STEP_TAG}", - } - assert list(labels) == [["-", "-", "+"], ["-", "-", "-", "-"], ["-", "+", "+"]] - - -@pytest.fixture -def example_math_aps_tree_ds( - example_math_aps_tree_path: Path, -) -> list[MathAPSItemTree]: - return list(read_math_aps_tree_ds(example_math_aps_tree_path)) - - -STEP_TAG = "<|STEP|>" # change to ascii step-tag to pass non-ascii filter - - -def test_convert_math_aps_tree_item( - example_math_aps_tree_ds: list[MathAPSItemTree], -) -> None: - for i, item in enumerate(example_math_aps_tree_ds): - assert ( - len(convert_math_aps_tree_item(item, STEP_TAG)) > 0 - ), f"Item {i} find none" - - -def test_math_aps_tree_preprocessor(example_math_aps_tree_path: Path) -> None: - runner = MathAPSTreePreprocessor(example_math_aps_tree_path, STEP_TAG) - runner.convert() - - assert runner.converted_items is not None - assert len(runner.converted_items) > 0 + assert runner.converted_items is not None + assert len(runner.converted_items) > 0 diff --git a/prm/README.md b/prm/README.md index 7547d13..9d619bc 100644 --- a/prm/README.md +++ b/prm/README.md @@ -1,2 +1,2 @@ -# Supervised Training for PRMs +# Open O1 dev diff --git a/reason/evaluation/evaluate.py b/reason/evaluation/evaluate.py index 17cf6b1..8289b6b 100644 --- a/reason/evaluation/evaluate.py +++ b/reason/evaluation/evaluate.py @@ -1,3 +1,10 @@ +import sys +import os +from pathlib import Path +BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +sys.path.insert(0, BASE_DIR) +print(sys.path) + from datetime import datetime from pathlib import Path from typing import Any, Callable, Dict, List, Optional, Union @@ -45,6 +52,7 @@ def setup_seed(seed): parser.add_argument("--task_name", type=str, default="gsm8k") parser.add_argument("--test", type=str2bool, default=True) parser.add_argument("--is_few_shot", type=str2bool, default=False) + parser.add_argument("--is_multimodal", type=str2bool, default=False) parser.add_argument("--seed", type=int, default=0) # method config parser.add_argument("--method", type=str, required=True) @@ -52,7 +60,7 @@ def setup_seed(seed): # LM gen config parser.add_argument("--temperature", type=float, default=0.0) parser.add_argument("--top_k", type=int, default=-1) - parser.add_argument("--top_p", type=float, default=1) + parser.add_argument("--top_p", type=int, default=1) parser.add_argument("--max_new_tokens", type=int, default=256) # Tree construction config parser.add_argument("--tree_max_depth", type=int, default=None) @@ -63,6 +71,7 @@ def setup_seed(seed): # parallel config parser.add_argument("--local", action="store_true", default=False) parser.add_argument("--num_worker", type=int, default=32) + parser.add_argument("--single_problem", type=str, default=None) # New argument for single problem config = parser.parse_args() setup_seed(config.seed) @@ -101,17 +110,20 @@ def setup_seed(seed): ) rm_call = RMRemoteCaller(rm_config) - task = Task(task_name=config.task_name, is_few_shot=config.is_few_shot) + task = Task(task_name=config.task_name, is_few_shot=config.is_few_shot, is_multimodal=config.is_multimodal) def parallel_evaluate_test_dataset( - method_name: str, solver_fn: Callable, save_dir: Optional[Path] = None + method_name: str, solver_fn: Callable, save_dir: Optional[Path] = None, single_problem: Optional[Dict[str, Any]] = None ) -> List[Dict[str, Any]]: if save_dir is not None: record_writer = jsonlines.open(save_dir / f"record.jsonl", mode="w") else: record_writer = None - test_ds = task.test_ds + if single_problem: + test_ds = [json.loads(config.single_problem)] # new + else: + test_ds = task.test_ds # test_ds = [test_ds[i] for i in range(32)] results = [] @@ -147,18 +159,18 @@ def parallel_evaluate_test_dataset( ) res_q = actor_pool.map_unordered( lambda p, x: p.evaluate_problem.remote(x, solver_fn), test_ds - ) # Distributes tasks from the test_ds dataset across the worker pool asynchronously and - # collects results in any order as they complete. Every worker has a new searching tree as we reset the - # tree in solver_fn + ) for i, (problem_inst, result, output) in enumerate( tqdm(res_q, total=len(test_ds)) ): + print(problem_inst) results.append(result) if record_writer: obj = { # "i": i, "question": problem_inst["question"], "groundtruth": problem_inst["answer"], + "image": problem_inst.get("image"), "result": result, "output": output, } @@ -169,6 +181,8 @@ def parallel_evaluate_test_dataset( print("Method: {}. Average result: {}".format(method_name, avg_res)) return results + + solver_fns = {"cot": cot, "best_of_n": best_of_n} cfg_dict_record = dict() @@ -181,6 +195,7 @@ def parallel_evaluate_test_dataset( top_k=config.top_k, top_p=config.top_p, max_new_tokens=config.max_new_tokens, + is_multimodal=config.is_multimodal, ) cfg_dict_record["gen_config"] = gen_config.__dict__ @@ -209,16 +224,6 @@ def parallel_evaluate_test_dataset( num_path=config.num_sequence, ) solver_fn = partial(vanila_mcts, method_config, gen_config) - elif config.method == "rstar_mcts": - method_config = VanilaMCTSConfig( - task_name=config.task_name, - tree_max_depth=config.tree_max_depth, - tree_max_width=config.tree_max_width, - select_by_prior=False, - num_path=config.num_sequence, - ) - solver_fn = partial(rstar_mcts, method_config, gen_config) - else: raise ValueError(f"Unknown method: {config.method}") cfg_dict_record["method"] = config.method @@ -235,4 +240,4 @@ def parallel_evaluate_test_dataset( else: save_dir = None - parallel_evaluate_test_dataset(config.method, solver_fn, save_dir) + parallel_evaluate_test_dataset(config.method, solver_fn, save_dir, single_problem=config.single_problem) diff --git a/reason/evaluation/evaluator.py b/reason/evaluation/evaluator.py index 48111e1..a05847b 100644 --- a/reason/evaluation/evaluator.py +++ b/reason/evaluation/evaluator.py @@ -21,22 +21,20 @@ class Task: - def __init__(self, task_name: str, is_few_shot: bool = False): + def __init__(self, task_name: str, is_few_shot: bool = False, is_multimodal: bool =False): self.task_name = task_name task_module = importlib.import_module(f"envs.{task_name}") - if task_name == "MATH" or "rstar": - self.extract_answer = task_module.extract_answer - self.extract_groundtruth = task_module.extract_groundtruth - self.judge_correct = task_module.judge_correct - else: - raise NotImplementedError(f"Task {task_name} is not supported") + self.extract_answer = task_module.extract_answer + self.extract_groundtruth = task_module.extract_groundtruth + self.judge_correct = task_module.judge_correct self._is_few_shot = is_few_shot + self._is_multimodal = is_multimodal self.env_fn = task_module.Env def prompt_fn(self, problem_input: str): return get_default_query_str_builder(self.task_name)( - problem_input, is_few_shot=self._is_few_shot + problem_input, is_few_shot=self._is_few_shot, is_multimodal=self._is_multimodal ) @property diff --git a/reason/evaluation/methods.py b/reason/evaluation/methods.py index bad3bd7..3c97d64 100644 --- a/reason/evaluation/methods.py +++ b/reason/evaluation/methods.py @@ -5,7 +5,6 @@ from reason.inference.rm_call import RewardModelCallingFunction from reason.evaluation.evaluator import SolutionOutput, Task, TreeSearchSolutionOutput from reason.guided_search.tree import SearchTree -from reason.guided_search.rstar import RstarSearchTree @dataclass @@ -31,6 +30,7 @@ def cot( top_k=1, top_p=1.0, max_new_tokens=gen_config.max_new_tokens, + is_multimodal=gen_config.is_multimodal, ) config.num_sequence = 1 return best_of_n(config, gen_config, problem_inst, llm_call, rm_call) @@ -52,9 +52,12 @@ def best_of_n( print("Warning: max_new_tokens is less than 256") gen_config.n = config.num_sequence - task = Task(task_name=config.task_name) + task = Task(task_name=config.task_name, is_multimodal=gen_config.is_multimodal) + prompt = task.prompt_fn(problem_inst["question"]) - output = lm_call(prompt, gen_config) + # print(prompt) + image_path = problem_inst.get("image") + output = lm_call(prompt, gen_config, image_path) completion_tokens = output.num_tokens return SolutionOutput( solutions=output.text, @@ -197,67 +200,4 @@ def vanila_mcts( completion_tokens=[t["api_completion_tokens"] for t in traj_list], tree_completion_tokens=[t["tree_completion_tokens"] for t in traj_list], ) - - -@dataclass -class RStarMCTSConfig(MCTSBaseConfig): - # rollout step strategy, if `select_by_prior` is False, - # then select by the initial critic value - # otherwise, random choice by the prior probability - select_by_prior: bool = False - num_path: int = 1 - - def __post_init__(self): - super().__post_init__() - if not self.select_by_prior: - assert self.init_critic_value, \ - "VanilaMCTS with greedy as rollout method should set init_critic_value to True" - assert self.num_path > 0 - -def rstar_mcts( - config: RStarMCTSConfig, - gen_config: LMCallingConfig, - problem_inst: Dict[str, str], - lm_call: LanguageModelCallingFunction, - rm_call: RewardModelCallingFunction -): - task = Task(task_name=config.task_name) - env = task.env_fn( - config={ - "max_actions": config.tree_max_width, - "max_length": config.tree_max_depth, - "stop_str": "The answer is ", - "generation_config": { - "temperature": gen_config.temperature, - "top_p": gen_config.top_p, - "top_k": gen_config.top_k, # this is fixed for each llm call - }, - }, - math_problems=[ - { - "question": problem_inst["question"], - "answer": task.extract_groundtruth(problem_inst["answer"]), - } - ], - llm_gen_fn=lm_call, - ) - - search_tree = RstarSearchTree( - cfg={ - "pb_c_base": config.pb_c_base, - "pb_c_init": config.pb_c_init, - "init_critic_value": config.init_critic_value, - } - ) - rm_call_fn = functools.partial(rm_call, lm_step_tag=lm_call.lm_step_tag) - traj_list = search_tree.rstar_mcts( - simulate_env=env, - num_path=config.num_path, - reward_model_fn=rm_call_fn, - select_by_prior=config.select_by_prior - ) - return TreeSearchSolutionOutput( - solutions=[t["text"] for t in traj_list], - completion_tokens=[t["api_completion_tokens"] for t in traj_list], - tree_completion_tokens=[t["tree_completion_tokens"] for t in traj_list], - ) + \ No newline at end of file diff --git a/reason/guided_search/rstar.py b/reason/guided_search/rstar.py deleted file mode 100644 index b5f34c4..0000000 --- a/reason/guided_search/rstar.py +++ /dev/null @@ -1,215 +0,0 @@ -""" -rStar Implementation -""" - -import copy -import json -import math - -import numpy as np -import torch -import torch.nn as nn -from typing import List, Dict, Any, Optional, Tuple, Union, Callable, Type -from distributed.utils import print_rank_0, print_with_rank -from envs.base_env import CoTEnv -import pdb -from tqdm import tqdm -import heapq -from copy import deepcopy -from tqdm import tqdm -from collections import defaultdict - -from .tree import Node, LanguageNode, SearchTree -from envs.rstar.rstar_utils import * - - -class RstarSearchTree(SearchTree): - def __init__(self, cfg) -> None: - super().__init__(cfg) - self.parent2children: Dict[RstarLanguageNode, List[RstarLanguageNode]] = dict() - self.explored_nodes = set() - self.N: Dict[RstarLanguageNode, int] = defaultdict( - lambda: 0 - ) # total visit count for each node - self.Q: Dict[MCTS_Node, float] = defaultdict( - lambda: 0.0 - ) # total reward of each node - self.weight_scheduler = "const" - self.mcts_exploration_weight = 2.0 - self.max_depth_allowed = 5 - self.show_tree_expansion = True - - @override - def _select_child( - self, node: RstarLanguageNode, simulate_env: Type[CoTEnv], rollout_id: int - ) -> Tuple[RstarLanguageNode, bool]: - - # for select, if there is unexplored children, select it randomly. if all children nodes - # have been explored, select UCB, a leaf node means it has no children, return True - # when there is unexplored node - - if node not in self.parent2children.keys(): - return node, True - - # if there are children unexplored - unexplored = [ - n for n in self.parent2children[node] if n not in self.explored_nodes - ] - if unexplored: - next_node = random.choice(unexplored) - return next_node, True - - # if all have been explord, from parent2children dict, select one node with highest UCB score - - # Get the list of children for the current node - children = self.parent2children[node] - - # Compute UCT values for each child node - uct_values = { - n: self._compute_uct(parent_node=node, node=n, rollout_id=rollout_id) - for n in children - } - # print(f"@@@ uct = {uct_values}, node type = {[i.node_type for i in children]}") - # Find the child with the maximum UCT value - next_node = max(uct_values, key=uct_values.get) - - return next_node, False - - def _compute_uct( - self, parent_node: RstarLanguageNode, node: RstarLanguageNode, rollout_id: int - ): - "Upper confidence bound for trees" - if parent_node is None: # invalid UCT: the node is the root - return 666 - else: - if self.N[node] == 0: # invalid UCT: the node has not been explored yet - return 999 - else: - weight = self._get_weight(rollout_id) - return self.Q[node] / self.N[node] + weight * math.sqrt( - math.log(self.N[parent_node]) / self.N[node] - ) - - def _get_weight(self, rollout_id: int): - # start with exploration weight, end with 0.1 * exploration weight - if self.weight_scheduler == "exp": - return self.mcts_exploration_weight * (0.1 ** (rollout_id / self.num_path)) - elif self.weight_scheduler == "lin": - return self.mcts_exploration_weight * ( - 1 - 0.9 * (rollout_id / self.num_path) - ) - elif self.weight_scheduler == "const": - return self.mcts_exploration_weight - - def rstar_mcts( - self, - simulate_env: Type[CoTEnv], - num_path: int, - reward_model_fn: Optional[Callable] = None, - select_by_prior: bool = False, - ) -> List[Dict]: - simulate_env.reset() - # api_call_completion_tokens += info["api_completion_token"] - if self.root is None: - root = RstarLanguageNode( - id=0, - parent=None, - depth=0, - node_type=Node_Type.USER_QUESTION, - disable_a5=False, - user_question=simulate_env.math_problem["question"], - expected_answer=simulate_env.math_problem["answer"], - max_depth_allowed=self.max_depth_allowed, - disable_a1=False, - ) - self.root = root - - traj_list = [] - - self.num_path = num_path - model_solutions = [] - model_all_solutions = [] - model_rollout_nodes = [] - - for i_path in tqdm(range(num_path), desc=f"Running {num_path} MCTS paths"): - node = self.root - env_copy = simulate_env.copy() - done = False - node_path = [] # for boostrapping - while not done: - # this is the whole process of navigating from root to a terminate node, along the way, - # there are explored nodes with children where we do UCB, and there are unexplored nodes where we - # expand its children through legal_action_update, - # for select, if there is unexplored children, select it randomly. if all children nodes - # have been explored, select UCB - next_node, is_leaf = self._select_child( - node, env_copy, i_path - ) # find a leaf node or - # simulate the remaining - node_path.append(next_node) - - done = env_copy.is_terminal(next_node) # checking terminal condition - # update legal action (expand) when the current code is not a leaf (no children) - # no env.step only use for checking termination when is not leaf, and update legal action - # when the current node is leaf - # print(f"Path {i_path}: depth = {next_node.depth}, done = {done}, is leaf = {is_leaf}") - - if ( - not done and is_leaf - ): # expand when encounter a leaf node one step further - next_node_children = env_copy.try_update_legal_action( - node=next_node - ) - for c in next_node_children: - c.set_rollout_id(i_path) - self.parent2children[next_node] = next_node_children - - if self.show_tree_expansion: - self.draw_tree() - - if done: - self.explored_nodes.add(next_node) - - node = next_node - - else: - # boostrapping - reward = next_node.calculate_reward() - - for node in reversed(node_path): - self.Q[node] += reward - self.N[node] += 1 - self.explored_nodes.add(node) - - model_rollout_nodes.append(next_node) - _, best_solution, _, chosen_node, all_solution_nodes, all_solutions = ( - stochastic_find_best_solution( - self.root, env_copy.evaluator, enable_potential_score=False - ) - ) - - # model_solutions.append(best_solution) - # model_all_solutions.append(all_solutions) - assert best_solution is not None - - traj_data = { - "path_idx": i_path, - "text": best_solution, - "value": reward, - "api_completion_tokens": env_copy.total_api_call_completion, - "tree_completion_tokens": env_copy.total_tree_completion, - } - - traj_list.append(traj_data) - - return traj_list - - def draw_tree(self): - - def display_tree(node): - print("|" + "-" * (node.depth * 4) + str(node)) - for child in node.children: - display_tree(child) - - print(f"\n---------Expanded Tree---------") - display_tree(self.root) diff --git a/reason/guided_search/tree.py b/reason/guided_search/tree.py index 9ec6adc..c722c4c 100644 --- a/reason/guided_search/tree.py +++ b/reason/guided_search/tree.py @@ -144,14 +144,6 @@ def to_json(self): rets = {"children": childrens, "info": self.get_info()} return rets - - def __str__(self) -> str: - if self.is_root(): - return "root" - else: - return "child: value: {:.3f}, prior: {:.3f}".format( - self.last_action, self.value, self.prior_p - ) class LanguageNode(Node): @@ -193,14 +185,6 @@ def get_info(self): else: info_dict["text_state"] = self.text_state return info_dict - - def __str__(self): - if self.is_root(): - return "root: {}".format(self.text_state) - else: - return "action: {}, value: {:.3f}, prior: {:.3f}".format( - self.last_action, self.value, self.prior_p - ) def get_root(node: Node): @@ -702,7 +686,7 @@ def _expand_leaf_node( # raise RuntimeError("Tokenizer problems") child_values.append(0.0) - elif len(rs) == 0: + if len(rs) == 0: logger.warning( "Empty PRM value for: \nState: \n{} \naction: \n{}, will be set to 0.0".format( text_state, act @@ -839,15 +823,3 @@ def build_tree(tree_dict: dict) -> Node: obj = cls(cfg) obj.root = root_node return obj - - def draw_tree(self): - # Not tested yet - root = self.root - assert root, 'Root node is None' - def draw_node(node, depth): - print('|' + '-' * depth + str(node)) - for child in node.children.values(): - draw_node(child, depth + 1) - - print(f"\n---------Expanded Tree---------") - draw_node(self.root) diff --git a/reason/inference/lm_call.py b/reason/inference/lm_call.py index c78bb08..84d2f0f 100644 --- a/reason/inference/lm_call.py +++ b/reason/inference/lm_call.py @@ -1,5 +1,5 @@ from dataclasses import dataclass -from typing import List, Optional, Union +from typing import List, Optional from reason.inference.text_generation import ConcatedLMGenResult, _generate_fastchat @@ -11,15 +11,16 @@ class LMCallingConfig: top_k: int = -1 # -1 for vllm by default max_new_tokens: int = 512 stop_token_ids: Optional[List[int]] = None - stop_str: Optional[Union[str, List[str]]] = None + stop_str: Optional[str] = None include_stop_str_in_output: bool = False + is_multimodal: bool = False class LanguageModelCallingFunction: def __init__(self, lm_step_tag: str = None): self.lm_step_tag = lm_step_tag - def __call__(self, input_str: str, config: LMCallingConfig) -> ConcatedLMGenResult: + def __call__(self, input_str: str, config: LMCallingConfig, image_path: str = None) -> ConcatedLMGenResult: raise NotImplementedError @@ -34,9 +35,10 @@ def __init__( self.controller_addr = controller_addr super().__init__(lm_step_tag) - def __call__(self, input_str: str, config: LMCallingConfig) -> ConcatedLMGenResult: + def __call__(self, input_str: str, config: LMCallingConfig, image_path: str = None) -> ConcatedLMGenResult: return _generate_fastchat( query_str=input_str, + image_path=image_path, model_name=self.model_name, n=config.n, temperature=config.temperature, diff --git a/reason/inference/rm_call.py b/reason/inference/rm_call.py index 6cf3943..998f72d 100644 --- a/reason/inference/rm_call.py +++ b/reason/inference/rm_call.py @@ -2,7 +2,6 @@ from typing import List, Optional, Tuple, Union from reason.inference.value import _value_inference_fastchat - @dataclass class RewardModelBaseConfig: step_tag: str @@ -86,7 +85,6 @@ def __call__( question_answer_pairs: Union[Tuple[str, str], List[Tuple[str, str]]], lm_step_tag: str, ) -> Union[List[int], List[List[int]]]: - if isinstance(question_answer_pairs[0], str): response = self.replace_step_tag(question_answer_pairs[1], lm_step_tag) input_str = self.format_str.format( diff --git a/reason/inference/text_generation.py b/reason/inference/text_generation.py index f81f856..f84bb85 100644 --- a/reason/inference/text_generation.py +++ b/reason/inference/text_generation.py @@ -1,8 +1,8 @@ +import base64 from typing import List, Optional import requests from dataclasses import dataclass - @dataclass class ConcatedLMGenResult: text: List[str] @@ -19,6 +19,7 @@ def __post_init__(self): def _generate_fastchat( query_str, + image_path, model_name, n, temperature, @@ -30,11 +31,14 @@ def _generate_fastchat( include_stop_str_in_output, controller_addr, ) -> ConcatedLMGenResult: - + + print(controller_addr, model_name) ret = requests.post( controller_addr + "/get_worker_address", json={"model": model_name} ) worker_addr = ret.json()["address"] + print(ret.json()) + print(ret.status_code) if not worker_addr: raise ValueError("Language Model name {} does not exist.".format(model_name)) @@ -42,6 +46,7 @@ def _generate_fastchat( gen_params = { "model": model_name, "prompt": query_str, + "multi_modal_data": image_path, "temperature": temperature, "n": n, "top_p": top_p, @@ -58,6 +63,7 @@ def _generate_fastchat( json=gen_params, stream=True, ) + results = response.json() output_token_lens = results["output_token_len"] cum_logps = results["cumulative_logprob"] @@ -65,6 +71,7 @@ def _generate_fastchat( clp / max(1, otl) for clp, otl in zip(cum_logps, output_token_lens) ] # return results["text"], avg_len_logps + return ConcatedLMGenResult( text=results["text"], prompt_tokens=results["usage"]["prompt_tokens"], @@ -73,3 +80,5 @@ def _generate_fastchat( logp_avg_by_len=avg_len_logps, finish_reason=results["finish_reason"], ) + + diff --git a/reason/llm_service/create_service_qwen2.5_math_vllm.sh b/reason/llm_service/create_service_qwen2.5_math_vllm.sh index d14194b..1f6e7dc 100644 --- a/reason/llm_service/create_service_qwen2.5_math_vllm.sh +++ b/reason/llm_service/create_service_qwen2.5_math_vllm.sh @@ -7,14 +7,17 @@ WORKER_BASE_PORT=30010 echo PYTHON_EXECUTABLE=$(which python3) PYTHON_EXECUTABLE=$(which python3) -MODEL_BASE=/hpc2ssd/JH_DATA/spooler/qxiao183/workspace/hf_models +# MODEL_BASE=/mnt/nasdata/siting/models CUDA_DEVICE_BASE=0 -POLICY_MODEL_NAME=Qwen/Qwen2.5-Math-1.5B-Instruct +# POLICY_MODEL_NAME=Qwen/Qwen2.5-Math-1.5B-Instruct +# POLICY_MODEL_NAME=Qwen/Qwen2-VL-2B-Instruct +# POLICY_MODEL_NAME=Qwen/Qwen2.5-0.5B-Instruct # VALUE_MODEL_NAME=qwen_prm/checkpoint-6898/ # VALUE_MODEL_NAME=Qwen/Qwen2.5-Math-7B-PRM -VALUE_MODEL_NAME=peiyi9979/math-shepherd-mistral-7b-prm -MODEL_PATH=$MODEL_BASE/$POLICY_MODEL_NAME -VALUE_MODEL_PATH=$MODEL_BASE/$VALUE_MODEL_NAME +# MODEL_PATH=$MODEL_BASE/$POLICY_MODEL_NAME +# VALUE_MODEL_PATH=$MODEL_BASE/$VALUE_MODEL_NAME +MODEL_PATH=/mnt/nasdata/siting/models/Qwen/Qwen2-VL-2B-Instruct +VALUE_MODEL_PATH=/mnt/nasdata/yanxue/llms/huggingface/math-shepherd-mistral-7b-prm LOGDIR=logs_fastchat @@ -23,8 +26,8 @@ tmux new-session -s FastChat -n controller -d tmux send-keys "export LOGDIR=${LOGDIR}" Enter tmux send-keys "$PYTHON_EXECUTABLE -m fastchat.serve.controller --port ${CONTROLER_PORT} --host $HOST_ADDR" Enter -NUM_LM_WORKER=2 -NUM_RM_WORKER=2 +NUM_LM_WORKER=1 +NUM_RM_WORKER=1 echo "Wait 5 seconds ..." sleep 5 @@ -46,4 +49,4 @@ do tmux new-window -n value_worker tmux send-keys "export LOGDIR=${LOGDIR}" Enter tmux send-keys "CUDA_VISIBLE_DEVICES=$((i+NUM_LM_WORKER+CUDA_DEVICE_BASE)) $PYTHON_EXECUTABLE -m reason.llm_service.workers.reward_model_worker --model-path $VALUE_MODEL_PATH --controller-address http://$HOST_ADDR:$CONTROLER_PORT --host $HOST_ADDR --port $WORKER_PORT --worker-address http://$HOST_ADDR:$WORKER_PORT" Enter -done +done \ No newline at end of file diff --git a/reason/llm_service/workers/vllm_worker.py b/reason/llm_service/workers/vllm_worker.py index ec161e4..fb01bd3 100644 --- a/reason/llm_service/workers/vllm_worker.py +++ b/reason/llm_service/workers/vllm_worker.py @@ -3,7 +3,8 @@ See documentations at docs/vllm_integration.md """ - +import base64 +import io import argparse import asyncio import json @@ -13,6 +14,8 @@ from fastapi.responses import StreamingResponse, JSONResponse import uvicorn from vllm import AsyncLLMEngine +from vllm.inputs import TextPrompt +from vllm.multimodal.base import MultiModalDataBuiltins, MultiModalDataDict from vllm.engine.arg_utils import AsyncEngineArgs from vllm.sampling_params import SamplingParams from vllm.utils import random_uuid @@ -24,7 +27,7 @@ ) from fastchat.utils import get_context_length - +from PIL import Image app = FastAPI() @@ -63,7 +66,9 @@ def __init__( async def generate_stream(self, params): self.call_ct += 1 - context = params.pop("prompt") + prompt = params.pop("prompt") + image_path = params.pop("multi_modal_data") + n = params.get("n", 1) request_id = params.pop("request_id") temperature = float(params.get("temperature", 1.0)) @@ -112,7 +117,18 @@ async def generate_stream(self, params): logprobs=1, include_stop_str_in_output=include_stop_str_in_output, ) - results_generator = engine.generate(context, sampling_params, request_id) + if image_path is not None: + multi_modal_data = MultiModalDataBuiltins(image=Image.open(image_path).convert("RGB")) + text_prompt = TextPrompt(prompt=prompt, multi_modal_data=multi_modal_data) + else: + text_prompt = TextPrompt(prompt=prompt) + + try: + results_generator = engine.generate(text_prompt, sampling_params, request_id) + print("Results generator initialized successfully.") + except Exception as e: + print(f"Error initializing results generator: {e}") + async for request_output in results_generator: prompt = request_output.prompt @@ -150,7 +166,10 @@ async def generate_stream(self, params): } yield (json.dumps(ret) + "\0").encode() + + async def generate(self, params): + print("Parameters for engine.generate:", params) async for x in self.generate_stream(params): pass return json.loads(x[:-1].decode()) diff --git a/reason/test.py b/reason/test.py index b8414a5..b32060d 100644 --- a/reason/test.py +++ b/reason/test.py @@ -1,90 +1,37 @@ -from inference.value import _value_inference_fastchat +import sys +import os +from pathlib import Path +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.insert(0, BASE_DIR) -question = """Janet\u2019s ducks lay 16 eggs per day. She eats three for breakfast every morning and bakes muffins for her friends every day with four. She sells the remainder at the farmers' market daily for $2 per fresh duck egg. How much in dollars does she make every day at the farmers' market?""" -output1 = """Step 1: Janet's ducks lay 16 eggs per day. ки\nStep 2: She eats three for breakfast every morning, so she has 16 - 3 = 13 eggs left. ки\nStep 3: She bakes muffins for her friends every day with four eggs, so she has 13 - 4 = 9 eggs left. ки\nStep 4: She sells the remainder at the farmers' market daily for $2 per fresh duck egg, so she makes 9 * $2 = $18 every day at the farmers' market. The answer is: 18 ки""" # 18 is right -output2 = """Step 1: Janet's ducks lay 16 eggs per day. ки\nStep 2: She eats three for breakfast every morning, so she has 16 - 3 = 13 eggs left. ки\nStep 3: She bakes muffins for her friends every day with four eggs, so she has 13 - 4 = 9 eggs left. ки\nStep 4: She sells the remainder at the farmers' market daily for $2 per fresh duck egg, so she makes 9 * $2 = $17 every day at the farmers' market. The answer is: 17 ки""" # 17 is wrong -x = _value_inference_fastchat( - "math-shepherd-mistral-7b-prm", - [question + " " + output1, question + " " + output2, "fff"], -) -print(x) - - - -sample = """This is is <|im_start|>assistant\n### Counting Squares of Each Size - -1. **1x1 Squares:** - - Each point in the grid can be the top-left corner of a \( 1 \times 1 \) square. - - There are \( 3 \) rows and \( n \) columns. - - Therefore, the total number of \( 1 \times 1 \) squares is: - \[ - 3 \times n = 3n - \] - -2. **2x2 Squares:** - - A \( 2 \times 2 \) square requires 2 consecutive rows and 2 consecutive columns. - - There are \( 3 - 1 = 2 \) possible rows and \( n - 1 \) possible columns. - - Therefore, the total number of \( 2 \times 2 \) squares is: - \[ - 2 \times (n - 1) = 2(n - 1) = 2n - 2 - \] - -3. **3x3 Squares:** - - A \( 3 \times 3 \) square requires 3 consecutive rows and 3 consecutive columns. - - There are \( 3 - 2j = 1 \) possible row and \( n - 2 \) possible columns. - - Therefore, the total number of \( 3 \times 3 \) squares is: - \[ - 1 \times (n - 2) = n - 2 - \] - -### Setting Up the Equation - -We know the total number of squares is 70. Therefore, we sum the number of squares of each size and set it equal to 70: -\[ -3n + (2n - 2) + (n - 2) = 70 -\] - -Simplify the equation: -\[ -3n + 2n - 2 + n - 2 = 70 -\] -\[ -6n - 4 = 70 -\] - -Add 4 to both sides: -\[ -6n = 74 -\] - -Divide by 6: -\[ -n = \frac{74}{6} -\] -\[ -n = 12.3333 -\] +from reason.inference.rm_call import RMRemoteCaller, RemoteRewardModelConfig +from reason.inference.lm_call import VLLMRemoteCaller, LMCallingConfig - realOTHsoftwarePelを超 residue ног }} +image_path = "/home/siting/openr-mm/mathematics-0.png" +x = '<|im_start|>system\nPlease reason step by step, and put your final answer within \\boxed{{}}.<|im_end|>\n<|im_start|>user\n<|vision_start|><|image_pad|><|vision_end|>According to the following questions, which option in the image is correct? Give the answer from A, B, C and D.<|im_end|>\n<|im_start|>assistant\n' +print(x) -creator➵顶层设计"]""" +lm_call = VLLMRemoteCaller("Qwen2-VL-2B-Instruct") +y = lm_call(x, image_path=image_path, config=LMCallingConfig(n=1, temperature=0.0, max_new_tokens=2048, + # stop_str=['\n\n'], + include_stop_str_in_output=True, is_multimodal=True)) +print(y) -from reason.inference.rm_call import RMRemoteCaller -from reason.inference.lm_call import VLLMRemoteCaller, LMCallingConfig +rm_call = RMRemoteCaller(config=RemoteRewardModelConfig(model_name="math-shepherd-mistral-7b-prm", controller_addr="http://0.0.0.0:28777", step_tag="ки\n", format_str="{question} {answer}")) +r = rm_call((x, y.text[0]), lm_step_tag="\n\n") +print(r) -# rm_call = RMRemoteCaller("math-shepherd-mistral-7b-prm", step_tag="ки\n") +import json -# x = rm_call( -# sample -# ) +data = { + "question": x, + "image_path": image_path, + "answer": y.text[0], + "prm_value": r +} -# print(len(x), x) +# 将字典保存为 JSON 文件 +with open("output.json", "w", encoding="utf-8") as file: + json.dump(data, file, ensure_ascii=False, indent=4) -x = '<|im_start|>system\nPlease reason step by step, and put your final answer within \\boxed{{}}.<|im_end|>\n<|im_start|>user\nSimplify $\\tan 100^\\circ + 4 \\sin 100^\\circ.$<|im_end|>\n<|im_start|>assistant\nTo simplify the expression \\(\\tan 100^\\circ + 4 \\sin 100^\\circ\\), we start by using the identity \\(\\tan 100^\\circ = \\tan (180^\\circ - 80^\\circ) = -\\tan 80^\\circ\\). Therefore, the expression becomes:\n\n\\[\n\\tan 100^\\circ + 4 \\sin 100^\\circ = -\\tan 80^\\circ + 4 \\sin 100^\\circ\n\\]\n\nNext, we use the identity \\(\\sin 100^\\circ = \\sin (180^\\circ - 80^\\circ) = \\sin 80^\\circ\\). So the expression further simplifies to:\n\n\\[\n-\\tan 80^\\circ + 4 \\sin 80^\\circ\n\\]\n\nWe can express \\(\\tan 80^\\circ\\) as \\(\\frac{\\sin 80^\\circ}{\\cos 80^\\circ}\\). Substituting this into the expression, we get:\n\n\\[\n-\\frac{\\sin 80^\\circ}{\\cos 80^\\circ} + 4 \\sin 80^\\circ\n\\]\n\nTo combine these terms, we need a common denominator. The common denominator is \\(\\cos 80^\\circ\\), so we rewrite the expression as:\n\n\\[\n-\\frac{\\sin 80^\\circ}{\\cos 80^\\circ} + \\frac{4 \\sin 80^\\circ \\cos 80^\\circ}{\\cos 80^\\circ} = \\frac{-\\sin 80^\\circ + 4 \\sin 80^\\circ \\cos 80^\\circ}{\\cos 80^\\circ}\n\\]\n\nWe can factor out \\(\\sin 80^\\circ\\) from the numerator:\n\n\\[\n\\frac{\\sin 80^\\circ (-1 + 4 \\cos 80^\\circ)}{\\cos 80^\\circ}\n\\]\n\nThis simplifies to:\n\n\\[\n\\sin 80^\\circ \\cdot \\frac{-1 + 4 \\cos 80^\\circ}{\\cos 80^\\circ} = \\sin 80^\\circ \\left( \\frac{-1}{\\cos 80^\\circ} + 4 \\right) = \\sin 80^\\circ \\left( -\\sec 80^\\circ + 4 \\right)\n\\]\n\nWe know from trigonometric identities that \\(\\sec 80^\\circ = \\frac{1}{\\cos 80^\\circ} = \\csc 10^\\circ\\) (since \\(\\sec (90^\\circ - \\theta) = \\csc \\theta\\)). Therefore, \\(-\\sec 80^\\circ = -\\csc 10^\\circ\\). So the expression becomes:\n\n\\[\n\\sin 80^\\circ \\left( -\\csc 10^\\circ + 4 \\right) = \\sin 80^\\circ \\left( -\\frac{1}{\\sin 10^\\circ} + 4 \\right)\n\\]\n\nWe can rewrite \\(\\sin 80^\\circ\\) as \\(\\cos 10^\\circ\\) (since \\(\\sin (90^\\circ - \\theta) = \\cos \\theta\\)). So the expression is:\n\n\\[\n\\cos 10^\\circ \\left( -\\frac{1}{\\sin 10^\\circ} + 4 \\right) = \\cos 10^\\circ \\left( -\\frac{1}{\\sin 10^\\circ} \\right) + \\cos 10^\\circ \\cdot 4 = -\\frac{\\cos 10^\\circ}{\\sin 10^\\circ} + 4 \\cos 10^\\circ = -\\cot 10^\\circ + 4 \\cos 10^\\circ\n\\]\n\nWe know from trigonometric identities that \\(\\cot 10^\\circ = \\frac{\\cos 10^\\circ}{\\sin 10^\\circ}\\). So we have:\n\n\\[\n-\\cot 10^\\circ + 4 \\cos 10^\\circ = -\\frac{\\cos 10^\\circ}{\\sin 10^\\circ} + 4 \\cos 10^\\circ = -\\frac{\\cos 10^\\circ}{\\sin 10^\\circ} + \\frac{4 \\cos 10^\\circ \\sin 10^\\circ}{\\sin 10^\\circ} = \\frac{-\\cos 10^\\circ + 4 \\cos 10^\\circ \\sin 10^\\circ}{\\sin 10^\\circ}\n\\]\n\nWe can factor out \\(\\cos 10^\\circ\\) from the numerator:\n\n' -print(x) -lm_call = VLLMRemoteCaller("Qwen2.5-Math-7B-Instruct") -y = lm_call(x, config=LMCallingConfig(n=5, temperature=0.7, max_new_tokens=2048, - # stop_str=['\n\n'], - include_stop_str_in_output=True)) -print(y) import pdb; pdb.set_trace() \ No newline at end of file diff --git a/reason/test_gsm8k.sh b/reason/test_gsm8k.sh new file mode 100644 index 0000000..31cb726 --- /dev/null +++ b/reason/test_gsm8k.sh @@ -0,0 +1,5 @@ +set -e + +export TEST_COT_GREEDY=1 +export TEST_COT_SC=1 + diff --git a/scripts/eval/cot_greedy.sh b/scripts/eval/cot_greedy.sh index 6a839b4..8c9dea6 100644 --- a/scripts/eval/cot_greedy.sh +++ b/scripts/eval/cot_greedy.sh @@ -1,9 +1,12 @@ python reason/evaluation/evaluate.py \ - --LM Qwen2.5-Math-1.5B-Instruct \ + --LM Qwen2.5-Math-1.5B-Instruct\ + --RM math-shepherd-mistral-7b-prm\ --task_name MATH \ --temperature 0.0 \ --max_new_tokens 2048 \ --save_dir results \ --method cot \ --num_worker 32 \ - --controller_addr http://0.0.0.0:28777 \ No newline at end of file + --controller_addr http://0.0.0.0:28777 \ + --is_multimodal False\ + --single_problem '{"question": "What is the answer of 2+2?", "answer": "4"}' \ No newline at end of file diff --git a/scripts/eval/cot_greedy_mm.sh b/scripts/eval/cot_greedy_mm.sh new file mode 100644 index 0000000..52e3ef3 --- /dev/null +++ b/scripts/eval/cot_greedy_mm.sh @@ -0,0 +1,13 @@ +python reason/evaluation/evaluate.py \ + --LM Qwen2-VL-2B-Instruct\ + --RM math-shepherd-mistral-7b-prm\ + --task_name MATH \ + --temperature 0.0 \ + --max_new_tokens 2048 \ + --save_dir results \ + --method cot \ + --num_worker 32 \ + --controller_addr http://0.0.0.0:28777 \ + --is_multimodal True\ + --single_problem '{"question": "According to the following questions, which option in the image is correct? Give the answer from A, B, C and D.", "answer": "C", "image": "/home/siting/openr-mm/mathematics-0.png"}' + # --single_problem '{"question": "What is the answer of 2+2?", "answer": "4"}' \ No newline at end of file diff --git a/scripts/eval/rstar_mcts.sh b/scripts/eval/rstar_mcts.sh deleted file mode 100644 index 7b56344..0000000 --- a/scripts/eval/rstar_mcts.sh +++ /dev/null @@ -1,16 +0,0 @@ -python reason/evaluation/evaluate.py \ - --LM Qwen2.5-Math-1.5B-Instruct \ - --RM math-shepherd-mistral-7b-prm \ - --task_name rstar \ - --max_new_tokens 2048 \ - --num_sequence 1 \ - --tree_max_width 4 \ - --tree_max_depth 50 \ - --save_dir debug \ - --method rstar_mcts \ - --num_worker 32 \ - --controller_addr http://0.0.0.0:28777 \ - --top_k 40 \ - --top_p 0.95 \ - --temperature 0.8 \ -# --local \ No newline at end of file