diff --git a/.ipynb_checkpoints/README-checkpoint.md b/.ipynb_checkpoints/README-checkpoint.md
new file mode 100644
index 0000000..3def13d
--- /dev/null
+++ b/.ipynb_checkpoints/README-checkpoint.md
@@ -0,0 +1,116 @@
+# Tiny Language Models Framework
+
+This repository contains the implementation and resources for the Tiny Language Models Framework project. In this project, we developed small-scale language models to facilitate detailed research into various aspects of large language models (LLMs), particularly in the domain of code.
+
+## Project Structure
+
+- `data/`
+ - `meta.pkl` : Metadata for the dataset.
+ - `prepare.py` : Script to prepare data for training.
+ - `sample_data.txt` : Sample data used for testing and demonstration.
+ - `test.bin` : Binary file containing test data.
+ - `test.txt` : Text file containing test data.
+ - `tinypy_generator.py` : Script to generate TinyPy data.
+ - `train.bin` : Binary file containing training data.
+ - `train.txt` : Text file containing training data.
+ - `val.bin` : Binary file containing validation data.
+ - `val.txt` : Text file containing validation data.
+
+- `generalization/`
+ - `data/` : Contains tokenized data to fine-tune and evaluate Code LLaMa model.
+ - `models/` : Stores fine-tuned Code LLaMa models.
+ - `results/` : Holds results from the evaluation.
+ - `demonstration.ipynb` : Jupyter notebook demonstrating fine-tuned Code LLaMa capabilities.
+ - `evaluate.py` : Script to evaluate fine-tuned Code LLaMa.
+ - `finetune.py` : Script for fine-tuning Code LLaMa model.
+ - `tokenizing.py` : Handles tokenization for Code LLaMa model.
+
+- `models/`
+ - `arithmetics_level1_696K.pth` : Pretrained model for arithmetic operations at level 1 with 696K parameters.
+
+- `results/`
+ - Directory to store results of model evaluations and tests.
+
+- `demonstration.ipynb` : Jupyter notebook demonstrating the usage of the models and scripts.
+
+- `eval.py` : Script to evaluate the trained models.
+
+- `model.py` : Contains the model architecture and related functions.
+
+- `README.md` : This file.
+
+- `train.py` : Script to train the models.
+
+## Requirements
+
+To install the required packages, you can use the following:
+
+```bash
+pip install -r requirements.txt
+```
+
+## Usage
+
+### Data Generation
+Generate the data using TinyPy Generator by running :
+
+```bash
+cd data/
+python tinypy_generator.py --num_programs 1000 --level 1.1 --filename sample_data.txt --deduplicate
+```
+
+### Data Preparation
+Prepare the data by running:
+
+```bash
+python prepare.py
+```
+
+This generation command is just an example to get you started. If you want to train your own model, you'll likely need to generate significantly more data.
+
+### Training
+Train the model using the following command:
+
+bash
+```bash
+cd ..
+python train.py --batch_size 64 --max_iters 35000 --learning_rate 0.01 --miles 0.7 0.8 0.9 --eval_interval 10000 --eval_iters 500 --data_dir data
+```
+
+### Evaluation
+Evaluate the trained model by running:
+
+```bash
+python eval.py --dataset_dir data --model_name arithmetics_level1_696K
+```
+
+### Demonstration
+To see a demonstration of the model's capabilities, open the demonstration.ipynb notebook and follow the instructions within.
+
+### Generalization
+This section aims to generalize the results obtained from training tiny language models to large language models. This can be achieved through fine-tuning Code LLaMa.
+
+#### Fine-tuning
+Fine-tune Code LLaMa model using the following command:
+
+```bash
+cd generalization/
+python finetune.py --train_dataset_path data/tokenized_train --val_dataset_path data/tokenized_val --output_dir models/code-llama-finetuned-demo
+```
+
+#### Evaluation
+Evaluate the fine-tuned Code LLaMa model by running:
+
+```bash
+python evaluate.py --checkpoint_dir models/code-llama-finetuned-level1 --test_file data/test.txt --output_file results/result_llama.txt --csv_file results/results_llama.csv
+```
+
+#### Demonstration
+To see a demonstration of the model's capabilities, open the generalization/demonstration.ipynb notebook and follow the instructions within.
+
+
+# License
+This project is licensed under the MIT License.
+
+# Acknowledgements
+This work was supported in part through the NYU IT High Performance Computing resources, services, and staff expertise.
diff --git a/.ipynb_checkpoints/code_execution-checkpoint.py b/.ipynb_checkpoints/code_execution-checkpoint.py
new file mode 100644
index 0000000..3c82637
--- /dev/null
+++ b/.ipynb_checkpoints/code_execution-checkpoint.py
@@ -0,0 +1,164 @@
+import os
+import pickle
+import torch
+import numpy as np
+import pandas as pd
+import re
+from tqdm import tqdm
+import argparse
+from model import GPT
+
+class ScriptEvaluator:
+ """
+ Class to evaluate a GPT model on a dataset and save the results.
+ """
+
+ def __init__(self, dataset_dir, model_name):
+ """
+ Initialize ScriptEvaluator with dataset directory and model name.
+
+ Args:
+ - dataset_dir (str): Directory where the dataset is stored.
+ - model_name (str): Name of the pre-trained model (without .pth extension).
+ """
+ self.dataset = dataset_dir
+ self.model_name = model_name
+ self.device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
+ torch.manual_seed(1337)
+ self.test_data, self.meta = self.load_dataset()
+ self.m = self.load_model()
+
+ def load_dataset(self):
+ """
+ Load test dataset and metadata.
+ """
+ test_data = np.memmap(os.path.join(self.dataset, 'test.bin'), dtype=np.uint16, mode='r')
+ meta_path = os.path.join(self.dataset, 'meta.pkl')
+ meta_vocab_size = None
+ if os.path.exists(meta_path):
+ with open(meta_path, 'rb') as f:
+ meta = pickle.load(f)
+ meta_vocab_size = meta['vocab_size']
+ print(f"Found vocab_size = {meta_vocab_size} (inside {meta_path})")
+
+ return test_data, meta
+
+ def load_model(self):
+ """
+ Load pre-trained model based on the provided model name.
+ """
+ model_path = os.path.join('models', f"{self.model_name}.pth")
+ if not os.path.exists(model_path):
+ raise FileNotFoundError(f"Model file '{model_path}' not found.")
+
+ model = GPT()
+ print("Compiling the model...\n")
+ try:
+ model = torch.compile(model) # requires PyTorch 2.0
+ except Exception as e:
+ pass
+ model.load_state_dict(torch.load(model_path))
+ m = model.to(self.device)
+ return m
+
+ def encode(self, s):
+ """
+ Encode string `s` into token IDs.
+ """
+ return [self.stoi[c] for c in s]
+
+ def decode(self, l):
+ """
+ Decode token IDs `l` into a string.
+ """
+ return ''.join([self.itos[i] for i in l])
+
+ def evaluate_example(self, example, max_new_tokens=30):
+ """
+ Evaluate an example using the loaded model.
+ """
+ # Split example and determine maximum new tokens allowed
+ splited_example = example.split("# output")
+ if not ("for" in splited_example[0]):
+ max_new_tokens = 22
+
+ # Encode prompt and prepare for evaluation
+ encoded_example = torch.tensor(self.encode(splited_example[0] + "# output"), dtype=torch.long).unsqueeze(0).to(self.device)
+ prompt_text = splited_example[0] + "# output"
+ result_example = splited_example[-1]
+
+ # Extract real results from example
+ real_results = [float(match.group()) for match in re.finditer(r"(?<=# )-?\d+(\.\d+)?", result_example.split('\n\n')[0].replace("\n", ""))]
+
+ # Generate response from model and extract generated results
+ response = self.decode(self.m.generate(encoded_example, max_new_tokens=max_new_tokens)[0].tolist())
+ splited_response = response.split("# output")
+ result_response = splited_response[-1]
+ generated_results = [float(match.group()) for match in re.finditer(r"(?<=# )-?\d+(\.\d+)?", result_response.split('\n\n')[0].replace("\n", ""))]
+
+ return prompt_text, real_results, generated_results
+
+ def write_results_to_file(self, output_file, prompt, real_results, generated_results):
+ """
+ Write evaluation results to a CSV file.
+ """
+ df = pd.DataFrame({
+ 'Prompt': prompt,
+ 'Real_Results': real_results,
+ 'Generated_Results': generated_results
+ })
+ df.to_csv(output_file, index=False)
+
+ def main(self):
+ """
+ Main evaluation function.
+ """
+ # Extracting stoi and itos from meta
+ self.stoi = self.meta['stoi']
+ self.itos = self.meta['itos']
+
+ # Split examples and initialize lists for results
+ examples = self.decode(self.test_data).split("\n\n")
+ examples = [example for example in examples if example]
+
+ # Start evaluation process
+ print(f"Starting evaluation for model '{self.model_name}' on dataset '{self.dataset}'...")
+ prompt = []
+ real_results = []
+ generated_results = []
+
+ # Iterate through examples and evaluate each one
+ for example in tqdm(examples):
+ prompt_text, real_result, result = self.evaluate_example(example)
+ prompt.append(prompt_text)
+ real_results.append(real_result)
+ generated_results.append(result)
+
+ # Calculate and print accuracy
+ correct_count = sum(1 for real, generated in zip(real_results, generated_results) if real == generated)
+ accuracy = correct_count / len(generated_results)
+ print(f"Accuracy: {accuracy * 100:.2f}%")
+
+ # Store accuracy in a file
+ accuracy_file = os.path.join('results', f"{self.model_name}_accuracy.txt") # Saving in 'results' folder
+ with open(accuracy_file, 'w') as f:
+ f.write(f"Accuracy: {accuracy * 100:.2f}%\n")
+ print(f"Accuracy saved to {accuracy_file}")
+
+ # Store results in a CSV file
+ results_file = os.path.join('results', f"{self.model_name}_results.csv") # Saving in 'results' folder
+ self.write_results_to_file(results_file, prompt, real_results, generated_results)
+ print(f"Results saved to {results_file}")
+
+if __name__ == "__main__":
+ # Argument parsing
+ parser = argparse.ArgumentParser(description='Evaluate NanoGPT model on a dataset.')
+ parser.add_argument('--dataset_dir', type=str, default='data', help='Directory where the dataset is stored')
+ parser.add_argument('--model_name', type=str, required=True, help='Name of the pre-trained model (without .pth extension)')
+
+ # Parse the command-line arguments
+ args = parser.parse_args()
+
+ # Create ScriptEvaluator instance and run main function
+ evaluator = ScriptEvaluator(args.dataset_dir, args.model_name)
+ evaluator.main()
diff --git a/.ipynb_checkpoints/line-level_code_completion-checkpoint.py b/.ipynb_checkpoints/line-level_code_completion-checkpoint.py
new file mode 100644
index 0000000..530c982
--- /dev/null
+++ b/.ipynb_checkpoints/line-level_code_completion-checkpoint.py
@@ -0,0 +1,99 @@
+import os
+import pickle
+import argparse
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+import numpy as np
+import pandas as pd
+from tqdm import tqdm
+import re
+from model import GPT
+
+# Argument parsing
+parser = argparse.ArgumentParser(description='Evaluate NanoGPT model on token-level code completion.')
+parser.add_argument('--dataset_dir', type=str, default='data', help='Directory where the dataset is stored')
+parser.add_argument('--model_name', type=str, required=True, help='Name of the pre-trained model (without .pth extension)')
+
+# Parse the command-line arguments
+args = parser.parse_args()
+
+device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
+torch.manual_seed(1337)
+
+
+# Constants for dataset and file paths
+MODEL_FILE = f"models/{args.model_name}.pth"
+ACCURACY_FILE = f"results/{args.model_name}_acc_line-level_code_completion.txt"
+RESULTS_FILE = f"results/{args.model_name}_line-level_code_completion.csv"
+
+
+data_dir = args.dataset_dir
+test_data = np.memmap(os.path.join(data_dir, 'test.bin'), dtype=np.uint16, mode='r')
+
+
+# attempt to derive vocab_size from the dataset
+meta_path = os.path.join(data_dir, 'meta.pkl')
+meta_vocab_size = None
+if os.path.exists(meta_path):
+ with open(meta_path, 'rb') as f:
+ meta = pickle.load(f)
+ meta_vocab_size = meta['vocab_size']
+ print(f"found vocab_size = {meta_vocab_size} (inside {meta_path})")
+
+stoi = meta['stoi']
+itos = meta['itos']
+encode = lambda s: [stoi[c] for c in s]
+decode = lambda l: ''.join([itos[i] for i in l])
+
+model = GPT()
+print("Compiling model...")
+model = torch.compile(model) # pytorch 2.0
+model.load_state_dict(torch.load(MODEL_FILE))
+m = model.to(device)
+
+examples = decode(test_data).split("\n\n")
+examples = [example for example in examples if example]
+
+correct_predictions = 0
+total_predictions = 0
+
+results = []
+
+for code_snippet in tqdm(examples):
+
+ lines = code_snippet.split('\n')
+ for i in range(1, len(lines)):
+
+ context_lines = lines[:i]
+ actual_next_line = lines[i]
+
+ context_tokens = torch.tensor(encode('\n'.join(context_lines) + '\n'), dtype=torch.long).unsqueeze(0).to(device)
+ actual_next_line_tokens = torch.tensor(encode(actual_next_line), dtype=torch.long).unsqueeze(0).to(device)
+
+ n = actual_next_line_tokens.shape[1] # Limit to length of actual next line
+ predicted_next_line_tokens = m.generate(context_tokens, max_new_tokens=n)
+ predicted_next_line_tokens = predicted_next_line_tokens[:, -n:]
+ is_correct = torch.equal(predicted_next_line_tokens, actual_next_line_tokens)
+
+ if is_correct:
+ correct_predictions += 1
+ results.append({
+ 'context': context_tokens.cpu(),
+ 'actual_next_line': actual_next_line_tokens.cpu(),
+ 'predicted_next_line': predicted_next_line_tokens.cpu(),
+ 'is_correct': is_correct
+ })
+
+ total_predictions += 1
+
+df = pd.DataFrame(results)
+df.to_csv(RESULTS_FILE, index=False)
+
+accuracy = (correct_predictions / total_predictions) * 100
+
+# Store accuracy in a file
+with open(ACCURACY_FILE, 'w') as f:
+ f.write(f"Accuracy: {accuracy:.2f}%\n")
+
+print(accuracy)
\ No newline at end of file
diff --git a/.ipynb_checkpoints/token-level_code_completion-checkpoint.py b/.ipynb_checkpoints/token-level_code_completion-checkpoint.py
new file mode 100644
index 0000000..4bb6211
--- /dev/null
+++ b/.ipynb_checkpoints/token-level_code_completion-checkpoint.py
@@ -0,0 +1,96 @@
+import os
+import pickle
+import argparse
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+import numpy as np
+import pandas as pd
+from tqdm import tqdm
+import re
+from model import GPT
+
+
+# Argument parsing
+parser = argparse.ArgumentParser(description='Evaluate NanoGPT model on token-level code completion.')
+parser.add_argument('--dataset_dir', type=str, default='data', help='Directory where the dataset is stored')
+parser.add_argument('--model_name', type=str, required=True, help='Name of the pre-trained model (without .pth extension)')
+
+# Parse the command-line arguments
+args = parser.parse_args()
+
+device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
+torch.manual_seed(1337)
+
+
+# Constants for dataset and file paths
+MODEL_FILE = f"models/{args.model_name}.pth"
+ACCURACY_FILE = f"results/{args.model_name}_acc_token-level_code_completion.txt"
+RESULTS_FILE = f"results/{args.model_name}_token-level_code_completion.csv"
+
+
+data_dir = args.dataset_dir
+test_data = np.memmap(os.path.join(data_dir, 'test.bin'), dtype=np.uint16, mode='r')
+
+# attempt to derive vocab_size from the dataset
+meta_path = os.path.join(data_dir, 'meta.pkl')
+meta_vocab_size = None
+if os.path.exists(meta_path):
+ with open(meta_path, 'rb') as f:
+ meta = pickle.load(f)
+ meta_vocab_size = meta['vocab_size']
+ print(f"found vocab_size = {meta_vocab_size} (inside {meta_path})")
+
+stoi = meta['stoi']
+itos = meta['itos']
+encode = lambda s: [stoi[c] for c in s]
+decode = lambda l: ''.join([itos[i] for i in l])
+
+model = GPT()
+print("Compiling model...")
+model = torch.compile(model) # pytorch 2.0
+model.load_state_dict(torch.load(MODEL_FILE))
+m = model.to(device)
+
+examples = decode(test_data).split("\n\n")
+examples = [example for example in examples if example]
+
+correct_predictions = 0
+total_predictions = 0
+
+results = []
+
+for code_snippet in tqdm(examples):
+
+ tokens = torch.tensor(encode(code_snippet), dtype=torch.long).unsqueeze(0).to(device)
+
+ for i in range(1, tokens.shape[1]):
+
+ context = tokens[:, :i]
+ actual_next_token = tokens[:, i].item()
+ predicted_next_token = m.generate(context, max_new_tokens=1)
+ predicted_next_token = predicted_next_token[:, -1].item()
+ is_correct = (predicted_next_token == actual_next_token)
+
+ if is_correct:
+ correct_predictions += 1
+ results.append({
+ 'context': context.cpu(),
+ 'actual_next_token': actual_next_token,
+ 'predicted_next_token': predicted_next_token,
+ 'is_correct': is_correct
+ })
+
+ total_predictions += 1
+
+df = pd.DataFrame(results)
+df.to_csv(RESULTS_FILE, index=False)
+
+
+accuracy = (correct_predictions / total_predictions) * 100
+
+# Store accuracy in a file
+with open(ACCURACY_FILE, 'w') as f:
+ f.write(f"Accuracy: {accuracy:.2f}%\n")
+
+print(accuracy)
\ No newline at end of file
diff --git a/README.md b/README.md
index 73ceaa2..7e682eb 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,12 @@
# Tiny Language Models Framework
-This repository contains the implementation and resources for the Tiny Language Models Framework project. In this project, we developed small-scale language models to facilitate detailed research into various aspects of large language models (LLMs), particularly in the domain of code.
+This repository contains the implementation and resources for the Tiny Language Models Framework project. In this project, we developed small-scale language models to facilitate detailed research into various aspects of large language models (LLMs), particularly in the domain of code.
+
+
+
+
+
+We've also prepared a [TinyLM Starter Notebook on Kaggle](https://www.kaggle.com/code/nairmarwa/tinylm-starter-notebook). This notebook is designed to help you get started quickly with our project. It guides you through training a tiny language model from scratch using our dataset and evaluating its performance on code execution tasks.
## Project Structure
@@ -33,7 +39,11 @@ This repository contains the implementation and resources for the Tiny Language
- `demonstration.ipynb` : Jupyter notebook demonstrating the usage of the models and scripts.
-- `eval.py` : Script to evaluate the trained models.
+- `code_execution.py` : Script to evaluate the trained models on the code execution task.
+
+- `token-level_code_completion.py` : Script to evaluate the trained models on the token-level code completion task.
+
+- `line-level_code_completion.py` : Script to evaluate the trained models on the line-level code completion task.
- `model.py` : Contains the model architecture and related functions.
@@ -42,6 +52,7 @@ This repository contains the implementation and resources for the Tiny Language
- `train.py` : Script to train the models.
## Requirements
+We've used Python 3.11.7.
To install the required packages, you can use the following:
@@ -59,15 +70,15 @@ cd data/
python tinypy_generator.py --num_programs 1000 --level 1.1 --filename sample_data.txt --deduplicate
```
+This generation command is just an example to get you started. If you want to train your own model, you'll likely need to generate significantly more data.
+
### Data Preparation
-Prepare the data by running:
+Prepare (tokenize and split) the data by running:
```bash
python prepare.py
```
-This generation command is just an example to get you started. If you want to train your own model, you'll likely need to generate significantly more data.
-
### Training
Train the model using the following command:
@@ -78,10 +89,22 @@ python train.py --batch_size 64 --max_iters 35000 --learning_rate 0.01 --miles 0
```
### Evaluation
-Evaluate the trained model by running:
+Evaluate the trained model on code execution by running:
```bash
-python eval.py --dataset_dir data --model_name arithmetics_level1_696K
+python code_execution.py --dataset_dir data --model_name arithmetics_level1_696K
+```
+
+Evaluate the trained model on token-level code completion by running:
+
+```bash
+python token-level_code_completion.py --dataset_dir data --model_name arithmetics_level1_696K
+```
+
+Evaluate the trained model on line-level code completion by running:
+
+```bash
+python line-level_code_completion.py --dataset_dir data --model_name arithmetics_level1_696K
```
### Demonstration
@@ -108,9 +131,14 @@ python evaluate.py --checkpoint_dir models/code-llama-finetuned-level1 --test_fi
#### Demonstration
To see a demonstration of the model's capabilities, open the generalization/demonstration.ipynb notebook and follow the instructions within.
+# Contact
+
+- **Kamel Yamani**: [mky2023@nyu.edu](mailto:mky2023@nyu.edu)
+- **Marwa Naïr**: [mn3620@nyu.edu](mailto:mn3620@nyu.edu)
+
# License
This project is licensed under the MIT License.
# Acknowledgements
-Special thanks to all contributors and the community for their support and contribution
+This work was supported in part through the NYU IT High Performance Computing resources, services, and staff expertise.
diff --git a/__pycache__/model.cpython-311.pyc b/__pycache__/model.cpython-311.pyc
new file mode 100644
index 0000000..3491bc4
Binary files /dev/null and b/__pycache__/model.cpython-311.pyc differ
diff --git a/code_execution.py b/code_execution.py
new file mode 100644
index 0000000..3c82637
--- /dev/null
+++ b/code_execution.py
@@ -0,0 +1,164 @@
+import os
+import pickle
+import torch
+import numpy as np
+import pandas as pd
+import re
+from tqdm import tqdm
+import argparse
+from model import GPT
+
+class ScriptEvaluator:
+ """
+ Class to evaluate a GPT model on a dataset and save the results.
+ """
+
+ def __init__(self, dataset_dir, model_name):
+ """
+ Initialize ScriptEvaluator with dataset directory and model name.
+
+ Args:
+ - dataset_dir (str): Directory where the dataset is stored.
+ - model_name (str): Name of the pre-trained model (without .pth extension).
+ """
+ self.dataset = dataset_dir
+ self.model_name = model_name
+ self.device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
+ torch.manual_seed(1337)
+ self.test_data, self.meta = self.load_dataset()
+ self.m = self.load_model()
+
+ def load_dataset(self):
+ """
+ Load test dataset and metadata.
+ """
+ test_data = np.memmap(os.path.join(self.dataset, 'test.bin'), dtype=np.uint16, mode='r')
+ meta_path = os.path.join(self.dataset, 'meta.pkl')
+ meta_vocab_size = None
+ if os.path.exists(meta_path):
+ with open(meta_path, 'rb') as f:
+ meta = pickle.load(f)
+ meta_vocab_size = meta['vocab_size']
+ print(f"Found vocab_size = {meta_vocab_size} (inside {meta_path})")
+
+ return test_data, meta
+
+ def load_model(self):
+ """
+ Load pre-trained model based on the provided model name.
+ """
+ model_path = os.path.join('models', f"{self.model_name}.pth")
+ if not os.path.exists(model_path):
+ raise FileNotFoundError(f"Model file '{model_path}' not found.")
+
+ model = GPT()
+ print("Compiling the model...\n")
+ try:
+ model = torch.compile(model) # requires PyTorch 2.0
+ except Exception as e:
+ pass
+ model.load_state_dict(torch.load(model_path))
+ m = model.to(self.device)
+ return m
+
+ def encode(self, s):
+ """
+ Encode string `s` into token IDs.
+ """
+ return [self.stoi[c] for c in s]
+
+ def decode(self, l):
+ """
+ Decode token IDs `l` into a string.
+ """
+ return ''.join([self.itos[i] for i in l])
+
+ def evaluate_example(self, example, max_new_tokens=30):
+ """
+ Evaluate an example using the loaded model.
+ """
+ # Split example and determine maximum new tokens allowed
+ splited_example = example.split("# output")
+ if not ("for" in splited_example[0]):
+ max_new_tokens = 22
+
+ # Encode prompt and prepare for evaluation
+ encoded_example = torch.tensor(self.encode(splited_example[0] + "# output"), dtype=torch.long).unsqueeze(0).to(self.device)
+ prompt_text = splited_example[0] + "# output"
+ result_example = splited_example[-1]
+
+ # Extract real results from example
+ real_results = [float(match.group()) for match in re.finditer(r"(?<=# )-?\d+(\.\d+)?", result_example.split('\n\n')[0].replace("\n", ""))]
+
+ # Generate response from model and extract generated results
+ response = self.decode(self.m.generate(encoded_example, max_new_tokens=max_new_tokens)[0].tolist())
+ splited_response = response.split("# output")
+ result_response = splited_response[-1]
+ generated_results = [float(match.group()) for match in re.finditer(r"(?<=# )-?\d+(\.\d+)?", result_response.split('\n\n')[0].replace("\n", ""))]
+
+ return prompt_text, real_results, generated_results
+
+ def write_results_to_file(self, output_file, prompt, real_results, generated_results):
+ """
+ Write evaluation results to a CSV file.
+ """
+ df = pd.DataFrame({
+ 'Prompt': prompt,
+ 'Real_Results': real_results,
+ 'Generated_Results': generated_results
+ })
+ df.to_csv(output_file, index=False)
+
+ def main(self):
+ """
+ Main evaluation function.
+ """
+ # Extracting stoi and itos from meta
+ self.stoi = self.meta['stoi']
+ self.itos = self.meta['itos']
+
+ # Split examples and initialize lists for results
+ examples = self.decode(self.test_data).split("\n\n")
+ examples = [example for example in examples if example]
+
+ # Start evaluation process
+ print(f"Starting evaluation for model '{self.model_name}' on dataset '{self.dataset}'...")
+ prompt = []
+ real_results = []
+ generated_results = []
+
+ # Iterate through examples and evaluate each one
+ for example in tqdm(examples):
+ prompt_text, real_result, result = self.evaluate_example(example)
+ prompt.append(prompt_text)
+ real_results.append(real_result)
+ generated_results.append(result)
+
+ # Calculate and print accuracy
+ correct_count = sum(1 for real, generated in zip(real_results, generated_results) if real == generated)
+ accuracy = correct_count / len(generated_results)
+ print(f"Accuracy: {accuracy * 100:.2f}%")
+
+ # Store accuracy in a file
+ accuracy_file = os.path.join('results', f"{self.model_name}_accuracy.txt") # Saving in 'results' folder
+ with open(accuracy_file, 'w') as f:
+ f.write(f"Accuracy: {accuracy * 100:.2f}%\n")
+ print(f"Accuracy saved to {accuracy_file}")
+
+ # Store results in a CSV file
+ results_file = os.path.join('results', f"{self.model_name}_results.csv") # Saving in 'results' folder
+ self.write_results_to_file(results_file, prompt, real_results, generated_results)
+ print(f"Results saved to {results_file}")
+
+if __name__ == "__main__":
+ # Argument parsing
+ parser = argparse.ArgumentParser(description='Evaluate NanoGPT model on a dataset.')
+ parser.add_argument('--dataset_dir', type=str, default='data', help='Directory where the dataset is stored')
+ parser.add_argument('--model_name', type=str, required=True, help='Name of the pre-trained model (without .pth extension)')
+
+ # Parse the command-line arguments
+ args = parser.parse_args()
+
+ # Create ScriptEvaluator instance and run main function
+ evaluator = ScriptEvaluator(args.dataset_dir, args.model_name)
+ evaluator.main()
diff --git a/data/.ipynb_checkpoints/prepare-checkpoint.py b/data/.ipynb_checkpoints/prepare-checkpoint.py
new file mode 100644
index 0000000..cb2189e
--- /dev/null
+++ b/data/.ipynb_checkpoints/prepare-checkpoint.py
@@ -0,0 +1,83 @@
+import os
+import pickle
+import requests
+import numpy as np
+
+input_file_path = os.path.join(os.path.dirname(__file__), 'sample_data.txt' )
+
+with open(input_file_path, 'r') as f:
+ data = f.read()
+print(f"length of dataset in characters: {len(data):,}\n")
+
+
+# get all the unique characters that occur in this text
+chars = sorted(list(set(data)))
+vocab_size = len(chars)
+print("all the unique characters:", ''.join(chars))
+print(f"vocab size: {vocab_size:,}")
+
+# create a mapping from characters to integers
+stoi = { ch:i for i,ch in enumerate(chars) }
+itos = { i:ch for i,ch in enumerate(chars) }
+def encode(s):
+ return [stoi[c] for c in s] # encoder: take a string, output a list of integers
+def decode(l):
+ ''.join([itos[i] for i in l]) # decoder: take a list of integers, output a string
+
+
+# save the meta information as well, to help us encode/decode later
+meta = {
+ 'vocab_size': vocab_size,
+ 'itos': itos,
+ 'stoi': stoi,
+}
+with open(f'meta.pkl', 'wb') as f:
+ pickle.dump(meta, f)
+
+
+# split by examples using "\n\n"
+examples = data.split("\n\n")[:-1]
+n = len(examples)
+print(f"total number of examples: {n:,}\n")
+# shuffle the examples
+np.random.shuffle(examples)
+
+# split into train, val, and test sets
+train_examples = examples[:int(n*0.8)]
+val_examples = examples[int(n*0.8):int(n*0.9)]
+test_examples = examples[int(n*0.9):]
+
+# join the examples back into strings
+train_data = "\n\n".join(train_examples)
+val_data = "\n\n".join(val_examples)
+test_data = "\n\n".join(test_examples)
+
+
+
+# Save train, val, and test sets to separate files
+with open(os.path.join(os.path.dirname(__file__), 'train.txt'), 'w') as f:
+ f.write(train_data)
+with open(os.path.join(os.path.dirname(__file__), 'val.txt'), 'w') as f:
+ f.write(val_data)
+with open(os.path.join(os.path.dirname(__file__), 'test.txt'), 'w') as f:
+ f.write(test_data)
+
+
+
+
+# encode both to integers
+train_ids = encode(train_data)
+val_ids = encode(val_data)
+test_ids = encode(test_data)
+print(f"train has {len(train_ids):,} tokens for {len(train_examples):,} examples")
+print(f"val has {len(val_ids):,} tokens for {len(val_examples):,} examples")
+print(f"test has {len(test_ids):,} tokens for {len(test_examples):,} examples\n")
+
+# export to bin files
+train_ids = np.array(train_ids, dtype=np.uint16)
+val_ids = np.array(val_ids, dtype=np.uint16)
+test_ids = np.array(test_ids, dtype=np.uint16)
+train_ids.tofile(os.path.join(os.path.dirname(__file__), 'train.bin'))
+val_ids.tofile(os.path.join(os.path.dirname(__file__), 'val.bin'))
+test_ids.tofile(os.path.join(os.path.dirname(__file__), 'test.bin'))
+
diff --git a/data/.ipynb_checkpoints/sample_data-checkpoint.txt b/data/.ipynb_checkpoints/sample_data-checkpoint.txt
new file mode 100644
index 0000000..dd6e285
--- /dev/null
+++ b/data/.ipynb_checkpoints/sample_data-checkpoint.txt
@@ -0,0 +1,6098 @@
+d = 0
+b = d * d
+print(b)
+# output
+# 0
+
+c = 5
+d = 5
+d = c - 4
+print(d)
+# output
+# 1
+
+d = 5
+a = 0
+print(a + d)
+# output
+# 5
+
+b = 2
+print(b)
+# output
+# 2
+
+a = 8
+e = a + 1
+print(a / a)
+# output
+# 1.0
+
+e = 8
+print(e)
+# output
+# 8
+
+d = 0
+e = 7
+c = d / 1
+print(e / e)
+# output
+# 1.0
+
+d = 6
+c = 4 + 1
+print(d + 2)
+# output
+# 8
+
+d = 9
+d = 7
+print(d)
+# output
+# 7
+
+c = 2
+e = 8
+print(e)
+# output
+# 8
+
+e = 5
+c = 8
+print(c)
+# output
+# 8
+
+c = 2
+c = 7 + c
+print(c * c)
+# output
+# 81
+
+a = 2
+print(a / a)
+# output
+# 1.0
+
+c = 5
+e = 1
+print(c)
+# output
+# 5
+
+d = 6
+d = 0
+b = d * 5
+print(d * d)
+# output
+# 0
+
+e = 1
+c = 8
+print(c * 2)
+# output
+# 16
+
+e = 4
+b = 8
+d = 4 + b
+print(d)
+# output
+# 12
+
+d = 9
+print(d)
+# output
+# 9
+
+a = 8
+print(a - a)
+# output
+# 0
+
+d = 5
+a = 0 * d
+print(a)
+# output
+# 0
+
+d = 5
+print(d)
+# output
+# 5
+
+a = 8
+print(a)
+# output
+# 8
+
+c = 8
+d = 4
+print(d / 9)
+# output
+# 0.4444444444444444
+
+e = 6
+c = 4
+b = c + c
+print(e / e)
+# output
+# 1.0
+
+b = 8
+a = 5 - b
+print(a)
+# output
+# -3
+
+a = 4
+e = 4
+print(e)
+# output
+# 4
+
+b = 3
+a = 0
+print(a)
+# output
+# 0
+
+d = 4
+b = 6 / 2
+print(b)
+# output
+# 3.0
+
+d = 9
+b = 6
+print(b - b)
+# output
+# 0
+
+e = 7
+print(e * 9)
+# output
+# 63
+
+e = 4
+e = 8 * 8
+print(e)
+# output
+# 64
+
+a = 5
+a = 7
+a = a + a
+print(a)
+# output
+# 14
+
+e = 8
+print(e * e)
+# output
+# 64
+
+e = 9
+e = 9
+print(e + e)
+# output
+# 18
+
+a = 0
+b = a + a
+print(a / 9)
+# output
+# 0.0
+
+d = 6
+a = d / d
+print(a)
+# output
+# 1.0
+
+e = 2
+b = 0 + e
+print(e - 4)
+# output
+# -2
+
+e = 6
+c = 1 / e
+print(e + e)
+# output
+# 12
+
+d = 7
+c = 7
+print(c)
+# output
+# 7
+
+b = 7
+print(b)
+# output
+# 7
+
+c = 3
+a = 0
+e = c / 3
+print(a + c)
+# output
+# 3
+
+e = 5
+print(e - 0)
+# output
+# 5
+
+e = 8
+d = 0 - e
+print(e / e)
+# output
+# 1.0
+
+a = 5
+b = 5
+e = 9 - 2
+print(a * a)
+# output
+# 25
+
+e = 4
+print(e + e)
+# output
+# 8
+
+e = 2
+b = e / e
+print(e + 8)
+# output
+# 10
+
+b = 7
+a = 1
+print(a)
+# output
+# 1
+
+a = 4
+a = 2
+print(a)
+# output
+# 2
+
+b = 2
+a = 7
+print(a)
+# output
+# 7
+
+e = 6
+b = 5
+c = 4 / 9
+print(e * 6)
+# output
+# 36
+
+a = 4
+c = 0
+d = 9 / a
+print(d)
+# output
+# 2.25
+
+c = 6
+d = 9 - 5
+print(c / 1)
+# output
+# 6.0
+
+d = 5
+d = 9 - 7
+print(d)
+# output
+# 2
+
+b = 3
+a = 0
+c = 6 - 1
+print(c)
+# output
+# 5
+
+a = 8
+print(a * a)
+# output
+# 64
+
+d = 8
+d = 4 * 5
+print(d)
+# output
+# 20
+
+b = 1
+a = 1 + b
+print(a)
+# output
+# 2
+
+c = 8
+print(c / 3)
+# output
+# 2.6666666666666665
+
+c = 0
+b = 1
+c = 4 - 0
+print(b + b)
+# output
+# 2
+
+e = 7
+b = 2
+print(e)
+# output
+# 7
+
+a = 9
+b = a * 0
+print(a / a)
+# output
+# 1.0
+
+d = 8
+a = 5
+print(d)
+# output
+# 8
+
+e = 4
+b = 0 + e
+print(e + 1)
+# output
+# 5
+
+e = 9
+a = 1
+c = 9 * a
+print(e + 9)
+# output
+# 18
+
+b = 3
+c = 1
+e = 6 - c
+print(e)
+# output
+# 5
+
+e = 3
+e = e / 1
+print(e)
+# output
+# 3.0
+
+e = 4
+e = 5
+print(e)
+# output
+# 5
+
+c = 9
+print(c)
+# output
+# 9
+
+a = 9
+print(a)
+# output
+# 9
+
+a = 3
+print(a)
+# output
+# 3
+
+a = 0
+d = a * 9
+print(d)
+# output
+# 0
+
+b = 8
+b = 2 / 5
+print(b / b)
+# output
+# 1.0
+
+b = 4
+b = 8
+d = b - 0
+print(d)
+# output
+# 8
+
+d = 4
+d = 4
+print(d)
+# output
+# 4
+
+b = 1
+print(b * 6)
+# output
+# 6
+
+c = 1
+e = c / c
+print(c + 5)
+# output
+# 6
+
+a = 5
+print(a)
+# output
+# 5
+
+a = 9
+c = 2
+a = c - 2
+print(a + a)
+# output
+# 0
+
+d = 3
+c = 7 / 2
+print(d - d)
+# output
+# 0
+
+b = 6
+b = 4
+b = b / b
+print(b - 4)
+# output
+# -3.0
+
+c = 6
+a = 0
+d = a - a
+print(c / 2)
+# output
+# 3.0
+
+a = 7
+c = a * a
+print(a / a)
+# output
+# 1.0
+
+d = 4
+d = 1
+a = 1 - d
+print(d / d)
+# output
+# 1.0
+
+d = 2
+e = d + 1
+print(e)
+# output
+# 3
+
+e = 1
+print(e + 3)
+# output
+# 4
+
+b = 6
+c = 4
+print(b / b)
+# output
+# 1.0
+
+b = 7
+d = 4
+print(b)
+# output
+# 7
+
+a = 5
+c = 8
+print(a)
+# output
+# 5
+
+b = 6
+b = 5
+b = b - b
+print(b / 3)
+# output
+# 0.0
+
+a = 3
+print(a + a)
+# output
+# 6
+
+b = 3
+print(b)
+# output
+# 3
+
+e = 3
+d = 8
+a = d / d
+print(d - e)
+# output
+# 5
+
+c = 3
+d = 5
+a = c - c
+print(c / d)
+# output
+# 0.6
+
+c = 4
+d = 5
+d = c / 1
+print(d + c)
+# output
+# 8.0
+
+e = 6
+print(e)
+# output
+# 6
+
+d = 6
+c = 3
+a = 9 + d
+print(a)
+# output
+# 15
+
+b = 1
+e = b * b
+print(e)
+# output
+# 1
+
+e = 6
+print(e - e)
+# output
+# 0
+
+e = 6
+print(e - 6)
+# output
+# 0
+
+d = 9
+c = 5
+e = c / 7
+print(e)
+# output
+# 0.7142857142857143
+
+e = 9
+c = 0
+print(e)
+# output
+# 9
+
+c = 8
+print(c * c)
+# output
+# 64
+
+e = 2
+c = 3
+print(c)
+# output
+# 3
+
+d = 1
+b = 8
+print(d * 1)
+# output
+# 1
+
+d = 0
+print(d)
+# output
+# 0
+
+e = 9
+print(e)
+# output
+# 9
+
+d = 7
+b = 3
+print(b)
+# output
+# 3
+
+d = 0
+c = 6
+e = 7 * c
+print(e)
+# output
+# 42
+
+c = 2
+print(c)
+# output
+# 2
+
+b = 7
+d = 1
+print(d - b)
+# output
+# -6
+
+e = 3
+d = e - 2
+print(e / e)
+# output
+# 1.0
+
+b = 2
+a = b / b
+print(a)
+# output
+# 1.0
+
+d = 8
+e = d + d
+print(e)
+# output
+# 16
+
+a = 3
+b = 2
+c = b * 7
+print(c)
+# output
+# 14
+
+b = 3
+print(b - b)
+# output
+# 0
+
+b = 6
+c = 1
+print(b)
+# output
+# 6
+
+a = 4
+e = 0 * 7
+print(a + 2)
+# output
+# 6
+
+b = 0
+b = 1
+a = 1 + b
+print(b - 7)
+# output
+# -6
+
+a = 7
+e = a + 9
+print(a * 9)
+# output
+# 63
+
+a = 9
+d = 9 + 5
+print(d)
+# output
+# 14
+
+d = 9
+b = 9
+a = b - d
+print(a)
+# output
+# 0
+
+e = 3
+print(e / 6)
+# output
+# 0.5
+
+c = 6
+print(c * 2)
+# output
+# 12
+
+b = 1
+e = 7
+e = b * 4
+print(e + e)
+# output
+# 8
+
+c = 5
+print(c - c)
+# output
+# 0
+
+d = 2
+d = 2 + d
+print(d)
+# output
+# 4
+
+e = 7
+b = 6
+print(b * 6)
+# output
+# 36
+
+b = 2
+print(b * 6)
+# output
+# 12
+
+e = 7
+d = e + e
+print(d)
+# output
+# 14
+
+c = 0
+print(c / 2)
+# output
+# 0.0
+
+b = 6
+a = 5
+e = b / 8
+print(e)
+# output
+# 0.75
+
+c = 1
+c = 9
+d = 0 - 5
+print(d)
+# output
+# -5
+
+a = 3
+c = 8
+d = 5 + 3
+print(d)
+# output
+# 8
+
+d = 2
+a = d + d
+print(a)
+# output
+# 4
+
+a = 9
+a = 2 + 7
+print(a)
+# output
+# 9
+
+d = 1
+print(d)
+# output
+# 1
+
+e = 7
+print(e / 6)
+# output
+# 1.1666666666666667
+
+c = 4
+d = 6
+e = d / d
+print(c / c)
+# output
+# 1.0
+
+c = 3
+print(c - 0)
+# output
+# 3
+
+b = 1
+e = 0
+b = 4 + e
+print(b / 3)
+# output
+# 1.3333333333333333
+
+e = 3
+e = e / e
+print(e / e)
+# output
+# 1.0
+
+c = 1
+a = 7
+print(a)
+# output
+# 7
+
+d = 3
+d = 8
+print(d)
+# output
+# 8
+
+e = 9
+d = 2 - e
+print(e - 1)
+# output
+# 8
+
+b = 5
+b = 5
+print(b + b)
+# output
+# 10
+
+b = 8
+print(b * 1)
+# output
+# 8
+
+c = 4
+print(c)
+# output
+# 4
+
+e = 9
+b = 1
+print(b)
+# output
+# 1
+
+c = 0
+c = c - c
+print(c)
+# output
+# 0
+
+a = 7
+d = 5
+b = 3 / 3
+print(b)
+# output
+# 1.0
+
+d = 5
+b = 2
+b = d * d
+print(b)
+# output
+# 25
+
+d = 8
+print(d - 5)
+# output
+# 3
+
+e = 3
+a = e * e
+print(e * 0)
+# output
+# 0
+
+e = 2
+print(e * e)
+# output
+# 4
+
+d = 2
+b = 4
+e = 8 + 3
+print(d / 5)
+# output
+# 0.4
+
+d = 7
+d = 9
+print(d + 5)
+# output
+# 14
+
+b = 9
+b = 1 / b
+print(b * 0)
+# output
+# 0.0
+
+b = 3
+d = 2
+d = 6 / 6
+print(d)
+# output
+# 1.0
+
+b = 0
+print(b + b)
+# output
+# 0
+
+e = 2
+c = 3
+e = 1 * 5
+print(e * c)
+# output
+# 15
+
+a = 1
+b = 4
+e = 2 + 7
+print(a * b)
+# output
+# 4
+
+a = 0
+e = 4 * a
+print(a / 1)
+# output
+# 0.0
+
+a = 9
+print(a - 6)
+# output
+# 3
+
+a = 2
+a = 1
+print(a)
+# output
+# 1
+
+a = 8
+d = 2
+a = d - 8
+print(a)
+# output
+# -6
+
+d = 1
+b = 2 / d
+print(b)
+# output
+# 2.0
+
+c = 7
+print(c)
+# output
+# 7
+
+e = 0
+e = 3
+print(e / 6)
+# output
+# 0.5
+
+c = 1
+b = 1 + 4
+print(b)
+# output
+# 5
+
+c = 9
+print(c / c)
+# output
+# 1.0
+
+d = 4
+c = 6
+print(d + c)
+# output
+# 10
+
+c = 4
+d = 3
+print(d + 6)
+# output
+# 9
+
+c = 0
+a = 1
+print(a)
+# output
+# 1
+
+d = 7
+c = 2 + 8
+print(d * 1)
+# output
+# 7
+
+a = 9
+print(a / a)
+# output
+# 1.0
+
+d = 1
+d = 0
+b = 2 * d
+print(b)
+# output
+# 0
+
+b = 2
+c = 7
+c = c + c
+print(c)
+# output
+# 14
+
+c = 5
+d = 3
+e = 2 + 6
+print(d / 8)
+# output
+# 0.375
+
+a = 6
+e = a - 9
+print(e)
+# output
+# -3
+
+e = 6
+b = 5
+a = 4 / b
+print(a)
+# output
+# 0.8
+
+d = 4
+b = 6
+a = 0 / d
+print(a)
+# output
+# 0.0
+
+c = 9
+e = 8
+b = 9 * e
+print(b)
+# output
+# 72
+
+d = 4
+d = d / d
+print(d / 3)
+# output
+# 0.3333333333333333
+
+c = 9
+e = 9
+print(c / c)
+# output
+# 1.0
+
+a = 9
+d = a + 1
+print(a * a)
+# output
+# 81
+
+b = 5
+a = 1
+b = a - a
+print(b)
+# output
+# 0
+
+d = 9
+print(d * 9)
+# output
+# 81
+
+d = 4
+d = 3
+e = d * d
+print(e)
+# output
+# 9
+
+d = 6
+e = 0
+print(d * d)
+# output
+# 36
+
+a = 4
+e = a / 2
+print(a + 1)
+# output
+# 5
+
+b = 8
+print(b * b)
+# output
+# 64
+
+d = 2
+a = 4
+c = d * 0
+print(c)
+# output
+# 0
+
+c = 3
+a = 8
+e = a + a
+print(a - a)
+# output
+# 0
+
+c = 3
+print(c / c)
+# output
+# 1.0
+
+e = 4
+d = 7
+d = e * 8
+print(e / 1)
+# output
+# 4.0
+
+d = 8
+print(d / d)
+# output
+# 1.0
+
+c = 3
+d = 7
+b = d / 8
+print(b)
+# output
+# 0.875
+
+b = 2
+e = b - 5
+print(e)
+# output
+# -3
+
+c = 8
+print(c - 2)
+# output
+# 6
+
+e = 7
+a = e + e
+print(a)
+# output
+# 14
+
+b = 3
+e = 6
+print(b)
+# output
+# 3
+
+b = 3
+a = 3
+print(a)
+# output
+# 3
+
+b = 8
+d = 9
+a = d + 5
+print(a)
+# output
+# 14
+
+a = 6
+b = 7
+d = a - 0
+print(d)
+# output
+# 6
+
+a = 5
+print(a / 5)
+# output
+# 1.0
+
+b = 7
+c = b * 6
+print(b * 9)
+# output
+# 63
+
+b = 0
+print(b)
+# output
+# 0
+
+a = 1
+print(a)
+# output
+# 1
+
+c = 6
+a = 5
+d = c + 1
+print(d)
+# output
+# 7
+
+d = 7
+a = 0
+print(a)
+# output
+# 0
+
+c = 9
+e = 4
+print(c - 5)
+# output
+# 4
+
+d = 7
+print(d)
+# output
+# 7
+
+e = 6
+a = 4 - e
+print(a)
+# output
+# -2
+
+b = 7
+b = 8
+print(b)
+# output
+# 8
+
+e = 3
+print(e)
+# output
+# 3
+
+c = 9
+c = c + 7
+print(c)
+# output
+# 16
+
+a = 1
+c = a + 9
+print(a * 4)
+# output
+# 4
+
+c = 0
+b = 8
+print(c)
+# output
+# 0
+
+d = 3
+d = 5
+print(d + d)
+# output
+# 10
+
+b = 4
+d = 4
+e = 3 / 9
+print(d + 6)
+# output
+# 10
+
+c = 0
+a = 4
+d = c / 4
+print(a / a)
+# output
+# 1.0
+
+c = 5
+e = 0
+print(c)
+# output
+# 5
+
+a = 6
+c = 8
+c = 6 + a
+print(c)
+# output
+# 12
+
+c = 0
+d = 8
+d = d - 9
+print(d)
+# output
+# -1
+
+b = 5
+e = 7 - 8
+print(e)
+# output
+# -1
+
+d = 7
+a = d * d
+print(a)
+# output
+# 49
+
+a = 4
+a = 4
+print(a)
+# output
+# 4
+
+d = 4
+print(d * 6)
+# output
+# 24
+
+b = 5
+b = 8
+c = b - b
+print(c)
+# output
+# 0
+
+d = 5
+c = 9 + d
+print(c)
+# output
+# 14
+
+e = 1
+print(e - e)
+# output
+# 0
+
+b = 9
+print(b / 6)
+# output
+# 1.5
+
+e = 5
+d = 0 * e
+print(e + e)
+# output
+# 10
+
+c = 1
+print(c)
+# output
+# 1
+
+e = 7
+print(e)
+# output
+# 7
+
+d = 6
+print(d + d)
+# output
+# 12
+
+b = 8
+a = 2
+c = b + 1
+print(b * a)
+# output
+# 16
+
+c = 8
+print(c / 1)
+# output
+# 8.0
+
+e = 8
+b = 6 / e
+print(e / 2)
+# output
+# 4.0
+
+a = 5
+b = 2
+print(b / a)
+# output
+# 0.4
+
+a = 1
+e = 7 - a
+print(e)
+# output
+# 6
+
+e = 3
+e = 4
+c = 6 - e
+print(e + 3)
+# output
+# 7
+
+b = 4
+e = b - 0
+print(b - 9)
+# output
+# -5
+
+a = 6
+d = 0
+d = d + 0
+print(d)
+# output
+# 0
+
+e = 5
+a = 0 - e
+print(a)
+# output
+# -5
+
+e = 6
+c = 3 / e
+print(c)
+# output
+# 0.5
+
+c = 8
+e = 8
+print(e * c)
+# output
+# 64
+
+e = 1
+print(e / e)
+# output
+# 1.0
+
+a = 0
+c = 3
+c = 2 + 5
+print(c)
+# output
+# 7
+
+d = 1
+d = d * 2
+print(d)
+# output
+# 2
+
+a = 3
+e = 9
+b = e - a
+print(b)
+# output
+# 6
+
+c = 5
+a = c + 9
+print(a)
+# output
+# 14
+
+e = 5
+c = 1
+print(c - e)
+# output
+# -4
+
+d = 7
+d = 9
+e = 3 * d
+print(d - 9)
+# output
+# 0
+
+d = 9
+c = 3
+e = d - 5
+print(d + c)
+# output
+# 12
+
+d = 1
+b = 2
+print(b)
+# output
+# 2
+
+e = 5
+print(e - e)
+# output
+# 0
+
+a = 2
+a = 4
+print(a)
+# output
+# 4
+
+b = 0
+c = 3
+print(b)
+# output
+# 0
+
+e = 6
+b = 1
+d = e / e
+print(d)
+# output
+# 1.0
+
+e = 4
+print(e)
+# output
+# 4
+
+e = 3
+b = 4
+a = e - 6
+print(a)
+# output
+# -3
+
+c = 2
+c = c * c
+print(c - 5)
+# output
+# -1
+
+e = 1
+print(e)
+# output
+# 1
+
+d = 6
+d = 3 / 7
+print(d * 7)
+# output
+# 3.0
+
+d = 5
+d = d - d
+print(d)
+# output
+# 0
+
+e = 8
+a = 3
+print(e / a)
+# output
+# 2.6666666666666665
+
+e = 9
+print(e + 9)
+# output
+# 18
+
+b = 8
+e = b + b
+print(e)
+# output
+# 16
+
+c = 5
+e = 8 + c
+print(e)
+# output
+# 13
+
+c = 3
+c = 0
+a = c + 6
+print(c + 8)
+# output
+# 8
+
+b = 5
+print(b + b)
+# output
+# 10
+
+d = 2
+a = 6
+e = 2 - 6
+print(e)
+# output
+# -4
+
+b = 8
+print(b)
+# output
+# 8
+
+e = 7
+a = 2
+d = e / 3
+print(d)
+# output
+# 2.3333333333333335
+
+a = 4
+e = 9
+print(e + a)
+# output
+# 13
+
+a = 7
+e = 0
+d = 5 * e
+print(a * a)
+# output
+# 49
+
+c = 6
+a = 0 / 5
+print(a)
+# output
+# 0.0
+
+e = 2
+c = 8 / e
+print(e * 9)
+# output
+# 18
+
+e = 1
+d = 0
+d = 4 - d
+print(d - 7)
+# output
+# -3
+
+a = 5
+a = 6
+c = 1 + 9
+print(a * 3)
+# output
+# 18
+
+b = 3
+b = 5
+d = b * 2
+print(d)
+# output
+# 10
+
+e = 1
+c = 3
+print(e - 3)
+# output
+# -2
+
+c = 6
+b = 6
+print(b)
+# output
+# 6
+
+d = 7
+c = 0 + 7
+print(c)
+# output
+# 7
+
+c = 2
+e = 6
+b = c * 6
+print(b)
+# output
+# 12
+
+a = 6
+e = a + a
+print(a + a)
+# output
+# 12
+
+e = 1
+b = 0
+print(b)
+# output
+# 0
+
+d = 8
+c = d - 6
+print(c)
+# output
+# 2
+
+e = 9
+a = 5
+print(e)
+# output
+# 9
+
+a = 2
+c = 3 * 5
+print(c)
+# output
+# 15
+
+d = 8
+print(d)
+# output
+# 8
+
+c = 4
+b = 5
+c = 0 / c
+print(c)
+# output
+# 0.0
+
+c = 8
+b = 3
+print(b)
+# output
+# 3
+
+e = 4
+e = 4 * e
+print(e / 8)
+# output
+# 2.0
+
+c = 3
+print(c)
+# output
+# 3
+
+a = 2
+a = 5
+d = a + a
+print(d)
+# output
+# 10
+
+a = 7
+b = 1
+a = a / 5
+print(a)
+# output
+# 1.4
+
+b = 7
+print(b / 4)
+# output
+# 1.75
+
+a = 5
+e = 1
+print(a)
+# output
+# 5
+
+c = 8
+b = c / 7
+print(c - c)
+# output
+# 0
+
+e = 0
+a = 3
+print(a)
+# output
+# 3
+
+e = 5
+e = e - e
+print(e - e)
+# output
+# 0
+
+a = 9
+e = 7
+print(e - e)
+# output
+# 0
+
+a = 3
+c = a / 3
+print(c)
+# output
+# 1.0
+
+d = 2
+a = 0
+e = 7 / 8
+print(d + a)
+# output
+# 2
+
+d = 0
+e = 8
+print(e * e)
+# output
+# 64
+
+d = 2
+a = 6
+print(d)
+# output
+# 2
+
+d = 3
+a = 2
+print(d - a)
+# output
+# 1
+
+e = 4
+a = 5 - e
+print(e - 7)
+# output
+# -3
+
+e = 7
+e = 9
+print(e)
+# output
+# 9
+
+e = 1
+print(e * e)
+# output
+# 1
+
+e = 5
+d = 2 - e
+print(d)
+# output
+# -3
+
+b = 1
+print(b * 9)
+# output
+# 9
+
+e = 0
+c = 6
+print(e)
+# output
+# 0
+
+c = 5
+print(c / c)
+# output
+# 1.0
+
+e = 4
+c = 2
+e = e - 0
+print(c * c)
+# output
+# 4
+
+e = 6
+d = 9
+print(d)
+# output
+# 9
+
+a = 0
+b = a + a
+print(b)
+# output
+# 0
+
+c = 8
+b = 5
+print(c - 8)
+# output
+# 0
+
+e = 8
+b = e / 6
+print(b)
+# output
+# 1.3333333333333333
+
+d = 0
+b = 4
+print(b)
+# output
+# 4
+
+c = 4
+d = 9
+b = 6 + 9
+print(b)
+# output
+# 15
+
+e = 9
+print(e / 1)
+# output
+# 9.0
+
+d = 1
+c = 0
+d = d / 7
+print(d * 2)
+# output
+# 0.2857142857142857
+
+a = 9
+b = 0
+d = a + a
+print(d)
+# output
+# 18
+
+a = 4
+a = 5
+a = a * 7
+print(a / a)
+# output
+# 1.0
+
+a = 3
+c = 6
+d = c / 7
+print(c - 1)
+# output
+# 5
+
+d = 2
+d = d - d
+print(d)
+# output
+# 0
+
+c = 7
+b = 9 / c
+print(b)
+# output
+# 1.2857142857142858
+
+c = 4
+e = 4
+print(c * c)
+# output
+# 16
+
+e = 8
+a = 0
+c = a + a
+print(a * 7)
+# output
+# 0
+
+a = 9
+d = 9
+b = a + 4
+print(a + 0)
+# output
+# 9
+
+c = 4
+e = 3
+print(c * e)
+# output
+# 12
+
+d = 8
+print(d + 9)
+# output
+# 17
+
+d = 6
+d = 6
+d = d + d
+print(d)
+# output
+# 12
+
+a = 0
+print(a - 9)
+# output
+# -9
+
+a = 6
+c = 7
+b = c + c
+print(a - c)
+# output
+# -1
+
+d = 4
+a = 8
+print(a * a)
+# output
+# 64
+
+e = 4
+b = 3
+print(b)
+# output
+# 3
+
+e = 9
+d = 6 / 4
+print(e / 1)
+# output
+# 9.0
+
+a = 4
+print(a / a)
+# output
+# 1.0
+
+a = 8
+c = 2 / 7
+print(a * a)
+# output
+# 64
+
+d = 9
+b = 2
+c = 3 / d
+print(b - b)
+# output
+# 0
+
+d = 6
+b = d / d
+print(b)
+# output
+# 1.0
+
+c = 3
+b = 0
+d = c + b
+print(d)
+# output
+# 3
+
+c = 6
+e = 2
+d = 6 + 1
+print(c * 1)
+# output
+# 6
+
+c = 4
+a = 4
+print(a)
+# output
+# 4
+
+e = 9
+print(e / 3)
+# output
+# 3.0
+
+c = 6
+c = 2
+print(c + c)
+# output
+# 4
+
+c = 7
+print(c - c)
+# output
+# 0
+
+b = 2
+c = 1
+print(b + 2)
+# output
+# 4
+
+c = 0
+d = c + 6
+print(c * c)
+# output
+# 0
+
+b = 9
+c = 4 + 6
+print(c)
+# output
+# 10
+
+a = 6
+print(a)
+# output
+# 6
+
+a = 6
+print(a - 3)
+# output
+# 3
+
+e = 3
+a = 9
+a = 8 - a
+print(a)
+# output
+# -1
+
+a = 1
+b = 3
+print(a)
+# output
+# 1
+
+b = 2
+a = 8
+d = b / 6
+print(a / 5)
+# output
+# 1.6
+
+a = 6
+b = 0
+a = 3 - 3
+print(b / 9)
+# output
+# 0.0
+
+e = 8
+a = 1
+d = 1 - 9
+print(e * e)
+# output
+# 64
+
+c = 6
+e = 9
+d = 4 * c
+print(c - 8)
+# output
+# -2
+
+d = 1
+b = 6
+print(d)
+# output
+# 1
+
+d = 0
+c = 7
+print(d - d)
+# output
+# 0
+
+b = 6
+a = 4 / 9
+print(b - b)
+# output
+# 0
+
+d = 5
+d = 9
+e = 0 - d
+print(d * d)
+# output
+# 81
+
+a = 4
+print(a * a)
+# output
+# 16
+
+b = 5
+b = 0 - 7
+print(b)
+# output
+# -7
+
+d = 5
+c = 8
+b = c + c
+print(c + 6)
+# output
+# 14
+
+e = 4
+d = 1
+print(e)
+# output
+# 4
+
+a = 3
+c = a / a
+print(c)
+# output
+# 1.0
+
+e = 2
+print(e)
+# output
+# 2
+
+b = 8
+b = 8
+print(b)
+# output
+# 8
+
+e = 1
+b = 7
+print(b - 0)
+# output
+# 7
+
+d = 9
+c = 7 - d
+print(d - d)
+# output
+# 0
+
+b = 8
+d = 3
+print(d / d)
+# output
+# 1.0
+
+b = 2
+print(b + 3)
+# output
+# 5
+
+b = 9
+a = 2
+b = a - 9
+print(a - 4)
+# output
+# -2
+
+c = 7
+print(c / c)
+# output
+# 1.0
+
+c = 8
+print(c)
+# output
+# 8
+
+b = 8
+b = b / 8
+print(b)
+# output
+# 1.0
+
+a = 0
+c = 8
+print(c)
+# output
+# 8
+
+d = 9
+b = 6
+a = 6 + 5
+print(a)
+# output
+# 11
+
+e = 6
+a = 8 - e
+print(e + 3)
+# output
+# 9
+
+c = 6
+a = 4
+print(a)
+# output
+# 4
+
+e = 1
+c = e + 5
+print(e + 7)
+# output
+# 8
+
+d = 8
+b = 7
+print(b)
+# output
+# 7
+
+a = 1
+print(a * 0)
+# output
+# 0
+
+b = 4
+print(b * b)
+# output
+# 16
+
+e = 9
+a = 9
+print(a * e)
+# output
+# 81
+
+e = 8
+a = 6 / e
+print(e * e)
+# output
+# 64
+
+b = 7
+d = b - 4
+print(b + 8)
+# output
+# 15
+
+d = 4
+e = 3
+b = 0 + 8
+print(b)
+# output
+# 8
+
+a = 2
+a = 8
+e = a + a
+print(a - a)
+# output
+# 0
+
+d = 9
+print(d - 9)
+# output
+# 0
+
+e = 8
+e = 0
+print(e + e)
+# output
+# 0
+
+b = 9
+b = 9
+print(b / 9)
+# output
+# 1.0
+
+d = 4
+e = 3
+a = 9 - 9
+print(d * 4)
+# output
+# 16
+
+c = 9
+d = 5
+print(d)
+# output
+# 5
+
+b = 6
+b = 3
+print(b)
+# output
+# 3
+
+d = 2
+e = d - d
+print(d - d)
+# output
+# 0
+
+c = 7
+e = 5
+d = 1 + c
+print(c - 7)
+# output
+# 0
+
+d = 0
+a = 9
+print(a * 7)
+# output
+# 63
+
+d = 2
+print(d + d)
+# output
+# 4
+
+e = 1
+a = 3
+e = e / a
+print(e)
+# output
+# 0.3333333333333333
+
+b = 2
+b = 3
+print(b * 7)
+# output
+# 21
+
+d = 0
+a = 1
+print(a)
+# output
+# 1
+
+a = 2
+e = 9
+c = 7 * a
+print(a * e)
+# output
+# 18
+
+c = 1
+e = 9
+d = 6 * 8
+print(e - e)
+# output
+# 0
+
+a = 7
+b = a / a
+print(a * a)
+# output
+# 49
+
+e = 1
+a = 6
+print(a / 6)
+# output
+# 1.0
+
+d = 3
+b = 4
+print(b)
+# output
+# 4
+
+e = 3
+b = e * 6
+print(e / e)
+# output
+# 1.0
+
+c = 4
+print(c + 3)
+# output
+# 7
+
+e = 5
+print(e)
+# output
+# 5
+
+d = 5
+d = d * d
+print(d)
+# output
+# 25
+
+d = 4
+a = 1
+print(d)
+# output
+# 4
+
+d = 7
+e = 5
+e = e + d
+print(e)
+# output
+# 12
+
+d = 5
+print(d - d)
+# output
+# 0
+
+d = 2
+print(d + 9)
+# output
+# 11
+
+b = 6
+a = 2
+d = 9 - b
+print(b - 0)
+# output
+# 6
+
+d = 6
+b = d / 4
+print(d - 3)
+# output
+# 3
+
+c = 7
+a = c - c
+print(a)
+# output
+# 0
+
+b = 0
+d = 0
+print(d)
+# output
+# 0
+
+d = 5
+c = d * d
+print(d / d)
+# output
+# 1.0
+
+c = 8
+b = 7
+c = c + c
+print(c - c)
+# output
+# 0
+
+a = 2
+d = 1
+print(d)
+# output
+# 1
+
+d = 4
+c = 0 + 1
+print(c)
+# output
+# 1
+
+b = 1
+c = b + 3
+print(c)
+# output
+# 4
+
+a = 1
+print(a / 2)
+# output
+# 0.5
+
+b = 6
+c = 5
+print(b / b)
+# output
+# 1.0
+
+a = 8
+a = 8
+print(a)
+# output
+# 8
+
+d = 4
+c = d - d
+print(c)
+# output
+# 0
+
+c = 6
+b = 2
+c = b - 4
+print(b + c)
+# output
+# 0
+
+b = 2
+e = 2
+print(e)
+# output
+# 2
+
+e = 5
+print(e + e)
+# output
+# 10
+
+e = 2
+a = 6
+print(e)
+# output
+# 2
+
+a = 8
+a = a / 8
+print(a * a)
+# output
+# 1.0
+
+d = 7
+print(d * d)
+# output
+# 49
+
+d = 9
+b = 5
+print(d)
+# output
+# 9
+
+c = 3
+e = 7
+print(c)
+# output
+# 3
+
+b = 3
+d = b * b
+print(d)
+# output
+# 9
+
+b = 9
+c = 6
+a = c * 6
+print(c / 6)
+# output
+# 1.0
+
+a = 2
+c = 1
+b = 7 * c
+print(b)
+# output
+# 7
+
+b = 6
+a = 5
+d = b + 9
+print(d)
+# output
+# 15
+
+d = 2
+e = 2
+print(e)
+# output
+# 2
+
+e = 3
+c = e + 2
+print(e + e)
+# output
+# 6
+
+e = 8
+d = e - 9
+print(d)
+# output
+# -1
+
+b = 8
+d = 6
+print(b / d)
+# output
+# 1.3333333333333333
+
+a = 7
+e = 1
+print(a + 3)
+# output
+# 10
+
+c = 9
+c = 9
+print(c - 4)
+# output
+# 5
+
+d = 0
+d = d + 7
+print(d)
+# output
+# 7
+
+a = 1
+e = 6 + a
+print(a * 4)
+# output
+# 4
+
+d = 5
+b = 7
+print(d)
+# output
+# 5
+
+c = 9
+d = c / 3
+print(d)
+# output
+# 3.0
+
+c = 6
+d = 1
+print(d)
+# output
+# 1
+
+c = 7
+e = 3
+e = 0 + 0
+print(e)
+# output
+# 0
+
+a = 5
+a = 9
+print(a)
+# output
+# 9
+
+b = 3
+d = 8
+a = d - 6
+print(a)
+# output
+# 2
+
+b = 1
+d = 5 * b
+print(d)
+# output
+# 5
+
+e = 8
+a = 9
+print(e)
+# output
+# 8
+
+c = 1
+b = 9 + 5
+print(c / 4)
+# output
+# 0.25
+
+b = 0
+a = 0 / 5
+print(a)
+# output
+# 0.0
+
+a = 9
+d = a * a
+print(d)
+# output
+# 81
+
+d = 2
+print(d / 6)
+# output
+# 0.3333333333333333
+
+e = 0
+b = 8
+c = b * b
+print(c)
+# output
+# 64
+
+a = 8
+b = 6 / a
+print(b)
+# output
+# 0.75
+
+e = 9
+e = e * 2
+print(e)
+# output
+# 18
+
+a = 1
+d = 3
+print(a * 2)
+# output
+# 2
+
+c = 0
+c = 1 * c
+print(c - c)
+# output
+# 0
+
+a = 3
+b = 7
+d = a + a
+print(d)
+# output
+# 6
+
+a = 7
+b = 8
+e = 9 - 5
+print(a * a)
+# output
+# 49
+
+c = 5
+c = 8
+print(c / 5)
+# output
+# 1.6
+
+b = 6
+e = b + b
+print(b + 1)
+# output
+# 7
+
+e = 6
+c = e + e
+print(e + e)
+# output
+# 12
+
+b = 4
+b = 3 - b
+print(b)
+# output
+# -1
+
+d = 4
+e = 5
+a = 6 * e
+print(e / e)
+# output
+# 1.0
+
+b = 9
+print(b * 1)
+# output
+# 9
+
+e = 2
+b = 7
+print(e)
+# output
+# 2
+
+c = 7
+c = c + 2
+print(c - 1)
+# output
+# 8
+
+e = 9
+e = 3
+b = e / 8
+print(e + e)
+# output
+# 6
+
+c = 3
+e = 4
+print(e)
+# output
+# 4
+
+b = 1
+print(b)
+# output
+# 1
+
+a = 6
+b = 0
+e = 5 / a
+print(b * b)
+# output
+# 0
+
+e = 9
+d = 6
+print(e)
+# output
+# 9
+
+c = 0
+a = 7
+print(a * a)
+# output
+# 49
+
+d = 5
+a = 6
+a = d / 7
+print(a)
+# output
+# 0.7142857142857143
+
+a = 2
+c = a - 6
+print(a / a)
+# output
+# 1.0
+
+b = 4
+print(b)
+# output
+# 4
+
+b = 3
+a = 5
+print(a + a)
+# output
+# 10
+
+c = 5
+b = c * c
+print(b)
+# output
+# 25
+
+d = 4
+d = 7 * 4
+print(d * d)
+# output
+# 784
+
+b = 6
+e = 1
+e = 5 / 1
+print(e - 2)
+# output
+# 3.0
+
+e = 6
+b = 9
+print(e)
+# output
+# 6
+
+d = 7
+d = 8
+e = 7 * 5
+print(e)
+# output
+# 35
+
+d = 3
+print(d)
+# output
+# 3
+
+e = 2
+d = 9
+a = e - 2
+print(a)
+# output
+# 0
+
+a = 0
+a = 0
+print(a)
+# output
+# 0
+
+e = 5
+b = 6
+print(e)
+# output
+# 5
+
+b = 6
+print(b)
+# output
+# 6
+
+b = 8
+d = 3
+a = 4 - 9
+print(d + b)
+# output
+# 11
+
+a = 9
+d = a / a
+print(a + 6)
+# output
+# 15
+
+a = 7
+e = 6
+print(a + a)
+# output
+# 14
+
+d = 3
+d = 6
+print(d + d)
+# output
+# 12
+
+d = 6
+a = 6
+print(a)
+# output
+# 6
+
+e = 4
+b = e * e
+print(e * 7)
+# output
+# 28
+
+d = 8
+e = 4
+print(e + d)
+# output
+# 12
+
+d = 2
+print(d)
+# output
+# 2
+
+b = 3
+print(b - 6)
+# output
+# -3
+
+d = 3
+b = 5
+print(d)
+# output
+# 3
+
+a = 9
+b = 7
+print(b - b)
+# output
+# 0
+
+c = 3
+a = 3
+print(c / 7)
+# output
+# 0.42857142857142855
+
+b = 9
+print(b)
+# output
+# 9
+
+a = 7
+c = 1
+a = a / 1
+print(a * c)
+# output
+# 7.0
+
+b = 9
+c = b - 8
+print(c)
+# output
+# 1
+
+b = 1
+print(b - 9)
+# output
+# -8
+
+a = 0
+c = 8
+print(a)
+# output
+# 0
+
+a = 2
+e = a + a
+print(a * 5)
+# output
+# 10
+
+b = 9
+d = b - b
+print(b - b)
+# output
+# 0
+
+d = 0
+a = 4
+print(a)
+# output
+# 4
+
+c = 6
+d = 0
+a = 9 - 0
+print(a)
+# output
+# 9
+
+c = 9
+b = 8 / c
+print(b)
+# output
+# 0.8888888888888888
+
+c = 0
+d = 2
+b = 0 / d
+print(b)
+# output
+# 0.0
+
+a = 9
+a = a - 6
+print(a - a)
+# output
+# 0
+
+d = 2
+e = 4
+a = d / 2
+print(e / 2)
+# output
+# 2.0
+
+e = 0
+a = 2
+c = e + e
+print(c)
+# output
+# 0
+
+a = 0
+d = 8
+b = a * 5
+print(b)
+# output
+# 0
+
+c = 9
+a = 4
+a = 8 - 5
+print(a + 8)
+# output
+# 11
+
+c = 3
+d = 9
+print(c * 3)
+# output
+# 9
+
+a = 6
+d = 8
+print(a)
+# output
+# 6
+
+e = 5
+c = 4
+c = c - e
+print(e / c)
+# output
+# -5.0
+
+e = 2
+c = 7
+d = 7 + 4
+print(d)
+# output
+# 11
+
+a = 3
+e = 4 * 7
+print(a - a)
+# output
+# 0
+
+a = 2
+e = 0 / 8
+print(a * a)
+# output
+# 4
+
+e = 0
+d = 6
+a = 0 + 0
+print(e * d)
+# output
+# 0
+
+b = 6
+e = 5
+print(b)
+# output
+# 6
+
+d = 0
+a = 1 * d
+print(d + 6)
+# output
+# 6
+
+b = 7
+d = 8 * 6
+print(b - 5)
+# output
+# 2
+
+d = 3
+b = 2
+a = d * b
+print(d / 6)
+# output
+# 0.5
+
+d = 9
+d = 8 * d
+print(d * d)
+# output
+# 5184
+
+b = 9
+c = 6 / b
+print(b * 2)
+# output
+# 18
+
+d = 8
+a = d + d
+print(d - 3)
+# output
+# 5
+
+a = 0
+b = 7
+print(b)
+# output
+# 7
+
+e = 7
+c = 4
+print(e)
+# output
+# 7
+
+e = 8
+e = 4
+d = 5 * 3
+print(d)
+# output
+# 15
+
+d = 9
+a = 2
+b = 7 - d
+print(a / d)
+# output
+# 0.2222222222222222
+
+b = 7
+a = 2
+print(a)
+# output
+# 2
+
+c = 7
+c = 4
+d = 6 * c
+print(c / c)
+# output
+# 1.0
+
+a = 1
+print(a * a)
+# output
+# 1
+
+e = 8
+d = 6
+print(e + d)
+# output
+# 14
+
+c = 4
+print(c * 8)
+# output
+# 32
+
+d = 6
+a = 1 + d
+print(a)
+# output
+# 7
+
+d = 3
+a = 4
+a = d * d
+print(a * 4)
+# output
+# 36
+
+b = 8
+a = 4
+d = 5 - b
+print(b * 3)
+# output
+# 24
+
+c = 5
+d = 2
+print(d + 4)
+# output
+# 6
+
+e = 2
+print(e - 3)
+# output
+# -1
+
+d = 4
+print(d - d)
+# output
+# 0
+
+d = 9
+c = 7
+print(c - 2)
+# output
+# 5
+
+b = 9
+c = 6
+a = c + c
+print(c * 5)
+# output
+# 30
+
+d = 7
+e = 7
+a = 3 - d
+print(a)
+# output
+# -4
+
+e = 4
+c = 5
+print(c * e)
+# output
+# 20
+
+a = 6
+print(a - 9)
+# output
+# -3
+
+d = 6
+b = 2
+print(d)
+# output
+# 6
+
+d = 7
+c = 9
+a = 0 + 9
+print(c * 4)
+# output
+# 36
+
+d = 1
+b = 1
+a = 2 / b
+print(d + 9)
+# output
+# 10
+
+b = 4
+e = 8 - b
+print(e)
+# output
+# 4
+
+a = 3
+d = 4
+print(a)
+# output
+# 3
+
+a = 3
+c = a * a
+print(c)
+# output
+# 9
+
+a = 8
+c = 4
+b = c / a
+print(b)
+# output
+# 0.5
+
+d = 6
+a = 5
+a = 2 + a
+print(d - a)
+# output
+# -1
+
+b = 6
+a = 5
+print(a)
+# output
+# 5
+
+d = 6
+print(d)
+# output
+# 6
+
+b = 2
+c = 3
+print(b / b)
+# output
+# 1.0
+
+c = 5
+print(c * c)
+# output
+# 25
+
+c = 5
+a = 9 / c
+print(a)
+# output
+# 1.8
+
+d = 8
+d = 0
+c = 7 - 1
+print(c)
+# output
+# 6
+
+e = 7
+c = e + e
+print(c)
+# output
+# 14
+
+b = 9
+b = 9
+print(b - 5)
+# output
+# 4
+
+a = 9
+b = 7
+print(b / 5)
+# output
+# 1.4
+
+d = 8
+print(d - d)
+# output
+# 0
+
+b = 2
+b = 6
+print(b - 6)
+# output
+# 0
+
+c = 8
+b = 6
+print(c)
+# output
+# 8
+
+a = 5
+d = 7
+print(d)
+# output
+# 7
+
+c = 9
+a = c * 1
+print(c / 1)
+# output
+# 9.0
+
+e = 3
+b = 5
+print(b * 9)
+# output
+# 45
+
+c = 5
+e = 3
+d = 8 * 3
+print(d)
+# output
+# 24
+
+c = 4
+e = 1
+e = 4 / e
+print(e)
+# output
+# 4.0
+
+a = 3
+d = a - a
+print(d)
+# output
+# 0
+
+d = 9
+a = 5
+print(a)
+# output
+# 5
+
+e = 1
+c = e / 7
+print(e - e)
+# output
+# 0
+
+d = 6
+a = 6
+print(a / a)
+# output
+# 1.0
+
+a = 0
+b = 4
+b = a / 2
+print(b)
+# output
+# 0.0
+
+a = 4
+b = a / a
+print(b)
+# output
+# 1.0
+
+a = 2
+d = 1
+b = a / d
+print(b)
+# output
+# 2.0
+
+e = 1
+b = 8
+print(b)
+# output
+# 8
+
+a = 8
+d = a - 7
+print(d)
+# output
+# 1
+
+d = 7
+b = 2
+print(b)
+# output
+# 2
+
+d = 9
+print(d / d)
+# output
+# 1.0
+
+b = 6
+d = 6
+c = 5 - 4
+print(c)
+# output
+# 1
+
+a = 7
+b = 0
+e = 7 - a
+print(b / 7)
+# output
+# 0.0
+
+b = 3
+c = 2 / b
+print(b * 8)
+# output
+# 24
+
+d = 3
+d = 7
+print(d)
+# output
+# 7
+
+a = 0
+print(a + a)
+# output
+# 0
+
+e = 3
+d = 5
+print(e - 1)
+# output
+# 2
+
+b = 3
+d = 5
+d = b - 7
+print(b - b)
+# output
+# 0
+
+d = 0
+e = 3
+print(e)
+# output
+# 3
+
+b = 3
+e = 1
+e = 9 + e
+print(e)
+# output
+# 10
+
+c = 7
+a = 9
+print(a - 2)
+# output
+# 7
+
+c = 1
+b = 8
+a = 7 / 1
+print(a)
+# output
+# 7.0
+
+a = 4
+b = 4
+print(b * b)
+# output
+# 16
+
+d = 6
+d = 8
+e = d - 9
+print(d / 4)
+# output
+# 2.0
+
+c = 3
+a = 0
+print(c - 4)
+# output
+# -1
+
+b = 0
+e = 2 / 1
+print(b - 2)
+# output
+# -2
+
+e = 9
+b = 8
+a = 8 + 3
+print(b * 4)
+# output
+# 32
+
+b = 4
+a = 1
+a = 2 / b
+print(a)
+# output
+# 0.5
+
+b = 9
+c = 4
+print(b)
+# output
+# 9
+
+c = 8
+d = c + 1
+print(d)
+# output
+# 9
+
+b = 6
+b = 5
+print(b)
+# output
+# 5
+
+e = 0
+e = e + e
+print(e)
+# output
+# 0
+
+d = 3
+c = 0
+a = c * 5
+print(c / 5)
+# output
+# 0.0
+
+d = 8
+b = 2 + d
+print(b)
+# output
+# 10
+
+d = 8
+a = 7
+print(d)
+# output
+# 8
+
+a = 2
+print(a + a)
+# output
+# 4
+
+e = 6
+print(e * 4)
+# output
+# 24
+
+d = 8
+e = 2
+print(d + 2)
+# output
+# 10
+
+d = 1
+a = 3
+d = 7 - a
+print(d / d)
+# output
+# 1.0
+
+e = 9
+d = 5
+d = e * d
+print(e / d)
+# output
+# 0.2
+
+c = 3
+e = 7
+print(c * c)
+# output
+# 9
+
+d = 8
+b = d * d
+print(d * d)
+# output
+# 64
+
+e = 4
+b = 8
+e = e - 6
+print(b / 6)
+# output
+# 1.3333333333333333
+
+a = 9
+a = 5
+e = a / 7
+print(e)
+# output
+# 0.7142857142857143
+
+d = 2
+c = 5
+print(d * d)
+# output
+# 4
+
+d = 1
+a = 7 - 4
+print(a)
+# output
+# 3
+
+a = 1
+d = a / 4
+print(d)
+# output
+# 0.25
+
+d = 9
+b = 1
+d = d / 9
+print(b * b)
+# output
+# 1
+
+a = 8
+print(a + a)
+# output
+# 16
+
+a = 5
+e = 8
+b = a / a
+print(e - e)
+# output
+# 0
+
+d = 2
+d = 6 * d
+print(d)
+# output
+# 12
+
+d = 2
+b = 5
+print(b)
+# output
+# 5
+
+b = 9
+c = 6
+print(c)
+# output
+# 6
+
+e = 3
+c = 0
+print(c)
+# output
+# 0
+
+d = 4
+b = 8 * d
+print(d * d)
+# output
+# 16
+
+b = 7
+e = b - b
+print(b - 5)
+# output
+# 2
+
+e = 8
+e = 4
+print(e)
+# output
+# 4
+
+a = 8
+a = 4 - a
+print(a)
+# output
+# -4
+
+a = 9
+d = 1
+d = 5 + 5
+print(a / 9)
+# output
+# 1.0
+
+d = 5
+b = 6
+print(d)
+# output
+# 5
+
+c = 8
+e = 7
+print(e * 3)
+# output
+# 21
+
+e = 4
+a = e + 9
+print(a)
+# output
+# 13
+
+e = 7
+a = 2
+d = 5 * 7
+print(a * 7)
+# output
+# 14
+
+e = 1
+d = 5
+c = d * d
+print(d / 2)
+# output
+# 2.5
+
+c = 6
+a = 6
+print(a)
+# output
+# 6
+
+b = 4
+print(b + b)
+# output
+# 8
+
+b = 8
+a = 2 + b
+print(a)
+# output
+# 10
+
+b = 3
+c = 7
+print(c / 3)
+# output
+# 2.3333333333333335
+
+c = 3
+a = c - 9
+print(a)
+# output
+# -6
+
+b = 5
+d = 8
+print(b - 0)
+# output
+# 5
+
+e = 3
+a = 4
+print(e)
+# output
+# 3
+
+c = 6
+b = 0
+c = 0 * 4
+print(c)
+# output
+# 0
+
+a = 9
+c = 7 / 9
+print(c)
+# output
+# 0.7777777777777778
+
+b = 7
+d = 4
+print(d)
+# output
+# 4
+
+c = 1
+b = 1
+print(c)
+# output
+# 1
+
+a = 1
+a = a + a
+print(a + a)
+# output
+# 4
+
+b = 1
+c = 3
+print(c)
+# output
+# 3
+
+b = 5
+e = 8
+b = e / e
+print(b * 0)
+# output
+# 0.0
+
+b = 1
+b = 9
+print(b)
+# output
+# 9
+
+e = 0
+b = 2
+print(b * b)
+# output
+# 4
+
+b = 7
+d = 6
+a = 0 / d
+print(b - 3)
+# output
+# 4
+
+b = 5
+d = b - b
+print(d)
+# output
+# 0
+
+c = 6
+print(c / c)
+# output
+# 1.0
+
+c = 3
+e = 0
+d = e + e
+print(d)
+# output
+# 0
+
+c = 4
+d = 4
+e = c - c
+print(e)
+# output
+# 0
+
+d = 6
+d = 2
+c = d - 0
+print(c)
+# output
+# 2
+
+a = 9
+b = a + a
+print(a / a)
+# output
+# 1.0
+
+e = 7
+b = 7
+c = 7 - e
+print(b + 2)
+# output
+# 9
+
+e = 7
+print(e + e)
+# output
+# 14
+
+d = 9
+print(d * d)
+# output
+# 81
+
+a = 7
+print(a / 2)
+# output
+# 3.5
+
+b = 4
+b = 4
+b = b / 8
+print(b + 3)
+# output
+# 3.5
+
+b = 0
+d = 9 * 1
+print(d)
+# output
+# 9
+
+b = 3
+e = 8
+print(e)
+# output
+# 8
+
+d = 3
+print(d * 7)
+# output
+# 21
+
+b = 0
+e = 1
+print(b)
+# output
+# 0
+
+a = 6
+e = 7
+b = e + a
+print(a / 2)
+# output
+# 3.0
+
+d = 1
+b = 3
+b = b / 8
+print(b / d)
+# output
+# 0.375
+
+a = 7
+c = a / a
+print(c)
+# output
+# 1.0
+
+d = 6
+c = d - d
+print(c)
+# output
+# 0
+
+a = 7
+print(a)
+# output
+# 7
+
+e = 7
+a = 7
+a = 7 - e
+print(a * 0)
+# output
+# 0
+
+a = 4
+print(a)
+# output
+# 4
+
+c = 4
+d = 3
+print(c)
+# output
+# 4
+
+d = 2
+b = 4
+c = d * 9
+print(c)
+# output
+# 18
+
+c = 6
+a = 4
+print(c)
+# output
+# 6
+
+d = 8
+b = 0 * d
+print(d - 7)
+# output
+# 1
+
+d = 6
+e = 2
+c = 2 - d
+print(c)
+# output
+# -4
+
+c = 1
+c = c * 8
+print(c)
+# output
+# 8
+
+b = 6
+c = 4
+e = c + c
+print(e)
+# output
+# 8
+
+b = 1
+c = 1
+d = c / 5
+print(b - 0)
+# output
+# 1
+
+b = 4
+b = 9
+b = b + 4
+print(b)
+# output
+# 13
+
+c = 9
+print(c * c)
+# output
+# 81
+
+b = 1
+a = b + b
+print(b / b)
+# output
+# 1.0
+
+b = 5
+a = 1
+print(b)
+# output
+# 5
+
+c = 4
+a = 7
+a = c + a
+print(a + 5)
+# output
+# 16
+
+b = 1
+c = 5
+print(c)
+# output
+# 5
+
+a = 5
+a = 2
+print(a * a)
+# output
+# 4
+
+c = 1
+e = 6
+print(e / 7)
+# output
+# 0.8571428571428571
+
+b = 0
+d = 1
+print(d)
+# output
+# 1
+
+a = 3
+b = 7 - a
+print(b)
+# output
+# 4
+
+e = 9
+print(e / e)
+# output
+# 1.0
+
+e = 2
+b = 3
+e = 1 - e
+print(b + 6)
+# output
+# 9
+
+d = 2
+a = 3
+e = 1 + a
+print(e)
+# output
+# 4
+
+a = 2
+e = 0
+a = a * a
+print(a)
+# output
+# 4
+
+a = 0
+c = 5
+print(c * 0)
+# output
+# 0
+
+e = 1
+a = 7
+print(a * 3)
+# output
+# 21
+
+c = 8
+a = 4
+b = c / c
+print(c + a)
+# output
+# 12
+
+e = 4
+c = 9
+e = 8 - e
+print(e / 3)
+# output
+# 1.3333333333333333
+
+c = 3
+a = 7
+b = 3 * 9
+print(a + 6)
+# output
+# 13
+
+e = 5
+print(e / e)
+# output
+# 1.0
+
+a = 2
+print(a / 4)
+# output
+# 0.5
+
+a = 4
+a = 4
+a = 7 / a
+print(a)
+# output
+# 1.75
+
+c = 2
+print(c - c)
+# output
+# 0
+
+a = 2
+print(a)
+# output
+# 2
+
+e = 5
+a = 5
+a = e / 4
+print(a)
+# output
+# 1.25
+
+c = 9
+a = 3
+print(a * 4)
+# output
+# 12
+
+a = 8
+b = 5
+print(b / 2)
+# output
+# 2.5
+
+e = 7
+b = 0
+c = b - b
+print(e * 4)
+# output
+# 28
+
+b = 0
+d = 7
+e = b + b
+print(d + b)
+# output
+# 7
+
+e = 0
+print(e)
+# output
+# 0
+
+a = 1
+print(a + a)
+# output
+# 2
+
+c = 6
+d = 8
+print(d / 4)
+# output
+# 2.0
+
+a = 6
+e = a / 7
+print(a + 4)
+# output
+# 10
+
+e = 6
+c = 4
+print(e / 9)
+# output
+# 0.6666666666666666
+
+d = 3
+b = 6 + 3
+print(b)
+# output
+# 9
+
+e = 4
+b = 6 + e
+print(b)
+# output
+# 10
+
+a = 8
+e = 2
+print(a)
+# output
+# 8
+
+b = 9
+a = 3
+d = b / 7
+print(d)
+# output
+# 1.2857142857142858
+
+b = 3
+e = 6
+print(b / 3)
+# output
+# 1.0
+
+c = 3
+a = 5
+a = 4 * 3
+print(a)
+# output
+# 12
+
+a = 5
+c = a / a
+print(a + a)
+# output
+# 10
+
+b = 8
+a = 9
+e = 5 / 2
+print(b * a)
+# output
+# 72
+
+e = 6
+b = 3
+e = e - 6
+print(e)
+# output
+# 0
+
+c = 7
+a = 3
+a = 2 / c
+print(a)
+# output
+# 0.2857142857142857
+
+a = 2
+d = 8 * 2
+print(a * a)
+# output
+# 4
+
+a = 8
+c = 3
+e = 4 + 1
+print(a / a)
+# output
+# 1.0
+
+c = 4
+b = 2
+d = 6 + 3
+print(b + 9)
+# output
+# 11
+
+a = 5
+d = 5
+print(d)
+# output
+# 5
+
+c = 3
+b = 7
+b = c + c
+print(b / 1)
+# output
+# 6.0
+
+d = 2
+b = 1 / 8
+print(d - d)
+# output
+# 0
+
+a = 5
+e = 5 * 9
+print(e)
+# output
+# 45
+
+c = 6
+print(c - c)
+# output
+# 0
+
+d = 0
+e = d * 1
+print(e)
+# output
+# 0
+
+a = 2
+a = 1
+print(a / 2)
+# output
+# 0.5
+
+d = 7
+d = 2
+print(d)
+# output
+# 2
+
+a = 9
+print(a - a)
+# output
+# 0
+
+c = 9
+d = 7 * c
+print(d)
+# output
+# 63
+
+e = 4
+b = e + e
+print(e / e)
+# output
+# 1.0
+
+d = 8
+d = 1 + 6
+print(d - 2)
+# output
+# 5
+
+d = 5
+print(d + 6)
+# output
+# 11
+
+a = 9
+d = 8
+print(a)
+# output
+# 9
+
+a = 4
+d = 7 + a
+print(a - 9)
+# output
+# -5
+
+d = 6
+b = d * d
+print(b)
+# output
+# 36
+
+b = 0
+a = b * b
+print(b + b)
+# output
+# 0
+
+a = 7
+print(a * a)
+# output
+# 49
+
+d = 9
+c = 7
+print(c + c)
+# output
+# 14
+
+b = 3
+a = 6
+a = 8 - 0
+print(a)
+# output
+# 8
+
+c = 8
+print(c / 4)
+# output
+# 2.0
+
+c = 0
+b = 3 * 6
+print(c - 1)
+# output
+# -1
+
+a = 4
+print(a - a)
+# output
+# 0
+
+e = 4
+d = 2 / e
+print(d)
+# output
+# 0.5
+
+c = 6
+a = 4
+print(c / c)
+# output
+# 1.0
+
+b = 2
+d = 5 * b
+print(b * 0)
+# output
+# 0
+
+c = 4
+d = 8
+c = 7 + 6
+print(c)
+# output
+# 13
+
+e = 7
+e = 8
+c = 3 / 7
+print(c)
+# output
+# 0.42857142857142855
+
+d = 7
+d = 3
+e = d - d
+print(d * 0)
+# output
+# 0
+
+d = 2
+c = 1
+print(d)
+# output
+# 2
+
+d = 4
+print(d)
+# output
+# 4
+
+a = 1
+a = 3
+print(a / 1)
+# output
+# 3.0
+
+a = 7
+e = 4
+d = a / e
+print(d)
+# output
+# 1.75
+
+e = 2
+c = 5
+a = e / 3
+print(e / e)
+# output
+# 1.0
+
+b = 7
+b = 3 / b
+print(b)
+# output
+# 0.42857142857142855
+
+d = 0
+e = d + 4
+print(d * d)
+# output
+# 0
+
+b = 5
+e = 9
+print(b * b)
+# output
+# 25
+
+c = 3
+e = 2
+print(c)
+# output
+# 3
+
+e = 5
+print(e * 5)
+# output
+# 25
+
+b = 1
+c = 5
+e = c * b
+print(c - b)
+# output
+# 4
+
+e = 6
+d = 3 + e
+print(d)
+# output
+# 9
+
+d = 4
+c = 6
+d = 1 - 6
+print(d)
+# output
+# -5
+
+d = 2
+b = 2 * 8
+print(d - d)
+# output
+# 0
+
+e = 1
+a = e + 8
+print(a)
+# output
+# 9
+
+d = 9
+c = 2
+print(c)
+# output
+# 2
+
+a = 2
+a = 4 + a
+print(a)
+# output
+# 6
+
+d = 1
+c = 7
+print(d)
+# output
+# 1
+
+b = 8
+d = 5
+e = 8 - b
+print(d / 3)
+# output
+# 1.6666666666666667
+
+b = 7
+a = b - 9
+print(b - 6)
+# output
+# 1
+
+c = 2
+b = 0 * c
+print(c + c)
+# output
+# 4
+
+d = 4
+e = 0
+b = e * 0
+print(b)
+# output
+# 0
+
+b = 9
+a = 8
+c = b + a
+print(b / 4)
+# output
+# 2.25
+
+b = 0
+d = 8
+print(b * b)
+# output
+# 0
+
+d = 2
+print(d / d)
+# output
+# 1.0
+
+a = 6
+c = 3
+a = 4 / 7
+print(a)
+# output
+# 0.5714285714285714
+
+e = 7
+b = 1
+print(b)
+# output
+# 1
+
+e = 5
+e = 6
+print(e)
+# output
+# 6
+
+a = 4
+d = 2
+print(a)
+# output
+# 4
+
+e = 6
+b = e * e
+print(e / 8)
+# output
+# 0.75
+
+e = 9
+e = e - 7
+print(e)
+# output
+# 2
+
+d = 5
+print(d * d)
+# output
+# 25
+
+b = 1
+c = 0
+print(c / 2)
+# output
+# 0.0
+
+e = 3
+c = 2
+d = 1 + 5
+print(c * c)
+# output
+# 4
+
+e = 8
+b = e / 5
+print(e / 2)
+# output
+# 4.0
+
+a = 7
+print(a + 4)
+# output
+# 11
+
+d = 2
+a = 7
+a = 6 + d
+print(a)
+# output
+# 8
+
+d = 0
+b = 4
+print(d)
+# output
+# 0
+
+c = 7
+c = 7
+print(c / 8)
+# output
+# 0.875
+
+a = 2
+e = 0
+b = 5 - 4
+print(b)
+# output
+# 1
+
+a = 2
+b = 2 / 8
+print(a / 8)
+# output
+# 0.25
+
+c = 1
+a = 2
+c = 2 * 3
+print(c)
+# output
+# 6
+
+b = 4
+d = 9
+print(d + 6)
+# output
+# 15
+
+e = 9
+print(e * e)
+# output
+# 81
+
+e = 2
+a = 1
+print(a + a)
+# output
+# 2
+
+d = 2
+b = 4 * d
+print(b)
+# output
+# 8
+
+b = 5
+d = 5
+print(d - 6)
+# output
+# -1
+
+b = 7
+e = 4
+d = 0 - b
+print(b - e)
+# output
+# 3
+
+d = 6
+b = 5
+print(d - d)
+# output
+# 0
+
+a = 9
+e = 9
+d = 8 + 1
+print(a * 0)
+# output
+# 0
+
+b = 8
+e = 9
+d = 0 - b
+print(e - b)
+# output
+# 1
+
+b = 8
+b = 5
+print(b)
+# output
+# 5
+
+d = 8
+b = 2
+e = 2 + b
+print(e)
+# output
+# 4
+
+d = 1
+d = 5 / 7
+print(d / d)
+# output
+# 1.0
+
+d = 7
+a = 4 * d
+print(d - 3)
+# output
+# 4
+
+c = 6
+b = 3 + 1
+print(b)
+# output
+# 4
+
+d = 3
+d = 8 - d
+print(d + d)
+# output
+# 10
+
+d = 2
+d = 7
+d = 7 + 4
+print(d / 9)
+# output
+# 1.2222222222222223
+
+b = 2
+a = b - b
+print(b - 6)
+# output
+# -4
+
+e = 6
+d = 1 - 3
+print(d)
+# output
+# -2
+
+c = 3
+e = 9
+e = 0 * c
+print(e)
+# output
+# 0
+
+a = 9
+e = 1 - a
+print(a - 1)
+# output
+# 8
+
+d = 9
+e = 9
+b = e + 2
+print(e - e)
+# output
+# 0
+
+c = 3
+print(c + 3)
+# output
+# 6
+
+a = 3
+c = 0
+print(c)
+# output
+# 0
+
+a = 1
+d = 5 * 3
+print(a + a)
+# output
+# 2
+
+b = 4
+e = 3
+a = b - 7
+print(e / e)
+# output
+# 1.0
+
+b = 4
+c = 4
+print(b + 5)
+# output
+# 9
+
+a = 5
+print(a / 3)
+# output
+# 1.6666666666666667
+
+a = 0
+e = a + a
+print(a + a)
+# output
+# 0
+
+e = 6
+b = 1
+print(b - 2)
+# output
+# -1
+
+b = 7
+e = 2
+b = 0 * 7
+print(b)
+# output
+# 0
+
+d = 7
+print(d / d)
+# output
+# 1.0
+
+a = 3
+print(a + 3)
+# output
+# 6
+
+d = 9
+e = 5
+print(d)
+# output
+# 9
+
+b = 6
+b = 4 - b
+print(b + 0)
+# output
+# -2
+
+b = 6
+c = 1
+print(c / 3)
+# output
+# 0.3333333333333333
+
+a = 2
+e = 4
+a = a / 7
+print(a + a)
+# output
+# 0.5714285714285714
+
+a = 4
+c = 0
+print(c - c)
+# output
+# 0
+
+a = 6
+a = 6
+c = 9 - 7
+print(a * 4)
+# output
+# 24
+
+c = 1
+a = 4 / 3
+print(c - 5)
+# output
+# -4
+
+e = 8
+d = 2 - 0
+print(d)
+# output
+# 2
+
+a = 2
+c = a * 6
+print(a / a)
+# output
+# 1.0
+
+a = 3
+c = 5
+e = 2 + a
+print(e)
+# output
+# 5
+
+a = 5
+b = 7
+print(b / 2)
+# output
+# 3.5
+
+d = 1
+b = 4
+print(b)
+# output
+# 4
+
+d = 9
+c = d / d
+print(c)
+# output
+# 1.0
+
+e = 0
+c = e / 4
+print(e + 6)
+# output
+# 6
+
+c = 0
+a = 3
+print(c + a)
+# output
+# 3
+
+b = 7
+c = 9
+print(b)
+# output
+# 7
+
+b = 8
+c = 3
+print(b)
+# output
+# 8
+
+e = 1
+e = 6 / 6
+print(e)
+# output
+# 1.0
+
+e = 7
+print(e - e)
+# output
+# 0
+
+c = 4
+print(c * 4)
+# output
+# 16
+
+c = 6
+print(c / 4)
+# output
+# 1.5
+
+c = 5
+print(c + c)
+# output
+# 10
+
+c = 4
+b = 5
+print(c + c)
+# output
+# 8
+
+e = 2
+print(e - 7)
+# output
+# -5
+
+c = 2
+d = 9
+print(d)
+# output
+# 9
+
+b = 5
+c = 4
+print(b)
+# output
+# 5
+
+c = 0
+b = 3
+a = 0 + 4
+print(b * 6)
+# output
+# 18
+
+d = 9
+c = 4
+e = d / c
+print(e)
+# output
+# 2.25
+
+b = 8
+b = 1
+d = b - 6
+print(d)
+# output
+# -5
+
+e = 7
+d = e - 1
+print(e + e)
+# output
+# 14
+
+e = 8
+c = 7
+e = e - c
+print(e)
+# output
+# 1
+
+d = 2
+e = 6
+print(e - 2)
+# output
+# 4
+
+c = 2
+d = 6
+print(c / d)
+# output
+# 0.3333333333333333
+
+d = 2
+print(d - 0)
+# output
+# 2
+
+b = 2
+d = 4
+print(b / 1)
+# output
+# 2.0
+
+a = 2
+e = 7
+print(e)
+# output
+# 7
+
+a = 4
+c = 7
+print(a)
+# output
+# 4
+
+a = 7
+a = 7
+print(a + a)
+# output
+# 14
+
+b = 8
+b = 5 * 4
+print(b)
+# output
+# 20
+
+d = 0
+print(d * d)
+# output
+# 0
+
+d = 7
+b = 7 + d
+print(b)
+# output
+# 14
+
+d = 4
+a = 2 * d
+print(a)
+# output
+# 8
+
+d = 4
+d = 3
+b = d + 7
+print(b)
+# output
+# 10
+
+e = 2
+a = 6
+c = a / 4
+print(c)
+# output
+# 1.5
+
+c = 0
+a = c - c
+print(a)
+# output
+# 0
+
+e = 5
+c = 0
+print(e + 1)
+# output
+# 6
+
+e = 2
+b = e - e
+print(e / e)
+# output
+# 1.0
+
+d = 7
+d = 5
+print(d)
+# output
+# 5
+
+c = 8
+e = c + c
+print(e)
+# output
+# 16
+
+c = 4
+print(c - c)
+# output
+# 0
+
+e = 9
+e = 7 * e
+print(e + 7)
+# output
+# 70
+
+c = 0
+d = 4
+e = c + 6
+print(e)
+# output
+# 6
+
+a = 7
+d = 2
+print(a)
+# output
+# 7
+
+b = 8
+c = 9
+d = c - b
+print(d)
+# output
+# 1
+
+d = 7
+e = 5 + d
+print(e)
+# output
+# 12
+
+d = 8
+d = 1
+e = d + d
+print(d / 5)
+# output
+# 0.2
+
+b = 8
+b = 2
+a = 3 / b
+print(a)
+# output
+# 1.5
+
+d = 4
+a = 2 * 5
+print(d / 6)
+# output
+# 0.6666666666666666
+
+a = 3
+a = a * a
+print(a)
+# output
+# 9
+
+a = 9
+e = 3
+print(a + 1)
+# output
+# 10
+
+e = 2
+d = e / e
+print(d)
+# output
+# 1.0
+
+d = 0
+a = 3 - d
+print(a)
+# output
+# 3
+
+d = 7
+a = 6
+print(a)
+# output
+# 6
+
+d = 1
+b = 5
+print(b - 6)
+# output
+# -1
+
+c = 9
+e = 3 - 8
+print(c + 9)
+# output
+# 18
+
+e = 9
+e = e / e
+print(e - 0)
+# output
+# 1.0
+
+d = 4
+print(d + 4)
+# output
+# 8
+
+b = 7
+c = 1
+print(c + 7)
+# output
+# 8
+
+a = 2
+b = 1
+print(a / 9)
+# output
+# 0.2222222222222222
+
+e = 6
+a = 7
+d = a - 1
+print(d)
+# output
+# 6
+
+d = 1
+a = 6
+print(d)
+# output
+# 1
+
+c = 0
+d = 5
+print(c)
+# output
+# 0
+
+c = 6
+e = 0
+print(e + 1)
+# output
+# 1
+
+e = 8
+c = 9
+c = 5 - 3
+print(c)
+# output
+# 2
+
+c = 8
+c = 0
+b = 9 * c
+print(b)
+# output
+# 0
+
+d = 8
+e = 8 * d
+print(d + d)
+# output
+# 16
+
+d = 0
+d = 7
+print(d + 3)
+# output
+# 10
+
+e = 8
+a = 1
+c = 5 * 9
+print(a * 9)
+# output
+# 9
+
+e = 7
+d = 0
+e = 9 - 1
+print(e - 7)
+# output
+# 1
+
+a = 2
+print(a * 6)
+# output
+# 12
+
+c = 3
+a = 2 * 7
+print(c - c)
+# output
+# 0
+
+c = 8
+c = 5 / c
+print(c + c)
+# output
+# 1.25
+
+e = 8
+c = 7
+print(c)
+# output
+# 7
+
+b = 8
+a = 6
+print(b)
+# output
+# 8
+
+e = 9
+b = 3
+print(b)
+# output
+# 3
+
+e = 2
+b = 4
+c = e + 0
+print(b * 1)
+# output
+# 4
+
+b = 6
+c = 3
+b = 3 - 3
+print(c - c)
+# output
+# 0
+
+e = 0
+d = e - 4
+print(d)
+# output
+# -4
+
+d = 9
+print(d * 6)
+# output
+# 54
+
+a = 8
+a = 9
+d = a / 8
+print(d)
+# output
+# 1.125
+
+d = 6
+a = d - 2
+print(a)
+# output
+# 4
+
+d = 5
+d = 3
+a = d * d
+print(d - 8)
+# output
+# -5
+
+a = 9
+d = 2
+d = a + d
+print(d)
+# output
+# 11
+
+e = 2
+c = 2
+print(c * 6)
+# output
+# 12
+
+d = 9
+d = 6
+b = d - 0
+print(b)
+# output
+# 6
+
+d = 9
+b = 4
+a = d + 3
+print(a)
+# output
+# 12
+
+c = 1
+print(c - c)
+# output
+# 0
+
+b = 7
+b = 7
+print(b)
+# output
+# 7
+
+e = 1
+c = e + e
+print(c)
+# output
+# 2
+
+b = 5
+d = 1
+e = d - 7
+print(d + b)
+# output
+# 6
+
+e = 2
+a = 6
+print(a)
+# output
+# 6
+
+e = 6
+e = 7
+print(e)
+# output
+# 7
+
+e = 7
+print(e / 7)
+# output
+# 1.0
+
+c = 6
+c = 1 * 4
+print(c)
+# output
+# 4
+
+d = 8
+e = 3
+a = d / d
+print(e / e)
+# output
+# 1.0
+
+d = 0
+b = 2
+print(d * d)
+# output
+# 0
+
+b = 2
+print(b - b)
+# output
+# 0
+
+c = 5
+c = 0
+print(c)
+# output
+# 0
+
+e = 7
+e = 6
+b = e * 5
+print(e * e)
+# output
+# 36
+
+b = 8
+a = 8
+print(b - 4)
+# output
+# 4
+
+e = 3
+c = e + e
+print(e - e)
+# output
+# 0
+
+b = 0
+a = 4
+print(a * 1)
+# output
+# 4
+
+b = 9
+b = 9
+d = 7 + b
+print(d)
+# output
+# 16
+
+e = 3
+b = 7
+print(b)
+# output
+# 7
+
+c = 7
+print(c * 4)
+# output
+# 28
+
+a = 0
+print(a)
+# output
+# 0
+
+c = 0
+c = 6 - 8
+print(c)
+# output
+# -2
+
+b = 9
+e = 1
+print(e)
+# output
+# 1
+
+b = 8
+b = 9 - 6
+print(b)
+# output
+# 3
+
+b = 4
+c = 7
+c = c / c
+print(c)
+# output
+# 1.0
+
+e = 3
+print(e + 8)
+# output
+# 11
+
+e = 2
+d = e + e
+print(e * e)
+# output
+# 4
+
+e = 3
+e = e + 5
+print(e)
+# output
+# 8
+
+c = 2
+b = c * c
+print(c / 1)
+# output
+# 2.0
+
+d = 5
+d = d / d
+print(d - 4)
+# output
+# -3.0
+
+d = 3
+b = 4
+d = 4 / 3
+print(b * b)
+# output
+# 16
+
+e = 6
+print(e + e)
+# output
+# 12
+
+b = 8
+c = 7 / 7
+print(b + b)
+# output
+# 16
+
+b = 8
+c = 7
+print(b)
+# output
+# 8
+
+c = 2
+e = 2
+print(c - 1)
+# output
+# 1
+
+c = 4
+b = 1
+print(c + c)
+# output
+# 8
+
+a = 6
+e = 6
+a = e * a
+print(a)
+# output
+# 36
+
+e = 1
+a = 0 - 8
+print(a)
+# output
+# -8
+
+c = 1
+print(c + c)
+# output
+# 2
+
+e = 3
+print(e - e)
+# output
+# 0
+
+d = 6
+e = 6
+print(e)
+# output
+# 6
+
+d = 8
+d = 5
+e = 9 - d
+print(e)
+# output
+# 4
+
+d = 3
+d = d / d
+print(d - 8)
+# output
+# -7.0
+
+a = 8
+a = 9
+print(a)
+# output
+# 9
+
+a = 6
+b = 6
+a = 3 - 3
+print(a)
+# output
+# 0
+
+c = 5
+print(c)
+# output
+# 5
+
+c = 5
+e = 6
+e = e + 2
+print(e)
+# output
+# 8
+
+a = 9
+d = 1
+print(a * d)
+# output
+# 9
+
+b = 3
+e = 1
+d = e * 6
+print(d)
+# output
+# 6
+
+e = 2
+e = 6
+a = e - e
+print(e + e)
+# output
+# 12
+
+e = 4
+a = 7 - 0
+print(e * e)
+# output
+# 16
+
+d = 9
+e = 6
+print(e)
+# output
+# 6
+
+d = 7
+e = 8
+print(e / d)
+# output
+# 1.1428571428571428
+
+d = 1
+a = 4 + 6
+print(a)
+# output
+# 10
+
+d = 7
+b = 9 / d
+print(d - d)
+# output
+# 0
+
+e = 8
+d = 5
+a = e - d
+print(e / e)
+# output
+# 1.0
+
+b = 2
+a = 0
+print(a * 2)
+# output
+# 0
+
diff --git a/data/.ipynb_checkpoints/tinypy_generator-checkpoint.py b/data/.ipynb_checkpoints/tinypy_generator-checkpoint.py
new file mode 100644
index 0000000..81b36e7
--- /dev/null
+++ b/data/.ipynb_checkpoints/tinypy_generator-checkpoint.py
@@ -0,0 +1,332 @@
+from anytree import Node, RenderTree
+import random
+from io import StringIO
+from contextlib import redirect_stdout
+import argparse
+import time
+from tqdm.auto import tqdm
+import hashlib
+import os
+import psutil
+
+
+class CodeGenerator:
+ def __init__(self):
+ """
+ Initialize the CodeGenerator object with the given context-free grammar rules.
+
+ """
+
+ self.init_count = 0
+ self.max_init = 0
+
+ # Dictionary containing context-free grammar rules.
+ self.cfg_rules = {
+ # Variables and digits
+ "VARIABLE": ["a", "b", "c", "d", "e"],
+ "DIGIT": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"],
+
+ # Operators
+ "ARITHMETIC_OPERATOR": ["+", "-", "*", "/"],
+ "RELATIONAL_OPERATOR": ["<", ">", "<=", ">=", "!=", "=="],
+ "LOGICAL_OPERATOR_INFIX": ["and", "or"],
+ "LOGICAL_OPERATOR_PREFIX": ["not"],
+ "LOGICAL_OPERATOR": ["LOGICAL_OPERATOR_INFIX", "LOGICAL_OPERATOR_PREFIX"],
+ "OPERATOR": ["ARITHMETIC_OPERATOR"],
+
+ # Formatting
+ "NEW_LINE": ["\n"],
+ "TAB_INDENT": ["\t"],
+ "BRACKET_OPEN": ['('],
+ "BRACKET_CLOSE": [')'],
+ "EQUALS": ["="],
+ "COLON": [":"],
+ "COMMA": [","],
+
+
+ # Keywords
+ "IF": ["if"],
+ "ELIF": ["elif"],
+ "ELSE": ["else"],
+ "FOR": ["for"],
+ "IN": ["in"],
+ "RANGE": ["range"],
+ "WHILE": ["while"],
+ "PRINT": ["print"],
+
+ # Terms and expressions
+ "TERM": ["EXPRESSION_IDENTIFIER", "DIGIT"],
+ "EXPRESSION": ["TERM SPACE OPERATOR SPACE TERM"],
+ "ENCLOSED_EXPRESSION": ["BRACKET_OPEN EXPRESSION BRACKET_CLOSE"],
+ "DISPLAY_EXPRESSION": ["EXPRESSION_IDENTIFIER SPACE OPERATOR SPACE EXPRESSION_IDENTIFIER" ,
+ "EXPRESSION_IDENTIFIER SPACE OPERATOR SPACE DIGIT"],
+
+ # Initializations and assignments
+ "IDENTIFIER_INITIALIZATION": ["IDENTIFIER_INITIALIZATION INITIALIZATION",
+ "INITIALIZATION"],
+
+ "INITIALIZATION": ["VARIABLE SPACE EQUALS SPACE DIGIT NEW_LINE"],
+
+ "SIMPLE_ASSIGNMENTS": ["VARIABLE SPACE EQUALS SPACE EXPRESSION NEW_LINE" , ""],
+ "ADVANCED_ASSIGNMENTS": ["VARIABLE SPACE EQUALS SPACE SIMPLE_ARITHMETIC_EVALUATION NEW_LINE",
+ "VARIABLE SPACE EQUALS SPACE EXPRESSION NEW_LINE" ,
+ ""],
+
+ "SIMPLE_ARITHMETIC_EVALUATION": ["SIMPLE_ARITHMETIC_EVALUATION ARITHMETIC_OPERATOR ENCLOSED_EXPRESSION",
+ "ENCLOSED_EXPRESSION",
+ ],
+
+ # Conditions
+ "SIMPLE_IF_STATEMENT": ["IF SPACE CONDITION SPACE COLON NEW_LINE"],
+ "ADVANCED_IF_STATEMENT": ["IF SPACE CHAIN_CONDITION SPACE COLON NEW_LINE"],
+ "SIMPLE_ELIF_STATEMENT": ["ELIF SPACE CONDITION SPACE COLON NEW_LINE"],
+ "ADVANCED_ELIF_STATEMENT": ["ELIF SPACE CHAIN_CONDITION SPACE COLON NEW_LINE"],
+ "ELSE_STATEMENT": ["ELSE SPACE COLON NEW_LINE"],
+
+ "CHAIN_CONDITION": ["CHAIN_CONDITION SPACE LOGICAL_OPERATOR_INFIX SPACE ENCLOSED_CONDITION",
+ "LOGICAL_OPERATOR_PREFIX SPACE ENCLOSED_CONDITION",
+ "ENCLOSED_CONDITION"],
+ "ENCLOSED_CONDITION": ["BRACKET_OPEN CONDITION BRACKET_CLOSE"],
+ "CONDITION": ["OPTIONAL_NOT CONDITION_EXPRESSION", "CONDITION_EXPRESSION"],
+ "CONDITION_EXPRESSION": ["EXPRESSION_IDENTIFIER SPACE RELATIONAL_OPERATOR SPACE EXPRESSION_IDENTIFIER",
+ "EXPRESSION_IDENTIFIER SPACE RELATIONAL_OPERATOR SPACE DIGIT"],
+ "OPTIONAL_NOT": ["LOGICAL_OPERATOR_PREFIX SPACE", "SPACE"],
+
+ # Loops
+ "FOR_HEADER": ["FOR SPACE EXPRESSION_IDENTIFIER SPACE IN SPACE RANGE BRACKET_OPEN INITIAL COMMA SPACE FINAL COMMA SPACE STEP BRACKET_CLOSE SPACE COLON",
+ "FOR SPACE EXPRESSION_IDENTIFIER SPACE IN SPACE RANGE BRACKET_OPEN INITIAL COMMA SPACE FINAL BRACKET_CLOSE SPACE COLON"],
+ "INITIAL": ["DIGIT"],
+ "FOR_LOOP": ["FOR_HEADER NEW_LINE TAB_INDENT DISPLAY"],
+ "ADVANCED_FOR_LOOP": ["FOR_LOOP",
+ "FOR_HEADER NEW_LINE TAB_INDENT ADVANCED_DISPLAY"],
+
+
+ # Displaying
+ "DISPLAY" : ["PRINT BRACKET_OPEN DISPLAY_IDENTIFIER BRACKET_CLOSE"],
+ "ADVANCED_DISPLAY" : ["DISPLAY",
+ "PRINT BRACKET_OPEN DISPLAY_EXPRESSION BRACKET_CLOSE"],
+
+
+ "LEVEL1.1": ["IDENTIFIER_INITIALIZATION SIMPLE_ASSIGNMENTS ADVANCED_DISPLAY"],
+ "LEVEL1.2": ["IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_DISPLAY"],
+ "LEVEL2.1": ["IDENTIFIER_INITIALIZATION SIMPLE_IF_STATEMENT TAB_INDENT DISPLAY",
+ "IDENTIFIER_INITIALIZATION SIMPLE_IF_STATEMENT TAB_INDENT DISPLAY NEW_LINE SIMPLE_ELIF_STATEMENT TAB_INDENT DISPLAY NEW_LINE ELSE_STATEMENT TAB_INDENT DISPLAY",
+ "IDENTIFIER_INITIALIZATION SIMPLE_IF_STATEMENT TAB_INDENT DISPLAY NEW_LINE ELSE_STATEMENT TAB_INDENT DISPLAY"],
+ "LEVEL2.2": ["IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_IF_STATEMENT TAB_INDENT ADVANCED_DISPLAY",
+ "IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_IF_STATEMENT TAB_INDENT ADVANCED_DISPLAY NEW_LINE ADVANCED_ELIF_STATEMENT TAB_INDENT ADVANCED_DISPLAY NEW_LINE ELSE_STATEMENT TAB_INDENT ADVANCED_DISPLAY",
+ "IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_IF_STATEMENT TAB_INDENT ADVANCED_DISPLAY NEW_LINE ELSE_STATEMENT TAB_INDENT ADVANCED_DISPLAY"],
+ "LEVEL3.1": ["IDENTIFIER_INITIALIZATION FOR_LOOP"],
+ "LEVEL3.2": ["IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_FOR_LOOP"],
+
+ "ALL": ["LEVEL1.1", "LEVEL1.2", "LEVEL2.1", "LEVEL2.2", "LEVEL3.1", "LEVEL3.2"],
+
+ }
+
+
+
+ def generate_code(self, symbol, assigned_identifiers, last_variable, for_init_step, parent=None ):
+ """
+ Generate code recursively based on the context-free grammar rules.
+
+ Parameters:
+ - symbol (str): The symbol to generate code for.
+ - assigned_identifiers (set): Set of assigned identifiers.
+ - last_variable (set): Set of the last used variables.
+ - parent (Node): Parent node in the syntax tree.
+
+ Returns:
+ - str: The generated code.
+ """
+ node = Node(symbol, parent=parent)
+
+ if symbol in self.cfg_rules:
+ if symbol == "IDENTIFIER_INITIALIZATION":
+ if self.init_count < self.max_init:
+ self.init_count += 1
+ else:
+ symbol = "INITIALIZATION"
+
+ rule = random.choice(self.cfg_rules[symbol])
+ symbols = rule.split(" ")
+
+ generated_symbols = [self.generate_code(s, assigned_identifiers, last_variable, for_init_step, node) for s in symbols]
+
+ if symbol == "INITIAL":
+ init = generated_symbols[0]
+ for_init_step["initial_value"] = init
+
+
+ if symbol == "INITIALIZATION":
+ assigned_identifiers.add(generated_symbols[0])
+
+ if (symbol == "SIMPLE_ASSIGNMENTS") or (symbol == "ADVANCED_ASSIGNMENTS"):
+ if generated_symbols[0]:
+ last_variable.add(generated_symbols[0])
+
+ return ''.join(generated_symbols)
+
+ elif symbol == "FINAL":
+
+ initial_value = for_init_step.get("initial_value", "0")
+
+ # Generate valid step_value and execution_count
+ valid_values = [(1, 2), (2, 1), (2, 2), (2, 3), (3, 2)]
+ step_value, execution_count = random.choice(valid_values)
+ for_init_step["step"] = str(step_value)
+
+ final_value = step_value * execution_count + int(initial_value) - 1
+ return str(final_value)
+
+
+
+ elif symbol == "STEP":
+
+ return for_init_step.get("step", "0")
+
+ elif symbol == "EXPRESSION_IDENTIFIER":
+ identifier = random.choice(tuple(assigned_identifiers)) if assigned_identifiers else random.choice(self.cfg_rules["DIGIT"])
+ return identifier
+
+ elif symbol == "DISPLAY_IDENTIFIER":
+ try:
+ return f"{tuple(last_variable)[0]}"
+ except:
+ return f"{random.choice(tuple(assigned_identifiers))}"
+ else:
+ return symbol
+
+
+
+ def print_tree(self, root):
+ """
+ Print the syntax tree using the RenderTree utility from the anytree module.
+
+ Parameters:
+ - root (Node): The root node of the syntax tree.
+ """
+ for pre, _, node in RenderTree(root):
+ print(f"{pre}{node.name}")
+
+ def generate_program(self, level):
+ """
+ Generate a program based on the specified level.
+
+ Parameters:
+ - level (str): The level of the program.
+
+ Returns:
+ - Tuple[Node, str]: The syntax tree root node and the generated program.
+ """
+ assigned = set()
+ last_variable = set()
+ for_init_step = {}
+ root = Node("ROOT")
+
+ self.init_count = 0
+ if level == "1.1":
+ self.max_init = 2
+ elif level == "1.2":
+ self.max_init = 3
+ elif level == "2.1":
+ self.max_init = 2
+ elif level == "3.1":
+ self.max_init = 2
+ elif level == "3.2":
+ self.max_init = 4
+ else:
+ self.max_init = 5
+
+ if level == "ALL" :
+ level_passed = level
+ else :
+ level_passed = "LEVEL" + level
+
+ program = self.generate_code(level_passed, assigned, last_variable, for_init_step, root)
+
+ return root, program.replace("SPACE", " ")
+
+ def memory_usage(self):
+ process = psutil.Process(os.getpid())
+ mem_info = process.memory_info()
+ return mem_info.rss
+
+ def generate_and_write_programs(self, num_programs, level, filename='data.txt', deduplicate=True):
+ """
+ Generate and write a specified number of programs to a file.
+
+ Parameters:
+ - num_programs (int): Number of programs to generate and write.
+ - level (str): The level of the programs.
+ - filename (str): Name of the file to write the programs (default is 'data.txt').
+ - deduplicate (bool, optional): Whether to perform deduplication of generated programs (default is True).
+ """
+ start_time = time.time()
+ start_mem = self.memory_usage()
+ max_tries = 1000
+ num_tries = 0
+
+ with open(filename, 'w') as file:
+
+ generated_programs = 0
+ hashes = set()
+ pbar = tqdm(desc="Generation", total=num_programs)
+ while generated_programs < num_programs:
+ try:
+ root, program = self.generate_program(level)
+ code = program + "\n# output"
+
+ SIO = StringIO()
+ with redirect_stdout(SIO):
+ exec(code)
+ output = SIO.getvalue().strip()
+
+ output = '\n'.join([f'# {line}' if line else f'# ' for line in output.split('\n')])
+ result = f"""{code}\n{output}"""
+
+ program_hash = hashlib.sha256(result.encode('utf-8')).hexdigest()
+
+ if deduplicate:
+ if program_hash not in hashes:
+ hashes.add(program_hash)
+ file.write(result + '\n\n')
+ generated_programs += 1
+ pbar.update(1)
+ num_tries = 0
+ else:
+ num_tries += 1
+ if num_tries >= max_tries:
+ print("Hit max tries in deduplication, stopping generation.")
+ break
+ else:
+ file.write(result + '\n\n')
+
+ generated_programs += 1
+ pbar.update(1)
+
+ except Exception as e:
+ continue
+
+ pbar.close()
+ end_time = time.time()
+ end_mem = self.memory_usage()
+ deduplication_info = "with deduplication" if deduplicate else "without deduplication"
+ print(f"Code generation completed in {end_time - start_time:.2f} seconds.")
+ print(f"Memory used during code generation: {end_mem - start_mem} bytes")
+ print(f"Generated {generated_programs} {'unique ' if deduplicate else ''}programs {deduplication_info}.")
+ print(f"Programs are saved to {filename}.")
+
+
+def main():
+ parser = argparse.ArgumentParser(description='Generate and write programs based on a specified level. ')
+ parser.add_argument('--num_programs', type=int, default=3000000, help='Number of programs to generate and write (default is 1000)')
+ parser.add_argument('--level', default="3.1", help='The level of the programs (1.1, 1.2, 2.1, 2.2, 3.1, 3.2, ALL)')
+ parser.add_argument('--filename', default='3.1.txt', help='Name of the file to write the programs (default is data.txt)')
+ parser.add_argument('--deduplicate', action='store_true', default=True, help='Perform deduplication of generated programs (default is True)a')
+
+ args = parser.parse_args()
+
+ code_generator = CodeGenerator()
+ code_generator.generate_and_write_programs(num_programs=args.num_programs, level=args.level, filename=args.filename, deduplicate=args.deduplicate)
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
diff --git a/data/meta.pkl b/data/meta.pkl
new file mode 100644
index 0000000..a5db975
Binary files /dev/null and b/data/meta.pkl differ
diff --git a/data/prepare.py b/data/prepare.py
new file mode 100644
index 0000000..cb2189e
--- /dev/null
+++ b/data/prepare.py
@@ -0,0 +1,83 @@
+import os
+import pickle
+import requests
+import numpy as np
+
+input_file_path = os.path.join(os.path.dirname(__file__), 'sample_data.txt' )
+
+with open(input_file_path, 'r') as f:
+ data = f.read()
+print(f"length of dataset in characters: {len(data):,}\n")
+
+
+# get all the unique characters that occur in this text
+chars = sorted(list(set(data)))
+vocab_size = len(chars)
+print("all the unique characters:", ''.join(chars))
+print(f"vocab size: {vocab_size:,}")
+
+# create a mapping from characters to integers
+stoi = { ch:i for i,ch in enumerate(chars) }
+itos = { i:ch for i,ch in enumerate(chars) }
+def encode(s):
+ return [stoi[c] for c in s] # encoder: take a string, output a list of integers
+def decode(l):
+ ''.join([itos[i] for i in l]) # decoder: take a list of integers, output a string
+
+
+# save the meta information as well, to help us encode/decode later
+meta = {
+ 'vocab_size': vocab_size,
+ 'itos': itos,
+ 'stoi': stoi,
+}
+with open(f'meta.pkl', 'wb') as f:
+ pickle.dump(meta, f)
+
+
+# split by examples using "\n\n"
+examples = data.split("\n\n")[:-1]
+n = len(examples)
+print(f"total number of examples: {n:,}\n")
+# shuffle the examples
+np.random.shuffle(examples)
+
+# split into train, val, and test sets
+train_examples = examples[:int(n*0.8)]
+val_examples = examples[int(n*0.8):int(n*0.9)]
+test_examples = examples[int(n*0.9):]
+
+# join the examples back into strings
+train_data = "\n\n".join(train_examples)
+val_data = "\n\n".join(val_examples)
+test_data = "\n\n".join(test_examples)
+
+
+
+# Save train, val, and test sets to separate files
+with open(os.path.join(os.path.dirname(__file__), 'train.txt'), 'w') as f:
+ f.write(train_data)
+with open(os.path.join(os.path.dirname(__file__), 'val.txt'), 'w') as f:
+ f.write(val_data)
+with open(os.path.join(os.path.dirname(__file__), 'test.txt'), 'w') as f:
+ f.write(test_data)
+
+
+
+
+# encode both to integers
+train_ids = encode(train_data)
+val_ids = encode(val_data)
+test_ids = encode(test_data)
+print(f"train has {len(train_ids):,} tokens for {len(train_examples):,} examples")
+print(f"val has {len(val_ids):,} tokens for {len(val_examples):,} examples")
+print(f"test has {len(test_ids):,} tokens for {len(test_examples):,} examples\n")
+
+# export to bin files
+train_ids = np.array(train_ids, dtype=np.uint16)
+val_ids = np.array(val_ids, dtype=np.uint16)
+test_ids = np.array(test_ids, dtype=np.uint16)
+train_ids.tofile(os.path.join(os.path.dirname(__file__), 'train.bin'))
+val_ids.tofile(os.path.join(os.path.dirname(__file__), 'val.bin'))
+test_ids.tofile(os.path.join(os.path.dirname(__file__), 'test.bin'))
+
diff --git a/data/sample_data.txt b/data/sample_data.txt
new file mode 100644
index 0000000..dd6e285
--- /dev/null
+++ b/data/sample_data.txt
@@ -0,0 +1,6098 @@
+d = 0
+b = d * d
+print(b)
+# output
+# 0
+
+c = 5
+d = 5
+d = c - 4
+print(d)
+# output
+# 1
+
+d = 5
+a = 0
+print(a + d)
+# output
+# 5
+
+b = 2
+print(b)
+# output
+# 2
+
+a = 8
+e = a + 1
+print(a / a)
+# output
+# 1.0
+
+e = 8
+print(e)
+# output
+# 8
+
+d = 0
+e = 7
+c = d / 1
+print(e / e)
+# output
+# 1.0
+
+d = 6
+c = 4 + 1
+print(d + 2)
+# output
+# 8
+
+d = 9
+d = 7
+print(d)
+# output
+# 7
+
+c = 2
+e = 8
+print(e)
+# output
+# 8
+
+e = 5
+c = 8
+print(c)
+# output
+# 8
+
+c = 2
+c = 7 + c
+print(c * c)
+# output
+# 81
+
+a = 2
+print(a / a)
+# output
+# 1.0
+
+c = 5
+e = 1
+print(c)
+# output
+# 5
+
+d = 6
+d = 0
+b = d * 5
+print(d * d)
+# output
+# 0
+
+e = 1
+c = 8
+print(c * 2)
+# output
+# 16
+
+e = 4
+b = 8
+d = 4 + b
+print(d)
+# output
+# 12
+
+d = 9
+print(d)
+# output
+# 9
+
+a = 8
+print(a - a)
+# output
+# 0
+
+d = 5
+a = 0 * d
+print(a)
+# output
+# 0
+
+d = 5
+print(d)
+# output
+# 5
+
+a = 8
+print(a)
+# output
+# 8
+
+c = 8
+d = 4
+print(d / 9)
+# output
+# 0.4444444444444444
+
+e = 6
+c = 4
+b = c + c
+print(e / e)
+# output
+# 1.0
+
+b = 8
+a = 5 - b
+print(a)
+# output
+# -3
+
+a = 4
+e = 4
+print(e)
+# output
+# 4
+
+b = 3
+a = 0
+print(a)
+# output
+# 0
+
+d = 4
+b = 6 / 2
+print(b)
+# output
+# 3.0
+
+d = 9
+b = 6
+print(b - b)
+# output
+# 0
+
+e = 7
+print(e * 9)
+# output
+# 63
+
+e = 4
+e = 8 * 8
+print(e)
+# output
+# 64
+
+a = 5
+a = 7
+a = a + a
+print(a)
+# output
+# 14
+
+e = 8
+print(e * e)
+# output
+# 64
+
+e = 9
+e = 9
+print(e + e)
+# output
+# 18
+
+a = 0
+b = a + a
+print(a / 9)
+# output
+# 0.0
+
+d = 6
+a = d / d
+print(a)
+# output
+# 1.0
+
+e = 2
+b = 0 + e
+print(e - 4)
+# output
+# -2
+
+e = 6
+c = 1 / e
+print(e + e)
+# output
+# 12
+
+d = 7
+c = 7
+print(c)
+# output
+# 7
+
+b = 7
+print(b)
+# output
+# 7
+
+c = 3
+a = 0
+e = c / 3
+print(a + c)
+# output
+# 3
+
+e = 5
+print(e - 0)
+# output
+# 5
+
+e = 8
+d = 0 - e
+print(e / e)
+# output
+# 1.0
+
+a = 5
+b = 5
+e = 9 - 2
+print(a * a)
+# output
+# 25
+
+e = 4
+print(e + e)
+# output
+# 8
+
+e = 2
+b = e / e
+print(e + 8)
+# output
+# 10
+
+b = 7
+a = 1
+print(a)
+# output
+# 1
+
+a = 4
+a = 2
+print(a)
+# output
+# 2
+
+b = 2
+a = 7
+print(a)
+# output
+# 7
+
+e = 6
+b = 5
+c = 4 / 9
+print(e * 6)
+# output
+# 36
+
+a = 4
+c = 0
+d = 9 / a
+print(d)
+# output
+# 2.25
+
+c = 6
+d = 9 - 5
+print(c / 1)
+# output
+# 6.0
+
+d = 5
+d = 9 - 7
+print(d)
+# output
+# 2
+
+b = 3
+a = 0
+c = 6 - 1
+print(c)
+# output
+# 5
+
+a = 8
+print(a * a)
+# output
+# 64
+
+d = 8
+d = 4 * 5
+print(d)
+# output
+# 20
+
+b = 1
+a = 1 + b
+print(a)
+# output
+# 2
+
+c = 8
+print(c / 3)
+# output
+# 2.6666666666666665
+
+c = 0
+b = 1
+c = 4 - 0
+print(b + b)
+# output
+# 2
+
+e = 7
+b = 2
+print(e)
+# output
+# 7
+
+a = 9
+b = a * 0
+print(a / a)
+# output
+# 1.0
+
+d = 8
+a = 5
+print(d)
+# output
+# 8
+
+e = 4
+b = 0 + e
+print(e + 1)
+# output
+# 5
+
+e = 9
+a = 1
+c = 9 * a
+print(e + 9)
+# output
+# 18
+
+b = 3
+c = 1
+e = 6 - c
+print(e)
+# output
+# 5
+
+e = 3
+e = e / 1
+print(e)
+# output
+# 3.0
+
+e = 4
+e = 5
+print(e)
+# output
+# 5
+
+c = 9
+print(c)
+# output
+# 9
+
+a = 9
+print(a)
+# output
+# 9
+
+a = 3
+print(a)
+# output
+# 3
+
+a = 0
+d = a * 9
+print(d)
+# output
+# 0
+
+b = 8
+b = 2 / 5
+print(b / b)
+# output
+# 1.0
+
+b = 4
+b = 8
+d = b - 0
+print(d)
+# output
+# 8
+
+d = 4
+d = 4
+print(d)
+# output
+# 4
+
+b = 1
+print(b * 6)
+# output
+# 6
+
+c = 1
+e = c / c
+print(c + 5)
+# output
+# 6
+
+a = 5
+print(a)
+# output
+# 5
+
+a = 9
+c = 2
+a = c - 2
+print(a + a)
+# output
+# 0
+
+d = 3
+c = 7 / 2
+print(d - d)
+# output
+# 0
+
+b = 6
+b = 4
+b = b / b
+print(b - 4)
+# output
+# -3.0
+
+c = 6
+a = 0
+d = a - a
+print(c / 2)
+# output
+# 3.0
+
+a = 7
+c = a * a
+print(a / a)
+# output
+# 1.0
+
+d = 4
+d = 1
+a = 1 - d
+print(d / d)
+# output
+# 1.0
+
+d = 2
+e = d + 1
+print(e)
+# output
+# 3
+
+e = 1
+print(e + 3)
+# output
+# 4
+
+b = 6
+c = 4
+print(b / b)
+# output
+# 1.0
+
+b = 7
+d = 4
+print(b)
+# output
+# 7
+
+a = 5
+c = 8
+print(a)
+# output
+# 5
+
+b = 6
+b = 5
+b = b - b
+print(b / 3)
+# output
+# 0.0
+
+a = 3
+print(a + a)
+# output
+# 6
+
+b = 3
+print(b)
+# output
+# 3
+
+e = 3
+d = 8
+a = d / d
+print(d - e)
+# output
+# 5
+
+c = 3
+d = 5
+a = c - c
+print(c / d)
+# output
+# 0.6
+
+c = 4
+d = 5
+d = c / 1
+print(d + c)
+# output
+# 8.0
+
+e = 6
+print(e)
+# output
+# 6
+
+d = 6
+c = 3
+a = 9 + d
+print(a)
+# output
+# 15
+
+b = 1
+e = b * b
+print(e)
+# output
+# 1
+
+e = 6
+print(e - e)
+# output
+# 0
+
+e = 6
+print(e - 6)
+# output
+# 0
+
+d = 9
+c = 5
+e = c / 7
+print(e)
+# output
+# 0.7142857142857143
+
+e = 9
+c = 0
+print(e)
+# output
+# 9
+
+c = 8
+print(c * c)
+# output
+# 64
+
+e = 2
+c = 3
+print(c)
+# output
+# 3
+
+d = 1
+b = 8
+print(d * 1)
+# output
+# 1
+
+d = 0
+print(d)
+# output
+# 0
+
+e = 9
+print(e)
+# output
+# 9
+
+d = 7
+b = 3
+print(b)
+# output
+# 3
+
+d = 0
+c = 6
+e = 7 * c
+print(e)
+# output
+# 42
+
+c = 2
+print(c)
+# output
+# 2
+
+b = 7
+d = 1
+print(d - b)
+# output
+# -6
+
+e = 3
+d = e - 2
+print(e / e)
+# output
+# 1.0
+
+b = 2
+a = b / b
+print(a)
+# output
+# 1.0
+
+d = 8
+e = d + d
+print(e)
+# output
+# 16
+
+a = 3
+b = 2
+c = b * 7
+print(c)
+# output
+# 14
+
+b = 3
+print(b - b)
+# output
+# 0
+
+b = 6
+c = 1
+print(b)
+# output
+# 6
+
+a = 4
+e = 0 * 7
+print(a + 2)
+# output
+# 6
+
+b = 0
+b = 1
+a = 1 + b
+print(b - 7)
+# output
+# -6
+
+a = 7
+e = a + 9
+print(a * 9)
+# output
+# 63
+
+a = 9
+d = 9 + 5
+print(d)
+# output
+# 14
+
+d = 9
+b = 9
+a = b - d
+print(a)
+# output
+# 0
+
+e = 3
+print(e / 6)
+# output
+# 0.5
+
+c = 6
+print(c * 2)
+# output
+# 12
+
+b = 1
+e = 7
+e = b * 4
+print(e + e)
+# output
+# 8
+
+c = 5
+print(c - c)
+# output
+# 0
+
+d = 2
+d = 2 + d
+print(d)
+# output
+# 4
+
+e = 7
+b = 6
+print(b * 6)
+# output
+# 36
+
+b = 2
+print(b * 6)
+# output
+# 12
+
+e = 7
+d = e + e
+print(d)
+# output
+# 14
+
+c = 0
+print(c / 2)
+# output
+# 0.0
+
+b = 6
+a = 5
+e = b / 8
+print(e)
+# output
+# 0.75
+
+c = 1
+c = 9
+d = 0 - 5
+print(d)
+# output
+# -5
+
+a = 3
+c = 8
+d = 5 + 3
+print(d)
+# output
+# 8
+
+d = 2
+a = d + d
+print(a)
+# output
+# 4
+
+a = 9
+a = 2 + 7
+print(a)
+# output
+# 9
+
+d = 1
+print(d)
+# output
+# 1
+
+e = 7
+print(e / 6)
+# output
+# 1.1666666666666667
+
+c = 4
+d = 6
+e = d / d
+print(c / c)
+# output
+# 1.0
+
+c = 3
+print(c - 0)
+# output
+# 3
+
+b = 1
+e = 0
+b = 4 + e
+print(b / 3)
+# output
+# 1.3333333333333333
+
+e = 3
+e = e / e
+print(e / e)
+# output
+# 1.0
+
+c = 1
+a = 7
+print(a)
+# output
+# 7
+
+d = 3
+d = 8
+print(d)
+# output
+# 8
+
+e = 9
+d = 2 - e
+print(e - 1)
+# output
+# 8
+
+b = 5
+b = 5
+print(b + b)
+# output
+# 10
+
+b = 8
+print(b * 1)
+# output
+# 8
+
+c = 4
+print(c)
+# output
+# 4
+
+e = 9
+b = 1
+print(b)
+# output
+# 1
+
+c = 0
+c = c - c
+print(c)
+# output
+# 0
+
+a = 7
+d = 5
+b = 3 / 3
+print(b)
+# output
+# 1.0
+
+d = 5
+b = 2
+b = d * d
+print(b)
+# output
+# 25
+
+d = 8
+print(d - 5)
+# output
+# 3
+
+e = 3
+a = e * e
+print(e * 0)
+# output
+# 0
+
+e = 2
+print(e * e)
+# output
+# 4
+
+d = 2
+b = 4
+e = 8 + 3
+print(d / 5)
+# output
+# 0.4
+
+d = 7
+d = 9
+print(d + 5)
+# output
+# 14
+
+b = 9
+b = 1 / b
+print(b * 0)
+# output
+# 0.0
+
+b = 3
+d = 2
+d = 6 / 6
+print(d)
+# output
+# 1.0
+
+b = 0
+print(b + b)
+# output
+# 0
+
+e = 2
+c = 3
+e = 1 * 5
+print(e * c)
+# output
+# 15
+
+a = 1
+b = 4
+e = 2 + 7
+print(a * b)
+# output
+# 4
+
+a = 0
+e = 4 * a
+print(a / 1)
+# output
+# 0.0
+
+a = 9
+print(a - 6)
+# output
+# 3
+
+a = 2
+a = 1
+print(a)
+# output
+# 1
+
+a = 8
+d = 2
+a = d - 8
+print(a)
+# output
+# -6
+
+d = 1
+b = 2 / d
+print(b)
+# output
+# 2.0
+
+c = 7
+print(c)
+# output
+# 7
+
+e = 0
+e = 3
+print(e / 6)
+# output
+# 0.5
+
+c = 1
+b = 1 + 4
+print(b)
+# output
+# 5
+
+c = 9
+print(c / c)
+# output
+# 1.0
+
+d = 4
+c = 6
+print(d + c)
+# output
+# 10
+
+c = 4
+d = 3
+print(d + 6)
+# output
+# 9
+
+c = 0
+a = 1
+print(a)
+# output
+# 1
+
+d = 7
+c = 2 + 8
+print(d * 1)
+# output
+# 7
+
+a = 9
+print(a / a)
+# output
+# 1.0
+
+d = 1
+d = 0
+b = 2 * d
+print(b)
+# output
+# 0
+
+b = 2
+c = 7
+c = c + c
+print(c)
+# output
+# 14
+
+c = 5
+d = 3
+e = 2 + 6
+print(d / 8)
+# output
+# 0.375
+
+a = 6
+e = a - 9
+print(e)
+# output
+# -3
+
+e = 6
+b = 5
+a = 4 / b
+print(a)
+# output
+# 0.8
+
+d = 4
+b = 6
+a = 0 / d
+print(a)
+# output
+# 0.0
+
+c = 9
+e = 8
+b = 9 * e
+print(b)
+# output
+# 72
+
+d = 4
+d = d / d
+print(d / 3)
+# output
+# 0.3333333333333333
+
+c = 9
+e = 9
+print(c / c)
+# output
+# 1.0
+
+a = 9
+d = a + 1
+print(a * a)
+# output
+# 81
+
+b = 5
+a = 1
+b = a - a
+print(b)
+# output
+# 0
+
+d = 9
+print(d * 9)
+# output
+# 81
+
+d = 4
+d = 3
+e = d * d
+print(e)
+# output
+# 9
+
+d = 6
+e = 0
+print(d * d)
+# output
+# 36
+
+a = 4
+e = a / 2
+print(a + 1)
+# output
+# 5
+
+b = 8
+print(b * b)
+# output
+# 64
+
+d = 2
+a = 4
+c = d * 0
+print(c)
+# output
+# 0
+
+c = 3
+a = 8
+e = a + a
+print(a - a)
+# output
+# 0
+
+c = 3
+print(c / c)
+# output
+# 1.0
+
+e = 4
+d = 7
+d = e * 8
+print(e / 1)
+# output
+# 4.0
+
+d = 8
+print(d / d)
+# output
+# 1.0
+
+c = 3
+d = 7
+b = d / 8
+print(b)
+# output
+# 0.875
+
+b = 2
+e = b - 5
+print(e)
+# output
+# -3
+
+c = 8
+print(c - 2)
+# output
+# 6
+
+e = 7
+a = e + e
+print(a)
+# output
+# 14
+
+b = 3
+e = 6
+print(b)
+# output
+# 3
+
+b = 3
+a = 3
+print(a)
+# output
+# 3
+
+b = 8
+d = 9
+a = d + 5
+print(a)
+# output
+# 14
+
+a = 6
+b = 7
+d = a - 0
+print(d)
+# output
+# 6
+
+a = 5
+print(a / 5)
+# output
+# 1.0
+
+b = 7
+c = b * 6
+print(b * 9)
+# output
+# 63
+
+b = 0
+print(b)
+# output
+# 0
+
+a = 1
+print(a)
+# output
+# 1
+
+c = 6
+a = 5
+d = c + 1
+print(d)
+# output
+# 7
+
+d = 7
+a = 0
+print(a)
+# output
+# 0
+
+c = 9
+e = 4
+print(c - 5)
+# output
+# 4
+
+d = 7
+print(d)
+# output
+# 7
+
+e = 6
+a = 4 - e
+print(a)
+# output
+# -2
+
+b = 7
+b = 8
+print(b)
+# output
+# 8
+
+e = 3
+print(e)
+# output
+# 3
+
+c = 9
+c = c + 7
+print(c)
+# output
+# 16
+
+a = 1
+c = a + 9
+print(a * 4)
+# output
+# 4
+
+c = 0
+b = 8
+print(c)
+# output
+# 0
+
+d = 3
+d = 5
+print(d + d)
+# output
+# 10
+
+b = 4
+d = 4
+e = 3 / 9
+print(d + 6)
+# output
+# 10
+
+c = 0
+a = 4
+d = c / 4
+print(a / a)
+# output
+# 1.0
+
+c = 5
+e = 0
+print(c)
+# output
+# 5
+
+a = 6
+c = 8
+c = 6 + a
+print(c)
+# output
+# 12
+
+c = 0
+d = 8
+d = d - 9
+print(d)
+# output
+# -1
+
+b = 5
+e = 7 - 8
+print(e)
+# output
+# -1
+
+d = 7
+a = d * d
+print(a)
+# output
+# 49
+
+a = 4
+a = 4
+print(a)
+# output
+# 4
+
+d = 4
+print(d * 6)
+# output
+# 24
+
+b = 5
+b = 8
+c = b - b
+print(c)
+# output
+# 0
+
+d = 5
+c = 9 + d
+print(c)
+# output
+# 14
+
+e = 1
+print(e - e)
+# output
+# 0
+
+b = 9
+print(b / 6)
+# output
+# 1.5
+
+e = 5
+d = 0 * e
+print(e + e)
+# output
+# 10
+
+c = 1
+print(c)
+# output
+# 1
+
+e = 7
+print(e)
+# output
+# 7
+
+d = 6
+print(d + d)
+# output
+# 12
+
+b = 8
+a = 2
+c = b + 1
+print(b * a)
+# output
+# 16
+
+c = 8
+print(c / 1)
+# output
+# 8.0
+
+e = 8
+b = 6 / e
+print(e / 2)
+# output
+# 4.0
+
+a = 5
+b = 2
+print(b / a)
+# output
+# 0.4
+
+a = 1
+e = 7 - a
+print(e)
+# output
+# 6
+
+e = 3
+e = 4
+c = 6 - e
+print(e + 3)
+# output
+# 7
+
+b = 4
+e = b - 0
+print(b - 9)
+# output
+# -5
+
+a = 6
+d = 0
+d = d + 0
+print(d)
+# output
+# 0
+
+e = 5
+a = 0 - e
+print(a)
+# output
+# -5
+
+e = 6
+c = 3 / e
+print(c)
+# output
+# 0.5
+
+c = 8
+e = 8
+print(e * c)
+# output
+# 64
+
+e = 1
+print(e / e)
+# output
+# 1.0
+
+a = 0
+c = 3
+c = 2 + 5
+print(c)
+# output
+# 7
+
+d = 1
+d = d * 2
+print(d)
+# output
+# 2
+
+a = 3
+e = 9
+b = e - a
+print(b)
+# output
+# 6
+
+c = 5
+a = c + 9
+print(a)
+# output
+# 14
+
+e = 5
+c = 1
+print(c - e)
+# output
+# -4
+
+d = 7
+d = 9
+e = 3 * d
+print(d - 9)
+# output
+# 0
+
+d = 9
+c = 3
+e = d - 5
+print(d + c)
+# output
+# 12
+
+d = 1
+b = 2
+print(b)
+# output
+# 2
+
+e = 5
+print(e - e)
+# output
+# 0
+
+a = 2
+a = 4
+print(a)
+# output
+# 4
+
+b = 0
+c = 3
+print(b)
+# output
+# 0
+
+e = 6
+b = 1
+d = e / e
+print(d)
+# output
+# 1.0
+
+e = 4
+print(e)
+# output
+# 4
+
+e = 3
+b = 4
+a = e - 6
+print(a)
+# output
+# -3
+
+c = 2
+c = c * c
+print(c - 5)
+# output
+# -1
+
+e = 1
+print(e)
+# output
+# 1
+
+d = 6
+d = 3 / 7
+print(d * 7)
+# output
+# 3.0
+
+d = 5
+d = d - d
+print(d)
+# output
+# 0
+
+e = 8
+a = 3
+print(e / a)
+# output
+# 2.6666666666666665
+
+e = 9
+print(e + 9)
+# output
+# 18
+
+b = 8
+e = b + b
+print(e)
+# output
+# 16
+
+c = 5
+e = 8 + c
+print(e)
+# output
+# 13
+
+c = 3
+c = 0
+a = c + 6
+print(c + 8)
+# output
+# 8
+
+b = 5
+print(b + b)
+# output
+# 10
+
+d = 2
+a = 6
+e = 2 - 6
+print(e)
+# output
+# -4
+
+b = 8
+print(b)
+# output
+# 8
+
+e = 7
+a = 2
+d = e / 3
+print(d)
+# output
+# 2.3333333333333335
+
+a = 4
+e = 9
+print(e + a)
+# output
+# 13
+
+a = 7
+e = 0
+d = 5 * e
+print(a * a)
+# output
+# 49
+
+c = 6
+a = 0 / 5
+print(a)
+# output
+# 0.0
+
+e = 2
+c = 8 / e
+print(e * 9)
+# output
+# 18
+
+e = 1
+d = 0
+d = 4 - d
+print(d - 7)
+# output
+# -3
+
+a = 5
+a = 6
+c = 1 + 9
+print(a * 3)
+# output
+# 18
+
+b = 3
+b = 5
+d = b * 2
+print(d)
+# output
+# 10
+
+e = 1
+c = 3
+print(e - 3)
+# output
+# -2
+
+c = 6
+b = 6
+print(b)
+# output
+# 6
+
+d = 7
+c = 0 + 7
+print(c)
+# output
+# 7
+
+c = 2
+e = 6
+b = c * 6
+print(b)
+# output
+# 12
+
+a = 6
+e = a + a
+print(a + a)
+# output
+# 12
+
+e = 1
+b = 0
+print(b)
+# output
+# 0
+
+d = 8
+c = d - 6
+print(c)
+# output
+# 2
+
+e = 9
+a = 5
+print(e)
+# output
+# 9
+
+a = 2
+c = 3 * 5
+print(c)
+# output
+# 15
+
+d = 8
+print(d)
+# output
+# 8
+
+c = 4
+b = 5
+c = 0 / c
+print(c)
+# output
+# 0.0
+
+c = 8
+b = 3
+print(b)
+# output
+# 3
+
+e = 4
+e = 4 * e
+print(e / 8)
+# output
+# 2.0
+
+c = 3
+print(c)
+# output
+# 3
+
+a = 2
+a = 5
+d = a + a
+print(d)
+# output
+# 10
+
+a = 7
+b = 1
+a = a / 5
+print(a)
+# output
+# 1.4
+
+b = 7
+print(b / 4)
+# output
+# 1.75
+
+a = 5
+e = 1
+print(a)
+# output
+# 5
+
+c = 8
+b = c / 7
+print(c - c)
+# output
+# 0
+
+e = 0
+a = 3
+print(a)
+# output
+# 3
+
+e = 5
+e = e - e
+print(e - e)
+# output
+# 0
+
+a = 9
+e = 7
+print(e - e)
+# output
+# 0
+
+a = 3
+c = a / 3
+print(c)
+# output
+# 1.0
+
+d = 2
+a = 0
+e = 7 / 8
+print(d + a)
+# output
+# 2
+
+d = 0
+e = 8
+print(e * e)
+# output
+# 64
+
+d = 2
+a = 6
+print(d)
+# output
+# 2
+
+d = 3
+a = 2
+print(d - a)
+# output
+# 1
+
+e = 4
+a = 5 - e
+print(e - 7)
+# output
+# -3
+
+e = 7
+e = 9
+print(e)
+# output
+# 9
+
+e = 1
+print(e * e)
+# output
+# 1
+
+e = 5
+d = 2 - e
+print(d)
+# output
+# -3
+
+b = 1
+print(b * 9)
+# output
+# 9
+
+e = 0
+c = 6
+print(e)
+# output
+# 0
+
+c = 5
+print(c / c)
+# output
+# 1.0
+
+e = 4
+c = 2
+e = e - 0
+print(c * c)
+# output
+# 4
+
+e = 6
+d = 9
+print(d)
+# output
+# 9
+
+a = 0
+b = a + a
+print(b)
+# output
+# 0
+
+c = 8
+b = 5
+print(c - 8)
+# output
+# 0
+
+e = 8
+b = e / 6
+print(b)
+# output
+# 1.3333333333333333
+
+d = 0
+b = 4
+print(b)
+# output
+# 4
+
+c = 4
+d = 9
+b = 6 + 9
+print(b)
+# output
+# 15
+
+e = 9
+print(e / 1)
+# output
+# 9.0
+
+d = 1
+c = 0
+d = d / 7
+print(d * 2)
+# output
+# 0.2857142857142857
+
+a = 9
+b = 0
+d = a + a
+print(d)
+# output
+# 18
+
+a = 4
+a = 5
+a = a * 7
+print(a / a)
+# output
+# 1.0
+
+a = 3
+c = 6
+d = c / 7
+print(c - 1)
+# output
+# 5
+
+d = 2
+d = d - d
+print(d)
+# output
+# 0
+
+c = 7
+b = 9 / c
+print(b)
+# output
+# 1.2857142857142858
+
+c = 4
+e = 4
+print(c * c)
+# output
+# 16
+
+e = 8
+a = 0
+c = a + a
+print(a * 7)
+# output
+# 0
+
+a = 9
+d = 9
+b = a + 4
+print(a + 0)
+# output
+# 9
+
+c = 4
+e = 3
+print(c * e)
+# output
+# 12
+
+d = 8
+print(d + 9)
+# output
+# 17
+
+d = 6
+d = 6
+d = d + d
+print(d)
+# output
+# 12
+
+a = 0
+print(a - 9)
+# output
+# -9
+
+a = 6
+c = 7
+b = c + c
+print(a - c)
+# output
+# -1
+
+d = 4
+a = 8
+print(a * a)
+# output
+# 64
+
+e = 4
+b = 3
+print(b)
+# output
+# 3
+
+e = 9
+d = 6 / 4
+print(e / 1)
+# output
+# 9.0
+
+a = 4
+print(a / a)
+# output
+# 1.0
+
+a = 8
+c = 2 / 7
+print(a * a)
+# output
+# 64
+
+d = 9
+b = 2
+c = 3 / d
+print(b - b)
+# output
+# 0
+
+d = 6
+b = d / d
+print(b)
+# output
+# 1.0
+
+c = 3
+b = 0
+d = c + b
+print(d)
+# output
+# 3
+
+c = 6
+e = 2
+d = 6 + 1
+print(c * 1)
+# output
+# 6
+
+c = 4
+a = 4
+print(a)
+# output
+# 4
+
+e = 9
+print(e / 3)
+# output
+# 3.0
+
+c = 6
+c = 2
+print(c + c)
+# output
+# 4
+
+c = 7
+print(c - c)
+# output
+# 0
+
+b = 2
+c = 1
+print(b + 2)
+# output
+# 4
+
+c = 0
+d = c + 6
+print(c * c)
+# output
+# 0
+
+b = 9
+c = 4 + 6
+print(c)
+# output
+# 10
+
+a = 6
+print(a)
+# output
+# 6
+
+a = 6
+print(a - 3)
+# output
+# 3
+
+e = 3
+a = 9
+a = 8 - a
+print(a)
+# output
+# -1
+
+a = 1
+b = 3
+print(a)
+# output
+# 1
+
+b = 2
+a = 8
+d = b / 6
+print(a / 5)
+# output
+# 1.6
+
+a = 6
+b = 0
+a = 3 - 3
+print(b / 9)
+# output
+# 0.0
+
+e = 8
+a = 1
+d = 1 - 9
+print(e * e)
+# output
+# 64
+
+c = 6
+e = 9
+d = 4 * c
+print(c - 8)
+# output
+# -2
+
+d = 1
+b = 6
+print(d)
+# output
+# 1
+
+d = 0
+c = 7
+print(d - d)
+# output
+# 0
+
+b = 6
+a = 4 / 9
+print(b - b)
+# output
+# 0
+
+d = 5
+d = 9
+e = 0 - d
+print(d * d)
+# output
+# 81
+
+a = 4
+print(a * a)
+# output
+# 16
+
+b = 5
+b = 0 - 7
+print(b)
+# output
+# -7
+
+d = 5
+c = 8
+b = c + c
+print(c + 6)
+# output
+# 14
+
+e = 4
+d = 1
+print(e)
+# output
+# 4
+
+a = 3
+c = a / a
+print(c)
+# output
+# 1.0
+
+e = 2
+print(e)
+# output
+# 2
+
+b = 8
+b = 8
+print(b)
+# output
+# 8
+
+e = 1
+b = 7
+print(b - 0)
+# output
+# 7
+
+d = 9
+c = 7 - d
+print(d - d)
+# output
+# 0
+
+b = 8
+d = 3
+print(d / d)
+# output
+# 1.0
+
+b = 2
+print(b + 3)
+# output
+# 5
+
+b = 9
+a = 2
+b = a - 9
+print(a - 4)
+# output
+# -2
+
+c = 7
+print(c / c)
+# output
+# 1.0
+
+c = 8
+print(c)
+# output
+# 8
+
+b = 8
+b = b / 8
+print(b)
+# output
+# 1.0
+
+a = 0
+c = 8
+print(c)
+# output
+# 8
+
+d = 9
+b = 6
+a = 6 + 5
+print(a)
+# output
+# 11
+
+e = 6
+a = 8 - e
+print(e + 3)
+# output
+# 9
+
+c = 6
+a = 4
+print(a)
+# output
+# 4
+
+e = 1
+c = e + 5
+print(e + 7)
+# output
+# 8
+
+d = 8
+b = 7
+print(b)
+# output
+# 7
+
+a = 1
+print(a * 0)
+# output
+# 0
+
+b = 4
+print(b * b)
+# output
+# 16
+
+e = 9
+a = 9
+print(a * e)
+# output
+# 81
+
+e = 8
+a = 6 / e
+print(e * e)
+# output
+# 64
+
+b = 7
+d = b - 4
+print(b + 8)
+# output
+# 15
+
+d = 4
+e = 3
+b = 0 + 8
+print(b)
+# output
+# 8
+
+a = 2
+a = 8
+e = a + a
+print(a - a)
+# output
+# 0
+
+d = 9
+print(d - 9)
+# output
+# 0
+
+e = 8
+e = 0
+print(e + e)
+# output
+# 0
+
+b = 9
+b = 9
+print(b / 9)
+# output
+# 1.0
+
+d = 4
+e = 3
+a = 9 - 9
+print(d * 4)
+# output
+# 16
+
+c = 9
+d = 5
+print(d)
+# output
+# 5
+
+b = 6
+b = 3
+print(b)
+# output
+# 3
+
+d = 2
+e = d - d
+print(d - d)
+# output
+# 0
+
+c = 7
+e = 5
+d = 1 + c
+print(c - 7)
+# output
+# 0
+
+d = 0
+a = 9
+print(a * 7)
+# output
+# 63
+
+d = 2
+print(d + d)
+# output
+# 4
+
+e = 1
+a = 3
+e = e / a
+print(e)
+# output
+# 0.3333333333333333
+
+b = 2
+b = 3
+print(b * 7)
+# output
+# 21
+
+d = 0
+a = 1
+print(a)
+# output
+# 1
+
+a = 2
+e = 9
+c = 7 * a
+print(a * e)
+# output
+# 18
+
+c = 1
+e = 9
+d = 6 * 8
+print(e - e)
+# output
+# 0
+
+a = 7
+b = a / a
+print(a * a)
+# output
+# 49
+
+e = 1
+a = 6
+print(a / 6)
+# output
+# 1.0
+
+d = 3
+b = 4
+print(b)
+# output
+# 4
+
+e = 3
+b = e * 6
+print(e / e)
+# output
+# 1.0
+
+c = 4
+print(c + 3)
+# output
+# 7
+
+e = 5
+print(e)
+# output
+# 5
+
+d = 5
+d = d * d
+print(d)
+# output
+# 25
+
+d = 4
+a = 1
+print(d)
+# output
+# 4
+
+d = 7
+e = 5
+e = e + d
+print(e)
+# output
+# 12
+
+d = 5
+print(d - d)
+# output
+# 0
+
+d = 2
+print(d + 9)
+# output
+# 11
+
+b = 6
+a = 2
+d = 9 - b
+print(b - 0)
+# output
+# 6
+
+d = 6
+b = d / 4
+print(d - 3)
+# output
+# 3
+
+c = 7
+a = c - c
+print(a)
+# output
+# 0
+
+b = 0
+d = 0
+print(d)
+# output
+# 0
+
+d = 5
+c = d * d
+print(d / d)
+# output
+# 1.0
+
+c = 8
+b = 7
+c = c + c
+print(c - c)
+# output
+# 0
+
+a = 2
+d = 1
+print(d)
+# output
+# 1
+
+d = 4
+c = 0 + 1
+print(c)
+# output
+# 1
+
+b = 1
+c = b + 3
+print(c)
+# output
+# 4
+
+a = 1
+print(a / 2)
+# output
+# 0.5
+
+b = 6
+c = 5
+print(b / b)
+# output
+# 1.0
+
+a = 8
+a = 8
+print(a)
+# output
+# 8
+
+d = 4
+c = d - d
+print(c)
+# output
+# 0
+
+c = 6
+b = 2
+c = b - 4
+print(b + c)
+# output
+# 0
+
+b = 2
+e = 2
+print(e)
+# output
+# 2
+
+e = 5
+print(e + e)
+# output
+# 10
+
+e = 2
+a = 6
+print(e)
+# output
+# 2
+
+a = 8
+a = a / 8
+print(a * a)
+# output
+# 1.0
+
+d = 7
+print(d * d)
+# output
+# 49
+
+d = 9
+b = 5
+print(d)
+# output
+# 9
+
+c = 3
+e = 7
+print(c)
+# output
+# 3
+
+b = 3
+d = b * b
+print(d)
+# output
+# 9
+
+b = 9
+c = 6
+a = c * 6
+print(c / 6)
+# output
+# 1.0
+
+a = 2
+c = 1
+b = 7 * c
+print(b)
+# output
+# 7
+
+b = 6
+a = 5
+d = b + 9
+print(d)
+# output
+# 15
+
+d = 2
+e = 2
+print(e)
+# output
+# 2
+
+e = 3
+c = e + 2
+print(e + e)
+# output
+# 6
+
+e = 8
+d = e - 9
+print(d)
+# output
+# -1
+
+b = 8
+d = 6
+print(b / d)
+# output
+# 1.3333333333333333
+
+a = 7
+e = 1
+print(a + 3)
+# output
+# 10
+
+c = 9
+c = 9
+print(c - 4)
+# output
+# 5
+
+d = 0
+d = d + 7
+print(d)
+# output
+# 7
+
+a = 1
+e = 6 + a
+print(a * 4)
+# output
+# 4
+
+d = 5
+b = 7
+print(d)
+# output
+# 5
+
+c = 9
+d = c / 3
+print(d)
+# output
+# 3.0
+
+c = 6
+d = 1
+print(d)
+# output
+# 1
+
+c = 7
+e = 3
+e = 0 + 0
+print(e)
+# output
+# 0
+
+a = 5
+a = 9
+print(a)
+# output
+# 9
+
+b = 3
+d = 8
+a = d - 6
+print(a)
+# output
+# 2
+
+b = 1
+d = 5 * b
+print(d)
+# output
+# 5
+
+e = 8
+a = 9
+print(e)
+# output
+# 8
+
+c = 1
+b = 9 + 5
+print(c / 4)
+# output
+# 0.25
+
+b = 0
+a = 0 / 5
+print(a)
+# output
+# 0.0
+
+a = 9
+d = a * a
+print(d)
+# output
+# 81
+
+d = 2
+print(d / 6)
+# output
+# 0.3333333333333333
+
+e = 0
+b = 8
+c = b * b
+print(c)
+# output
+# 64
+
+a = 8
+b = 6 / a
+print(b)
+# output
+# 0.75
+
+e = 9
+e = e * 2
+print(e)
+# output
+# 18
+
+a = 1
+d = 3
+print(a * 2)
+# output
+# 2
+
+c = 0
+c = 1 * c
+print(c - c)
+# output
+# 0
+
+a = 3
+b = 7
+d = a + a
+print(d)
+# output
+# 6
+
+a = 7
+b = 8
+e = 9 - 5
+print(a * a)
+# output
+# 49
+
+c = 5
+c = 8
+print(c / 5)
+# output
+# 1.6
+
+b = 6
+e = b + b
+print(b + 1)
+# output
+# 7
+
+e = 6
+c = e + e
+print(e + e)
+# output
+# 12
+
+b = 4
+b = 3 - b
+print(b)
+# output
+# -1
+
+d = 4
+e = 5
+a = 6 * e
+print(e / e)
+# output
+# 1.0
+
+b = 9
+print(b * 1)
+# output
+# 9
+
+e = 2
+b = 7
+print(e)
+# output
+# 2
+
+c = 7
+c = c + 2
+print(c - 1)
+# output
+# 8
+
+e = 9
+e = 3
+b = e / 8
+print(e + e)
+# output
+# 6
+
+c = 3
+e = 4
+print(e)
+# output
+# 4
+
+b = 1
+print(b)
+# output
+# 1
+
+a = 6
+b = 0
+e = 5 / a
+print(b * b)
+# output
+# 0
+
+e = 9
+d = 6
+print(e)
+# output
+# 9
+
+c = 0
+a = 7
+print(a * a)
+# output
+# 49
+
+d = 5
+a = 6
+a = d / 7
+print(a)
+# output
+# 0.7142857142857143
+
+a = 2
+c = a - 6
+print(a / a)
+# output
+# 1.0
+
+b = 4
+print(b)
+# output
+# 4
+
+b = 3
+a = 5
+print(a + a)
+# output
+# 10
+
+c = 5
+b = c * c
+print(b)
+# output
+# 25
+
+d = 4
+d = 7 * 4
+print(d * d)
+# output
+# 784
+
+b = 6
+e = 1
+e = 5 / 1
+print(e - 2)
+# output
+# 3.0
+
+e = 6
+b = 9
+print(e)
+# output
+# 6
+
+d = 7
+d = 8
+e = 7 * 5
+print(e)
+# output
+# 35
+
+d = 3
+print(d)
+# output
+# 3
+
+e = 2
+d = 9
+a = e - 2
+print(a)
+# output
+# 0
+
+a = 0
+a = 0
+print(a)
+# output
+# 0
+
+e = 5
+b = 6
+print(e)
+# output
+# 5
+
+b = 6
+print(b)
+# output
+# 6
+
+b = 8
+d = 3
+a = 4 - 9
+print(d + b)
+# output
+# 11
+
+a = 9
+d = a / a
+print(a + 6)
+# output
+# 15
+
+a = 7
+e = 6
+print(a + a)
+# output
+# 14
+
+d = 3
+d = 6
+print(d + d)
+# output
+# 12
+
+d = 6
+a = 6
+print(a)
+# output
+# 6
+
+e = 4
+b = e * e
+print(e * 7)
+# output
+# 28
+
+d = 8
+e = 4
+print(e + d)
+# output
+# 12
+
+d = 2
+print(d)
+# output
+# 2
+
+b = 3
+print(b - 6)
+# output
+# -3
+
+d = 3
+b = 5
+print(d)
+# output
+# 3
+
+a = 9
+b = 7
+print(b - b)
+# output
+# 0
+
+c = 3
+a = 3
+print(c / 7)
+# output
+# 0.42857142857142855
+
+b = 9
+print(b)
+# output
+# 9
+
+a = 7
+c = 1
+a = a / 1
+print(a * c)
+# output
+# 7.0
+
+b = 9
+c = b - 8
+print(c)
+# output
+# 1
+
+b = 1
+print(b - 9)
+# output
+# -8
+
+a = 0
+c = 8
+print(a)
+# output
+# 0
+
+a = 2
+e = a + a
+print(a * 5)
+# output
+# 10
+
+b = 9
+d = b - b
+print(b - b)
+# output
+# 0
+
+d = 0
+a = 4
+print(a)
+# output
+# 4
+
+c = 6
+d = 0
+a = 9 - 0
+print(a)
+# output
+# 9
+
+c = 9
+b = 8 / c
+print(b)
+# output
+# 0.8888888888888888
+
+c = 0
+d = 2
+b = 0 / d
+print(b)
+# output
+# 0.0
+
+a = 9
+a = a - 6
+print(a - a)
+# output
+# 0
+
+d = 2
+e = 4
+a = d / 2
+print(e / 2)
+# output
+# 2.0
+
+e = 0
+a = 2
+c = e + e
+print(c)
+# output
+# 0
+
+a = 0
+d = 8
+b = a * 5
+print(b)
+# output
+# 0
+
+c = 9
+a = 4
+a = 8 - 5
+print(a + 8)
+# output
+# 11
+
+c = 3
+d = 9
+print(c * 3)
+# output
+# 9
+
+a = 6
+d = 8
+print(a)
+# output
+# 6
+
+e = 5
+c = 4
+c = c - e
+print(e / c)
+# output
+# -5.0
+
+e = 2
+c = 7
+d = 7 + 4
+print(d)
+# output
+# 11
+
+a = 3
+e = 4 * 7
+print(a - a)
+# output
+# 0
+
+a = 2
+e = 0 / 8
+print(a * a)
+# output
+# 4
+
+e = 0
+d = 6
+a = 0 + 0
+print(e * d)
+# output
+# 0
+
+b = 6
+e = 5
+print(b)
+# output
+# 6
+
+d = 0
+a = 1 * d
+print(d + 6)
+# output
+# 6
+
+b = 7
+d = 8 * 6
+print(b - 5)
+# output
+# 2
+
+d = 3
+b = 2
+a = d * b
+print(d / 6)
+# output
+# 0.5
+
+d = 9
+d = 8 * d
+print(d * d)
+# output
+# 5184
+
+b = 9
+c = 6 / b
+print(b * 2)
+# output
+# 18
+
+d = 8
+a = d + d
+print(d - 3)
+# output
+# 5
+
+a = 0
+b = 7
+print(b)
+# output
+# 7
+
+e = 7
+c = 4
+print(e)
+# output
+# 7
+
+e = 8
+e = 4
+d = 5 * 3
+print(d)
+# output
+# 15
+
+d = 9
+a = 2
+b = 7 - d
+print(a / d)
+# output
+# 0.2222222222222222
+
+b = 7
+a = 2
+print(a)
+# output
+# 2
+
+c = 7
+c = 4
+d = 6 * c
+print(c / c)
+# output
+# 1.0
+
+a = 1
+print(a * a)
+# output
+# 1
+
+e = 8
+d = 6
+print(e + d)
+# output
+# 14
+
+c = 4
+print(c * 8)
+# output
+# 32
+
+d = 6
+a = 1 + d
+print(a)
+# output
+# 7
+
+d = 3
+a = 4
+a = d * d
+print(a * 4)
+# output
+# 36
+
+b = 8
+a = 4
+d = 5 - b
+print(b * 3)
+# output
+# 24
+
+c = 5
+d = 2
+print(d + 4)
+# output
+# 6
+
+e = 2
+print(e - 3)
+# output
+# -1
+
+d = 4
+print(d - d)
+# output
+# 0
+
+d = 9
+c = 7
+print(c - 2)
+# output
+# 5
+
+b = 9
+c = 6
+a = c + c
+print(c * 5)
+# output
+# 30
+
+d = 7
+e = 7
+a = 3 - d
+print(a)
+# output
+# -4
+
+e = 4
+c = 5
+print(c * e)
+# output
+# 20
+
+a = 6
+print(a - 9)
+# output
+# -3
+
+d = 6
+b = 2
+print(d)
+# output
+# 6
+
+d = 7
+c = 9
+a = 0 + 9
+print(c * 4)
+# output
+# 36
+
+d = 1
+b = 1
+a = 2 / b
+print(d + 9)
+# output
+# 10
+
+b = 4
+e = 8 - b
+print(e)
+# output
+# 4
+
+a = 3
+d = 4
+print(a)
+# output
+# 3
+
+a = 3
+c = a * a
+print(c)
+# output
+# 9
+
+a = 8
+c = 4
+b = c / a
+print(b)
+# output
+# 0.5
+
+d = 6
+a = 5
+a = 2 + a
+print(d - a)
+# output
+# -1
+
+b = 6
+a = 5
+print(a)
+# output
+# 5
+
+d = 6
+print(d)
+# output
+# 6
+
+b = 2
+c = 3
+print(b / b)
+# output
+# 1.0
+
+c = 5
+print(c * c)
+# output
+# 25
+
+c = 5
+a = 9 / c
+print(a)
+# output
+# 1.8
+
+d = 8
+d = 0
+c = 7 - 1
+print(c)
+# output
+# 6
+
+e = 7
+c = e + e
+print(c)
+# output
+# 14
+
+b = 9
+b = 9
+print(b - 5)
+# output
+# 4
+
+a = 9
+b = 7
+print(b / 5)
+# output
+# 1.4
+
+d = 8
+print(d - d)
+# output
+# 0
+
+b = 2
+b = 6
+print(b - 6)
+# output
+# 0
+
+c = 8
+b = 6
+print(c)
+# output
+# 8
+
+a = 5
+d = 7
+print(d)
+# output
+# 7
+
+c = 9
+a = c * 1
+print(c / 1)
+# output
+# 9.0
+
+e = 3
+b = 5
+print(b * 9)
+# output
+# 45
+
+c = 5
+e = 3
+d = 8 * 3
+print(d)
+# output
+# 24
+
+c = 4
+e = 1
+e = 4 / e
+print(e)
+# output
+# 4.0
+
+a = 3
+d = a - a
+print(d)
+# output
+# 0
+
+d = 9
+a = 5
+print(a)
+# output
+# 5
+
+e = 1
+c = e / 7
+print(e - e)
+# output
+# 0
+
+d = 6
+a = 6
+print(a / a)
+# output
+# 1.0
+
+a = 0
+b = 4
+b = a / 2
+print(b)
+# output
+# 0.0
+
+a = 4
+b = a / a
+print(b)
+# output
+# 1.0
+
+a = 2
+d = 1
+b = a / d
+print(b)
+# output
+# 2.0
+
+e = 1
+b = 8
+print(b)
+# output
+# 8
+
+a = 8
+d = a - 7
+print(d)
+# output
+# 1
+
+d = 7
+b = 2
+print(b)
+# output
+# 2
+
+d = 9
+print(d / d)
+# output
+# 1.0
+
+b = 6
+d = 6
+c = 5 - 4
+print(c)
+# output
+# 1
+
+a = 7
+b = 0
+e = 7 - a
+print(b / 7)
+# output
+# 0.0
+
+b = 3
+c = 2 / b
+print(b * 8)
+# output
+# 24
+
+d = 3
+d = 7
+print(d)
+# output
+# 7
+
+a = 0
+print(a + a)
+# output
+# 0
+
+e = 3
+d = 5
+print(e - 1)
+# output
+# 2
+
+b = 3
+d = 5
+d = b - 7
+print(b - b)
+# output
+# 0
+
+d = 0
+e = 3
+print(e)
+# output
+# 3
+
+b = 3
+e = 1
+e = 9 + e
+print(e)
+# output
+# 10
+
+c = 7
+a = 9
+print(a - 2)
+# output
+# 7
+
+c = 1
+b = 8
+a = 7 / 1
+print(a)
+# output
+# 7.0
+
+a = 4
+b = 4
+print(b * b)
+# output
+# 16
+
+d = 6
+d = 8
+e = d - 9
+print(d / 4)
+# output
+# 2.0
+
+c = 3
+a = 0
+print(c - 4)
+# output
+# -1
+
+b = 0
+e = 2 / 1
+print(b - 2)
+# output
+# -2
+
+e = 9
+b = 8
+a = 8 + 3
+print(b * 4)
+# output
+# 32
+
+b = 4
+a = 1
+a = 2 / b
+print(a)
+# output
+# 0.5
+
+b = 9
+c = 4
+print(b)
+# output
+# 9
+
+c = 8
+d = c + 1
+print(d)
+# output
+# 9
+
+b = 6
+b = 5
+print(b)
+# output
+# 5
+
+e = 0
+e = e + e
+print(e)
+# output
+# 0
+
+d = 3
+c = 0
+a = c * 5
+print(c / 5)
+# output
+# 0.0
+
+d = 8
+b = 2 + d
+print(b)
+# output
+# 10
+
+d = 8
+a = 7
+print(d)
+# output
+# 8
+
+a = 2
+print(a + a)
+# output
+# 4
+
+e = 6
+print(e * 4)
+# output
+# 24
+
+d = 8
+e = 2
+print(d + 2)
+# output
+# 10
+
+d = 1
+a = 3
+d = 7 - a
+print(d / d)
+# output
+# 1.0
+
+e = 9
+d = 5
+d = e * d
+print(e / d)
+# output
+# 0.2
+
+c = 3
+e = 7
+print(c * c)
+# output
+# 9
+
+d = 8
+b = d * d
+print(d * d)
+# output
+# 64
+
+e = 4
+b = 8
+e = e - 6
+print(b / 6)
+# output
+# 1.3333333333333333
+
+a = 9
+a = 5
+e = a / 7
+print(e)
+# output
+# 0.7142857142857143
+
+d = 2
+c = 5
+print(d * d)
+# output
+# 4
+
+d = 1
+a = 7 - 4
+print(a)
+# output
+# 3
+
+a = 1
+d = a / 4
+print(d)
+# output
+# 0.25
+
+d = 9
+b = 1
+d = d / 9
+print(b * b)
+# output
+# 1
+
+a = 8
+print(a + a)
+# output
+# 16
+
+a = 5
+e = 8
+b = a / a
+print(e - e)
+# output
+# 0
+
+d = 2
+d = 6 * d
+print(d)
+# output
+# 12
+
+d = 2
+b = 5
+print(b)
+# output
+# 5
+
+b = 9
+c = 6
+print(c)
+# output
+# 6
+
+e = 3
+c = 0
+print(c)
+# output
+# 0
+
+d = 4
+b = 8 * d
+print(d * d)
+# output
+# 16
+
+b = 7
+e = b - b
+print(b - 5)
+# output
+# 2
+
+e = 8
+e = 4
+print(e)
+# output
+# 4
+
+a = 8
+a = 4 - a
+print(a)
+# output
+# -4
+
+a = 9
+d = 1
+d = 5 + 5
+print(a / 9)
+# output
+# 1.0
+
+d = 5
+b = 6
+print(d)
+# output
+# 5
+
+c = 8
+e = 7
+print(e * 3)
+# output
+# 21
+
+e = 4
+a = e + 9
+print(a)
+# output
+# 13
+
+e = 7
+a = 2
+d = 5 * 7
+print(a * 7)
+# output
+# 14
+
+e = 1
+d = 5
+c = d * d
+print(d / 2)
+# output
+# 2.5
+
+c = 6
+a = 6
+print(a)
+# output
+# 6
+
+b = 4
+print(b + b)
+# output
+# 8
+
+b = 8
+a = 2 + b
+print(a)
+# output
+# 10
+
+b = 3
+c = 7
+print(c / 3)
+# output
+# 2.3333333333333335
+
+c = 3
+a = c - 9
+print(a)
+# output
+# -6
+
+b = 5
+d = 8
+print(b - 0)
+# output
+# 5
+
+e = 3
+a = 4
+print(e)
+# output
+# 3
+
+c = 6
+b = 0
+c = 0 * 4
+print(c)
+# output
+# 0
+
+a = 9
+c = 7 / 9
+print(c)
+# output
+# 0.7777777777777778
+
+b = 7
+d = 4
+print(d)
+# output
+# 4
+
+c = 1
+b = 1
+print(c)
+# output
+# 1
+
+a = 1
+a = a + a
+print(a + a)
+# output
+# 4
+
+b = 1
+c = 3
+print(c)
+# output
+# 3
+
+b = 5
+e = 8
+b = e / e
+print(b * 0)
+# output
+# 0.0
+
+b = 1
+b = 9
+print(b)
+# output
+# 9
+
+e = 0
+b = 2
+print(b * b)
+# output
+# 4
+
+b = 7
+d = 6
+a = 0 / d
+print(b - 3)
+# output
+# 4
+
+b = 5
+d = b - b
+print(d)
+# output
+# 0
+
+c = 6
+print(c / c)
+# output
+# 1.0
+
+c = 3
+e = 0
+d = e + e
+print(d)
+# output
+# 0
+
+c = 4
+d = 4
+e = c - c
+print(e)
+# output
+# 0
+
+d = 6
+d = 2
+c = d - 0
+print(c)
+# output
+# 2
+
+a = 9
+b = a + a
+print(a / a)
+# output
+# 1.0
+
+e = 7
+b = 7
+c = 7 - e
+print(b + 2)
+# output
+# 9
+
+e = 7
+print(e + e)
+# output
+# 14
+
+d = 9
+print(d * d)
+# output
+# 81
+
+a = 7
+print(a / 2)
+# output
+# 3.5
+
+b = 4
+b = 4
+b = b / 8
+print(b + 3)
+# output
+# 3.5
+
+b = 0
+d = 9 * 1
+print(d)
+# output
+# 9
+
+b = 3
+e = 8
+print(e)
+# output
+# 8
+
+d = 3
+print(d * 7)
+# output
+# 21
+
+b = 0
+e = 1
+print(b)
+# output
+# 0
+
+a = 6
+e = 7
+b = e + a
+print(a / 2)
+# output
+# 3.0
+
+d = 1
+b = 3
+b = b / 8
+print(b / d)
+# output
+# 0.375
+
+a = 7
+c = a / a
+print(c)
+# output
+# 1.0
+
+d = 6
+c = d - d
+print(c)
+# output
+# 0
+
+a = 7
+print(a)
+# output
+# 7
+
+e = 7
+a = 7
+a = 7 - e
+print(a * 0)
+# output
+# 0
+
+a = 4
+print(a)
+# output
+# 4
+
+c = 4
+d = 3
+print(c)
+# output
+# 4
+
+d = 2
+b = 4
+c = d * 9
+print(c)
+# output
+# 18
+
+c = 6
+a = 4
+print(c)
+# output
+# 6
+
+d = 8
+b = 0 * d
+print(d - 7)
+# output
+# 1
+
+d = 6
+e = 2
+c = 2 - d
+print(c)
+# output
+# -4
+
+c = 1
+c = c * 8
+print(c)
+# output
+# 8
+
+b = 6
+c = 4
+e = c + c
+print(e)
+# output
+# 8
+
+b = 1
+c = 1
+d = c / 5
+print(b - 0)
+# output
+# 1
+
+b = 4
+b = 9
+b = b + 4
+print(b)
+# output
+# 13
+
+c = 9
+print(c * c)
+# output
+# 81
+
+b = 1
+a = b + b
+print(b / b)
+# output
+# 1.0
+
+b = 5
+a = 1
+print(b)
+# output
+# 5
+
+c = 4
+a = 7
+a = c + a
+print(a + 5)
+# output
+# 16
+
+b = 1
+c = 5
+print(c)
+# output
+# 5
+
+a = 5
+a = 2
+print(a * a)
+# output
+# 4
+
+c = 1
+e = 6
+print(e / 7)
+# output
+# 0.8571428571428571
+
+b = 0
+d = 1
+print(d)
+# output
+# 1
+
+a = 3
+b = 7 - a
+print(b)
+# output
+# 4
+
+e = 9
+print(e / e)
+# output
+# 1.0
+
+e = 2
+b = 3
+e = 1 - e
+print(b + 6)
+# output
+# 9
+
+d = 2
+a = 3
+e = 1 + a
+print(e)
+# output
+# 4
+
+a = 2
+e = 0
+a = a * a
+print(a)
+# output
+# 4
+
+a = 0
+c = 5
+print(c * 0)
+# output
+# 0
+
+e = 1
+a = 7
+print(a * 3)
+# output
+# 21
+
+c = 8
+a = 4
+b = c / c
+print(c + a)
+# output
+# 12
+
+e = 4
+c = 9
+e = 8 - e
+print(e / 3)
+# output
+# 1.3333333333333333
+
+c = 3
+a = 7
+b = 3 * 9
+print(a + 6)
+# output
+# 13
+
+e = 5
+print(e / e)
+# output
+# 1.0
+
+a = 2
+print(a / 4)
+# output
+# 0.5
+
+a = 4
+a = 4
+a = 7 / a
+print(a)
+# output
+# 1.75
+
+c = 2
+print(c - c)
+# output
+# 0
+
+a = 2
+print(a)
+# output
+# 2
+
+e = 5
+a = 5
+a = e / 4
+print(a)
+# output
+# 1.25
+
+c = 9
+a = 3
+print(a * 4)
+# output
+# 12
+
+a = 8
+b = 5
+print(b / 2)
+# output
+# 2.5
+
+e = 7
+b = 0
+c = b - b
+print(e * 4)
+# output
+# 28
+
+b = 0
+d = 7
+e = b + b
+print(d + b)
+# output
+# 7
+
+e = 0
+print(e)
+# output
+# 0
+
+a = 1
+print(a + a)
+# output
+# 2
+
+c = 6
+d = 8
+print(d / 4)
+# output
+# 2.0
+
+a = 6
+e = a / 7
+print(a + 4)
+# output
+# 10
+
+e = 6
+c = 4
+print(e / 9)
+# output
+# 0.6666666666666666
+
+d = 3
+b = 6 + 3
+print(b)
+# output
+# 9
+
+e = 4
+b = 6 + e
+print(b)
+# output
+# 10
+
+a = 8
+e = 2
+print(a)
+# output
+# 8
+
+b = 9
+a = 3
+d = b / 7
+print(d)
+# output
+# 1.2857142857142858
+
+b = 3
+e = 6
+print(b / 3)
+# output
+# 1.0
+
+c = 3
+a = 5
+a = 4 * 3
+print(a)
+# output
+# 12
+
+a = 5
+c = a / a
+print(a + a)
+# output
+# 10
+
+b = 8
+a = 9
+e = 5 / 2
+print(b * a)
+# output
+# 72
+
+e = 6
+b = 3
+e = e - 6
+print(e)
+# output
+# 0
+
+c = 7
+a = 3
+a = 2 / c
+print(a)
+# output
+# 0.2857142857142857
+
+a = 2
+d = 8 * 2
+print(a * a)
+# output
+# 4
+
+a = 8
+c = 3
+e = 4 + 1
+print(a / a)
+# output
+# 1.0
+
+c = 4
+b = 2
+d = 6 + 3
+print(b + 9)
+# output
+# 11
+
+a = 5
+d = 5
+print(d)
+# output
+# 5
+
+c = 3
+b = 7
+b = c + c
+print(b / 1)
+# output
+# 6.0
+
+d = 2
+b = 1 / 8
+print(d - d)
+# output
+# 0
+
+a = 5
+e = 5 * 9
+print(e)
+# output
+# 45
+
+c = 6
+print(c - c)
+# output
+# 0
+
+d = 0
+e = d * 1
+print(e)
+# output
+# 0
+
+a = 2
+a = 1
+print(a / 2)
+# output
+# 0.5
+
+d = 7
+d = 2
+print(d)
+# output
+# 2
+
+a = 9
+print(a - a)
+# output
+# 0
+
+c = 9
+d = 7 * c
+print(d)
+# output
+# 63
+
+e = 4
+b = e + e
+print(e / e)
+# output
+# 1.0
+
+d = 8
+d = 1 + 6
+print(d - 2)
+# output
+# 5
+
+d = 5
+print(d + 6)
+# output
+# 11
+
+a = 9
+d = 8
+print(a)
+# output
+# 9
+
+a = 4
+d = 7 + a
+print(a - 9)
+# output
+# -5
+
+d = 6
+b = d * d
+print(b)
+# output
+# 36
+
+b = 0
+a = b * b
+print(b + b)
+# output
+# 0
+
+a = 7
+print(a * a)
+# output
+# 49
+
+d = 9
+c = 7
+print(c + c)
+# output
+# 14
+
+b = 3
+a = 6
+a = 8 - 0
+print(a)
+# output
+# 8
+
+c = 8
+print(c / 4)
+# output
+# 2.0
+
+c = 0
+b = 3 * 6
+print(c - 1)
+# output
+# -1
+
+a = 4
+print(a - a)
+# output
+# 0
+
+e = 4
+d = 2 / e
+print(d)
+# output
+# 0.5
+
+c = 6
+a = 4
+print(c / c)
+# output
+# 1.0
+
+b = 2
+d = 5 * b
+print(b * 0)
+# output
+# 0
+
+c = 4
+d = 8
+c = 7 + 6
+print(c)
+# output
+# 13
+
+e = 7
+e = 8
+c = 3 / 7
+print(c)
+# output
+# 0.42857142857142855
+
+d = 7
+d = 3
+e = d - d
+print(d * 0)
+# output
+# 0
+
+d = 2
+c = 1
+print(d)
+# output
+# 2
+
+d = 4
+print(d)
+# output
+# 4
+
+a = 1
+a = 3
+print(a / 1)
+# output
+# 3.0
+
+a = 7
+e = 4
+d = a / e
+print(d)
+# output
+# 1.75
+
+e = 2
+c = 5
+a = e / 3
+print(e / e)
+# output
+# 1.0
+
+b = 7
+b = 3 / b
+print(b)
+# output
+# 0.42857142857142855
+
+d = 0
+e = d + 4
+print(d * d)
+# output
+# 0
+
+b = 5
+e = 9
+print(b * b)
+# output
+# 25
+
+c = 3
+e = 2
+print(c)
+# output
+# 3
+
+e = 5
+print(e * 5)
+# output
+# 25
+
+b = 1
+c = 5
+e = c * b
+print(c - b)
+# output
+# 4
+
+e = 6
+d = 3 + e
+print(d)
+# output
+# 9
+
+d = 4
+c = 6
+d = 1 - 6
+print(d)
+# output
+# -5
+
+d = 2
+b = 2 * 8
+print(d - d)
+# output
+# 0
+
+e = 1
+a = e + 8
+print(a)
+# output
+# 9
+
+d = 9
+c = 2
+print(c)
+# output
+# 2
+
+a = 2
+a = 4 + a
+print(a)
+# output
+# 6
+
+d = 1
+c = 7
+print(d)
+# output
+# 1
+
+b = 8
+d = 5
+e = 8 - b
+print(d / 3)
+# output
+# 1.6666666666666667
+
+b = 7
+a = b - 9
+print(b - 6)
+# output
+# 1
+
+c = 2
+b = 0 * c
+print(c + c)
+# output
+# 4
+
+d = 4
+e = 0
+b = e * 0
+print(b)
+# output
+# 0
+
+b = 9
+a = 8
+c = b + a
+print(b / 4)
+# output
+# 2.25
+
+b = 0
+d = 8
+print(b * b)
+# output
+# 0
+
+d = 2
+print(d / d)
+# output
+# 1.0
+
+a = 6
+c = 3
+a = 4 / 7
+print(a)
+# output
+# 0.5714285714285714
+
+e = 7
+b = 1
+print(b)
+# output
+# 1
+
+e = 5
+e = 6
+print(e)
+# output
+# 6
+
+a = 4
+d = 2
+print(a)
+# output
+# 4
+
+e = 6
+b = e * e
+print(e / 8)
+# output
+# 0.75
+
+e = 9
+e = e - 7
+print(e)
+# output
+# 2
+
+d = 5
+print(d * d)
+# output
+# 25
+
+b = 1
+c = 0
+print(c / 2)
+# output
+# 0.0
+
+e = 3
+c = 2
+d = 1 + 5
+print(c * c)
+# output
+# 4
+
+e = 8
+b = e / 5
+print(e / 2)
+# output
+# 4.0
+
+a = 7
+print(a + 4)
+# output
+# 11
+
+d = 2
+a = 7
+a = 6 + d
+print(a)
+# output
+# 8
+
+d = 0
+b = 4
+print(d)
+# output
+# 0
+
+c = 7
+c = 7
+print(c / 8)
+# output
+# 0.875
+
+a = 2
+e = 0
+b = 5 - 4
+print(b)
+# output
+# 1
+
+a = 2
+b = 2 / 8
+print(a / 8)
+# output
+# 0.25
+
+c = 1
+a = 2
+c = 2 * 3
+print(c)
+# output
+# 6
+
+b = 4
+d = 9
+print(d + 6)
+# output
+# 15
+
+e = 9
+print(e * e)
+# output
+# 81
+
+e = 2
+a = 1
+print(a + a)
+# output
+# 2
+
+d = 2
+b = 4 * d
+print(b)
+# output
+# 8
+
+b = 5
+d = 5
+print(d - 6)
+# output
+# -1
+
+b = 7
+e = 4
+d = 0 - b
+print(b - e)
+# output
+# 3
+
+d = 6
+b = 5
+print(d - d)
+# output
+# 0
+
+a = 9
+e = 9
+d = 8 + 1
+print(a * 0)
+# output
+# 0
+
+b = 8
+e = 9
+d = 0 - b
+print(e - b)
+# output
+# 1
+
+b = 8
+b = 5
+print(b)
+# output
+# 5
+
+d = 8
+b = 2
+e = 2 + b
+print(e)
+# output
+# 4
+
+d = 1
+d = 5 / 7
+print(d / d)
+# output
+# 1.0
+
+d = 7
+a = 4 * d
+print(d - 3)
+# output
+# 4
+
+c = 6
+b = 3 + 1
+print(b)
+# output
+# 4
+
+d = 3
+d = 8 - d
+print(d + d)
+# output
+# 10
+
+d = 2
+d = 7
+d = 7 + 4
+print(d / 9)
+# output
+# 1.2222222222222223
+
+b = 2
+a = b - b
+print(b - 6)
+# output
+# -4
+
+e = 6
+d = 1 - 3
+print(d)
+# output
+# -2
+
+c = 3
+e = 9
+e = 0 * c
+print(e)
+# output
+# 0
+
+a = 9
+e = 1 - a
+print(a - 1)
+# output
+# 8
+
+d = 9
+e = 9
+b = e + 2
+print(e - e)
+# output
+# 0
+
+c = 3
+print(c + 3)
+# output
+# 6
+
+a = 3
+c = 0
+print(c)
+# output
+# 0
+
+a = 1
+d = 5 * 3
+print(a + a)
+# output
+# 2
+
+b = 4
+e = 3
+a = b - 7
+print(e / e)
+# output
+# 1.0
+
+b = 4
+c = 4
+print(b + 5)
+# output
+# 9
+
+a = 5
+print(a / 3)
+# output
+# 1.6666666666666667
+
+a = 0
+e = a + a
+print(a + a)
+# output
+# 0
+
+e = 6
+b = 1
+print(b - 2)
+# output
+# -1
+
+b = 7
+e = 2
+b = 0 * 7
+print(b)
+# output
+# 0
+
+d = 7
+print(d / d)
+# output
+# 1.0
+
+a = 3
+print(a + 3)
+# output
+# 6
+
+d = 9
+e = 5
+print(d)
+# output
+# 9
+
+b = 6
+b = 4 - b
+print(b + 0)
+# output
+# -2
+
+b = 6
+c = 1
+print(c / 3)
+# output
+# 0.3333333333333333
+
+a = 2
+e = 4
+a = a / 7
+print(a + a)
+# output
+# 0.5714285714285714
+
+a = 4
+c = 0
+print(c - c)
+# output
+# 0
+
+a = 6
+a = 6
+c = 9 - 7
+print(a * 4)
+# output
+# 24
+
+c = 1
+a = 4 / 3
+print(c - 5)
+# output
+# -4
+
+e = 8
+d = 2 - 0
+print(d)
+# output
+# 2
+
+a = 2
+c = a * 6
+print(a / a)
+# output
+# 1.0
+
+a = 3
+c = 5
+e = 2 + a
+print(e)
+# output
+# 5
+
+a = 5
+b = 7
+print(b / 2)
+# output
+# 3.5
+
+d = 1
+b = 4
+print(b)
+# output
+# 4
+
+d = 9
+c = d / d
+print(c)
+# output
+# 1.0
+
+e = 0
+c = e / 4
+print(e + 6)
+# output
+# 6
+
+c = 0
+a = 3
+print(c + a)
+# output
+# 3
+
+b = 7
+c = 9
+print(b)
+# output
+# 7
+
+b = 8
+c = 3
+print(b)
+# output
+# 8
+
+e = 1
+e = 6 / 6
+print(e)
+# output
+# 1.0
+
+e = 7
+print(e - e)
+# output
+# 0
+
+c = 4
+print(c * 4)
+# output
+# 16
+
+c = 6
+print(c / 4)
+# output
+# 1.5
+
+c = 5
+print(c + c)
+# output
+# 10
+
+c = 4
+b = 5
+print(c + c)
+# output
+# 8
+
+e = 2
+print(e - 7)
+# output
+# -5
+
+c = 2
+d = 9
+print(d)
+# output
+# 9
+
+b = 5
+c = 4
+print(b)
+# output
+# 5
+
+c = 0
+b = 3
+a = 0 + 4
+print(b * 6)
+# output
+# 18
+
+d = 9
+c = 4
+e = d / c
+print(e)
+# output
+# 2.25
+
+b = 8
+b = 1
+d = b - 6
+print(d)
+# output
+# -5
+
+e = 7
+d = e - 1
+print(e + e)
+# output
+# 14
+
+e = 8
+c = 7
+e = e - c
+print(e)
+# output
+# 1
+
+d = 2
+e = 6
+print(e - 2)
+# output
+# 4
+
+c = 2
+d = 6
+print(c / d)
+# output
+# 0.3333333333333333
+
+d = 2
+print(d - 0)
+# output
+# 2
+
+b = 2
+d = 4
+print(b / 1)
+# output
+# 2.0
+
+a = 2
+e = 7
+print(e)
+# output
+# 7
+
+a = 4
+c = 7
+print(a)
+# output
+# 4
+
+a = 7
+a = 7
+print(a + a)
+# output
+# 14
+
+b = 8
+b = 5 * 4
+print(b)
+# output
+# 20
+
+d = 0
+print(d * d)
+# output
+# 0
+
+d = 7
+b = 7 + d
+print(b)
+# output
+# 14
+
+d = 4
+a = 2 * d
+print(a)
+# output
+# 8
+
+d = 4
+d = 3
+b = d + 7
+print(b)
+# output
+# 10
+
+e = 2
+a = 6
+c = a / 4
+print(c)
+# output
+# 1.5
+
+c = 0
+a = c - c
+print(a)
+# output
+# 0
+
+e = 5
+c = 0
+print(e + 1)
+# output
+# 6
+
+e = 2
+b = e - e
+print(e / e)
+# output
+# 1.0
+
+d = 7
+d = 5
+print(d)
+# output
+# 5
+
+c = 8
+e = c + c
+print(e)
+# output
+# 16
+
+c = 4
+print(c - c)
+# output
+# 0
+
+e = 9
+e = 7 * e
+print(e + 7)
+# output
+# 70
+
+c = 0
+d = 4
+e = c + 6
+print(e)
+# output
+# 6
+
+a = 7
+d = 2
+print(a)
+# output
+# 7
+
+b = 8
+c = 9
+d = c - b
+print(d)
+# output
+# 1
+
+d = 7
+e = 5 + d
+print(e)
+# output
+# 12
+
+d = 8
+d = 1
+e = d + d
+print(d / 5)
+# output
+# 0.2
+
+b = 8
+b = 2
+a = 3 / b
+print(a)
+# output
+# 1.5
+
+d = 4
+a = 2 * 5
+print(d / 6)
+# output
+# 0.6666666666666666
+
+a = 3
+a = a * a
+print(a)
+# output
+# 9
+
+a = 9
+e = 3
+print(a + 1)
+# output
+# 10
+
+e = 2
+d = e / e
+print(d)
+# output
+# 1.0
+
+d = 0
+a = 3 - d
+print(a)
+# output
+# 3
+
+d = 7
+a = 6
+print(a)
+# output
+# 6
+
+d = 1
+b = 5
+print(b - 6)
+# output
+# -1
+
+c = 9
+e = 3 - 8
+print(c + 9)
+# output
+# 18
+
+e = 9
+e = e / e
+print(e - 0)
+# output
+# 1.0
+
+d = 4
+print(d + 4)
+# output
+# 8
+
+b = 7
+c = 1
+print(c + 7)
+# output
+# 8
+
+a = 2
+b = 1
+print(a / 9)
+# output
+# 0.2222222222222222
+
+e = 6
+a = 7
+d = a - 1
+print(d)
+# output
+# 6
+
+d = 1
+a = 6
+print(d)
+# output
+# 1
+
+c = 0
+d = 5
+print(c)
+# output
+# 0
+
+c = 6
+e = 0
+print(e + 1)
+# output
+# 1
+
+e = 8
+c = 9
+c = 5 - 3
+print(c)
+# output
+# 2
+
+c = 8
+c = 0
+b = 9 * c
+print(b)
+# output
+# 0
+
+d = 8
+e = 8 * d
+print(d + d)
+# output
+# 16
+
+d = 0
+d = 7
+print(d + 3)
+# output
+# 10
+
+e = 8
+a = 1
+c = 5 * 9
+print(a * 9)
+# output
+# 9
+
+e = 7
+d = 0
+e = 9 - 1
+print(e - 7)
+# output
+# 1
+
+a = 2
+print(a * 6)
+# output
+# 12
+
+c = 3
+a = 2 * 7
+print(c - c)
+# output
+# 0
+
+c = 8
+c = 5 / c
+print(c + c)
+# output
+# 1.25
+
+e = 8
+c = 7
+print(c)
+# output
+# 7
+
+b = 8
+a = 6
+print(b)
+# output
+# 8
+
+e = 9
+b = 3
+print(b)
+# output
+# 3
+
+e = 2
+b = 4
+c = e + 0
+print(b * 1)
+# output
+# 4
+
+b = 6
+c = 3
+b = 3 - 3
+print(c - c)
+# output
+# 0
+
+e = 0
+d = e - 4
+print(d)
+# output
+# -4
+
+d = 9
+print(d * 6)
+# output
+# 54
+
+a = 8
+a = 9
+d = a / 8
+print(d)
+# output
+# 1.125
+
+d = 6
+a = d - 2
+print(a)
+# output
+# 4
+
+d = 5
+d = 3
+a = d * d
+print(d - 8)
+# output
+# -5
+
+a = 9
+d = 2
+d = a + d
+print(d)
+# output
+# 11
+
+e = 2
+c = 2
+print(c * 6)
+# output
+# 12
+
+d = 9
+d = 6
+b = d - 0
+print(b)
+# output
+# 6
+
+d = 9
+b = 4
+a = d + 3
+print(a)
+# output
+# 12
+
+c = 1
+print(c - c)
+# output
+# 0
+
+b = 7
+b = 7
+print(b)
+# output
+# 7
+
+e = 1
+c = e + e
+print(c)
+# output
+# 2
+
+b = 5
+d = 1
+e = d - 7
+print(d + b)
+# output
+# 6
+
+e = 2
+a = 6
+print(a)
+# output
+# 6
+
+e = 6
+e = 7
+print(e)
+# output
+# 7
+
+e = 7
+print(e / 7)
+# output
+# 1.0
+
+c = 6
+c = 1 * 4
+print(c)
+# output
+# 4
+
+d = 8
+e = 3
+a = d / d
+print(e / e)
+# output
+# 1.0
+
+d = 0
+b = 2
+print(d * d)
+# output
+# 0
+
+b = 2
+print(b - b)
+# output
+# 0
+
+c = 5
+c = 0
+print(c)
+# output
+# 0
+
+e = 7
+e = 6
+b = e * 5
+print(e * e)
+# output
+# 36
+
+b = 8
+a = 8
+print(b - 4)
+# output
+# 4
+
+e = 3
+c = e + e
+print(e - e)
+# output
+# 0
+
+b = 0
+a = 4
+print(a * 1)
+# output
+# 4
+
+b = 9
+b = 9
+d = 7 + b
+print(d)
+# output
+# 16
+
+e = 3
+b = 7
+print(b)
+# output
+# 7
+
+c = 7
+print(c * 4)
+# output
+# 28
+
+a = 0
+print(a)
+# output
+# 0
+
+c = 0
+c = 6 - 8
+print(c)
+# output
+# -2
+
+b = 9
+e = 1
+print(e)
+# output
+# 1
+
+b = 8
+b = 9 - 6
+print(b)
+# output
+# 3
+
+b = 4
+c = 7
+c = c / c
+print(c)
+# output
+# 1.0
+
+e = 3
+print(e + 8)
+# output
+# 11
+
+e = 2
+d = e + e
+print(e * e)
+# output
+# 4
+
+e = 3
+e = e + 5
+print(e)
+# output
+# 8
+
+c = 2
+b = c * c
+print(c / 1)
+# output
+# 2.0
+
+d = 5
+d = d / d
+print(d - 4)
+# output
+# -3.0
+
+d = 3
+b = 4
+d = 4 / 3
+print(b * b)
+# output
+# 16
+
+e = 6
+print(e + e)
+# output
+# 12
+
+b = 8
+c = 7 / 7
+print(b + b)
+# output
+# 16
+
+b = 8
+c = 7
+print(b)
+# output
+# 8
+
+c = 2
+e = 2
+print(c - 1)
+# output
+# 1
+
+c = 4
+b = 1
+print(c + c)
+# output
+# 8
+
+a = 6
+e = 6
+a = e * a
+print(a)
+# output
+# 36
+
+e = 1
+a = 0 - 8
+print(a)
+# output
+# -8
+
+c = 1
+print(c + c)
+# output
+# 2
+
+e = 3
+print(e - e)
+# output
+# 0
+
+d = 6
+e = 6
+print(e)
+# output
+# 6
+
+d = 8
+d = 5
+e = 9 - d
+print(e)
+# output
+# 4
+
+d = 3
+d = d / d
+print(d - 8)
+# output
+# -7.0
+
+a = 8
+a = 9
+print(a)
+# output
+# 9
+
+a = 6
+b = 6
+a = 3 - 3
+print(a)
+# output
+# 0
+
+c = 5
+print(c)
+# output
+# 5
+
+c = 5
+e = 6
+e = e + 2
+print(e)
+# output
+# 8
+
+a = 9
+d = 1
+print(a * d)
+# output
+# 9
+
+b = 3
+e = 1
+d = e * 6
+print(d)
+# output
+# 6
+
+e = 2
+e = 6
+a = e - e
+print(e + e)
+# output
+# 12
+
+e = 4
+a = 7 - 0
+print(e * e)
+# output
+# 16
+
+d = 9
+e = 6
+print(e)
+# output
+# 6
+
+d = 7
+e = 8
+print(e / d)
+# output
+# 1.1428571428571428
+
+d = 1
+a = 4 + 6
+print(a)
+# output
+# 10
+
+d = 7
+b = 9 / d
+print(d - d)
+# output
+# 0
+
+e = 8
+d = 5
+a = e - d
+print(e / e)
+# output
+# 1.0
+
+b = 2
+a = 0
+print(a * 2)
+# output
+# 0
+
diff --git a/data/test.bin b/data/test.bin
new file mode 100644
index 0000000..3e30074
Binary files /dev/null and b/data/test.bin differ
diff --git a/data/test.txt b/data/test.txt
new file mode 100644
index 0000000..dc9b283
--- /dev/null
+++ b/data/test.txt
@@ -0,0 +1,608 @@
+c = 3
+e = 9
+e = 0 * c
+print(e)
+# output
+# 0
+
+e = 2
+a = 6
+c = a / 4
+print(c)
+# output
+# 1.5
+
+e = 6
+c = 3 / e
+print(c)
+# output
+# 0.5
+
+e = 8
+a = 3
+print(e / a)
+# output
+# 2.6666666666666665
+
+a = 8
+e = a + 1
+print(a / a)
+# output
+# 1.0
+
+e = 6
+a = 7
+d = a - 1
+print(d)
+# output
+# 6
+
+d = 9
+print(d * d)
+# output
+# 81
+
+c = 4
+print(c + 3)
+# output
+# 7
+
+d = 7
+print(d / d)
+# output
+# 1.0
+
+d = 5
+a = 0
+print(a + d)
+# output
+# 5
+
+a = 6
+b = 0
+a = 3 - 3
+print(b / 9)
+# output
+# 0.0
+
+a = 0
+a = 0
+print(a)
+# output
+# 0
+
+c = 3
+e = 7
+print(c * c)
+# output
+# 9
+
+a = 2
+e = 0 / 8
+print(a * a)
+# output
+# 4
+
+e = 9
+a = 9
+print(a * e)
+# output
+# 81
+
+d = 8
+e = 4
+print(e + d)
+# output
+# 12
+
+a = 2
+c = a - 6
+print(a / a)
+# output
+# 1.0
+
+a = 6
+b = 7
+d = a - 0
+print(d)
+# output
+# 6
+
+b = 7
+e = 2
+b = 0 * 7
+print(b)
+# output
+# 0
+
+c = 9
+e = 4
+print(c - 5)
+# output
+# 4
+
+d = 4
+d = 7 * 4
+print(d * d)
+# output
+# 784
+
+a = 4
+print(a / a)
+# output
+# 1.0
+
+e = 3
+b = 4
+a = e - 6
+print(a)
+# output
+# -3
+
+d = 5
+d = 9 - 7
+print(d)
+# output
+# 2
+
+b = 7
+b = 3 / b
+print(b)
+# output
+# 0.42857142857142855
+
+a = 9
+b = a + a
+print(a / a)
+# output
+# 1.0
+
+a = 0
+d = a * 9
+print(d)
+# output
+# 0
+
+e = 1
+c = e + e
+print(c)
+# output
+# 2
+
+e = 3
+c = e + 2
+print(e + e)
+# output
+# 6
+
+a = 4
+e = 0 * 7
+print(a + 2)
+# output
+# 6
+
+b = 6
+b = 5
+b = b - b
+print(b / 3)
+# output
+# 0.0
+
+b = 0
+d = 9 * 1
+print(d)
+# output
+# 9
+
+a = 4
+a = 2
+print(a)
+# output
+# 2
+
+e = 9
+b = 3
+print(b)
+# output
+# 3
+
+d = 6
+c = 4 + 1
+print(d + 2)
+# output
+# 8
+
+d = 8
+c = d - 6
+print(c)
+# output
+# 2
+
+a = 9
+d = 1
+print(a * d)
+# output
+# 9
+
+c = 4
+a = 4
+print(a)
+# output
+# 4
+
+b = 5
+a = 1
+b = a - a
+print(b)
+# output
+# 0
+
+d = 2
+c = 1
+print(d)
+# output
+# 2
+
+e = 3
+b = 5
+print(b * 9)
+# output
+# 45
+
+e = 9
+d = 5
+d = e * d
+print(e / d)
+# output
+# 0.2
+
+c = 5
+print(c * c)
+# output
+# 25
+
+e = 2
+c = 8 / e
+print(e * 9)
+# output
+# 18
+
+c = 0
+c = 6 - 8
+print(c)
+# output
+# -2
+
+e = 7
+a = 2
+d = 5 * 7
+print(a * 7)
+# output
+# 14
+
+e = 1
+print(e * e)
+# output
+# 1
+
+d = 6
+b = d * d
+print(b)
+# output
+# 36
+
+e = 8
+b = e / 5
+print(e / 2)
+# output
+# 4.0
+
+d = 6
+c = 3
+a = 9 + d
+print(a)
+# output
+# 15
+
+d = 4
+a = 8
+print(a * a)
+# output
+# 64
+
+e = 6
+print(e + e)
+# output
+# 12
+
+b = 3
+a = 3
+print(a)
+# output
+# 3
+
+b = 9
+b = 9
+print(b - 5)
+# output
+# 4
+
+a = 8
+print(a)
+# output
+# 8
+
+b = 2
+e = 2
+print(e)
+# output
+# 2
+
+e = 1
+c = e / 7
+print(e - e)
+# output
+# 0
+
+e = 3
+c = 0
+print(c)
+# output
+# 0
+
+a = 1
+a = 3
+print(a / 1)
+# output
+# 3.0
+
+c = 3
+print(c / c)
+# output
+# 1.0
+
+c = 0
+c = c - c
+print(c)
+# output
+# 0
+
+a = 7
+d = 2
+print(a)
+# output
+# 7
+
+c = 3
+a = 0
+print(c - 4)
+# output
+# -1
+
+e = 9
+a = 5
+print(e)
+# output
+# 9
+
+d = 3
+b = 4
+d = 4 / 3
+print(b * b)
+# output
+# 16
+
+c = 5
+d = 5
+d = c - 4
+print(d)
+# output
+# 1
+
+e = 6
+b = 3
+e = e - 6
+print(e)
+# output
+# 0
+
+d = 4
+c = 6
+print(d + c)
+# output
+# 10
+
+b = 8
+a = 9
+e = 5 / 2
+print(b * a)
+# output
+# 72
+
+e = 4
+print(e)
+# output
+# 4
+
+b = 2
+c = 3
+print(b / b)
+# output
+# 1.0
+
+d = 8
+d = 0
+c = 7 - 1
+print(c)
+# output
+# 6
+
+e = 9
+print(e * e)
+# output
+# 81
+
+e = 1
+a = 6
+print(a / 6)
+# output
+# 1.0
+
+d = 5
+d = 9
+e = 0 - d
+print(d * d)
+# output
+# 81
+
+d = 5
+d = d * d
+print(d)
+# output
+# 25
+
+b = 7
+a = 2
+print(a)
+# output
+# 2
+
+b = 3
+e = 1
+e = 9 + e
+print(e)
+# output
+# 10
+
+e = 9
+e = 7 * e
+print(e + 7)
+# output
+# 70
+
+e = 3
+c = 2
+d = 1 + 5
+print(c * c)
+# output
+# 4
+
+d = 9
+b = 5
+print(d)
+# output
+# 9
+
+d = 6
+e = 6
+print(e)
+# output
+# 6
+
+e = 6
+e = 7
+print(e)
+# output
+# 7
+
+b = 9
+a = 2
+b = a - 9
+print(a - 4)
+# output
+# -2
+
+e = 2
+c = 3
+print(c)
+# output
+# 3
+
+b = 4
+b = 3 - b
+print(b)
+# output
+# -1
+
+d = 0
+d = 7
+print(d + 3)
+# output
+# 10
+
+d = 9
+print(d - 9)
+# output
+# 0
+
+c = 4
+print(c)
+# output
+# 4
+
+c = 3
+e = 2
+print(c)
+# output
+# 3
+
+e = 6
+c = 4
+print(e / 9)
+# output
+# 0.6666666666666666
+
+a = 4
+print(a)
+# output
+# 4
+
+c = 8
+c = 0
+b = 9 * c
+print(b)
+# output
+# 0
+
+a = 8
+a = 9
+print(a)
+# output
+# 9
+
+a = 0
+e = a + a
+print(a + a)
+# output
+# 0
+
+a = 7
+e = 6
+print(a + a)
+# output
+# 14
+
+b = 8
+e = b + b
+print(e)
+# output
+# 16
+
+a = 3
+e = 9
+b = e - a
+print(b)
+# output
+# 6
+
+e = 4
+e = 4 * e
+print(e / 8)
+# output
+# 2.0
+
+d = 7
+c = 2 + 8
+print(d * 1)
+# output
+# 7
\ No newline at end of file
diff --git a/data/tinypy_generator.py b/data/tinypy_generator.py
new file mode 100644
index 0000000..542be31
--- /dev/null
+++ b/data/tinypy_generator.py
@@ -0,0 +1,332 @@
+from anytree import Node, RenderTree
+import random
+from io import StringIO
+from contextlib import redirect_stdout
+import argparse
+import time
+from tqdm.auto import tqdm
+import hashlib
+import os
+import psutil
+
+
+class CodeGenerator:
+ def __init__(self):
+ """
+ Initialize the CodeGenerator object with the given context-free grammar rules.
+
+ """
+
+ self.init_count = 0
+ self.max_init = 0
+
+ # Dictionary containing context-free grammar rules.
+ self.cfg_rules = {
+ # Variables and digits
+ "VARIABLE": ["a", "b", "c", "d", "e"],
+ "DIGIT": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"],
+
+ # Operators
+ "ARITHMETIC_OPERATOR": ["+", "-", "*", "/"],
+ "RELATIONAL_OPERATOR": ["<", ">", "<=", ">=", "!=", "=="],
+ "LOGICAL_OPERATOR_INFIX": ["and", "or"],
+ "LOGICAL_OPERATOR_PREFIX": ["not"],
+ "LOGICAL_OPERATOR": ["LOGICAL_OPERATOR_INFIX", "LOGICAL_OPERATOR_PREFIX"],
+ "OPERATOR": ["ARITHMETIC_OPERATOR"],
+
+ # Formatting
+ "NEW_LINE": ["\n"],
+ "TAB_INDENT": ["\t"],
+ "BRACKET_OPEN": ['('],
+ "BRACKET_CLOSE": [')'],
+ "EQUALS": ["="],
+ "COLON": [":"],
+ "COMMA": [","],
+
+
+ # Keywords
+ "IF": ["if"],
+ "ELIF": ["elif"],
+ "ELSE": ["else"],
+ "FOR": ["for"],
+ "IN": ["in"],
+ "RANGE": ["range"],
+ "WHILE": ["while"],
+ "PRINT": ["print"],
+
+ # Terms and expressions
+ "TERM": ["EXPRESSION_IDENTIFIER", "DIGIT"],
+ "EXPRESSION": ["TERM SPACE OPERATOR SPACE TERM"],
+ "ENCLOSED_EXPRESSION": ["BRACKET_OPEN EXPRESSION BRACKET_CLOSE"],
+ "DISPLAY_EXPRESSION": ["EXPRESSION_IDENTIFIER SPACE OPERATOR SPACE EXPRESSION_IDENTIFIER" ,
+ "EXPRESSION_IDENTIFIER SPACE OPERATOR SPACE DIGIT"],
+
+ # Initializations and assignments
+ "IDENTIFIER_INITIALIZATION": ["IDENTIFIER_INITIALIZATION INITIALIZATION",
+ "INITIALIZATION"],
+
+ "INITIALIZATION": ["VARIABLE SPACE EQUALS SPACE DIGIT NEW_LINE"],
+
+ "SIMPLE_ASSIGNMENTS": ["VARIABLE SPACE EQUALS SPACE EXPRESSION NEW_LINE" , ""],
+ "ADVANCED_ASSIGNMENTS": ["VARIABLE SPACE EQUALS SPACE SIMPLE_ARITHMETIC_EVALUATION NEW_LINE",
+ "VARIABLE SPACE EQUALS SPACE EXPRESSION NEW_LINE" ,
+ ""],
+
+ "SIMPLE_ARITHMETIC_EVALUATION": ["SIMPLE_ARITHMETIC_EVALUATION ARITHMETIC_OPERATOR ENCLOSED_EXPRESSION",
+ "ENCLOSED_EXPRESSION",
+ ],
+
+ # Conditions
+ "SIMPLE_IF_STATEMENT": ["IF SPACE CONDITION SPACE COLON NEW_LINE"],
+ "ADVANCED_IF_STATEMENT": ["IF SPACE CHAIN_CONDITION SPACE COLON NEW_LINE"],
+ "SIMPLE_ELIF_STATEMENT": ["ELIF SPACE CONDITION SPACE COLON NEW_LINE"],
+ "ADVANCED_ELIF_STATEMENT": ["ELIF SPACE CHAIN_CONDITION SPACE COLON NEW_LINE"],
+ "ELSE_STATEMENT": ["ELSE SPACE COLON NEW_LINE"],
+
+ "CHAIN_CONDITION": ["CHAIN_CONDITION SPACE LOGICAL_OPERATOR_INFIX SPACE ENCLOSED_CONDITION",
+ "LOGICAL_OPERATOR_PREFIX SPACE ENCLOSED_CONDITION",
+ "ENCLOSED_CONDITION"],
+ "ENCLOSED_CONDITION": ["BRACKET_OPEN CONDITION BRACKET_CLOSE"],
+ "CONDITION": ["OPTIONAL_NOT CONDITION_EXPRESSION", "CONDITION_EXPRESSION"],
+ "CONDITION_EXPRESSION": ["EXPRESSION_IDENTIFIER SPACE RELATIONAL_OPERATOR SPACE EXPRESSION_IDENTIFIER",
+ "EXPRESSION_IDENTIFIER SPACE RELATIONAL_OPERATOR SPACE DIGIT"],
+ "OPTIONAL_NOT": ["LOGICAL_OPERATOR_PREFIX SPACE", "SPACE"],
+
+ # Loops
+ "FOR_HEADER": ["FOR SPACE EXPRESSION_IDENTIFIER SPACE IN SPACE RANGE BRACKET_OPEN INITIAL COMMA SPACE FINAL COMMA SPACE STEP BRACKET_CLOSE SPACE COLON",
+ "FOR SPACE EXPRESSION_IDENTIFIER SPACE IN SPACE RANGE BRACKET_OPEN INITIAL COMMA SPACE FINAL BRACKET_CLOSE SPACE COLON"],
+ "INITIAL": ["DIGIT"],
+ "FOR_LOOP": ["FOR_HEADER NEW_LINE TAB_INDENT DISPLAY"],
+ "ADVANCED_FOR_LOOP": ["FOR_LOOP",
+ "FOR_HEADER NEW_LINE TAB_INDENT ADVANCED_DISPLAY"],
+
+
+ # Displaying
+ "DISPLAY" : ["PRINT BRACKET_OPEN DISPLAY_IDENTIFIER BRACKET_CLOSE"],
+ "ADVANCED_DISPLAY" : ["DISPLAY",
+ "PRINT BRACKET_OPEN DISPLAY_EXPRESSION BRACKET_CLOSE"],
+
+
+ "LEVEL1.1": ["IDENTIFIER_INITIALIZATION SIMPLE_ASSIGNMENTS ADVANCED_DISPLAY"],
+ "LEVEL1.2": ["IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_DISPLAY"],
+ "LEVEL2.1": ["IDENTIFIER_INITIALIZATION SIMPLE_IF_STATEMENT TAB_INDENT DISPLAY",
+ "IDENTIFIER_INITIALIZATION SIMPLE_IF_STATEMENT TAB_INDENT DISPLAY NEW_LINE SIMPLE_ELIF_STATEMENT TAB_INDENT DISPLAY NEW_LINE ELSE_STATEMENT TAB_INDENT DISPLAY",
+ "IDENTIFIER_INITIALIZATION SIMPLE_IF_STATEMENT TAB_INDENT DISPLAY NEW_LINE ELSE_STATEMENT TAB_INDENT DISPLAY"],
+ "LEVEL2.2": ["IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_IF_STATEMENT TAB_INDENT ADVANCED_DISPLAY",
+ "IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_IF_STATEMENT TAB_INDENT ADVANCED_DISPLAY NEW_LINE ADVANCED_ELIF_STATEMENT TAB_INDENT ADVANCED_DISPLAY NEW_LINE ELSE_STATEMENT TAB_INDENT ADVANCED_DISPLAY",
+ "IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_IF_STATEMENT TAB_INDENT ADVANCED_DISPLAY NEW_LINE ELSE_STATEMENT TAB_INDENT ADVANCED_DISPLAY"],
+ "LEVEL3.1": ["IDENTIFIER_INITIALIZATION FOR_LOOP"],
+ "LEVEL3.2": ["IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_FOR_LOOP"],
+
+ "ALL": ["LEVEL1.1", "LEVEL1.2", "LEVEL2.1", "LEVEL2.2", "LEVEL3.1", "LEVEL3.2"],
+
+ }
+
+
+
+ def generate_code(self, symbol, assigned_identifiers, last_variable, for_init_step, parent=None ):
+ """
+ Generate code recursively based on the context-free grammar rules.
+
+ Parameters:
+ - symbol (str): The symbol to generate code for.
+ - assigned_identifiers (set): Set of assigned identifiers.
+ - last_variable (set): Set of the last used variables.
+ - parent (Node): Parent node in the syntax tree.
+
+ Returns:
+ - str: The generated code.
+ """
+ node = Node(symbol, parent=parent)
+
+ if symbol in self.cfg_rules:
+ if symbol == "IDENTIFIER_INITIALIZATION":
+ if self.init_count < self.max_init:
+ self.init_count += 1
+ else:
+ symbol = "INITIALIZATION"
+
+ rule = random.choice(self.cfg_rules[symbol])
+ symbols = rule.split(" ")
+
+ generated_symbols = [self.generate_code(s, assigned_identifiers, last_variable, for_init_step, node) for s in symbols]
+
+ if symbol == "INITIAL":
+ init = generated_symbols[0]
+ for_init_step["initial_value"] = init
+
+
+ if symbol == "INITIALIZATION":
+ assigned_identifiers.add(generated_symbols[0])
+
+ if (symbol == "SIMPLE_ASSIGNMENTS") or (symbol == "ADVANCED_ASSIGNMENTS"):
+ if generated_symbols[0]:
+ last_variable.add(generated_symbols[0])
+
+ return ''.join(generated_symbols)
+
+ elif symbol == "FINAL":
+
+ initial_value = for_init_step.get("initial_value", "0")
+
+ # Generate valid step_value and execution_count
+ valid_values = [(1, 2), (2, 1), (2, 2), (2, 3), (3, 2)]
+ step_value, execution_count = random.choice(valid_values)
+ for_init_step["step"] = str(step_value)
+
+ final_value = step_value * execution_count + int(initial_value) - 1
+ return str(final_value)
+
+
+
+ elif symbol == "STEP":
+
+ return for_init_step.get("step", "0")
+
+ elif symbol == "EXPRESSION_IDENTIFIER":
+ identifier = random.choice(tuple(assigned_identifiers)) if assigned_identifiers else random.choice(self.cfg_rules["DIGIT"])
+ return identifier
+
+ elif symbol == "DISPLAY_IDENTIFIER":
+ try:
+ return f"{tuple(last_variable)[0]}"
+ except:
+ return f"{random.choice(tuple(assigned_identifiers))}"
+ else:
+ return symbol
+
+
+
+ def print_tree(self, root):
+ """
+ Print the syntax tree using the RenderTree utility from the anytree module.
+
+ Parameters:
+ - root (Node): The root node of the syntax tree.
+ """
+ for pre, _, node in RenderTree(root):
+ print(f"{pre}{node.name}")
+
+ def generate_program(self, level):
+ """
+ Generate a program based on the specified level.
+
+ Parameters:
+ - level (str): The level of the program.
+
+ Returns:
+ - Tuple[Node, str]: The syntax tree root node and the generated program.
+ """
+ assigned = set()
+ last_variable = set()
+ for_init_step = {}
+ root = Node("ROOT")
+
+ self.init_count = 0
+ if level == "1.1":
+ self.max_init = 2
+ elif level == "1.2":
+ self.max_init = 3
+ elif level == "2.1":
+ self.max_init = 2
+ elif level == "3.1":
+ self.max_init = 2
+ elif level == "3.2":
+ self.max_init = 4
+ else:
+ self.max_init = 5
+
+ if level == "ALL" :
+ level_passed = level
+ else :
+ level_passed = "LEVEL" + level
+
+ program = self.generate_code(level_passed, assigned, last_variable, for_init_step, root)
+
+ return root, program.replace("SPACE", " ")
+
+ def memory_usage(self):
+ process = psutil.Process(os.getpid())
+ mem_info = process.memory_info()
+ return mem_info.rss
+
+ def generate_and_write_programs(self, num_programs, level, filename='data.txt', deduplicate=True):
+ """
+ Generate and write a specified number of programs to a file.
+
+ Parameters:
+ - num_programs (int): Number of programs to generate and write.
+ - level (str): The level of the programs.
+ - filename (str): Name of the file to write the programs (default is 'data.txt').
+ - deduplicate (bool, optional): Whether to perform deduplication of generated programs (default is True).
+ """
+ start_time = time.time()
+ start_mem = self.memory_usage()
+ max_tries = 1000
+ num_tries = 0
+
+ with open(filename, 'w') as file:
+
+ generated_programs = 0
+ hashes = set()
+ pbar = tqdm(desc="Generation", total=num_programs)
+ while generated_programs < num_programs:
+ try:
+ root, program = self.generate_program(level)
+ code = program + "\n# output"
+
+ SIO = StringIO()
+ with redirect_stdout(SIO):
+ exec(code)
+ output = SIO.getvalue().strip()
+
+ output = '\n'.join([f'# {line}' if line else f'# ' for line in output.split('\n')])
+ result = f"""{code}\n{output}"""
+
+ program_hash = hashlib.sha256(result.encode('utf-8')).hexdigest()
+
+ if deduplicate:
+ if program_hash not in hashes:
+ hashes.add(program_hash)
+ file.write(result + '\n\n')
+ generated_programs += 1
+ pbar.update(1)
+ num_tries = 0
+ else:
+ num_tries += 1
+ if num_tries >= max_tries:
+ print("Hit max tries in deduplication, stopping generation.")
+ break
+ else:
+ file.write(result + '\n\n')
+
+ generated_programs += 1
+ pbar.update(1)
+
+ except Exception as e:
+ continue
+
+ pbar.close()
+ end_time = time.time()
+ end_mem = self.memory_usage()
+ deduplication_info = "with deduplication" if deduplicate else "without deduplication"
+ print(f"Code generation completed in {end_time - start_time:.2f} seconds.")
+ print(f"Memory used during code generation: {end_mem - start_mem} bytes")
+ print(f"Generated {generated_programs} {'unique ' if deduplicate else ''}programs {deduplication_info}.")
+ print(f"Programs are saved to {filename}.")
+
+
+def main():
+ parser = argparse.ArgumentParser(description='Generate and write programs based on a specified level. ')
+ parser.add_argument('--num_programs', type=int, default=1000, help='Number of programs to generate and write (default is 1000)')
+ parser.add_argument('--level', default="ALL", help='The level of the programs (1.1, 1.2, 2.1, 2.2, 3.1, 3.2, ALL)')
+ parser.add_argument('--filename', default='data.txt', help='Name of the file to write the programs (default is data.txt)')
+ parser.add_argument('--deduplicate', action='store_true', default=True, help='Perform deduplication of generated programs (default is True)a')
+
+ args = parser.parse_args()
+
+ code_generator = CodeGenerator()
+ code_generator.generate_and_write_programs(num_programs=args.num_programs, level=args.level, filename=args.filename, deduplicate=args.deduplicate)
+
+if __name__ == "__main__":
+ main()
diff --git a/data/train.bin b/data/train.bin
new file mode 100644
index 0000000..4c8911d
Binary files /dev/null and b/data/train.bin differ
diff --git a/data/train.txt b/data/train.txt
new file mode 100644
index 0000000..add0fce
--- /dev/null
+++ b/data/train.txt
@@ -0,0 +1,4870 @@
+c = 3
+a = 7
+b = 3 * 9
+print(a + 6)
+# output
+# 13
+
+e = 2
+print(e - 3)
+# output
+# -1
+
+e = 2
+b = 4
+c = e + 0
+print(b * 1)
+# output
+# 4
+
+d = 8
+d = 1 + 6
+print(d - 2)
+# output
+# 5
+
+a = 2
+print(a / a)
+# output
+# 1.0
+
+c = 8
+e = c + c
+print(e)
+# output
+# 16
+
+d = 3
+d = 5
+print(d + d)
+# output
+# 10
+
+e = 1
+print(e / e)
+# output
+# 1.0
+
+c = 8
+c = 5 / c
+print(c + c)
+# output
+# 1.25
+
+a = 9
+d = a + 1
+print(a * a)
+# output
+# 81
+
+a = 0
+b = 4
+b = a / 2
+print(b)
+# output
+# 0.0
+
+c = 8
+b = c / 7
+print(c - c)
+# output
+# 0
+
+e = 5
+c = 8
+print(c)
+# output
+# 8
+
+e = 6
+d = 9
+print(d)
+# output
+# 9
+
+e = 2
+c = 3
+e = 1 * 5
+print(e * c)
+# output
+# 15
+
+d = 5
+d = 3
+a = d * d
+print(d - 8)
+# output
+# -5
+
+e = 8
+c = 9
+c = 5 - 3
+print(c)
+# output
+# 2
+
+a = 5
+a = 6
+c = 1 + 9
+print(a * 3)
+# output
+# 18
+
+d = 0
+e = d + 4
+print(d * d)
+# output
+# 0
+
+b = 8
+b = 2 / 5
+print(b / b)
+# output
+# 1.0
+
+b = 4
+d = 4
+e = 3 / 9
+print(d + 6)
+# output
+# 10
+
+a = 2
+c = 1
+b = 7 * c
+print(b)
+# output
+# 7
+
+a = 9
+print(a / a)
+# output
+# 1.0
+
+d = 6
+b = d / 4
+print(d - 3)
+# output
+# 3
+
+e = 3
+d = 8
+a = d / d
+print(d - e)
+# output
+# 5
+
+e = 7
+print(e * 9)
+# output
+# 63
+
+b = 7
+d = 1
+print(d - b)
+# output
+# -6
+
+d = 9
+c = d / d
+print(c)
+# output
+# 1.0
+
+d = 5
+c = d * d
+print(d / d)
+# output
+# 1.0
+
+d = 7
+print(d * d)
+# output
+# 49
+
+b = 5
+d = 8
+print(b - 0)
+# output
+# 5
+
+d = 2
+a = 6
+e = 2 - 6
+print(e)
+# output
+# -4
+
+a = 2
+e = 0
+b = 5 - 4
+print(b)
+# output
+# 1
+
+d = 2
+b = 2 * 8
+print(d - d)
+# output
+# 0
+
+d = 0
+a = 1 * d
+print(d + 6)
+# output
+# 6
+
+a = 8
+c = 4
+b = c / a
+print(b)
+# output
+# 0.5
+
+b = 0
+print(b + b)
+# output
+# 0
+
+d = 0
+e = d * 1
+print(e)
+# output
+# 0
+
+d = 5
+b = 6
+print(d)
+# output
+# 5
+
+b = 1
+a = 1 + b
+print(a)
+# output
+# 2
+
+d = 3
+c = 7 / 2
+print(d - d)
+# output
+# 0
+
+e = 5
+a = 0 - e
+print(a)
+# output
+# -5
+
+d = 7
+e = 5 + d
+print(e)
+# output
+# 12
+
+a = 1
+b = 4
+e = 2 + 7
+print(a * b)
+# output
+# 4
+
+a = 1
+print(a * a)
+# output
+# 1
+
+b = 1
+b = 9
+print(b)
+# output
+# 9
+
+e = 9
+print(e / 3)
+# output
+# 3.0
+
+a = 8
+a = a / 8
+print(a * a)
+# output
+# 1.0
+
+b = 4
+d = 9
+print(d + 6)
+# output
+# 15
+
+e = 2
+d = e / e
+print(d)
+# output
+# 1.0
+
+b = 2
+b = 3
+print(b * 7)
+# output
+# 21
+
+a = 5
+d = 7
+print(d)
+# output
+# 7
+
+c = 3
+e = 4
+print(e)
+# output
+# 4
+
+c = 0
+b = 3
+a = 0 + 4
+print(b * 6)
+# output
+# 18
+
+d = 1
+print(d)
+# output
+# 1
+
+c = 6
+a = 0
+d = a - a
+print(c / 2)
+# output
+# 3.0
+
+e = 7
+a = 2
+d = e / 3
+print(d)
+# output
+# 2.3333333333333335
+
+b = 3
+d = 5
+d = b - 7
+print(b - b)
+# output
+# 0
+
+c = 6
+print(c - c)
+# output
+# 0
+
+a = 8
+b = 6 / a
+print(b)
+# output
+# 0.75
+
+e = 4
+c = 5
+print(c * e)
+# output
+# 20
+
+e = 9
+c = 0
+print(e)
+# output
+# 9
+
+a = 2
+e = a + a
+print(a * 5)
+# output
+# 10
+
+d = 3
+d = 8 - d
+print(d + d)
+# output
+# 10
+
+b = 7
+b = 7
+print(b)
+# output
+# 7
+
+b = 7
+d = 4
+print(d)
+# output
+# 4
+
+e = 9
+print(e / 1)
+# output
+# 9.0
+
+a = 7
+d = 5
+b = 3 / 3
+print(b)
+# output
+# 1.0
+
+c = 2
+b = c * c
+print(c / 1)
+# output
+# 2.0
+
+e = 3
+b = 7
+print(b)
+# output
+# 7
+
+a = 8
+print(a + a)
+# output
+# 16
+
+d = 2
+b = 4
+c = d * 9
+print(c)
+# output
+# 18
+
+e = 9
+print(e)
+# output
+# 9
+
+a = 4
+b = a / a
+print(b)
+# output
+# 1.0
+
+b = 8
+b = 1
+d = b - 6
+print(d)
+# output
+# -5
+
+a = 5
+print(a)
+# output
+# 5
+
+d = 4
+d = 3
+e = d * d
+print(e)
+# output
+# 9
+
+a = 3
+c = a / a
+print(c)
+# output
+# 1.0
+
+e = 2
+d = e + e
+print(e * e)
+# output
+# 4
+
+d = 8
+print(d)
+# output
+# 8
+
+b = 9
+print(b * 1)
+# output
+# 9
+
+c = 3
+a = 2 * 7
+print(c - c)
+# output
+# 0
+
+e = 4
+b = 0 + e
+print(e + 1)
+# output
+# 5
+
+c = 8
+print(c - 2)
+# output
+# 6
+
+c = 2
+e = 8
+print(e)
+# output
+# 8
+
+d = 6
+b = 5
+print(d - d)
+# output
+# 0
+
+c = 5
+a = c + 9
+print(a)
+# output
+# 14
+
+c = 9
+print(c * c)
+# output
+# 81
+
+a = 3
+c = 0
+print(c)
+# output
+# 0
+
+e = 5
+print(e)
+# output
+# 5
+
+d = 7
+e = 7
+a = 3 - d
+print(a)
+# output
+# -4
+
+d = 3
+a = 4
+a = d * d
+print(a * 4)
+# output
+# 36
+
+e = 1
+print(e)
+# output
+# 1
+
+c = 2
+d = 6
+print(c / d)
+# output
+# 0.3333333333333333
+
+b = 1
+c = 3
+print(c)
+# output
+# 3
+
+e = 1
+a = 3
+e = e / a
+print(e)
+# output
+# 0.3333333333333333
+
+a = 8
+a = 8
+print(a)
+# output
+# 8
+
+e = 4
+e = 5
+print(e)
+# output
+# 5
+
+a = 3
+b = 7
+d = a + a
+print(d)
+# output
+# 6
+
+d = 9
+d = 6
+b = d - 0
+print(b)
+# output
+# 6
+
+c = 9
+d = 5
+print(d)
+# output
+# 5
+
+e = 5
+print(e + e)
+# output
+# 10
+
+a = 1
+d = 3
+print(a * 2)
+# output
+# 2
+
+d = 7
+b = 9 / d
+print(d - d)
+# output
+# 0
+
+b = 8
+d = 6
+print(b / d)
+# output
+# 1.3333333333333333
+
+d = 7
+a = 4 * d
+print(d - 3)
+# output
+# 4
+
+d = 9
+c = 2
+print(c)
+# output
+# 2
+
+d = 1
+b = 4
+print(b)
+# output
+# 4
+
+d = 8
+b = 0 * d
+print(d - 7)
+# output
+# 1
+
+b = 1
+print(b - 9)
+# output
+# -8
+
+b = 0
+d = 7
+e = b + b
+print(d + b)
+# output
+# 7
+
+c = 8
+b = 3
+print(b)
+# output
+# 3
+
+c = 3
+print(c + 3)
+# output
+# 6
+
+c = 0
+d = 4
+e = c + 6
+print(e)
+# output
+# 6
+
+e = 1
+b = 8
+print(b)
+# output
+# 8
+
+e = 7
+print(e + e)
+# output
+# 14
+
+a = 9
+a = 2 + 7
+print(a)
+# output
+# 9
+
+d = 2
+print(d / 6)
+# output
+# 0.3333333333333333
+
+d = 9
+b = 4
+a = d + 3
+print(a)
+# output
+# 12
+
+c = 5
+b = c * c
+print(b)
+# output
+# 25
+
+d = 0
+c = 7
+print(d - d)
+# output
+# 0
+
+a = 9
+d = a * a
+print(d)
+# output
+# 81
+
+a = 0
+c = 8
+print(a)
+# output
+# 0
+
+e = 5
+b = 6
+print(e)
+# output
+# 5
+
+d = 8
+b = 2 + d
+print(b)
+# output
+# 10
+
+b = 7
+c = b * 6
+print(b * 9)
+# output
+# 63
+
+e = 6
+a = 4 - e
+print(a)
+# output
+# -2
+
+b = 8
+c = 3
+print(b)
+# output
+# 8
+
+e = 4
+a = e + 9
+print(a)
+# output
+# 13
+
+b = 3
+e = 1
+d = e * 6
+print(d)
+# output
+# 6
+
+a = 2
+e = 4
+a = a / 7
+print(a + a)
+# output
+# 0.5714285714285714
+
+c = 1
+a = 4 / 3
+print(c - 5)
+# output
+# -4
+
+a = 8
+print(a * a)
+# output
+# 64
+
+b = 9
+c = 6
+a = c * 6
+print(c / 6)
+# output
+# 1.0
+
+a = 1
+e = 6 + a
+print(a * 4)
+# output
+# 4
+
+a = 7
+e = 0
+d = 5 * e
+print(a * a)
+# output
+# 49
+
+a = 5
+d = 5
+print(d)
+# output
+# 5
+
+a = 7
+e = 4
+d = a / e
+print(d)
+# output
+# 1.75
+
+a = 5
+b = 5
+e = 9 - 2
+print(a * a)
+# output
+# 25
+
+d = 1
+d = d * 2
+print(d)
+# output
+# 2
+
+a = 3
+d = a - a
+print(d)
+# output
+# 0
+
+d = 1
+b = 2
+print(b)
+# output
+# 2
+
+d = 7
+e = 5
+e = e + d
+print(e)
+# output
+# 12
+
+d = 8
+b = 2
+e = 2 + b
+print(e)
+# output
+# 4
+
+a = 9
+e = 7
+print(e - e)
+# output
+# 0
+
+b = 8
+a = 8
+print(b - 4)
+# output
+# 4
+
+a = 2
+d = 8 * 2
+print(a * a)
+# output
+# 4
+
+c = 5
+c = 0
+print(c)
+# output
+# 0
+
+e = 3
+a = 9
+a = 8 - a
+print(a)
+# output
+# -1
+
+c = 0
+d = 2
+b = 0 / d
+print(b)
+# output
+# 0.0
+
+e = 2
+d = 9
+a = e - 2
+print(a)
+# output
+# 0
+
+b = 5
+b = 8
+c = b - b
+print(c)
+# output
+# 0
+
+b = 2
+a = b / b
+print(a)
+# output
+# 1.0
+
+a = 0
+b = a + a
+print(a / 9)
+# output
+# 0.0
+
+e = 8
+print(e)
+# output
+# 8
+
+b = 7
+c = 1
+print(c + 7)
+# output
+# 8
+
+b = 4
+a = 1
+a = 2 / b
+print(a)
+# output
+# 0.5
+
+e = 3
+e = e + 5
+print(e)
+# output
+# 8
+
+a = 4
+d = 7 + a
+print(a - 9)
+# output
+# -5
+
+b = 6
+c = 3
+b = 3 - 3
+print(c - c)
+# output
+# 0
+
+d = 5
+a = 0 * d
+print(a)
+# output
+# 0
+
+a = 7
+e = 1
+print(a + 3)
+# output
+# 10
+
+b = 9
+b = 1 / b
+print(b * 0)
+# output
+# 0.0
+
+d = 2
+e = 4
+a = d / 2
+print(e / 2)
+# output
+# 2.0
+
+b = 8
+d = 3
+a = 4 - 9
+print(d + b)
+# output
+# 11
+
+e = 8
+d = 6
+print(e + d)
+# output
+# 14
+
+b = 1
+e = b * b
+print(e)
+# output
+# 1
+
+e = 8
+a = 1
+d = 1 - 9
+print(e * e)
+# output
+# 64
+
+b = 5
+c = 4
+print(b)
+# output
+# 5
+
+d = 6
+a = 6
+print(a)
+# output
+# 6
+
+a = 0
+b = 7
+print(b)
+# output
+# 7
+
+c = 8
+b = 6
+print(c)
+# output
+# 8
+
+e = 1
+print(e - e)
+# output
+# 0
+
+b = 7
+c = 9
+print(b)
+# output
+# 7
+
+e = 6
+c = 1 / e
+print(e + e)
+# output
+# 12
+
+a = 4
+b = 4
+print(b * b)
+# output
+# 16
+
+d = 9
+d = 8 * d
+print(d * d)
+# output
+# 5184
+
+a = 8
+c = 2 / 7
+print(a * a)
+# output
+# 64
+
+b = 5
+e = 7 - 8
+print(e)
+# output
+# -1
+
+d = 2
+a = 4
+c = d * 0
+print(c)
+# output
+# 0
+
+d = 9
+c = 3
+e = d - 5
+print(d + c)
+# output
+# 12
+
+a = 2
+print(a / 4)
+# output
+# 0.5
+
+e = 2
+b = 3
+e = 1 - e
+print(b + 6)
+# output
+# 9
+
+d = 7
+a = d * d
+print(a)
+# output
+# 49
+
+d = 7
+print(d)
+# output
+# 7
+
+d = 5
+print(d * d)
+# output
+# 25
+
+e = 7
+b = 0
+c = b - b
+print(e * 4)
+# output
+# 28
+
+d = 0
+b = 2
+print(d * d)
+# output
+# 0
+
+d = 2
+b = 4 * d
+print(b)
+# output
+# 8
+
+d = 0
+c = 6
+e = 7 * c
+print(e)
+# output
+# 42
+
+b = 4
+print(b)
+# output
+# 4
+
+d = 9
+c = 7
+print(c + c)
+# output
+# 14
+
+e = 7
+print(e)
+# output
+# 7
+
+c = 6
+d = 1
+print(d)
+# output
+# 1
+
+a = 2
+c = 3 * 5
+print(c)
+# output
+# 15
+
+d = 7
+d = 8
+e = 7 * 5
+print(e)
+# output
+# 35
+
+b = 7
+d = b - 4
+print(b + 8)
+# output
+# 15
+
+e = 6
+print(e - 6)
+# output
+# 0
+
+a = 6
+a = 6
+c = 9 - 7
+print(a * 4)
+# output
+# 24
+
+d = 7
+d = 3
+e = d - d
+print(d * 0)
+# output
+# 0
+
+d = 7
+c = 9
+a = 0 + 9
+print(c * 4)
+# output
+# 36
+
+e = 8
+d = e - 9
+print(d)
+# output
+# -1
+
+b = 3
+a = 0
+print(a)
+# output
+# 0
+
+c = 8
+print(c)
+# output
+# 8
+
+c = 2
+c = c * c
+print(c - 5)
+# output
+# -1
+
+d = 6
+a = d - 2
+print(a)
+# output
+# 4
+
+b = 4
+b = 4
+b = b / 8
+print(b + 3)
+# output
+# 3.5
+
+e = 4
+d = 2 / e
+print(d)
+# output
+# 0.5
+
+a = 7
+print(a * a)
+# output
+# 49
+
+d = 8
+print(d / d)
+# output
+# 1.0
+
+c = 9
+d = c / 3
+print(d)
+# output
+# 3.0
+
+c = 5
+print(c / c)
+# output
+# 1.0
+
+e = 0
+b = 8
+c = b * b
+print(c)
+# output
+# 64
+
+e = 0
+e = e + e
+print(e)
+# output
+# 0
+
+b = 4
+c = 4
+print(b + 5)
+# output
+# 9
+
+e = 9
+b = 8
+a = 8 + 3
+print(b * 4)
+# output
+# 32
+
+d = 8
+d = 1
+e = d + d
+print(d / 5)
+# output
+# 0.2
+
+c = 3
+b = 7
+b = c + c
+print(b / 1)
+# output
+# 6.0
+
+e = 4
+e = 8 * 8
+print(e)
+# output
+# 64
+
+e = 9
+b = 1
+print(b)
+# output
+# 1
+
+d = 9
+b = 6
+a = 6 + 5
+print(a)
+# output
+# 11
+
+e = 7
+b = 1
+print(b)
+# output
+# 1
+
+d = 8
+a = 5
+print(d)
+# output
+# 8
+
+c = 4
+print(c - c)
+# output
+# 0
+
+c = 6
+print(c / 4)
+# output
+# 1.5
+
+a = 7
+b = 8
+e = 9 - 5
+print(a * a)
+# output
+# 49
+
+a = 9
+d = 9 + 5
+print(d)
+# output
+# 14
+
+b = 8
+b = 2
+a = 3 / b
+print(a)
+# output
+# 1.5
+
+d = 6
+d = 6
+d = d + d
+print(d)
+# output
+# 12
+
+b = 5
+d = b - b
+print(d)
+# output
+# 0
+
+b = 9
+c = 6 / b
+print(b * 2)
+# output
+# 18
+
+d = 8
+print(d - d)
+# output
+# 0
+
+d = 0
+e = 7
+c = d / 1
+print(e / e)
+# output
+# 1.0
+
+a = 4
+e = a / 2
+print(a + 1)
+# output
+# 5
+
+d = 2
+b = 5
+print(b)
+# output
+# 5
+
+b = 6
+c = 4
+print(b / b)
+# output
+# 1.0
+
+d = 8
+e = 8 * d
+print(d + d)
+# output
+# 16
+
+c = 4
+print(c * 4)
+# output
+# 16
+
+c = 6
+e = 2
+d = 6 + 1
+print(c * 1)
+# output
+# 6
+
+b = 0
+d = 8
+print(b * b)
+# output
+# 0
+
+c = 8
+print(c * c)
+# output
+# 64
+
+a = 6
+print(a)
+# output
+# 6
+
+b = 1
+c = 5
+print(c)
+# output
+# 5
+
+c = 6
+a = 4
+print(c)
+# output
+# 6
+
+b = 4
+b = 8
+d = b - 0
+print(d)
+# output
+# 8
+
+b = 4
+e = 8 - b
+print(e)
+# output
+# 4
+
+c = 4
+print(c * 8)
+# output
+# 32
+
+d = 4
+c = 0 + 1
+print(c)
+# output
+# 1
+
+d = 1
+c = 0
+d = d / 7
+print(d * 2)
+# output
+# 0.2857142857142857
+
+d = 6
+d = 3 / 7
+print(d * 7)
+# output
+# 3.0
+
+c = 4
+d = 8
+c = 7 + 6
+print(c)
+# output
+# 13
+
+d = 8
+d = 5
+e = 9 - d
+print(e)
+# output
+# 4
+
+d = 9
+b = 1
+d = d / 9
+print(b * b)
+# output
+# 1
+
+c = 1
+a = 2
+c = 2 * 3
+print(c)
+# output
+# 6
+
+b = 9
+c = 4
+print(b)
+# output
+# 9
+
+a = 4
+c = 0
+print(c - c)
+# output
+# 0
+
+e = 1
+c = 3
+print(e - 3)
+# output
+# -2
+
+d = 2
+b = 4
+e = 8 + 3
+print(d / 5)
+# output
+# 0.4
+
+c = 3
+a = c - 9
+print(a)
+# output
+# -6
+
+e = 8
+c = 7
+print(c)
+# output
+# 7
+
+e = 4
+b = 6 + e
+print(b)
+# output
+# 10
+
+e = 9
+d = 6
+print(e)
+# output
+# 9
+
+c = 1
+print(c - c)
+# output
+# 0
+
+d = 6
+a = 5
+a = 2 + a
+print(d - a)
+# output
+# -1
+
+b = 8
+c = 7
+print(b)
+# output
+# 8
+
+c = 8
+d = 4
+print(d / 9)
+# output
+# 0.4444444444444444
+
+d = 6
+b = d / d
+print(b)
+# output
+# 1.0
+
+c = 6
+e = 9
+d = 4 * c
+print(c - 8)
+# output
+# -2
+
+e = 1
+a = e + 8
+print(a)
+# output
+# 9
+
+c = 1
+b = 9 + 5
+print(c / 4)
+# output
+# 0.25
+
+b = 9
+d = b - b
+print(b - b)
+# output
+# 0
+
+d = 8
+a = 7
+print(d)
+# output
+# 8
+
+e = 5
+c = 4
+c = c - e
+print(e / c)
+# output
+# -5.0
+
+a = 3
+e = 4 * 7
+print(a - a)
+# output
+# 0
+
+c = 6
+c = 2
+print(c + c)
+# output
+# 4
+
+d = 2
+c = 5
+print(d * d)
+# output
+# 4
+
+d = 2
+e = d + 1
+print(e)
+# output
+# 3
+
+c = 4
+e = 3
+print(c * e)
+# output
+# 12
+
+c = 7
+a = 3
+a = 2 / c
+print(a)
+# output
+# 0.2857142857142857
+
+e = 7
+print(e / 7)
+# output
+# 1.0
+
+d = 7
+a = 6
+print(a)
+# output
+# 6
+
+b = 8
+b = 5 * 4
+print(b)
+# output
+# 20
+
+b = 5
+b = 0 - 7
+print(b)
+# output
+# -7
+
+c = 2
+print(c - c)
+# output
+# 0
+
+d = 1
+b = 6
+print(d)
+# output
+# 1
+
+e = 0
+d = e - 4
+print(d)
+# output
+# -4
+
+a = 5
+e = 5 * 9
+print(e)
+# output
+# 45
+
+d = 8
+a = d + d
+print(d - 3)
+# output
+# 5
+
+b = 4
+b = 9
+b = b + 4
+print(b)
+# output
+# 13
+
+b = 3
+e = 6
+print(b / 3)
+# output
+# 1.0
+
+e = 5
+c = 1
+print(c - e)
+# output
+# -4
+
+a = 2
+a = 4 + a
+print(a)
+# output
+# 6
+
+e = 4
+a = 5 - e
+print(e - 7)
+# output
+# -3
+
+d = 7
+b = 7 + d
+print(b)
+# output
+# 14
+
+e = 3
+e = e / e
+print(e / e)
+# output
+# 1.0
+
+e = 6
+print(e * 4)
+# output
+# 24
+
+d = 8
+print(d - 5)
+# output
+# 3
+
+d = 9
+c = 4
+e = d / c
+print(e)
+# output
+# 2.25
+
+c = 6
+a = 5
+d = c + 1
+print(d)
+# output
+# 7
+
+e = 0
+b = 2
+print(b * b)
+# output
+# 4
+
+c = 0
+b = 3 * 6
+print(c - 1)
+# output
+# -1
+
+a = 9
+e = 9
+d = 8 + 1
+print(a * 0)
+# output
+# 0
+
+e = 1
+a = 7
+print(a * 3)
+# output
+# 21
+
+d = 5
+print(d + 6)
+# output
+# 11
+
+a = 9
+b = 7
+print(b / 5)
+# output
+# 1.4
+
+a = 7
+print(a / 2)
+# output
+# 3.5
+
+a = 2
+a = 4
+print(a)
+# output
+# 4
+
+a = 9
+d = 2
+d = a + d
+print(d)
+# output
+# 11
+
+d = 4
+a = 2 * d
+print(a)
+# output
+# 8
+
+b = 6
+a = 4 / 9
+print(b - b)
+# output
+# 0
+
+a = 5
+b = 2
+print(b / a)
+# output
+# 0.4
+
+e = 8
+a = 9
+print(e)
+# output
+# 8
+
+d = 3
+b = 6 + 3
+print(b)
+# output
+# 9
+
+e = 6
+b = e * e
+print(e / 8)
+# output
+# 0.75
+
+b = 9
+c = 4 + 6
+print(c)
+# output
+# 10
+
+d = 4
+print(d * 6)
+# output
+# 24
+
+a = 6
+e = 7
+b = e + a
+print(a / 2)
+# output
+# 3.0
+
+b = 3
+print(b - b)
+# output
+# 0
+
+b = 2
+a = 0
+print(a * 2)
+# output
+# 0
+
+a = 1
+print(a)
+# output
+# 1
+
+e = 7
+c = 4
+print(e)
+# output
+# 7
+
+d = 8
+e = d + d
+print(e)
+# output
+# 16
+
+a = 0
+print(a + a)
+# output
+# 0
+
+a = 2
+c = a * 6
+print(a / a)
+# output
+# 1.0
+
+a = 9
+c = 7 / 9
+print(c)
+# output
+# 0.7777777777777778
+
+a = 4
+print(a * a)
+# output
+# 16
+
+b = 0
+c = 3
+print(b)
+# output
+# 0
+
+d = 7
+d = 9
+e = 3 * d
+print(d - 9)
+# output
+# 0
+
+a = 9
+e = 3
+print(a + 1)
+# output
+# 10
+
+b = 9
+print(b / 6)
+# output
+# 1.5
+
+d = 9
+c = 5
+e = c / 7
+print(e)
+# output
+# 0.7142857142857143
+
+d = 6
+e = 0
+print(d * d)
+# output
+# 36
+
+e = 2
+b = 7
+print(e)
+# output
+# 2
+
+c = 7
+c = 4
+d = 6 * c
+print(c / c)
+# output
+# 1.0
+
+b = 8
+b = 5
+print(b)
+# output
+# 5
+
+d = 3
+a = 2
+print(d - a)
+# output
+# 1
+
+b = 8
+d = 3
+print(d / d)
+# output
+# 1.0
+
+a = 9
+b = 7
+print(b - b)
+# output
+# 0
+
+e = 5
+print(e - 0)
+# output
+# 5
+
+a = 7
+c = 1
+a = a / 1
+print(a * c)
+# output
+# 7.0
+
+e = 6
+c = e + e
+print(e + e)
+# output
+# 12
+
+a = 3
+d = 4
+print(a)
+# output
+# 3
+
+d = 9
+print(d * 9)
+# output
+# 81
+
+a = 5
+e = 1
+print(a)
+# output
+# 5
+
+d = 7
+c = 0 + 7
+print(c)
+# output
+# 7
+
+e = 9
+a = 1
+c = 9 * a
+print(e + 9)
+# output
+# 18
+
+b = 6
+print(b)
+# output
+# 6
+
+b = 6
+e = b + b
+print(b + 1)
+# output
+# 7
+
+c = 5
+e = 8 + c
+print(e)
+# output
+# 13
+
+c = 4
+d = 3
+print(c)
+# output
+# 4
+
+a = 6
+b = 6
+a = 3 - 3
+print(a)
+# output
+# 0
+
+e = 6
+b = 1
+d = e / e
+print(d)
+# output
+# 1.0
+
+d = 4
+b = 6
+a = 0 / d
+print(a)
+# output
+# 0.0
+
+d = 9
+d = 7
+print(d)
+# output
+# 7
+
+d = 0
+print(d * d)
+# output
+# 0
+
+e = 7
+a = 7
+a = 7 - e
+print(a * 0)
+# output
+# 0
+
+b = 7
+e = b - b
+print(b - 5)
+# output
+# 2
+
+b = 6
+b = 4
+b = b / b
+print(b - 4)
+# output
+# -3.0
+
+d = 3
+d = d / d
+print(d - 8)
+# output
+# -7.0
+
+d = 5
+c = 9 + d
+print(c)
+# output
+# 14
+
+b = 9
+a = 3
+d = b / 7
+print(d)
+# output
+# 1.2857142857142858
+
+e = 7
+b = 6
+print(b * 6)
+# output
+# 36
+
+e = 4
+print(e + e)
+# output
+# 8
+
+a = 7
+b = a / a
+print(a * a)
+# output
+# 49
+
+e = 8
+b = 6 / e
+print(e / 2)
+# output
+# 4.0
+
+d = 2
+a = 6
+print(d)
+# output
+# 2
+
+b = 2
+a = 8
+d = b / 6
+print(a / 5)
+# output
+# 1.6
+
+b = 9
+e = 1
+print(e)
+# output
+# 1
+
+d = 4
+e = 0
+b = e * 0
+print(b)
+# output
+# 0
+
+e = 9
+e = e - 7
+print(e)
+# output
+# 2
+
+c = 9
+a = 4
+a = 8 - 5
+print(a + 8)
+# output
+# 11
+
+d = 1
+b = 1
+a = 2 / b
+print(d + 9)
+# output
+# 10
+
+d = 9
+a = 2
+b = 7 - d
+print(a / d)
+# output
+# 0.2222222222222222
+
+d = 8
+b = d * d
+print(d * d)
+# output
+# 64
+
+c = 3
+a = 0
+e = c / 3
+print(a + c)
+# output
+# 3
+
+c = 6
+a = 4
+print(c / c)
+# output
+# 1.0
+
+b = 8
+a = 5 - b
+print(a)
+# output
+# -3
+
+e = 8
+e = 0
+print(e + e)
+# output
+# 0
+
+b = 5
+a = 1
+print(b)
+# output
+# 5
+
+e = 2
+c = 2
+print(c * 6)
+# output
+# 12
+
+e = 3
+print(e / 6)
+# output
+# 0.5
+
+a = 6
+d = 8
+print(a)
+# output
+# 6
+
+e = 4
+c = 9
+e = 8 - e
+print(e / 3)
+# output
+# 1.3333333333333333
+
+e = 7
+d = 0
+e = 9 - 1
+print(e - 7)
+# output
+# 1
+
+d = 6
+print(d + d)
+# output
+# 12
+
+c = 0
+d = 5
+print(c)
+# output
+# 0
+
+d = 2
+print(d)
+# output
+# 2
+
+b = 8
+d = 9
+a = d + 5
+print(a)
+# output
+# 14
+
+b = 1
+a = b + b
+print(b / b)
+# output
+# 1.0
+
+b = 5
+print(b + b)
+# output
+# 10
+
+b = 3
+b = 5
+d = b * 2
+print(d)
+# output
+# 10
+
+e = 8
+a = 1
+c = 5 * 9
+print(a * 9)
+# output
+# 9
+
+c = 3
+a = 3
+print(c / 7)
+# output
+# 0.42857142857142855
+
+c = 6
+a = 0 / 5
+print(a)
+# output
+# 0.0
+
+c = 0
+a = 3
+print(c + a)
+# output
+# 3
+
+d = 0
+a = 4
+print(a)
+# output
+# 4
+
+e = 3
+print(e)
+# output
+# 3
+
+a = 5
+print(a / 5)
+# output
+# 1.0
+
+c = 4
+e = 1
+e = 4 / e
+print(e)
+# output
+# 4.0
+
+a = 7
+c = a / a
+print(c)
+# output
+# 1.0
+
+a = 3
+c = 6
+d = c / 7
+print(c - 1)
+# output
+# 5
+
+b = 8
+a = 2 + b
+print(a)
+# output
+# 10
+
+b = 6
+a = 5
+print(a)
+# output
+# 5
+
+b = 7
+b = 8
+print(b)
+# output
+# 8
+
+c = 5
+d = 2
+print(d + 4)
+# output
+# 6
+
+b = 1
+print(b)
+# output
+# 1
+
+e = 1
+b = 0
+print(b)
+# output
+# 0
+
+d = 3
+b = 5
+print(d)
+# output
+# 3
+
+a = 1
+print(a * 0)
+# output
+# 0
+
+a = 2
+print(a + a)
+# output
+# 4
+
+d = 0
+b = 4
+print(b)
+# output
+# 4
+
+d = 0
+a = 9
+print(a * 7)
+# output
+# 63
+
+c = 9
+print(c / c)
+# output
+# 1.0
+
+c = 5
+e = 1
+print(c)
+# output
+# 5
+
+d = 4
+d = 3
+b = d + 7
+print(b)
+# output
+# 10
+
+e = 9
+e = 3
+b = e / 8
+print(e + e)
+# output
+# 6
+
+c = 6
+e = 0
+print(e + 1)
+# output
+# 1
+
+b = 1
+e = 7
+e = b * 4
+print(e + e)
+# output
+# 8
+
+b = 3
+e = 8
+print(e)
+# output
+# 8
+
+d = 3
+print(d)
+# output
+# 3
+
+d = 8
+e = 2
+print(d + 2)
+# output
+# 10
+
+e = 5
+d = 2 - e
+print(d)
+# output
+# -3
+
+e = 6
+b = 9
+print(e)
+# output
+# 6
+
+c = 4
+b = 2
+d = 6 + 3
+print(b + 9)
+# output
+# 11
+
+d = 0
+print(d)
+# output
+# 0
+
+b = 1
+c = b + 3
+print(c)
+# output
+# 4
+
+c = 5
+print(c - c)
+# output
+# 0
+
+e = 3
+e = 4
+c = 6 - e
+print(e + 3)
+# output
+# 7
+
+d = 4
+e = 3
+a = 9 - 9
+print(d * 4)
+# output
+# 16
+
+d = 4
+a = 1
+print(d)
+# output
+# 4
+
+d = 6
+print(d)
+# output
+# 6
+
+e = 2
+a = 6
+print(a)
+# output
+# 6
+
+b = 0
+d = 0
+print(d)
+# output
+# 0
+
+b = 2
+print(b - b)
+# output
+# 0
+
+e = 8
+a = 6 / e
+print(e * e)
+# output
+# 64
+
+b = 2
+c = 1
+print(b + 2)
+# output
+# 4
+
+e = 7
+a = e + e
+print(a)
+# output
+# 14
+
+c = 5
+e = 0
+print(c)
+# output
+# 5
+
+a = 3
+b = 2
+c = b * 7
+print(c)
+# output
+# 14
+
+c = 6
+a = 6
+print(a)
+# output
+# 6
+
+a = 2
+b = 2 / 8
+print(a / 8)
+# output
+# 0.25
+
+e = 3
+a = 4
+print(e)
+# output
+# 3
+
+c = 4
+d = 3
+print(d + 6)
+# output
+# 9
+
+e = 6
+b = 5
+c = 4 / 9
+print(e * 6)
+# output
+# 36
+
+d = 2
+a = 0
+e = 7 / 8
+print(d + a)
+# output
+# 2
+
+e = 4
+b = e * e
+print(e * 7)
+# output
+# 28
+
+a = 4
+e = 9
+print(e + a)
+# output
+# 13
+
+b = 8
+a = 4
+d = 5 - b
+print(b * 3)
+# output
+# 24
+
+b = 1
+d = 5 * b
+print(d)
+# output
+# 5
+
+a = 1
+a = a + a
+print(a + a)
+# output
+# 4
+
+a = 1
+d = a / 4
+print(d)
+# output
+# 0.25
+
+a = 9
+a = 5
+e = a / 7
+print(e)
+# output
+# 0.7142857142857143
+
+d = 2
+d = 2 + d
+print(d)
+# output
+# 4
+
+e = 0
+a = 2
+c = e + e
+print(c)
+# output
+# 0
+
+e = 3
+print(e + 8)
+# output
+# 11
+
+c = 0
+d = c + 6
+print(c * c)
+# output
+# 0
+
+c = 7
+b = 9 / c
+print(b)
+# output
+# 1.2857142857142858
+
+a = 6
+e = 6
+a = e * a
+print(a)
+# output
+# 36
+
+e = 3
+c = e + e
+print(e - e)
+# output
+# 0
+
+a = 2
+a = 5
+d = a + a
+print(d)
+# output
+# 10
+
+e = 8
+a = 0
+c = a + a
+print(a * 7)
+# output
+# 0
+
+d = 1
+b = 3
+b = b / 8
+print(b / d)
+# output
+# 0.375
+
+b = 1
+c = 1
+d = c / 5
+print(b - 0)
+# output
+# 1
+
+b = 8
+a = 6
+print(b)
+# output
+# 8
+
+c = 1
+print(c + c)
+# output
+# 2
+
+a = 4
+a = 5
+a = a * 7
+print(a / a)
+# output
+# 1.0
+
+c = 9
+a = c * 1
+print(c / 1)
+# output
+# 9.0
+
+e = 6
+b = 1
+print(b - 2)
+# output
+# -1
+
+b = 6
+c = 4
+e = c + c
+print(e)
+# output
+# 8
+
+b = 9
+b = 9
+d = 7 + b
+print(d)
+# output
+# 16
+
+d = 9
+c = 7 - d
+print(d - d)
+# output
+# 0
+
+b = 3
+e = 6
+print(b)
+# output
+# 3
+
+c = 6
+c = 1 * 4
+print(c)
+# output
+# 4
+
+a = 9
+print(a - a)
+# output
+# 0
+
+d = 3
+b = 2
+a = d * b
+print(d / 6)
+# output
+# 0.5
+
+e = 1
+d = 5
+c = d * d
+print(d / 2)
+# output
+# 2.5
+
+d = 9
+print(d * 6)
+# output
+# 54
+
+b = 8
+d = 5
+e = 8 - b
+print(d / 3)
+# output
+# 1.6666666666666667
+
+e = 8
+d = 5
+a = e - d
+print(e / e)
+# output
+# 1.0
+
+d = 3
+d = 7
+print(d)
+# output
+# 7
+
+a = 0
+print(a)
+# output
+# 0
+
+a = 5
+a = 2
+print(a * a)
+# output
+# 4
+
+e = 2
+print(e * e)
+# output
+# 4
+
+b = 3
+c = 7
+print(c / 3)
+# output
+# 2.3333333333333335
+
+c = 3
+b = 0
+d = c + b
+print(d)
+# output
+# 3
+
+a = 3
+print(a)
+# output
+# 3
+
+d = 3
+c = 0
+a = c * 5
+print(c / 5)
+# output
+# 0.0
+
+d = 6
+c = d - d
+print(c)
+# output
+# 0
+
+c = 3
+a = 8
+e = a + a
+print(a - a)
+# output
+# 0
+
+c = 5
+a = 9 / c
+print(a)
+# output
+# 1.8
+
+e = 5
+print(e * 5)
+# output
+# 25
+
+d = 2
+d = d - d
+print(d)
+# output
+# 0
+
+c = 4
+d = 9
+b = 6 + 9
+print(b)
+# output
+# 15
+
+e = 6
+c = 4
+b = c + c
+print(e / e)
+# output
+# 1.0
+
+c = 1
+print(c)
+# output
+# 1
+
+d = 0
+e = 3
+print(e)
+# output
+# 3
+
+a = 4
+c = 7
+print(a)
+# output
+# 4
+
+e = 9
+e = e / e
+print(e - 0)
+# output
+# 1.0
+
+c = 7
+print(c * 4)
+# output
+# 28
+
+a = 9
+e = 1 - a
+print(a - 1)
+# output
+# 8
+
+e = 0
+a = 3
+print(a)
+# output
+# 3
+
+c = 6
+d = 8
+print(d / 4)
+# output
+# 2.0
+
+a = 7
+b = 0
+e = 7 - a
+print(b / 7)
+# output
+# 0.0
+
+d = 9
+print(d)
+# output
+# 9
+
+c = 3
+e = 0
+d = e + e
+print(d)
+# output
+# 0
+
+b = 6
+e = 1
+e = 5 / 1
+print(e - 2)
+# output
+# 3.0
+
+e = 6
+a = 8 - e
+print(e + 3)
+# output
+# 9
+
+b = 8
+b = 9 - 6
+print(b)
+# output
+# 3
+
+d = 1
+d = 0
+b = 2 * d
+print(b)
+# output
+# 0
+
+c = 5
+e = 6
+e = e + 2
+print(e)
+# output
+# 8
+
+e = 1
+c = 8
+print(c * 2)
+# output
+# 16
+
+b = 8
+print(b)
+# output
+# 8
+
+c = 2
+b = 0 * c
+print(c + c)
+# output
+# 4
+
+a = 0
+print(a - 9)
+# output
+# -9
+
+e = 9
+e = e * 2
+print(e)
+# output
+# 18
+
+b = 6
+b = 5
+print(b)
+# output
+# 5
+
+a = 1
+b = 3
+print(a)
+# output
+# 1
+
+a = 2
+d = 1
+print(d)
+# output
+# 1
+
+d = 4
+print(d - d)
+# output
+# 0
+
+a = 9
+b = a * 0
+print(a / a)
+# output
+# 1.0
+
+e = 4
+c = 2
+e = e - 0
+print(c * c)
+# output
+# 4
+
+b = 7
+print(b)
+# output
+# 7
+
+c = 7
+print(c)
+# output
+# 7
+
+d = 3
+print(d * 7)
+# output
+# 21
+
+c = 2
+d = 9
+print(d)
+# output
+# 9
+
+b = 0
+e = 1
+print(b)
+# output
+# 0
+
+b = 2
+e = b - 5
+print(e)
+# output
+# -3
+
+e = 9
+print(e + 9)
+# output
+# 18
+
+a = 6
+e = a / 7
+print(a + 4)
+# output
+# 10
+
+e = 0
+print(e)
+# output
+# 0
+
+a = 5
+c = 8
+print(a)
+# output
+# 5
+
+b = 9
+print(b)
+# output
+# 9
+
+e = 8
+d = 2 - 0
+print(d)
+# output
+# 2
+
+c = 6
+d = 9 - 5
+print(c / 1)
+# output
+# 6.0
+
+c = 6
+print(c / c)
+# output
+# 1.0
+
+b = 1
+c = 0
+print(c / 2)
+# output
+# 0.0
+
+a = 0
+c = 5
+print(c * 0)
+# output
+# 0
+
+b = 6
+c = 1
+print(c / 3)
+# output
+# 0.3333333333333333
+
+e = 8
+b = e / 6
+print(b)
+# output
+# 1.3333333333333333
+
+b = 3
+print(b - 6)
+# output
+# -3
+
+c = 9
+e = 3 - 8
+print(c + 9)
+# output
+# 18
+
+e = 7
+b = 2
+print(e)
+# output
+# 7
+
+a = 2
+d = 1
+b = a / d
+print(b)
+# output
+# 2.0
+
+e = 4
+b = 8
+d = 4 + b
+print(d)
+# output
+# 12
+
+b = 9
+c = 6
+print(c)
+# output
+# 6
+
+c = 5
+d = 3
+e = 2 + 6
+print(d / 8)
+# output
+# 0.375
+
+b = 8
+print(b * 1)
+# output
+# 8
+
+b = 7
+a = b - 9
+print(b - 6)
+# output
+# 1
+
+d = 0
+b = d * d
+print(b)
+# output
+# 0
+
+c = 0
+c = 1 * c
+print(c - c)
+# output
+# 0
+
+b = 6
+a = 2
+d = 9 - b
+print(b - 0)
+# output
+# 6
+
+c = 1
+c = c * 8
+print(c)
+# output
+# 8
+
+c = 1
+e = 6
+print(e / 7)
+# output
+# 0.8571428571428571
+
+b = 2
+b = 6
+print(b - 6)
+# output
+# 0
+
+a = 5
+e = 8
+b = a / a
+print(e - e)
+# output
+# 0
+
+e = 4
+b = 3
+print(b)
+# output
+# 3
+
+a = 5
+print(a / 3)
+# output
+# 1.6666666666666667
+
+a = 8
+b = 5
+print(b / 2)
+# output
+# 2.5
+
+c = 6
+b = 2
+c = b - 4
+print(b + c)
+# output
+# 0
+
+e = 1
+c = e + 5
+print(e + 7)
+# output
+# 8
+
+e = 8
+print(e * e)
+# output
+# 64
+
+b = 3
+a = 0
+c = 6 - 1
+print(c)
+# output
+# 5
+
+a = 9
+a = a - 6
+print(a - a)
+# output
+# 0
+
+e = 1
+a = 0 - 8
+print(a)
+# output
+# -8
+
+d = 6
+d = 2
+c = d - 0
+print(c)
+# output
+# 2
+
+e = 7
+c = e + e
+print(c)
+# output
+# 14
+
+b = 2
+print(b * 6)
+# output
+# 12
+
+d = 5
+c = 8
+b = c + c
+print(c + 6)
+# output
+# 14
+
+a = 9
+b = 0
+d = a + a
+print(d)
+# output
+# 18
+
+d = 4
+c = 6
+d = 1 - 6
+print(d)
+# output
+# -5
+
+c = 4
+a = 7
+a = c + a
+print(a + 5)
+# output
+# 16
+
+e = 2
+b = e / e
+print(e + 8)
+# output
+# 10
+
+c = 6
+b = 3 + 1
+print(b)
+# output
+# 4
+
+d = 9
+b = 2
+c = 3 / d
+print(b - b)
+# output
+# 0
+
+e = 3
+print(e - e)
+# output
+# 0
+
+a = 1
+print(a / 2)
+# output
+# 0.5
+
+e = 5
+print(e / e)
+# output
+# 1.0
+
+a = 6
+e = a + a
+print(a + a)
+# output
+# 12
+
+a = 5
+b = 7
+print(b / 2)
+# output
+# 3.5
+
+d = 9
+b = 9
+a = b - d
+print(a)
+# output
+# 0
+
+a = 2
+print(a)
+# output
+# 2
+
+a = 2
+e = 0
+a = a * a
+print(a)
+# output
+# 4
+
+c = 7
+a = 9
+print(a - 2)
+# output
+# 7
+
+b = 6
+c = 5
+print(b / b)
+# output
+# 1.0
+
+d = 8
+e = 3
+a = d / d
+print(e / e)
+# output
+# 1.0
+
+d = 6
+a = 6
+print(a / a)
+# output
+# 1.0
+
+a = 9
+d = 1
+d = 5 + 5
+print(a / 9)
+# output
+# 1.0
+
+b = 2
+a = 7
+print(a)
+# output
+# 7
+
+e = 5
+a = 5
+a = e / 4
+print(a)
+# output
+# 1.25
+
+b = 0
+print(b)
+# output
+# 0
+
+e = 6
+print(e - e)
+# output
+# 0
+
+c = 9
+d = 7 * c
+print(d)
+# output
+# 63
+
+a = 3
+c = 5
+e = 2 + a
+print(e)
+# output
+# 5
+
+e = 8
+e = 4
+print(e)
+# output
+# 4
+
+a = 6
+c = 3
+a = 4 / 7
+print(a)
+# output
+# 0.5714285714285714
+
+a = 9
+d = 8
+print(a)
+# output
+# 9
+
+d = 7
+d = 5
+print(d)
+# output
+# 5
+
+d = 9
+b = 6
+print(b - b)
+# output
+# 0
+
+e = 9
+print(e / e)
+# output
+# 1.0
+
+e = 3
+a = e * e
+print(e * 0)
+# output
+# 0
+
+c = 1
+e = 9
+d = 6 * 8
+print(e - e)
+# output
+# 0
+
+b = 3
+print(b)
+# output
+# 3
+
+b = 8
+a = 2
+c = b + 1
+print(b * a)
+# output
+# 16
+
+b = 3
+a = 6
+a = 8 - 0
+print(a)
+# output
+# 8
+
+d = 2
+e = 6
+print(e - 2)
+# output
+# 4
+
+c = 0
+b = 8
+print(c)
+# output
+# 0
+
+e = 1
+b = 7
+print(b - 0)
+# output
+# 7
+
+d = 4
+d = d / d
+print(d / 3)
+# output
+# 0.3333333333333333
+
+d = 5
+print(d - d)
+# output
+# 0
+
+a = 4
+a = 4
+print(a)
+# output
+# 4
+
+c = 2
+e = 2
+print(c - 1)
+# output
+# 1
+
+d = 3
+b = 4
+print(b)
+# output
+# 4
+
+e = 5
+e = e - e
+print(e - e)
+# output
+# 0
+
+e = 4
+b = 8
+e = e - 6
+print(b / 6)
+# output
+# 1.3333333333333333
+
+e = 7
+b = 7
+c = 7 - e
+print(b + 2)
+# output
+# 9
+
+e = 2
+print(e)
+# output
+# 2
+
+c = 9
+b = 8 / c
+print(b)
+# output
+# 0.8888888888888888
+
+d = 9
+print(d / d)
+# output
+# 1.0
+
+d = 1
+c = 7
+print(d)
+# output
+# 1
+
+b = 3
+d = 8
+a = d - 6
+print(a)
+# output
+# 2
+
+b = 7
+e = 4
+d = 0 - b
+print(b - e)
+# output
+# 3
+
+b = 7
+a = 1
+print(a)
+# output
+# 1
+
+c = 1
+a = 7
+print(a)
+# output
+# 7
+
+a = 4
+d = 2
+print(a)
+# output
+# 4
+
+d = 2
+d = 6 * d
+print(d)
+# output
+# 12
+
+b = 5
+e = 8
+b = e / e
+print(b * 0)
+# output
+# 0.0
+
+e = 7
+e = 6
+b = e * 5
+print(e * e)
+# output
+# 36
+
+d = 6
+a = d / d
+print(a)
+# output
+# 1.0
+
+b = 8
+c = 7 / 7
+print(b + b)
+# output
+# 16
+
+e = 4
+d = 1
+print(e)
+# output
+# 4
+
+d = 0
+e = 8
+print(e * e)
+# output
+# 64
+
+d = 1
+b = 8
+print(d * 1)
+# output
+# 1
+
+e = 8
+e = 4
+d = 5 * 3
+print(d)
+# output
+# 15
+
+e = 3
+e = e / 1
+print(e)
+# output
+# 3.0
+
+d = 1
+d = 5 / 7
+print(d / d)
+# output
+# 1.0
+
+b = 0
+a = b * b
+print(b + b)
+# output
+# 0
+
+d = 3
+d = 6
+print(d + d)
+# output
+# 12
+
+e = 9
+e = 9
+print(e + e)
+# output
+# 18
+
+a = 7
+print(a)
+# output
+# 7
+
+b = 5
+d = 1
+e = d - 7
+print(d + b)
+# output
+# 6
+
+e = 0
+c = e / 4
+print(e + 6)
+# output
+# 6
+
+c = 8
+print(c / 1)
+# output
+# 8.0
+
+c = 5
+c = 8
+print(c / 5)
+# output
+# 1.6
+
+b = 2
+print(b)
+# output
+# 2
+
+e = 7
+e = 9
+print(e)
+# output
+# 9
+
+d = 3
+d = 8
+print(d)
+# output
+# 8
+
+a = 4
+e = 4
+print(e)
+# output
+# 4
+
+b = 6
+b = 4 - b
+print(b + 0)
+# output
+# -2
+
+e = 4
+b = e + e
+print(e / e)
+# output
+# 1.0
+
+d = 2
+e = 2
+print(e)
+# output
+# 2
+
+e = 0
+e = 3
+print(e / 6)
+# output
+# 0.5
+
+d = 4
+b = 8 * d
+print(d * d)
+# output
+# 16
+
+d = 9
+e = 9
+b = e + 2
+print(e - e)
+# output
+# 0
+
+a = 0
+b = a + a
+print(b)
+# output
+# 0
+
+d = 4
+print(d)
+# output
+# 4
+
+d = 4
+print(d + 4)
+# output
+# 8
+
+c = 7
+print(c / c)
+# output
+# 1.0
+
+d = 7
+e = 8
+print(e / d)
+# output
+# 1.1428571428571428
+
+d = 7
+d = 2
+print(d)
+# output
+# 2
+
+c = 7
+e = 3
+e = 0 + 0
+print(e)
+# output
+# 0
+
+b = 7
+print(b / 4)
+# output
+# 1.75
+
+b = 5
+b = 5
+print(b + b)
+# output
+# 10
+
+c = 4
+b = 5
+print(c + c)
+# output
+# 8
+
+c = 4
+e = 4
+print(c * c)
+# output
+# 16
+
+e = 3
+b = e * 6
+print(e / e)
+# output
+# 1.0
+
+c = 8
+b = 7
+c = c + c
+print(c - c)
+# output
+# 0
+
+d = 4
+e = 3
+b = 0 + 8
+print(b)
+# output
+# 8
+
+d = 5
+d = d - d
+print(d)
+# output
+# 0
+
+e = 6
+d = 3 + e
+print(d)
+# output
+# 9
+
+e = 2
+c = 5
+a = e / 3
+print(e / e)
+# output
+# 1.0
+
+a = 3
+a = a * a
+print(a)
+# output
+# 9
+
+b = 2
+a = b - b
+print(b - 6)
+# output
+# -4
+
+b = 8
+b = b / 8
+print(b)
+# output
+# 1.0
+
+d = 1
+b = 2 / d
+print(b)
+# output
+# 2.0
+
+d = 2
+print(d - 0)
+# output
+# 2
+
+a = 7
+a = 7
+print(a + a)
+# output
+# 14
+
+a = 4
+print(a - a)
+# output
+# 0
+
+c = 6
+a = 4
+print(a)
+# output
+# 4
+
+d = 5
+b = 2
+b = d * d
+print(b)
+# output
+# 25
+
+d = 6
+b = 2
+print(d)
+# output
+# 6
+
+d = 2
+a = 3
+e = 1 + a
+print(e)
+# output
+# 4
+
+d = 6
+d = 0
+b = d * 5
+print(d * d)
+# output
+# 0
+
+b = 1
+print(b * 6)
+# output
+# 6
+
+e = 9
+d = 2 - e
+print(e - 1)
+# output
+# 8
+
+b = 3
+c = 2 / b
+print(b * 8)
+# output
+# 24
+
+c = 0
+a = 7
+print(a * a)
+# output
+# 49
+
+c = 6
+b = 6
+print(b)
+# output
+# 6
+
+e = 5
+e = 6
+print(e)
+# output
+# 6
+
+b = 6
+c = 1
+print(b)
+# output
+# 6
+
+c = 0
+a = 1
+print(a)
+# output
+# 1
+
+b = 0
+a = 4
+print(a * 1)
+# output
+# 4
+
+a = 7
+e = a + 9
+print(a * 9)
+# output
+# 63
+
+e = 1
+e = 6 / 6
+print(e)
+# output
+# 1.0
+
+d = 7
+a = 0
+print(a)
+# output
+# 0
+
+a = 1
+e = 7 - a
+print(e)
+# output
+# 6
+
+b = 4
+print(b + b)
+# output
+# 8
+
+e = 6
+b = 5
+a = 4 / b
+print(a)
+# output
+# 0.8
+
+c = 4
+d = 4
+e = c - c
+print(e)
+# output
+# 0
+
+c = 8
+e = 7
+print(e * 3)
+# output
+# 21
+
+d = 1
+a = 3
+d = 7 - a
+print(d / d)
+# output
+# 1.0
+
+c = 8
+print(c / 3)
+# output
+# 2.6666666666666665
+
+e = 3
+d = 5
+print(e - 1)
+# output
+# 2
+
+d = 0
+b = 4
+print(d)
+# output
+# 0
+
+a = 8
+d = 2
+a = d - 8
+print(a)
+# output
+# -6
+
+c = 7
+c = 7
+print(c / 8)
+# output
+# 0.875
+
+c = 9
+e = 9
+print(c / c)
+# output
+# 1.0
+
+c = 4
+d = 5
+d = c / 1
+print(d + c)
+# output
+# 8.0
+
+e = 1
+d = 0
+d = 4 - d
+print(d - 7)
+# output
+# -3
+
+e = 2
+e = 6
+a = e - e
+print(e + e)
+# output
+# 12
+
+c = 9
+e = 8
+b = 9 * e
+print(b)
+# output
+# 72
+
+a = 4
+a = 4
+a = 7 / a
+print(a)
+# output
+# 1.75
+
+b = 8
+b = 8
+print(b)
+# output
+# 8
+
+a = 8
+print(a - a)
+# output
+# 0
+
+e = 4
+d = 7
+d = e * 8
+print(e / 1)
+# output
+# 4.0
+
+e = 7
+d = e + e
+print(d)
+# output
+# 14
+
+b = 6
+a = 5
+d = b + 9
+print(d)
+# output
+# 15
+
+b = 2
+d = 5 * b
+print(b * 0)
+# output
+# 0
+
+c = 1
+e = c / c
+print(c + 5)
+# output
+# 6
+
+d = 2
+d = 7
+d = 7 + 4
+print(d / 9)
+# output
+# 1.2222222222222223
+
+a = 0
+c = 3
+c = 2 + 5
+print(c)
+# output
+# 7
+
+c = 4
+d = 6
+e = d / d
+print(c / c)
+# output
+# 1.0
+
+d = 6
+d = 8
+e = d - 9
+print(d / 4)
+# output
+# 2.0
+
+c = 0
+b = 1
+c = 4 - 0
+print(b + b)
+# output
+# 2
+
+a = 3
+c = a * a
+print(c)
+# output
+# 9
+
+a = 8
+c = 3
+e = 4 + 1
+print(a / a)
+# output
+# 1.0
+
+a = 3
+b = 7 - a
+print(b)
+# output
+# 4
+
+b = 0
+e = 2 / 1
+print(b - 2)
+# output
+# -2
+
+a = 8
+a = 4 - a
+print(a)
+# output
+# -4
+
+a = 9
+d = a / a
+print(a + 6)
+# output
+# 15
+
+a = 2
+print(a * 6)
+# output
+# 12
+
+b = 7
+d = 6
+a = 0 / d
+print(b - 3)
+# output
+# 4
+
+e = 3
+d = e - 2
+print(e / e)
+# output
+# 1.0
+
+b = 9
+a = 8
+c = b + a
+print(b / 4)
+# output
+# 2.25
+
+b = 0
+b = 1
+a = 1 + b
+print(b - 7)
+# output
+# -6
+
+c = 8
+e = 8
+print(e * c)
+# output
+# 64
+
+b = 3
+d = b * b
+print(d)
+# output
+# 9
+
+b = 2
+c = 7
+c = c + c
+print(c)
+# output
+# 14
+
+d = 9
+e = 5
+print(d)
+# output
+# 9
+
+d = 5
+d = d / d
+print(d - 4)
+# output
+# -3.0
+
+a = 3
+print(a + 3)
+# output
+# 6
+
+c = 4
+b = 5
+c = 0 / c
+print(c)
+# output
+# 0.0
+
+b = 3
+a = 5
+print(a + a)
+# output
+# 10
+
+d = 1
+a = 6
+print(d)
+# output
+# 1
+
+c = 3
+d = 5
+a = c - c
+print(c / d)
+# output
+# 0.6
+
+b = 6
+e = 5
+print(b)
+# output
+# 6
+
+c = 0
+a = c - c
+print(a)
+# output
+# 0
+
+c = 7
+c = c + 2
+print(c - 1)
+# output
+# 8
+
+c = 3
+d = 9
+print(c * 3)
+# output
+# 9
+
+a = 5
+a = 9
+print(a)
+# output
+# 9
+
+b = 4
+e = b - 0
+print(b - 9)
+# output
+# -5
+
+b = 1
+c = 5
+e = c * b
+print(c - b)
+# output
+# 4
+
+d = 0
+d = d + 7
+print(d)
+# output
+# 7
+
+c = 9
+c = 9
+print(c - 4)
+# output
+# 5
+
+e = 8
+c = 7
+e = e - c
+print(e)
+# output
+# 1
+
+b = 9
+c = 6
+a = c + c
+print(c * 5)
+# output
+# 30
+
+e = 6
+d = 1 - 3
+print(d)
+# output
+# -2
+
+b = 9
+c = b - 8
+print(c)
+# output
+# 1
+
+c = 0
+print(c / 2)
+# output
+# 0.0
+
+d = 2
+b = 1 / 8
+print(d - d)
+# output
+# 0
+
+d = 5
+print(d)
+# output
+# 5
+
+d = 2
+print(d / d)
+# output
+# 1.0
+
+c = 1
+b = 1
+print(c)
+# output
+# 1
+
+d = 4
+b = 6 / 2
+print(b)
+# output
+# 3.0
+
+c = 2
+print(c)
+# output
+# 2
+
+d = 4
+a = 2 * 5
+print(d / 6)
+# output
+# 0.6666666666666666
+
+e = 2
+c = 7
+d = 7 + 4
+print(d)
+# output
+# 11
+
+d = 0
+a = 1
+print(a)
+# output
+# 1
+
+b = 0
+a = 0 / 5
+print(a)
+# output
+# 0.0
+
+d = 4
+d = 1
+a = 1 - d
+print(d / d)
+# output
+# 1.0
+
+b = 9
+b = 9
+print(b / 9)
+# output
+# 1.0
+
+d = 8
+print(d + 9)
+# output
+# 17
+
+a = 6
+c = 8
+c = 6 + a
+print(c)
+# output
+# 12
+
+a = 2
+e = 7
+print(e)
+# output
+# 7
+
+c = 7
+print(c - c)
+# output
+# 0
+
+d = 2
+print(d + d)
+# output
+# 4
+
+b = 3
+c = 1
+e = 6 - c
+print(e)
+# output
+# 5
+
+b = 6
+d = 6
+c = 5 - 4
+print(c)
+# output
+# 1
+
+e = 2
+a = 6
+print(e)
+# output
+# 2
+
+c = 9
+print(c)
+# output
+# 9
+
+d = 7
+d = 9
+print(d + 5)
+# output
+# 14
+
+a = 6
+b = 0
+e = 5 / a
+print(b * b)
+# output
+# 0
+
+a = 3
+c = a / 3
+print(c)
+# output
+# 1.0
+
+c = 4
+b = 1
+print(c + c)
+# output
+# 8
+
+b = 2
+d = 4
+print(b / 1)
+# output
+# 2.0
+
+a = 6
+print(a - 3)
+# output
+# 3
+
+e = 8
+d = 0 - e
+print(e / e)
+# output
+# 1.0
+
+c = 1
+b = 1 + 4
+print(b)
+# output
+# 5
+
+e = 5
+c = 0
+print(e + 1)
+# output
+# 6
+
+c = 0
+d = 8
+d = d - 9
+print(d)
+# output
+# -1
+
+c = 3
+print(c)
+# output
+# 3
+
+e = 2
+b = 0 + e
+print(e - 4)
+# output
+# -2
+
+a = 6
+print(a - 9)
+# output
+# -3
+
+a = 6
+e = a - 9
+print(e)
+# output
+# -3
+
+c = 2
+e = 6
+b = c * 6
+print(b)
+# output
+# 12
+
+d = 6
+a = 1 + d
+print(a)
+# output
+# 7
+
+c = 8
+print(c / 4)
+# output
+# 2.0
+
+b = 4
+print(b * b)
+# output
+# 16
+
+d = 2
+print(d + 9)
+# output
+# 11
+
+d = 2
+e = d - d
+print(d - d)
+# output
+# 0
+
+d = 1
+a = 4 + 6
+print(a)
+# output
+# 10
\ No newline at end of file
diff --git a/data/val.bin b/data/val.bin
new file mode 100644
index 0000000..3ad9ee7
Binary files /dev/null and b/data/val.bin differ
diff --git a/data/val.txt b/data/val.txt
new file mode 100644
index 0000000..2231512
--- /dev/null
+++ b/data/val.txt
@@ -0,0 +1,617 @@
+d = 9
+e = 6
+print(e)
+# output
+# 6
+
+d = 2
+a = d + d
+print(a)
+# output
+# 4
+
+a = 7
+c = a * a
+print(a / a)
+# output
+# 1.0
+
+e = 7
+d = e - 1
+print(e + e)
+# output
+# 14
+
+a = 2
+a = 8
+e = a + a
+print(a - a)
+# output
+# 0
+
+c = 5
+print(c)
+# output
+# 5
+
+c = 5
+print(c + c)
+# output
+# 10
+
+d = 4
+c = d - d
+print(c)
+# output
+# 0
+
+a = 9
+d = 9
+b = a + 4
+print(a + 0)
+# output
+# 9
+
+a = 2
+a = 1
+print(a / 2)
+# output
+# 0.5
+
+d = 2
+a = 7
+a = 6 + d
+print(a)
+# output
+# 8
+
+a = 5
+c = a / a
+print(a + a)
+# output
+# 10
+
+d = 7
+b = 3
+print(b)
+# output
+# 3
+
+d = 0
+a = 3 - d
+print(a)
+# output
+# 3
+
+d = 1
+b = 5
+print(b - 6)
+# output
+# -1
+
+e = 5
+print(e - e)
+# output
+# 0
+
+a = 3
+c = 8
+d = 5 + 3
+print(d)
+# output
+# 8
+
+e = 0
+c = 6
+print(e)
+# output
+# 0
+
+c = 3
+print(c - 0)
+# output
+# 3
+
+e = 7
+print(e / 6)
+# output
+# 1.1666666666666667
+
+c = 9
+a = 3
+print(a * 4)
+# output
+# 12
+
+b = 5
+d = 5
+print(d - 6)
+# output
+# -1
+
+c = 3
+a = 5
+a = 4 * 3
+print(a)
+# output
+# 12
+
+e = 4
+a = 7 - 0
+print(e * e)
+# output
+# 16
+
+e = 7
+e = 8
+c = 3 / 7
+print(c)
+# output
+# 0.42857142857142855
+
+d = 9
+c = 7
+print(c - 2)
+# output
+# 5
+
+a = 9
+print(a - 6)
+# output
+# 3
+
+a = 7
+print(a + 4)
+# output
+# 11
+
+e = 2
+b = e - e
+print(e / e)
+# output
+# 1.0
+
+a = 9
+c = 2
+a = c - 2
+print(a + a)
+# output
+# 0
+
+c = 3
+d = 7
+b = d / 8
+print(b)
+# output
+# 0.875
+
+a = 2
+a = 1
+print(a)
+# output
+# 1
+
+d = 8
+b = 7
+print(b)
+# output
+# 7
+
+b = 8
+c = 9
+d = c - b
+print(d)
+# output
+# 1
+
+a = 2
+e = 9
+c = 7 * a
+print(a * e)
+# output
+# 18
+
+a = 0
+d = 8
+b = a * 5
+print(b)
+# output
+# 0
+
+a = 1
+print(a + a)
+# output
+# 2
+
+c = 1
+c = 9
+d = 0 - 5
+print(d)
+# output
+# -5
+
+a = 1
+d = 5 * 3
+print(a + a)
+# output
+# 2
+
+b = 7
+d = 4
+print(b)
+# output
+# 7
+
+b = 5
+e = 9
+print(b * b)
+# output
+# 25
+
+b = 8
+print(b * b)
+# output
+# 64
+
+a = 8
+d = a - 7
+print(d)
+# output
+# 1
+
+a = 8
+e = 2
+print(a)
+# output
+# 8
+
+e = 0
+d = 6
+a = 0 + 0
+print(e * d)
+# output
+# 0
+
+e = 5
+d = 0 * e
+print(e + e)
+# output
+# 10
+
+d = 5
+b = 7
+print(d)
+# output
+# 5
+
+b = 4
+c = 7
+c = c / c
+print(c)
+# output
+# 1.0
+
+b = 3
+d = 2
+d = 6 / 6
+print(d)
+# output
+# 1.0
+
+d = 4
+e = 5
+a = 6 * e
+print(e / e)
+# output
+# 1.0
+
+c = 6
+b = 0
+c = 0 * 4
+print(c)
+# output
+# 0
+
+c = 2
+c = 7 + c
+print(c * c)
+# output
+# 81
+
+a = 6
+d = 0
+d = d + 0
+print(d)
+# output
+# 0
+
+c = 1
+b = 8
+a = 7 / 1
+print(a)
+# output
+# 7.0
+
+e = 7
+print(e - e)
+# output
+# 0
+
+e = 1
+print(e + 3)
+# output
+# 4
+
+d = 4
+d = 4
+print(d)
+# output
+# 4
+
+b = 0
+d = 1
+print(d)
+# output
+# 1
+
+a = 2
+b = 1
+print(a / 9)
+# output
+# 0.2222222222222222
+
+a = 0
+c = 8
+print(c)
+# output
+# 8
+
+e = 2
+a = 1
+print(a + a)
+# output
+# 2
+
+d = 7
+b = 2
+print(b)
+# output
+# 2
+
+b = 1
+print(b * 9)
+# output
+# 9
+
+e = 9
+d = 6 / 4
+print(e / 1)
+# output
+# 9.0
+
+a = 3
+print(a + a)
+# output
+# 6
+
+b = 1
+e = 0
+b = 4 + e
+print(b / 3)
+# output
+# 1.3333333333333333
+
+c = 8
+d = c + 1
+print(d)
+# output
+# 9
+
+c = 3
+e = 7
+print(c)
+# output
+# 3
+
+d = 7
+c = 7
+print(c)
+# output
+# 7
+
+c = 8
+a = 4
+b = c / c
+print(c + a)
+# output
+# 12
+
+d = 1
+a = 7 - 4
+print(a)
+# output
+# 3
+
+a = 7
+b = 1
+a = a / 5
+print(a)
+# output
+# 1.4
+
+a = 5
+a = 7
+a = a + a
+print(a)
+# output
+# 14
+
+c = 6
+d = 0
+a = 9 - 0
+print(a)
+# output
+# 9
+
+c = 9
+c = c + 7
+print(c)
+# output
+# 16
+
+b = 7
+d = 8 * 6
+print(b - 5)
+# output
+# 2
+
+c = 7
+a = c - c
+print(a)
+# output
+# 0
+
+a = 0
+e = 4 * a
+print(a / 1)
+# output
+# 0.0
+
+c = 0
+a = 4
+d = c / 4
+print(a / a)
+# output
+# 1.0
+
+b = 6
+b = 3
+print(b)
+# output
+# 3
+
+c = 6
+print(c * 2)
+# output
+# 12
+
+a = 1
+c = a + 9
+print(a * 4)
+# output
+# 4
+
+b = 6
+a = 5
+e = b / 8
+print(e)
+# output
+# 0.75
+
+d = 8
+d = 4 * 5
+print(d)
+# output
+# 20
+
+c = 8
+b = 5
+print(c - 8)
+# output
+# 0
+
+c = 3
+c = 0
+a = c + 6
+print(c + 8)
+# output
+# 8
+
+d = 6
+e = 2
+c = 2 - d
+print(c)
+# output
+# -4
+
+d = 9
+a = 5
+print(a)
+# output
+# 5
+
+b = 4
+e = 3
+a = b - 7
+print(e / e)
+# output
+# 1.0
+
+a = 6
+c = 7
+b = c + c
+print(a - c)
+# output
+# -1
+
+c = 7
+e = 5
+d = 1 + c
+print(c - 7)
+# output
+# 0
+
+b = 2
+print(b + 3)
+# output
+# 5
+
+e = 6
+print(e)
+# output
+# 6
+
+a = 4
+c = 0
+d = 9 / a
+print(d)
+# output
+# 2.25
+
+a = 8
+a = 9
+d = a / 8
+print(d)
+# output
+# 1.125
+
+d = 5
+a = 6
+a = d / 7
+print(a)
+# output
+# 0.7142857142857143
+
+e = 2
+print(e - 7)
+# output
+# -5
+
+a = 9
+print(a)
+# output
+# 9
+
+b = 8
+e = 9
+d = 0 - b
+print(e - b)
+# output
+# 1
+
+c = 5
+e = 3
+d = 8 * 3
+print(d)
+# output
+# 24
\ No newline at end of file
diff --git a/demonstration.ipynb b/demonstration.ipynb
new file mode 100644
index 0000000..d89bc91
--- /dev/null
+++ b/demonstration.ipynb
@@ -0,0 +1,476 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "34fdf3ed-1a27-4183-b092-8c86729ba1c6",
+ "metadata": {},
+ "source": [
+ "# Evaluating Arithmetic Operations Using Our Tiny Language Model"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "75460bdd-35d6-4a66-ae88-34457ca299c4",
+ "metadata": {},
+ "source": [
+ "This notebook demonstrates how to use our tiny language model to evaluate simple arithmetic operations in Python code snippets. The process involves loading the model, preparing the necessary metadata for character-integer mappings, and defining functions for encoding and decoding strings. We then evaluate various code examples to observe the model's generated results. This workflow highlights the capabilities of our model in executing arithmetic expressions.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "931d2724-c928-4ae0-a003-bfcffc587b55",
+ "metadata": {},
+ "source": [
+ "## Import Necessary Libraries"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "53303b76-4aa4-4a15-8e62-5e71ae5f6b5c",
+ "metadata": {},
+ "source": [
+ "Import essential libraries for model loading, evaluation, and tokenization."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "fd9d1f74-2736-4219-8754-f66be4f98b2d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import os\n",
+ "import torch\n",
+ "import numpy as np\n",
+ "import pickle\n",
+ "import re\n",
+ "from model import GPT"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "f83b58fe-7d06-4edd-90a4-4aea840868a3",
+ "metadata": {},
+ "source": [
+ "## Load the Model"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5fd3f325-1bf4-4c78-a5b3-af55dee68a9c",
+ "metadata": {},
+ "source": [
+ "Set the model name and path, and load our tiny language model into the appropriate device (CPU or GPU)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "318cf23f-07a9-47ea-baa0-6213211dc7bc",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "OptimizedModule(\n",
+ " (_orig_mod): GPT(\n",
+ " (token_embedding_table): Embedding(33, 96)\n",
+ " (position_embedding_table): Embedding(256, 96)\n",
+ " (blocks): Sequential(\n",
+ " (0): Block(\n",
+ " (sa): MultiHeadAttention(\n",
+ " (heads): ModuleList(\n",
+ " (0-5): 6 x Head(\n",
+ " (key): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (query): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (value): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (dropout): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " (proj): Linear(in_features=96, out_features=96, bias=True)\n",
+ " (dropout): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " (ffwd): FeedForward(\n",
+ " (net): Sequential(\n",
+ " (0): Linear(in_features=96, out_features=384, bias=False)\n",
+ " (1): GELU(approximate='none')\n",
+ " (2): Linear(in_features=384, out_features=96, bias=False)\n",
+ " (3): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " (ln1): LayerNorm((96,), eps=1e-05, elementwise_affine=True)\n",
+ " (ln2): LayerNorm((96,), eps=1e-05, elementwise_affine=True)\n",
+ " )\n",
+ " (1): Block(\n",
+ " (sa): MultiHeadAttention(\n",
+ " (heads): ModuleList(\n",
+ " (0-5): 6 x Head(\n",
+ " (key): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (query): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (value): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (dropout): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " (proj): Linear(in_features=96, out_features=96, bias=True)\n",
+ " (dropout): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " (ffwd): FeedForward(\n",
+ " (net): Sequential(\n",
+ " (0): Linear(in_features=96, out_features=384, bias=False)\n",
+ " (1): GELU(approximate='none')\n",
+ " (2): Linear(in_features=384, out_features=96, bias=False)\n",
+ " (3): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " (ln1): LayerNorm((96,), eps=1e-05, elementwise_affine=True)\n",
+ " (ln2): LayerNorm((96,), eps=1e-05, elementwise_affine=True)\n",
+ " )\n",
+ " (2): Block(\n",
+ " (sa): MultiHeadAttention(\n",
+ " (heads): ModuleList(\n",
+ " (0-5): 6 x Head(\n",
+ " (key): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (query): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (value): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (dropout): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " (proj): Linear(in_features=96, out_features=96, bias=True)\n",
+ " (dropout): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " (ffwd): FeedForward(\n",
+ " (net): Sequential(\n",
+ " (0): Linear(in_features=96, out_features=384, bias=False)\n",
+ " (1): GELU(approximate='none')\n",
+ " (2): Linear(in_features=384, out_features=96, bias=False)\n",
+ " (3): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " (ln1): LayerNorm((96,), eps=1e-05, elementwise_affine=True)\n",
+ " (ln2): LayerNorm((96,), eps=1e-05, elementwise_affine=True)\n",
+ " )\n",
+ " (3): Block(\n",
+ " (sa): MultiHeadAttention(\n",
+ " (heads): ModuleList(\n",
+ " (0-5): 6 x Head(\n",
+ " (key): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (query): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (value): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (dropout): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " (proj): Linear(in_features=96, out_features=96, bias=True)\n",
+ " (dropout): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " (ffwd): FeedForward(\n",
+ " (net): Sequential(\n",
+ " (0): Linear(in_features=96, out_features=384, bias=False)\n",
+ " (1): GELU(approximate='none')\n",
+ " (2): Linear(in_features=384, out_features=96, bias=False)\n",
+ " (3): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " (ln1): LayerNorm((96,), eps=1e-05, elementwise_affine=True)\n",
+ " (ln2): LayerNorm((96,), eps=1e-05, elementwise_affine=True)\n",
+ " )\n",
+ " (4): Block(\n",
+ " (sa): MultiHeadAttention(\n",
+ " (heads): ModuleList(\n",
+ " (0-5): 6 x Head(\n",
+ " (key): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (query): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (value): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (dropout): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " (proj): Linear(in_features=96, out_features=96, bias=True)\n",
+ " (dropout): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " (ffwd): FeedForward(\n",
+ " (net): Sequential(\n",
+ " (0): Linear(in_features=96, out_features=384, bias=False)\n",
+ " (1): GELU(approximate='none')\n",
+ " (2): Linear(in_features=384, out_features=96, bias=False)\n",
+ " (3): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " (ln1): LayerNorm((96,), eps=1e-05, elementwise_affine=True)\n",
+ " (ln2): LayerNorm((96,), eps=1e-05, elementwise_affine=True)\n",
+ " )\n",
+ " (5): Block(\n",
+ " (sa): MultiHeadAttention(\n",
+ " (heads): ModuleList(\n",
+ " (0-5): 6 x Head(\n",
+ " (key): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (query): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (value): Linear(in_features=96, out_features=16, bias=False)\n",
+ " (dropout): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " (proj): Linear(in_features=96, out_features=96, bias=True)\n",
+ " (dropout): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " (ffwd): FeedForward(\n",
+ " (net): Sequential(\n",
+ " (0): Linear(in_features=96, out_features=384, bias=False)\n",
+ " (1): GELU(approximate='none')\n",
+ " (2): Linear(in_features=384, out_features=96, bias=False)\n",
+ " (3): Dropout(p=0, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " (ln1): LayerNorm((96,), eps=1e-05, elementwise_affine=True)\n",
+ " (ln2): LayerNorm((96,), eps=1e-05, elementwise_affine=True)\n",
+ " )\n",
+ " )\n",
+ " (ln_f): LayerNorm((96,), eps=1e-05, elementwise_affine=True)\n",
+ " (lm_head): Linear(in_features=96, out_features=33, bias=True)\n",
+ " )\n",
+ ")"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "model_name = \"arithmetics_level1_696K\"\n",
+ "model_path = os.path.join('models', f\"{model_name}.pth\")\n",
+ "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
+ "\n",
+ "model = GPT()\n",
+ "model = torch.compile(model) \n",
+ "model.load_state_dict(torch.load(model_path, map_location=device))\n",
+ "model.to(device)\n",
+ "model.eval()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "be4f5be4-45ea-4893-bb97-b732cde2a906",
+ "metadata": {},
+ "source": [
+ "## Load Tokenizers"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c5e17dbe-14e3-4d12-a2f2-f816cbfa4c44",
+ "metadata": {},
+ "source": [
+ "Load the metadata file containing the mappings from characters to integers and vice versa."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "52455912-777d-4147-ba50-413fcb452a43",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "meta_path = os.path.join('data', 'meta.pkl') \n",
+ "with open(meta_path, 'rb') as f:\n",
+ " meta = pickle.load(f)\n",
+ "# Récuperer le mapping Caractères-Entiers\n",
+ "stoi = meta['stoi']\n",
+ "itos = meta['itos']\n",
+ "\n",
+ "# Fonctions pour la tokenisation\n",
+ "def encode(s):\n",
+ " \"\"\"\n",
+ " Encode string `s` into token IDs.\n",
+ " \"\"\"\n",
+ " return [stoi[c] for c in s]\n",
+ "\n",
+ "def decode(l):\n",
+ " \"\"\"\n",
+ " Decode token IDs `l` into a string.\n",
+ "\"\"\"\n",
+ " return ''.join([itos[i] for i in l])\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6520bed8-0e5f-4df3-bba4-72828dcbf2b3",
+ "metadata": {},
+ "source": [
+ "## Define Function to Evaluate Code Example"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "63ef6763-3c4f-4f1f-95c7-c7d29f2e536b",
+ "metadata": {},
+ "source": [
+ "Implement a function to evaluate a given code snippet using our model, and extract the result from the model's output."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "01cb5618-f797-43de-8ff0-e9515e18dc0c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Fonction pour donner au modèle un extrait de code à executer \n",
+ "def evaluate_example(example , max_new_tokens=22):\n",
+ " \n",
+ " encoded_example = torch.tensor(encode(example), dtype=torch.long).unsqueeze(0).to(device)\n",
+ " \n",
+ " with torch.no_grad():\n",
+ " response = decode(model.generate(encoded_example, max_new_tokens=max_new_tokens)[0].tolist())\n",
+ " splited_response = response.split(\"# output\")\n",
+ " result_response = splited_response[-1]\n",
+ " generated_results = [float(match.group()) for match in re.finditer(r\"(?<=# )-?\\d+(\\.\\d+)?\", result_response.split('\\n\\n')[0].replace(\"\\n\", \"\"))]\n",
+ "\n",
+ " return generated_results\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "440dbda2-0e84-4386-914b-6ef812f3945d",
+ "metadata": {},
+ "source": [
+ "## Examples"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "f6f6bc4c-e4c6-47e5-9cbd-f3a2f89231b0",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Example 1:\n",
+ "\n",
+ "a = 5\n",
+ "b = 7 \n",
+ "c = a * b\n",
+ "print(c)\n",
+ "# output\n",
+ "\n",
+ "Generated Result: 35.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Exemple 1\n",
+ "eval_prompt_1 = \"\"\"\n",
+ "a = 5\n",
+ "b = 7 \n",
+ "c = a * b\n",
+ "print(c)\n",
+ "# output\n",
+ "\"\"\"\n",
+ "\n",
+ "print(\"Example 1:\")\n",
+ "print(eval_prompt_1)\n",
+ "generated_results_1 = evaluate_example(eval_prompt_1)\n",
+ "print(\"Generated Result:\", generated_results_1[0])\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "e7732e8c-caa5-4176-a7a5-e1599d797e95",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Example 2:\n",
+ "\n",
+ "e = 10\n",
+ "c = 10\n",
+ "a = e / c\n",
+ "print(a)\n",
+ "# output\n",
+ "\n",
+ "Generated Result: 1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Exemple 2\n",
+ "eval_prompt_2 = \"\"\"\n",
+ "e = 10\n",
+ "c = 10\n",
+ "a = e / c\n",
+ "print(a)\n",
+ "# output\n",
+ "\"\"\"\n",
+ "\n",
+ "print(\"Example 2:\")\n",
+ "print(eval_prompt_2)\n",
+ "generated_results_2 = evaluate_example(eval_prompt_2)\n",
+ "print(\"Generated Result:\", generated_results_2[0])\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "7e2f6259-31b1-4459-bc44-de31a9fe7d7c",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Example 3:\n",
+ "\n",
+ "a = 9\n",
+ "d = 3\n",
+ "d = 1\n",
+ "d = 5 + 8\n",
+ "print(d * 5)\n",
+ "# output\n",
+ "\n",
+ "Generated Result: 90.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Exemple 3\n",
+ "eval_prompt_3 = \"\"\"\n",
+ "a = 9\n",
+ "d = 3\n",
+ "d = 1\n",
+ "d = 5 + 8\n",
+ "print(d * 5)\n",
+ "# output\n",
+ "\"\"\"\n",
+ "\n",
+ "print(\"Example 3:\")\n",
+ "print(eval_prompt_3)\n",
+ "generated_results_3 = evaluate_example(eval_prompt_3)\n",
+ "print(\"Generated Result:\", generated_results_3[0])"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "TinyLM",
+ "language": "python",
+ "name": "tinylm"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.7"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/generalization/.ipynb_checkpoints/demonstration-checkpoint.ipynb b/generalization/.ipynb_checkpoints/demonstration-checkpoint.ipynb
new file mode 100644
index 0000000..e1dbb26
--- /dev/null
+++ b/generalization/.ipynb_checkpoints/demonstration-checkpoint.ipynb
@@ -0,0 +1,312 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "176621a1-0778-4a21-9de9-dd2ebefef5a6",
+ "metadata": {},
+ "source": [
+ "# Evaluating Arithmetic Operations Using Our Finetuned Large Language Model"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "26d10bd3-660c-43df-9719-43fa71b119ea",
+ "metadata": {},
+ "source": [
+ "This notebook demonstrates how to use our fine-tuned Code Llama model to evaluate simple arithmetic operations in Python code snippets. The process involves loading the pre-trained model, preparing the tokenizer, and defining functions to evaluate code examples. We then evaluate various code snippets to observe the model's generated results. This workflow highlights the capabilities of the Code Llama model in executing arithmetic expressions."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ac948737-336a-4d73-ba56-64601000e561",
+ "metadata": {},
+ "source": [
+ "## Import Necessary Libraries"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "7654d2f3-bae2-4936-b86c-a5a6b0e2ed51",
+ "metadata": {},
+ "source": [
+ "Import essential libraries for model loading, evaluation, and tokenization."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "4c3d4f58-731a-47a8-9121-4689acc8e2c6",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import torch\n",
+ "import warnings\n",
+ "from transformers import AutoModelForCausalLM, AutoTokenizer\n",
+ "from peft import PeftModel\n",
+ "\n",
+ "# Ignore all warnings\n",
+ "warnings.filterwarnings(\"ignore\")\n",
+ "\n",
+ "import transformers\n",
+ "\n",
+ "transformers.logging.set_verbosity_error()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "edd801aa-d88d-42b0-bfac-3901489f7642",
+ "metadata": {},
+ "source": [
+ "## Load the Pre-trained Model"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "74874a67-6e25-4395-81fa-768c630db298",
+ "metadata": {},
+ "source": [
+ "Load the pre-trained Code Llama model in 8-bit precision."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "b1d25be0-8aed-4825-976f-f066aa45eb8d",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "9e7fc7c9fd3b422fa5413277b16ac29e",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Loading checkpoint shards: 0%| | 0/2 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Charger le modèle pré-entraîné\n",
+ "base_model = \"codellama/CodeLlama-7b-hf\"\n",
+ "model = AutoModelForCausalLM.from_pretrained(\n",
+ " base_model,\n",
+ " load_in_8bit=True,\n",
+ " torch_dtype=torch.float16,\n",
+ " device_map=\"auto\",\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3987ca4f-b25d-4d9d-9dc2-79c4beeb7917",
+ "metadata": {},
+ "source": [
+ "## Load the Tokenizer"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e1f5cdc6-48f6-4765-8c7c-76ba6a47e5e4",
+ "metadata": {},
+ "source": [
+ "Load the tokenizer corresponding to the pre-trained model."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "d7fb73a7-d643-4c31-866e-d34baf0dbff5",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Charger le tokenizer\n",
+ "tokenizer = AutoTokenizer.from_pretrained(base_model)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "798b475a-8667-4d52-b028-ac04ec129746",
+ "metadata": {},
+ "source": [
+ "## Load the Fine-Tuned Model"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "67fa550a-8c96-4549-a496-de5d6c3215e6",
+ "metadata": {},
+ "source": [
+ "Load the fine-tuned model from the checkpoint directory."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "17bc03cf-634d-460d-806f-ce1ff8bf6d18",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "checkpoint_dir = \"models/code-llama-finetuned-level1\"\n",
+ "model = PeftModel.from_pretrained(model, checkpoint_dir)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1aa98af7-89d9-4a16-b266-18fae4cd12b9",
+ "metadata": {},
+ "source": [
+ "## Examples"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "b6d2155d-0d2c-4c6b-a438-d4e976e5f49a",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "a = 9\n",
+ "b = 7 \n",
+ "c = a * b\n",
+ "print(c)\n",
+ "# output\n",
+ "# 63\n"
+ ]
+ }
+ ],
+ "source": [
+ "eval_prompt = \"\"\"\n",
+ "a = 9\n",
+ "b = 7 \n",
+ "c = a * b\n",
+ "print(c)\n",
+ "# output\n",
+ "\"\"\"\n",
+ "\n",
+ "# Tokeniser l'invite d'évaluation\n",
+ "model_input = tokenizer(eval_prompt, return_tensors=\"pt\").to(\"cuda\")\n",
+ "\n",
+ "# Évaluer le modèle\n",
+ "model.eval()\n",
+ "with torch.no_grad():\n",
+ " output = tokenizer.decode(model.generate(**model_input, max_new_tokens=30, pad_token_id=tokenizer.eos_token_id)[0], skip_special_tokens=True)\n",
+ "\n",
+ "# Afficher le résultat\n",
+ "print(output)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "edabaa2f-3170-48fb-b45e-43c1fd7d5cdb",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "e = 10\n",
+ "c = 10\n",
+ "a = e / c\n",
+ "print(a)\n",
+ "# output\n",
+ "# 1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "eval_prompt = \"\"\"\n",
+ "e = 10\n",
+ "c = 10\n",
+ "a = e / c\n",
+ "print(a)\n",
+ "# output\n",
+ "\"\"\"\n",
+ "\n",
+ "# Tokeniser l'invite d'évaluation\n",
+ "model_input = tokenizer(eval_prompt, return_tensors=\"pt\").to(\"cuda\")\n",
+ "\n",
+ "# Évaluer le modèle\n",
+ "model.eval()\n",
+ "with torch.no_grad():\n",
+ " output = tokenizer.decode(model.generate(**model_input, max_new_tokens=30, pad_token_id=tokenizer.eos_token_id)[0], skip_special_tokens=True)\n",
+ "\n",
+ "# Afficher le résultat\n",
+ "print(output)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "e4e818ed-27c1-4bd0-b1fe-35610851cc31",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "a = 9\n",
+ "d = 3\n",
+ "d = 1\n",
+ "d = 5 + 8\n",
+ "print(d * 5)\n",
+ "# output\n",
+ "# 45\n"
+ ]
+ }
+ ],
+ "source": [
+ "eval_prompt = \"\"\"\n",
+ "a = 9\n",
+ "d = 3\n",
+ "d = 1\n",
+ "d = 5 + 8\n",
+ "print(d * 5)\n",
+ "# output\n",
+ "\"\"\"\n",
+ "\n",
+ "# Tokeniser l'invite d'évaluation\n",
+ "model_input = tokenizer(eval_prompt, return_tensors=\"pt\").to(\"cuda\")\n",
+ "\n",
+ "# Évaluer le modèle\n",
+ "model.eval()\n",
+ "with torch.no_grad():\n",
+ " output = tokenizer.decode(model.generate(**model_input, max_new_tokens=30, pad_token_id=tokenizer.eos_token_id)[0], skip_special_tokens=True)\n",
+ "\n",
+ "# Afficher le résultat\n",
+ "print(output)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "TinyLM",
+ "language": "python",
+ "name": "tinylm"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.7"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/generalization/.ipynb_checkpoints/evaluate-checkpoint.py b/generalization/.ipynb_checkpoints/evaluate-checkpoint.py
new file mode 100644
index 0000000..6e8cb19
--- /dev/null
+++ b/generalization/.ipynb_checkpoints/evaluate-checkpoint.py
@@ -0,0 +1,111 @@
+import os
+import re
+import torch
+import warnings
+from tqdm import tqdm
+import argparse
+from transformers import AutoModelForCausalLM, AutoTokenizer
+from peft import PeftModel
+import pandas as pd
+
+import transformers
+
+transformers.logging.set_verbosity_error()
+
+# Ignore all warnings
+warnings.filterwarnings("ignore")
+
+def evaluate_model(base_model="codellama/CodeLlama-7b-hf",
+ checkpoint_dir="models/code-llama-finetuned-level1",
+ test_file="../data/test.txt",
+ output_file='results/result_llama.txt',
+ csv_file='results/results_llama.csv',
+ max_new_tokens=30):
+
+ print("Evaluating model...")
+ print()
+
+ # Load the pretrained model
+ print("Loading the pretrained model...")
+ print()
+ model = AutoModelForCausalLM.from_pretrained(
+ base_model,
+ load_in_8bit=True,
+ torch_dtype=torch.float16,
+ device_map="auto",
+ )
+
+ # Load the tokenizer
+ print("Loading the tokenizer...")
+ print()
+ tokenizer = AutoTokenizer.from_pretrained(base_model)
+
+ # Load the fine-tuned model
+ print("Loading the fine-tuned model...")
+ print()
+ model = PeftModel.from_pretrained(model, checkpoint_dir)
+
+ # Load and preprocess the test data
+ print("Loading the test data...")
+ print()
+ with open(test_file, 'r', encoding='utf-8') as f:
+ text = f.read()
+
+ examples = [example for example in text.split("\n\n") if example]
+
+ data = []
+
+ print("Generating predictions...")
+ print()
+ for example in tqdm(examples):
+ splited_example = example.split("# output\n")
+ prompt_text = splited_example[0] + "# output\n"
+ real_response = splited_example[1]
+
+ real_number_response = re.search(r"\d+\.\d+|\d+|-\d+|-\d+\.\d+", real_response.replace("\n", ""))
+ real_result = float(real_number_response.group()) if real_number_response else 0.0
+
+ model_input = tokenizer(prompt_text, return_tensors="pt").to("cuda")
+ response = tokenizer.decode(model.generate(**model_input, max_new_tokens=max_new_tokens, pad_token_id=tokenizer.eos_token_id)[0], skip_special_tokens=True)
+
+ splited_response = response.split("# output")
+ number_response = re.search(r"\d+\.\d+|\d+|-\d+|-\d+\.\d+", splited_response[1].replace("\n", ""))
+ generated_result = float(number_response.group()) if number_response else 0.0
+
+ data.append({'Prompt': prompt_text, 'Real_Results': real_result, 'Generated_Results': generated_result})
+
+ # Calculate accuracy
+ accuracy = sum(1 for d in data if d['Real_Results'] == d['Generated_Results']) / len(data)
+ print(f"Accuracy: {accuracy * 100:.2f}%")
+
+ # Store accuracy in a file
+ print("Storing accuracy in a file...")
+ print()
+ with open(output_file, 'w') as f:
+ f.write(f"Accuracy: {accuracy * 100:.2f}%\n")
+
+ # Store results in a CSV file using pandas
+ print("Storing results in a CSV file...")
+ print()
+ df = pd.DataFrame(data)
+ df.to_csv(csv_file, index=False)
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description="Evaluate a model with specified parameters.")
+ parser.add_argument('--base_model', type=str, default="codellama/CodeLlama-7b-hf", help="Base model name or path")
+ parser.add_argument('--checkpoint_dir', type=str, default="models/code-llama-finetuned-level1", help="Directory containing the model checkpoint")
+ parser.add_argument('--test_file', type=str, default="../data/test.txt", help="Path to the test file")
+ parser.add_argument('--output_file', type=str, default='results/result_llama.txt', help="Path to the output file where the accuracy will be stored")
+ parser.add_argument('--csv_file', type=str, default='results/results_llama.csv', help="Path to the CSV file where the results will be stored")
+ parser.add_argument('--max_new_tokens', type=int, default=30, help="Maximum number of new tokens to generate")
+
+ args = parser.parse_args()
+
+ evaluate_model(
+ base_model=args.base_model,
+ checkpoint_dir=args.checkpoint_dir,
+ test_file=args.test_file,
+ output_file=args.output_file,
+ csv_file=args.csv_file,
+ max_new_tokens=args.max_new_tokens
+ )
diff --git a/generalization/.ipynb_checkpoints/finetune-checkpoint.py b/generalization/.ipynb_checkpoints/finetune-checkpoint.py
new file mode 100644
index 0000000..4b9d764
--- /dev/null
+++ b/generalization/.ipynb_checkpoints/finetune-checkpoint.py
@@ -0,0 +1,194 @@
+import os
+import sys
+from datetime import datetime
+import argparse
+import warnings
+
+import torch
+from peft import (
+ LoraConfig,
+ get_peft_model,
+ get_peft_model_state_dict,
+ prepare_model_for_int8_training,
+ set_peft_model_state_dict,
+)
+from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer, DataCollatorForSeq2Seq
+from datasets import load_from_disk
+
+# Ignore all warnings
+warnings.filterwarnings("ignore")
+
+import transformers
+
+transformers.logging.set_verbosity_error()
+
+def train_model(base_model="codellama/CodeLlama-7b-hf",
+ train_dataset_path="data/tokenized_train",
+ val_dataset_path="data/tokenized_val",
+ resume_from_checkpoint="",
+ wandb_project="tiny-coder",
+ batch_size=128,
+ per_device_train_batch_size=32,
+ gradient_accumulation_steps=4,
+ output_dir="models/code-llama-finetuned-level1",
+ learning_rate=3e-4,
+ warmup_steps=100,
+ max_steps=200,
+ logging_steps=10,
+ eval_steps=20,
+ save_steps=20):
+
+ print("Fine-tuning model...")
+ print()
+
+ # Load the pretrained model
+ print("Loading the pretrained model...")
+ print()
+ model = AutoModelForCausalLM.from_pretrained(
+ base_model,
+ load_in_8bit=True,
+ torch_dtype=torch.float16,
+ device_map="auto",
+ )
+
+
+ # Load the tokenizer
+ print("Loading the tokenizer...")
+ print()
+ tokenizer = AutoTokenizer.from_pretrained(base_model)
+ tokenizer.add_eos_token = True
+ tokenizer.pad_token_id = 0
+ tokenizer.padding_side = "left"
+
+ # Load the tokenized datasets
+ print("Loading the tokenized datasets...")
+ print()
+ tokenized_train_dataset = load_from_disk(train_dataset_path)
+ tokenized_val_dataset = load_from_disk(val_dataset_path)
+
+ # Prepare the model for int8 training
+ model.train()
+ model = prepare_model_for_int8_training(model)
+
+ # Configure Lora settings
+ config = LoraConfig(
+ r=16,
+ lora_alpha=16,
+ target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
+ lora_dropout=0.05,
+ bias="none",
+ task_type="CAUSAL_LM",
+ )
+ model = get_peft_model(model, config)
+
+ # Resume from checkpoint if specified
+ if resume_from_checkpoint and os.path.exists(resume_from_checkpoint):
+ print(f"Restarting from {resume_from_checkpoint}")
+ adapters_weights = torch.load(resume_from_checkpoint)
+ set_peft_model_state_dict(model, adapters_weights)
+ elif resume_from_checkpoint:
+ print(f"Checkpoint {resume_from_checkpoint} not found")
+
+ # Setup Weights and Biases if project name is given
+ if wandb_project:
+ print("Setting up Weights and Biases...")
+ print()
+ os.environ["WANDB_PROJECT"] = wandb_project
+ os.environ['WANDB__EXECUTABLE'] = sys.executable
+
+ # Enable parallelism if multiple GPUs are available
+ if torch.cuda.device_count() > 1:
+ print("Enabling parallelism...")
+ print()
+ model.is_parallelizable = True
+ model.model_parallel = True
+
+ # Training arguments
+ print("Setting up training arguments...")
+ print()
+ training_args = TrainingArguments(
+ per_device_train_batch_size=per_device_train_batch_size,
+ gradient_accumulation_steps=gradient_accumulation_steps,
+ warmup_steps=warmup_steps,
+ max_steps=max_steps,
+ learning_rate=learning_rate,
+ fp16=True,
+ logging_steps=logging_steps,
+ optim="adamw_torch",
+ evaluation_strategy="steps",
+ save_strategy="steps",
+ eval_steps=eval_steps,
+ save_steps=save_steps,
+ output_dir=output_dir,
+ group_by_length=True,
+ report_to="wandb",
+ run_name=f"codellama-{datetime.now().strftime('%Y-%m-%d-%H-%M')}",
+ )
+
+ # Initialize the Trainer
+ trainer = Trainer(
+ model=model,
+ train_dataset=tokenized_train_dataset,
+ eval_dataset=tokenized_val_dataset,
+ args=training_args,
+ data_collator=DataCollatorForSeq2Seq(
+ tokenizer, pad_to_multiple_of=8, return_tensors="pt", padding=True
+ ),
+ )
+
+ # Disable caching for training
+ model.config.use_cache = False
+
+ # Patch the model's state_dict
+ old_state_dict = model.state_dict
+ model.state_dict = (lambda self, *_, **__: get_peft_model_state_dict(self, old_state_dict())).__get__(
+ model, type(model)
+ )
+
+ # Compile the model if applicable
+ if torch.__version__ >= "2" and sys.platform != "win32":
+ print("Compiling the model...")
+ print()
+ model = torch.compile(model)
+
+ # Start training
+ print("Starting training...")
+ trainer.train()
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description="Train a model with specified parameters.")
+ parser.add_argument('--base_model', type=str, default="codellama/CodeLlama-7b-hf", help="Base model name or path")
+ parser.add_argument('--train_dataset_path', type=str, default="data/tokenized_train", help="Path to the tokenized training dataset")
+ parser.add_argument('--val_dataset_path', type=str, default="data/tokenized_val", help="Path to the tokenized validation dataset")
+ parser.add_argument('--resume_from_checkpoint', type=str, default="", help="Path to checkpoint to resume training from")
+ parser.add_argument('--wandb_project', type=str, default="tiny-coder", help="WandB project name")
+ parser.add_argument('--batch_size', type=int, default=128, help="Total batch size for training")
+ parser.add_argument('--per_device_train_batch_size', type=int, default=32, help="Batch size per device for training")
+ parser.add_argument('--gradient_accumulation_steps', type=int, default=4, help="Number of gradient accumulation steps")
+ parser.add_argument('--output_dir', type=str, default="models/code-llama-finetuned-level1", help="Directory to save the output")
+ parser.add_argument('--learning_rate', type=float, default=3e-4, help="Learning rate")
+ parser.add_argument('--warmup_steps', type=int, default=100, help="Number of warmup steps")
+ parser.add_argument('--max_steps', type=int, default=200, help="Maximum number of training steps")
+ parser.add_argument('--logging_steps', type=int, default=10, help="Number of steps between logging")
+ parser.add_argument('--eval_steps', type=int, default=20, help="Number of steps between evaluations")
+ parser.add_argument('--save_steps', type=int, default=20, help="Number of steps between saving checkpoints")
+
+ args = parser.parse_args()
+
+ train_model(
+ base_model=args.base_model,
+ train_dataset_path=args.train_dataset_path,
+ val_dataset_path=args.val_dataset_path,
+ resume_from_checkpoint=args.resume_from_checkpoint,
+ wandb_project=args.wandb_project,
+ batch_size=args.batch_size,
+ per_device_train_batch_size=args.per_device_train_batch_size,
+ gradient_accumulation_steps=args.gradient_accumulation_steps,
+ output_dir=args.output_dir,
+ learning_rate=args.learning_rate,
+ warmup_steps=args.warmup_steps,
+ max_steps=args.max_steps,
+ logging_steps=args.logging_steps,
+ eval_steps=args.eval_steps,
+ save_steps=args.save_steps
+ )
\ No newline at end of file
diff --git a/generalization/.ipynb_checkpoints/tokenizing-checkpoint.py b/generalization/.ipynb_checkpoints/tokenizing-checkpoint.py
new file mode 100644
index 0000000..14a446e
--- /dev/null
+++ b/generalization/.ipynb_checkpoints/tokenizing-checkpoint.py
@@ -0,0 +1,82 @@
+import argparse
+import pandas as pd
+from datasets import Dataset
+from transformers import AutoTokenizer
+
+import transformers
+
+transformers.logging.set_verbosity_error()
+
+def tokenize_data(train_file="../data/train.txt",
+ test_file="../data/val.txt",
+ tokenizer_name="codellama/CodeLlama-7b-hf",
+ train_output_dir="data/tokenized_train",
+ val_output_dir="data/tokenized_val"):
+ print("Tokenizing data...")
+
+ # Read the training and test data
+ with open(train_file) as f:
+ train_data = f.read()
+
+ with open(test_file) as f:
+ test_data = f.read()
+
+ # Split the snippets into individual examples
+ train_snippets = train_data.split('\n\n')
+ test_snippets = test_data.split('\n\n')
+
+ # Create datasets from the snippets
+ train_dataset = Dataset.from_pandas(pd.DataFrame({'snippets': train_snippets}))
+ eval_dataset = Dataset.from_pandas(pd.DataFrame({'snippets': test_snippets}))
+
+ # Load the tokenizer
+ print("Loading tokenizer...")
+ tokenizer = AutoTokenizer.from_pretrained(tokenizer_name)
+ tokenizer.add_eos_token = True
+ tokenizer.pad_token_id = 0
+ tokenizer.padding_side = "left"
+
+ # Function to tokenize a prompt
+ def tokenize(prompt):
+ result = tokenizer(
+ prompt,
+ truncation=True,
+ max_length=512,
+ padding=False,
+ return_tensors=None,
+ )
+
+ # For self-supervised learning, labels are also the inputs
+ result["labels"] = result["input_ids"].copy()
+
+ return result
+
+ # Function to generate and tokenize a prompt
+ def generate_and_tokenize_prompt(data_point):
+ full_prompt = data_point["snippets"]
+
+ return tokenize(full_prompt)
+
+ # Tokenize the training and validation datasets
+ print("Tokenizing datasets...")
+ tokenized_train_dataset = train_dataset.map(generate_and_tokenize_prompt)
+ tokenized_val_dataset = eval_dataset.map(generate_and_tokenize_prompt)
+
+ # Save the tokenized datasets to disk
+ print(f"Saving tokenized datasets to {train_output_dir} and {val_output_dir}...")
+ tokenized_train_dataset.save_to_disk(train_output_dir)
+ tokenized_val_dataset.save_to_disk(val_output_dir)
+
+ print("Tokenization complete.")
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description="Tokenize data for language model training.")
+ parser.add_argument("--train_file", type=str, default="../data/train.txt", help="Path to the training file")
+ parser.add_argument("--test_file", type=str, default="../data/val.txt", help="Path to the test file")
+ parser.add_argument("--tokenizer_name", type=str, default="codellama/CodeLlama-7b-hf", help="Name or path of the tokenizer")
+ parser.add_argument("--train_output_dir", type=str, default="data/tokenized_train", help="Path to save the tokenized training dataset")
+ parser.add_argument("--val_output_dir", type=str, default="data/tokenized_val", help="Path to save the tokenized validation dataset")
+
+ args = parser.parse_args()
+
+ tokenize_data(args.train_file, args.test_file, args.tokenizer_name, args.train_output_dir, args.val_output_dir)
diff --git a/generalization/data/tokenized_train/data-00000-of-00001.arrow b/generalization/data/tokenized_train/data-00000-of-00001.arrow
new file mode 100644
index 0000000..88be929
Binary files /dev/null and b/generalization/data/tokenized_train/data-00000-of-00001.arrow differ
diff --git a/generalization/data/tokenized_train/dataset_info.json b/generalization/data/tokenized_train/dataset_info.json
new file mode 100644
index 0000000..c5ed9a8
--- /dev/null
+++ b/generalization/data/tokenized_train/dataset_info.json
@@ -0,0 +1,33 @@
+{
+ "citation": "",
+ "description": "",
+ "features": {
+ "snippets": {
+ "dtype": "string",
+ "_type": "Value"
+ },
+ "input_ids": {
+ "feature": {
+ "dtype": "int32",
+ "_type": "Value"
+ },
+ "_type": "Sequence"
+ },
+ "attention_mask": {
+ "feature": {
+ "dtype": "int8",
+ "_type": "Value"
+ },
+ "_type": "Sequence"
+ },
+ "labels": {
+ "feature": {
+ "dtype": "int64",
+ "_type": "Value"
+ },
+ "_type": "Sequence"
+ }
+ },
+ "homepage": "",
+ "license": ""
+}
\ No newline at end of file
diff --git a/generalization/data/tokenized_train/state.json b/generalization/data/tokenized_train/state.json
new file mode 100644
index 0000000..a9079c7
--- /dev/null
+++ b/generalization/data/tokenized_train/state.json
@@ -0,0 +1,13 @@
+{
+ "_data_files": [
+ {
+ "filename": "data-00000-of-00001.arrow"
+ }
+ ],
+ "_fingerprint": "0b9633717850bc07",
+ "_format_columns": null,
+ "_format_kwargs": {},
+ "_format_type": null,
+ "_output_all_columns": false,
+ "_split": null
+}
\ No newline at end of file
diff --git a/generalization/data/tokenized_val/data-00000-of-00001.arrow b/generalization/data/tokenized_val/data-00000-of-00001.arrow
new file mode 100644
index 0000000..7305205
Binary files /dev/null and b/generalization/data/tokenized_val/data-00000-of-00001.arrow differ
diff --git a/generalization/data/tokenized_val/dataset_info.json b/generalization/data/tokenized_val/dataset_info.json
new file mode 100644
index 0000000..c5ed9a8
--- /dev/null
+++ b/generalization/data/tokenized_val/dataset_info.json
@@ -0,0 +1,33 @@
+{
+ "citation": "",
+ "description": "",
+ "features": {
+ "snippets": {
+ "dtype": "string",
+ "_type": "Value"
+ },
+ "input_ids": {
+ "feature": {
+ "dtype": "int32",
+ "_type": "Value"
+ },
+ "_type": "Sequence"
+ },
+ "attention_mask": {
+ "feature": {
+ "dtype": "int8",
+ "_type": "Value"
+ },
+ "_type": "Sequence"
+ },
+ "labels": {
+ "feature": {
+ "dtype": "int64",
+ "_type": "Value"
+ },
+ "_type": "Sequence"
+ }
+ },
+ "homepage": "",
+ "license": ""
+}
\ No newline at end of file
diff --git a/generalization/data/tokenized_val/state.json b/generalization/data/tokenized_val/state.json
new file mode 100644
index 0000000..0cb7a77
--- /dev/null
+++ b/generalization/data/tokenized_val/state.json
@@ -0,0 +1,13 @@
+{
+ "_data_files": [
+ {
+ "filename": "data-00000-of-00001.arrow"
+ }
+ ],
+ "_fingerprint": "cc8d31de4b82da8d",
+ "_format_columns": null,
+ "_format_kwargs": {},
+ "_format_type": null,
+ "_output_all_columns": false,
+ "_split": null
+}
\ No newline at end of file
diff --git a/generalization/demonstration.ipynb b/generalization/demonstration.ipynb
new file mode 100644
index 0000000..e1dbb26
--- /dev/null
+++ b/generalization/demonstration.ipynb
@@ -0,0 +1,312 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "176621a1-0778-4a21-9de9-dd2ebefef5a6",
+ "metadata": {},
+ "source": [
+ "# Evaluating Arithmetic Operations Using Our Finetuned Large Language Model"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "26d10bd3-660c-43df-9719-43fa71b119ea",
+ "metadata": {},
+ "source": [
+ "This notebook demonstrates how to use our fine-tuned Code Llama model to evaluate simple arithmetic operations in Python code snippets. The process involves loading the pre-trained model, preparing the tokenizer, and defining functions to evaluate code examples. We then evaluate various code snippets to observe the model's generated results. This workflow highlights the capabilities of the Code Llama model in executing arithmetic expressions."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ac948737-336a-4d73-ba56-64601000e561",
+ "metadata": {},
+ "source": [
+ "## Import Necessary Libraries"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "7654d2f3-bae2-4936-b86c-a5a6b0e2ed51",
+ "metadata": {},
+ "source": [
+ "Import essential libraries for model loading, evaluation, and tokenization."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "4c3d4f58-731a-47a8-9121-4689acc8e2c6",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import torch\n",
+ "import warnings\n",
+ "from transformers import AutoModelForCausalLM, AutoTokenizer\n",
+ "from peft import PeftModel\n",
+ "\n",
+ "# Ignore all warnings\n",
+ "warnings.filterwarnings(\"ignore\")\n",
+ "\n",
+ "import transformers\n",
+ "\n",
+ "transformers.logging.set_verbosity_error()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "edd801aa-d88d-42b0-bfac-3901489f7642",
+ "metadata": {},
+ "source": [
+ "## Load the Pre-trained Model"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "74874a67-6e25-4395-81fa-768c630db298",
+ "metadata": {},
+ "source": [
+ "Load the pre-trained Code Llama model in 8-bit precision."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "b1d25be0-8aed-4825-976f-f066aa45eb8d",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "9e7fc7c9fd3b422fa5413277b16ac29e",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Loading checkpoint shards: 0%| | 0/2 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Charger le modèle pré-entraîné\n",
+ "base_model = \"codellama/CodeLlama-7b-hf\"\n",
+ "model = AutoModelForCausalLM.from_pretrained(\n",
+ " base_model,\n",
+ " load_in_8bit=True,\n",
+ " torch_dtype=torch.float16,\n",
+ " device_map=\"auto\",\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3987ca4f-b25d-4d9d-9dc2-79c4beeb7917",
+ "metadata": {},
+ "source": [
+ "## Load the Tokenizer"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e1f5cdc6-48f6-4765-8c7c-76ba6a47e5e4",
+ "metadata": {},
+ "source": [
+ "Load the tokenizer corresponding to the pre-trained model."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "d7fb73a7-d643-4c31-866e-d34baf0dbff5",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Charger le tokenizer\n",
+ "tokenizer = AutoTokenizer.from_pretrained(base_model)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "798b475a-8667-4d52-b028-ac04ec129746",
+ "metadata": {},
+ "source": [
+ "## Load the Fine-Tuned Model"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "67fa550a-8c96-4549-a496-de5d6c3215e6",
+ "metadata": {},
+ "source": [
+ "Load the fine-tuned model from the checkpoint directory."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "17bc03cf-634d-460d-806f-ce1ff8bf6d18",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "checkpoint_dir = \"models/code-llama-finetuned-level1\"\n",
+ "model = PeftModel.from_pretrained(model, checkpoint_dir)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1aa98af7-89d9-4a16-b266-18fae4cd12b9",
+ "metadata": {},
+ "source": [
+ "## Examples"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "b6d2155d-0d2c-4c6b-a438-d4e976e5f49a",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "a = 9\n",
+ "b = 7 \n",
+ "c = a * b\n",
+ "print(c)\n",
+ "# output\n",
+ "# 63\n"
+ ]
+ }
+ ],
+ "source": [
+ "eval_prompt = \"\"\"\n",
+ "a = 9\n",
+ "b = 7 \n",
+ "c = a * b\n",
+ "print(c)\n",
+ "# output\n",
+ "\"\"\"\n",
+ "\n",
+ "# Tokeniser l'invite d'évaluation\n",
+ "model_input = tokenizer(eval_prompt, return_tensors=\"pt\").to(\"cuda\")\n",
+ "\n",
+ "# Évaluer le modèle\n",
+ "model.eval()\n",
+ "with torch.no_grad():\n",
+ " output = tokenizer.decode(model.generate(**model_input, max_new_tokens=30, pad_token_id=tokenizer.eos_token_id)[0], skip_special_tokens=True)\n",
+ "\n",
+ "# Afficher le résultat\n",
+ "print(output)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "edabaa2f-3170-48fb-b45e-43c1fd7d5cdb",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "e = 10\n",
+ "c = 10\n",
+ "a = e / c\n",
+ "print(a)\n",
+ "# output\n",
+ "# 1.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "eval_prompt = \"\"\"\n",
+ "e = 10\n",
+ "c = 10\n",
+ "a = e / c\n",
+ "print(a)\n",
+ "# output\n",
+ "\"\"\"\n",
+ "\n",
+ "# Tokeniser l'invite d'évaluation\n",
+ "model_input = tokenizer(eval_prompt, return_tensors=\"pt\").to(\"cuda\")\n",
+ "\n",
+ "# Évaluer le modèle\n",
+ "model.eval()\n",
+ "with torch.no_grad():\n",
+ " output = tokenizer.decode(model.generate(**model_input, max_new_tokens=30, pad_token_id=tokenizer.eos_token_id)[0], skip_special_tokens=True)\n",
+ "\n",
+ "# Afficher le résultat\n",
+ "print(output)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "e4e818ed-27c1-4bd0-b1fe-35610851cc31",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "a = 9\n",
+ "d = 3\n",
+ "d = 1\n",
+ "d = 5 + 8\n",
+ "print(d * 5)\n",
+ "# output\n",
+ "# 45\n"
+ ]
+ }
+ ],
+ "source": [
+ "eval_prompt = \"\"\"\n",
+ "a = 9\n",
+ "d = 3\n",
+ "d = 1\n",
+ "d = 5 + 8\n",
+ "print(d * 5)\n",
+ "# output\n",
+ "\"\"\"\n",
+ "\n",
+ "# Tokeniser l'invite d'évaluation\n",
+ "model_input = tokenizer(eval_prompt, return_tensors=\"pt\").to(\"cuda\")\n",
+ "\n",
+ "# Évaluer le modèle\n",
+ "model.eval()\n",
+ "with torch.no_grad():\n",
+ " output = tokenizer.decode(model.generate(**model_input, max_new_tokens=30, pad_token_id=tokenizer.eos_token_id)[0], skip_special_tokens=True)\n",
+ "\n",
+ "# Afficher le résultat\n",
+ "print(output)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "TinyLM",
+ "language": "python",
+ "name": "tinylm"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.7"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/generalization/evaluate.py b/generalization/evaluate.py
new file mode 100644
index 0000000..6e8cb19
--- /dev/null
+++ b/generalization/evaluate.py
@@ -0,0 +1,111 @@
+import os
+import re
+import torch
+import warnings
+from tqdm import tqdm
+import argparse
+from transformers import AutoModelForCausalLM, AutoTokenizer
+from peft import PeftModel
+import pandas as pd
+
+import transformers
+
+transformers.logging.set_verbosity_error()
+
+# Ignore all warnings
+warnings.filterwarnings("ignore")
+
+def evaluate_model(base_model="codellama/CodeLlama-7b-hf",
+ checkpoint_dir="models/code-llama-finetuned-level1",
+ test_file="../data/test.txt",
+ output_file='results/result_llama.txt',
+ csv_file='results/results_llama.csv',
+ max_new_tokens=30):
+
+ print("Evaluating model...")
+ print()
+
+ # Load the pretrained model
+ print("Loading the pretrained model...")
+ print()
+ model = AutoModelForCausalLM.from_pretrained(
+ base_model,
+ load_in_8bit=True,
+ torch_dtype=torch.float16,
+ device_map="auto",
+ )
+
+ # Load the tokenizer
+ print("Loading the tokenizer...")
+ print()
+ tokenizer = AutoTokenizer.from_pretrained(base_model)
+
+ # Load the fine-tuned model
+ print("Loading the fine-tuned model...")
+ print()
+ model = PeftModel.from_pretrained(model, checkpoint_dir)
+
+ # Load and preprocess the test data
+ print("Loading the test data...")
+ print()
+ with open(test_file, 'r', encoding='utf-8') as f:
+ text = f.read()
+
+ examples = [example for example in text.split("\n\n") if example]
+
+ data = []
+
+ print("Generating predictions...")
+ print()
+ for example in tqdm(examples):
+ splited_example = example.split("# output\n")
+ prompt_text = splited_example[0] + "# output\n"
+ real_response = splited_example[1]
+
+ real_number_response = re.search(r"\d+\.\d+|\d+|-\d+|-\d+\.\d+", real_response.replace("\n", ""))
+ real_result = float(real_number_response.group()) if real_number_response else 0.0
+
+ model_input = tokenizer(prompt_text, return_tensors="pt").to("cuda")
+ response = tokenizer.decode(model.generate(**model_input, max_new_tokens=max_new_tokens, pad_token_id=tokenizer.eos_token_id)[0], skip_special_tokens=True)
+
+ splited_response = response.split("# output")
+ number_response = re.search(r"\d+\.\d+|\d+|-\d+|-\d+\.\d+", splited_response[1].replace("\n", ""))
+ generated_result = float(number_response.group()) if number_response else 0.0
+
+ data.append({'Prompt': prompt_text, 'Real_Results': real_result, 'Generated_Results': generated_result})
+
+ # Calculate accuracy
+ accuracy = sum(1 for d in data if d['Real_Results'] == d['Generated_Results']) / len(data)
+ print(f"Accuracy: {accuracy * 100:.2f}%")
+
+ # Store accuracy in a file
+ print("Storing accuracy in a file...")
+ print()
+ with open(output_file, 'w') as f:
+ f.write(f"Accuracy: {accuracy * 100:.2f}%\n")
+
+ # Store results in a CSV file using pandas
+ print("Storing results in a CSV file...")
+ print()
+ df = pd.DataFrame(data)
+ df.to_csv(csv_file, index=False)
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description="Evaluate a model with specified parameters.")
+ parser.add_argument('--base_model', type=str, default="codellama/CodeLlama-7b-hf", help="Base model name or path")
+ parser.add_argument('--checkpoint_dir', type=str, default="models/code-llama-finetuned-level1", help="Directory containing the model checkpoint")
+ parser.add_argument('--test_file', type=str, default="../data/test.txt", help="Path to the test file")
+ parser.add_argument('--output_file', type=str, default='results/result_llama.txt', help="Path to the output file where the accuracy will be stored")
+ parser.add_argument('--csv_file', type=str, default='results/results_llama.csv', help="Path to the CSV file where the results will be stored")
+ parser.add_argument('--max_new_tokens', type=int, default=30, help="Maximum number of new tokens to generate")
+
+ args = parser.parse_args()
+
+ evaluate_model(
+ base_model=args.base_model,
+ checkpoint_dir=args.checkpoint_dir,
+ test_file=args.test_file,
+ output_file=args.output_file,
+ csv_file=args.csv_file,
+ max_new_tokens=args.max_new_tokens
+ )
diff --git a/generalization/finetune.py b/generalization/finetune.py
new file mode 100644
index 0000000..4b9d764
--- /dev/null
+++ b/generalization/finetune.py
@@ -0,0 +1,194 @@
+import os
+import sys
+from datetime import datetime
+import argparse
+import warnings
+
+import torch
+from peft import (
+ LoraConfig,
+ get_peft_model,
+ get_peft_model_state_dict,
+ prepare_model_for_int8_training,
+ set_peft_model_state_dict,
+)
+from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer, DataCollatorForSeq2Seq
+from datasets import load_from_disk
+
+# Ignore all warnings
+warnings.filterwarnings("ignore")
+
+import transformers
+
+transformers.logging.set_verbosity_error()
+
+def train_model(base_model="codellama/CodeLlama-7b-hf",
+ train_dataset_path="data/tokenized_train",
+ val_dataset_path="data/tokenized_val",
+ resume_from_checkpoint="",
+ wandb_project="tiny-coder",
+ batch_size=128,
+ per_device_train_batch_size=32,
+ gradient_accumulation_steps=4,
+ output_dir="models/code-llama-finetuned-level1",
+ learning_rate=3e-4,
+ warmup_steps=100,
+ max_steps=200,
+ logging_steps=10,
+ eval_steps=20,
+ save_steps=20):
+
+ print("Fine-tuning model...")
+ print()
+
+ # Load the pretrained model
+ print("Loading the pretrained model...")
+ print()
+ model = AutoModelForCausalLM.from_pretrained(
+ base_model,
+ load_in_8bit=True,
+ torch_dtype=torch.float16,
+ device_map="auto",
+ )
+
+
+ # Load the tokenizer
+ print("Loading the tokenizer...")
+ print()
+ tokenizer = AutoTokenizer.from_pretrained(base_model)
+ tokenizer.add_eos_token = True
+ tokenizer.pad_token_id = 0
+ tokenizer.padding_side = "left"
+
+ # Load the tokenized datasets
+ print("Loading the tokenized datasets...")
+ print()
+ tokenized_train_dataset = load_from_disk(train_dataset_path)
+ tokenized_val_dataset = load_from_disk(val_dataset_path)
+
+ # Prepare the model for int8 training
+ model.train()
+ model = prepare_model_for_int8_training(model)
+
+ # Configure Lora settings
+ config = LoraConfig(
+ r=16,
+ lora_alpha=16,
+ target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
+ lora_dropout=0.05,
+ bias="none",
+ task_type="CAUSAL_LM",
+ )
+ model = get_peft_model(model, config)
+
+ # Resume from checkpoint if specified
+ if resume_from_checkpoint and os.path.exists(resume_from_checkpoint):
+ print(f"Restarting from {resume_from_checkpoint}")
+ adapters_weights = torch.load(resume_from_checkpoint)
+ set_peft_model_state_dict(model, adapters_weights)
+ elif resume_from_checkpoint:
+ print(f"Checkpoint {resume_from_checkpoint} not found")
+
+ # Setup Weights and Biases if project name is given
+ if wandb_project:
+ print("Setting up Weights and Biases...")
+ print()
+ os.environ["WANDB_PROJECT"] = wandb_project
+ os.environ['WANDB__EXECUTABLE'] = sys.executable
+
+ # Enable parallelism if multiple GPUs are available
+ if torch.cuda.device_count() > 1:
+ print("Enabling parallelism...")
+ print()
+ model.is_parallelizable = True
+ model.model_parallel = True
+
+ # Training arguments
+ print("Setting up training arguments...")
+ print()
+ training_args = TrainingArguments(
+ per_device_train_batch_size=per_device_train_batch_size,
+ gradient_accumulation_steps=gradient_accumulation_steps,
+ warmup_steps=warmup_steps,
+ max_steps=max_steps,
+ learning_rate=learning_rate,
+ fp16=True,
+ logging_steps=logging_steps,
+ optim="adamw_torch",
+ evaluation_strategy="steps",
+ save_strategy="steps",
+ eval_steps=eval_steps,
+ save_steps=save_steps,
+ output_dir=output_dir,
+ group_by_length=True,
+ report_to="wandb",
+ run_name=f"codellama-{datetime.now().strftime('%Y-%m-%d-%H-%M')}",
+ )
+
+ # Initialize the Trainer
+ trainer = Trainer(
+ model=model,
+ train_dataset=tokenized_train_dataset,
+ eval_dataset=tokenized_val_dataset,
+ args=training_args,
+ data_collator=DataCollatorForSeq2Seq(
+ tokenizer, pad_to_multiple_of=8, return_tensors="pt", padding=True
+ ),
+ )
+
+ # Disable caching for training
+ model.config.use_cache = False
+
+ # Patch the model's state_dict
+ old_state_dict = model.state_dict
+ model.state_dict = (lambda self, *_, **__: get_peft_model_state_dict(self, old_state_dict())).__get__(
+ model, type(model)
+ )
+
+ # Compile the model if applicable
+ if torch.__version__ >= "2" and sys.platform != "win32":
+ print("Compiling the model...")
+ print()
+ model = torch.compile(model)
+
+ # Start training
+ print("Starting training...")
+ trainer.train()
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description="Train a model with specified parameters.")
+ parser.add_argument('--base_model', type=str, default="codellama/CodeLlama-7b-hf", help="Base model name or path")
+ parser.add_argument('--train_dataset_path', type=str, default="data/tokenized_train", help="Path to the tokenized training dataset")
+ parser.add_argument('--val_dataset_path', type=str, default="data/tokenized_val", help="Path to the tokenized validation dataset")
+ parser.add_argument('--resume_from_checkpoint', type=str, default="", help="Path to checkpoint to resume training from")
+ parser.add_argument('--wandb_project', type=str, default="tiny-coder", help="WandB project name")
+ parser.add_argument('--batch_size', type=int, default=128, help="Total batch size for training")
+ parser.add_argument('--per_device_train_batch_size', type=int, default=32, help="Batch size per device for training")
+ parser.add_argument('--gradient_accumulation_steps', type=int, default=4, help="Number of gradient accumulation steps")
+ parser.add_argument('--output_dir', type=str, default="models/code-llama-finetuned-level1", help="Directory to save the output")
+ parser.add_argument('--learning_rate', type=float, default=3e-4, help="Learning rate")
+ parser.add_argument('--warmup_steps', type=int, default=100, help="Number of warmup steps")
+ parser.add_argument('--max_steps', type=int, default=200, help="Maximum number of training steps")
+ parser.add_argument('--logging_steps', type=int, default=10, help="Number of steps between logging")
+ parser.add_argument('--eval_steps', type=int, default=20, help="Number of steps between evaluations")
+ parser.add_argument('--save_steps', type=int, default=20, help="Number of steps between saving checkpoints")
+
+ args = parser.parse_args()
+
+ train_model(
+ base_model=args.base_model,
+ train_dataset_path=args.train_dataset_path,
+ val_dataset_path=args.val_dataset_path,
+ resume_from_checkpoint=args.resume_from_checkpoint,
+ wandb_project=args.wandb_project,
+ batch_size=args.batch_size,
+ per_device_train_batch_size=args.per_device_train_batch_size,
+ gradient_accumulation_steps=args.gradient_accumulation_steps,
+ output_dir=args.output_dir,
+ learning_rate=args.learning_rate,
+ warmup_steps=args.warmup_steps,
+ max_steps=args.max_steps,
+ logging_steps=args.logging_steps,
+ eval_steps=args.eval_steps,
+ save_steps=args.save_steps
+ )
\ No newline at end of file
diff --git a/generalization/results/.ipynb_checkpoints/result_llama-checkpoint.txt b/generalization/results/.ipynb_checkpoints/result_llama-checkpoint.txt
new file mode 100644
index 0000000..c71fe79
--- /dev/null
+++ b/generalization/results/.ipynb_checkpoints/result_llama-checkpoint.txt
@@ -0,0 +1 @@
+Accuracy: 80.00%
diff --git a/generalization/results/.ipynb_checkpoints/results_llama-checkpoint.csv b/generalization/results/.ipynb_checkpoints/results_llama-checkpoint.csv
new file mode 100644
index 0000000..9cbdcd6
--- /dev/null
+++ b/generalization/results/.ipynb_checkpoints/results_llama-checkpoint.csv
@@ -0,0 +1,47 @@
+Prompt,Real_Results,Generated_Results
+"b = 7
+e = 2
+e = 1
+d = 8
+print(b - b)
+# output
+",0.0,0.0
+"a = 7
+c = 0
+a = 1
+for a in range(8, 10) :
+ print(c)
+# output
+",0.0,0.0
+"e = 7
+d = 1
+c = 8
+b = 1
+b = (b / d)-(b * 2)/(2 * d)*(b / c)/(e + 0)-(c + 8)
+if not (b == 9) or (e < 3) or (c > b) and ( d == b) :
+ print(c - e)
+elif (not c < 0) :
+ print(d - b)
+else :
+ print(b)
+# output
+",1.0,7.0
+"d = 2
+d = 0
+d = 6
+if d != 0 :
+ print(d)
+elif not d != d :
+ print(d)
+else :
+ print(d)
+# output
+",6.0,6.0
+"e = 6
+d = 4
+e = 0
+b = d / 8
+for d in range(8, 5) :
+ print(d + 3)
+# output
+",0.0,0.0
diff --git a/generalization/results/result_llama.txt b/generalization/results/result_llama.txt
new file mode 100644
index 0000000..2fe40e2
--- /dev/null
+++ b/generalization/results/result_llama.txt
@@ -0,0 +1 @@
+Accuracy: 96.00%
diff --git a/generalization/results/results_llama.csv b/generalization/results/results_llama.csv
new file mode 100644
index 0000000..5d3fb53
--- /dev/null
+++ b/generalization/results/results_llama.csv
@@ -0,0 +1,510 @@
+Prompt,Real_Results,Generated_Results
+"c = 3
+e = 9
+e = 0 * c
+print(e)
+# output
+",0.0,0.0
+"e = 2
+a = 6
+c = a / 4
+print(c)
+# output
+",1.5,1.5
+"e = 6
+c = 3 / e
+print(c)
+# output
+",0.5,0.5
+"e = 8
+a = 3
+print(e / a)
+# output
+",2.6666666666666665,2.6666666666666665
+"a = 8
+e = a + 1
+print(a / a)
+# output
+",1.0,1.0
+"e = 6
+a = 7
+d = a - 1
+print(d)
+# output
+",6.0,6.0
+"d = 9
+print(d * d)
+# output
+",81.0,81.0
+"c = 4
+print(c + 3)
+# output
+",7.0,7.0
+"d = 7
+print(d / d)
+# output
+",1.0,1.0
+"d = 5
+a = 0
+print(a + d)
+# output
+",5.0,5.0
+"a = 6
+b = 0
+a = 3 - 3
+print(b / 9)
+# output
+",0.0,0.0
+"a = 0
+a = 0
+print(a)
+# output
+",0.0,0.0
+"c = 3
+e = 7
+print(c * c)
+# output
+",9.0,9.0
+"a = 2
+e = 0 / 8
+print(a * a)
+# output
+",4.0,4.0
+"e = 9
+a = 9
+print(a * e)
+# output
+",81.0,81.0
+"d = 8
+e = 4
+print(e + d)
+# output
+",12.0,12.0
+"a = 2
+c = a - 6
+print(a / a)
+# output
+",1.0,1.0
+"a = 6
+b = 7
+d = a - 0
+print(d)
+# output
+",6.0,6.0
+"b = 7
+e = 2
+b = 0 * 7
+print(b)
+# output
+",0.0,0.0
+"c = 9
+e = 4
+print(c - 5)
+# output
+",4.0,4.0
+"d = 4
+d = 7 * 4
+print(d * d)
+# output
+",784.0,289.0
+"a = 4
+print(a / a)
+# output
+",1.0,1.0
+"e = 3
+b = 4
+a = e - 6
+print(a)
+# output
+",-3.0,-3.0
+"d = 5
+d = 9 - 7
+print(d)
+# output
+",2.0,2.0
+"b = 7
+b = 3 / b
+print(b)
+# output
+",0.42857142857142855,0.42857142857142855
+"a = 9
+b = a + a
+print(a / a)
+# output
+",1.0,1.0
+"a = 0
+d = a * 9
+print(d)
+# output
+",0.0,0.0
+"e = 1
+c = e + e
+print(c)
+# output
+",2.0,2.0
+"e = 3
+c = e + 2
+print(e + e)
+# output
+",6.0,6.0
+"a = 4
+e = 0 * 7
+print(a + 2)
+# output
+",6.0,6.0
+"b = 6
+b = 5
+b = b - b
+print(b / 3)
+# output
+",0.0,0.0
+"b = 0
+d = 9 * 1
+print(d)
+# output
+",9.0,9.0
+"a = 4
+a = 2
+print(a)
+# output
+",2.0,2.0
+"e = 9
+b = 3
+print(b)
+# output
+",3.0,3.0
+"d = 6
+c = 4 + 1
+print(d + 2)
+# output
+",8.0,8.0
+"d = 8
+c = d - 6
+print(c)
+# output
+",2.0,2.0
+"a = 9
+d = 1
+print(a * d)
+# output
+",9.0,9.0
+"c = 4
+a = 4
+print(a)
+# output
+",4.0,4.0
+"b = 5
+a = 1
+b = a - a
+print(b)
+# output
+",0.0,0.0
+"d = 2
+c = 1
+print(d)
+# output
+",2.0,2.0
+"e = 3
+b = 5
+print(b * 9)
+# output
+",45.0,45.0
+"e = 9
+d = 5
+d = e * d
+print(e / d)
+# output
+",0.2,0.09090909090909091
+"c = 5
+print(c * c)
+# output
+",25.0,25.0
+"e = 2
+c = 8 / e
+print(e * 9)
+# output
+",18.0,18.0
+"c = 0
+c = 6 - 8
+print(c)
+# output
+",-2.0,-2.0
+"e = 7
+a = 2
+d = 5 * 7
+print(a * 7)
+# output
+",14.0,14.0
+"e = 1
+print(e * e)
+# output
+",1.0,1.0
+"d = 6
+b = d * d
+print(b)
+# output
+",36.0,36.0
+"e = 8
+b = e / 5
+print(e / 2)
+# output
+",4.0,4.0
+"d = 6
+c = 3
+a = 9 + d
+print(a)
+# output
+",15.0,15.0
+"d = 4
+a = 8
+print(a * a)
+# output
+",64.0,64.0
+"e = 6
+print(e + e)
+# output
+",12.0,12.0
+"b = 3
+a = 3
+print(a)
+# output
+",3.0,3.0
+"b = 9
+b = 9
+print(b - 5)
+# output
+",4.0,4.0
+"a = 8
+print(a)
+# output
+",8.0,8.0
+"b = 2
+e = 2
+print(e)
+# output
+",2.0,2.0
+"e = 1
+c = e / 7
+print(e - e)
+# output
+",0.0,0.0
+"e = 3
+c = 0
+print(c)
+# output
+",0.0,0.0
+"a = 1
+a = 3
+print(a / 1)
+# output
+",3.0,3.0
+"c = 3
+print(c / c)
+# output
+",1.0,1.0
+"c = 0
+c = c - c
+print(c)
+# output
+",0.0,0.0
+"a = 7
+d = 2
+print(a)
+# output
+",7.0,7.0
+"c = 3
+a = 0
+print(c - 4)
+# output
+",-1.0,-1.0
+"e = 9
+a = 5
+print(e)
+# output
+",9.0,9.0
+"d = 3
+b = 4
+d = 4 / 3
+print(b * b)
+# output
+",16.0,16.0
+"c = 5
+d = 5
+d = c - 4
+print(d)
+# output
+",1.0,1.0
+"e = 6
+b = 3
+e = e - 6
+print(e)
+# output
+",0.0,0.0
+"d = 4
+c = 6
+print(d + c)
+# output
+",10.0,10.0
+"b = 8
+a = 9
+e = 5 / 2
+print(b * a)
+# output
+",72.0,72.0
+"e = 4
+print(e)
+# output
+",4.0,4.0
+"b = 2
+c = 3
+print(b / b)
+# output
+",1.0,1.0
+"d = 8
+d = 0
+c = 7 - 1
+print(c)
+# output
+",6.0,6.0
+"e = 9
+print(e * e)
+# output
+",81.0,81.0
+"e = 1
+a = 6
+print(a / 6)
+# output
+",1.0,1.0
+"d = 5
+d = 9
+e = 0 - d
+print(d * d)
+# output
+",81.0,81.0
+"d = 5
+d = d * d
+print(d)
+# output
+",25.0,25.0
+"b = 7
+a = 2
+print(a)
+# output
+",2.0,2.0
+"b = 3
+e = 1
+e = 9 + e
+print(e)
+# output
+",10.0,10.0
+"e = 9
+e = 7 * e
+print(e + 7)
+# output
+",70.0,103.0
+"e = 3
+c = 2
+d = 1 + 5
+print(c * c)
+# output
+",4.0,4.0
+"d = 9
+b = 5
+print(d)
+# output
+",9.0,9.0
+"d = 6
+e = 6
+print(e)
+# output
+",6.0,6.0
+"e = 6
+e = 7
+print(e)
+# output
+",7.0,7.0
+"b = 9
+a = 2
+b = a - 9
+print(a - 4)
+# output
+",-2.0,-2.0
+"e = 2
+c = 3
+print(c)
+# output
+",3.0,3.0
+"b = 4
+b = 3 - b
+print(b)
+# output
+",-1.0,-1.0
+"d = 0
+d = 7
+print(d + 3)
+# output
+",10.0,10.0
+"d = 9
+print(d - 9)
+# output
+",0.0,0.0
+"c = 4
+print(c)
+# output
+",4.0,4.0
+"c = 3
+e = 2
+print(c)
+# output
+",3.0,3.0
+"e = 6
+c = 4
+print(e / 9)
+# output
+",0.6666666666666666,0.6666666666666666
+"a = 4
+print(a)
+# output
+",4.0,4.0
+"c = 8
+c = 0
+b = 9 * c
+print(b)
+# output
+",0.0,0.0
+"a = 8
+a = 9
+print(a)
+# output
+",9.0,9.0
+"a = 0
+e = a + a
+print(a + a)
+# output
+",0.0,0.0
+"a = 7
+e = 6
+print(a + a)
+# output
+",14.0,14.0
+"b = 8
+e = b + b
+print(e)
+# output
+",16.0,16.0
+"a = 3
+e = 9
+b = e - a
+print(b)
+# output
+",6.0,6.0
+"e = 4
+e = 4 * e
+print(e / 8)
+# output
+",2.0,1.0
+"d = 7
+c = 2 + 8
+print(d * 1)
+# output
+",7.0,7.0
diff --git a/generalization/tokenizing.py b/generalization/tokenizing.py
new file mode 100644
index 0000000..14a446e
--- /dev/null
+++ b/generalization/tokenizing.py
@@ -0,0 +1,82 @@
+import argparse
+import pandas as pd
+from datasets import Dataset
+from transformers import AutoTokenizer
+
+import transformers
+
+transformers.logging.set_verbosity_error()
+
+def tokenize_data(train_file="../data/train.txt",
+ test_file="../data/val.txt",
+ tokenizer_name="codellama/CodeLlama-7b-hf",
+ train_output_dir="data/tokenized_train",
+ val_output_dir="data/tokenized_val"):
+ print("Tokenizing data...")
+
+ # Read the training and test data
+ with open(train_file) as f:
+ train_data = f.read()
+
+ with open(test_file) as f:
+ test_data = f.read()
+
+ # Split the snippets into individual examples
+ train_snippets = train_data.split('\n\n')
+ test_snippets = test_data.split('\n\n')
+
+ # Create datasets from the snippets
+ train_dataset = Dataset.from_pandas(pd.DataFrame({'snippets': train_snippets}))
+ eval_dataset = Dataset.from_pandas(pd.DataFrame({'snippets': test_snippets}))
+
+ # Load the tokenizer
+ print("Loading tokenizer...")
+ tokenizer = AutoTokenizer.from_pretrained(tokenizer_name)
+ tokenizer.add_eos_token = True
+ tokenizer.pad_token_id = 0
+ tokenizer.padding_side = "left"
+
+ # Function to tokenize a prompt
+ def tokenize(prompt):
+ result = tokenizer(
+ prompt,
+ truncation=True,
+ max_length=512,
+ padding=False,
+ return_tensors=None,
+ )
+
+ # For self-supervised learning, labels are also the inputs
+ result["labels"] = result["input_ids"].copy()
+
+ return result
+
+ # Function to generate and tokenize a prompt
+ def generate_and_tokenize_prompt(data_point):
+ full_prompt = data_point["snippets"]
+
+ return tokenize(full_prompt)
+
+ # Tokenize the training and validation datasets
+ print("Tokenizing datasets...")
+ tokenized_train_dataset = train_dataset.map(generate_and_tokenize_prompt)
+ tokenized_val_dataset = eval_dataset.map(generate_and_tokenize_prompt)
+
+ # Save the tokenized datasets to disk
+ print(f"Saving tokenized datasets to {train_output_dir} and {val_output_dir}...")
+ tokenized_train_dataset.save_to_disk(train_output_dir)
+ tokenized_val_dataset.save_to_disk(val_output_dir)
+
+ print("Tokenization complete.")
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description="Tokenize data for language model training.")
+ parser.add_argument("--train_file", type=str, default="../data/train.txt", help="Path to the training file")
+ parser.add_argument("--test_file", type=str, default="../data/val.txt", help="Path to the test file")
+ parser.add_argument("--tokenizer_name", type=str, default="codellama/CodeLlama-7b-hf", help="Name or path of the tokenizer")
+ parser.add_argument("--train_output_dir", type=str, default="data/tokenized_train", help="Path to save the tokenized training dataset")
+ parser.add_argument("--val_output_dir", type=str, default="data/tokenized_val", help="Path to save the tokenized validation dataset")
+
+ args = parser.parse_args()
+
+ tokenize_data(args.train_file, args.test_file, args.tokenizer_name, args.train_output_dir, args.val_output_dir)
diff --git a/line-level_code_completion.py b/line-level_code_completion.py
new file mode 100644
index 0000000..530c982
--- /dev/null
+++ b/line-level_code_completion.py
@@ -0,0 +1,99 @@
+import os
+import pickle
+import argparse
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+import numpy as np
+import pandas as pd
+from tqdm import tqdm
+import re
+from model import GPT
+
+# Argument parsing
+parser = argparse.ArgumentParser(description='Evaluate NanoGPT model on token-level code completion.')
+parser.add_argument('--dataset_dir', type=str, default='data', help='Directory where the dataset is stored')
+parser.add_argument('--model_name', type=str, required=True, help='Name of the pre-trained model (without .pth extension)')
+
+# Parse the command-line arguments
+args = parser.parse_args()
+
+device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
+torch.manual_seed(1337)
+
+
+# Constants for dataset and file paths
+MODEL_FILE = f"models/{args.model_name}.pth"
+ACCURACY_FILE = f"results/{args.model_name}_acc_line-level_code_completion.txt"
+RESULTS_FILE = f"results/{args.model_name}_line-level_code_completion.csv"
+
+
+data_dir = args.dataset_dir
+test_data = np.memmap(os.path.join(data_dir, 'test.bin'), dtype=np.uint16, mode='r')
+
+
+# attempt to derive vocab_size from the dataset
+meta_path = os.path.join(data_dir, 'meta.pkl')
+meta_vocab_size = None
+if os.path.exists(meta_path):
+ with open(meta_path, 'rb') as f:
+ meta = pickle.load(f)
+ meta_vocab_size = meta['vocab_size']
+ print(f"found vocab_size = {meta_vocab_size} (inside {meta_path})")
+
+stoi = meta['stoi']
+itos = meta['itos']
+encode = lambda s: [stoi[c] for c in s]
+decode = lambda l: ''.join([itos[i] for i in l])
+
+model = GPT()
+print("Compiling model...")
+model = torch.compile(model) # pytorch 2.0
+model.load_state_dict(torch.load(MODEL_FILE))
+m = model.to(device)
+
+examples = decode(test_data).split("\n\n")
+examples = [example for example in examples if example]
+
+correct_predictions = 0
+total_predictions = 0
+
+results = []
+
+for code_snippet in tqdm(examples):
+
+ lines = code_snippet.split('\n')
+ for i in range(1, len(lines)):
+
+ context_lines = lines[:i]
+ actual_next_line = lines[i]
+
+ context_tokens = torch.tensor(encode('\n'.join(context_lines) + '\n'), dtype=torch.long).unsqueeze(0).to(device)
+ actual_next_line_tokens = torch.tensor(encode(actual_next_line), dtype=torch.long).unsqueeze(0).to(device)
+
+ n = actual_next_line_tokens.shape[1] # Limit to length of actual next line
+ predicted_next_line_tokens = m.generate(context_tokens, max_new_tokens=n)
+ predicted_next_line_tokens = predicted_next_line_tokens[:, -n:]
+ is_correct = torch.equal(predicted_next_line_tokens, actual_next_line_tokens)
+
+ if is_correct:
+ correct_predictions += 1
+ results.append({
+ 'context': context_tokens.cpu(),
+ 'actual_next_line': actual_next_line_tokens.cpu(),
+ 'predicted_next_line': predicted_next_line_tokens.cpu(),
+ 'is_correct': is_correct
+ })
+
+ total_predictions += 1
+
+df = pd.DataFrame(results)
+df.to_csv(RESULTS_FILE, index=False)
+
+accuracy = (correct_predictions / total_predictions) * 100
+
+# Store accuracy in a file
+with open(ACCURACY_FILE, 'w') as f:
+ f.write(f"Accuracy: {accuracy:.2f}%\n")
+
+print(accuracy)
\ No newline at end of file
diff --git a/model.py b/model.py
new file mode 100644
index 0000000..9d869d5
--- /dev/null
+++ b/model.py
@@ -0,0 +1,162 @@
+import random
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+import numpy as np
+import pandas as pd
+import os
+import pickle
+
+# Set the random seed for reproducibility
+seed = 42
+torch.manual_seed(seed)
+random.seed(seed)
+np.random.seed(seed)
+
+# Set the device to GPU if available, otherwise CPU
+device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
+
+# Directory where the dataset is stored
+DATA_DIR = 'data'
+
+# Hyperparameters for the GPT model
+block_size = 256 # Maximum context length
+n_embd = 96 # Embedding dimension
+n_head = 6 # Number of attention heads
+n_layer = 6 # Number of transformer blocks
+dropout = 0 # Dropout rate
+
+# Attempt to derive vocab_size from the dataset
+meta_path = os.path.join(DATA_DIR, 'meta.pkl')
+meta_vocab_size = None
+if os.path.exists(meta_path):
+ with open(meta_path, 'rb') as f:
+ meta = pickle.load(f)
+ meta_vocab_size = meta['vocab_size']
+
+vocab_size = meta_vocab_size
+
+class LayerNorm(nn.Module):
+ """ LayerNorm with an optional bias. PyTorch's LayerNorm doesn't support simply bias=False """
+
+ def __init__(self, ndim, bias):
+ super().__init__()
+ self.weight = nn.Parameter(torch.ones(ndim))
+ self.bias = nn.Parameter(torch.zeros(ndim)) if bias else None
+
+ def forward(self, input):
+ return F.layer_norm(input, self.weight.shape, self.weight, self.bias, 1e-5)
+
+class Head(nn.Module):
+ """One head of self-attention."""
+
+ def __init__(self, head_size):
+ super().__init__()
+ self.key = nn.Linear(n_embd, head_size, bias=False)
+ self.query = nn.Linear(n_embd, head_size, bias=False)
+ self.value = nn.Linear(n_embd, head_size, bias=False)
+ self.flash = hasattr(torch.nn.functional, 'scaled_dot_product_attention')
+ self.dropout = nn.Dropout(dropout)
+
+ def forward(self, x):
+ B, T, C = x.shape
+ k = self.key(x) # (B, T, head_size)
+ q = self.query(x) # (B, T, head_size)
+ v = self.value(x) # (B, T, head_size)
+
+ # Apply scaled dot-product attention
+ out = torch.nn.functional.scaled_dot_product_attention(
+ q, k, v, attn_mask=None, dropout_p=dropout if self.training else 0, is_causal=True
+ )
+
+ return out
+
+class MultiHeadAttention(nn.Module):
+ """Multiple heads of self-attention in parallel."""
+
+ def __init__(self, num_heads, head_size):
+ super().__init__()
+ self.heads = nn.ModuleList([Head(head_size) for _ in range(num_heads)])
+ self.proj = nn.Linear(n_embd, n_embd)
+ self.dropout = nn.Dropout(dropout)
+
+ def forward(self, x):
+ # Concatenate the outputs from each head
+ out = torch.cat([h(x) for h in self.heads], dim=-1)
+ out = self.dropout(self.proj(out))
+ return out
+
+class FeedForward(nn.Module):
+ """A simple linear layer followed by a non-linearity."""
+
+ def __init__(self, n_embd):
+ super().__init__()
+ self.net = nn.Sequential(
+ nn.Linear(n_embd, 4 * n_embd, bias=False),
+ nn.GELU(),
+ nn.Linear(4 * n_embd, n_embd, bias=False),
+ nn.Dropout(dropout),
+ )
+
+ def forward(self, x):
+ return self.net(x)
+
+class Block(nn.Module):
+ """Transformer block: communication followed by feedforward."""
+
+ def __init__(self, n_embd, n_head):
+ super().__init__()
+ head_size = n_embd // n_head
+ self.sa = MultiHeadAttention(n_head, head_size)
+ self.ffwd = FeedForward(n_embd)
+ self.ln1 = nn.LayerNorm(n_embd, bias=False)
+ self.ln2 = nn.LayerNorm(n_embd, bias=False)
+
+ def forward(self, x):
+ x = x + self.sa(self.ln1(x))
+ x = x + self.ffwd(self.ln2(x))
+ return x
+
+class GPT(nn.Module):
+ """GPT language model."""
+
+ def __init__(self):
+ super().__init__()
+ self.token_embedding_table = nn.Embedding(vocab_size, n_embd)
+ self.position_embedding_table = nn.Embedding(block_size, n_embd)
+ self.blocks = nn.Sequential(*[Block(n_embd, n_head=n_head) for _ in range(n_layer)])
+ self.ln_f = nn.LayerNorm(n_embd, bias=False)
+ self.lm_head = nn.Linear(n_embd, vocab_size)
+
+ def forward(self, idx, targets=None):
+ B, T = idx.shape
+
+ # Token and position embeddings
+ tok_emb = self.token_embedding_table(idx) # (B, T, n_embd)
+ pos_emb = self.position_embedding_table(torch.arange(T, device=device)) # (T, n_embd)
+ x = tok_emb + pos_emb # (B, T, n_embd)
+ x = self.blocks(x) # (B, T, n_embd)
+ x = self.ln_f(x) # (B, T, n_embd)
+ logits = self.lm_head(x) # (B, T, vocab_size)
+
+ # Compute loss if targets are provided
+ if targets is None:
+ loss = None
+ else:
+ B, T, C = logits.shape
+ logits = logits.view(B * T, C)
+ targets = targets.view(B * T)
+ loss = F.cross_entropy(logits, targets)
+
+ return logits, loss
+
+ def generate(self, idx, max_new_tokens):
+ """Generate new tokens given an initial context `idx`."""
+ for _ in range(max_new_tokens):
+ idx_cond = idx[:, -block_size:] # Crop to the last block_size tokens
+ logits, _ = self(idx_cond)
+ logits = logits[:, -1, :] # Focus on the last time step
+ probs = F.softmax(logits, dim=-1) # Convert to probabilities
+ idx_next = torch.multinomial(probs, num_samples=1) # Sample from the distribution
+ idx = torch.cat((idx, idx_next), dim=1) # Append sampled index to the sequence
+ return idx
diff --git a/models/arithmetics_level1_696K.pth b/models/arithmetics_level1_696K.pth
new file mode 100644
index 0000000..170fd1e
Binary files /dev/null and b/models/arithmetics_level1_696K.pth differ
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..122940a
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,11 @@
+anytree==2.12.1
+tqdm==4.66.2
+requests==2.31.0
+numpy==1.26.4
+pandas==2.2.1
+torch==2.2.2
+transformers==4.30.2
+datasets==2.18.0
+psutil==5.9.8
+argparse==1.1
+peft @ git+https://github.com/huggingface/peft.git@e536616888d51b453ed354a6f1e243fecb02ea08
diff --git a/results/.ipynb_checkpoints/arithmetics_level1_696K_accuracy-checkpoint.txt b/results/.ipynb_checkpoints/arithmetics_level1_696K_accuracy-checkpoint.txt
new file mode 100644
index 0000000..2fe40e2
--- /dev/null
+++ b/results/.ipynb_checkpoints/arithmetics_level1_696K_accuracy-checkpoint.txt
@@ -0,0 +1 @@
+Accuracy: 96.00%
diff --git a/results/arithmetics_level1_696K_acc_line-level_code_completion.txt b/results/arithmetics_level1_696K_acc_line-level_code_completion.txt
new file mode 100644
index 0000000..95d063c
--- /dev/null
+++ b/results/arithmetics_level1_696K_acc_line-level_code_completion.txt
@@ -0,0 +1 @@
+Accuracy: 51.83%
diff --git a/results/arithmetics_level1_696K_acc_token-level_code_completion.txt b/results/arithmetics_level1_696K_acc_token-level_code_completion.txt
new file mode 100644
index 0000000..0a26c80
--- /dev/null
+++ b/results/arithmetics_level1_696K_acc_token-level_code_completion.txt
@@ -0,0 +1 @@
+Accuracy: 82.54%
diff --git a/results/arithmetics_level1_696K_accuracy.txt b/results/arithmetics_level1_696K_accuracy.txt
new file mode 100644
index 0000000..2fe40e2
--- /dev/null
+++ b/results/arithmetics_level1_696K_accuracy.txt
@@ -0,0 +1 @@
+Accuracy: 96.00%
diff --git a/results/arithmetics_level1_696K_line-level_code_completion.csv b/results/arithmetics_level1_696K_line-level_code_completion.csv
new file mode 100644
index 0000000..bb89d68
--- /dev/null
+++ b/results/arithmetics_level1_696K_line-level_code_completion.csv
@@ -0,0 +1,673 @@
+context,actual_next_line,predicted_next_line,is_correct
+"tensor([[23, 1, 20, 1, 13, 0]])","tensor([[25, 1, 20, 1, 19]])","tensor([[25, 1, 20, 1, 12]])",False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0]])","tensor([[25, 1, 20, 1, 10, 1, 5, 1, 23]])","tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26]])",False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 4]])","tensor([[29, 30, 26, 27, 31, 3, 23, 1]])",False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 10]])","tensor([[ 2, 1, 10]])",True
+"tensor([[25, 1, 20, 1, 12, 0]])","tensor([[21, 1, 20, 1, 16]])","tensor([[21, 1, 20, 1, 10]])",False
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0]])","tensor([[23, 1, 20, 1, 21, 1, 9, 1, 14]])","tensor([[25, 1, 20, 1, 13, 1, 9, 1, 21]])",False
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])",True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 8, 15]])","tensor([[ 2, 1, 11, 8, 15]])",True
+"tensor([[25, 1, 20, 1, 16, 0]])","tensor([[23, 1, 20, 1, 13, 1, 9, 1, 25]])","tensor([[24, 1, 20, 1, 18, 1, 5, 1, 25]])",False
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])",True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 10, 8, 15]])","tensor([[ 2, 1, 10, 8, 15]])",True
+"tensor([[25, 1, 20, 1, 18, 0]])","tensor([[21, 1, 20, 1, 13]])","tensor([[24, 1, 20, 1, 17]])",False
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 21, 4]])","tensor([[25, 1, 20, 1, 16, 1, 6, 1, 14, 0, 29, 30]])",False
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 12, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 15]])","tensor([[ 2, 1, 12, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 15]])",True
+"tensor([[21, 1, 20, 1, 18, 0]])","tensor([[25, 1, 20, 1, 21, 1, 6, 1, 11]])","tensor([[22, 1, 20, 1, 10, 1, 7, 1, 23]])",False
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4]])","tensor([[29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 17, 4]])",False
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 11, 8, 10]])","tensor([[ 2, 1, 11, 8, 10]])",True
+"tensor([[25, 1, 20, 1, 16, 0]])","tensor([[21, 1, 20, 1, 17]])","tensor([[22, 1, 20, 1, 19]])",False
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0]])","tensor([[24, 1, 20, 1, 21, 1, 7, 1, 11]])","tensor([[24, 1, 20, 1, 19, 1, 6, 1, 25]])",False
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1]])",False
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 16]])","tensor([[ 2, 1, 16]])",True
+"tensor([[24, 1, 20, 1, 19, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 18, 4]])",False
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 18, 11]])","tensor([[ 2, 1, 18, 11]])",True
+"tensor([[23, 1, 20, 1, 14, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4]])","tensor([[23, 1, 20, 1, 23, 1, 5, 1, 12, 0, 29, 30]])",False
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 17]])","tensor([[ 2, 1, 17]])",True
+"tensor([[24, 1, 20, 1, 17, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4]])","tensor([[24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3]])",False
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 8, 10]])","tensor([[ 2, 1, 11, 8, 10]])",True
+"tensor([[24, 1, 20, 1, 15, 0]])","tensor([[21, 1, 20, 1, 10]])","tensor([[22, 1, 20, 1, 16]])",False
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 6, 1, 24, 4]])","tensor([[21, 1, 20, 1, 10, 1, 5, 1, 14, 0, 29, 30]])",False
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 15]])","tensor([[ 2, 1, 15]])",True
+"tensor([[21, 1, 20, 1, 16, 0]])","tensor([[22, 1, 20, 1, 10]])","tensor([[29, 30, 26, 27, 31]])",False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0]])","tensor([[21, 1, 20, 1, 13, 1, 7, 1, 13]])","tensor([[24, 1, 20, 1, 18, 0, 29, 30, 26]])",False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 17, 4]])",False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 10, 8, 10]])","tensor([[ 2, 1, 10, 8, 10]])",True
+"tensor([[21, 1, 20, 1, 10, 0]])","tensor([[21, 1, 20, 1, 10]])","tensor([[24, 1, 20, 1, 13]])",False
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 4]])","tensor([[22, 1, 20, 1, 12, 1, 7, 1]])",False
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 10]])","tensor([[ 2, 1, 10]])",True
+"tensor([[23, 1, 20, 1, 13, 0]])","tensor([[25, 1, 20, 1, 17]])","tensor([[25, 1, 20, 1, 12]])",False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4]])","tensor([[21, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3]])",False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 19]])","tensor([[ 2, 1, 19]])",True
+"tensor([[21, 1, 20, 1, 12, 0]])","tensor([[25, 1, 20, 1, 10, 1, 9, 1, 18]])","tensor([[25, 1, 20, 1, 17, 0, 29, 30, 26]])",False
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 21, 4]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 6, 1, 21, 4]])",False
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 14]])","tensor([[ 2, 1, 14]])",True
+"tensor([[25, 1, 20, 1, 19, 0]])","tensor([[21, 1, 20, 1, 19]])","tensor([[21, 1, 20, 1, 15]])",False
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 25, 4]])","tensor([[24, 1, 20, 1, 11, 0, 24, 1, 20, 1, 24, 1]])",False
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 18, 11]])","tensor([[ 2, 1, 18, 11]])",True
+"tensor([[24, 1, 20, 1, 18, 0]])","tensor([[25, 1, 20, 1, 14]])","tensor([[24, 1, 20, 1, 19]])",False
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 24, 4]])","tensor([[22, 1, 20, 1, 25, 1, 6, 1, 13, 0, 29, 30]])",False
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 12]])","tensor([[ 2, 1, 11, 12]])",True
+"tensor([[21, 1, 20, 1, 12, 0]])","tensor([[23, 1, 20, 1, 21, 1, 7, 1, 16]])","tensor([[24, 1, 20, 1, 12, 0, 29, 30, 26]])",False
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 6, 1, 17, 4]])",False
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 11, 8, 10]])","tensor([[ 2, 1, 11, 8, 10]])",True
+"tensor([[21, 1, 20, 1, 16, 0]])","tensor([[22, 1, 20, 1, 17]])","tensor([[21, 1, 20, 1, 18]])",False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0]])","tensor([[24, 1, 20, 1, 21, 1, 7, 1, 10]])","tensor([[21, 1, 20, 1, 17, 1, 6, 1, 11]])",False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4]])",True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 16]])","tensor([[ 2, 1, 16]])",True
+"tensor([[22, 1, 20, 1, 17, 0]])","tensor([[25, 1, 20, 1, 12]])","tensor([[23, 1, 20, 1, 18]])",False
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0]])","tensor([[22, 1, 20, 1, 10, 1, 5, 1, 17]])","tensor([[29, 30, 26, 27, 31, 3, 21, 4, 0]])",False
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1]])",False
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 10]])","tensor([[ 2, 1, 10]])",True
+"tensor([[23, 1, 20, 1, 19, 0]])","tensor([[25, 1, 20, 1, 14]])","tensor([[21, 1, 20, 1, 12]])",False
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 1, 7, 1, 15, 4]])","tensor([[22, 1, 20, 1, 12, 1, 9, 1, 25, 0, 29, 30]])",False
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 14]])","tensor([[ 2, 1, 14]])",True
+"tensor([[24, 1, 20, 1, 14, 0]])","tensor([[24, 1, 20, 1, 17, 1, 5, 1, 14]])","tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20]])",False
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 14, 4]])",False
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 17, 18, 14]])","tensor([[ 2, 1, 13, 14, 10]])",False
+"tensor([[21, 1, 20, 1, 14, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4]])","tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 12, 0]])",False
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 8, 10]])","tensor([[ 2, 1, 11, 8, 10]])",True
+"tensor([[25, 1, 20, 1, 13, 0]])","tensor([[22, 1, 20, 1, 14]])","tensor([[21, 1, 20, 1, 25]])",False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0]])","tensor([[21, 1, 20, 1, 25, 1, 7, 1, 16]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 7]])",False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 4]])","tensor([[29, 30, 26, 27, 31, 3, 21, 4]])",True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 7, 13]])","tensor([[ 2, 1, 7, 13]])",True
+"tensor([[24, 1, 20, 1, 15, 0]])","tensor([[24, 1, 20, 1, 19, 1, 7, 1, 17]])","tensor([[21, 1, 20, 1, 16, 0, 23, 1, 20]])",False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4]])",True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 12]])","tensor([[ 2, 1, 12]])",True
+"tensor([[22, 1, 20, 1, 17, 0]])","tensor([[22, 1, 20, 1, 13, 1, 9, 1, 22]])","tensor([[21, 1, 20, 1, 17, 0, 22, 1, 20]])",False
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1]])",False
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 10, 8, 14, 12, 18, 15, 17, 11, 14, 12, 18, 15, 17, 11, 14, 12,
+ 18, 15, 15]])","tensor([[ 2, 1, 10, 8, 14, 12, 18, 15, 17, 11, 14, 12, 18, 15, 17, 11, 14, 12,
+ 18, 15, 15]])",True
+"tensor([[21, 1, 20, 1, 19, 0]])","tensor([[22, 1, 20, 1, 21, 1, 6, 1, 21]])","tensor([[22, 1, 20, 1, 14, 0, 23, 1, 20]])",False
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28]])",False
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 11, 8, 10]])","tensor([[ 2, 1, 11, 8, 10]])",True
+"tensor([[21, 1, 20, 1, 10, 0]])","tensor([[24, 1, 20, 1, 21, 1, 5, 1, 19]])","tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26]])",False
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1]])",False
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 10]])","tensor([[ 2, 1, 10]])",True
+"tensor([[25, 1, 20, 1, 11, 0]])","tensor([[23, 1, 20, 1, 25, 1, 6, 1, 25]])","tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20]])",False
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])",True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 12]])","tensor([[ 2, 1, 12]])",True
+"tensor([[25, 1, 20, 1, 13, 0]])","tensor([[23, 1, 20, 1, 25, 1, 6, 1, 12]])","tensor([[23, 1, 20, 1, 19, 0, 23, 1, 20]])",False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 13, 4]])",False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 16]])","tensor([[ 2, 1, 16]])",True
+"tensor([[21, 1, 20, 1, 14, 0]])","tensor([[25, 1, 20, 1, 10, 1, 5, 1, 17]])","tensor([[25, 1, 20, 1, 15, 0, 25, 1, 20]])",False
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 6, 1, 12, 4]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 22, 4]])",False
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 16]])","tensor([[ 2, 1, 16]])",True
+"tensor([[22, 1, 20, 1, 16, 0]])","tensor([[22, 1, 20, 1, 15]])","tensor([[22, 1, 20, 1, 22]])",False
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0]])","tensor([[22, 1, 20, 1, 22, 1, 7, 1, 22]])","tensor([[21, 1, 20, 1, 18, 1, 9, 1, 18]])",False
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28]])",False
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 10, 8, 10]])","tensor([[ 2, 1, 10, 8, 10]])",True
+"tensor([[22, 1, 20, 1, 10, 0]])","tensor([[24, 1, 20, 1, 19, 1, 5, 1, 11]])","tensor([[23, 1, 20, 1, 18, 0, 22, 1, 20]])",False
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4]])",True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 19]])","tensor([[ 2, 1, 19]])",True
+"tensor([[21, 1, 20, 1, 14, 0]])","tensor([[21, 1, 20, 1, 12]])","tensor([[24, 1, 20, 1, 13]])",False
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 4]])","tensor([[25, 1, 20, 1, 10, 0, 29, 30]])",False
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 12]])","tensor([[ 2, 1, 12]])",True
+"tensor([[25, 1, 20, 1, 19, 0]])","tensor([[22, 1, 20, 1, 13]])","tensor([[23, 1, 20, 1, 15]])",False
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4]])","tensor([[25, 1, 20, 1, 14, 1, 7, 1]])",False
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 13]])","tensor([[ 2, 1, 13]])",True
+"tensor([[24, 1, 20, 1, 16, 0]])","tensor([[23, 1, 20, 1, 14, 1, 6, 1, 11]])","tensor([[24, 1, 20, 1, 12, 0, 22, 1, 20]])",False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1, 6, 1, 12, 4]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 22, 4]])",False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 18]])","tensor([[ 2, 1, 18]])",True
+"tensor([[24, 1, 20, 1, 18, 0]])","tensor([[23, 1, 20, 1, 24, 1, 7, 1, 16]])","tensor([[24, 1, 20, 1, 10, 0, 23, 1, 20]])",False
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1]])",False
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 12]])","tensor([[ 2, 1, 12]])",True
+"tensor([[21, 1, 20, 1, 19, 0]])","tensor([[24, 1, 20, 1, 11]])","tensor([[24, 1, 20, 1, 18]])",False
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 24, 4]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 6, 1, 10, 4]])",False
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 19]])","tensor([[ 2, 1, 19]])",True
+"tensor([[23, 1, 20, 1, 14, 0]])","tensor([[21, 1, 20, 1, 14]])","tensor([[22, 1, 20, 1, 12]])",False
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 4]])","tensor([[23, 1, 20, 1, 23, 1, 5, 1]])",False
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 14]])","tensor([[ 2, 1, 14]])",True
+"tensor([[22, 1, 20, 1, 15, 0]])","tensor([[21, 1, 20, 1, 11]])","tensor([[29, 30, 26, 27, 31]])",False
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0]])","tensor([[22, 1, 20, 1, 21, 1, 7, 1, 21]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4, 0]])",False
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4]])",True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 10]])","tensor([[ 2, 1, 10]])",True
+"tensor([[24, 1, 20, 1, 12, 0]])","tensor([[23, 1, 20, 1, 11]])","tensor([[29, 30, 26, 27, 31]])",False
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4]])","tensor([[22, 1, 20, 1, 23, 1, 7, 1]])",False
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 12]])","tensor([[ 2, 1, 12]])",True
+"tensor([[25, 1, 20, 1, 13, 0]])","tensor([[22, 1, 20, 1, 15]])","tensor([[21, 1, 20, 1, 25]])",False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 19, 4]])","tensor([[22, 1, 20, 1, 14, 1, 7, 1, 25, 0, 29, 30]])",False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 14, 15]])","tensor([[ 2, 1, 14, 15]])",True
+"tensor([[25, 1, 20, 1, 19, 0]])","tensor([[24, 1, 20, 1, 15]])","tensor([[21, 1, 20, 1, 10]])",False
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0]])","tensor([[24, 1, 20, 1, 25, 1, 5, 1, 24]])","tensor([[24, 1, 20, 1, 11, 1, 5, 1, 14]])",False
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28]])",False
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 10, 8, 12]])","tensor([[ 2, 1, 10, 8, 13]])",False
+"tensor([[23, 1, 20, 1, 15, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4]])","tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0]])",False
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 12, 15]])","tensor([[ 2, 1, 12, 15]])",True
+"tensor([[25, 1, 20, 1, 12, 0]])","tensor([[23, 1, 20, 1, 18, 1, 9, 1, 25]])","tensor([[25, 1, 20, 1, 18, 0, 25, 1, 20]])",False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 19, 4]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 17, 4]])",False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 11, 18]])","tensor([[ 2, 1, 11, 18]])",True
+"tensor([[23, 1, 20, 1, 10, 0]])","tensor([[23, 1, 20, 1, 16, 1, 7, 1, 18]])","tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20]])",False
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])",True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 7, 12]])","tensor([[ 2, 1, 7, 12]])",True
+"tensor([[25, 1, 20, 1, 17, 0]])","tensor([[21, 1, 20, 1, 12]])","tensor([[22, 1, 20, 1, 14]])",False
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0]])","tensor([[24, 1, 20, 1, 15, 1, 5, 1, 17]])","tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20]])",False
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 16, 4]])",False
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 14]])","tensor([[ 2, 1, 11, 14]])",True
+"tensor([[25, 1, 20, 1, 11, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4]])","tensor([[24, 1, 20, 1, 15, 1, 6, 1, 11, 0, 29, 30]])",False
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11]])","tensor([[ 2, 1, 11]])",True
+"tensor([[24, 1, 20, 1, 16, 0]])","tensor([[22, 1, 20, 1, 24, 1, 5, 1, 24]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 7]])",False
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4]])",True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 13, 16]])","tensor([[ 2, 1, 13, 16]])",True
+"tensor([[25, 1, 20, 1, 18, 0]])","tensor([[22, 1, 20, 1, 25, 1, 9, 1, 15]])","tensor([[21, 1, 20, 1, 19, 0, 25, 1, 20]])",False
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 12, 4]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 23, 4]])",False
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 14, 8, 10]])","tensor([[ 2, 1, 14, 8, 10]])",True
+"tensor([[24, 1, 20, 1, 16, 0]])","tensor([[23, 1, 20, 1, 13]])","tensor([[22, 1, 20, 1, 24]])",False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0]])","tensor([[21, 1, 20, 1, 19, 1, 6, 1, 24]])","tensor([[21, 1, 20, 1, 23, 1, 5, 1, 23]])",False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 4]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1]])",False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 15]])","tensor([[ 2, 1, 11, 15]])",True
+"tensor([[24, 1, 20, 1, 14, 0]])","tensor([[21, 1, 20, 1, 18]])","tensor([[21, 1, 20, 1, 15]])",False
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 21, 4]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 19, 4]])",False
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 16, 14]])","tensor([[ 2, 1, 16, 14]])",True
+"tensor([[25, 1, 20, 1, 16, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4]])","tensor([[22, 1, 20, 1, 11, 0, 24, 1, 20, 1, 25, 1]])",False
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 12]])","tensor([[ 2, 1, 11, 12]])",True
+"tensor([[22, 1, 20, 1, 13, 0]])","tensor([[21, 1, 20, 1, 13]])","tensor([[29, 30, 26, 27, 31]])",False
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 4]])","tensor([[25, 1, 20, 1, 17, 1, 7, 1]])",False
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 13]])","tensor([[ 2, 1, 13]])",True
+"tensor([[22, 1, 20, 1, 19, 0]])","tensor([[22, 1, 20, 1, 19]])","tensor([[23, 1, 20, 1, 24]])",False
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 7, 1, 15, 4]])","tensor([[25, 1, 20, 1, 23, 1, 6, 1, 19, 0, 29, 30]])",False
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 14]])","tensor([[ 2, 1, 14]])",True
+"tensor([[21, 1, 20, 1, 18, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 4]])","tensor([[22, 1, 20, 1, 19, 0, 24, 1]])",False
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 18]])","tensor([[ 2, 1, 18]])",True
+"tensor([[22, 1, 20, 1, 12, 0]])","tensor([[25, 1, 20, 1, 12]])","tensor([[23, 1, 20, 1, 22]])",False
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 4]])","tensor([[24, 1, 20, 1, 10, 0, 29, 30]])",False
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 12]])","tensor([[ 2, 1, 12]])",True
+"tensor([[25, 1, 20, 1, 11, 0]])","tensor([[23, 1, 20, 1, 25, 1, 9, 1, 17]])","tensor([[22, 1, 20, 1, 15, 1, 6, 1, 10]])",False
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 7, 1, 25, 4]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28]])",False
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 10]])","tensor([[ 2, 1, 10]])",True
+"tensor([[25, 1, 20, 1, 13, 0]])","tensor([[23, 1, 20, 1, 10]])","tensor([[24, 1, 20, 1, 11]])",False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])","tensor([[21, 1, 20, 1, 19, 0, 29, 30]])",False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 10]])","tensor([[ 2, 1, 10]])",True
+"tensor([[21, 1, 20, 1, 11, 0]])","tensor([[21, 1, 20, 1, 13]])","tensor([[21, 1, 20, 1, 19]])",False
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 11, 4]])","tensor([[24, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3]])",False
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 13, 8, 10]])","tensor([[ 2, 1, 13, 8, 10]])",True
+"tensor([[23, 1, 20, 1, 13, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4]])","tensor([[29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 12, 4]])",False
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 8, 10]])","tensor([[ 2, 1, 11, 8, 10]])",True
+"tensor([[23, 1, 20, 1, 10, 0]])","tensor([[23, 1, 20, 1, 23, 1, 7, 1, 23]])","tensor([[25, 1, 20, 1, 14, 0, 22, 1, 20]])",False
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])","tensor([[29, 30, 26, 27, 31, 3, 23, 1]])",False
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 10]])","tensor([[ 2, 1, 10]])",True
+"tensor([[21, 1, 20, 1, 17, 0]])","tensor([[24, 1, 20, 1, 12]])","tensor([[22, 1, 20, 1, 21]])",False
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 4]])","tensor([[22, 1, 20, 1, 10, 0, 21, 1]])",False
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 17]])","tensor([[ 2, 1, 17]])",True
+"tensor([[23, 1, 20, 1, 13, 0]])","tensor([[21, 1, 20, 1, 10]])","tensor([[25, 1, 20, 1, 23]])",False
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 1, 7, 1, 14, 4]])","tensor([[29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 21, 4]])",False
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 7, 11]])","tensor([[ 2, 1, 7, 11]])",True
+"tensor([[25, 1, 20, 1, 19, 0]])","tensor([[21, 1, 20, 1, 15]])","tensor([[25, 1, 20, 1, 16]])",False
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 4]])","tensor([[22, 1, 20, 1, 13, 1, 6, 1]])",False
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 19]])","tensor([[ 2, 1, 19]])",True
+"tensor([[24, 1, 20, 1, 13, 0]])","tensor([[22, 1, 20, 1, 14]])","tensor([[24, 1, 20, 1, 12]])",False
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0]])","tensor([[24, 1, 20, 1, 14, 1, 9, 1, 13]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 5]])",False
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 6, 1, 22, 4]])",False
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 16]])","tensor([[ 2, 1, 11, 16]])",True
+"tensor([[23, 1, 20, 1, 15, 0]])","tensor([[24, 1, 20, 1, 15]])","tensor([[29, 30, 26, 27, 31]])",False
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0]])","tensor([[24, 1, 20, 1, 23, 1, 7, 1, 14]])","tensor([[23, 1, 20, 1, 14, 0, 23, 1, 20]])",False
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4]])","tensor([[29, 30, 26, 27, 31, 3, 23, 1]])",False
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 11]])","tensor([[ 2, 1, 11]])",True
+"tensor([[25, 1, 20, 1, 16, 0]])","tensor([[22, 1, 20, 1, 13]])","tensor([[24, 1, 20, 1, 19]])",False
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0]])","tensor([[25, 1, 20, 1, 25, 1, 7, 1, 16]])","tensor([[25, 1, 20, 1, 18, 0, 25, 1, 20]])",False
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 4]])","tensor([[29, 30, 26, 27, 31, 3, 25, 4]])",True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 10]])","tensor([[ 2, 1, 10]])",True
+"tensor([[24, 1, 20, 1, 14, 0]])","tensor([[23, 1, 20, 1, 16]])","tensor([[21, 1, 20, 1, 16]])",False
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1, 6, 1, 23, 4]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28]])",False
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 10]])","tensor([[ 2, 1, 11, 10]])",True
+"tensor([[22, 1, 20, 1, 18, 0]])","tensor([[21, 1, 20, 1, 19]])","tensor([[25, 1, 20, 1, 18]])",False
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0]])","tensor([[25, 1, 20, 1, 15, 1, 9, 1, 12]])","tensor([[23, 1, 20, 1, 11, 0, 25, 1, 20]])",False
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 7, 1, 21, 4]])",False
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 17, 12]])","tensor([[ 2, 1, 17, 12]])",True
+"tensor([[25, 1, 20, 1, 14, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 4]])","tensor([[25, 1, 20, 1, 16, 0, 22, 1]])",False
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 14]])","tensor([[ 2, 1, 14]])",True
+"tensor([[22, 1, 20, 1, 12, 0]])","tensor([[23, 1, 20, 1, 13]])","tensor([[21, 1, 20, 1, 10]])",False
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 22, 4]])","tensor([[21, 1, 20, 1, 17, 0, 22, 1, 20, 1, 23, 1]])",False
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 8, 10]])","tensor([[ 2, 1, 11, 8, 10]])",True
+"tensor([[24, 1, 20, 1, 18, 0]])","tensor([[24, 1, 20, 1, 10]])","tensor([[21, 1, 20, 1, 18]])",False
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0]])","tensor([[23, 1, 20, 1, 17, 1, 7, 1, 11]])","tensor([[21, 1, 20, 1, 19, 1, 9, 1, 24]])",False
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])",True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 16]])","tensor([[ 2, 1, 16]])",True
+"tensor([[25, 1, 20, 1, 19, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4]])","tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3]])",False
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 18, 11]])","tensor([[ 2, 1, 18, 11]])",True
+"tensor([[25, 1, 20, 1, 11, 0]])","tensor([[21, 1, 20, 1, 16]])","tensor([[21, 1, 20, 1, 19]])",False
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 16, 4]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 18, 4]])",False
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 8, 10]])","tensor([[ 2, 1, 11, 8, 10]])",True
+"tensor([[24, 1, 20, 1, 15, 0]])","tensor([[24, 1, 20, 1, 19]])","tensor([[24, 1, 20, 1, 18]])",False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0]])","tensor([[25, 1, 20, 1, 10, 1, 7, 1, 24]])","tensor([[22, 1, 20, 1, 24, 1, 5, 1, 24]])",False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4]])","tensor([[29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28]])",False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 18, 11]])","tensor([[ 2, 1, 18, 11]])",True
+"tensor([[24, 1, 20, 1, 15, 0]])","tensor([[24, 1, 20, 1, 24, 1, 5, 1, 24]])","tensor([[24, 1, 20, 1, 11, 0, 22, 1, 20]])",False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4]])",True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 12, 15]])","tensor([[ 2, 1, 12, 15]])",True
+"tensor([[22, 1, 20, 1, 17, 0]])","tensor([[21, 1, 20, 1, 12]])","tensor([[21, 1, 20, 1, 13]])",False
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 4]])","tensor([[24, 1, 20, 1, 10, 0, 22, 1]])",False
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 12]])","tensor([[ 2, 1, 12]])",True
+"tensor([[22, 1, 20, 1, 13, 0]])","tensor([[25, 1, 20, 1, 11]])","tensor([[21, 1, 20, 1, 22]])",False
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0]])","tensor([[25, 1, 20, 1, 19, 1, 6, 1, 25]])","tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26]])",False
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 4]])","tensor([[29, 30, 26, 27, 31, 3, 25, 4]])",True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 10]])","tensor([[ 2, 1, 11, 10]])",True
+"tensor([[25, 1, 20, 1, 19, 0]])","tensor([[25, 1, 20, 1, 17, 1, 5, 1, 25]])","tensor([[21, 1, 20, 1, 14, 0, 23, 1, 20]])",False
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 17, 4]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 14, 4]])",False
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 17, 10]])","tensor([[ 2, 1, 16, 13]])",False
+"tensor([[25, 1, 20, 1, 13, 0]])","tensor([[23, 1, 20, 1, 12]])","tensor([[29, 30, 26, 27, 31]])",False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0]])","tensor([[24, 1, 20, 1, 11, 1, 6, 1, 15]])","tensor([[24, 1, 20, 1, 13, 0, 25, 1, 20]])",False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28]])",False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 14]])","tensor([[ 2, 1, 14]])",True
+"tensor([[24, 1, 20, 1, 19, 0]])","tensor([[22, 1, 20, 1, 15]])","tensor([[29, 30, 26, 27, 31]])",False
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 4]])","tensor([[24, 1, 20, 1, 24, 1, 7, 1]])",False
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 19]])","tensor([[ 2, 1, 19]])",True
+"tensor([[24, 1, 20, 1, 16, 0]])","tensor([[25, 1, 20, 1, 16]])","tensor([[21, 1, 20, 1, 16]])",False
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 4]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1]])",False
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 16]])","tensor([[ 2, 1, 16]])",True
+"tensor([[25, 1, 20, 1, 16, 0]])","tensor([[25, 1, 20, 1, 17]])","tensor([[25, 1, 20, 1, 14]])",False
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 4]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1]])",False
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 17]])","tensor([[ 2, 1, 17]])",True
+"tensor([[22, 1, 20, 1, 19, 0]])","tensor([[21, 1, 20, 1, 12]])","tensor([[24, 1, 20, 1, 13]])",False
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0]])","tensor([[22, 1, 20, 1, 21, 1, 7, 1, 19]])","tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26]])",False
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 18, 4]])",False
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 7, 12]])","tensor([[ 2, 1, 7, 12]])",True
+"tensor([[25, 1, 20, 1, 12, 0]])","tensor([[23, 1, 20, 1, 13]])","tensor([[24, 1, 20, 1, 15]])",False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])","tensor([[21, 1, 20, 1, 13, 0, 24, 1]])",False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 13]])","tensor([[ 2, 1, 13]])",True
+"tensor([[22, 1, 20, 1, 14, 0]])","tensor([[22, 1, 20, 1, 13, 1, 7, 1, 22]])","tensor([[21, 1, 20, 1, 19, 1, 7, 1, 22]])",False
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4]])","tensor([[29, 30, 26, 27, 31, 3, 22, 1]])",False
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 7, 11]])","tensor([[ 2, 1, 7, 11]])",True
+"tensor([[24, 1, 20, 1, 10, 0]])","tensor([[24, 1, 20, 1, 17]])","tensor([[21, 1, 20, 1, 13]])",False
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1, 6, 1, 13, 4]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1, 6, 1, 12, 4]])",False
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 10]])","tensor([[ 2, 1, 11, 10]])",True
+"tensor([[24, 1, 20, 1, 19, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4]])","tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0]])",False
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 10]])","tensor([[ 2, 1, 10]])",True
+"tensor([[23, 1, 20, 1, 14, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])","tensor([[23, 1, 20, 1, 11, 0, 29, 30]])",False
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 14]])","tensor([[ 2, 1, 14]])",True
+"tensor([[23, 1, 20, 1, 13, 0]])","tensor([[25, 1, 20, 1, 12]])","tensor([[23, 1, 20, 1, 18]])",False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4]])","tensor([[21, 1, 20, 1, 10, 0, 25, 1]])",False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 13]])","tensor([[ 2, 1, 13]])",True
+"tensor([[25, 1, 20, 1, 16, 0]])","tensor([[23, 1, 20, 1, 14]])","tensor([[22, 1, 20, 1, 12]])",False
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 19, 4]])","tensor([[24, 1, 20, 1, 17, 1, 7, 1, 18, 0, 29, 30]])",False
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 10, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16]])","tensor([[ 2, 1, 10, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16]])",True
+"tensor([[21, 1, 20, 1, 14, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 4]])","tensor([[22, 1, 20, 1, 11, 0, 25, 1]])",False
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 14]])","tensor([[ 2, 1, 14]])",True
+"tensor([[23, 1, 20, 1, 18, 0]])","tensor([[23, 1, 20, 1, 10]])","tensor([[23, 1, 20, 1, 25]])",False
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0]])","tensor([[22, 1, 20, 1, 19, 1, 5, 1, 23]])","tensor([[25, 1, 20, 1, 15, 0, 23, 1, 20]])",False
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4]])",True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 10]])","tensor([[ 2, 1, 10]])",True
+"tensor([[21, 1, 20, 1, 18, 0]])","tensor([[21, 1, 20, 1, 19]])","tensor([[23, 1, 20, 1, 18]])",False
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 4]])","tensor([[22, 1, 20, 1, 21, 1, 5, 1]])",False
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 19]])","tensor([[ 2, 1, 19]])",True
+"tensor([[21, 1, 20, 1, 10, 0]])","tensor([[25, 1, 20, 1, 21, 1, 6, 1, 21]])","tensor([[24, 1, 20, 1, 12, 0, 25, 1, 20]])",False
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 6, 1, 21, 4]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 6, 1, 15, 4]])",False
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 10]])","tensor([[ 2, 1, 10]])",True
+"tensor([[21, 1, 20, 1, 17, 0]])","tensor([[25, 1, 20, 1, 16]])","tensor([[22, 1, 20, 1, 14]])",False
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 6, 1, 21, 4]])","tensor([[23, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30]])",False
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 14]])","tensor([[ 2, 1, 11, 14]])",True
+"tensor([[22, 1, 20, 1, 18, 0]])","tensor([[25, 1, 20, 1, 22, 1, 6, 1, 22]])","tensor([[22, 1, 20, 1, 19, 1, 6, 1, 15]])",False
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 4]])","tensor([[29, 30, 26, 27, 31, 3, 25, 4]])",True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])","tensor([[ 2, 1, 11, 16]])","tensor([[ 2, 1, 11, 16]])",True
+"tensor([[21, 1, 20, 1, 13, 0]])","tensor([[25, 1, 20, 1, 19]])","tensor([[23, 1, 20, 1, 21]])",False
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0]])","tensor([[22, 1, 20, 1, 25, 1, 7, 1, 21]])","tensor([[29, 30, 26, 27, 31, 3, 21, 1, 6]])",False
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0]])","tensor([[29, 30, 26, 27, 31, 3, 22, 4]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1]])",False
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])","tensor([[ 2, 1, 16]])","tensor([[ 2, 1, 16]])",True
+"tensor([[25, 1, 20, 1, 14, 0]])","tensor([[25, 1, 20, 1, 14, 1, 5, 1, 25]])","tensor([[23, 1, 20, 1, 10, 0, 21, 1, 20]])",False
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 18, 4]])","tensor([[29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4]])",False
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 12, 8, 10]])","tensor([[ 2, 1, 11, 8, 15]])",False
+"tensor([[24, 1, 20, 1, 17, 0]])","tensor([[23, 1, 20, 1, 12, 1, 6, 1, 18]])","tensor([[24, 1, 20, 1, 12, 0, 22, 1, 20]])",False
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0]])","tensor([[29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 11, 4]])","tensor([[29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28]])",False
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])","tensor([[ 2, 1, 28, 32, 31, 29, 32, 31]])",True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])","tensor([[ 2, 1, 17]])","tensor([[ 2, 1, 17]])",True
diff --git a/results/arithmetics_level1_696K_results.csv b/results/arithmetics_level1_696K_results.csv
new file mode 100644
index 0000000..f25c674
--- /dev/null
+++ b/results/arithmetics_level1_696K_results.csv
@@ -0,0 +1,410 @@
+Prompt,Real_Results,Generated_Results
+"c = 3
+e = 9
+e = 0 * c
+print(e)
+# output",[0.0],[0.0]
+"e = 2
+a = 6
+c = a / 4
+print(c)
+# output",[1.5],[1.5]
+"e = 6
+c = 3 / e
+print(c)
+# output",[0.5],[0.5]
+"e = 8
+a = 3
+print(e / a)
+# output",[2.6666666666666665],[2.6666666666666665]
+"a = 8
+e = a + 1
+print(a / a)
+# output",[1.0],[1.0]
+"e = 6
+a = 7
+d = a - 1
+print(d)
+# output",[6.0],[6.0]
+"d = 9
+print(d * d)
+# output",[81.0],[81.0]
+"c = 4
+print(c + 3)
+# output",[7.0],[7.0]
+"d = 7
+print(d / d)
+# output",[1.0],[1.0]
+"d = 5
+a = 0
+print(a + d)
+# output",[5.0],[5.0]
+"a = 6
+b = 0
+a = 3 - 3
+print(b / 9)
+# output",[0.0],[0.0]
+"a = 0
+a = 0
+print(a)
+# output",[0.0],[0.0]
+"c = 3
+e = 7
+print(c * c)
+# output",[9.0],[9.0]
+"a = 2
+e = 0 / 8
+print(a * a)
+# output",[4.0],[4.0]
+"e = 9
+a = 9
+print(a * e)
+# output",[81.0],[81.0]
+"d = 8
+e = 4
+print(e + d)
+# output",[12.0],[12.0]
+"a = 2
+c = a - 6
+print(a / a)
+# output",[1.0],[1.0]
+"a = 6
+b = 7
+d = a - 0
+print(d)
+# output",[6.0],[6.0]
+"b = 7
+e = 2
+b = 0 * 7
+print(b)
+# output",[0.0],[0.0]
+"c = 9
+e = 4
+print(c - 5)
+# output",[4.0],[4.0]
+"d = 4
+d = 7 * 4
+print(d * d)
+# output",[784.0],[196.0]
+"a = 4
+print(a / a)
+# output",[1.0],[1.0]
+"e = 3
+b = 4
+a = e - 6
+print(a)
+# output",[-3.0],[-3.0]
+"d = 5
+d = 9 - 7
+print(d)
+# output",[2.0],[2.0]
+"b = 7
+b = 3 / b
+print(b)
+# output",[0.42857142857142855],[0.42857142857142855]
+"a = 9
+b = a + a
+print(a / a)
+# output",[1.0],[1.0]
+"a = 0
+d = a * 9
+print(d)
+# output",[0.0],[0.0]
+"e = 1
+c = e + e
+print(c)
+# output",[2.0],[2.0]
+"e = 3
+c = e + 2
+print(e + e)
+# output",[6.0],[6.0]
+"a = 4
+e = 0 * 7
+print(a + 2)
+# output",[6.0],[6.0]
+"b = 6
+b = 5
+b = b - b
+print(b / 3)
+# output",[0.0],[0.0]
+"b = 0
+d = 9 * 1
+print(d)
+# output",[9.0],[9.0]
+"a = 4
+a = 2
+print(a)
+# output",[2.0],[2.0]
+"e = 9
+b = 3
+print(b)
+# output",[3.0],[3.0]
+"d = 6
+c = 4 + 1
+print(d + 2)
+# output",[8.0],[8.0]
+"d = 8
+c = d - 6
+print(c)
+# output",[2.0],[2.0]
+"a = 9
+d = 1
+print(a * d)
+# output",[9.0],[9.0]
+"c = 4
+a = 4
+print(a)
+# output",[4.0],[4.0]
+"b = 5
+a = 1
+b = a - a
+print(b)
+# output",[0.0],[0.0]
+"d = 2
+c = 1
+print(d)
+# output",[2.0],[2.0]
+"e = 3
+b = 5
+print(b * 9)
+# output",[45.0],[45.0]
+"e = 9
+d = 5
+d = e * d
+print(e / d)
+# output",[0.2],[0.9]
+"c = 5
+print(c * c)
+# output",[25.0],[25.0]
+"e = 2
+c = 8 / e
+print(e * 9)
+# output",[18.0],[18.0]
+"c = 0
+c = 6 - 8
+print(c)
+# output",[-2.0],[-2.0]
+"e = 7
+a = 2
+d = 5 * 7
+print(a * 7)
+# output",[14.0],[14.0]
+"e = 1
+print(e * e)
+# output",[1.0],[1.0]
+"d = 6
+b = d * d
+print(b)
+# output",[36.0],[36.0]
+"e = 8
+b = e / 5
+print(e / 2)
+# output",[4.0],[4.0]
+"d = 6
+c = 3
+a = 9 + d
+print(a)
+# output",[15.0],[15.0]
+"d = 4
+a = 8
+print(a * a)
+# output",[64.0],[64.0]
+"e = 6
+print(e + e)
+# output",[12.0],[12.0]
+"b = 3
+a = 3
+print(a)
+# output",[3.0],[3.0]
+"b = 9
+b = 9
+print(b - 5)
+# output",[4.0],[4.0]
+"a = 8
+print(a)
+# output",[8.0],[8.0]
+"b = 2
+e = 2
+print(e)
+# output",[2.0],[2.0]
+"e = 1
+c = e / 7
+print(e - e)
+# output",[0.0],[0.0]
+"e = 3
+c = 0
+print(c)
+# output",[0.0],[0.0]
+"a = 1
+a = 3
+print(a / 1)
+# output",[3.0],[3.0]
+"c = 3
+print(c / c)
+# output",[1.0],[1.0]
+"c = 0
+c = c - c
+print(c)
+# output",[0.0],[0.0]
+"a = 7
+d = 2
+print(a)
+# output",[7.0],[7.0]
+"c = 3
+a = 0
+print(c - 4)
+# output",[-1.0],[-1.0]
+"e = 9
+a = 5
+print(e)
+# output",[9.0],[9.0]
+"d = 3
+b = 4
+d = 4 / 3
+print(b * b)
+# output",[16.0],[16.0]
+"c = 5
+d = 5
+d = c - 4
+print(d)
+# output",[1.0],[1.0]
+"e = 6
+b = 3
+e = e - 6
+print(e)
+# output",[0.0],[0.0]
+"d = 4
+c = 6
+print(d + c)
+# output",[10.0],[10.0]
+"b = 8
+a = 9
+e = 5 / 2
+print(b * a)
+# output",[72.0],[72.0]
+"e = 4
+print(e)
+# output",[4.0],[4.0]
+"b = 2
+c = 3
+print(b / b)
+# output",[1.0],[1.0]
+"d = 8
+d = 0
+c = 7 - 1
+print(c)
+# output",[6.0],[6.0]
+"e = 9
+print(e * e)
+# output",[81.0],[81.0]
+"e = 1
+a = 6
+print(a / 6)
+# output",[1.0],[1.0]
+"d = 5
+d = 9
+e = 0 - d
+print(d * d)
+# output",[81.0],[81.0]
+"d = 5
+d = d * d
+print(d)
+# output",[25.0],[25.0]
+"b = 7
+a = 2
+print(a)
+# output",[2.0],[2.0]
+"b = 3
+e = 1
+e = 9 + e
+print(e)
+# output",[10.0],[10.0]
+"e = 9
+e = 7 * e
+print(e + 7)
+# output",[70.0],[63.0]
+"e = 3
+c = 2
+d = 1 + 5
+print(c * c)
+# output",[4.0],[4.0]
+"d = 9
+b = 5
+print(d)
+# output",[9.0],[9.0]
+"d = 6
+e = 6
+print(e)
+# output",[6.0],[6.0]
+"e = 6
+e = 7
+print(e)
+# output",[7.0],[7.0]
+"b = 9
+a = 2
+b = a - 9
+print(a - 4)
+# output",[-2.0],[-2.0]
+"e = 2
+c = 3
+print(c)
+# output",[3.0],[3.0]
+"b = 4
+b = 3 - b
+print(b)
+# output",[-1.0],[0.0]
+"d = 0
+d = 7
+print(d + 3)
+# output",[10.0],[10.0]
+"d = 9
+print(d - 9)
+# output",[0.0],[0.0]
+"c = 4
+print(c)
+# output",[4.0],[4.0]
+"c = 3
+e = 2
+print(c)
+# output",[3.0],[3.0]
+"e = 6
+c = 4
+print(e / 9)
+# output",[0.6666666666666666],[0.6666666666666666]
+"a = 4
+print(a)
+# output",[4.0],[4.0]
+"c = 8
+c = 0
+b = 9 * c
+print(b)
+# output",[0.0],[0.0]
+"a = 8
+a = 9
+print(a)
+# output",[9.0],[9.0]
+"a = 0
+e = a + a
+print(a + a)
+# output",[0.0],[0.0]
+"a = 7
+e = 6
+print(a + a)
+# output",[14.0],[14.0]
+"b = 8
+e = b + b
+print(e)
+# output",[16.0],[16.0]
+"a = 3
+e = 9
+b = e - a
+print(b)
+# output",[6.0],[6.0]
+"e = 4
+e = 4 * e
+print(e / 8)
+# output",[2.0],[2.0]
+"d = 7
+c = 2 + 8
+print(d * 1)
+# output",[7.0],[7.0]
diff --git a/results/arithmetics_level1_696K_token-level_code_completion.csv b/results/arithmetics_level1_696K_token-level_code_completion.csv
new file mode 100644
index 0000000..54d7074
--- /dev/null
+++ b/results/arithmetics_level1_696K_token-level_code_completion.csv
@@ -0,0 +1,6096 @@
+context,actual_next_token,predicted_next_token,is_correct
+tensor([[23]]),1,1,True
+"tensor([[23, 1]])",20,20,True
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",13,11,False
+"tensor([[23, 1, 20, 1, 13]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0]])",25,23,False
+"tensor([[23, 1, 20, 1, 13, 0, 25]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1]])",20,20,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1]])",19,13,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0]])",25,29,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1]])",20,20,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1]])",10,12,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10]])",1,0,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1]])",5,6,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1]])",23,25,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0]])",29,29,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3]])",25,25,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25]])",4,4,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",10,10,True
+tensor([[25]]),1,4,False
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",12,10,False
+"tensor([[25, 1, 20, 1, 12]])",0,0,True
+"tensor([[25, 1, 20, 1, 12, 0]])",21,25,False
+"tensor([[25, 1, 20, 1, 12, 0, 21]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1]])",16,19,False
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16]])",0,0,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0]])",23,29,False
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1]])",21,14,False
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1]])",9,9,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1]])",14,21,False
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14]])",0,0,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3]])",23,23,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23]])",4,4,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1, 11]])",8,8,True
+"tensor([[25, 1, 20, 1, 12, 0, 21, 1, 20, 1, 16, 0, 23, 1, 20, 1, 21, 1,
+ 9, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1, 11, 8]])",15,15,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",16,18,False
+"tensor([[25, 1, 20, 1, 16]])",0,1,False
+"tensor([[25, 1, 20, 1, 16, 0]])",23,22,False
+"tensor([[25, 1, 20, 1, 16, 0, 23]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1]])",13,16,False
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13]])",1,0,False
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1]])",9,6,False
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1]])",25,14,False
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3]])",23,23,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23]])",4,4,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",10,10,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10]])",8,8,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8]])",15,15,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,6,False
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",18,10,False
+"tensor([[25, 1, 20, 1, 18]])",0,0,True
+"tensor([[25, 1, 20, 1, 18, 0]])",21,24,False
+"tensor([[25, 1, 20, 1, 18, 0, 21]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1]])",13,25,False
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13]])",0,0,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3]])",25,21,False
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1]])",9,9,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1]])",21,17,False
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21]])",4,4,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",12,12,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12]])",8,8,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 18, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",15,15,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",18,18,True
+"tensor([[21, 1, 20, 1, 18]])",0,0,True
+"tensor([[21, 1, 20, 1, 18, 0]])",25,24,False
+"tensor([[21, 1, 20, 1, 18, 0, 25]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1]])",21,19,False
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1]])",6,6,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1]])",11,16,False
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11]])",0,0,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0]])",29,29,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3]])",21,21,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1]])",9,5,False
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1]])",21,19,False
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21]])",4,4,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",11,11,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 11]])",8,8,True
+"tensor([[21, 1, 20, 1, 18, 0, 25, 1, 20, 1, 21, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 11, 8]])",10,10,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,6,False
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",16,16,True
+"tensor([[25, 1, 20, 1, 16]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0]])",21,29,False
+"tensor([[25, 1, 20, 1, 16, 0, 21]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1]])",17,25,False
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0]])",24,25,False
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1]])",21,11,False
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1]])",7,5,False
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1]])",11,25,False
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3]])",24,24,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24]])",4,4,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",16,16,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",19,19,True
+"tensor([[24, 1, 20, 1, 19]])",0,0,True
+"tensor([[24, 1, 20, 1, 19, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 19, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3]])",24,24,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1]])",5,5,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5]])",1,1,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1]])",24,11,False
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24]])",4,4,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",18,18,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 18]])",11,11,True
+tensor([[23]]),1,1,True
+"tensor([[23, 1]])",20,5,False
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",14,14,True
+"tensor([[23, 1, 20, 1, 14]])",0,0,True
+"tensor([[23, 1, 20, 1, 14, 0]])",29,24,False
+"tensor([[23, 1, 20, 1, 14, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3]])",23,23,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23]])",1,1,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1]])",6,7,False
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6]])",1,1,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1]])",13,23,False
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13]])",4,4,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 1, 6, 1, 13, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",17,17,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",17,17,True
+"tensor([[24, 1, 20, 1, 17]])",0,0,True
+"tensor([[24, 1, 20, 1, 17, 0]])",29,25,False
+"tensor([[24, 1, 20, 1, 17, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3]])",24,24,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1]])",9,5,False
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9]])",1,1,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1]])",24,24,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24]])",4,4,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 11]])",8,8,True
+"tensor([[24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3, 24, 1, 9, 1, 24, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 11, 8]])",10,10,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,7,False
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",15,19,False
+"tensor([[24, 1, 20, 1, 15]])",0,1,False
+"tensor([[24, 1, 20, 1, 15, 0]])",21,22,False
+"tensor([[24, 1, 20, 1, 15, 0, 21]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1]])",10,24,False
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10]])",0,1,False
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0]])",29,25,False
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3]])",21,24,False
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1]])",6,6,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1]])",24,21,False
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24]])",4,4,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",15,15,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,5,False
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",16,17,False
+"tensor([[21, 1, 20, 1, 16]])",0,0,True
+"tensor([[21, 1, 20, 1, 16, 0]])",22,25,False
+"tensor([[21, 1, 20, 1, 16, 0, 22]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1]])",10,21,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10]])",0,0,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0]])",21,25,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1]])",13,17,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13]])",1,0,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1]])",7,6,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1]])",13,25,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13]])",0,0,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0]])",29,29,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3]])",22,21,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1]])",9,5,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1]])",19,12,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19]])",4,4,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2,
+ 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2,
+ 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2,
+ 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2,
+ 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2,
+ 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",10,10,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 10]])",8,8,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 10, 0, 21, 1, 20, 1, 13, 1,
+ 7, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 19, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 10, 8]])",10,10,True
+tensor([[21]]),1,4,False
+"tensor([[21, 1]])",20,9,False
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",10,18,False
+"tensor([[21, 1, 20, 1, 10]])",0,0,True
+"tensor([[21, 1, 20, 1, 10, 0]])",21,21,True
+"tensor([[21, 1, 20, 1, 10, 0, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1]])",10,10,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10]])",0,0,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0]])",29,24,False
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3]])",21,22,False
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",4,1,False
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",10,10,True
+tensor([[23]]),1,1,True
+"tensor([[23, 1]])",20,20,True
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",13,16,False
+"tensor([[23, 1, 20, 1, 13]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0]])",25,21,False
+"tensor([[23, 1, 20, 1, 13, 0, 25]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1]])",20,20,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1]])",17,23,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17]])",0,1,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0]])",29,21,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3]])",23,25,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1]])",5,9,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1]])",23,19,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23]])",4,4,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 5, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",19,19,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",12,12,True
+"tensor([[21, 1, 20, 1, 12]])",0,0,True
+"tensor([[21, 1, 20, 1, 12, 0]])",25,24,False
+"tensor([[21, 1, 20, 1, 12, 0, 25]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1]])",10,10,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10]])",1,0,False
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1]])",9,5,False
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1]])",18,21,False
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18]])",0,0,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0]])",29,29,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3]])",21,21,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1]])",5,7,False
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1]])",21,19,False
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21]])",4,4,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 25, 1, 20, 1, 10, 1, 9, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",14,14,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,5,False
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",19,11,False
+"tensor([[25, 1, 20, 1, 19]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0]])",21,29,False
+"tensor([[25, 1, 20, 1, 19, 0, 21]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1]])",19,10,False
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19]])",0,1,False
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0]])",29,23,False
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3]])",21,21,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1]])",5,6,False
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1]])",25,12,False
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25]])",4,4,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",18,18,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 18]])",11,11,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",18,23,False
+"tensor([[24, 1, 20, 1, 18]])",0,0,True
+"tensor([[24, 1, 20, 1, 18, 0]])",25,23,False
+"tensor([[24, 1, 20, 1, 18, 0, 25]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1]])",14,17,False
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14]])",0,0,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3]])",25,22,False
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1]])",6,9,False
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1]])",24,25,False
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24]])",4,4,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[24, 1, 20, 1, 18, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 6, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 11]])",12,12,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,9,False
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",12,17,False
+"tensor([[21, 1, 20, 1, 12]])",0,0,True
+"tensor([[21, 1, 20, 1, 12, 0]])",23,25,False
+"tensor([[21, 1, 20, 1, 12, 0, 23]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1]])",21,19,False
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1]])",7,6,False
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1]])",16,25,False
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16]])",0,0,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0]])",29,29,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3]])",21,21,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1]])",9,7,False
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1]])",21,15,False
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21]])",4,4,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",11,11,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 11]])",8,8,True
+"tensor([[21, 1, 20, 1, 12, 0, 23, 1, 20, 1, 21, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 11, 8]])",10,10,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",16,15,False
+"tensor([[21, 1, 20, 1, 16]])",0,0,True
+"tensor([[21, 1, 20, 1, 16, 0]])",22,22,True
+"tensor([[21, 1, 20, 1, 16, 0, 22]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1]])",17,12,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17]])",0,0,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0]])",24,25,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1]])",21,18,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1]])",7,7,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1]])",10,17,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10]])",0,0,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0]])",29,29,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3]])",24,22,False
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24]])",4,4,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 16, 0, 22, 1, 20, 1, 17, 0, 24, 1, 20, 1, 21, 1,
+ 7, 1, 10, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",16,16,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,20,True
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",17,13,False
+"tensor([[22, 1, 20, 1, 17]])",0,0,True
+"tensor([[22, 1, 20, 1, 17, 0]])",25,22,False
+"tensor([[22, 1, 20, 1, 17, 0, 25]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1]])",12,10,False
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12]])",0,0,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0]])",22,21,False
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1]])",10,19,False
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1]])",5,6,False
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1]])",17,25,False
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17]])",0,0,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0]])",29,29,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3]])",22,25,False
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22]])",4,4,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 25, 1, 20, 1, 12, 0, 22, 1, 20, 1, 10, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",10,10,True
+tensor([[23]]),1,1,True
+"tensor([[23, 1]])",20,20,True
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",19,17,False
+"tensor([[23, 1, 20, 1, 19]])",0,1,False
+"tensor([[23, 1, 20, 1, 19, 0]])",25,23,False
+"tensor([[23, 1, 20, 1, 19, 0, 25]])",1,1,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1]])",20,20,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1]])",14,19,False
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14]])",0,0,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0]])",29,22,False
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3]])",23,25,False
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23]])",1,1,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1]])",7,5,False
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7]])",1,1,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1]])",15,11,False
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15]])",4,4,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 19, 0, 25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",14,14,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",14,15,False
+"tensor([[24, 1, 20, 1, 14]])",0,1,False
+"tensor([[24, 1, 20, 1, 14, 0]])",24,21,False
+"tensor([[24, 1, 20, 1, 14, 0, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1]])",17,16,False
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1]])",5,6,False
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1]])",14,11,False
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14]])",0,0,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3]])",24,24,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24]])",1,4,False
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1]])",5,7,False
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1]])",24,24,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24]])",4,4,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",17,14,False
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 17]])",18,18,True
+"tensor([[24, 1, 20, 1, 14, 0, 24, 1, 20, 1, 17, 1, 5, 1, 14, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 17, 18]])",14,14,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",14,19,False
+"tensor([[21, 1, 20, 1, 14]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0]])",29,21,False
+"tensor([[21, 1, 20, 1, 14, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3]])",21,21,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1]])",9,9,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1]])",21,16,False
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21]])",4,4,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 11]])",8,8,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 1, 9, 1, 21, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 11, 8]])",10,10,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",13,15,False
+"tensor([[25, 1, 20, 1, 13]])",0,1,False
+"tensor([[25, 1, 20, 1, 13, 0]])",22,29,False
+"tensor([[25, 1, 20, 1, 13, 0, 22]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1]])",14,14,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14]])",0,1,False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0]])",21,29,False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1]])",25,11,False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1]])",7,9,False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1]])",16,22,False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3]])",21,25,False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21]])",4,4,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",7,7,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 21, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1, 7]])",13,13,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",15,10,False
+"tensor([[24, 1, 20, 1, 15]])",0,0,True
+"tensor([[24, 1, 20, 1, 15, 0]])",24,29,False
+"tensor([[24, 1, 20, 1, 15, 0, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1]])",19,18,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19]])",1,0,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1]])",7,5,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1]])",17,22,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17]])",0,0,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3]])",24,24,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24]])",4,1,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 1, 7, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",12,14,False
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,20,True
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",17,12,False
+"tensor([[22, 1, 20, 1, 17]])",0,0,True
+"tensor([[22, 1, 20, 1, 17, 0]])",22,22,True
+"tensor([[22, 1, 20, 1, 17, 0, 22]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1]])",13,22,False
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13]])",1,0,False
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1]])",9,6,False
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1]])",22,22,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22]])",0,0,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0]])",29,29,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3]])",22,22,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22]])",4,1,False
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",10,10,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10]])",8,8,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8]])",14,14,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14]])",12,12,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12]])",18,18,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18]])",15,15,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18, 15]])",17,17,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18, 15, 17]])",11,11,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18, 15, 17, 11]])",14,14,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18, 15, 17, 11, 14]])",12,12,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18, 15, 17, 11, 14, 12]])",18,18,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18, 15, 17, 11, 14, 12, 18]])",15,15,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18, 15, 17, 11, 14, 12, 18, 15]])",17,17,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18, 15, 17, 11, 14, 12, 18, 15, 17]])",11,11,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18, 15, 17, 11, 14, 12, 18, 15, 17, 11]])",14,14,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18, 15, 17, 11, 14, 12, 18, 15, 17, 11, 14]])",12,12,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18, 15, 17, 11, 14, 12, 18, 15, 17, 11, 14, 12]])",18,18,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18, 15, 17, 11, 14, 12, 18, 15, 17, 11, 14, 12, 18]])",15,15,True
+"tensor([[22, 1, 20, 1, 17, 0, 22, 1, 20, 1, 13, 1, 9, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 14, 12, 18, 15, 17, 11, 14, 12, 18, 15, 17, 11, 14, 12, 18, 15]])",15,15,True
+tensor([[21]]),1,0,False
+"tensor([[21, 1]])",20,7,False
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",19,18,False
+"tensor([[21, 1, 20, 1, 19]])",0,0,True
+"tensor([[21, 1, 20, 1, 19, 0]])",22,24,False
+"tensor([[21, 1, 20, 1, 19, 0, 22]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1]])",21,15,False
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1]])",6,6,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1]])",21,21,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21]])",0,0,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0]])",29,29,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3]])",21,21,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1]])",9,7,False
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1]])",21,13,False
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21]])",4,4,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",11,11,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 11]])",8,8,True
+"tensor([[21, 1, 20, 1, 19, 0, 22, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 9, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 11, 8]])",10,10,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",10,25,False
+"tensor([[21, 1, 20, 1, 10]])",0,1,False
+"tensor([[21, 1, 20, 1, 10, 0]])",24,25,False
+"tensor([[21, 1, 20, 1, 10, 0, 24]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1]])",21,14,False
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1]])",5,7,False
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1]])",19,13,False
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19]])",0,0,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0]])",29,29,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3]])",24,24,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24]])",4,4,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 24, 1, 20, 1, 21, 1, 5, 1, 19, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",10,10,True
+tensor([[25]]),1,4,False
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",11,24,False
+"tensor([[25, 1, 20, 1, 11]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0]])",23,21,False
+"tensor([[25, 1, 20, 1, 11, 0, 23]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1]])",25,11,False
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1]])",6,7,False
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1]])",25,17,False
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3]])",23,25,False
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23]])",4,4,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 6, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",12,12,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",13,10,False
+"tensor([[25, 1, 20, 1, 13]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0]])",23,29,False
+"tensor([[25, 1, 20, 1, 13, 0, 23]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1]])",25,14,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1]])",6,6,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1]])",12,19,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3]])",25,23,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1]])",6,6,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1]])",25,10,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25]])",4,4,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 25, 1, 6, 1, 12, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",16,16,True
+tensor([[21]]),1,0,False
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",14,18,False
+"tensor([[21, 1, 20, 1, 14]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0]])",25,23,False
+"tensor([[21, 1, 20, 1, 14, 0, 25]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1]])",10,23,False
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10]])",1,0,False
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1]])",5,5,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1]])",17,14,False
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0]])",29,29,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3]])",21,25,False
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1]])",6,5,False
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1]])",12,18,False
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12]])",4,4,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 25, 1, 20, 1, 10, 1, 5, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",16,16,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,20,True
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",16,17,False
+"tensor([[22, 1, 20, 1, 16]])",0,0,True
+"tensor([[22, 1, 20, 1, 16, 0]])",22,23,False
+"tensor([[22, 1, 20, 1, 16, 0, 22]])",1,1,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1]])",15,14,False
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15]])",0,1,False
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0]])",22,29,False
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22]])",1,1,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1]])",22,14,False
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22]])",1,1,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1]])",7,9,False
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7]])",1,1,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1]])",22,16,False
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22]])",0,0,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0]])",29,29,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3]])",22,22,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22]])",1,4,False
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1]])",9,5,False
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9]])",1,1,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1]])",13,24,False
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13]])",4,4,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2,
+ 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2,
+ 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2,
+ 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2,
+ 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2,
+ 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",10,10,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 10]])",8,8,True
+"tensor([[22, 1, 20, 1, 16, 0, 22, 1, 20, 1, 15, 0, 22, 1, 20, 1, 22, 1,
+ 7, 1, 22, 0, 29, 30, 26, 27, 31, 3, 22, 1, 9, 1, 13, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 10, 8]])",10,10,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,9,False
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",10,19,False
+"tensor([[22, 1, 20, 1, 10]])",0,0,True
+"tensor([[22, 1, 20, 1, 10, 0]])",24,25,False
+"tensor([[22, 1, 20, 1, 10, 0, 24]])",1,1,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1]])",19,15,False
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19]])",1,0,False
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1]])",5,9,False
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5]])",1,1,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1]])",11,17,False
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11]])",0,0,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0]])",29,29,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3]])",24,22,False
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24]])",4,4,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 10, 0, 24, 1, 20, 1, 19, 1, 5, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",19,19,True
+tensor([[21]]),1,4,False
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",14,10,False
+"tensor([[21, 1, 20, 1, 14]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0]])",21,21,True
+"tensor([[21, 1, 20, 1, 14, 0, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1]])",12,14,False
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0]])",29,24,False
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3]])",21,21,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",4,1,False
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",12,12,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",19,15,False
+"tensor([[25, 1, 20, 1, 19]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0]])",22,22,True
+"tensor([[25, 1, 20, 1, 19, 0, 22]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1]])",13,17,False
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3]])",22,25,False
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22]])",4,1,False
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",13,13,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",16,19,False
+"tensor([[24, 1, 20, 1, 16]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0]])",23,29,False
+"tensor([[24, 1, 20, 1, 16, 0, 23]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1]])",14,19,False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14]])",1,0,False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1]])",6,5,False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1]])",11,24,False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3]])",24,22,False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1]])",6,7,False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1]])",12,24,False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12]])",4,4,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 1, 6, 1, 11, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 6, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",18,18,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",18,10,False
+"tensor([[24, 1, 20, 1, 18]])",0,1,False
+"tensor([[24, 1, 20, 1, 18, 0]])",23,25,False
+"tensor([[24, 1, 20, 1, 18, 0, 23]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1]])",24,17,False
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1]])",7,9,False
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1]])",16,24,False
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16]])",0,0,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3]])",23,24,False
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23]])",4,4,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 23, 1, 20, 1, 24, 1, 7, 1, 16, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",12,12,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,9,False
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",19,18,False
+"tensor([[21, 1, 20, 1, 19]])",0,0,True
+"tensor([[21, 1, 20, 1, 19, 0]])",24,29,False
+"tensor([[21, 1, 20, 1, 19, 0, 24]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1]])",11,13,False
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11]])",0,1,False
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0]])",29,23,False
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3]])",21,24,False
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1]])",5,5,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1]])",24,13,False
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24]])",4,4,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 19, 0, 24, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",19,19,True
+tensor([[23]]),1,4,False
+"tensor([[23, 1]])",20,20,True
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",14,19,False
+"tensor([[23, 1, 20, 1, 14]])",0,0,True
+"tensor([[23, 1, 20, 1, 14, 0]])",21,22,False
+"tensor([[23, 1, 20, 1, 14, 0, 21]])",1,1,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1]])",20,20,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1]])",14,12,False
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14]])",0,0,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0]])",29,21,False
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3]])",21,23,False
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",4,1,False
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 14, 0, 21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",14,14,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,20,True
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",15,10,False
+"tensor([[22, 1, 20, 1, 15]])",0,0,True
+"tensor([[22, 1, 20, 1, 15, 0]])",21,21,True
+"tensor([[22, 1, 20, 1, 15, 0, 21]])",1,1,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1]])",11,14,False
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11]])",0,1,False
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0]])",22,25,False
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22]])",1,1,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1]])",21,10,False
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21]])",1,1,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1]])",7,7,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7]])",1,1,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1]])",21,12,False
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21]])",0,0,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0]])",29,29,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3]])",22,22,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22]])",4,1,False
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 15, 0, 21, 1, 20, 1, 11, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",10,10,True
+tensor([[24]]),1,4,False
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",12,10,False
+"tensor([[24, 1, 20, 1, 12]])",0,1,False
+"tensor([[24, 1, 20, 1, 12, 0]])",23,25,False
+"tensor([[24, 1, 20, 1, 12, 0, 23]])",1,1,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1]])",11,18,False
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11]])",0,0,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0]])",29,24,False
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3]])",24,23,False
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24]])",4,1,False
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 12, 0, 23, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",12,12,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,7,False
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",13,15,False
+"tensor([[25, 1, 20, 1, 13]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0]])",22,23,False
+"tensor([[25, 1, 20, 1, 13, 0, 22]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1]])",15,18,False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15]])",0,1,False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0]])",29,21,False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3]])",22,22,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22]])",1,4,False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1]])",5,6,False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1]])",19,13,False
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19]])",4,4,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",14,14,True
+"tensor([[25, 1, 20, 1, 13, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 14]])",15,15,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,6,False
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",19,14,False
+"tensor([[25, 1, 20, 1, 19]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0]])",24,24,True
+"tensor([[25, 1, 20, 1, 19, 0, 24]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1]])",15,17,False
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15]])",0,1,False
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0]])",24,29,False
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1]])",25,14,False
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1]])",5,5,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1]])",24,25,False
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3]])",25,23,False
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1]])",9,7,False
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1]])",24,24,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24]])",4,4,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2,
+ 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2,
+ 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2,
+ 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",10,10,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 10]])",8,8,True
+"tensor([[25, 1, 20, 1, 19, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 25, 1,
+ 5, 1, 24, 0, 29, 30, 26, 27, 31, 3, 25, 1, 9, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 10, 8]])",12,11,False
+tensor([[23]]),1,1,True
+"tensor([[23, 1]])",20,20,True
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",15,10,False
+"tensor([[23, 1, 20, 1, 15]])",0,0,True
+"tensor([[23, 1, 20, 1, 15, 0]])",29,29,True
+"tensor([[23, 1, 20, 1, 15, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3]])",23,23,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23]])",1,1,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1]])",5,7,False
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5]])",1,1,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1]])",23,16,False
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23]])",4,4,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",12,12,True
+"tensor([[23, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 12]])",15,15,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",12,13,False
+"tensor([[25, 1, 20, 1, 12]])",0,0,True
+"tensor([[25, 1, 20, 1, 12, 0]])",23,23,True
+"tensor([[25, 1, 20, 1, 12, 0, 23]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1]])",18,10,False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18]])",1,0,False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1]])",9,5,False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1]])",25,14,False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25]])",0,0,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3]])",25,25,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1]])",5,6,False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1]])",19,15,False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19]])",4,4,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",11,11,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 18, 1, 9, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 5, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 11]])",18,18,True
+tensor([[23]]),1,4,False
+"tensor([[23, 1]])",20,20,True
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",10,16,False
+"tensor([[23, 1, 20, 1, 10]])",0,0,True
+"tensor([[23, 1, 20, 1, 10, 0]])",23,21,False
+"tensor([[23, 1, 20, 1, 10, 0, 23]])",1,1,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1]])",20,20,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1]])",16,12,False
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16]])",1,0,False
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1]])",7,7,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7]])",1,1,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1]])",18,22,False
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18]])",0,0,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0]])",29,29,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3]])",23,23,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23]])",4,4,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",7,7,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 16, 1, 7, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 7]])",12,12,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",17,12,False
+"tensor([[25, 1, 20, 1, 17]])",0,0,True
+"tensor([[25, 1, 20, 1, 17, 0]])",21,21,True
+"tensor([[25, 1, 20, 1, 17, 0, 21]])",1,1,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1]])",12,10,False
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12]])",0,1,False
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0]])",24,22,False
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24]])",1,1,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1]])",15,19,False
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15]])",1,1,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1]])",5,9,False
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5]])",1,1,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1]])",17,25,False
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17]])",0,0,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3]])",21,25,False
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21]])",1,1,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1]])",5,7,False
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5]])",1,1,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1]])",17,25,False
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17]])",4,4,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0, 2,
+ 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0, 2,
+ 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0, 2,
+ 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0, 2,
+ 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0, 2,
+ 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[25, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 24, 1, 20, 1, 15, 1,
+ 5, 1, 17, 0, 29, 30, 26, 27, 31, 3, 21, 1, 5, 1, 17, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 11]])",14,14,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",11,18,False
+"tensor([[25, 1, 20, 1, 11]])",0,1,False
+"tensor([[25, 1, 20, 1, 11, 0]])",29,25,False
+"tensor([[25, 1, 20, 1, 11, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3]])",25,22,False
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1]])",5,9,False
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1]])",25,25,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25]])",4,4,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,5,False
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",16,10,False
+"tensor([[24, 1, 20, 1, 16]])",0,1,False
+"tensor([[24, 1, 20, 1, 16, 0]])",22,21,False
+"tensor([[24, 1, 20, 1, 16, 0, 22]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1]])",24,16,False
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1]])",5,6,False
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1]])",24,15,False
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3]])",22,22,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22]])",4,4,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",13,13,True
+"tensor([[24, 1, 20, 1, 16, 0, 22, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 13]])",16,16,True
+tensor([[25]]),1,4,False
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",18,10,False
+"tensor([[25, 1, 20, 1, 18]])",0,1,False
+"tensor([[25, 1, 20, 1, 18, 0]])",22,24,False
+"tensor([[25, 1, 20, 1, 18, 0, 22]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1]])",25,13,False
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1]])",9,7,False
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1]])",15,19,False
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15]])",0,0,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3]])",25,22,False
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1]])",9,6,False
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1]])",12,25,False
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12]])",4,4,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",14,14,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 14]])",8,8,True
+"tensor([[25, 1, 20, 1, 18, 0, 22, 1, 20, 1, 25, 1, 9, 1, 15, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 12, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 14, 8]])",10,10,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",16,18,False
+"tensor([[24, 1, 20, 1, 16]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0]])",23,21,False
+"tensor([[24, 1, 20, 1, 16, 0, 23]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1]])",13,24,False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0]])",21,21,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1]])",19,22,False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19]])",1,0,False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1]])",6,5,False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1]])",24,17,False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3]])",21,24,False
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21]])",4,4,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[24, 1, 20, 1, 16, 0, 23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 19, 1,
+ 6, 1, 24, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1, 11]])",15,15,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",14,17,False
+"tensor([[24, 1, 20, 1, 14]])",0,0,True
+"tensor([[24, 1, 20, 1, 14, 0]])",21,29,False
+"tensor([[24, 1, 20, 1, 14, 0, 21]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1]])",18,10,False
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18]])",0,0,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0]])",29,24,False
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3]])",21,24,False
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",1,4,False
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1]])",5,5,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1]])",21,18,False
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21]])",4,4,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",16,16,True
+"tensor([[24, 1, 20, 1, 14, 0, 21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 5, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 16]])",14,14,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",16,25,False
+"tensor([[25, 1, 20, 1, 16]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0]])",29,23,False
+"tensor([[25, 1, 20, 1, 16, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3]])",25,22,False
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25]])",1,4,False
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1]])",6,6,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1]])",25,25,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25]])",4,4,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 1, 6, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 11]])",12,12,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,20,True
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",13,10,False
+"tensor([[22, 1, 20, 1, 13]])",0,0,True
+"tensor([[22, 1, 20, 1, 13, 0]])",21,24,False
+"tensor([[22, 1, 20, 1, 13, 0, 21]])",1,1,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1]])",13,10,False
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13]])",0,0,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0]])",29,21,False
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3]])",21,21,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",4,1,False
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 13, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",13,13,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,20,True
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",19,21,False
+"tensor([[22, 1, 20, 1, 19]])",0,0,True
+"tensor([[22, 1, 20, 1, 19, 0]])",22,24,False
+"tensor([[22, 1, 20, 1, 19, 0, 22]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1]])",19,16,False
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19]])",0,0,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0]])",29,22,False
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3]])",22,21,False
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1]])",7,5,False
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1]])",15,14,False
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15]])",4,4,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0, 2, 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 22, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 7, 1, 15, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",14,14,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",18,18,True
+"tensor([[21, 1, 20, 1, 18]])",0,0,True
+"tensor([[21, 1, 20, 1, 18, 0]])",29,21,False
+"tensor([[21, 1, 20, 1, 18, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3]])",21,21,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21]])",4,1,False
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0, 2, 1]])",18,18,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,6,False
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",12,21,False
+"tensor([[22, 1, 20, 1, 12]])",0,0,True
+"tensor([[22, 1, 20, 1, 12, 0]])",25,25,True
+"tensor([[22, 1, 20, 1, 12, 0, 25]])",1,1,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1]])",12,11,False
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12]])",0,1,False
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0]])",29,22,False
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3]])",25,25,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25]])",4,1,False
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 12, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",12,12,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,7,False
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",11,16,False
+"tensor([[25, 1, 20, 1, 11]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0]])",23,29,False
+"tensor([[25, 1, 20, 1, 11, 0, 23]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1]])",25,25,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1]])",9,5,False
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1]])",17,25,False
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3]])",25,25,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1]])",7,9,False
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1]])",25,25,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25]])",4,4,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 23, 1, 20, 1, 25, 1, 9, 1, 17, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 7, 1, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",10,10,True
+tensor([[25]]),1,0,False
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",13,23,False
+"tensor([[25, 1, 20, 1, 13]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0]])",23,25,False
+"tensor([[25, 1, 20, 1, 13, 0, 23]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1]])",10,16,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10]])",0,1,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0]])",29,24,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3]])",23,22,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23]])",4,1,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",10,10,True
+tensor([[21]]),1,4,False
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",11,18,False
+"tensor([[21, 1, 20, 1, 11]])",0,0,True
+"tensor([[21, 1, 20, 1, 11, 0]])",21,24,False
+"tensor([[21, 1, 20, 1, 11, 0, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1]])",13,10,False
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13]])",0,0,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0]])",29,23,False
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3]])",21,22,False
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1]])",9,6,False
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9]])",1,1,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1]])",11,15,False
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11]])",4,4,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",13,13,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 13]])",8,8,True
+"tensor([[21, 1, 20, 1, 11, 0, 21, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 13, 8]])",10,10,True
+tensor([[23]]),1,4,False
+"tensor([[23, 1]])",20,20,True
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",13,11,False
+"tensor([[23, 1, 20, 1, 13]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0]])",29,22,False
+"tensor([[23, 1, 20, 1, 13, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3]])",23,23,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1]])",9,6,False
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1]])",23,15,False
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23]])",4,4,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 11]])",8,8,True
+"tensor([[23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3, 23, 1, 9, 1, 23, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 11, 8]])",10,10,True
+tensor([[23]]),1,4,False
+"tensor([[23, 1]])",20,20,True
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",10,11,False
+"tensor([[23, 1, 20, 1, 10]])",0,0,True
+"tensor([[23, 1, 20, 1, 10, 0]])",23,21,False
+"tensor([[23, 1, 20, 1, 10, 0, 23]])",1,1,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1]])",20,20,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1]])",23,19,False
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23]])",1,1,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1]])",7,5,False
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7]])",1,1,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1]])",23,23,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23]])",0,0,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0]])",29,29,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3]])",23,23,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23]])",4,1,False
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 10, 0, 23, 1, 20, 1, 23, 1, 7, 1, 23, 0, 29, 30,
+ 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",10,10,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",17,17,True
+"tensor([[21, 1, 20, 1, 17]])",0,0,True
+"tensor([[21, 1, 20, 1, 17, 0]])",24,25,False
+"tensor([[21, 1, 20, 1, 17, 0, 24]])",1,1,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1]])",12,24,False
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12]])",0,0,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0]])",29,25,False
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3]])",21,22,False
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",4,1,False
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 17, 0, 24, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",17,17,True
+tensor([[23]]),1,1,True
+"tensor([[23, 1]])",20,20,True
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",13,15,False
+"tensor([[23, 1, 20, 1, 13]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0]])",21,23,False
+"tensor([[23, 1, 20, 1, 13, 0, 21]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1]])",20,20,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1]])",10,23,False
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10]])",0,1,False
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0]])",29,29,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3]])",23,21,False
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1]])",7,9,False
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1]])",14,10,False
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14]])",4,4,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",7,7,True
+"tensor([[23, 1, 20, 1, 13, 0, 21, 1, 20, 1, 10, 0, 29, 30, 26, 27, 31, 3,
+ 23, 1, 7, 1, 14, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 7]])",11,11,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",19,16,False
+"tensor([[25, 1, 20, 1, 19]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0]])",21,21,True
+"tensor([[25, 1, 20, 1, 19, 0, 21]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1]])",15,17,False
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3]])",25,25,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25]])",4,1,False
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 21, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",19,19,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,9,False
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",13,12,False
+"tensor([[24, 1, 20, 1, 13]])",0,0,True
+"tensor([[24, 1, 20, 1, 13, 0]])",22,21,False
+"tensor([[24, 1, 20, 1, 13, 0, 22]])",1,1,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1]])",14,13,False
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14]])",0,1,False
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0]])",24,21,False
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1]])",14,16,False
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14]])",1,1,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1]])",9,9,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9]])",1,1,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1]])",13,24,False
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13]])",0,0,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3]])",22,24,False
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22]])",1,1,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1]])",5,5,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5]])",1,1,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1]])",22,24,False
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22]])",4,4,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0, 2,
+ 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0, 2,
+ 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0, 2,
+ 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0, 2,
+ 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0, 2,
+ 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[24, 1, 20, 1, 13, 0, 22, 1, 20, 1, 14, 0, 24, 1, 20, 1, 14, 1,
+ 9, 1, 13, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 22, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 11]])",16,16,True
+tensor([[23]]),1,1,True
+"tensor([[23, 1]])",20,20,True
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",15,16,False
+"tensor([[23, 1, 20, 1, 15]])",0,0,True
+"tensor([[23, 1, 20, 1, 15, 0]])",24,21,False
+"tensor([[23, 1, 20, 1, 15, 0, 24]])",1,1,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1]])",20,20,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1]])",15,14,False
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15]])",0,1,False
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0]])",24,22,False
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24]])",1,1,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1]])",20,20,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1]])",23,11,False
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23]])",1,1,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1]])",7,6,False
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7]])",1,1,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1]])",14,24,False
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14]])",0,0,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0]])",29,29,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3]])",24,24,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24]])",4,1,False
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 15, 0, 24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 23, 1,
+ 7, 1, 14, 0, 29, 30, 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",11,11,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",16,13,False
+"tensor([[25, 1, 20, 1, 16]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0]])",22,29,False
+"tensor([[25, 1, 20, 1, 16, 0, 22]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1]])",13,13,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0]])",25,23,False
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1]])",25,25,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1]])",7,6,False
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1]])",16,18,False
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3]])",25,22,False
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25]])",4,1,False
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 25, 1,
+ 7, 1, 16, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",10,10,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",14,15,False
+"tensor([[24, 1, 20, 1, 14]])",0,1,False
+"tensor([[24, 1, 20, 1, 14, 0]])",23,24,False
+"tensor([[24, 1, 20, 1, 14, 0, 23]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1]])",16,16,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16]])",0,0,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0]])",29,24,False
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3]])",24,21,False
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24]])",1,4,False
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1]])",6,5,False
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1]])",23,23,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23]])",4,4,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[24, 1, 20, 1, 14, 0, 23, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 11]])",10,10,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,20,True
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",18,13,False
+"tensor([[22, 1, 20, 1, 18]])",0,0,True
+"tensor([[22, 1, 20, 1, 18, 0]])",21,22,False
+"tensor([[22, 1, 20, 1, 18, 0, 21]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1]])",19,17,False
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19]])",0,0,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0]])",25,24,False
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1]])",15,14,False
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15]])",1,0,False
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1]])",9,7,False
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1]])",12,22,False
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12]])",0,0,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0]])",29,29,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3]])",22,25,False
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1]])",5,6,False
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1]])",21,21,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21]])",4,4,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0, 2,
+ 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0, 2,
+ 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0, 2,
+ 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0, 2,
+ 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0, 2,
+ 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",17,17,True
+"tensor([[22, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 25, 1, 20, 1, 15, 1,
+ 9, 1, 12, 0, 29, 30, 26, 27, 31, 3, 22, 1, 5, 1, 21, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 17]])",12,12,True
+tensor([[25]]),1,0,False
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",14,17,False
+"tensor([[25, 1, 20, 1, 14]])",0,0,True
+"tensor([[25, 1, 20, 1, 14, 0]])",29,23,False
+"tensor([[25, 1, 20, 1, 14, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3]])",25,21,False
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25]])",4,4,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28,
+ 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28,
+ 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28,
+ 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0, 2, 1]])",14,14,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,9,False
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",12,12,True
+"tensor([[22, 1, 20, 1, 12]])",0,0,True
+"tensor([[22, 1, 20, 1, 12, 0]])",23,24,False
+"tensor([[22, 1, 20, 1, 12, 0, 23]])",1,1,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1]])",13,24,False
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13]])",0,0,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0]])",29,29,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3]])",22,23,False
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22]])",1,1,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1]])",9,9,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9]])",1,1,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1]])",22,15,False
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22]])",4,4,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2, 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 11]])",8,8,True
+"tensor([[22, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 22, 1, 9, 1, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 11, 8]])",10,10,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",18,10,False
+"tensor([[24, 1, 20, 1, 18]])",0,0,True
+"tensor([[24, 1, 20, 1, 18, 0]])",24,22,False
+"tensor([[24, 1, 20, 1, 18, 0, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1]])",10,24,False
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10]])",0,1,False
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0]])",23,22,False
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1]])",17,11,False
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17]])",1,0,False
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1]])",7,6,False
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1]])",11,24,False
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11]])",0,0,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3]])",23,23,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23]])",4,4,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 18, 0, 24, 1, 20, 1, 10, 0, 23, 1, 20, 1, 17, 1,
+ 7, 1, 11, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",16,16,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",19,19,True
+"tensor([[25, 1, 20, 1, 19]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0]])",29,23,False
+"tensor([[25, 1, 20, 1, 19, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3]])",25,25,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25]])",1,4,False
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1]])",5,6,False
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1]])",25,22,False
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25]])",4,4,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",18,18,True
+"tensor([[25, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 25, 1, 5, 1, 25, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 18]])",11,11,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",11,11,True
+"tensor([[25, 1, 20, 1, 11]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0]])",21,22,False
+"tensor([[25, 1, 20, 1, 11, 0, 21]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1]])",16,19,False
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0]])",29,21,False
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3]])",21,25,False
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1]])",9,6,False
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1]])",16,13,False
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16]])",4,4,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 11]])",8,8,True
+"tensor([[25, 1, 20, 1, 11, 0, 21, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 9, 1, 16, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 11, 8]])",10,10,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,6,False
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",15,24,False
+"tensor([[24, 1, 20, 1, 15]])",0,1,False
+"tensor([[24, 1, 20, 1, 15, 0]])",24,29,False
+"tensor([[24, 1, 20, 1, 15, 0, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1]])",19,14,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19]])",0,1,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0]])",25,25,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1]])",10,15,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10]])",1,0,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1]])",7,6,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1]])",24,17,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24]])",0,0,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3]])",24,23,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1]])",5,9,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1]])",24,19,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24]])",4,4,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2,
+ 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2,
+ 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2,
+ 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",18,18,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 19, 0, 25, 1, 20, 1, 10, 1,
+ 7, 1, 24, 0, 29, 30, 26, 27, 31, 3, 24, 1, 5, 1, 24, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 18]])",11,11,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,5,False
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",15,16,False
+"tensor([[24, 1, 20, 1, 15]])",0,1,False
+"tensor([[24, 1, 20, 1, 15, 0]])",24,21,False
+"tensor([[24, 1, 20, 1, 15, 0, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1]])",24,24,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1]])",5,9,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1]])",24,11,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24]])",0,0,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3]])",24,24,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24]])",4,1,False
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",12,12,True
+"tensor([[24, 1, 20, 1, 15, 0, 24, 1, 20, 1, 24, 1, 5, 1, 24, 0, 29, 30,
+ 26, 27, 31, 3, 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 12]])",15,15,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,20,True
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",17,17,True
+"tensor([[22, 1, 20, 1, 17]])",0,0,True
+"tensor([[22, 1, 20, 1, 17, 0]])",21,23,False
+"tensor([[22, 1, 20, 1, 17, 0, 21]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1]])",12,17,False
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12]])",0,1,False
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0]])",29,22,False
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3]])",21,21,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",4,4,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 17, 0, 21, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",12,12,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,20,True
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",13,17,False
+"tensor([[22, 1, 20, 1, 13]])",0,0,True
+"tensor([[22, 1, 20, 1, 13, 0]])",25,22,False
+"tensor([[22, 1, 20, 1, 13, 0, 25]])",1,1,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1]])",11,24,False
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11]])",0,1,False
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0]])",25,25,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25]])",1,1,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1]])",19,12,False
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19]])",1,1,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1]])",6,7,False
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6]])",1,1,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1]])",25,25,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25]])",0,0,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0]])",29,29,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3]])",25,25,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25]])",4,1,False
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[22, 1, 20, 1, 13, 0, 25, 1, 20, 1, 11, 0, 25, 1, 20, 1, 19, 1,
+ 6, 1, 25, 0, 29, 30, 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1, 11]])",10,10,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",19,21,False
+"tensor([[25, 1, 20, 1, 19]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0]])",25,23,False
+"tensor([[25, 1, 20, 1, 19, 0, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1]])",17,13,False
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17]])",1,0,False
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1]])",5,5,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1]])",25,18,False
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3]])",25,25,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1]])",6,7,False
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1]])",17,25,False
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17]])",4,4,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",17,17,True
+"tensor([[25, 1, 20, 1, 19, 0, 25, 1, 20, 1, 17, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 6, 1, 17, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 17]])",10,10,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",13,11,False
+"tensor([[25, 1, 20, 1, 13]])",0,1,False
+"tensor([[25, 1, 20, 1, 13, 0]])",23,23,True
+"tensor([[25, 1, 20, 1, 13, 0, 23]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1]])",12,11,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0]])",24,23,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1]])",11,16,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1]])",6,9,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1]])",15,25,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3]])",23,24,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1]])",5,5,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1]])",23,14,False
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23]])",4,4,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0, 2,
+ 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0, 2,
+ 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0, 2,
+ 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0, 2,
+ 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0, 2,
+ 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 13, 0, 23, 1, 20, 1, 12, 0, 24, 1, 20, 1, 11, 1,
+ 6, 1, 15, 0, 29, 30, 26, 27, 31, 3, 23, 1, 5, 1, 23, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",14,14,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",19,17,False
+"tensor([[24, 1, 20, 1, 19]])",0,0,True
+"tensor([[24, 1, 20, 1, 19, 0]])",22,23,False
+"tensor([[24, 1, 20, 1, 19, 0, 22]])",1,1,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1]])",15,23,False
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15]])",0,0,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0]])",29,24,False
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3]])",24,24,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24]])",4,1,False
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 19, 0, 22, 1, 20, 1, 15, 0, 29, 30, 26, 27, 31, 3,
+ 24, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",19,19,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",16,23,False
+"tensor([[24, 1, 20, 1, 16]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0]])",25,23,False
+"tensor([[24, 1, 20, 1, 16, 0, 25]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1]])",16,19,False
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16]])",0,1,False
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3]])",25,24,False
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25]])",4,1,False
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 16, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",16,16,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",16,13,False
+"tensor([[25, 1, 20, 1, 16]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0]])",25,25,True
+"tensor([[25, 1, 20, 1, 16, 0, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1]])",17,15,False
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3]])",25,25,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25]])",4,4,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 25, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",17,17,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,20,True
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",19,15,False
+"tensor([[22, 1, 20, 1, 19]])",0,0,True
+"tensor([[22, 1, 20, 1, 19, 0]])",21,24,False
+"tensor([[22, 1, 20, 1, 19, 0, 21]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1]])",12,18,False
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12]])",0,1,False
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0]])",22,21,False
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1]])",21,12,False
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1]])",7,9,False
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1]])",19,18,False
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19]])",0,0,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0]])",29,29,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3]])",21,22,False
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1]])",7,5,False
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1]])",14,18,False
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14]])",4,4,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0, 2,
+ 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0, 2,
+ 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0, 2,
+ 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0, 2,
+ 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0, 2,
+ 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",7,7,True
+"tensor([[22, 1, 20, 1, 19, 0, 21, 1, 20, 1, 12, 0, 22, 1, 20, 1, 21, 1,
+ 7, 1, 19, 0, 29, 30, 26, 27, 31, 3, 21, 1, 7, 1, 14, 4, 0, 2,
+ 1, 28, 32, 31, 29, 32, 31, 0, 2, 1, 7]])",12,12,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",12,12,True
+"tensor([[25, 1, 20, 1, 12]])",0,0,True
+"tensor([[25, 1, 20, 1, 12, 0]])",23,24,False
+"tensor([[25, 1, 20, 1, 12, 0, 23]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1]])",13,15,False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13]])",0,0,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0]])",29,25,False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3]])",23,25,False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23]])",4,1,False
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 12, 0, 23, 1, 20, 1, 13, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",13,13,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,20,True
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",14,19,False
+"tensor([[22, 1, 20, 1, 14]])",0,0,True
+"tensor([[22, 1, 20, 1, 14, 0]])",22,24,False
+"tensor([[22, 1, 20, 1, 14, 0, 22]])",1,1,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1]])",13,12,False
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13]])",1,0,False
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1]])",7,5,False
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7]])",1,1,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1]])",22,24,False
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22]])",0,0,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0]])",29,29,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3]])",22,22,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22]])",4,1,False
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",7,7,True
+"tensor([[22, 1, 20, 1, 14, 0, 22, 1, 20, 1, 13, 1, 7, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 7]])",11,11,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",10,12,False
+"tensor([[24, 1, 20, 1, 10]])",0,0,True
+"tensor([[24, 1, 20, 1, 10, 0]])",24,29,False
+"tensor([[24, 1, 20, 1, 10, 0, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1]])",17,10,False
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17]])",0,0,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0]])",29,25,False
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3]])",24,24,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1]])",6,7,False
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6]])",1,1,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1]])",13,17,False
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13]])",4,4,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[24, 1, 20, 1, 10, 0, 24, 1, 20, 1, 17, 0, 29, 30, 26, 27, 31, 3,
+ 24, 1, 6, 1, 13, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 11]])",10,10,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",19,15,False
+"tensor([[24, 1, 20, 1, 19]])",0,0,True
+"tensor([[24, 1, 20, 1, 19, 0]])",29,23,False
+"tensor([[24, 1, 20, 1, 19, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3]])",24,23,False
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24]])",1,4,False
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1]])",7,7,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7]])",1,1,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1]])",19,19,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19]])",4,4,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3, 24, 1, 7, 1, 19, 4,
+ 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",10,10,True
+tensor([[23]]),1,1,True
+"tensor([[23, 1]])",20,20,True
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",14,12,False
+"tensor([[23, 1, 20, 1, 14]])",0,0,True
+"tensor([[23, 1, 20, 1, 14, 0]])",29,25,False
+"tensor([[23, 1, 20, 1, 14, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3]])",23,24,False
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23]])",4,1,False
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28,
+ 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28,
+ 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28,
+ 32, 31, 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 23, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0, 2, 1]])",14,14,True
+tensor([[23]]),1,1,True
+"tensor([[23, 1]])",20,5,False
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",13,16,False
+"tensor([[23, 1, 20, 1, 13]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0]])",25,21,False
+"tensor([[23, 1, 20, 1, 13, 0, 25]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1]])",20,20,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1]])",12,15,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0]])",29,29,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3]])",23,24,False
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23]])",4,4,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 13, 0, 25, 1, 20, 1, 12, 0, 29, 30, 26, 27, 31, 3,
+ 23, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",13,13,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",16,15,False
+"tensor([[25, 1, 20, 1, 16]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0]])",23,29,False
+"tensor([[25, 1, 20, 1, 16, 0, 23]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1]])",14,12,False
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0]])",29,23,False
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3]])",25,25,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25]])",1,4,False
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1]])",9,9,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1]])",19,22,False
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19]])",4,4,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",10,10,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10]])",8,8,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+"tensor([[25, 1, 20, 1, 16, 0, 23, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3,
+ 25, 1, 9, 1, 19, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 10, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]])",16,16,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",14,21,False
+"tensor([[21, 1, 20, 1, 14]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0]])",29,21,False
+"tensor([[21, 1, 20, 1, 14, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3]])",21,21,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21]])",4,1,False
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 14, 0, 29, 30, 26, 27, 31, 3, 21, 4, 0, 2, 1, 28,
+ 32, 31, 29, 32, 31, 0, 2, 1]])",14,14,True
+tensor([[23]]),1,1,True
+"tensor([[23, 1]])",20,20,True
+"tensor([[23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1]])",18,18,True
+"tensor([[23, 1, 20, 1, 18]])",0,0,True
+"tensor([[23, 1, 20, 1, 18, 0]])",23,25,False
+"tensor([[23, 1, 20, 1, 18, 0, 23]])",1,1,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1]])",20,20,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1]])",10,13,False
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10]])",0,0,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0]])",22,21,False
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22]])",1,1,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1]])",20,20,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20]])",1,1,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1]])",19,18,False
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19]])",1,1,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1]])",5,6,False
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5]])",1,1,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1]])",23,22,False
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23]])",0,0,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0]])",29,29,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29]])",30,30,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30]])",26,26,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26]])",27,27,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3]])",22,25,False
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22]])",4,4,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4]])",0,0,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1]])",28,28,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[23, 1, 20, 1, 18, 0, 23, 1, 20, 1, 10, 0, 22, 1, 20, 1, 19, 1,
+ 5, 1, 23, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",10,10,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",18,16,False
+"tensor([[21, 1, 20, 1, 18]])",0,0,True
+"tensor([[21, 1, 20, 1, 18, 0]])",21,25,False
+"tensor([[21, 1, 20, 1, 18, 0, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1]])",19,21,False
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19]])",0,0,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0]])",29,24,False
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3]])",21,22,False
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",4,1,False
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 18, 0, 21, 1, 20, 1, 19, 0, 29, 30, 26, 27, 31, 3,
+ 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",19,19,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",10,16,False
+"tensor([[21, 1, 20, 1, 10]])",0,0,True
+"tensor([[21, 1, 20, 1, 10, 0]])",25,29,False
+"tensor([[21, 1, 20, 1, 10, 0, 25]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1]])",21,13,False
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1]])",6,6,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1]])",21,21,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21]])",0,0,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0]])",29,29,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3]])",21,21,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1]])",6,7,False
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1]])",21,13,False
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21]])",4,4,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 10, 0, 25, 1, 20, 1, 21, 1, 6, 1, 21, 0, 29, 30,
+ 26, 27, 31, 3, 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",10,10,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,20,True
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",17,15,False
+"tensor([[21, 1, 20, 1, 17]])",0,0,True
+"tensor([[21, 1, 20, 1, 17, 0]])",25,29,False
+"tensor([[21, 1, 20, 1, 17, 0, 25]])",1,1,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1]])",16,17,False
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16]])",0,0,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0]])",29,21,False
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3]])",21,21,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21]])",1,1,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1]])",6,9,False
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6]])",1,1,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1]])",21,14,False
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21]])",4,4,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[21, 1, 20, 1, 17, 0, 25, 1, 20, 1, 16, 0, 29, 30, 26, 27, 31, 3,
+ 21, 1, 6, 1, 21, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 11]])",14,14,True
+tensor([[22]]),1,1,True
+"tensor([[22, 1]])",20,20,True
+"tensor([[22, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1]])",18,11,False
+"tensor([[22, 1, 20, 1, 18]])",0,0,True
+"tensor([[22, 1, 20, 1, 18, 0]])",25,24,False
+"tensor([[22, 1, 20, 1, 18, 0, 25]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1]])",20,20,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1]])",22,19,False
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1]])",6,6,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1]])",22,17,False
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22]])",0,0,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0]])",29,29,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29]])",30,30,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30]])",26,26,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3]])",25,25,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25]])",4,4,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4]])",0,0,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0, 2, 1]])",28,28,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31]])",0,0,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0]])",2,2,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1]])",11,11,True
+"tensor([[22, 1, 20, 1, 18, 0, 25, 1, 20, 1, 22, 1, 6, 1, 22, 0, 29, 30,
+ 26, 27, 31, 3, 25, 4, 0, 2, 1, 28, 32, 31, 29, 32, 31, 0, 2, 1,
+ 11]])",16,16,True
+tensor([[21]]),1,1,True
+"tensor([[21, 1]])",20,5,False
+"tensor([[21, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1]])",13,17,False
+"tensor([[21, 1, 20, 1, 13]])",0,0,True
+"tensor([[21, 1, 20, 1, 13, 0]])",25,21,False
+"tensor([[21, 1, 20, 1, 13, 0, 25]])",1,1,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1]])",19,17,False
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19]])",0,0,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0]])",22,22,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22]])",1,1,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1]])",20,20,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20]])",1,1,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1]])",25,11,False
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25]])",1,1,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1]])",7,5,False
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7]])",1,1,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1]])",21,21,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21]])",0,0,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0]])",29,29,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29]])",30,30,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30]])",26,26,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26]])",27,27,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27]])",31,31,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31]])",3,3,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3]])",22,25,False
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22]])",4,4,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4]])",0,0,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1]])",28,28,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29]])",32,32,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32]])",31,31,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31]])",0,0,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0]])",2,2,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2]])",1,1,True
+"tensor([[21, 1, 20, 1, 13, 0, 25, 1, 20, 1, 19, 0, 22, 1, 20, 1, 25, 1,
+ 7, 1, 21, 0, 29, 30, 26, 27, 31, 3, 22, 4, 0, 2, 1, 28, 32, 31,
+ 29, 32, 31, 0, 2, 1]])",16,16,True
+tensor([[25]]),1,1,True
+"tensor([[25, 1]])",20,20,True
+"tensor([[25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1]])",14,14,True
+"tensor([[25, 1, 20, 1, 14]])",0,0,True
+"tensor([[25, 1, 20, 1, 14, 0]])",25,24,False
+"tensor([[25, 1, 20, 1, 14, 0, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1]])",20,20,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20]])",1,1,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1]])",14,21,False
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14]])",1,0,False
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1]])",5,5,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5]])",1,1,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1]])",25,25,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25]])",0,0,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0]])",29,29,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29]])",30,30,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30]])",26,26,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3]])",25,25,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25]])",1,1,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1]])",9,5,False
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9]])",1,1,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1]])",18,25,False
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18]])",4,4,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4]])",0,0,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2, 1]])",28,28,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",12,11,False
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 12]])",8,8,True
+"tensor([[25, 1, 20, 1, 14, 0, 25, 1, 20, 1, 14, 1, 5, 1, 25, 0, 29, 30,
+ 26, 27, 31, 3, 25, 1, 9, 1, 18, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1, 12, 8]])",10,10,True
+tensor([[24]]),1,1,True
+"tensor([[24, 1]])",20,20,True
+"tensor([[24, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1]])",17,15,False
+"tensor([[24, 1, 20, 1, 17]])",0,1,False
+"tensor([[24, 1, 20, 1, 17, 0]])",23,22,False
+"tensor([[24, 1, 20, 1, 17, 0, 23]])",1,1,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1]])",20,20,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20]])",1,1,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1]])",12,18,False
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12]])",1,0,False
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1]])",6,9,False
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6]])",1,1,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1]])",18,12,False
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18]])",0,0,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0]])",29,29,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29]])",30,30,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30]])",26,26,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26]])",27,27,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27]])",31,31,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31]])",3,3,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3]])",24,23,False
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24]])",1,1,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1]])",5,5,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5]])",1,1,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1]])",11,11,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11]])",4,4,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4]])",0,0,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0, 2, 1]])",28,28,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0, 2, 1, 28]])",32,32,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0, 2, 1, 28, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0, 2, 1, 28, 32, 31]])",29,29,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29]])",32,32,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32]])",31,31,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31]])",0,0,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0]])",2,2,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2]])",1,1,True
+"tensor([[24, 1, 20, 1, 17, 0, 23, 1, 20, 1, 12, 1, 6, 1, 18, 0, 29, 30,
+ 26, 27, 31, 3, 24, 1, 5, 1, 11, 4, 0, 2, 1, 28, 32, 31, 29, 32,
+ 31, 0, 2, 1]])",17,17,True
diff --git a/tasks/line _execution_counting/README.md b/tasks/line _execution_counting/README.md
new file mode 100644
index 0000000..d7145c0
--- /dev/null
+++ b/tasks/line _execution_counting/README.md
@@ -0,0 +1,30 @@
+# Line execution counting guide
+
+the task consists of the model predicting the count of how many lines of code will be executed given a random python code snippet
+
+
+this folder contains .py and .ipynb files achieving the following goals :
+
+## Data generation
+
+[tinypy_generator.py](./tinypy_generator.py) is the main file that generates the dataset in the form of labeled python code snippets, this file is a modified version of the original [tinypy_generator](https://github.com/MarwaNair/TinyPy-Generator) which generates python code snippets and labels it with the output of that code.
+
+for our case, we will keep the code snippet, and just change the label, instead of labeling with the code output, we will label with the line count, hence the modification.
+
+the modification that you would notice after exploring that [file](./tinypy_generator.py) is that a new independent method has been added - given a python code snippet, the method returns its count -
+
+for the sake of experiments, that same method has been written in a separate demonstrative .py file : [lineCounter.py](./lineCounter.py), the method accepts any functionning python code as an input.
+
+a detailed explanation of how that method works is provided in the following [Docs](https://docs.google.com/document/d/1Fz0KGN1wb-6rVqU0BdrTBSaodM-pksPXhfoAGQbU7Dk/edit?usp=sharing) file.
+
+## Data split
+
+before moving on to finetuning, [prepare.py](./prepare.py) makes it possible to format the data generated previously, from a .txt file it splits the code examples into training, evaluation and test examples, saved in 3 separate files, in addition to generating a meta.pkl file that will help in the next stage "retrieve the needed information about the generated data"...
+
+## Finetuning the model
+
+[finetuning.ipynb](./finetuning.ipynb) contains the entire process "explained in the comments" that follows data generation :
+- Data preparation "tokenization.. etc"
+- Model structure definition "and lora implementation"
+- Training "or finetuning if lora is activated"
+- Evaluation
\ No newline at end of file
diff --git a/tasks/line _execution_counting/finetuning.ipynb b/tasks/line _execution_counting/finetuning.ipynb
new file mode 100644
index 0000000..4d6b600
--- /dev/null
+++ b/tasks/line _execution_counting/finetuning.ipynb
@@ -0,0 +1 @@
+{"cells":[{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"aa556b17-8ea0-4788-aea8-8d6259526157","_uuid":"a14f6813-426a-4666-9280-7ed88ebdb85e","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:47:30.282920Z","iopub.status.busy":"2024-09-23T12:47:30.282569Z","iopub.status.idle":"2024-09-23T12:47:30.288207Z","shell.execute_reply":"2024-09-23T12:47:30.287329Z","shell.execute_reply.started":"2024-09-23T12:47:30.282894Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["import random\n","import os\n","import pickle\n","import time\n","import datetime\n","import torch\n","import torch.nn as nn\n","import torch.nn.functional as F\n","from torch.optim.lr_scheduler import StepLR\n","import numpy as np\n","import pandas as pd\n","from tqdm import tqdm\n","import re"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"063623b6-121d-4c18-a660-93d2f1be3305","_uuid":"f10e66ef-f466-4cfc-8ddb-594df92adb45","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:47:31.741666Z","iopub.status.busy":"2024-09-23T12:47:31.741274Z","iopub.status.idle":"2024-09-23T12:47:31.747701Z","shell.execute_reply":"2024-09-23T12:47:31.746726Z","shell.execute_reply.started":"2024-09-23T12:47:31.741638Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# Set the random seed for reproducibility\n","seed = 42\n","torch.manual_seed(seed) \n","random.seed(seed)\n","np.random.seed(seed)\n","\n","# Set the device to GPU if available, otherwise CPU\n","device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n","print(f\"Device set to {device}.\")"]},{"cell_type":"markdown","metadata":{"_cell_guid":"4776333c-08cd-4127-bea7-d7ec8898df7b","_uuid":"f61836e4-3f71-432d-8c50-9de1ff2e05e0","trusted":true},"source":["# Data Preparation"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"fcc4b173-f5e5-4110-b14f-46a8fa6da9ae","_uuid":"0aa1c1b8-a945-4baa-8d46-3a08056a9004","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:47:33.450870Z","iopub.status.busy":"2024-09-23T12:47:33.450042Z","iopub.status.idle":"2024-09-23T12:47:33.455749Z","shell.execute_reply":"2024-09-23T12:47:33.454855Z","shell.execute_reply.started":"2024-09-23T12:47:33.450837Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# Helper functions to load and save data\n","def save_data(data, file_path):\n"," with open(file_path, 'w') as f:\n"," f.write(data)\n","\n","def load_data(file_path):\n"," with open(file_path, 'r') as f:\n"," return f.read()"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"9731ee3f-b4d1-4b6e-afb2-859c56bef6c6","_uuid":"3da5ca68-e0d7-4aed-b89f-5f2a4ab910d9","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:47:44.813132Z","iopub.status.busy":"2024-09-23T12:47:44.812785Z","iopub.status.idle":"2024-09-23T12:47:44.817401Z","shell.execute_reply":"2024-09-23T12:47:44.816456Z","shell.execute_reply.started":"2024-09-23T12:47:44.813103Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# Directory where the data is stored \"must contain 4 files : train.txt, val.txt, test.txt and a meta.pkl file\"\n","DATA_DIR = \"/yourDataDirectoryHere\"\n","# Directory where the model is stored\n","MODEL_DIR = \"/yourModelDirectoryHere\""]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"ddae0037-0f42-425d-a2e9-4238f4c608f2","_uuid":"6d064118-585d-46a9-8f40-f9472fe879b4","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:47:46.392475Z","iopub.status.busy":"2024-09-23T12:47:46.391663Z","iopub.status.idle":"2024-09-23T12:47:46.403456Z","shell.execute_reply":"2024-09-23T12:47:46.402524Z","shell.execute_reply.started":"2024-09-23T12:47:46.392441Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# Attempt to derive vocab_size from the dataset\n","\n","meta_path = os.path.join(DATA_DIR, 'meta.pkl')\n","vocab_size = None\n","\n","if os.path.exists(meta_path):\n"," with open(meta_path, 'rb') as f:\n"," meta = pickle.load(f)\n"," vocab_size = meta['vocab_size']\n"," print(f\"found vocab_size = {vocab_size} (inside {meta_path})\")\n","else:\n"," print(\"Meta file not found. Please ensure the meta.pkl file is present in the data directory.\")\n","\n","# Encode and decode functions for character-level Tokenzation \n","def encode(s):\n"," return [meta['stoi'][c] for c in s]\n","\n","def decode(l):\n"," return ''.join([meta['itos'][i] for i in l])"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"ff53a3e0-09ab-4396-90d9-cef86df0605b","_uuid":"1b2892b5-a904-4550-a8d6-ae8f51f1841f","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:47:48.476650Z","iopub.status.busy":"2024-09-23T12:47:48.476261Z","iopub.status.idle":"2024-09-23T12:47:49.391422Z","shell.execute_reply":"2024-09-23T12:47:49.390496Z","shell.execute_reply.started":"2024-09-23T12:47:48.476620Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# Load data\n","train_data = load_data(os.path.join(DATA_DIR, 'train.txt'))\n","val_data = load_data(os.path.join(DATA_DIR, 'val.txt'))\n","test_data = load_data(os.path.join(DATA_DIR, 'test.txt'))\n","\n","# Encode data\n","train_ids = encode(train_data)\n","val_ids = encode(val_data)\n","test_ids = encode(test_data)\n","\n","# Save encoded data to bin files, make sure to choose \"Files only\" on the persistence option of the session so that you don't encode data each time\n","train_ids = np.array(train_ids, dtype=np.uint16)\n","val_ids = np.array(val_ids, dtype=np.uint16)\n","test_ids = np.array(test_ids, dtype=np.uint16)\n","\n","train_ids.tofile( 'train.bin')\n","val_ids.tofile( 'val.bin')\n","test_ids.tofile('test.bin')\n","\n","print(\"Encoded data saved as binary files.\")"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"125ce42e-8df9-4094-b0c5-242fcd99a597","_uuid":"6a2d1ac2-5ef7-441c-9837-050c59120ab9","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:47:51.225679Z","iopub.status.busy":"2024-09-23T12:47:51.225322Z","iopub.status.idle":"2024-09-23T12:47:51.230098Z","shell.execute_reply":"2024-09-23T12:47:51.229117Z","shell.execute_reply.started":"2024-09-23T12:47:51.225651Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["del(train_ids)\n","del(val_ids)\n","del(test_ids)"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"c53f3930-8d16-443d-a5ec-a6926f3f6cf4","_uuid":"9cd8ff5a-2170-4c53-be17-02ac7d0cffd9","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:47:52.915803Z","iopub.status.busy":"2024-09-23T12:47:52.915072Z","iopub.status.idle":"2024-09-23T12:47:52.920735Z","shell.execute_reply":"2024-09-23T12:47:52.919741Z","shell.execute_reply.started":"2024-09-23T12:47:52.915770Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# Load encoded data\n","train_data = np.memmap(\"/kaggle/working/train.bin\", dtype=np.uint16, mode='r')\n","val_data = np.memmap(\"/kaggle/working/val.bin\", dtype=np.uint16, mode='r')"]},{"cell_type":"markdown","metadata":{"_cell_guid":"8574d987-cef6-47d1-b889-e8242a0bcd23","_uuid":"f4fc1523-1d72-49db-a3bc-8d521f236993","trusted":true},"source":["# Model"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"2d4305c5-c1c6-48b0-a048-953a98954854","_uuid":"1fd63d8c-f842-444c-9dc8-cab3263ae6e4","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:47:54.647417Z","iopub.status.busy":"2024-09-23T12:47:54.647052Z","iopub.status.idle":"2024-09-23T12:47:54.653828Z","shell.execute_reply":"2024-09-23T12:47:54.652930Z","shell.execute_reply.started":"2024-09-23T12:47:54.647386Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# Hyperparameters for the GPT model\n","block_size = 256 # Maximum context length\n","n_embd = 372 # Embedding dimension\n","n_head = 6 # Number of attention heads\n","n_layer = 6 # Number of transformer blocks\n","dropout = 0 # Dropout rate\n","batch_size = 64 # Batch size for training\n","max_iters = 100_000 # Maximum number of iterations\n","learning_rate = 1e-3 # Initial Learning rate value\n","miles = [int(max_iters * m) for m in [0.7, 0.8, 0.9]] # Milestones for learning rate decay as fractions of max_iters\n","eval_interval = 10_000 # Evaluation interval\n","eval_iters = 1000 # Number of iterations for evaluation\n","vocab_size = 53 # Vocabulary size\n","\n","# Model to be fine-tuned \"set the model name without .pth\" (Keep it empty for training from scratch)\n","model_name = 'yourModelNameWithoutExtensionHere'\n","\n","# LoRA Rank - Set it to 0 if you want to train from scratch or perform full fine-tuning\n","lora_r = 12\n","\n","compile = False"]},{"cell_type":"code","execution_count":null,"metadata":{"execution":{"iopub.execute_input":"2024-09-23T12:47:57.166947Z","iopub.status.busy":"2024-09-23T12:47:57.166102Z","iopub.status.idle":"2024-09-23T12:47:57.171883Z","shell.execute_reply":"2024-09-23T12:47:57.170912Z","shell.execute_reply.started":"2024-09-23T12:47:57.166910Z"},"trusted":true},"outputs":[],"source":["print(f\"Data in tokens: {len(train_data)}\")\n","iters4epoch = len(train_data)//(batch_size * block_size)\n","print(f\"Number of iters for one pseudo-epoch : {iters4epoch}\")\n","print(f\"Number of pseudo-epochs : {max_iters / iters4epoch:.2f}\")"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"17ff6e02-86d2-4f49-a384-be8c035377a7","_uuid":"9c3a2af2-99a7-4657-bb8d-168a3e8dfcfb","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:47:59.282904Z","iopub.status.busy":"2024-09-23T12:47:59.282430Z","iopub.status.idle":"2024-09-23T12:47:59.430364Z","shell.execute_reply":"2024-09-23T12:47:59.429483Z","shell.execute_reply.started":"2024-09-23T12:47:59.282864Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# defining the entire structure of the model, and in parallel implementing lora\n","class LayerNorm(nn.Module):\n"," \"\"\" LayerNorm with an optional bias. PyTorch's LayerNorm doesn't support simply bias=False \"\"\"\n","\n"," def __init__(self, ndim, bias):\n"," super().__init__()\n"," self.weight = nn.Parameter(torch.ones(ndim))\n"," self.bias = nn.Parameter(torch.zeros(ndim)) if bias else None\n","\n"," def forward(self, input):\n"," return F.layer_norm(input, self.weight.shape, self.weight, self.bias, 1e-5)\n","\n","class Head(nn.Module):\n"," \"\"\"One head of self-attention.\"\"\"\n","\n"," def __init__(self, head_size):\n"," super().__init__()\n"," self.key = nn.Linear(n_embd, head_size, bias=False)\n"," self.query = nn.Linear(n_embd, head_size, bias=False)\n"," self.value = nn.Linear(n_embd, head_size, bias=False)\n"," self.flash = hasattr(torch.nn.functional, 'scaled_dot_product_attention')\n"," self.dropout = nn.Dropout(dropout)\n","\n"," def forward(self, x):\n"," B, T, C = x.shape\n"," k = self.key(x) # (B, T, head_size)\n"," q = self.query(x) # (B, T, head_size)\n"," v = self.value(x) # (B, T, head_size)\n","\n"," # Apply scaled dot-product attention\n"," out = torch.nn.functional.scaled_dot_product_attention(\n"," q, k, v, attn_mask=None, dropout_p=dropout if self.training else 0, is_causal=True\n"," )\n"," \n"," return out\n"," \n","\n","class MultiHeadAttention(nn.Module):\n"," \"\"\"Multiple heads of self-attention in parallel.\"\"\"\n","\n"," def __init__(self, num_heads, head_size):\n"," super().__init__()\n"," self.heads = nn.ModuleList([Head(head_size) for _ in range(num_heads)])\n"," self.proj = nn.Linear(n_embd, n_embd)\n"," self.dropout = nn.Dropout(dropout)\n"," \n"," def forward(self, x):\n"," # Concatenate the outputs from each head\n"," out = torch.cat([h(x) for h in self.heads], dim=-1)\n"," out = self.dropout(self.proj(out))\n"," return out\n"," \n","class FeedForward(nn.Module):\n"," \"\"\"A simple linear layer followed by a non-linearity.\"\"\"\n","\n"," def __init__(self, n_embd):\n"," super().__init__()\n"," self.net = nn.Sequential(\n"," nn.Linear(n_embd, 4 * n_embd, bias=False),\n"," nn.GELU(),\n"," nn.Linear(4 * n_embd, n_embd, bias=False),\n"," nn.Dropout(dropout),\n"," )\n","\n"," def forward(self, x):\n"," return self.net(x)\n","\n","class LinearLoRA(nn.Module):\n"," def __init__(self, original_layer, rank=8):\n"," super().__init__()\n"," self.original_layer = original_layer\n"," self.original_layer.weight.requires_grad = False\n"," self.rank = rank\n"," \n"," self.lora_a = nn.Parameter(torch.randn((original_layer.in_features, rank)))\n"," self.lora_b = nn.Parameter(torch.randn((rank, original_layer.out_features)))\n"," \n"," self.reset_parameters()\n"," \n"," def reset_parameters(self):\n"," nn.init.kaiming_uniform_(self.lora_a, a=np.sqrt(5))\n"," nn.init.zeros_(self.lora_b)\n"," \n"," def forward(self, x):\n"," lora_output = x @ self.lora_a @ self.lora_b\n"," return self.original_layer(x) + lora_output\n"," \n","class Block(nn.Module):\n"," \"\"\"Transformer block: communication followed by feedforward.\"\"\"\n","\n"," def __init__(self, n_embd, n_head):\n"," super().__init__()\n"," head_size = n_embd // n_head\n"," self.sa = MultiHeadAttention(n_head, head_size)\n"," self.ffwd = FeedForward(n_embd)\n"," self.ln1 = nn.LayerNorm(n_embd, bias=False)\n"," self.ln2 = nn.LayerNorm(n_embd, bias=False)\n","\n"," def forward(self, x):\n"," x = x + self.sa(self.ln1(x))\n"," x = x + self.ffwd(self.ln2(x))\n"," return x\n","\n","class GPT(nn.Module):\n"," \"\"\"GPT language model.\"\"\"\n","\n"," def __init__(self):\n"," super().__init__()\n"," self.token_embedding_table = nn.Embedding(vocab_size, n_embd)\n"," self.position_embedding_table = nn.Embedding(block_size, n_embd)\n"," self.blocks = nn.Sequential(*[Block(n_embd, n_head=n_head) for _ in range(n_layer)])\n"," self.ln_f = nn.LayerNorm(n_embd, bias=False) \n"," self.lm_head = nn.Linear(n_embd, vocab_size)\n","\n"," def forward(self, idx, targets=None):\n"," B, T = idx.shape\n","\n"," # Token and position embeddings\n"," tok_emb = self.token_embedding_table(idx) # (B, T, n_embd)\n"," pos_emb = self.position_embedding_table(torch.arange(T, device=device)) # (T, n_embd)\n"," x = tok_emb + pos_emb # (B, T, n_embd)\n"," x = self.blocks(x) # (B, T, n_embd)\n"," x = self.ln_f(x) # (B, T, n_embd)\n"," logits = self.lm_head(x) # (B, T, vocab_size)\n","\n"," # Compute loss if targets are provided\n"," if targets is None:\n"," loss = None\n"," else:\n"," B, T, C = logits.shape\n"," logits = logits.view(B * T, C)\n"," targets = targets.view(B * T)\n"," loss = F.cross_entropy(logits, targets)\n","\n"," return logits, loss\n"," \n"," def generate(self, idx, max_new_tokens):\n"," \"\"\"Generate new tokens given an initial context `idx`.\"\"\"\n"," for _ in range(max_new_tokens):\n"," idx_cond = idx[:, -block_size:] # Crop to the last block_size tokens\n"," logits, _ = self(idx_cond)\n"," logits = logits[:, -1, :] # Focus on the last time step\n"," probs = F.softmax(logits, dim=-1) # Convert to probabilities\n"," idx_next = torch.multinomial(probs, num_samples=1) # Sample from the distribution\n"," idx = torch.cat((idx, idx_next), dim=1) # Append sampled index to the sequence\n"," return idx\n"," \n"," def activate_lora(self, r=8, heads_only=False, freeze_others=True):\n"," self.lora_rank = r\n"," self.replace_multihead_attention_recursion(heads_only)\n"," if freeze_others:\n"," self.freeze_parameters_except_lora_and_bias()\n"," \n"," def replace_multihead_attention_recursion(self, heads_only=False, model=None):\n"," children = self.named_children() if model is None else model.named_children()\n"," for name, module in children:\n"," if heads_only and name in {\"query\", \"key\", \"value\"}:\n"," # Replace with Lora SelfAttention\n"," new_layer = LinearLoRA(module, rank=self.lora_rank)\n","\n"," if model == None:\n"," self.__setattr__(name, new_layer)\n"," else:\n"," setattr(model, name, new_layer)\n"," \n"," elif isinstance(module, nn.Linear) and not heads_only:\n"," new_layer = LinearLoRA(module, rank=self.lora_rank)\n"," \n"," if model == None:\n"," self.__setattr__(name, new_layer)\n"," else:\n"," setattr(model, name, new_layer)\n"," \n"," else:\n"," # Recursive call for child modules\n"," self.replace_multihead_attention_recursion(heads_only, model=module)\n"," \n"," \n"," def freeze_parameters_except_lora_and_bias(self):\n"," for name, param in self.named_parameters():\n"," is_trainable = (\n"," \"lora_\" in name\n"," #(self.train_layer_norms and \"LayerNorm\" in name)\n"," )\n","\n"," param.requires_grad = is_trainable"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"a716f789-f605-42d0-9494-d8927ed09a6f","_uuid":"be441d8d-c18b-4694-b2ff-607aac4b11e6","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:48:03.987746Z","iopub.status.busy":"2024-09-23T12:48:03.987386Z","iopub.status.idle":"2024-09-23T12:48:03.998567Z","shell.execute_reply":"2024-09-23T12:48:03.997639Z","shell.execute_reply.started":"2024-09-23T12:48:03.987716Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# Get random batch of data\n","def get_batch(split):\n"," data = train_data if split == 'train' else val_data\n"," ix = torch.randint(len(data) - block_size, (batch_size,))\n"," x = torch.stack([torch.from_numpy((data[i:i+block_size]).astype(np.int64)) for i in ix])\n"," y = torch.stack([torch.from_numpy((data[i+1:i+1+block_size]).astype(np.int64)) for i in ix])\n"," x, y = x.to(device), y.to(device)\n"," return x, y\n","\n","# Estimate loss on train and val splits\n","@torch.no_grad()\n","def estimate_loss():\n"," out = {}\n"," model.eval()\n"," for split in ['train', 'val']:\n"," losses = torch.zeros(eval_iters) \n"," for k in range(eval_iters):\n"," X, Y = get_batch(split)\n"," logits, loss = model(X, Y)\n"," losses[k] = loss.item()\n"," out[split] = losses.mean()\n"," model.train()\n"," return out\n","\n","\n","# Helper function to make large numbers of parameters human-readable\n","def human_readable(num):\n"," magnitude = 0\n"," while abs(num) >= 1000:\n"," magnitude += 1\n"," num /= 1000.0\n"," return '%.0f%s' % (num, ['', 'K', 'M', 'G', 'T', 'P'][magnitude])"]},{"cell_type":"code","execution_count":null,"metadata":{"execution":{"iopub.execute_input":"2024-09-23T12:48:08.446054Z","iopub.status.busy":"2024-09-23T12:48:08.445693Z","iopub.status.idle":"2024-09-23T12:48:08.456231Z","shell.execute_reply":"2024-09-23T12:48:08.455320Z","shell.execute_reply.started":"2024-09-23T12:48:08.446025Z"},"trusted":true},"outputs":[],"source":["# load the language model\n","def load_model():\n"," \"\"\"\n"," Load pre-trained model based on the provided model name.\n"," \"\"\"\n"," model_path = os.path.join(MODEL_DIR, f\"{model_name}.pth\")\n"," if not os.path.exists(model_path):\n"," raise FileNotFoundError(f\"Model file '{model_path}' not found.\")\n"," \n"," model = GPT()\n"," print(\"Compiling the model...\\n\")\n"," r = -1\n"," if compile:\n"," try:\n"," model = torch.compile(model) # requires PyTorch 2.0\n"," except Exception as e:\n"," pass\n","\n"," checkpoint = torch.load(model_path, map_location=device)\n"," if 'lora_rank' in checkpoint.keys():\n"," r = checkpoint['lora_rank']\n"," state = checkpoint['state_dict']\n","\n"," if r > 0:\n"," model.activate_lora(r)\n"," model.load_state_dict(state)\n"," else:\n"," model.load_state_dict(checkpoint)\n"," else:\n"," checkpoint = torch.load(model_path, map_location=device)\n"," if 'lora_rank' in checkpoint.keys():\n"," r = checkpoint['lora_rank']\n"," state_dict = checkpoint['state_dict']\n","\n"," if r > 0:\n"," model.activate_lora(r)\n"," else:\n"," state_dict = checkpoint\n"," \n"," state_dict_keys = map(lambda x: x.replace(\"_orig_mod.\", \"\"), state_dict.keys())\n"," state_dict = dict(zip(state_dict_keys, state_dict.values()))\n"," model.load_state_dict(state_dict)\n","\n"," m = model.to(device)\n"," return m, (r > 0)"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"21de39d0-d298-45ce-a590-c6be400f31e8","_uuid":"db1edcb0-7dae-40b8-99f0-3a524bd1311e","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:48:10.715656Z","iopub.status.busy":"2024-09-23T12:48:10.714845Z","iopub.status.idle":"2024-09-23T12:48:11.061542Z","shell.execute_reply":"2024-09-23T12:48:11.060652Z","shell.execute_reply.started":"2024-09-23T12:48:10.715624Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# Initialize model and move it to the device (GPU)\n","if len(model_name) > 0:\n"," print(\"Loading model...\\n\")\n"," model, r_exists = load_model()\n","\n","else:\n"," model = GPT()\n"," m = model.to(device)\n"," r_exists = False\n","\n"," # compile the model\n"," if compile:\n"," print(\"compiling the model... (takes a ~minute)\")\n"," model = torch.compile(model)\n","\n","if lora_r > 0 and not r_exists:\n"," print(\"Activating LoRA...\")\n"," model.activate_lora(lora_r)\n"," model = model.to(device)\n","\n","num_parameters = sum(p.numel() for p in model.parameters() if p.requires_grad)\n","num_parameters_hr = human_readable(num_parameters)\n","print(f'The model has {num_parameters_hr} trainable parameters')"]},{"cell_type":"markdown","metadata":{"_cell_guid":"ac1fe251-e0c8-4079-9da4-68aff59262f4","_uuid":"8cdf45cc-0d3a-43a9-b10d-5381799a21f2","trusted":true},"source":["# Training"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"e725706a-19a1-4e82-91b1-514dd0488f33","_uuid":"45093d41-9498-45e4-b93b-95b0b239c0af","collapsed":false,"execution":{"iopub.execute_input":"2024-09-11T16:44:05.970233Z","iopub.status.busy":"2024-09-11T16:44:05.969481Z","iopub.status.idle":"2024-09-11T16:44:07.752808Z","shell.execute_reply":"2024-09-11T16:44:07.751536Z","shell.execute_reply.started":"2024-09-11T16:44:05.970172Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# Initialize optimizer\n","optimizer = torch.optim.AdamW(model.parameters(), lr=learning_rate)\n","\n","# Initialize learning rate scheduler\n","scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=miles, gamma=0.1)"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"76b8e469-893d-4151-a175-99b54dbabe60","_uuid":"534a6c6a-e6b8-4632-8078-86aab93500de","collapsed":false,"execution":{"iopub.execute_input":"2024-09-11T10:57:07.371504Z","iopub.status.busy":"2024-09-11T10:57:07.371046Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# Get current date and hour to get track of experiments\n","now = datetime.datetime.now()\n","date_hour = now.strftime(\"%Y-%m-%d_%H-%M\")\n","\n","# Train\n","# Start training timer\n","start_time = time.time()\n","\n","# Training loop\n","for iter in range(max_iters):\n","\n"," # evaluate the model on the train and val splits and log the losses\n"," if iter % eval_interval == 0:\n"," losses = estimate_loss()\n"," print(f'iter {iter:5d} | train loss {losses[\"train\"]:.4f} | val loss {losses[\"val\"]:.4f}')\n"," \n"," # train the model for one iteration\n"," xb, yb = get_batch('train')\n","\n"," # forward passd\n"," logits, loss = model(xb, yb)\n"," optimizer.zero_grad(set_to_none=True)\n"," #loss.requires_grad = True\n"," loss.backward()\n"," optimizer.step()\n","\n"," # Step the scheduler\n"," scheduler.step()\n","\n","# End training timer\n","end_time = time.time()\n","print(f'Training time: {(end_time - start_time) / 60} min')\n","\n","# Save the trained model\n","model_path = f\"{num_parameters_hr}_{date_hour}.pth\"\n","checkpoint = {\n"," 'lora_rank': model.lora_rank if(hasattr(model, \"lora_rank\")) else -1,\n"," 'state_dict': model.state_dict()\n","}\n","\n","torch.save(checkpoint, model_path)\n","print(f\"Model saved to {model_path}\\n\")"]},{"cell_type":"markdown","metadata":{"_cell_guid":"e831564c-6b76-489b-98b0-69cad098fdd6","_uuid":"facd8250-1fd4-4486-a9a6-f099df266caf","trusted":true},"source":["# Evaluation"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"d8071f1a-961b-4410-ae36-ba54b5b525d0","_uuid":"f4e10d4c-a4c8-4e6b-891e-f3d14947adfb","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:48:15.483123Z","iopub.status.busy":"2024-09-23T12:48:15.482531Z","iopub.status.idle":"2024-09-23T12:48:15.490084Z","shell.execute_reply":"2024-09-23T12:48:15.489192Z","shell.execute_reply.started":"2024-09-23T12:48:15.483092Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["test_data = np.memmap('test.bin', dtype=np.uint16, mode='r')"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"f3d6ae4b-e069-43bd-be3f-9e46f19146d3","_uuid":"2e9f95ba-ca83-48bc-bb18-8910efc37422","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:48:20.950761Z","iopub.status.busy":"2024-09-23T12:48:20.950432Z","iopub.status.idle":"2024-09-23T12:48:20.961347Z","shell.execute_reply":"2024-09-23T12:48:20.960565Z","shell.execute_reply.started":"2024-09-23T12:48:20.950737Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# Evaluate example \"line execution counting\"\n","def evaluate_example(model, example, max_new_tokens=30):\n"," \n"," # Split example and determine maximum new tokens allowed\n"," splited_example = example.split(\"# count\")\n"," if not (\"for\" in splited_example[0]):\n"," max_new_tokens = 22\n"," # Encode prompt and prepare for evaluation \n"," encoded_example = torch.tensor(encode(splited_example[0] + \"# count\"), dtype=torch.long).unsqueeze(0).to(device)\n"," prompt_text = splited_example[0] + \"# count\"\n"," result_example = splited_example[-1]\n"," \n"," # Extract real results from example\n"," real_results = [float(match.group()) for match in re.finditer(r\"(?<=# )-?\\d+(\\.\\d+)?\", result_example.split('\\n\\n')[0].replace(\"\\n\", \"\"))]\n"," \n"," # Generate response from model and extract generated results\n"," try:\n"," response = decode(model.generate(encoded_example, max_new_tokens=max_new_tokens)[0].tolist())\n"," splited_response = response.split(\"# count\")\n"," result_response = splited_response[-1]\n"," generated_results = [float(match.group()) for match in re.finditer(r\"(?<=# )-?\\d+(\\.\\d+)?\", result_response.split('\\n\\n')[0].replace(\"\\n\", \"\"))]\n"," except:\n"," generated_results = \"error\"\n"," return prompt_text, real_results, generated_results\n","\n","\n","\n","# Write results to file\n","def write_results_to_file(output_file, prompt, real_results, generated_results):\n"," df = pd.DataFrame({\n"," 'Prompt': prompt,\n"," 'Real_Results': real_results,\n"," 'Generated_Results': generated_results\n"," })\n"," df.to_csv(output_file, index=False)"]},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"2536ece9-1d3c-4373-b308-fd1049f3297f","_uuid":"7b21f8fd-2e4c-443b-8120-e0af732bf558","collapsed":false,"execution":{"iopub.execute_input":"2024-09-23T12:48:31.214124Z","iopub.status.busy":"2024-09-23T12:48:31.213222Z","iopub.status.idle":"2024-09-23T13:32:13.381039Z","shell.execute_reply":"2024-09-23T13:32:13.380177Z","shell.execute_reply.started":"2024-09-23T12:48:31.214089Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"outputs":[],"source":["# Evaluation Loop\n","\n","# Split examples and initialize lists for results\n","examples = decode(test_data).split(\"\\n\\n\")\n","examples = [example for example in examples if example]\n","# Taking a subset of the examples for short \"aimed for verification purposes\" evaluations\n","example_subset = examples[:5000]\n","# Start evaluation process\n","prompt = []\n","real_results = []\n","generated_results = []\n","\n","# Iterate through examples and evaluate the model on each one\n","for example in tqdm(example_subset):\n"," prompt_text, real_result, result = evaluate_example(model, example)\n"," prompt.append(prompt_text)\n"," real_results.append(real_result)\n"," generated_results.append(result)\n","\n","# Calculate and print accuracy\n","correct_count = sum(1 for real, generated in zip(real_results, generated_results) if real == generated)\n","accuracy = correct_count / len(generated_results)\n","print(f\"Accuracy: {accuracy * 100:.2f}%\")\n","\n","# Store accuracy in a file\n","with open(\"accuracy.txt\", 'w') as f:\n"," f.write(f\"Accuracy: {accuracy * 100:.2f}%\\n\")\n","\n","# Store predictions in a CSV file\n"," write_results_to_file(\"predictions.csv\", prompt, real_results, generated_results)"]}],"metadata":{"kaggle":{"accelerator":"gpu","dataSources":[{"datasetId":5419152,"sourceId":9104825,"sourceType":"datasetVersion"},{"datasetId":5544565,"sourceId":9174472,"sourceType":"datasetVersion"},{"datasetId":5546822,"sourceId":9177797,"sourceType":"datasetVersion"},{"datasetId":5527817,"sourceId":9194009,"sourceType":"datasetVersion"},{"datasetId":5559645,"sourceId":9196288,"sourceType":"datasetVersion"},{"datasetId":5560892,"sourceId":9198028,"sourceType":"datasetVersion"},{"datasetId":5560896,"sourceId":9198035,"sourceType":"datasetVersion"},{"datasetId":5560904,"sourceId":9198045,"sourceType":"datasetVersion"},{"datasetId":5566438,"sourceId":9206254,"sourceType":"datasetVersion"},{"datasetId":5592996,"sourceId":9245526,"sourceType":"datasetVersion"},{"datasetId":5596284,"sourceId":9250376,"sourceType":"datasetVersion"},{"datasetId":5603809,"sourceId":9261202,"sourceType":"datasetVersion"},{"datasetId":5603815,"sourceId":9261210,"sourceType":"datasetVersion"},{"datasetId":5628994,"sourceId":9297219,"sourceType":"datasetVersion"},{"datasetId":5628996,"sourceId":9297222,"sourceType":"datasetVersion"},{"datasetId":5628998,"sourceId":9297227,"sourceType":"datasetVersion"},{"datasetId":5628999,"sourceId":9297228,"sourceType":"datasetVersion"},{"datasetId":5629001,"sourceId":9297232,"sourceType":"datasetVersion"},{"datasetId":5629005,"sourceId":9297237,"sourceType":"datasetVersion"},{"datasetId":5670920,"sourceId":9354642,"sourceType":"datasetVersion"},{"datasetId":5673838,"sourceId":9358533,"sourceType":"datasetVersion"},{"datasetId":5673878,"sourceId":9358581,"sourceType":"datasetVersion"},{"datasetId":5676378,"sourceId":9361789,"sourceType":"datasetVersion"},{"datasetId":5676476,"sourceId":9361942,"sourceType":"datasetVersion"},{"datasetId":5680088,"sourceId":9366638,"sourceType":"datasetVersion"},{"datasetId":5681041,"sourceId":9367903,"sourceType":"datasetVersion"},{"datasetId":5707886,"sourceId":9402486,"sourceType":"datasetVersion"},{"datasetId":5708526,"sourceId":9403279,"sourceType":"datasetVersion"},{"datasetId":5708753,"sourceId":9403553,"sourceType":"datasetVersion"},{"datasetId":5720522,"sourceId":9418762,"sourceType":"datasetVersion"},{"datasetId":5749118,"sourceId":9457179,"sourceType":"datasetVersion"},{"datasetId":5749126,"sourceId":9457191,"sourceType":"datasetVersion"},{"datasetId":5752981,"sourceId":9462317,"sourceType":"datasetVersion"},{"datasetId":5753388,"sourceId":9462832,"sourceType":"datasetVersion"},{"modelId":103985,"modelInstanceId":79512,"sourceId":94818,"sourceType":"modelInstanceVersion"},{"modelId":104098,"modelInstanceId":79617,"sourceId":94938,"sourceType":"modelInstanceVersion"},{"modelId":106026,"modelInstanceId":81700,"sourceId":97385,"sourceType":"modelInstanceVersion"},{"modelId":106655,"modelInstanceId":82335,"sourceId":98147,"sourceType":"modelInstanceVersion"},{"modelId":107006,"modelInstanceId":82700,"sourceId":98573,"sourceType":"modelInstanceVersion"},{"modelId":107017,"modelInstanceId":82711,"sourceId":98585,"sourceType":"modelInstanceVersion"},{"modelId":108993,"modelInstanceId":84758,"sourceId":101069,"sourceType":"modelInstanceVersion"},{"isSourceIdPinned":true,"modelId":109445,"modelInstanceId":85225,"sourceId":101650,"sourceType":"modelInstanceVersion"},{"isSourceIdPinned":true,"modelId":117231,"modelInstanceId":93025,"sourceId":111042,"sourceType":"modelInstanceVersion"},{"modelId":121705,"modelInstanceId":97518,"sourceId":116074,"sourceType":"modelInstanceVersion"},{"isSourceIdPinned":true,"modelId":124007,"modelInstanceId":99834,"sourceId":118695,"sourceType":"modelInstanceVersion"},{"isSourceIdPinned":true,"modelId":124376,"modelInstanceId":100207,"sourceId":119159,"sourceType":"modelInstanceVersion"}],"dockerImageVersionId":30747,"isGpuEnabled":true,"isInternetEnabled":true,"language":"python","sourceType":"notebook"},"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.13"}},"nbformat":4,"nbformat_minor":4}
diff --git a/tasks/line _execution_counting/lineCounter.py b/tasks/line _execution_counting/lineCounter.py
new file mode 100644
index 0000000..7964dbd
--- /dev/null
+++ b/tasks/line _execution_counting/lineCounter.py
@@ -0,0 +1,47 @@
+import sys
+from io import StringIO
+from contextlib import redirect_stdout
+
+def line_counter(code_snippet):
+ """
+ this function counts how many lines of code in total have been executed
+ the function follows the following rules :
+ - a line is not counted if :
+ - it falls in a condition bloc where the condition is not verified
+ - it falls in a loop where the number of iterations is equal to zero
+ - a line is counted as much as it has been iterated through "if it sits in a for loop bloc for example "
+ """
+ counter = 0
+
+ def trace_lines(frame, event, arg):
+ nonlocal counter # declaring the outer variable
+ if event == 'line': # every time the tracer detects the execution of a line of code
+ filename = frame.f_code.co_filename
+ if filename == '' : # counting only the lines that are in the code snippet we provided "and not in some other internal libraries"
+ counter += 1 # increment the global counter
+ return trace_lines
+
+
+ # Set the trace function
+ sys.settrace(trace_lines)
+
+ # Capture the output of the program.
+ SIO = StringIO()
+ with redirect_stdout(SIO):
+ # executing the code, the execution is being traced by the trace_lines() function that has been set previously
+ exec(code_snippet,{'__file__': ''}) # Execute the code and setting the "fake file" name to so that we can recognise this code snippet later in trace_lines()
+
+ # Disable the trace function
+ sys.settrace(None)
+
+ return counter
+
+code_snippet = """e = 6
+e = 0
+e = 7
+if not (e != e) or ( e <= e) :
+ print(e)
+else :
+ print(e)"""
+number = line_counter(code_snippet)
+print(f"\n{number} lines executed successfully\n")
\ No newline at end of file
diff --git a/tasks/line _execution_counting/prepare.py b/tasks/line _execution_counting/prepare.py
new file mode 100644
index 0000000..52612cd
--- /dev/null
+++ b/tasks/line _execution_counting/prepare.py
@@ -0,0 +1,84 @@
+import os
+import pickle
+import requests
+import numpy as np
+
+# change the file name which contains the entire dataset, so that it can be fragmented later on to : train, eval and test data
+input_file_path = os.path.join(os.path.dirname(__file__), 'fileNameHere.txt' )
+
+with open(input_file_path, 'r') as f:
+ data = f.read()
+print(f"length of dataset in characters: {len(data):,}\n")
+
+
+# get all the unique characters that occur in this text
+chars = sorted(list(set(data)))
+vocab_size = len(chars)
+print("all the unique characters:", ''.join(chars))
+print(f"vocab size: {vocab_size:,}")
+
+# create a mapping from characters to integers
+stoi = { ch:i for i,ch in enumerate(chars) }
+itos = { i:ch for i,ch in enumerate(chars) }
+def encode(s):
+ return [stoi[c] for c in s] # encoder: take a string, output a list of integers
+def decode(l):
+ ''.join([itos[i] for i in l]) # decoder: take a list of integers, output a string
+
+
+# save the meta information as well, to help us encode/decode later
+meta = {
+ 'vocab_size': vocab_size,
+ 'itos': itos,
+ 'stoi': stoi,
+}
+with open(f'meta.pkl', 'wb') as f:
+ pickle.dump(meta, f)
+
+
+# split by examples using "\n\n"
+examples = data.split("\n\n")[:-1]
+n = len(examples)
+print(f"total number of examples: {n:,}\n")
+# shuffle the examples
+np.random.shuffle(examples)
+
+# split into train, val, and test sets
+train_examples = examples[:int(n*0.8)]
+val_examples = examples[int(n*0.8):int(n*0.9)]
+test_examples = examples[int(n*0.9):]
+
+# join the examples back into strings
+train_data = "\n\n".join(train_examples)
+val_data = "\n\n".join(val_examples)
+test_data = "\n\n".join(test_examples)
+
+
+
+# Save train, val, and test sets to separate files
+with open(os.path.join(os.path.dirname(__file__), 'train.txt'), 'w') as f:
+ f.write(train_data)
+with open(os.path.join(os.path.dirname(__file__), 'val.txt'), 'w') as f:
+ f.write(val_data)
+with open(os.path.join(os.path.dirname(__file__), 'test.txt'), 'w') as f:
+ f.write(test_data)
+
+
+
+
+# encode both to integers
+train_ids = encode(train_data)
+val_ids = encode(val_data)
+test_ids = encode(test_data)
+print(f"train has {len(train_ids):,} tokens for {len(train_examples):,} examples")
+print(f"val has {len(val_ids):,} tokens for {len(val_examples):,} examples")
+print(f"test has {len(test_ids):,} tokens for {len(test_examples):,} examples\n")
+
+# export to bin files
+train_ids = np.array(train_ids, dtype=np.uint16)
+val_ids = np.array(val_ids, dtype=np.uint16)
+test_ids = np.array(test_ids, dtype=np.uint16)
+train_ids.tofile(os.path.join(os.path.dirname(__file__), 'train.bin'))
+val_ids.tofile(os.path.join(os.path.dirname(__file__), 'val.bin'))
+test_ids.tofile(os.path.join(os.path.dirname(__file__), 'test.bin'))
+
diff --git a/tasks/line _execution_counting/tinypy_generator.py b/tasks/line _execution_counting/tinypy_generator.py
new file mode 100644
index 0000000..087c76d
--- /dev/null
+++ b/tasks/line _execution_counting/tinypy_generator.py
@@ -0,0 +1,358 @@
+from anytree import Node, RenderTree
+import random
+from io import StringIO
+from contextlib import redirect_stdout
+import argparse
+import time
+from tqdm.auto import tqdm
+import hashlib
+import os
+import psutil
+import sys
+
+
+class CodeGenerator:
+ def __init__(self):
+ """
+ Initialize the CodeGenerator object with the given context-free grammar rules.
+
+ """
+
+ self.init_count = 0
+ self.max_init = 0
+ # Dictionary containing context-free grammar rules.
+ self.cfg_rules = {
+ # Variables and digits
+ "VARIABLE": ["a", "b", "c", "d", "e"],
+ "DIGIT": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"],
+
+ # Operators
+ "ARITHMETIC_OPERATOR": ["+", "-", "*", "/"],
+ "RELATIONAL_OPERATOR": ["<", ">", "<=", ">=", "!=", "=="],
+ "LOGICAL_OPERATOR_INFIX": ["and", "or"],
+ "LOGICAL_OPERATOR_PREFIX": ["not"],
+ "LOGICAL_OPERATOR": ["LOGICAL_OPERATOR_INFIX", "LOGICAL_OPERATOR_PREFIX"],
+ "OPERATOR": ["ARITHMETIC_OPERATOR"],
+
+ # Formatting
+ "NEW_LINE": ["\n"],
+ "TAB_INDENT": ["\t"],
+ "BRACKET_OPEN": ['('],
+ "BRACKET_CLOSE": [')'],
+ "EQUALS": ["="],
+ "COLON": [":"],
+ "COMMA": [","],
+
+
+ # Keywords
+ "IF": ["if"],
+ "ELIF": ["elif"],
+ "ELSE": ["else"],
+ "FOR": ["for"],
+ "IN": ["in"],
+ "RANGE": ["range"],
+ "WHILE": ["while"],
+ "PRINT": ["print"],
+
+ # Terms and expressions
+ "TERM": ["EXPRESSION_IDENTIFIER", "DIGIT"],
+ "EXPRESSION": ["TERM SPACE OPERATOR SPACE TERM"],
+ "ENCLOSED_EXPRESSION": ["BRACKET_OPEN EXPRESSION BRACKET_CLOSE"],
+ "DISPLAY_EXPRESSION": ["EXPRESSION_IDENTIFIER SPACE OPERATOR SPACE EXPRESSION_IDENTIFIER" ,
+ "EXPRESSION_IDENTIFIER SPACE OPERATOR SPACE DIGIT"],
+
+ # Initializations and assignments
+ "IDENTIFIER_INITIALIZATION": ["IDENTIFIER_INITIALIZATION INITIALIZATION",
+ "INITIALIZATION"],
+
+ "INITIALIZATION": ["VARIABLE SPACE EQUALS SPACE DIGIT NEW_LINE"],
+
+ "SIMPLE_ASSIGNMENTS": ["VARIABLE SPACE EQUALS SPACE EXPRESSION NEW_LINE" , ""],
+ "ADVANCED_ASSIGNMENTS": ["VARIABLE SPACE EQUALS SPACE SIMPLE_ARITHMETIC_EVALUATION NEW_LINE",
+ "VARIABLE SPACE EQUALS SPACE EXPRESSION NEW_LINE" ,
+ ""],
+
+ "SIMPLE_ARITHMETIC_EVALUATION": ["SIMPLE_ARITHMETIC_EVALUATION ARITHMETIC_OPERATOR ENCLOSED_EXPRESSION",
+ "ENCLOSED_EXPRESSION",
+ ],
+
+ # Conditions
+ "SIMPLE_IF_STATEMENT": ["IF SPACE CONDITION SPACE COLON NEW_LINE"],
+ "ADVANCED_IF_STATEMENT": ["IF SPACE CHAIN_CONDITION SPACE COLON NEW_LINE"],
+ "SIMPLE_ELIF_STATEMENT": ["ELIF SPACE CONDITION SPACE COLON NEW_LINE"],
+ "ADVANCED_ELIF_STATEMENT": ["ELIF SPACE CHAIN_CONDITION SPACE COLON NEW_LINE"],
+ "ELSE_STATEMENT": ["ELSE SPACE COLON NEW_LINE"],
+
+ "CHAIN_CONDITION": ["CHAIN_CONDITION SPACE LOGICAL_OPERATOR_INFIX SPACE ENCLOSED_CONDITION",
+ "LOGICAL_OPERATOR_PREFIX SPACE ENCLOSED_CONDITION",
+ "ENCLOSED_CONDITION"],
+ "ENCLOSED_CONDITION": ["BRACKET_OPEN CONDITION BRACKET_CLOSE"],
+ "CONDITION": ["OPTIONAL_NOT CONDITION_EXPRESSION", "CONDITION_EXPRESSION"],
+ "CONDITION_EXPRESSION": ["EXPRESSION_IDENTIFIER SPACE RELATIONAL_OPERATOR SPACE EXPRESSION_IDENTIFIER",
+ "EXPRESSION_IDENTIFIER SPACE RELATIONAL_OPERATOR SPACE DIGIT"],
+ "OPTIONAL_NOT": ["LOGICAL_OPERATOR_PREFIX SPACE", "SPACE"],
+
+ # Loops
+ "FOR_HEADER": ["FOR SPACE EXPRESSION_IDENTIFIER SPACE IN SPACE RANGE BRACKET_OPEN INITIAL COMMA SPACE FINAL COMMA SPACE STEP BRACKET_CLOSE SPACE COLON",
+ "FOR SPACE EXPRESSION_IDENTIFIER SPACE IN SPACE RANGE BRACKET_OPEN INITIAL COMMA SPACE FINAL BRACKET_CLOSE SPACE COLON"],
+ "INITIAL": ["DIGIT"],
+ "FINAL": ["STEP * EXECUTION_COUNT + INITIAL - 1"],
+ "STEP": ["1", "2", "3"],
+ "EXECUTION_COUNT": [ "2", "3"],
+ "FOR_LOOP": ["FOR_HEADER NEW_LINE TAB_INDENT DISPLAY"],
+ "ADVANCED_FOR_LOOP": ["FOR_LOOP",
+ "FOR_HEADER NEW_LINE TAB_INDENT ADVANCED_DISPLAY"],
+
+
+ # Displaying
+ "DISPLAY" : ["PRINT BRACKET_OPEN DISPLAY_IDENTIFIER BRACKET_CLOSE"],
+ "ADVANCED_DISPLAY" : ["DISPLAY",
+ "PRINT BRACKET_OPEN DISPLAY_EXPRESSION BRACKET_CLOSE"],
+
+
+ "LEVEL1.1": ["IDENTIFIER_INITIALIZATION SIMPLE_ASSIGNMENTS ADVANCED_DISPLAY"],
+ "LEVEL1.2": ["IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_DISPLAY"],
+ "LEVEL2.1": ["IDENTIFIER_INITIALIZATION SIMPLE_IF_STATEMENT TAB_INDENT DISPLAY",
+ "IDENTIFIER_INITIALIZATION SIMPLE_IF_STATEMENT TAB_INDENT DISPLAY NEW_LINE SIMPLE_ELIF_STATEMENT TAB_INDENT DISPLAY NEW_LINE ELSE_STATEMENT TAB_INDENT DISPLAY",
+ "IDENTIFIER_INITIALIZATION SIMPLE_IF_STATEMENT TAB_INDENT DISPLAY NEW_LINE ELSE_STATEMENT TAB_INDENT DISPLAY"],
+ "LEVEL2.2": ["IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_IF_STATEMENT TAB_INDENT ADVANCED_DISPLAY",
+ "IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_IF_STATEMENT TAB_INDENT ADVANCED_DISPLAY NEW_LINE ADVANCED_ELIF_STATEMENT TAB_INDENT ADVANCED_DISPLAY NEW_LINE ELSE_STATEMENT TAB_INDENT ADVANCED_DISPLAY",
+ "IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_IF_STATEMENT TAB_INDENT ADVANCED_DISPLAY NEW_LINE ELSE_STATEMENT TAB_INDENT ADVANCED_DISPLAY"],
+ "LEVEL3.1": ["IDENTIFIER_INITIALIZATION FOR_LOOP"],
+ "LEVEL3.2": ["IDENTIFIER_INITIALIZATION ADVANCED_ASSIGNMENTS ADVANCED_FOR_LOOP"],
+
+ "ALL": ["LEVEL1.1", "LEVEL1.2","LEVEL2.1", "LEVEL2.2","LEVEL3.1", "LEVEL3.2"],
+
+ }
+
+ def line_counter(self,code_snippet):
+ """
+ this function counts how many lines of code in total have been executed
+ the function follows the following rules :
+ - a line is not counted if :
+ - it falls in a condition bloc where the condition is not verified
+ - it falls in a loop where the number of iterations is equal to zero
+ - a line is counted as much as it has been iterated through "if it sits in a for loop bloc for example "
+ """
+ counter = 0
+
+ def trace_lines(frame, event, arg):
+ nonlocal counter # declaring the outer variable
+ if event == 'line': # every time the tracer detects the execution of a line of code
+ filename = frame.f_code.co_filename
+ if filename == '' : # counting only the lines that are in the code snippet we provided "and not in some other internal libraries"
+ counter += 1 # increment the global counter
+ return trace_lines
+
+
+ # Set the trace function
+ sys.settrace(trace_lines)
+
+ # Capture the output of the program.
+ SIO = StringIO()
+ with redirect_stdout(SIO):
+ # executing the code, the execution is being traced by the trace_lines() function that has been set previously
+ exec(code_snippet,{'__file__': ''}) # Execute the code and setting the "fake file" name to so that we can recognise this code snippet later in trace_lines()
+
+ # Disable the trace function
+ sys.settrace(None)
+
+ return counter
+
+ def generate_code(self, symbol, assigned_identifiers, last_variable, parent=None):
+ """
+ Generate code recursively based on the context-free grammar rules.
+
+ Parameters:
+ - symbol (str): The symbol to generate code for.
+ - assigned_identifiers (set): Set of assigned identifiers.
+ - last_variable (set): Set of the last used variables.
+ - parent (Node): Parent node in the syntax tree.
+
+ Returns:
+ - str: The generated code.
+ """
+ node = Node(symbol, parent=parent)
+
+ # If the symbol is a non-terminal, expand it using the CFG rules.
+ if symbol in self.cfg_rules:
+ # Initialization count.
+ if symbol == "IDENTIFIER_INITIALIZATION":
+ if self.init_count < self.max_init:
+ self.init_count += 1
+ else:
+ symbol = "INITIALIZATION"
+ # Choose a random rule for the symbol and split it into individual symbols.
+ rule = random.choice(self.cfg_rules[symbol])
+ symbols = rule.split(" ")
+
+ # Recursively generate code for each symbol in the rule.
+ generated_symbols = [self.generate_code(s, assigned_identifiers, last_variable, node) for s in symbols]
+
+ # Handle special case for "FINAL" symbol where we need to evaluate an expression.
+ if symbol == "FINAL":
+ return str(eval(''.join(generated_symbols)))
+
+ # Add initialized variables to the assigned identifiers set.
+ if symbol == "INITIALIZATION":
+ assigned_identifiers.add(generated_symbols[0])
+
+ # Keep track of the last used variables for assignments.
+ if (symbol == "SIMPLE_ASSIGNMENTS") or (symbol == "ADVANCED_ASSIGNMENTS"):
+ if generated_symbols[0]:
+ last_variable.add(generated_symbols[0])
+
+ return ''.join(generated_symbols)
+
+ # Handle the terminal symbols.
+ elif symbol == "EXPRESSION_IDENTIFIER":
+ identifier = random.choice(tuple(assigned_identifiers)) if assigned_identifiers else random.choice(self.cfg_rules["DIGIT"])
+ return identifier
+
+ elif symbol == "DISPLAY_IDENTIFIER":
+ try:
+ return f"{tuple(last_variable)[0]}"
+ except:
+ return f"{random.choice(tuple(assigned_identifiers))}"
+ else:
+ return symbol
+
+ def print_tree(self, root):
+ """
+ Print the syntax tree using the RenderTree utility from the anytree module.
+
+ Parameters:
+ - root (Node): The root node of the syntax tree.
+ """
+ for pre, _, node in RenderTree(root):
+ print(f"{pre}{node.name}")
+
+ def generate_program(self, level):
+ """
+ Generate a program based on the specified level.
+
+ Parameters:
+ - level (str): The level of the program.
+
+ Returns:
+ - Tuple[Node, str]: The syntax tree root node and the generated program.
+ """
+ assigned = set()
+ last_variable = set()
+ root = Node("ROOT")
+
+ # Set the maximum number of initializations based on the level.
+ self.init_count = 0
+ if level == "1.1":
+ self.max_init = 1
+ elif level == "1.2":
+ self.max_init = 3
+ elif level == "3.1":
+ self.max_init = 2
+ elif level == "3.2":
+ self.max_init = 4
+ else:
+ self.max_init = 5
+
+ # Choose a rule for the specified level and generate code.
+ if level == "ALL" :
+ level_passed = level
+ else :
+ level_passed = "LEVEL" + level
+
+ program = self.generate_code(level_passed, assigned, last_variable, root)
+
+ return root, program.replace("SPACE", " ")
+
+ def memory_usage(self):
+ """
+ Get the current memory usage of the process.
+
+ Returns:
+ - int: The memory usage in bytes.
+ """
+ process = psutil.Process(os.getpid())
+ mem_info = process.memory_info()
+ return mem_info.rss
+
+ def generate_and_write_programs(self, num_programs, level, filename='data.txt', deduplicate=True):
+ """
+ Generate and write a specified number of programs to a file.
+
+ Parameters:
+ - num_programs (int): Number of programs to generate and write.
+ - level (str): The level of the programs.
+ - filename (str): Name of the file to write the programs (default is 'data.txt').
+ - deduplicate (bool, optional): Whether to perform deduplication of generated programs (default is True).
+ """
+ start_time = time.time() # Track the start time for performance measurement.
+ start_mem = self.memory_usage() # Track the initial memory usage.
+ max_tries = 1000 # Set the maximum number of tries for deduplication.
+ num_tries = 0 # Initialize the number of tries counter.
+
+ with open(filename, 'w') as file:
+
+ generated_programs = 0 # Initialize the counter for generated programs.
+ hashes = set() # Set to keep track of unique program hashes for deduplication.
+ pbar = tqdm(desc="Generation", total=num_programs)
+
+ while generated_programs < num_programs:
+ try:
+ root, program = self.generate_program(level) # Generate a program.
+
+ count = self.line_counter(program)# count how many executed lines
+
+ result = f"""# Snippet\n{program}\n# count\n# {count}""" # fuse the code snippet with its label "count"
+
+ program_hash = hashlib.sha256(result.encode('utf-8')).hexdigest()
+
+ if deduplicate:
+ if program_hash not in hashes:
+ hashes.add(program_hash) # Add the hash to the set if it's unique.
+ file.write(result + '\n\n') # Write the program to the file.
+ generated_programs += 1 # Increment the counter for generated programs.
+ pbar.update(1)
+ num_tries = 0 # Reset the tries counter.
+ else:
+ num_tries += 1 # Increment the tries counter.
+ if num_tries >= max_tries:
+ print("Hit max tries in deduplication, stopping generation.")
+ break # Stop generation if max tries are reached.
+ else:
+
+ file.write(result + '\n\n') # Write the program to the file without deduplication.
+ generated_programs += 1 # Increment the counter for generated programs.
+ pbar.update(1)
+
+ except Exception as e:
+ continue # Ignore code snippets containing division by zero error.
+
+
+ pbar.close()
+ end_time = time.time() # Track the end time for performance measurement.
+ end_mem = self.memory_usage() # Track the final memory usage.
+ deduplication_info = "with deduplication" if deduplicate else "without deduplication"
+ print(f"Code generation completed in {end_time - start_time:.2f} seconds.")
+ print(f"Memory used during code generation: {end_mem - start_mem} bytes")
+ print(f"Generated {generated_programs} {'unique ' if deduplicate else ''}programs {deduplication_info}.")
+ print(f"Programs are saved to {filename}.")
+
+
+def main():
+ parser = argparse.ArgumentParser(description='Generate and write programs based on a specified level. ')
+ parser.add_argument('--num_programs', type=int, default=1000, help='Number of programs to generate and write (default is 1000)')
+ parser.add_argument('--level', default="ALL", help='The level of the programs (1.1, 1.2, 2.1, 2.2, 3.1, 3.2, ALL)')
+ parser.add_argument('--filename', default='data/data.txt', help='Name of the file to write the programs (default is data/data.txt)')
+ parser.add_argument('--deduplicate', action='store_true', default=True, help='Perform deduplication of generated programs (default is True)')
+
+ args = parser.parse_args()
+
+ valid_levels = ["1.1", "1.2", "2.1", "2.2", "3.1", "3.2", "ALL"]
+ if args.level not in valid_levels:
+ print(f"Error: Invalid level '{args.level}'. Please choose from {', '.join(valid_levels)}.")
+ return
+ code_generator = CodeGenerator()
+ code_generator.generate_and_write_programs(num_programs=args.num_programs, level=args.level, filename=args.filename, deduplicate=args.deduplicate)
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
diff --git a/tasks/operator_prediction/finetune.py b/tasks/operator_prediction/finetune.py
new file mode 100644
index 0000000..83f3240
--- /dev/null
+++ b/tasks/operator_prediction/finetune.py
@@ -0,0 +1,522 @@
+import random
+import os
+import pickle
+import time
+import datetime
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+from torch.optim.lr_scheduler import StepLR
+import numpy as np
+import time
+import argparse
+from tqdm.auto import tqdm
+import pandas as pd
+import argparse
+
+class GPTTrainer:
+ def __init__(self, device, batch_size, block_size, eval_iters, compile=True):
+ self.device = device
+ self.batch_size = batch_size
+ self.block_size = block_size
+ self.eval_iters = eval_iters
+ self.compile = compile
+ self.model = None
+ self.train_data = None
+ self.val_data = None
+ self.test_data = None
+ self.optimizer = None
+ self.scheduler = None
+ self.meta = None
+
+ # Helper functions to load and save data
+ def save_data(self,data, file_path):
+ with open(file_path, 'w') as f:
+ f.write(data)
+
+ def read_data(self,file_path):
+ with open(file_path, 'r') as f:
+ return f.read()
+
+ def load_data(self, data_directory):
+ print(f"Loading data from {data_directory}...\n")
+ # Load meta information
+ with open(os.path.join(data_directory,"meta.pkl"), 'rb') as f:
+ self.meta = pickle.load(f)
+
+ args.vocab_size = self.meta['vocab_size']
+ itos = self.meta['itos']
+ stoi = self.meta['stoi']
+
+ print(f"vocab size: {args.vocab_size:,}")
+ print("all the unique characters:", ''.join(sorted(stoi.keys())))
+
+ # Load data
+ train_data = self.read_data(os.path.join(data_directory, 'train.txt'))
+ val_data = self.read_data(os.path.join(data_directory, 'val.txt'))
+ test_data = self.read_data(os.path.join(data_directory, 'test.txt'))
+
+ # Encode data
+ train_ids = self.encode(train_data)
+ val_ids = self.encode(val_data)
+ test_ids = self.encode(test_data)
+
+ # Save encoded data to bin files, make sure to choose "Files only" on the persistence option of the session so that you don't encode data each time
+ train_ids = np.array(train_ids, dtype=np.uint16)
+ val_ids = np.array(val_ids, dtype=np.uint16)
+ test_ids = np.array(test_ids, dtype=np.uint16)
+
+ train_ids.tofile( 'train.bin')
+ val_ids.tofile( 'val.bin')
+ test_ids.tofile('test.bin')
+
+ print(f"train has {len(train_data):,} tokens")
+ print(f"val has {len(val_data):,} tokens")
+ print(f"test has {len(test_data):,} tokens")
+ print("Encoded data saved as binary files.")
+
+ print(f"Data in tokens: {len(train_data)}")
+ iters4epoch = len(train_data)//(args.batch_size * args.block_size)
+ print(f"Number of iters for one pseudo-epoch : {iters4epoch}")
+ print(f"Number of pseudo-epochs : {args.max_iters / iters4epoch:.2f}")
+
+
+ del(train_ids)
+ del(val_ids)
+ del(test_ids)
+
+
+ self.train_data = np.memmap("train.bin", dtype=np.uint16, mode='r')
+ self.val_data = np.memmap("val.bin", dtype=np.uint16, mode='r')
+ self.test_data = np.memmap("test.bin", dtype=np.uint16, mode='r')
+
+ def encode(self, s):
+ return np.array([self.meta['stoi'][c] for c in s], dtype=np.int32)
+
+ def decode(self, l):
+ return ''.join([self.meta['itos'][i] for i in l])
+
+ def get_batch(self, split):
+ data = self.train_data if split == 'train' else self.val_data
+ ix = torch.randint(len(data) - self.block_size, (self.batch_size,))
+ x = torch.stack([torch.from_numpy((data[i:i+self.block_size]).astype(np.int64)) for i in ix])
+ y = torch.stack([torch.from_numpy((data[i+1:i+1+self.block_size]).astype(np.int64)) for i in ix])
+ x, y = x.to(self.device), y.to(self.device)
+ return x, y
+
+
+ @torch.no_grad()
+ def estimate_loss(self):
+ out = {}
+ self.model.eval()
+ for split in ['train', 'val']:
+ losses = torch.zeros(self.eval_iters)
+ for k in range(self.eval_iters):
+ X, Y = self.get_batch(split)
+ logits, loss = self.model(X, Y)
+ losses[k] = loss.item()
+ out[split] = losses.mean()
+ self.model.train()
+ return out
+
+ @staticmethod
+ def human_readable(num):
+ magnitude = 0
+ while abs(num) >= 1000:
+ magnitude += 1
+ num /= 1000.0
+ return '%.0f%s' % (num, ['', 'K', 'M', 'G', 'T', 'P'][magnitude])
+
+ def load_model(self, model_path):
+ if not os.path.exists(model_path):
+ raise FileNotFoundError(f"Model file '{model_path}' not found.")
+
+ self.model = GPT() # Now correctly using the imported GPT class
+ print("Compiling the model...\n")
+ r = -1
+
+ if self.compile:
+ try:
+ self.model = torch.compile(self.model)
+ except Exception as e:
+ print(f"Compilation failed: {e}")
+
+ checkpoint = torch.load(model_path, map_location=self.device)
+
+ if 'lora_rank' in checkpoint:
+ r = checkpoint['lora_rank']
+ state = checkpoint['state_dict']
+ if r > 0:
+ self.model.activate_lora(r)
+ self.model.load_state_dict(state)
+ else:
+ state_dict = checkpoint
+ state_dict_keys = map(lambda x: x.replace("_orig_mod.", ""), state_dict.keys())
+ state_dict = dict(zip(state_dict_keys, state_dict.values()))
+ self.model.load_state_dict(state_dict)
+
+ self.model = self.model.to(self.device)
+ return r
+
+ def initialize_model(self, model_path, lora_r):
+ if model_path:
+ print("Loading model...\n")
+ r = self.load_model(model_path)
+
+ if r > 0:
+ lora_r = r
+ else:
+ self.model = GPT().to(self.device) # Using the imported GPT class
+ r = -1
+ if self.compile:
+ print("Compiling the model... (takes a ~minute)")
+ self.model = torch.compile(self.model)
+
+ if lora_r > 0 and r < 0:
+ print("Activating LoRA...")
+ self.model.activate_lora(lora_r)
+ self.model = self.model.to(self.device)
+
+ num_parameters = sum(p.numel() for p in self.model.parameters() if p.requires_grad)
+ num_parameters_hr = self.human_readable(num_parameters)
+ print(f'The model has {num_parameters_hr} trainable parameters')
+
+ def setup_optimizer(self, learning_rate, milestones):
+ self.optimizer = torch.optim.AdamW(self.model.parameters(), lr=learning_rate)
+ self.scheduler = torch.optim.lr_scheduler.MultiStepLR(self.optimizer, milestones=milestones, gamma=0.1)
+
+ def train(self, max_iters, eval_interval):
+ now = datetime.datetime.now()
+ date_hour = now.strftime("%Y-%m-%d_%H-%M")
+ start_time = time.time()
+
+ for iter in range(max_iters):
+ if iter % eval_interval == 0:
+ losses = self.estimate_loss()
+ print(f'iter {iter:5d} | train loss {losses["train"]:.4f} | val loss {losses["val"]:.4f}')
+
+ xb, yb = self.get_batch('train')
+ logits, loss = self.model(xb, yb)
+ self.optimizer.zero_grad(set_to_none=True)
+ loss.backward()
+ self.optimizer.step()
+ self.scheduler.step()
+
+ end_time = time.time()
+ print(f'Training time: {(end_time - start_time) / 60:.2f} min')
+
+ return date_hour
+
+ def save_model(self, date_hour):
+ num_parameters = sum(p.numel() for p in self.model.parameters() if p.requires_grad)
+ num_parameters_hr = self.human_readable(num_parameters)
+ model_path = f"./output/{num_parameters_hr}_{date_hour}.pth"
+ checkpoint = {
+ 'lora_rank': self.model.lora_rank if hasattr(self.model, "lora_rank") else -1,
+ 'state_dict': self.model.state_dict()
+ }
+ torch.save(checkpoint, model_path)
+ print(f"Model saved to {model_path}\n")
+ # Evaluate example
+
+ def evaluate_example(self,example):
+ """
+ Evaluate an example using the loaded model.
+ """
+
+ # Encode prompt and prepare for evaluation
+ prompt_text = example[:-1]
+ encoded_example = torch.tensor(self.encode(prompt_text), dtype=torch.long).unsqueeze(0).to(self.device)
+ result_example = example[-1]
+
+ # Generate response from model and extract generated results
+ with torch.no_grad():
+ response = self.decode(self.model.generate(encoded_example, max_new_tokens=1)[0].tolist())
+ generated_results = response[-1]
+
+ return prompt_text, result_example, generated_results
+
+ # Write results to file
+ def write_results_to_file(self,output_file, prompt, real_results, generated_results):
+ df = pd.DataFrame({
+ 'Prompt': prompt,
+ 'Real_Results': real_results,
+ 'Generated_Results': generated_results
+ })
+ df.to_csv(output_file, index=False)
+
+ def evaluate_model(self,examples):
+ # Start evaluation process
+ prompt = []
+ real_results = []
+ generated_results = []
+
+ examples = self.decode(self.test_data).split("\n\n")
+
+ # Iterate through examples and evaluate the model on each one
+ for example in tqdm(examples):
+ prompt_text, real_result, result = self.evaluate_example(example)
+ prompt.append(prompt_text)
+ real_results.append(real_result)
+ generated_results.append(result)
+
+ # Calculate and print accuracy
+ correct_count = sum(1 for real, generated in zip(real_results, generated_results) if real == generated)
+ accuracy = correct_count / len(generated_results)
+ print(f"Accuracy: {accuracy * 100:.2f}%")
+
+ # Store accuracy in a file
+ with open("./output/accuracy.txt", 'w') as f:
+ f.write(f"Accuracy: {accuracy * 100:.2f}%\n")
+
+ # Store predictions in a CSV file
+ self.write_results_to_file("./output/predictions.csv", prompt, real_results, generated_results)
+
+
+class LayerNorm(nn.Module):
+ """ LayerNorm with an optional bias. PyTorch's LayerNorm doesn't support simply bias=False """
+
+ def __init__(self, ndim, bias):
+ super().__init__()
+ self.weight = nn.Parameter(torch.ones(ndim))
+ self.bias = nn.Parameter(torch.zeros(ndim)) if bias else None
+
+ def forward(self, input):
+ return F.layer_norm(input, self.weight.shape, self.weight, self.bias, 1e-5)
+
+class Head(nn.Module):
+ """One head of self-attention."""
+
+ def __init__(self, head_size):
+ super().__init__()
+ self.key = nn.Linear(args.n_embd, head_size, bias=False)
+ self.query = nn.Linear(args.n_embd, head_size, bias=False)
+ self.value = nn.Linear(args.n_embd, head_size, bias=False)
+ self.flash = hasattr(torch.nn.functional, 'scaled_dot_product_attention')
+ self.dropout = nn.Dropout(args.dropout)
+
+ def forward(self, x):
+ B, T, C = x.shape
+ k = self.key(x) # (B, T, head_size)
+ q = self.query(x) # (B, T, head_size)
+ v = self.value(x) # (B, T, head_size)
+
+ # Apply scaled dot-product attention
+ out = torch.nn.functional.scaled_dot_product_attention(
+ q, k, v, attn_mask=None, dropout_p=args.dropout if self.training else 0, is_causal=True
+ )
+
+ return out
+
+
+class MultiHeadAttention(nn.Module):
+ """Multiple heads of self-attention in parallel."""
+
+ def __init__(self, num_heads, head_size):
+ super().__init__()
+ self.heads = nn.ModuleList([Head(head_size) for _ in range(num_heads)])
+ self.proj = nn.Linear(args.n_embd, args.n_embd)
+ self.dropout = nn.Dropout(args.dropout)
+
+ def forward(self, x):
+ # Concatenate the outputs from each head
+ out = torch.cat([h(x) for h in self.heads], dim=-1)
+ out = self.dropout(self.proj(out))
+ return out
+
+class FeedForward(nn.Module):
+ """A simple linear layer followed by a non-linearity."""
+
+ def __init__(self, n_embd):
+ super().__init__()
+ self.net = nn.Sequential(
+ nn.Linear(n_embd, 4 * n_embd, bias=False),
+ nn.GELU(),
+ nn.Linear(4 * n_embd, n_embd, bias=False),
+ nn.Dropout(args.dropout),
+ )
+
+ def forward(self, x):
+ return self.net(x)
+
+class LinearLoRA(nn.Module):
+ def __init__(self, original_layer, rank=8):
+ super().__init__()
+ self.original_layer = original_layer
+ self.original_layer.weight.requires_grad = False
+ self.rank = rank
+
+ self.lora_a = nn.Parameter(torch.randn((original_layer.in_features, rank)))
+ self.lora_b = nn.Parameter(torch.randn((rank, original_layer.out_features)))
+
+ self.reset_parameters()
+
+ def reset_parameters(self):
+ nn.init.kaiming_uniform_(self.lora_a, a=np.sqrt(5))
+ nn.init.zeros_(self.lora_b)
+
+ def forward(self, x):
+ lora_output = x @ self.lora_a @ self.lora_b
+ return self.original_layer(x) + lora_output
+
+class Block(nn.Module):
+ """Transformer block: communication followed by feedforward."""
+
+ def __init__(self, n_embd, n_head):
+ super().__init__()
+ head_size = n_embd // n_head
+ self.sa = MultiHeadAttention(n_head, head_size)
+ self.ffwd = FeedForward(n_embd)
+ self.ln1 = nn.LayerNorm(n_embd, bias=False)
+ self.ln2 = nn.LayerNorm(n_embd, bias=False)
+
+ def forward(self, x):
+ x = x + self.sa(self.ln1(x))
+ x = x + self.ffwd(self.ln2(x))
+ return x
+
+class GPT(nn.Module):
+ """GPT language model."""
+
+ def __init__(self):
+ super().__init__()
+ self.token_embedding_table = nn.Embedding(args.vocab_size, args.n_embd)
+ self.position_embedding_table = nn.Embedding(args.block_size, args.n_embd)
+ self.blocks = nn.Sequential(*[Block(args.n_embd, n_head=args.n_head) for _ in range(args.n_layer)])
+ self.ln_f = nn.LayerNorm(args.n_embd, bias=False)
+ self.lm_head = nn.Linear(args.n_embd, args.vocab_size)
+
+ def forward(self, idx, targets=None):
+ B, T = idx.shape
+
+ # Token and position embeddings
+ tok_emb = self.token_embedding_table(idx) # (B, T, n_embd)
+ pos_emb = self.position_embedding_table(torch.arange(T, device=args.device)) # (T, n_embd)
+ x = tok_emb + pos_emb # (B, T, n_embd)
+ x = self.blocks(x) # (B, T, n_embd)
+ x = self.ln_f(x) # (B, T, n_embd)
+ logits = self.lm_head(x) # (B, T, vocab_size)
+
+ # Compute loss if targets are provided
+ if targets is None:
+ loss = None
+ else:
+ B, T, C = logits.shape
+ logits = logits.view(B * T, C)
+ targets = targets.view(B * T)
+ loss = F.cross_entropy(logits, targets)
+
+ return logits, loss
+
+ def generate(self, idx, max_new_tokens):
+ """Generate new tokens given an initial context `idx`."""
+ for _ in range(max_new_tokens):
+ idx_cond = idx[:, -args.block_size:] # Crop to the last block_size tokens
+ logits, _ = self(idx_cond)
+ logits = logits[:, -1, :] # Focus on the last time step
+ probs = F.softmax(logits, dim=-1) # Convert to probabilities
+ idx_next = torch.multinomial(probs, num_samples=1) # Sample from the distribution
+ idx = torch.cat((idx, idx_next), dim=1) # Append sampled index to the sequence
+ return idx
+
+ def activate_lora(self, r=8, heads_only=False, freeze_others=True):
+ self.lora_rank = r
+ self.replace_multihead_attention_recursion(heads_only)
+ if freeze_others:
+ self.freeze_parameters_except_lora_and_bias()
+
+ def replace_multihead_attention_recursion(self, heads_only=False, model=None):
+ children = self.named_children() if model is None else model.named_children()
+ for name, module in children:
+ if heads_only and name in {"query", "key", "value"}:
+ # Replace with Lora SelfAttention
+ new_layer = LinearLoRA(module, rank=self.lora_rank)
+
+ if model == None:
+ self.__setattr__(name, new_layer)
+ else:
+ setattr(model, name, new_layer)
+ elif isinstance(module, nn.Linear) and not heads_only:
+ new_layer = LinearLoRA(module, rank=self.lora_rank)
+
+ if model == None:
+ self.__setattr__(name, new_layer)
+ else:
+ setattr(model, name, new_layer)
+ else:
+ # Recursive call for child modules
+ self.replace_multihead_attention_recursion(heads_only, model=module)
+
+
+ def freeze_parameters_except_lora_and_bias(self):
+ for name, param in self.named_parameters():
+ is_trainable = (
+ "lora_" in name
+ #(self.train_layer_norms and "LayerNorm" in name)
+ )
+
+ param.requires_grad = is_trainable
+
+
+
+
+
+parser = argparse.ArgumentParser(description="Fine-tune a GPT model")
+parser.add_argument("--device", type=str, default="cuda" if torch.cuda.is_available() else "cpu",
+ help="Device to run the model on (cuda or cpu)")
+parser.add_argument("--batch_size", type=int, default=64,
+ help="Batch size for training")
+parser.add_argument("--block_size", type=int, default=256,
+ help="Block size for input sequences")
+parser.add_argument("--eval_iters", type=int, default=10,
+ help="Number of iterations for evaluation")
+parser.add_argument("--model_path", type=str, default="./model/model.pth",
+ help="Name of the pre-trained model to load")
+parser.add_argument("--lora_r", type=int, default=20,
+ help="LoRA rank (0 to disable)")
+parser.add_argument("--learning-rate", type=float, default=1e-3,
+ help="Learning rate for the optimizer")
+parser.add_argument("--max_iters", type=int, default=10,
+ help="Maximum number of training iterations")
+parser.add_argument("--eval_interval", type=int, default=2000,
+ help="Interval between evaluations")
+parser.add_argument("--input_path", type=str, required=True, default="./data/",
+ help="Path to the input data file")
+parser.add_argument("--dropout", type=float, default=0)
+parser.add_argument("--n_embd", type=int, default=372)
+parser.add_argument("--n_head", type=int, default=6)
+parser.add_argument("--n_layer", type=int, default=6)
+
+
+
+args = parser.parse_args()
+
+args.milestones = [int(args.max_iters * m) for m in [0.7, 0.8, 0.9]]
+args.compile = False
+
+
+# Create trainer instance
+trainer = GPTTrainer(
+ device=torch.device(args.device),
+ batch_size=args.batch_size,
+ block_size=args.block_size,
+ eval_iters=args.eval_iters,
+ compile=args.compile
+)
+
+# Load and process data
+trainer.load_data(args.input_path)
+
+# Initialize model
+trainer.initialize_model(args.model_path, args.lora_r)
+
+# Setup optimizer and scheduler
+trainer.setup_optimizer(args.learning_rate, args.milestones)
+
+# Train the model
+date_hour = trainer.train(args.max_iters, args.eval_interval)
+
+# Save the trained model
+trainer.save_model(date_hour)
+
+trainer.evaluate_model(trainer.test_data)
\ No newline at end of file
diff --git a/tinylm-starter-notebook.ipynb b/tinylm-starter-notebook.ipynb
new file mode 100644
index 0000000..a779101
--- /dev/null
+++ b/tinylm-starter-notebook.ipynb
@@ -0,0 +1 @@
+{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":8996886,"sourceType":"datasetVersion","datasetId":5419152}],"dockerImageVersionId":30747,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import random\nimport os\nimport pickle\nimport time\nimport datetime\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torch.optim.lr_scheduler import StepLR\nimport numpy as np\nimport pandas as pd\nfrom tqdm import tqdm\nimport re","metadata":{"_uuid":"a14f6813-426a-4666-9280-7ed88ebdb85e","_cell_guid":"aa556b17-8ea0-4788-aea8-8d6259526157","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2024-07-20T17:22:00.966528Z","iopub.execute_input":"2024-07-20T17:22:00.966880Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Set the random seed for reproducibility\nseed = 42\ntorch.manual_seed(seed)\nrandom.seed(seed)\nnp.random.seed(seed)\n\n# Set the device to GPU if available, otherwise CPU\ndevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\nprint(f\"Device set to {device}.\")","metadata":{"_uuid":"f10e66ef-f466-4cfc-8ddb-594df92adb45","_cell_guid":"063623b6-121d-4c18-a660-93d2f1be3305","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T14:56:35.876424Z","iopub.execute_input":"2024-07-20T14:56:35.876901Z","iopub.status.idle":"2024-07-20T14:56:35.918570Z","shell.execute_reply.started":"2024-07-20T14:56:35.876871Z","shell.execute_reply":"2024-07-20T14:56:35.917691Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Data Preparation","metadata":{"_uuid":"f61836e4-3f71-432d-8c50-9de1ff2e05e0","_cell_guid":"4776333c-08cd-4127-bea7-d7ec8898df7b","trusted":true}},{"cell_type":"code","source":"# Helper functions to load and save data\ndef save_data(data, file_path):\n with open(file_path, 'w') as f:\n f.write(data)\n\ndef load_data(file_path):\n with open(file_path, 'r') as f:\n return f.read()","metadata":{"_uuid":"0aa1c1b8-a945-4baa-8d46-3a08056a9004","_cell_guid":"fcc4b173-f5e5-4110-b14f-46a8fa6da9ae","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T14:56:35.919649Z","iopub.execute_input":"2024-07-20T14:56:35.919920Z","iopub.status.idle":"2024-07-20T14:56:35.925793Z","shell.execute_reply.started":"2024-07-20T14:56:35.919896Z","shell.execute_reply":"2024-07-20T14:56:35.924714Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Directory where the data is stored\nDATA_DIR = \"/kaggle/input/tinylm-data\"","metadata":{"_uuid":"3da5ca68-e0d7-4aed-b89f-5f2a4ab910d9","_cell_guid":"9731ee3f-b4d1-4b6e-afb2-859c56bef6c6","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T14:56:35.927835Z","iopub.execute_input":"2024-07-20T14:56:35.928144Z","iopub.status.idle":"2024-07-20T14:56:35.934561Z","shell.execute_reply.started":"2024-07-20T14:56:35.928121Z","shell.execute_reply":"2024-07-20T14:56:35.933680Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Attempt to derive vocab_size from the dataset\n\nmeta_path = os.path.join(DATA_DIR, 'meta.pkl')\nvocab_size = None\n\nif os.path.exists(meta_path):\n with open(meta_path, 'rb') as f:\n meta = pickle.load(f)\n vocab_size = meta['vocab_size']\n print(f\"found vocab_size = {vocab_size} (inside {meta_path})\")\nelse:\n print(\"Meta file not found. Please ensure the meta.pkl file is present in the data directory.\")\n\n# Encode and decode functions for character-level Tokenzation \ndef encode(s):\n return [meta['stoi'][c] for c in s]\n\ndef decode(l):\n return ''.join([meta['itos'][i] for i in l])","metadata":{"_uuid":"6d064118-585d-46a9-8f40-f9472fe879b4","_cell_guid":"ddae0037-0f42-425d-a2e9-4238f4c608f2","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T14:56:35.935881Z","iopub.execute_input":"2024-07-20T14:56:35.936315Z","iopub.status.idle":"2024-07-20T14:56:35.954533Z","shell.execute_reply.started":"2024-07-20T14:56:35.936285Z","shell.execute_reply":"2024-07-20T14:56:35.953576Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Load data\ntrain_data = load_data(os.path.join(DATA_DIR, 'train.txt'))\nval_data = load_data(os.path.join(DATA_DIR, 'val.txt'))\ntest_data = load_data(os.path.join(DATA_DIR, 'test.txt'))\n\n# Encode data\ntrain_ids = encode(train_data)\nval_ids = encode(val_data)\ntest_ids = encode(test_data)\n\n# Save encoded data to bin files, make sure to choose \"Files only\" on the persistence option of the session so that you don't encode data each time\ntrain_ids = np.array(train_ids, dtype=np.uint16)\nval_ids = np.array(val_ids, dtype=np.uint16)\ntest_ids = np.array(test_ids, dtype=np.uint16)\n\ntrain_ids.tofile( 'train.bin')\nval_ids.tofile( 'val.bin')\ntest_ids.tofile('test.bin')\n\nprint(\"Encoded data saved as binary files.\")","metadata":{"_uuid":"1b2892b5-a904-4550-a8d6-ae8f51f1841f","_cell_guid":"ff53a3e0-09ab-4396-90d9-cef86df0605b","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T14:56:35.955777Z","iopub.execute_input":"2024-07-20T14:56:35.956201Z","iopub.status.idle":"2024-07-20T14:58:30.560356Z","shell.execute_reply.started":"2024-07-20T14:56:35.956153Z","shell.execute_reply":"2024-07-20T14:58:30.559345Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"del(train_ids)\ndel(val_ids)\ndel(test_ids)","metadata":{"_uuid":"6a2d1ac2-5ef7-441c-9837-050c59120ab9","_cell_guid":"125ce42e-8df9-4094-b0c5-242fcd99a597","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T14:58:30.561546Z","iopub.execute_input":"2024-07-20T14:58:30.561837Z","iopub.status.idle":"2024-07-20T14:58:30.569102Z","shell.execute_reply.started":"2024-07-20T14:58:30.561811Z","shell.execute_reply":"2024-07-20T14:58:30.568232Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Load encoded data\ntrain_data = np.memmap(\"/kaggle/working/train.bin\", dtype=np.uint16, mode='r')\nval_data = np.memmap(\"/kaggle/working/val.bin\", dtype=np.uint16, mode='r')","metadata":{"_uuid":"9cd8ff5a-2170-4c53-be17-02ac7d0cffd9","_cell_guid":"c53f3930-8d16-443d-a5ec-a6926f3f6cf4","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T14:58:30.570357Z","iopub.execute_input":"2024-07-20T14:58:30.570777Z","iopub.status.idle":"2024-07-20T14:58:30.611964Z","shell.execute_reply.started":"2024-07-20T14:58:30.570746Z","shell.execute_reply":"2024-07-20T14:58:30.611224Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Model","metadata":{"_uuid":"f4fc1523-1d72-49db-a3bc-8d521f236993","_cell_guid":"8574d987-cef6-47d1-b889-e8242a0bcd23","trusted":true}},{"cell_type":"code","source":"# Hyperparameters for the GPT model\nblock_size = 256 # Maximum context length\nn_embd = 120 # Embedding dimension\nn_head = 6 # Number of attention heads\nn_layer = 6 # Number of transformer blocks\ndropout = 0 # Dropout rate\nbatch_size = 64 # Batch size for training\nmax_iters = 60000 # Maximum number of iterations\nlearning_rate = 1e-3 # Initial Learning rate value\nmiles = [int(max_iters * m) for m in [0.7, 0.8, 0.9]] # Milestones for learning rate decay as fractions of max_iters\neval_interval = 10000 # Evaluation interval\neval_iters = 500 # Number of iterations for evaluation\n\ncompile = False # requires PyTorch 2.0","metadata":{"_uuid":"1fd63d8c-f842-444c-9dc8-cab3263ae6e4","_cell_guid":"2d4305c5-c1c6-48b0-a048-953a98954854","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T14:58:30.613008Z","iopub.execute_input":"2024-07-20T14:58:30.613362Z","iopub.status.idle":"2024-07-20T14:58:30.626685Z","shell.execute_reply.started":"2024-07-20T14:58:30.613331Z","shell.execute_reply":"2024-07-20T14:58:30.625843Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class LayerNorm(nn.Module):\n \"\"\" LayerNorm but with an optional bias. PyTorch doesn't support simply bias=False \"\"\"\n\n def __init__(self, ndim, bias):\n super().__init__()\n self.weight = nn.Parameter(torch.ones(ndim))\n self.bias = nn.Parameter(torch.zeros(ndim)) if bias else None\n\n def forward(self, input):\n return F.layer_norm(input, self.weight.shape, self.weight, self.bias, 1e-5)\n\nclass Head(nn.Module):\n \"\"\"One head of self-attention.\"\"\"\n\n def __init__(self, head_size):\n super().__init__()\n self.key = nn.Linear(n_embd, head_size, bias=False)\n self.query = nn.Linear(n_embd, head_size, bias=False)\n self.value = nn.Linear(n_embd, head_size, bias=False)\n self.flash = hasattr(torch.nn.functional, 'scaled_dot_product_attention')\n\n self.dropout = nn.Dropout(dropout)\n\n def forward(self, x):\n B,T,C = x.shape\n k = self.key(x) # (B, T, 16)\n q = self.query(x) # (B, T, 16)\n v = self.value(x)\n \n out = torch.nn.functional.scaled_dot_product_attention(q, k, v, attn_mask=None, dropout_p=dropout if self.training else 0, is_causal=True)\n \n return out\n\nclass MultiHeadAttention(nn.Module):\n \"\"\"multiple heads of self-attention in parallel.\"\"\"\n\n def __init__(self, num_heads, head_size):\n super().__init__()\n self.heads = nn.ModuleList([Head(head_size) for _ in range(num_heads)])\n self.proj = nn.Linear(n_embd, n_embd)\n self.dropout = nn.Dropout(dropout)\n \n def forward(self, x):\n out = torch.cat([h(x) for h in self.heads], dim=-1)\n out = self.dropout(self.proj(out))\n return out\n \nclass FeedForward(nn.Module):\n \"\"\" a simple linear layer followed by a non-linearity.\"\"\"\n\n def __init__(self, n_embd):\n super().__init__()\n self.net = nn.Sequential(\n nn.Linear(n_embd, 4 * n_embd, bias=False),\n nn.GELU(),\n nn.Linear( 4 * n_embd, n_embd, bias=False),\n nn.Dropout(dropout),\n )\n\n def forward(self, x):\n return self.net(x)\n \nclass Block(nn.Module):\n \"\"\" Transformer block: communication followed by feedforward.\"\"\"\n\n def __init__(self, n_embd, n_head):\n super().__init__()\n head_size = n_embd // n_head\n self.sa = MultiHeadAttention(n_head, head_size)\n self.ffwd = FeedForward(n_embd)\n self.ln1 = nn.LayerNorm(n_embd, bias=False)\n self.ln2 = nn.LayerNorm(n_embd, bias=False)\n\n def forward(self, x):\n x = x + self.sa(self.ln1(x))\n x = x + self.ffwd(self.ln2(x))\n return x\n\nclass GPT(nn.Module):\n\n def __init__(self):\n super().__init__()\n # each token directly reads off the logits for the next token from a lookup table\n self.token_embedding_table = nn.Embedding(vocab_size, n_embd)\n self.position_embedding_table = nn.Embedding(block_size, n_embd)\n self.blocks = nn.Sequential(*[Block(n_embd, n_head=n_head) for _ in range(n_layer)])\n self.ln_f = nn.LayerNorm(n_embd, bias=False) \n self.lm_head = nn.Linear(n_embd, vocab_size)\n\n def forward(self, idx, targets=None):\n B, T = idx.shape\n\n # idx and targets are both (B,T) tensor of integers\n tok_emb = self.token_embedding_table(idx) # (B,T,C)\n pos_emb = self.position_embedding_table(torch.arange(T, device=device)) # (T,C)\n x = tok_emb + pos_emb # (B,T,C)\n x = self.blocks(x) # (B,T,C)\n x = self.ln_f(x) # (B,T,C)\n logits = self.lm_head(x) # (B,T,vocab_size)\n\n if targets is None:\n loss = None\n else:\n B, T, C = logits.shape\n logits = logits.view(B*T, C)\n targets = targets.view(B*T)\n loss = F.cross_entropy(logits, targets)\n\n return logits, loss\n \n def generate(self, idx, max_new_tokens):\n # idx is (B, T) array of indices in the current context\n for _ in range(max_new_tokens):\n # crop idx to the last block_size tokens\n idx_cond = idx[:, -block_size:] # (B, T)\n # get the predictions\n logits, loss = self(idx_cond)\n # focus only on the last time step\n logits = logits[:, -1, :] # becomes (B, C)\n # apply softmax to get probabilities\n probs = F.softmax(logits, dim=-1) # (B, C)\n # sample from the distribution\n idx_next = torch.multinomial(probs, num_samples=1) # (B, 1)\n # append sampled index to the running sequence\n idx = torch.cat((idx, idx_next), dim=1) # (B, T+1)\n return idx","metadata":{"_uuid":"9c3a2af2-99a7-4657-bb8d-168a3e8dfcfb","_cell_guid":"17ff6e02-86d2-4f49-a384-be8c035377a7","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T14:58:30.630074Z","iopub.execute_input":"2024-07-20T14:58:30.630394Z","iopub.status.idle":"2024-07-20T14:58:30.656067Z","shell.execute_reply.started":"2024-07-20T14:58:30.630370Z","shell.execute_reply":"2024-07-20T14:58:30.655234Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Get random batch of data\ndef get_batch(split):\n data = train_data if split == 'train' else val_data\n ix = torch.randint(len(data) - block_size, (batch_size,))\n x = torch.stack([torch.from_numpy((data[i:i+block_size]).astype(np.int64)) for i in ix])\n y = torch.stack([torch.from_numpy((data[i+1:i+1+block_size]).astype(np.int64)) for i in ix])\n x, y = x.to(device), y.to(device)\n return x, y\n\n# Estimate loss on train and val splits\n@torch.no_grad()\ndef estimate_loss():\n out = {}\n model.eval()\n for split in ['train', 'val']:\n losses = torch.zeros(eval_iters) \n for k in range(eval_iters):\n X, Y = get_batch(split)\n logits, loss = model(X, Y)\n losses[k] = loss.item()\n out[split] = losses.mean()\n model.train()\n return out\n\n\n# Helper function to make large numbers of parameters human-readable\ndef human_readable(num):\n magnitude = 0\n while abs(num) >= 1000:\n magnitude += 1\n num /= 1000.0\n return '%.0f%s' % (num, ['', 'K', 'M', 'G', 'T', 'P'][magnitude])","metadata":{"_uuid":"be441d8d-c18b-4694-b2ff-607aac4b11e6","_cell_guid":"a716f789-f605-42d0-9494-d8927ed09a6f","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T14:58:30.657121Z","iopub.execute_input":"2024-07-20T14:58:30.657474Z","iopub.status.idle":"2024-07-20T14:58:30.670624Z","shell.execute_reply.started":"2024-07-20T14:58:30.657443Z","shell.execute_reply":"2024-07-20T14:58:30.669729Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Initialize model and move it to the device (GPU)\nmodel = GPT()\nm = model.to(device)\nnum_parameters = sum(p.numel() for p in model.parameters() if p.requires_grad)\n\n# compile the model\nif compile:\n print(\"compiling the model... (takes a ~minute)\")\n model = torch.compile(model) \n \nnum_parameters_hr = human_readable(num_parameters)\nprint(f'The model has {num_parameters_hr} trainable parameters')","metadata":{"_uuid":"db1edcb0-7dae-40b8-99f0-3a524bd1311e","_cell_guid":"21de39d0-d298-45ce-a590-c6be400f31e8","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T14:58:30.671622Z","iopub.execute_input":"2024-07-20T14:58:30.671881Z","iopub.status.idle":"2024-07-20T14:58:30.893571Z","shell.execute_reply.started":"2024-07-20T14:58:30.671859Z","shell.execute_reply":"2024-07-20T14:58:30.892594Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Training","metadata":{"_uuid":"8cdf45cc-0d3a-43a9-b10d-5381799a21f2","_cell_guid":"ac1fe251-e0c8-4079-9da4-68aff59262f4","trusted":true}},{"cell_type":"code","source":"# Initialize optimizer\noptimizer = torch.optim.AdamW(model.parameters(), lr=learning_rate)\n\n# Initialize learning rate scheduler\nscheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=miles, gamma=0.1)","metadata":{"_uuid":"45093d41-9498-45e4-b93b-95b0b239c0af","_cell_guid":"e725706a-19a1-4e82-91b1-514dd0488f33","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T14:58:30.894863Z","iopub.execute_input":"2024-07-20T14:58:30.895301Z","iopub.status.idle":"2024-07-20T14:58:32.215917Z","shell.execute_reply.started":"2024-07-20T14:58:30.895264Z","shell.execute_reply":"2024-07-20T14:58:32.215087Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Get current date and hour to get track of experiments\nnow = datetime.datetime.now()\ndate_hour = now.strftime(\"%Y-%m-%d_%H-%M\")\n\n# Train\n# Start training timer\nstart_time = time.time()\n\n# Training loop\nfor iter in range(max_iters):\n\n # evaluate the model on the train and val splits and log the losses\n if iter % eval_interval == 0:\n losses = estimate_loss()\n print(f'iter {iter:5d} | train loss {losses[\"train\"]:.4f} | val loss {losses[\"val\"]:.4f}')\n \n # train the model for one iteration\n xb, yb = get_batch('train')\n\n # forward pass\n logits, loss = model(xb, yb)\n optimizer.zero_grad(set_to_none=True)\n loss.backward()\n optimizer.step()\n\n # Step the scheduler\n \n \n \n \n scheduler.step()\n\n# End training timer\nend_time = time.time()\nprint(f'Training time: {(end_time - start_time) / 60} min')\n\n# Save the trained model\ntorch.save(model.state_dict(), f\"{num_parameters_hr}_{date_hour}.pth\")","metadata":{"_uuid":"534a6c6a-e6b8-4632-8078-86aab93500de","_cell_guid":"76b8e469-893d-4151-a175-99b54dbabe60","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T14:58:32.216993Z","iopub.execute_input":"2024-07-20T14:58:32.217407Z","iopub.status.idle":"2024-07-20T15:28:44.728335Z","shell.execute_reply.started":"2024-07-20T14:58:32.217380Z","shell.execute_reply":"2024-07-20T15:28:44.726717Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Evaluation","metadata":{"_uuid":"facd8250-1fd4-4486-a9a6-f099df266caf","_cell_guid":"e831564c-6b76-489b-98b0-69cad098fdd6","trusted":true}},{"cell_type":"code","source":"test_data = np.memmap('test.bin', dtype=np.uint16, mode='r')","metadata":{"_uuid":"f4e10d4c-a4c8-4e6b-891e-f3d14947adfb","_cell_guid":"d8071f1a-961b-4410-ae36-ba54b5b525d0","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T15:28:53.687568Z","iopub.execute_input":"2024-07-20T15:28:53.688312Z","iopub.status.idle":"2024-07-20T15:28:53.719102Z","shell.execute_reply.started":"2024-07-20T15:28:53.688275Z","shell.execute_reply":"2024-07-20T15:28:53.718217Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Evaluate example\ndef evaluate_example(example, model, max_new_tokens=30):\n \n # Split example and determine maximum new tokens allowed\n splited_example = example.split(\"# output\")\n if not (\"for\" in splited_example[0]):\n max_new_tokens = 22\n # Encode prompt and prepare for evaluation \n encoded_example = torch.tensor(encode(splited_example[0] + \"# output\"), dtype=torch.long).unsqueeze(0).to(device)\n prompt_text = splited_example[0] + \"# output\"\n result_example = splited_example[-1]\n \n # Extract real results from example\n real_results = [float(match.group()) for match in re.finditer(r\"(?<=# )-?\\d+(\\.\\d+)?\", result_example.split('\\n\\n')[0].replace(\"\\n\", \"\"))]\n \n # Generate response from model and extract generated results\n response = decode(model.generate(encoded_example, max_new_tokens=max_new_tokens)[0].tolist())\n splited_response = response.split(\"# output\")\n result_response = splited_response[-1]\n generated_results = [float(match.group()) for match in re.finditer(r\"(?<=# )-?\\d+(\\.\\d+)?\", result_response.split('\\n\\n')[0].replace(\"\\n\", \"\"))]\n\n return prompt_text, real_results, generated_results\n\n\n\n# Write results to file\ndef write_results_to_file(output_file, prompt, real_results, generated_results):\n df = pd.DataFrame({\n 'Prompt': prompt,\n 'Real_Results': real_results,\n 'Generated_Results': generated_results\n })\n df.to_csv(output_file, index=False)","metadata":{"_uuid":"2e9f95ba-ca83-48bc-bb18-8910efc37422","_cell_guid":"f3d6ae4b-e069-43bd-be3f-9e46f19146d3","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T15:31:17.995588Z","iopub.execute_input":"2024-07-20T15:31:17.996005Z","iopub.status.idle":"2024-07-20T15:31:18.006157Z","shell.execute_reply.started":"2024-07-20T15:31:17.995974Z","shell.execute_reply":"2024-07-20T15:31:18.005244Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Evaluation Loop\n\n# Split examples and initialize lists for results\nexamples = decode(test_data).split(\"\\n\\n\")\nexamples = [example for example in examples if example]\n\n# Start evaluation process\nprompt = []\nreal_results = []\ngenerated_results = []\n\n# Iterate through examples and evaluate the model on each one\nfor example in tqdm(examples):\n prompt_text, real_result, result = evaluate_example(example, model)\n prompt.append(prompt_text)\n real_results.append(real_result)\n generated_results.append(result)\n\n# Calculate and print accuracy\ncorrect_count = sum(1 for real, generated in zip(real_results, generated_results) if real == generated)\naccuracy = correct_count / len(generated_results)\nprint(f\"Accuracy: {accuracy * 100:.2f}%\")\n\n# Store accuracy in a file\nwith open(\"accuracy.txt\", 'w') as f:\n f.write(f\"Accuracy: {accuracy * 100:.2f}%\\n\")\n\n# Store predictions in a CSV file\n write_results_to_file(\"predictions.csv\", prompt, real_results, generated_results)","metadata":{"_uuid":"7b21f8fd-2e4c-443b-8120-e0af732bf558","_cell_guid":"2536ece9-1d3c-4373-b308-fd1049f3297f","collapsed":false,"execution":{"iopub.status.busy":"2024-07-20T15:32:25.564254Z","iopub.execute_input":"2024-07-20T15:32:25.564645Z","iopub.status.idle":"2024-07-20T15:32:30.853268Z","shell.execute_reply.started":"2024-07-20T15:32:25.564616Z","shell.execute_reply":"2024-07-20T15:32:30.852339Z"},"jupyter":{"outputs_hidden":false},"trusted":true},"execution_count":null,"outputs":[]}]}
\ No newline at end of file
diff --git a/token-level_code_completion.py b/token-level_code_completion.py
new file mode 100644
index 0000000..4bb6211
--- /dev/null
+++ b/token-level_code_completion.py
@@ -0,0 +1,96 @@
+import os
+import pickle
+import argparse
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+import numpy as np
+import pandas as pd
+from tqdm import tqdm
+import re
+from model import GPT
+
+
+# Argument parsing
+parser = argparse.ArgumentParser(description='Evaluate NanoGPT model on token-level code completion.')
+parser.add_argument('--dataset_dir', type=str, default='data', help='Directory where the dataset is stored')
+parser.add_argument('--model_name', type=str, required=True, help='Name of the pre-trained model (without .pth extension)')
+
+# Parse the command-line arguments
+args = parser.parse_args()
+
+device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
+torch.manual_seed(1337)
+
+
+# Constants for dataset and file paths
+MODEL_FILE = f"models/{args.model_name}.pth"
+ACCURACY_FILE = f"results/{args.model_name}_acc_token-level_code_completion.txt"
+RESULTS_FILE = f"results/{args.model_name}_token-level_code_completion.csv"
+
+
+data_dir = args.dataset_dir
+test_data = np.memmap(os.path.join(data_dir, 'test.bin'), dtype=np.uint16, mode='r')
+
+# attempt to derive vocab_size from the dataset
+meta_path = os.path.join(data_dir, 'meta.pkl')
+meta_vocab_size = None
+if os.path.exists(meta_path):
+ with open(meta_path, 'rb') as f:
+ meta = pickle.load(f)
+ meta_vocab_size = meta['vocab_size']
+ print(f"found vocab_size = {meta_vocab_size} (inside {meta_path})")
+
+stoi = meta['stoi']
+itos = meta['itos']
+encode = lambda s: [stoi[c] for c in s]
+decode = lambda l: ''.join([itos[i] for i in l])
+
+model = GPT()
+print("Compiling model...")
+model = torch.compile(model) # pytorch 2.0
+model.load_state_dict(torch.load(MODEL_FILE))
+m = model.to(device)
+
+examples = decode(test_data).split("\n\n")
+examples = [example for example in examples if example]
+
+correct_predictions = 0
+total_predictions = 0
+
+results = []
+
+for code_snippet in tqdm(examples):
+
+ tokens = torch.tensor(encode(code_snippet), dtype=torch.long).unsqueeze(0).to(device)
+
+ for i in range(1, tokens.shape[1]):
+
+ context = tokens[:, :i]
+ actual_next_token = tokens[:, i].item()
+ predicted_next_token = m.generate(context, max_new_tokens=1)
+ predicted_next_token = predicted_next_token[:, -1].item()
+ is_correct = (predicted_next_token == actual_next_token)
+
+ if is_correct:
+ correct_predictions += 1
+ results.append({
+ 'context': context.cpu(),
+ 'actual_next_token': actual_next_token,
+ 'predicted_next_token': predicted_next_token,
+ 'is_correct': is_correct
+ })
+
+ total_predictions += 1
+
+df = pd.DataFrame(results)
+df.to_csv(RESULTS_FILE, index=False)
+
+
+accuracy = (correct_predictions / total_predictions) * 100
+
+# Store accuracy in a file
+with open(ACCURACY_FILE, 'w') as f:
+ f.write(f"Accuracy: {accuracy:.2f}%\n")
+
+print(accuracy)
\ No newline at end of file
diff --git a/train.py b/train.py
new file mode 100644
index 0000000..37bae77
--- /dev/null
+++ b/train.py
@@ -0,0 +1,183 @@
+import os
+import time
+import datetime
+import pickle
+import argparse
+
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+from torch.optim.lr_scheduler import StepLR
+
+import numpy as np
+import pandas as pd
+from tqdm import tqdm
+
+from model import GPT
+
+# Argument parsing
+parser = argparse.ArgumentParser(description='Training script for NanoGPT model.')
+# Define command-line arguments
+parser.add_argument('--batch_size', type=int, default=64, help='Batch size for training')
+parser.add_argument('--max_iters', type=int, default=35000, help='Maximum number of iterations')
+parser.add_argument('--learning_rate', type=float, default=1e-2, help='Learning rate')
+parser.add_argument('--miles', type=float, nargs='+', default=[0.7, 0.8, 0.9], help='Milestones for learning rate decay as fractions of max_iters')
+parser.add_argument('--eval_interval', type=int, default=10000, help='Evaluation interval')
+parser.add_argument('--eval_iters', type=int, default=500, help='Number of iterations for evaluation')
+parser.add_argument('--data_dir', type=str, default='data', help='Directory where the data is stored')
+
+# Parse the command-line arguments
+args = parser.parse_args()
+
+# Use the parsed arguments
+batch_size = args.batch_size
+max_iters = args.max_iters
+learning_rate = args.learning_rate
+# Calculate milestone iterations based on fractions
+miles = [int(max_iters * m) for m in args.miles]
+eval_interval = args.eval_interval
+eval_iters = args.eval_iters
+data_dir = args.data_dir
+
+# Set directories for data and models
+DATA_DIR = data_dir
+MODELS_DIR = os.path.join(os.path.dirname(__file__), 'models')
+
+# Other settings
+block_size = 256
+device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
+dropout = 0
+compile = True
+
+# wandb settings
+wandb_log = True
+wandb_project = 'TinyLanguageModel'
+
+# For logging purposes
+config_keys = [k for k,v in globals().items() if not k.startswith('_') and isinstance(v, (int, float, bool, str))]
+config = {k: globals()[k] for k in config_keys}
+
+# Set random seed for reproducibility
+torch.manual_seed(1337)
+
+print(f"Loading training data from {DATA_DIR}...\n")
+train_data = np.memmap(os.path.join(DATA_DIR, 'train.bin'), dtype=np.uint16, mode='r')
+val_data = np.memmap(os.path.join(DATA_DIR, 'val.bin'), dtype=np.uint16, mode='r')
+
+# Attempt to derive vocab_size from the dataset
+meta_path = os.path.join(DATA_DIR, 'meta.pkl')
+meta_vocab_size = None
+if os.path.exists(meta_path):
+ with open(meta_path, 'rb') as f:
+ meta = pickle.load(f)
+ meta_vocab_size = meta['vocab_size']
+ print(f"Found vocab_size = {meta_vocab_size} (inside {meta_path})\n")
+
+# Function to get random batch of data
+def get_batch(split):
+ data = train_data if split == 'train' else val_data
+ ix = torch.randint(len(data) - block_size, (batch_size,))
+ x = torch.stack([torch.from_numpy((data[i:i+block_size]).astype(np.int64)) for i in ix])
+ y = torch.stack([torch.from_numpy((data[i+1:i+1+block_size]).astype(np.int64)) for i in ix])
+ x, y = x.to(device), y.to(device)
+ return x, y
+
+# Function to calculate loss on train and validation splits
+@torch.no_grad()
+def estimate_loss():
+ out = {}
+ model.eval()
+ for split in ['train', 'val']:
+ losses = torch.zeros(eval_iters)
+ for k in range(eval_iters):
+ X, Y = get_batch(split)
+ logits, loss = model(X, Y)
+ losses[k] = loss.item()
+ out[split] = losses.mean()
+ model.train()
+ return out
+
+# Initialize model and move it to the device (GPU/CPU)
+print("Initializing the model...\n")
+model = GPT()
+m = model.to(device)
+num_parameters = sum(p.numel() for p in model.parameters() if p.requires_grad)
+
+# Compile the model if enabled
+if compile:
+ print("Compiling the model... (takes a ~minute)\n")
+ try:
+ model = torch.compile(model) # requires PyTorch 2.0
+ except Exception as e:
+ pass
+
+# Helper function to make large numbers of parameters human-readable
+def human_readable(num):
+ magnitude = 0
+ while abs(num) >= 1000:
+ magnitude += 1
+ num /= 1000.0
+ return '%.0f%s' % (num, ['', 'K', 'M', 'G', 'T', 'P'][magnitude])
+
+num_parameters_hr = human_readable(num_parameters)
+print(f'The model has {num_parameters_hr} trainable parameters\n')
+
+# Get current date and time
+now = datetime.datetime.now()
+date_hour = now.strftime("%Y-%m-%d_%H-%M")
+
+# Construct wandb run name
+wandb_run_name = f'TLM_RUN_{num_parameters_hr}_{date_hour}'
+
+# Initialize optimizer
+optimizer = torch.optim.AdamW(model.parameters(), lr=learning_rate)
+
+# Initialize learning rate scheduler
+scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=miles, gamma=0.1)
+
+# Initialize wandb if logging is enabled
+if wandb_log:
+ import wandb
+ wandb.init(project=wandb_project, name=wandb_run_name, config=config)
+ print(f"wandb logging is enabled. Project: {wandb_project}, Run name: {wandb_run_name}\n")
+
+# Start training timer
+start_time = time.time()
+print("Starting training...\n")
+
+# Training loop
+for iter in range(max_iters):
+ # Evaluate the model on the train and val splits and log the losses
+ if iter % eval_interval == 0:
+ losses = estimate_loss()
+ print(f'iter {iter:5d} | train loss {losses["train"]:.4f} | val loss {losses["val"]:.4f}')
+ if wandb_log:
+ wandb.log({
+ "iter": iter,
+ "train/loss": losses['train'],
+ "val/loss": losses['val'],
+ "lr": scheduler.get_last_lr()[0],
+ })
+
+ # Train the model for one iteration
+ xb, yb = get_batch('train')
+
+ # Forward pass
+ logits, loss = model(xb, yb)
+ optimizer.zero_grad(set_to_none=True)
+ loss.backward()
+ optimizer.step()
+
+ # Step the scheduler
+ scheduler.step()
+
+
+
+# End training timer
+end_time = time.time()
+print(f'Training complete! Total time: {(end_time - start_time) / 60:.2f} minutes\n')
+
+# Save the trained model
+model_path = f"{MODELS_DIR}/{num_parameters_hr}_{date_hour}.pth"
+torch.save(model.state_dict(), model_path)
+print(f"Model saved to {model_path}\n")