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/clone_detection_task/README.md b/tasks/clone_detection_task/README.md
new file mode 100644
index 0000000..d45c459
--- /dev/null
+++ b/tasks/clone_detection_task/README.md
@@ -0,0 +1,54 @@
+## Task Overview
+
+This task tests the ability of the tiny-lm on detecting code clones and non-clones, so first it simplifies the code snippets by removing variable initializations and replacing variables in print statements with their corresponding formulas. The simplified code is then executed 150 time and analyzed to identify code clones, which are later used to form pairs of clone and non-clone examples for further usage (FineTuning the Tiny-LM).
+
+## How It Works
+
+1. **Code Generation**:
+ - The project generates code snippets that contain variable initializations, logic, and print statements.
+ - The initial code looks like:
+ ```python
+ b = 6
+ g = 4
+ n = 3
+ o = (g + 1) - (n * g)
+ if (not b < 4):
+ print(o)
+ else:
+ print(b * n)
+ ```
+
+2. **Simplification**:
+ - Using the `simplify_code_levelx.py` script (where `x` refers to the specific level), variable initializations are removed, and the print statements are modified to include the variable's formula instead of the variable itself.
+ - The simplified version of the above code would be:
+ ```python
+ if not b < 4:
+ print(g + 1 - n * g)
+ else:
+ print(b * n)
+ ```
+
+3. **Execution**:
+ - Each simplified code is executed 150 times with random variable initializations using the `code_execution.py` file.
+ - The output of each execution is stored in the `outputs.json` file.
+
+4. **Clone Identification**:
+ - Based on the generated outputs, the `identify_clones.py` script is used to detect clone and non-clone code snippets. The clone pairs are stored in the `clones.json` file.
+
+5. **Pair Formation**:
+ - Each code snippet is paired with other snippets to form clone and non-clone pairs. Each snippet is repeated 4 times—2 times as a clone and 2 times as a non-clone example.
+
+## Files
+
+- `simplify_code_levelx.py`: Script for simplifying code at different levels by removing variable initializations.
+- `code_execution.py`: Executes simplified code snippets and stores the results.
+- `identify_clones.py`: Identifies clones based on execution results and stores them in `clones.json`.
+- `outputs.json`: Stores the outputs from executing the code snippets.
+- `clones.json`: Stores the identified clones for further processing.
+
+## Usage
+
+1. **Generating Code**:
+ Run the `automate.py` script to generate code snippets.
+ ```bash
+ python ./tasks/clone_detection_task/automate.py --num_programs
\ No newline at end of file
diff --git a/tasks/clone_detection_task/automate.py b/tasks/clone_detection_task/automate.py
new file mode 100644
index 0000000..4d9c71e
--- /dev/null
+++ b/tasks/clone_detection_task/automate.py
@@ -0,0 +1,37 @@
+import subprocess
+import sys
+import os
+
+def run_script(script_name, args):
+
+ subprocess.run(['python', script_name] + args, check=True)
+
+def automate_process(programs_num):
+ level_folder = f"all_levels"
+ for i in range(1,5):
+ dataset_file = f"dataset_level{i}.txt"
+ outputs_json = f"outputs_level{i}.json"
+ clones_json = f"clones_level{i}.json"
+ clone_pairs_txt = f"code_snippets_pairs.txt"
+
+ if i != 4:
+ run_script('./tasks/clone_detection_task/generating_data_process/code_generator.py', ['--num_programs', programs_num, f'--level', f'{i}.2', '--filename', dataset_file])
+ else:
+ run_script('./tasks/clone_detection_task/generating_data_process/code_generator.py', ['--num_programs', programs_num, f'--level', f'{i}.1', '--filename', dataset_file])
+
+ run_script('./tasks/clone_detection_task/generating_data_process/code_execution.py', [f'--level', f'{i}',f'--dataset-file', dataset_file, '--output-file', outputs_json])
+
+ run_script('./tasks/clone_detection_task/generating_data_process/identify_clones.py', ['--input-file', outputs_json, '--output-file', clones_json])
+
+ run_script('./tasks/clone_detection_task/generating_data_process/generating_binaries.py', ['--input-clones',clones_json,'--input-snippets', dataset_file, '--output-file', clone_pairs_txt])
+
+ os.remove(dataset_file)
+ os.remove(outputs_json)
+ os.remove(clones_json)
+
+ print(f"Process for all levels completed successfully!")
+
+if __name__ == "__main__":
+
+ programs_num = sys.argv[2]
+ automate_process(programs_num)
diff --git a/tasks/clone_detection_task/automate_generation.sh b/tasks/clone_detection_task/automate_generation.sh
new file mode 100644
index 0000000..8ee2498
--- /dev/null
+++ b/tasks/clone_detection_task/automate_generation.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+# Check if the --num_programs argument is provided
+if [ -z "$1" ] || [ "$1" != "--num_programs" ] || [ -z "$2" ]; then
+ echo "Usage: $0 --num_programs "
+ exit 1
+fi
+
+NUM_PROGRAMS=$2
+
+# Run automate.py with the given number of programs
+python ./tasks/clone_detection_task/automate.py --num_programs $NUM_PROGRAMS
diff --git a/tasks/clone_detection_task/code_pairs_count.py b/tasks/clone_detection_task/code_pairs_count.py
new file mode 100644
index 0000000..d7a6a05
--- /dev/null
+++ b/tasks/clone_detection_task/code_pairs_count.py
@@ -0,0 +1,19 @@
+# Initialize counters
+clone_1_count = 0
+clone_0_count = 0
+
+# Open and read the text file
+with open("tasks/clone_detection_task/code_snippets_pairs.txt", "r") as file:
+ lines = file.readlines()
+
+ # Loop through lines and count occurrences of 'is clone' values
+ for line in lines:
+ line = line.strip() # Remove any whitespace
+ if line == "1":
+ clone_1_count += 1
+ elif line == "0":
+ clone_0_count += 1
+
+# Print the counts
+print(f"Number of 'is clone' 1: {clone_1_count}")
+print(f"Number of 'is clone' 0: {clone_0_count}")
\ No newline at end of file
diff --git a/tasks/clone_detection_task/code_snippets_pairs.txt b/tasks/clone_detection_task/code_snippets_pairs.txt
new file mode 100644
index 0000000..3bfe10c
--- /dev/null
+++ b/tasks/clone_detection_task/code_snippets_pairs.txt
@@ -0,0 +1,4072 @@
+# snippet 1
+y = 4
+y = 9
+m = y * y
+print(m)
+# snippet 2
+c = 10
+print(c * c)
+# is clone
+1
+
+# snippet 1
+x = 0
+h = 18
+print(h)
+# snippet 2
+i = 7
+print(i)
+# is clone
+1
+
+# snippet 1
+x = 0
+h = 18
+print(h)
+# snippet 2
+x = 7
+m = 8
+g = 5
+a = 13
+m = 0 + 10
+print(m)
+# is clone
+1
+
+# snippet 1
+i = 7
+print(i)
+# snippet 2
+x = 7
+m = 8
+g = 5
+a = 13
+m = 0 + 10
+print(m)
+# is clone
+1
+
+# snippet 1
+t = 11
+s = 2
+b = 4
+b = 1
+k = (14 * s)
+print(s * 1)
+# snippet 2
+m = 17
+y = 14
+print(m)
+# is clone
+1
+
+# snippet 1
+t = 11
+s = 2
+b = 4
+b = 1
+k = (14 * s)
+print(s * 1)
+# snippet 2
+s = 17
+u = 14
+x = 10
+print(u)
+# is clone
+1
+
+# snippet 1
+m = 17
+y = 14
+print(m)
+# snippet 2
+s = 17
+u = 14
+x = 10
+print(u)
+# is clone
+1
+
+# snippet 1
+k = 6
+o = 16
+print(k)
+# snippet 2
+i = 13
+v = 10
+m = 8
+w = (0 + m)*(10 * i)
+print(i * 1)
+# is clone
+1
+
+# snippet 1
+k = 6
+o = 16
+print(k)
+# snippet 2
+p = 19
+t = 12
+z = 14
+f = 15
+print(f)
+# is clone
+1
+
+# snippet 1
+i = 13
+v = 10
+m = 8
+w = (0 + m)*(10 * i)
+print(i * 1)
+# snippet 2
+p = 19
+t = 12
+z = 14
+f = 15
+print(f)
+# is clone
+1
+
+# snippet 1
+n = 9
+f = 3
+x = 1 - 12
+print(x)
+# snippet 2
+h = 10
+print(h)
+# is clone
+1
+
+# snippet 1
+n = 9
+f = 3
+x = 1 - 12
+print(x)
+# snippet 2
+g = 18
+print(g)
+# is clone
+1
+
+# snippet 1
+h = 10
+print(h)
+# snippet 2
+g = 18
+print(g)
+# is clone
+1
+
+# snippet 1
+i = 2
+print(i)
+# snippet 2
+n = 18
+print(n)
+# is clone
+1
+
+# snippet 1
+i = 2
+print(i)
+# snippet 2
+k = 16
+i = 2
+print(i)
+# is clone
+1
+
+# snippet 1
+n = 18
+print(n)
+# snippet 2
+k = 16
+i = 2
+print(i)
+# is clone
+1
+
+# snippet 1
+n = 19
+i = 6
+print(i)
+# snippet 2
+l = 19
+z = 12
+print(z)
+# is clone
+1
+
+# snippet 1
+n = 19
+i = 6
+print(i)
+# snippet 2
+c = 1
+h = 3
+d = 10
+f = 18
+print(c)
+# is clone
+1
+
+# snippet 1
+l = 19
+z = 12
+print(z)
+# snippet 2
+c = 1
+h = 3
+d = 10
+f = 18
+print(c)
+# is clone
+1
+
+# snippet 1
+d = 8
+n = 12
+print(d)
+# snippet 2
+r = 17
+x = 10
+t = 11
+print(t)
+# is clone
+1
+
+# snippet 1
+d = 8
+n = 12
+print(d)
+# snippet 2
+o = 2
+q = 13
+print(q)
+# is clone
+1
+
+# snippet 1
+r = 17
+x = 10
+t = 11
+print(t)
+# snippet 2
+o = 2
+q = 13
+print(q)
+# is clone
+1
+
+# snippet 1
+x = 15
+l = 12
+a = 13 / 8
+print(a)
+# snippet 2
+d = 2
+print(d)
+# is clone
+1
+
+# snippet 1
+x = 15
+l = 12
+a = 13 / 8
+print(a)
+# snippet 2
+r = 19
+print(r)
+# is clone
+1
+
+# snippet 1
+d = 2
+print(d)
+# snippet 2
+r = 19
+print(r)
+# is clone
+1
+
+# snippet 1
+z = 10
+f = 14
+p = 19
+b = 2 * z
+print(f - 3)
+# snippet 2
+h = 5
+a = 1
+w = 13
+z = 15
+j = w - z
+print(h - 3)
+# is clone
+1
+
+# snippet 1
+e = 18
+b = 7 / e
+print(e - e)
+# snippet 2
+p = 10
+o = 13
+a = o + 17
+print(o - o)
+# is clone
+1
+
+# snippet 1
+e = 18
+b = 7 / e
+print(e - e)
+# snippet 2
+w = 9
+print(w - w)
+# is clone
+1
+
+# snippet 1
+p = 10
+o = 13
+a = o + 17
+print(o - o)
+# snippet 2
+w = 9
+print(w - w)
+# is clone
+1
+
+# snippet 1
+q = 15
+h = 6
+b = h * q
+print(h - h)
+# snippet 2
+l = 18
+t = (l - 12)/(3 / l)*(12 + l)+(l * l)-(l + 7)
+print(l - l)
+# is clone
+1
+
+# snippet 1
+q = 15
+h = 6
+b = h * q
+print(h - h)
+# snippet 2
+z = 12
+e = (z - z)
+print(e)
+# is clone
+1
+
+# snippet 1
+l = 18
+t = (l - 12)/(3 / l)*(12 + l)+(l * l)-(l + 7)
+print(l - l)
+# snippet 2
+z = 12
+e = (z - z)
+print(e)
+# is clone
+1
+
+# snippet 1
+d = 9
+n = (11 - d)*(17 / d)/(d - d)/(2 - d)*(d / d)
+print(d - 18)
+# snippet 2
+o = 19
+print(o - 18)
+# is clone
+1
+
+# snippet 1
+a = 1
+i = a - a
+print(a / 15)
+# snippet 2
+a = 18
+e = (9 / a)/(7 - a)
+print(a / 15)
+# is clone
+1
+
+# snippet 1
+a = 1
+i = a - a
+print(a / 15)
+# snippet 2
+d = 17
+print(d / 15)
+# is clone
+1
+
+# snippet 1
+a = 18
+e = (9 / a)/(7 - a)
+print(a / 15)
+# snippet 2
+d = 17
+print(d / 15)
+# is clone
+1
+
+# snippet 1
+q = 2
+l = 12 - q
+print(q * 14)
+# snippet 2
+l = 4
+g = (14 * l)
+print(g)
+# is clone
+1
+
+# snippet 1
+m = 8
+print(m / 14)
+# snippet 2
+a = 17
+print(a / 14)
+# is clone
+1
+
+# snippet 1
+q = 15
+i = q / q
+print(q / q)
+# snippet 2
+l = 5
+h = (13 + l)/(l / 11)-(11 - 14)*(l - l)
+print(l / l)
+# is clone
+1
+
+# snippet 1
+q = 15
+i = q / q
+print(q / q)
+# snippet 2
+v = 11
+y = (13 + 8)
+print(v / v)
+# is clone
+1
+
+# snippet 1
+l = 5
+h = (13 + l)/(l / 11)-(11 - 14)*(l - l)
+print(l / l)
+# snippet 2
+v = 11
+y = (13 + 8)
+print(v / v)
+# is clone
+1
+
+# snippet 1
+x = 16
+u = 18
+g = u / u
+print(x / x)
+# snippet 2
+e = 0
+d = 12
+y = 12
+b = (14 / 9)/(y * 12)
+print(d / d)
+# is clone
+1
+
+# snippet 1
+x = 16
+u = 18
+g = u / u
+print(x / x)
+# snippet 2
+h = 4
+print(h / h)
+# is clone
+1
+
+# snippet 1
+e = 0
+d = 12
+y = 12
+b = (14 / 9)/(y * 12)
+print(d / d)
+# snippet 2
+h = 4
+print(h / h)
+# is clone
+1
+
+# snippet 1
+i = 5
+p = 2
+q = i - p
+print(q)
+# snippet 2
+t = 17
+p = 10
+q = 4
+b = (p - t)
+print(b)
+# is clone
+1
+
+# snippet 1
+o = 14
+f = 9
+v = 4
+v = 4
+j = (v - o)
+print(v / 16)
+# snippet 2
+s = 8
+d = 5 - s
+print(s / 16)
+# is clone
+1
+
+# snippet 1
+f = 13
+y = f * f
+print(f + f)
+# snippet 2
+k = 18
+s = 7
+j = (k / s)-(s * 3)/(3 + k)*(k + 15)*(s - 11)
+print(s + s)
+# is clone
+1
+
+# snippet 1
+f = 13
+y = f * f
+print(f + f)
+# snippet 2
+f = 1
+x = (f + f)
+print(x)
+# is clone
+1
+
+# snippet 1
+k = 18
+s = 7
+j = (k / s)-(s * 3)/(3 + k)*(k + 15)*(s - 11)
+print(s + s)
+# snippet 2
+f = 1
+x = (f + f)
+print(x)
+# is clone
+1
+
+# snippet 1
+l = 9
+h = 4 + l
+print(h)
+# snippet 2
+g = 4
+c = 9
+g = 13
+g = 12
+v = (17 + g)-(g - 5)
+print(g + 4)
+# is clone
+1
+
+# snippet 1
+e = 5
+n = 16 / e
+print(e * 16)
+# snippet 2
+a = 13
+n = 13
+p = 1
+a = p * 16
+print(a)
+# is clone
+1
+
+# snippet 1
+y = 4
+y = 9
+m = y * y
+print(m)
+# snippet 2
+x = 0
+h = 18
+print(h)
+# is clone
+0
+
+# snippet 1
+y = 4
+y = 9
+m = y * y
+print(m)
+# snippet 2
+i = 7
+print(i)
+# is clone
+0
+
+# snippet 1
+c = 10
+print(c * c)
+# snippet 2
+x = 0
+h = 18
+print(h)
+# is clone
+0
+
+# snippet 1
+c = 10
+print(c * c)
+# snippet 2
+i = 7
+print(i)
+# is clone
+0
+
+# snippet 1
+x = 7
+m = 8
+g = 5
+a = 13
+m = 0 + 10
+print(m)
+# snippet 2
+z = 10
+f = 14
+p = 19
+b = 2 * z
+print(f - 3)
+# is clone
+0
+
+# snippet 1
+x = 7
+m = 8
+g = 5
+a = 13
+m = 0 + 10
+print(m)
+# snippet 2
+h = 5
+a = 1
+w = 13
+z = 15
+j = w - z
+print(h - 3)
+# is clone
+0
+
+# snippet 1
+t = 11
+s = 2
+b = 4
+b = 1
+k = (14 * s)
+print(s * 1)
+# snippet 2
+z = 10
+f = 14
+p = 19
+b = 2 * z
+print(f - 3)
+# is clone
+0
+
+# snippet 1
+t = 11
+s = 2
+b = 4
+b = 1
+k = (14 * s)
+print(s * 1)
+# snippet 2
+h = 5
+a = 1
+w = 13
+z = 15
+j = w - z
+print(h - 3)
+# is clone
+0
+
+# snippet 1
+m = 17
+y = 14
+print(m)
+# snippet 2
+e = 18
+b = 7 / e
+print(e - e)
+# is clone
+0
+
+# snippet 1
+m = 17
+y = 14
+print(m)
+# snippet 2
+p = 10
+o = 13
+a = o + 17
+print(o - o)
+# is clone
+0
+
+# snippet 1
+s = 17
+u = 14
+x = 10
+print(u)
+# snippet 2
+e = 18
+b = 7 / e
+print(e - e)
+# is clone
+0
+
+# snippet 1
+s = 17
+u = 14
+x = 10
+print(u)
+# snippet 2
+p = 10
+o = 13
+a = o + 17
+print(o - o)
+# is clone
+0
+
+# snippet 1
+k = 6
+o = 16
+print(k)
+# snippet 2
+w = 9
+print(w - w)
+# is clone
+0
+
+# snippet 1
+k = 6
+o = 16
+print(k)
+# snippet 2
+q = 15
+h = 6
+b = h * q
+print(h - h)
+# is clone
+0
+
+# snippet 1
+i = 13
+v = 10
+m = 8
+w = (0 + m)*(10 * i)
+print(i * 1)
+# snippet 2
+w = 9
+print(w - w)
+# is clone
+0
+
+# snippet 1
+i = 13
+v = 10
+m = 8
+w = (0 + m)*(10 * i)
+print(i * 1)
+# snippet 2
+q = 15
+h = 6
+b = h * q
+print(h - h)
+# is clone
+0
+
+# snippet 1
+p = 19
+t = 12
+z = 14
+f = 15
+print(f)
+# snippet 2
+l = 18
+t = (l - 12)/(3 / l)*(12 + l)+(l * l)-(l + 7)
+print(l - l)
+# is clone
+0
+
+# snippet 1
+p = 19
+t = 12
+z = 14
+f = 15
+print(f)
+# snippet 2
+z = 12
+e = (z - z)
+print(e)
+# is clone
+0
+
+# snippet 1
+n = 9
+f = 3
+x = 1 - 12
+print(x)
+# snippet 2
+l = 18
+t = (l - 12)/(3 / l)*(12 + l)+(l * l)-(l + 7)
+print(l - l)
+# is clone
+0
+
+# snippet 1
+n = 9
+f = 3
+x = 1 - 12
+print(x)
+# snippet 2
+z = 12
+e = (z - z)
+print(e)
+# is clone
+0
+
+# snippet 1
+h = 10
+print(h)
+# snippet 2
+b = 10
+print(b - b)
+# is clone
+0
+
+# snippet 1
+g = 18
+print(g)
+# snippet 2
+b = 10
+print(b - b)
+# is clone
+0
+
+# snippet 1
+h = 10
+print(h)
+# snippet 2
+d = 9
+n = (11 - d)*(17 / d)/(d - d)/(2 - d)*(d / d)
+print(d - 18)
+# is clone
+0
+
+# snippet 1
+g = 18
+print(g)
+# snippet 2
+d = 9
+n = (11 - d)*(17 / d)/(d - d)/(2 - d)*(d / d)
+print(d - 18)
+# is clone
+0
+
+# snippet 1
+i = 2
+print(i)
+# snippet 2
+o = 19
+print(o - 18)
+# is clone
+0
+
+# snippet 1
+n = 18
+print(n)
+# snippet 2
+o = 19
+print(o - 18)
+# is clone
+0
+
+# snippet 1
+i = 2
+print(i)
+# snippet 2
+a = 1
+i = a - a
+print(a / 15)
+# is clone
+0
+
+# snippet 1
+n = 18
+print(n)
+# snippet 2
+a = 1
+i = a - a
+print(a / 15)
+# is clone
+0
+
+# snippet 1
+k = 16
+i = 2
+print(i)
+# snippet 2
+a = 18
+e = (9 / a)/(7 - a)
+print(a / 15)
+# is clone
+0
+
+# snippet 1
+k = 16
+i = 2
+print(i)
+# snippet 2
+d = 17
+print(d / 15)
+# is clone
+0
+
+# snippet 1
+n = 19
+i = 6
+print(i)
+# snippet 2
+a = 18
+e = (9 / a)/(7 - a)
+print(a / 15)
+# is clone
+0
+
+# snippet 1
+n = 19
+i = 6
+print(i)
+# snippet 2
+d = 17
+print(d / 15)
+# is clone
+0
+
+# snippet 1
+l = 19
+z = 12
+print(z)
+# snippet 2
+q = 2
+l = 12 - q
+print(q * 14)
+# is clone
+0
+
+# snippet 1
+l = 19
+z = 12
+print(z)
+# snippet 2
+l = 4
+g = (14 * l)
+print(g)
+# is clone
+0
+
+# snippet 1
+c = 1
+h = 3
+d = 10
+f = 18
+print(c)
+# snippet 2
+q = 2
+l = 12 - q
+print(q * 14)
+# is clone
+0
+
+# snippet 1
+c = 1
+h = 3
+d = 10
+f = 18
+print(c)
+# snippet 2
+l = 4
+g = (14 * l)
+print(g)
+# is clone
+0
+
+# snippet 1
+d = 8
+n = 12
+print(d)
+# snippet 2
+m = 8
+print(m / 14)
+# is clone
+0
+
+# snippet 1
+d = 8
+n = 12
+print(d)
+# snippet 2
+a = 17
+print(a / 14)
+# is clone
+0
+
+# snippet 1
+r = 17
+x = 10
+t = 11
+print(t)
+# snippet 2
+m = 8
+print(m / 14)
+# is clone
+0
+
+# snippet 1
+r = 17
+x = 10
+t = 11
+print(t)
+# snippet 2
+a = 17
+print(a / 14)
+# is clone
+0
+
+# snippet 1
+o = 2
+q = 13
+print(q)
+# snippet 2
+q = 15
+i = q / q
+print(q / q)
+# is clone
+0
+
+# snippet 1
+o = 2
+q = 13
+print(q)
+# snippet 2
+l = 5
+h = (13 + l)/(l / 11)-(11 - 14)*(l - l)
+print(l / l)
+# is clone
+0
+
+# snippet 1
+x = 15
+l = 12
+a = 13 / 8
+print(a)
+# snippet 2
+q = 15
+i = q / q
+print(q / q)
+# is clone
+0
+
+# snippet 1
+x = 15
+l = 12
+a = 13 / 8
+print(a)
+# snippet 2
+l = 5
+h = (13 + l)/(l / 11)-(11 - 14)*(l - l)
+print(l / l)
+# is clone
+0
+
+# snippet 1
+d = 2
+print(d)
+# snippet 2
+v = 11
+y = (13 + 8)
+print(v / v)
+# is clone
+0
+
+# snippet 1
+d = 2
+print(d)
+# snippet 2
+x = 16
+u = 18
+g = u / u
+print(x / x)
+# is clone
+0
+
+# snippet 1
+r = 19
+print(r)
+# snippet 2
+v = 11
+y = (13 + 8)
+print(v / v)
+# is clone
+0
+
+# snippet 1
+r = 19
+print(r)
+# snippet 2
+x = 16
+u = 18
+g = u / u
+print(x / x)
+# is clone
+0
+
+# snippet 1
+e = 0
+d = 12
+y = 12
+b = (14 / 9)/(y * 12)
+print(d / d)
+# snippet 2
+i = 5
+p = 2
+q = i - p
+print(q)
+# is clone
+0
+
+# snippet 1
+e = 0
+d = 12
+y = 12
+b = (14 / 9)/(y * 12)
+print(d / d)
+# snippet 2
+t = 17
+p = 10
+q = 4
+b = (p - t)
+print(b)
+# is clone
+0
+
+# snippet 1
+h = 4
+print(h / h)
+# snippet 2
+i = 5
+p = 2
+q = i - p
+print(q)
+# is clone
+0
+
+# snippet 1
+h = 4
+print(h / h)
+# snippet 2
+t = 17
+p = 10
+q = 4
+b = (p - t)
+print(b)
+# is clone
+0
+
+# snippet 1
+o = 14
+f = 9
+v = 4
+v = 4
+j = (v - o)
+print(v / 16)
+# snippet 2
+f = 13
+y = f * f
+print(f + f)
+# is clone
+0
+
+# snippet 1
+o = 14
+f = 9
+v = 4
+v = 4
+j = (v - o)
+print(v / 16)
+# snippet 2
+k = 18
+s = 7
+j = (k / s)-(s * 3)/(3 + k)*(k + 15)*(s - 11)
+print(s + s)
+# is clone
+0
+
+# snippet 1
+s = 8
+d = 5 - s
+print(s / 16)
+# snippet 2
+f = 13
+y = f * f
+print(f + f)
+# is clone
+0
+
+# snippet 1
+s = 8
+d = 5 - s
+print(s / 16)
+# snippet 2
+k = 18
+s = 7
+j = (k / s)-(s * 3)/(3 + k)*(k + 15)*(s - 11)
+print(s + s)
+# is clone
+0
+
+# snippet 1
+f = 1
+x = (f + f)
+print(x)
+# snippet 2
+l = 9
+h = 4 + l
+print(h)
+# is clone
+0
+
+# snippet 1
+f = 1
+x = (f + f)
+print(x)
+# snippet 2
+g = 4
+c = 9
+g = 13
+g = 12
+v = (17 + g)-(g - 5)
+print(g + 4)
+# is clone
+0
+
+# snippet 1
+d = 15
+m = d + d
+print(m)
+# snippet 2
+l = 9
+h = 4 + l
+print(h)
+# is clone
+0
+
+# snippet 1
+d = 15
+m = d + d
+print(m)
+# snippet 2
+g = 4
+c = 9
+g = 13
+g = 12
+v = (17 + g)-(g - 5)
+print(g + 4)
+# is clone
+0
+
+# snippet 1
+r = 0
+j = r - r
+if (not r <= r) :
+ print(r - 18)
+elif not (not r != r) or (r <= r) :
+ print(j)
+else :
+ print(j)
+# snippet 2
+a = 7
+d = a / 9
+if not (a >= a) :
+ print(a + 14)
+else :
+ print(a * 0)
+# is clone
+1
+
+# snippet 1
+r = 0
+j = r - r
+if (not r <= r) :
+ print(r - 18)
+elif not (not r != r) or (r <= r) :
+ print(j)
+else :
+ print(j)
+# snippet 2
+x = 3
+z = x - x
+if ( x >= x) :
+ print(z)
+# is clone
+1
+
+# snippet 1
+a = 7
+d = a / 9
+if not (a >= a) :
+ print(a + 14)
+else :
+ print(a * 0)
+# snippet 2
+x = 3
+z = x - x
+if ( x >= x) :
+ print(z)
+# is clone
+1
+
+# snippet 1
+i = 7
+u = 1 + 7
+if not (i == i) or (i != i) or (i >= i) :
+ print(u)
+else :
+ print(i / i)
+# snippet 2
+z = 2
+j = 1
+if not (z != z) :
+ print(z)
+elif not (j <= 3) :
+ print(j)
+else :
+ print(j)
+# is clone
+1
+
+# snippet 1
+i = 7
+u = 1 + 7
+if not (i == i) or (i != i) or (i >= i) :
+ print(u)
+else :
+ print(i / i)
+# snippet 2
+j = 18
+if (j >= j) :
+ print(j)
+# is clone
+1
+
+# snippet 1
+z = 2
+j = 1
+if not (z != z) :
+ print(z)
+elif not (j <= 3) :
+ print(j)
+else :
+ print(j)
+# snippet 2
+j = 18
+if (j >= j) :
+ print(j)
+# is clone
+1
+
+# snippet 1
+o = 11
+if (not o == 14) and (o > 16) :
+ print(o)
+else :
+ print(o)
+# snippet 2
+f = 11
+n = 7
+v = 3 * 11
+if (not f == f) :
+ print(v)
+elif (n < n) and (n < 13) :
+ print(n / 1)
+else :
+ print(v)
+# is clone
+1
+
+# snippet 1
+o = 11
+if (not o == 14) and (o > 16) :
+ print(o)
+else :
+ print(o)
+# snippet 2
+v = 9
+if (v <= v) :
+ print(v)
+# is clone
+1
+
+# snippet 1
+f = 11
+n = 7
+v = 3 * 11
+if (not f == f) :
+ print(v)
+elif (n < n) and (n < 13) :
+ print(n / 1)
+else :
+ print(v)
+# snippet 2
+v = 9
+if (v <= v) :
+ print(v)
+# is clone
+1
+
+# snippet 1
+f = 9
+r = 18
+if (r > 14) or (r >= 16) and (not f >= f) :
+ print(r)
+else :
+ print(f * 1)
+# snippet 2
+f = 7
+m = 0
+if (m != m) and (f == f) :
+ print(f - 2)
+else :
+ print(m)
+# is clone
+1
+
+# snippet 1
+f = 9
+r = 18
+if (r > 14) or (r >= 16) and (not f >= f) :
+ print(r)
+else :
+ print(f * 1)
+# snippet 2
+t = 1
+o = (0 - 12)
+if (not t >= t) :
+ print(t * 0)
+else :
+ print(o)
+# is clone
+1
+
+# snippet 1
+f = 7
+m = 0
+if (m != m) and (f == f) :
+ print(f - 2)
+else :
+ print(m)
+# snippet 2
+t = 1
+o = (0 - 12)
+if (not t >= t) :
+ print(t * 0)
+else :
+ print(o)
+# is clone
+1
+
+# snippet 1
+j = 10
+y = 16 + 13
+if (j != j) or (not j < j) :
+ print(y)
+# snippet 2
+t = 11
+f = 18 + 9
+if ( t <= t) :
+ print(f)
+elif (not t == 7) :
+ print(f)
+else :
+ print(f)
+# is clone
+1
+
+# snippet 1
+j = 10
+y = 16 + 13
+if (j != j) or (not j < j) :
+ print(y)
+# snippet 2
+p = 11
+d = p + 12
+if ( p > p) :
+ print(d)
+elif not (not p != p) and (p >= p) :
+ print(d)
+else :
+ print(p - 0)
+# is clone
+1
+
+# snippet 1
+t = 11
+f = 18 + 9
+if ( t <= t) :
+ print(f)
+elif (not t == 7) :
+ print(f)
+else :
+ print(f)
+# snippet 2
+p = 11
+d = p + 12
+if ( p > p) :
+ print(d)
+elif not (not p != p) and (p >= p) :
+ print(d)
+else :
+ print(p - 0)
+# is clone
+1
+
+# snippet 1
+e = 14
+o = 10
+l = 15
+r = 14
+z = (r / r)
+if (not o == o) and (o == 2) :
+ print(z)
+# snippet 2
+r = 9
+u = 18
+t = 14
+v = 3
+e = 4
+c = 2
+w = (v + v)/(c * 8)-(u + 0)+(3 + r)-(c / c)
+if (c < c) and (r <= t) :
+ print(w)
+# is clone
+1
+
+# snippet 1
+e = 14
+o = 10
+l = 15
+r = 14
+z = (r / r)
+if (not o == o) and (o == 2) :
+ print(z)
+# snippet 2
+j = 5
+p = 16
+t = (13 / p)+(11 - p)+(7 + p)
+if not (p >= p) :
+ print(p - 11)
+# is clone
+1
+
+# snippet 1
+r = 9
+u = 18
+t = 14
+v = 3
+e = 4
+c = 2
+w = (v + v)/(c * 8)-(u + 0)+(3 + r)-(c / c)
+if (c < c) and (r <= t) :
+ print(w)
+# snippet 2
+j = 5
+p = 16
+t = (13 / p)+(11 - p)+(7 + p)
+if not (p >= p) :
+ print(p - 11)
+# is clone
+1
+
+# snippet 1
+t = 10
+if ( t <= t) or (not t < 1) :
+ print(t * t)
+# snippet 2
+s = 0
+a = s * s
+if not ( s >= s) and (not s <= s) :
+ print(s * 7)
+elif not (s == 13) or (s != 16) or (s != 7) and (not s == 18) and (not s >= s) :
+ print(a)
+else :
+ print(s * 4)
+# is clone
+1
+
+# snippet 1
+t = 10
+if ( t <= t) or (not t < 1) :
+ print(t * t)
+# snippet 2
+d = 4
+v = 7
+q = 13 + v
+if not (v != 19) and (d >= v) and (not d <= v) :
+ print(q)
+else :
+ print(v * v)
+# is clone
+1
+
+# snippet 1
+s = 0
+a = s * s
+if not ( s >= s) and (not s <= s) :
+ print(s * 7)
+elif not (s == 13) or (s != 16) or (s != 7) and (not s == 18) and (not s >= s) :
+ print(a)
+else :
+ print(s * 4)
+# snippet 2
+d = 4
+v = 7
+q = 13 + v
+if not (v != 19) and (d >= v) and (not d <= v) :
+ print(q)
+else :
+ print(v * v)
+# is clone
+1
+
+# snippet 1
+s = 4
+m = (16 * s)*(8 - s)
+if not (s <= s) :
+ print(m)
+else :
+ print(s + s)
+# snippet 2
+j = 6
+t = j + j
+if not (not j >= j) :
+ print(t)
+else :
+ print(t)
+# is clone
+1
+
+# snippet 1
+r = 0
+j = r - r
+if (not r <= r) :
+ print(r - 18)
+elif not (not r != r) or (r <= r) :
+ print(j)
+else :
+ print(j)
+# snippet 2
+i = 7
+u = 1 + 7
+if not (i == i) or (i != i) or (i >= i) :
+ print(u)
+else :
+ print(i / i)
+# is clone
+0
+
+# snippet 1
+r = 0
+j = r - r
+if (not r <= r) :
+ print(r - 18)
+elif not (not r != r) or (r <= r) :
+ print(j)
+else :
+ print(j)
+# snippet 2
+z = 2
+j = 1
+if not (z != z) :
+ print(z)
+elif not (j <= 3) :
+ print(j)
+else :
+ print(j)
+# is clone
+0
+
+# snippet 1
+a = 7
+d = a / 9
+if not (a >= a) :
+ print(a + 14)
+else :
+ print(a * 0)
+# snippet 2
+i = 7
+u = 1 + 7
+if not (i == i) or (i != i) or (i >= i) :
+ print(u)
+else :
+ print(i / i)
+# is clone
+0
+
+# snippet 1
+a = 7
+d = a / 9
+if not (a >= a) :
+ print(a + 14)
+else :
+ print(a * 0)
+# snippet 2
+z = 2
+j = 1
+if not (z != z) :
+ print(z)
+elif not (j <= 3) :
+ print(j)
+else :
+ print(j)
+# is clone
+0
+
+# snippet 1
+x = 3
+z = x - x
+if ( x >= x) :
+ print(z)
+# snippet 2
+j = 18
+if (j >= j) :
+ print(j)
+# is clone
+0
+
+# snippet 1
+x = 3
+z = x - x
+if ( x >= x) :
+ print(z)
+# snippet 2
+o = 11
+if (not o == 14) and (o > 16) :
+ print(o)
+else :
+ print(o)
+# is clone
+0
+
+# snippet 1
+j = 18
+if (j >= j) :
+ print(j)
+# snippet 2
+e = 14
+o = 10
+l = 15
+r = 14
+z = (r / r)
+if (not o == o) and (o == 2) :
+ print(z)
+# is clone
+0
+
+# snippet 1
+o = 11
+if (not o == 14) and (o > 16) :
+ print(o)
+else :
+ print(o)
+# snippet 2
+e = 14
+o = 10
+l = 15
+r = 14
+z = (r / r)
+if (not o == o) and (o == 2) :
+ print(z)
+# is clone
+0
+
+# snippet 1
+f = 11
+n = 7
+v = 3 * 11
+if (not f == f) :
+ print(v)
+elif (n < n) and (n < 13) :
+ print(n / 1)
+else :
+ print(v)
+# snippet 2
+r = 9
+u = 18
+t = 14
+v = 3
+e = 4
+c = 2
+w = (v + v)/(c * 8)-(u + 0)+(3 + r)-(c / c)
+if (c < c) and (r <= t) :
+ print(w)
+# is clone
+0
+
+# snippet 1
+f = 11
+n = 7
+v = 3 * 11
+if (not f == f) :
+ print(v)
+elif (n < n) and (n < 13) :
+ print(n / 1)
+else :
+ print(v)
+# snippet 2
+j = 5
+p = 16
+t = (13 / p)+(11 - p)+(7 + p)
+if not (p >= p) :
+ print(p - 11)
+# is clone
+0
+
+# snippet 1
+v = 9
+if (v <= v) :
+ print(v)
+# snippet 2
+r = 9
+u = 18
+t = 14
+v = 3
+e = 4
+c = 2
+w = (v + v)/(c * 8)-(u + 0)+(3 + r)-(c / c)
+if (c < c) and (r <= t) :
+ print(w)
+# is clone
+0
+
+# snippet 1
+v = 9
+if (v <= v) :
+ print(v)
+# snippet 2
+j = 5
+p = 16
+t = (13 / p)+(11 - p)+(7 + p)
+if not (p >= p) :
+ print(p - 11)
+# is clone
+0
+
+# snippet 1
+f = 9
+r = 18
+if (r > 14) or (r >= 16) and (not f >= f) :
+ print(r)
+else :
+ print(f * 1)
+# snippet 2
+h = 9
+z = 4
+b = 16
+a = (z + z)
+if not ( h <= h) :
+ print(a)
+# is clone
+0
+
+# snippet 1
+f = 7
+m = 0
+if (m != m) and (f == f) :
+ print(f - 2)
+else :
+ print(m)
+# snippet 2
+h = 9
+z = 4
+b = 16
+a = (z + z)
+if not ( h <= h) :
+ print(a)
+# is clone
+0
+
+# snippet 1
+f = 9
+r = 18
+if (r > 14) or (r >= 16) and (not f >= f) :
+ print(r)
+else :
+ print(f * 1)
+# snippet 2
+t = 10
+if ( t <= t) or (not t < 1) :
+ print(t * t)
+# is clone
+0
+
+# snippet 1
+f = 7
+m = 0
+if (m != m) and (f == f) :
+ print(f - 2)
+else :
+ print(m)
+# snippet 2
+t = 10
+if ( t <= t) or (not t < 1) :
+ print(t * t)
+# is clone
+0
+
+# snippet 1
+t = 1
+o = (0 - 12)
+if (not t >= t) :
+ print(t * 0)
+else :
+ print(o)
+# snippet 2
+s = 0
+a = s * s
+if not ( s >= s) and (not s <= s) :
+ print(s * 7)
+elif not (s == 13) or (s != 16) or (s != 7) and (not s == 18) and (not s >= s) :
+ print(a)
+else :
+ print(s * 4)
+# is clone
+0
+
+# snippet 1
+t = 1
+o = (0 - 12)
+if (not t >= t) :
+ print(t * 0)
+else :
+ print(o)
+# snippet 2
+d = 4
+v = 7
+q = 13 + v
+if not (v != 19) and (d >= v) and (not d <= v) :
+ print(q)
+else :
+ print(v * v)
+# is clone
+0
+
+# snippet 1
+j = 10
+y = 16 + 13
+if (j != j) or (not j < j) :
+ print(y)
+# snippet 2
+s = 0
+a = s * s
+if not ( s >= s) and (not s <= s) :
+ print(s * 7)
+elif not (s == 13) or (s != 16) or (s != 7) and (not s == 18) and (not s >= s) :
+ print(a)
+else :
+ print(s * 4)
+# is clone
+0
+
+# snippet 1
+j = 10
+y = 16 + 13
+if (j != j) or (not j < j) :
+ print(y)
+# snippet 2
+d = 4
+v = 7
+q = 13 + v
+if not (v != 19) and (d >= v) and (not d <= v) :
+ print(q)
+else :
+ print(v * v)
+# is clone
+0
+
+# snippet 1
+t = 11
+f = 18 + 9
+if ( t <= t) :
+ print(f)
+elif (not t == 7) :
+ print(f)
+else :
+ print(f)
+# snippet 2
+s = 4
+m = (16 * s)*(8 - s)
+if not (s <= s) :
+ print(m)
+else :
+ print(s + s)
+# is clone
+0
+
+# snippet 1
+t = 11
+f = 18 + 9
+if ( t <= t) :
+ print(f)
+elif (not t == 7) :
+ print(f)
+else :
+ print(f)
+# snippet 2
+j = 6
+t = j + j
+if not (not j >= j) :
+ print(t)
+else :
+ print(t)
+# is clone
+0
+
+# snippet 1
+p = 11
+d = p + 12
+if ( p > p) :
+ print(d)
+elif not (not p != p) and (p >= p) :
+ print(d)
+else :
+ print(p - 0)
+# snippet 2
+s = 4
+m = (16 * s)*(8 - s)
+if not (s <= s) :
+ print(m)
+else :
+ print(s + s)
+# is clone
+0
+
+# snippet 1
+p = 11
+d = p + 12
+if ( p > p) :
+ print(d)
+elif not (not p != p) and (p >= p) :
+ print(d)
+else :
+ print(p - 0)
+# snippet 2
+j = 6
+t = j + j
+if not (not j >= j) :
+ print(t)
+else :
+ print(t)
+# is clone
+0
+
+# snippet 1
+q = 19
+for q in range(2, 5, 2) :
+ print(q)
+# snippet 2
+r = 5
+i = (r - r)/(r + r)*(14 / r)/(10 - 18)
+for r in range(4, 7, 2) :
+ print(r - 2)
+# is clone
+1
+
+# snippet 1
+q = 19
+for q in range(2, 5, 2) :
+ print(q)
+# snippet 2
+i = 10
+for i in range(2, 5, 2) :
+ print(i)
+# is clone
+1
+
+# snippet 1
+r = 5
+i = (r - r)/(r + r)*(14 / r)/(10 - 18)
+for r in range(4, 7, 2) :
+ print(r - 2)
+# snippet 2
+i = 10
+for i in range(2, 5, 2) :
+ print(i)
+# is clone
+1
+
+# snippet 1
+x = 16
+p = 15
+r = 5
+for p in range(6, 11, 2) :
+ print(r)
+# snippet 2
+d = 14
+j = 14
+k = 6
+for d in range(15, 20, 2) :
+ print(j)
+# is clone
+1
+
+# snippet 1
+x = 16
+p = 15
+r = 5
+for p in range(6, 11, 2) :
+ print(r)
+# snippet 2
+y = 14
+k = 9
+h = 9
+for y in range(14, 19, 2) :
+ print(k)
+# is clone
+1
+
+# snippet 1
+d = 14
+j = 14
+k = 6
+for d in range(15, 20, 2) :
+ print(j)
+# snippet 2
+y = 14
+k = 9
+h = 9
+for y in range(14, 19, 2) :
+ print(k)
+# is clone
+1
+
+# snippet 1
+r = 8
+z = 1
+q = 19 * 15
+for r in range(10, 15) :
+ print(q)
+# snippet 2
+s = 7
+z = 8
+for s in range(1, 6) :
+ print(z)
+# is clone
+1
+
+# snippet 1
+r = 8
+z = 1
+q = 19 * 15
+for r in range(10, 15) :
+ print(q)
+# snippet 2
+v = 13
+p = 12
+n = 3
+q = 10
+s = 9
+for p in range(11, 16) :
+ print(q)
+# is clone
+1
+
+# snippet 1
+s = 7
+z = 8
+for s in range(1, 6) :
+ print(z)
+# snippet 2
+v = 13
+p = 12
+n = 3
+q = 10
+s = 9
+for p in range(11, 16) :
+ print(q)
+# is clone
+1
+
+# snippet 1
+h = 15
+r = 13 / 19
+for h in range(1, 6) :
+ print(r)
+# snippet 2
+e = 4
+l = 17
+a = 8
+x = 11 * 10
+for e in range(4, 9) :
+ print(x)
+# is clone
+1
+
+# snippet 1
+t = 11
+t = (6 + t)/(12 * 14)
+for t in range(6, 7) :
+ print(t * t)
+# snippet 2
+h = 19
+for h in range(6, 7, 2) :
+ print(h * h)
+# is clone
+1
+
+# snippet 1
+t = 1
+x = 4 + 4
+for t in range(2, 3, 1) :
+ print(x)
+# snippet 2
+w = 12
+x = 11
+for w in range(9, 10) :
+ print(x)
+# is clone
+1
+
+# snippet 1
+t = 1
+x = 4 + 4
+for t in range(2, 3, 1) :
+ print(x)
+# snippet 2
+g = 18
+i = 5
+i = 16 / 17
+for g in range(8, 9, 1) :
+ print(i)
+# is clone
+1
+
+# snippet 1
+w = 12
+x = 11
+for w in range(9, 10) :
+ print(x)
+# snippet 2
+g = 18
+i = 5
+i = 16 / 17
+for g in range(8, 9, 1) :
+ print(i)
+# is clone
+1
+
+# snippet 1
+s = 12
+u = 1
+k = 1
+for u in range(2, 3) :
+ print(k)
+# snippet 2
+n = 8
+t = 18
+m = 4
+for n in range(3, 4) :
+ print(t)
+# is clone
+1
+
+# snippet 1
+s = 12
+u = 1
+k = 1
+for u in range(2, 3) :
+ print(k)
+# snippet 2
+n = 6
+r = 19
+h = 5
+h = 10
+e = 0
+for e in range(12, 13) :
+ print(h)
+# is clone
+1
+
+# snippet 1
+n = 8
+t = 18
+m = 4
+for n in range(3, 4) :
+ print(t)
+# snippet 2
+n = 6
+r = 19
+h = 5
+h = 10
+e = 0
+for e in range(12, 13) :
+ print(h)
+# is clone
+1
+
+# snippet 1
+d = 5
+x = 7 / 19
+for d in range(6, 7) :
+ print(x)
+# snippet 2
+l = 1
+g = 11
+p = 9
+for g in range(12, 13) :
+ print(l)
+# is clone
+1
+
+# snippet 1
+k = 7
+i = (k / 11)/(k - k)
+for k in range(13, 18, 2) :
+ print(i)
+# snippet 2
+o = 13
+o = 5
+r = (o + 5)/(1 + o)/(o - o)*(o + 5)-(o * o)+(13 * o)-(10 + o)
+for o in range(13, 16, 2) :
+ print(r)
+# is clone
+1
+
+# snippet 1
+w = 19
+s = (w - w)
+for w in range(3, 4) :
+ print(s)
+# snippet 2
+h = 18
+n = h - h
+for h in range(4, 5, 1) :
+ print(n)
+# is clone
+1
+
+# snippet 1
+w = 19
+s = (w - w)
+for w in range(3, 4) :
+ print(s)
+# snippet 2
+q = 1
+q = 9 + 3
+for q in range(10, 11, 2) :
+ print(q - q)
+# is clone
+1
+
+# snippet 1
+h = 18
+n = h - h
+for h in range(4, 5, 1) :
+ print(n)
+# snippet 2
+q = 1
+q = 9 + 3
+for q in range(10, 11, 2) :
+ print(q - q)
+# is clone
+1
+
+# snippet 1
+e = 3
+for e in range(4, 5) :
+ print(e)
+# snippet 2
+d = 7
+u = 14
+v = 3
+for d in range(4, 5) :
+ print(d)
+# is clone
+1
+
+# snippet 1
+r = 17
+x = 10
+c = 19
+for x in range(16, 21, 3) :
+ print(c)
+# snippet 2
+z = 9
+h = 19 - 8
+for z in range(5, 10, 3) :
+ print(h)
+# is clone
+1
+
+# snippet 1
+r = 17
+x = 10
+c = 19
+for x in range(16, 21, 3) :
+ print(c)
+# snippet 2
+o = 3
+v = 9
+o = 14
+v = 14
+for o in range(7, 10, 2) :
+ print(v)
+# is clone
+1
+
+# snippet 1
+z = 9
+h = 19 - 8
+for z in range(5, 10, 3) :
+ print(h)
+# snippet 2
+o = 3
+v = 9
+o = 14
+v = 14
+for o in range(7, 10, 2) :
+ print(v)
+# is clone
+1
+
+# snippet 1
+p = 18
+m = 17
+c = 15
+u = 14
+u = 7 + 5
+for m in range(2, 5, 2) :
+ print(u)
+# snippet 2
+v = 18
+j = 6
+for v in range(14, 17, 2) :
+ print(j)
+# is clone
+1
+
+# snippet 1
+p = 18
+m = 17
+c = 15
+u = 14
+u = 7 + 5
+for m in range(2, 5, 2) :
+ print(u)
+# snippet 2
+y = 6
+f = 17
+h = 14 + 19
+for f in range(10, 13, 2) :
+ print(h)
+# is clone
+1
+
+# snippet 1
+v = 18
+j = 6
+for v in range(14, 17, 2) :
+ print(j)
+# snippet 2
+y = 6
+f = 17
+h = 14 + 19
+for f in range(10, 13, 2) :
+ print(h)
+# is clone
+1
+
+# snippet 1
+d = 16
+l = 6
+j = 17
+l = 3
+l = 0
+f = d * d
+for j in range(9, 14, 3) :
+ print(f)
+# snippet 2
+z = 11
+w = z * z
+for z in range(18, 23, 3) :
+ print(w)
+# is clone
+1
+
+# snippet 1
+h = 12
+for h in range(2, 7, 3) :
+ print(h)
+# snippet 2
+s = 12
+x = 4
+y = (3 - 12)
+for x in range(14, 19, 3) :
+ print(x - 12)
+# is clone
+1
+
+# snippet 1
+g = 11
+w = 17
+c = 12
+l = g / w
+for w in range(14, 19) :
+ print(l)
+# snippet 2
+y = 17
+z = 18
+e = 11
+d = 12 + 0
+for z in range(16, 21) :
+ print(y / e)
+# is clone
+1
+
+# snippet 1
+k = 6
+n = 1
+c = (n / n)
+for k in range(11, 16) :
+ print(c)
+# snippet 2
+q = 6
+v = q / q
+for q in range(7, 12) :
+ print(v)
+# is clone
+1
+
+# snippet 1
+q = 19
+for q in range(2, 5, 2) :
+ print(q)
+# snippet 2
+x = 16
+p = 15
+r = 5
+for p in range(6, 11, 2) :
+ print(r)
+# is clone
+0
+
+# snippet 1
+q = 19
+for q in range(2, 5, 2) :
+ print(q)
+# snippet 2
+d = 14
+j = 14
+k = 6
+for d in range(15, 20, 2) :
+ print(j)
+# is clone
+0
+
+# snippet 1
+r = 5
+i = (r - r)/(r + r)*(14 / r)/(10 - 18)
+for r in range(4, 7, 2) :
+ print(r - 2)
+# snippet 2
+x = 16
+p = 15
+r = 5
+for p in range(6, 11, 2) :
+ print(r)
+# is clone
+0
+
+# snippet 1
+r = 5
+i = (r - r)/(r + r)*(14 / r)/(10 - 18)
+for r in range(4, 7, 2) :
+ print(r - 2)
+# snippet 2
+d = 14
+j = 14
+k = 6
+for d in range(15, 20, 2) :
+ print(j)
+# is clone
+0
+
+# snippet 1
+i = 10
+for i in range(2, 5, 2) :
+ print(i)
+# snippet 2
+y = 14
+k = 9
+h = 9
+for y in range(14, 19, 2) :
+ print(k)
+# is clone
+0
+
+# snippet 1
+i = 10
+for i in range(2, 5, 2) :
+ print(i)
+# snippet 2
+o = 16
+s = (12 + 8)
+for o in range(10, 13) :
+ print(s)
+# is clone
+0
+
+# snippet 1
+y = 14
+k = 9
+h = 9
+for y in range(14, 19, 2) :
+ print(k)
+# snippet 2
+r = 8
+z = 1
+q = 19 * 15
+for r in range(10, 15) :
+ print(q)
+# is clone
+0
+
+# snippet 1
+o = 16
+s = (12 + 8)
+for o in range(10, 13) :
+ print(s)
+# snippet 2
+r = 8
+z = 1
+q = 19 * 15
+for r in range(10, 15) :
+ print(q)
+# is clone
+0
+
+# snippet 1
+s = 7
+z = 8
+for s in range(1, 6) :
+ print(z)
+# snippet 2
+t = 11
+t = (6 + t)/(12 * 14)
+for t in range(6, 7) :
+ print(t * t)
+# is clone
+0
+
+# snippet 1
+s = 7
+z = 8
+for s in range(1, 6) :
+ print(z)
+# snippet 2
+h = 19
+for h in range(6, 7, 2) :
+ print(h * h)
+# is clone
+0
+
+# snippet 1
+v = 13
+p = 12
+n = 3
+q = 10
+s = 9
+for p in range(11, 16) :
+ print(q)
+# snippet 2
+t = 11
+t = (6 + t)/(12 * 14)
+for t in range(6, 7) :
+ print(t * t)
+# is clone
+0
+
+# snippet 1
+v = 13
+p = 12
+n = 3
+q = 10
+s = 9
+for p in range(11, 16) :
+ print(q)
+# snippet 2
+h = 19
+for h in range(6, 7, 2) :
+ print(h * h)
+# is clone
+0
+
+# snippet 1
+h = 15
+r = 13 / 19
+for h in range(1, 6) :
+ print(r)
+# snippet 2
+t = 1
+x = 4 + 4
+for t in range(2, 3, 1) :
+ print(x)
+# is clone
+0
+
+# snippet 1
+h = 15
+r = 13 / 19
+for h in range(1, 6) :
+ print(r)
+# snippet 2
+w = 12
+x = 11
+for w in range(9, 10) :
+ print(x)
+# is clone
+0
+
+# snippet 1
+e = 4
+l = 17
+a = 8
+x = 11 * 10
+for e in range(4, 9) :
+ print(x)
+# snippet 2
+t = 1
+x = 4 + 4
+for t in range(2, 3, 1) :
+ print(x)
+# is clone
+0
+
+# snippet 1
+e = 4
+l = 17
+a = 8
+x = 11 * 10
+for e in range(4, 9) :
+ print(x)
+# snippet 2
+w = 12
+x = 11
+for w in range(9, 10) :
+ print(x)
+# is clone
+0
+
+# snippet 1
+g = 18
+i = 5
+i = 16 / 17
+for g in range(8, 9, 1) :
+ print(i)
+# snippet 2
+k = 7
+i = (k / 11)/(k - k)
+for k in range(13, 18, 2) :
+ print(i)
+# is clone
+0
+
+# snippet 1
+g = 18
+i = 5
+i = 16 / 17
+for g in range(8, 9, 1) :
+ print(i)
+# snippet 2
+o = 13
+o = 5
+r = (o + 5)/(1 + o)/(o - o)*(o + 5)-(o * o)+(13 * o)-(10 + o)
+for o in range(13, 16, 2) :
+ print(r)
+# is clone
+0
+
+# snippet 1
+s = 12
+u = 1
+k = 1
+for u in range(2, 3) :
+ print(k)
+# snippet 2
+k = 7
+i = (k / 11)/(k - k)
+for k in range(13, 18, 2) :
+ print(i)
+# is clone
+0
+
+# snippet 1
+s = 12
+u = 1
+k = 1
+for u in range(2, 3) :
+ print(k)
+# snippet 2
+o = 13
+o = 5
+r = (o + 5)/(1 + o)/(o - o)*(o + 5)-(o * o)+(13 * o)-(10 + o)
+for o in range(13, 16, 2) :
+ print(r)
+# is clone
+0
+
+# snippet 1
+n = 8
+t = 18
+m = 4
+for n in range(3, 4) :
+ print(t)
+# snippet 2
+w = 19
+s = (w - w)
+for w in range(3, 4) :
+ print(s)
+# is clone
+0
+
+# snippet 1
+n = 8
+t = 18
+m = 4
+for n in range(3, 4) :
+ print(t)
+# snippet 2
+h = 18
+n = h - h
+for h in range(4, 5, 1) :
+ print(n)
+# is clone
+0
+
+# snippet 1
+n = 6
+r = 19
+h = 5
+h = 10
+e = 0
+for e in range(12, 13) :
+ print(h)
+# snippet 2
+w = 19
+s = (w - w)
+for w in range(3, 4) :
+ print(s)
+# is clone
+0
+
+# snippet 1
+n = 6
+r = 19
+h = 5
+h = 10
+e = 0
+for e in range(12, 13) :
+ print(h)
+# snippet 2
+h = 18
+n = h - h
+for h in range(4, 5, 1) :
+ print(n)
+# is clone
+0
+
+# snippet 1
+d = 5
+x = 7 / 19
+for d in range(6, 7) :
+ print(x)
+# snippet 2
+q = 1
+q = 9 + 3
+for q in range(10, 11, 2) :
+ print(q - q)
+# is clone
+0
+
+# snippet 1
+d = 5
+x = 7 / 19
+for d in range(6, 7) :
+ print(x)
+# snippet 2
+s = 1
+v = 1
+m = 8
+i = (m / 7)
+for s in range(18, 19, 1) :
+ print(s - s)
+# is clone
+0
+
+# snippet 1
+l = 1
+g = 11
+p = 9
+for g in range(12, 13) :
+ print(l)
+# snippet 2
+q = 1
+q = 9 + 3
+for q in range(10, 11, 2) :
+ print(q - q)
+# is clone
+0
+
+# snippet 1
+l = 1
+g = 11
+p = 9
+for g in range(12, 13) :
+ print(l)
+# snippet 2
+s = 1
+v = 1
+m = 8
+i = (m / 7)
+for s in range(18, 19, 1) :
+ print(s - s)
+# is clone
+0
+
+# snippet 1
+e = 3
+for e in range(4, 5) :
+ print(e)
+# snippet 2
+r = 17
+x = 10
+c = 19
+for x in range(16, 21, 3) :
+ print(c)
+# is clone
+0
+
+# snippet 1
+e = 3
+for e in range(4, 5) :
+ print(e)
+# snippet 2
+z = 9
+h = 19 - 8
+for z in range(5, 10, 3) :
+ print(h)
+# is clone
+0
+
+# snippet 1
+d = 7
+u = 14
+v = 3
+for d in range(4, 5) :
+ print(d)
+# snippet 2
+r = 17
+x = 10
+c = 19
+for x in range(16, 21, 3) :
+ print(c)
+# is clone
+0
+
+# snippet 1
+d = 7
+u = 14
+v = 3
+for d in range(4, 5) :
+ print(d)
+# snippet 2
+z = 9
+h = 19 - 8
+for z in range(5, 10, 3) :
+ print(h)
+# is clone
+0
+
+# snippet 1
+o = 3
+v = 9
+o = 14
+v = 14
+for o in range(7, 10, 2) :
+ print(v)
+# snippet 2
+d = 16
+l = 6
+j = 17
+l = 3
+l = 0
+f = d * d
+for j in range(9, 14, 3) :
+ print(f)
+# is clone
+0
+
+# snippet 1
+o = 3
+v = 9
+o = 14
+v = 14
+for o in range(7, 10, 2) :
+ print(v)
+# snippet 2
+z = 11
+w = z * z
+for z in range(18, 23, 3) :
+ print(w)
+# is clone
+0
+
+# snippet 1
+p = 18
+m = 17
+c = 15
+u = 14
+u = 7 + 5
+for m in range(2, 5, 2) :
+ print(u)
+# snippet 2
+d = 16
+l = 6
+j = 17
+l = 3
+l = 0
+f = d * d
+for j in range(9, 14, 3) :
+ print(f)
+# is clone
+0
+
+# snippet 1
+p = 18
+m = 17
+c = 15
+u = 14
+u = 7 + 5
+for m in range(2, 5, 2) :
+ print(u)
+# snippet 2
+z = 11
+w = z * z
+for z in range(18, 23, 3) :
+ print(w)
+# is clone
+0
+
+# snippet 1
+v = 18
+j = 6
+for v in range(14, 17, 2) :
+ print(j)
+# snippet 2
+h = 12
+for h in range(2, 7, 3) :
+ print(h)
+# is clone
+0
+
+# snippet 1
+v = 18
+j = 6
+for v in range(14, 17, 2) :
+ print(j)
+# snippet 2
+s = 12
+x = 4
+y = (3 - 12)
+for x in range(14, 19, 3) :
+ print(x - 12)
+# is clone
+0
+
+# snippet 1
+y = 6
+f = 17
+h = 14 + 19
+for f in range(10, 13, 2) :
+ print(h)
+# snippet 2
+h = 12
+for h in range(2, 7, 3) :
+ print(h)
+# is clone
+0
+
+# snippet 1
+y = 6
+f = 17
+h = 14 + 19
+for f in range(10, 13, 2) :
+ print(h)
+# snippet 2
+s = 12
+x = 4
+y = (3 - 12)
+for x in range(14, 19, 3) :
+ print(x - 12)
+# is clone
+0
+
+# snippet 1
+g = 11
+w = 17
+c = 12
+l = g / w
+for w in range(14, 19) :
+ print(l)
+# snippet 2
+k = 6
+n = 1
+c = (n / n)
+for k in range(11, 16) :
+ print(c)
+# is clone
+0
+
+# snippet 1
+g = 11
+w = 17
+c = 12
+l = g / w
+for w in range(14, 19) :
+ print(l)
+# snippet 2
+q = 6
+v = q / q
+for q in range(7, 12) :
+ print(v)
+# is clone
+0
+
+# snippet 1
+y = 17
+z = 18
+e = 11
+d = 12 + 0
+for z in range(16, 21) :
+ print(y / e)
+# snippet 2
+k = 6
+n = 1
+c = (n / n)
+for k in range(11, 16) :
+ print(c)
+# is clone
+0
+
+# snippet 1
+y = 17
+z = 18
+e = 11
+d = 12 + 0
+for z in range(16, 21) :
+ print(y / e)
+# snippet 2
+q = 6
+v = q / q
+for q in range(7, 12) :
+ print(v)
+# is clone
+0
+
+# snippet 1
+k = 17
+e = 8
+while e < 13 :
+ print(k)
+ e = e + 3
+# snippet 2
+y = 7
+a = 16
+while y <= 12 :
+ print(a)
+ y = y + 3
+# is clone
+1
+
+# snippet 1
+y = 3
+n = 14
+while y >= 0 :
+ print(y)
+ y = y - 2
+# snippet 2
+t = 2
+while t > -1 :
+ print(t)
+ t = t - 2
+# is clone
+1
+
+# snippet 1
+r = 6
+while r > 1 :
+ print(r)
+ r = r - 3
+# snippet 2
+z = 7
+while z >= 2 :
+ print(z)
+ z = z - 3
+# is clone
+1
+
+# snippet 1
+e = 13
+l = 14
+while e >= 12 :
+ print(l)
+ e = e - 2
+# snippet 2
+f = 1
+j = 14
+while j > 11 :
+ print(f)
+ j = j - 2
+# is clone
+1
+
+# snippet 1
+x = 2
+e = 16
+f = 9
+while f > 8 :
+ print(f)
+ f = f - 2
+# snippet 2
+v = 11
+while v > 8 :
+ print(v)
+ v = v - 2
+# is clone
+1
+
+# snippet 1
+w = 6
+q = 10
+v = 8
+while q <= 11 :
+ print(w)
+ q = q + 2
+# snippet 2
+l = 2
+s = 4
+w = 6
+while w <= 11 :
+ print(l)
+ w = w + 2
+# is clone
+1
+
+# snippet 1
+z = 18
+while z < 21 :
+ print(z)
+ z = z + 2
+# snippet 2
+s = 19
+while s <= 20 :
+ print(s)
+ s = s + 2
+# is clone
+1
+
+# snippet 1
+p = 12
+while p < 13 :
+ print(p)
+ p = p + 1
+# snippet 2
+e = 12
+while e < 13 :
+ print(e)
+ e = e + 1
+# is clone
+1
+
+# snippet 1
+k = 0
+r = 4
+b = 2
+while b < 7 :
+ print(b)
+ b = b + 3
+# snippet 2
+p = 1
+y = 8
+while p <= 6 :
+ print(p)
+ p = p + 3
+# is clone
+1
+
+# snippet 1
+h = 0
+h = 11
+z = 16
+while z > 11 :
+ print(z)
+ z = z - 2
+# snippet 2
+k = 17
+while k >= 12 :
+ print(k)
+ k = k - 2
+# is clone
+1
+
+# snippet 1
+d = 18
+i = 7
+s = 3
+while d >= 15 :
+ print(d)
+ d = d - 2
+# snippet 2
+y = 16
+while y >= 15 :
+ print(y)
+ y = y - 2
+# is clone
+1
+
+# snippet 1
+j = 15
+o = 9
+while o >= 8 :
+ print(j)
+ o = o - 2
+# snippet 2
+r = 15
+c = 12
+t = 16
+while c > 7 :
+ print(r)
+ c = c - 2
+# is clone
+1
+
+# snippet 1
+c = 15
+o = 1
+while c > 10 :
+ print(o)
+ c = c - 2
+# snippet 2
+p = 11
+d = 7
+while p > 10 :
+ print(d)
+ p = p - 2
+# is clone
+1
+
+# snippet 1
+c = 15
+o = 1
+while c > 10 :
+ print(o)
+ c = c - 2
+# snippet 2
+a = 4
+v = 16
+b = 14
+while v >= 11 :
+ print(b)
+ v = v - 2
+# is clone
+1
+
+# snippet 1
+p = 11
+d = 7
+while p > 10 :
+ print(d)
+ p = p - 2
+# snippet 2
+a = 4
+v = 16
+b = 14
+while v >= 11 :
+ print(b)
+ v = v - 2
+# is clone
+1
+
+# snippet 1
+t = 0
+t = 12
+p = 8
+while p > 5 :
+ print(p)
+ p = p - 2
+# snippet 2
+l = 2
+a = 13
+l = 8
+while l > 5 :
+ print(l)
+ l = l - 2
+# is clone
+1
+
+# snippet 1
+y = 4
+e = 17
+while y <= 7 :
+ print(e)
+ y = y + 2
+# snippet 2
+w = 7
+l = 10
+o = 19
+while w < 8 :
+ print(o)
+ w = w + 2
+# is clone
+1
+
+# snippet 1
+y = 4
+e = 17
+while y <= 7 :
+ print(e)
+ y = y + 2
+# snippet 2
+l = 0
+f = 3
+while f < 8 :
+ print(l)
+ f = f + 2
+# is clone
+1
+
+# snippet 1
+w = 7
+l = 10
+o = 19
+while w < 8 :
+ print(o)
+ w = w + 2
+# snippet 2
+l = 0
+f = 3
+while f < 8 :
+ print(l)
+ f = f + 2
+# is clone
+1
+
+# snippet 1
+y = 3
+l = 18
+p = 8
+while p < 11 :
+ print(p)
+ p = p + 2
+# snippet 2
+b = 9
+while b <= 10 :
+ print(b)
+ b = b + 2
+# is clone
+1
+
+# snippet 1
+o = 10
+l = 11
+r = 13
+while l > 6 :
+ print(r)
+ l = l - 3
+# snippet 2
+i = 11
+a = 14
+while i > 6 :
+ print(a)
+ i = i - 3
+# is clone
+1
+
+# snippet 1
+k = 17
+e = 8
+while e < 13 :
+ print(k)
+ e = e + 3
+# snippet 2
+y = 3
+n = 14
+while y >= 0 :
+ print(y)
+ y = y - 2
+# is clone
+0
+
+# snippet 1
+k = 17
+e = 8
+while e < 13 :
+ print(k)
+ e = e + 3
+# snippet 2
+t = 2
+while t > -1 :
+ print(t)
+ t = t - 2
+# is clone
+0
+
+# snippet 1
+y = 7
+a = 16
+while y <= 12 :
+ print(a)
+ y = y + 3
+# snippet 2
+y = 3
+n = 14
+while y >= 0 :
+ print(y)
+ y = y - 2
+# is clone
+0
+
+# snippet 1
+y = 7
+a = 16
+while y <= 12 :
+ print(a)
+ y = y + 3
+# snippet 2
+t = 2
+while t > -1 :
+ print(t)
+ t = t - 2
+# is clone
+0
+
+# snippet 1
+r = 6
+while r > 1 :
+ print(r)
+ r = r - 3
+# snippet 2
+e = 13
+l = 14
+while e >= 12 :
+ print(l)
+ e = e - 2
+# is clone
+0
+
+# snippet 1
+r = 6
+while r > 1 :
+ print(r)
+ r = r - 3
+# snippet 2
+f = 1
+j = 14
+while j > 11 :
+ print(f)
+ j = j - 2
+# is clone
+0
+
+# snippet 1
+z = 7
+while z >= 2 :
+ print(z)
+ z = z - 3
+# snippet 2
+e = 13
+l = 14
+while e >= 12 :
+ print(l)
+ e = e - 2
+# is clone
+0
+
+# snippet 1
+z = 7
+while z >= 2 :
+ print(z)
+ z = z - 3
+# snippet 2
+f = 1
+j = 14
+while j > 11 :
+ print(f)
+ j = j - 2
+# is clone
+0
+
+# snippet 1
+x = 2
+e = 16
+f = 9
+while f > 8 :
+ print(f)
+ f = f - 2
+# snippet 2
+w = 6
+q = 10
+v = 8
+while q <= 11 :
+ print(w)
+ q = q + 2
+# is clone
+0
+
+# snippet 1
+x = 2
+e = 16
+f = 9
+while f > 8 :
+ print(f)
+ f = f - 2
+# snippet 2
+l = 2
+s = 4
+w = 6
+while w <= 11 :
+ print(l)
+ w = w + 2
+# is clone
+0
+
+# snippet 1
+v = 11
+while v > 8 :
+ print(v)
+ v = v - 2
+# snippet 2
+w = 6
+q = 10
+v = 8
+while q <= 11 :
+ print(w)
+ q = q + 2
+# is clone
+0
+
+# snippet 1
+v = 11
+while v > 8 :
+ print(v)
+ v = v - 2
+# snippet 2
+l = 2
+s = 4
+w = 6
+while w <= 11 :
+ print(l)
+ w = w + 2
+# is clone
+0
+
+# snippet 1
+z = 18
+while z < 21 :
+ print(z)
+ z = z + 2
+# snippet 2
+p = 12
+while p < 13 :
+ print(p)
+ p = p + 1
+# is clone
+0
+
+# snippet 1
+z = 18
+while z < 21 :
+ print(z)
+ z = z + 2
+# snippet 2
+e = 12
+while e < 13 :
+ print(e)
+ e = e + 1
+# is clone
+0
+
+# snippet 1
+s = 19
+while s <= 20 :
+ print(s)
+ s = s + 2
+# snippet 2
+p = 12
+while p < 13 :
+ print(p)
+ p = p + 1
+# is clone
+0
+
+# snippet 1
+s = 19
+while s <= 20 :
+ print(s)
+ s = s + 2
+# snippet 2
+e = 12
+while e < 13 :
+ print(e)
+ e = e + 1
+# is clone
+0
+
+# snippet 1
+k = 0
+r = 4
+b = 2
+while b < 7 :
+ print(b)
+ b = b + 3
+# snippet 2
+h = 0
+h = 11
+z = 16
+while z > 11 :
+ print(z)
+ z = z - 2
+# is clone
+0
+
+# snippet 1
+k = 0
+r = 4
+b = 2
+while b < 7 :
+ print(b)
+ b = b + 3
+# snippet 2
+k = 17
+while k >= 12 :
+ print(k)
+ k = k - 2
+# is clone
+0
+
+# snippet 1
+p = 1
+y = 8
+while p <= 6 :
+ print(p)
+ p = p + 3
+# snippet 2
+h = 0
+h = 11
+z = 16
+while z > 11 :
+ print(z)
+ z = z - 2
+# is clone
+0
+
+# snippet 1
+p = 1
+y = 8
+while p <= 6 :
+ print(p)
+ p = p + 3
+# snippet 2
+k = 17
+while k >= 12 :
+ print(k)
+ k = k - 2
+# is clone
+0
+
+# snippet 1
+d = 18
+i = 7
+s = 3
+while d >= 15 :
+ print(d)
+ d = d - 2
+# snippet 2
+j = 15
+o = 9
+while o >= 8 :
+ print(j)
+ o = o - 2
+# is clone
+0
+
+# snippet 1
+d = 18
+i = 7
+s = 3
+while d >= 15 :
+ print(d)
+ d = d - 2
+# snippet 2
+r = 15
+c = 12
+t = 16
+while c > 7 :
+ print(r)
+ c = c - 2
+# is clone
+0
+
+# snippet 1
+y = 16
+while y >= 15 :
+ print(y)
+ y = y - 2
+# snippet 2
+j = 15
+o = 9
+while o >= 8 :
+ print(j)
+ o = o - 2
+# is clone
+0
+
+# snippet 1
+y = 16
+while y >= 15 :
+ print(y)
+ y = y - 2
+# snippet 2
+r = 15
+c = 12
+t = 16
+while c > 7 :
+ print(r)
+ c = c - 2
+# is clone
+0
+
+# snippet 1
+c = 15
+o = 1
+while c > 10 :
+ print(o)
+ c = c - 2
+# snippet 2
+t = 0
+t = 12
+p = 8
+while p > 5 :
+ print(p)
+ p = p - 2
+# is clone
+0
+
+# snippet 1
+c = 15
+o = 1
+while c > 10 :
+ print(o)
+ c = c - 2
+# snippet 2
+l = 2
+a = 13
+l = 8
+while l > 5 :
+ print(l)
+ l = l - 2
+# is clone
+0
+
+# snippet 1
+p = 11
+d = 7
+while p > 10 :
+ print(d)
+ p = p - 2
+# snippet 2
+t = 0
+t = 12
+p = 8
+while p > 5 :
+ print(p)
+ p = p - 2
+# is clone
+0
+
+# snippet 1
+p = 11
+d = 7
+while p > 10 :
+ print(d)
+ p = p - 2
+# snippet 2
+l = 2
+a = 13
+l = 8
+while l > 5 :
+ print(l)
+ l = l - 2
+# is clone
+0
+
+# snippet 1
+a = 4
+v = 16
+b = 14
+while v >= 11 :
+ print(b)
+ v = v - 2
+# snippet 2
+y = 4
+e = 17
+while y <= 7 :
+ print(e)
+ y = y + 2
+# is clone
+0
+
+# snippet 1
+a = 4
+v = 16
+b = 14
+while v >= 11 :
+ print(b)
+ v = v - 2
+# snippet 2
+w = 7
+l = 10
+o = 19
+while w < 8 :
+ print(o)
+ w = w + 2
+# is clone
+0
+
+# snippet 1
+w = 14
+k = 13
+while w >= 11 :
+ print(k)
+ w = w - 2
+# snippet 2
+y = 4
+e = 17
+while y <= 7 :
+ print(e)
+ y = y + 2
+# is clone
+0
+
+# snippet 1
+w = 14
+k = 13
+while w >= 11 :
+ print(k)
+ w = w - 2
+# snippet 2
+w = 7
+l = 10
+o = 19
+while w < 8 :
+ print(o)
+ w = w + 2
+# is clone
+0
+
+# snippet 1
+l = 0
+f = 3
+while f < 8 :
+ print(l)
+ f = f + 2
+# snippet 2
+y = 3
+l = 18
+p = 8
+while p < 11 :
+ print(p)
+ p = p + 2
+# is clone
+0
+
+# snippet 1
+l = 0
+f = 3
+while f < 8 :
+ print(l)
+ f = f + 2
+# snippet 2
+b = 9
+while b <= 10 :
+ print(b)
+ b = b + 2
+# is clone
+0
+
+# snippet 1
+y = 3
+l = 18
+p = 8
+while p < 11 :
+ print(p)
+ p = p + 2
+# snippet 2
+o = 10
+l = 11
+r = 13
+while l > 6 :
+ print(r)
+ l = l - 3
+# is clone
+0
+
+# snippet 1
+b = 9
+while b <= 10 :
+ print(b)
+ b = b + 2
+# snippet 2
+o = 10
+l = 11
+r = 13
+while l > 6 :
+ print(r)
+ l = l - 3
+# is clone
+0
+
diff --git a/tasks/clone_detection_task/finetuning/tinylm-fine-tuning.ipynb b/tasks/clone_detection_task/finetuning/tinylm-fine-tuning.ipynb
new file mode 100644
index 0000000..5de4d64
--- /dev/null
+++ b/tasks/clone_detection_task/finetuning/tinylm-fine-tuning.ipynb
@@ -0,0 +1 @@
+{"cells":[{"cell_type":"code","execution_count":1,"metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2024-09-21T17:35:22.591942Z","iopub.status.busy":"2024-09-21T17:35:22.591390Z","iopub.status.idle":"2024-09-21T17:35:26.107377Z","shell.execute_reply":"2024-09-21T17:35:26.106460Z","shell.execute_reply.started":"2024-09-21T17:35:22.591896Z"},"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":2,"metadata":{"execution":{"iopub.execute_input":"2024-09-21T17:35:26.109879Z","iopub.status.busy":"2024-09-21T17:35:26.109335Z","iopub.status.idle":"2024-09-21T17:35:26.154157Z","shell.execute_reply":"2024-09-21T17:35:26.153051Z","shell.execute_reply.started":"2024-09-21T17:35:26.109834Z"},"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":["Device set to cuda.\n"]}],"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":{},"source":["# Data Preparation"]},{"cell_type":"code","execution_count":3,"metadata":{"execution":{"iopub.execute_input":"2024-09-21T17:35:26.156265Z","iopub.status.busy":"2024-09-21T17:35:26.155584Z","iopub.status.idle":"2024-09-21T17:35:26.161705Z","shell.execute_reply":"2024-09-21T17:35:26.160755Z","shell.execute_reply.started":"2024-09-21T17:35:26.156220Z"},"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":4,"metadata":{"execution":{"iopub.execute_input":"2024-09-21T17:35:26.164357Z","iopub.status.busy":"2024-09-21T17:35:26.164004Z","iopub.status.idle":"2024-09-21T17:35:26.171508Z","shell.execute_reply":"2024-09-21T17:35:26.170644Z","shell.execute_reply.started":"2024-09-21T17:35:26.164314Z"},"trusted":true},"outputs":[],"source":["# Directory where the data is stored\n","DATA_DIR = \"/kaggle/input/all-level-dataset-1-46m\""]},{"cell_type":"code","execution_count":5,"metadata":{"execution":{"iopub.execute_input":"2024-09-21T17:35:26.173180Z","iopub.status.busy":"2024-09-21T17:35:26.172736Z","iopub.status.idle":"2024-09-21T17:35:26.184870Z","shell.execute_reply":"2024-09-21T17:35:26.183993Z","shell.execute_reply.started":"2024-09-21T17:35:26.173138Z"},"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":["found vocab_size = 52 (inside /kaggle/input/all-level-dataset-1-46m/meta.pkl)\n"]}],"source":["# Attempt to derive vocab_size from the dataset\n","\n","meta_path = os.path.join(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":6,"metadata":{"execution":{"iopub.execute_input":"2024-09-21T17:35:26.186192Z","iopub.status.busy":"2024-09-21T17:35:26.185920Z","iopub.status.idle":"2024-09-21T17:35:26.193860Z","shell.execute_reply":"2024-09-21T17:35:26.192864Z","shell.execute_reply.started":"2024-09-21T17:35:26.186162Z"},"trusted":true},"outputs":[],"source":["# Load encoded data\n","train_data = np.memmap(os.path.join(DATA_DIR, 'train.bin'), dtype=np.uint16, mode='r')\n","val_data = np.memmap(os.path.join(DATA_DIR, 'val.bin'), dtype=np.uint16, mode='r')"]},{"cell_type":"code","execution_count":7,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:31:14.261052Z","iopub.status.busy":"2024-09-15T13:31:14.260152Z","iopub.status.idle":"2024-09-15T13:31:14.267116Z","shell.execute_reply":"2024-09-15T13:31:14.266144Z","shell.execute_reply.started":"2024-09-15T13:31:14.261009Z"},"trusted":true},"outputs":[],"source":["# Hyperparameters\n","block_size = 256\n","vocab_size = 53\n","n_embd = 372\n","n_head = 6\n","n_layer = 6\n","dropout = 0\n","batch_size = 64\n","max_iters = 150000\n","learning_rate = 1e-3\n","miles = [int(max_iters * m) for m in [0.7, 0.8, 0.9]]\n","eval_interval = 20000\n","eval_iters = 1000\n","lora_r = 24\n","device = 'cuda' if torch.cuda.is_available() else 'cpu'\n","compile = False"]},{"cell_type":"code","execution_count":8,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:31:15.914961Z","iopub.status.busy":"2024-09-15T13:31:15.914192Z","iopub.status.idle":"2024-09-15T13:31:18.889208Z","shell.execute_reply":"2024-09-15T13:31:18.888287Z","shell.execute_reply.started":"2024-09-15T13:31:15.914923Z"},"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":["Data in tokens: 231163106\n","Number of iters for one pseudo-epoch : 14109\n","Number of pseudo-epochs : 10.63\n"]}],"source":["batch_size = 64 \n","block_size = 256 \n","num_iters = 150000\n","with open('/kaggle/input/all-level-dataset-1-46m/train.txt', 'r') as f:\n"," data = f.read()\n"," print(f\"Data in tokens: {len(data)}\")\n"," iters4epoch = len(data)//(batch_size * block_size)\n"," print(f\"Number of iters for one pseudo-epoch : {iters4epoch}\")\n"," print(f\"Number of pseudo-epochs : {num_iters / iters4epoch:.2f}\")"]},{"cell_type":"code","execution_count":9,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:31:21.883001Z","iopub.status.busy":"2024-09-15T13:31:21.882645Z","iopub.status.idle":"2024-09-15T13:31:21.887668Z","shell.execute_reply":"2024-09-15T13:31:21.886398Z","shell.execute_reply.started":"2024-09-15T13:31:21.882969Z"},"trusted":true},"outputs":[],"source":["model_path = \"/kaggle/working/1777944_2024-09-14_20-51.pth\""]},{"cell_type":"markdown","metadata":{},"source":["# MODEL"]},{"cell_type":"code","execution_count":10,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:31:24.849762Z","iopub.status.busy":"2024-09-15T13:31:24.848987Z","iopub.status.idle":"2024-09-15T13:31:24.976316Z","shell.execute_reply":"2024-09-15T13:31:24.975230Z","shell.execute_reply.started":"2024-09-15T13:31:24.849721Z"},"trusted":true},"outputs":[],"source":["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":11,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:31:24.978256Z","iopub.status.busy":"2024-09-15T13:31:24.977865Z","iopub.status.idle":"2024-09-15T13:31:24.992945Z","shell.execute_reply":"2024-09-15T13:31:24.992052Z","shell.execute_reply.started":"2024-09-15T13:31:24.978218Z"},"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"]},{"cell_type":"code","execution_count":12,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:31:24.994762Z","iopub.status.busy":"2024-09-15T13:31:24.994455Z","iopub.status.idle":"2024-09-15T13:31:25.008917Z","shell.execute_reply":"2024-09-15T13:31:25.008019Z","shell.execute_reply.started":"2024-09-15T13:31:24.994731Z"},"trusted":true},"outputs":[],"source":["def load_model():\n"," \"\"\"\n"," Load pre-trained model based on the provided model name.\n"," \"\"\"\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"]},{"cell_type":"code","execution_count":13,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:31:25.351243Z","iopub.status.busy":"2024-09-15T13:31:25.350410Z","iopub.status.idle":"2024-09-15T13:31:25.871257Z","shell.execute_reply":"2024-09-15T13:31:25.870319Z","shell.execute_reply.started":"2024-09-15T13:31:25.351204Z"},"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":["Loading model...\n","\n","Compiling the model...\n","\n"]},{"name":"stderr","output_type":"stream","text":["/tmp/ipykernel_36/1873016250.py:28: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n"," checkpoint = torch.load(model_path, map_location=device)\n"]},{"name":"stdout","output_type":"stream","text":["The model has 1777944 trainable parameters\n"]}],"source":["# Initialize model and move it to the device (GPU)\n","if len(model_path) > 0:\n"," print(\"Loading model...\\n\")\n"," model, r = load_model()\n"," \n"," if r > 0:\n"," lora_rank = r\n","\n","else:\n"," model = GPT()\n"," m = model.to(device)\n"," r = -1\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 r < 0:\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} trainable parameters')"]},{"cell_type":"markdown","metadata":{},"source":["# TRAINING "]},{"cell_type":"code","execution_count":20,"metadata":{"execution":{"iopub.execute_input":"2024-09-14T20:51:58.474703Z","iopub.status.busy":"2024-09-14T20:51:58.474330Z","iopub.status.idle":"2024-09-14T20:51:58.483383Z","shell.execute_reply":"2024-09-14T20:51:58.482564Z","shell.execute_reply.started":"2024-09-14T20:51:58.474666Z"},"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":{"execution":{"iopub.execute_input":"2024-09-14T20:51:59.169305Z","iopub.status.busy":"2024-09-14T20:51:59.168949Z"},"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":["iter 0 | train loss 11.9293 | val loss 11.9305\n","iter 20000 | train loss 0.4261 | val loss 0.4256\n","iter 40000 | train loss 0.4201 | val loss 0.4198\n","iter 60000 | train loss 0.4178 | val loss 0.4176\n","iter 80000 | train loss 0.4168 | val loss 0.4169\n","iter 100000 | train loss 0.4158 | val loss 0.4168\n","iter 120000 | train loss 0.4122 | val loss 0.4128\n","iter 140000 | train loss 0.4125 | val loss 0.4126\n"]}],"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 pass\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}_{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, f\"{num_parameters}_{date_hour}.pth\")\n","print(f\"Model saved to {num_parameters}_{date_hour}.pth\\n\")\n","\n","losses = estimate_loss()\n","print(f'iter {iter:5d} | train loss {losses[\"train\"]:.4f} | val loss {losses[\"val\"]:.4f}')"]},{"cell_type":"markdown","metadata":{},"source":["# EVALUATION"]},{"cell_type":"code","execution_count":14,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:31:32.911980Z","iopub.status.busy":"2024-09-15T13:31:32.911136Z","iopub.status.idle":"2024-09-15T13:31:32.919244Z","shell.execute_reply":"2024-09-15T13:31:32.918532Z","shell.execute_reply.started":"2024-09-15T13:31:32.911939Z"},"trusted":true},"outputs":[],"source":["test_data = np.memmap(os.path.join(os.path.join(DATA_DIR, 'test.bin')), dtype=np.uint16, mode='r')"]},{"cell_type":"code","execution_count":16,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T10:42:28.256543Z","iopub.status.busy":"2024-09-15T10:42:28.255715Z","iopub.status.idle":"2024-09-15T10:44:12.790061Z","shell.execute_reply":"2024-09-15T10:44:12.789192Z","shell.execute_reply.started":"2024-09-15T10:42:28.256506Z"},"trusted":true},"outputs":[],"source":["examples = decode(test_data).split(\"\\n\\n\")\n","examples = [example for example in examples if example]"]},{"cell_type":"code","execution_count":15,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:31:35.508103Z","iopub.status.busy":"2024-09-15T13:31:35.507234Z","iopub.status.idle":"2024-09-15T13:31:35.514655Z","shell.execute_reply":"2024-09-15T13:31:35.513722Z","shell.execute_reply.started":"2024-09-15T13:31:35.508063Z"},"trusted":true},"outputs":[],"source":["def evaluate_example(example, model, max_new_tokens=4):\n","\n"," # Split example and determine maximum new tokens allowed\n"," splited_example = example.split(\"# is clone\")\n"," encoded_example = torch.tensor(encode(splited_example[0] + \"# is clone\"), dtype=torch.long).unsqueeze(0).to(device)\n"," prompt_text = splited_example[0] + \"# is clone\"\n","\n"," result_example = splited_example[-1]\n"," model.eval()\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(\"# is clone\")\n"," result_response = splited_response[-1]\n"," \n"," return prompt_text, result_example.strip(), result_response.strip()"]},{"cell_type":"code","execution_count":16,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:31:35.854443Z","iopub.status.busy":"2024-09-15T13:31:35.853589Z","iopub.status.idle":"2024-09-15T13:31:35.859665Z","shell.execute_reply":"2024-09-15T13:31:35.858659Z","shell.execute_reply.started":"2024-09-15T13:31:35.854397Z"},"trusted":true},"outputs":[],"source":["# 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":17,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:31:36.520339Z","iopub.status.busy":"2024-09-15T13:31:36.519967Z","iopub.status.idle":"2024-09-15T13:31:36.525751Z","shell.execute_reply":"2024-09-15T13:31:36.524864Z","shell.execute_reply.started":"2024-09-15T13:31:36.520301Z"},"trusted":true},"outputs":[],"source":["def evaluate_pair(real, generated_result):\n"," # Determine the length of the shorter and longer strings\n"," min_len = min(len(real), len(generated_result))\n"," max_len = max(len(real), len(generated_result))\n"," match_count = 0\n"," if real == generated_result:\n"," match_count = 1\n"," ratio = match_count\n"," return ratio"]},{"cell_type":"code","execution_count":36,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T10:47:10.395606Z","iopub.status.busy":"2024-09-15T10:47:10.394863Z","iopub.status.idle":"2024-09-15T10:47:10.400642Z","shell.execute_reply":"2024-09-15T10:47:10.399653Z","shell.execute_reply.started":"2024-09-15T10:47:10.395568Z"},"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":["# snippet 1\n","o = 0\n","d = 2\n","o = 8\n","c = (o + 7)\n","for d in range(0, 10) :\n","\tprint(c)\n","# snippet 2\n","k = 2\n","f = 6\n","l = k + f\n","for f in range(5, 17, 1) :\n","\tprint(l)\n","# is clone\n","0\n"]}],"source":["print(examples[182782])"]},{"cell_type":"code","execution_count":214,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:57:37.972425Z","iopub.status.busy":"2024-09-15T13:57:37.971656Z","iopub.status.idle":"2024-09-15T13:57:37.976509Z","shell.execute_reply":"2024-09-15T13:57:37.975608Z","shell.execute_reply.started":"2024-09-15T13:57:37.972387Z"},"trusted":true},"outputs":[],"source":["# Start evaluation process\n","prompt = []\n","real_results = []\n","generated_results = []"]},{"cell_type":"code","execution_count":215,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:57:38.192269Z","iopub.status.busy":"2024-09-15T13:57:38.191368Z","iopub.status.idle":"2024-09-15T13:57:38.303982Z","shell.execute_reply":"2024-09-15T13:57:38.303107Z","shell.execute_reply.started":"2024-09-15T13:57:38.192231Z"},"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":["100%|██████████| 1/1 [00:00<00:00, 9.79it/s]"]},{"name":"stdout","output_type":"stream","text":["Accuracy: 100.00%\n"]},{"name":"stderr","output_type":"stream","text":["\n"]}],"source":["for i,example in enumerate(tqdm(examples)):\n"," try:\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"," except:\n"," prompt.append(prompt_text)\n"," real_results.append(real_result)\n"," generated_results.append(result)"]},{"cell_type":"code","execution_count":216,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:57:38.497830Z","iopub.status.busy":"2024-09-15T13:57:38.497135Z","iopub.status.idle":"2024-09-15T13:57:38.502452Z","shell.execute_reply":"2024-09-15T13:57:38.501543Z","shell.execute_reply.started":"2024-09-15T13:57:38.497788Z"},"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":["# snippet 1\n","t = 2\n","i = 9\n","g = 7\n","p = (t / i)\n","for i in range(5, 6) :\n","\tprint(i - g)\n","# snippet 2\n","y = 0\n","f = 6\n","z = (f / f)-(y / 1)\n","for y in range(5, 6) :\n","\tprint(y - f)\n","# is clone\n"]}],"source":["print(prompt[0])"]},{"cell_type":"code","execution_count":217,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:57:38.847169Z","iopub.status.busy":"2024-09-15T13:57:38.846426Z","iopub.status.idle":"2024-09-15T13:57:38.851890Z","shell.execute_reply":"2024-09-15T13:57:38.850989Z","shell.execute_reply.started":"2024-09-15T13:57:38.847129Z"},"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":["1\n"]}],"source":["print(real_results[0])"]},{"cell_type":"code","execution_count":218,"metadata":{"execution":{"iopub.execute_input":"2024-09-15T13:57:39.201549Z","iopub.status.busy":"2024-09-15T13:57:39.200830Z","iopub.status.idle":"2024-09-15T13:57:39.206369Z","shell.execute_reply":"2024-09-15T13:57:39.205438Z","shell.execute_reply.started":"2024-09-15T13:57:39.201504Z"},"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":["1\n"]}],"source":["print(generated_results[0])"]},{"cell_type":"code","execution_count":null,"metadata":{"trusted":true},"outputs":[],"source":["score=0\n","\n","for real,generated in zip(real_results, generated_results):\n"," score+=evaluate_pair(real.strip(),generated.strip())\n","accuracy = score / len(generated_results)\n","print(f\"Accuracy: {accuracy * 100:.2f}%\")"]},{"cell_type":"code","execution_count":109,"metadata":{"execution":{"iopub.execute_input":"2024-09-10T03:31:53.895990Z","iopub.status.busy":"2024-09-10T03:31:53.895472Z","iopub.status.idle":"2024-09-10T03:31:54.200170Z","shell.execute_reply":"2024-09-10T03:31:54.199356Z","shell.execute_reply.started":"2024-09-10T03:31:53.895942Z"},"trusted":true},"outputs":[],"source":["# Store accuracy in a file\n","with open(\"accuracy.txt\", 'w') as f:\n"," f.write(f\"Accuracy: {accuracy * 100:.2f}%\\n\")\n","# Store predictions in a CSV file\n","write_results_to_file(f\"aboud_predictions.csv\", prompt, real_results, generated_results)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":[]}],"metadata":{"kaggle":{"accelerator":"gpu","dataSources":[{"datasetId":5597979,"sourceId":9252801,"sourceType":"datasetVersion"},{"datasetId":5701278,"sourceId":9394191,"sourceType":"datasetVersion"}],"dockerImageVersionId":30762,"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.14"}},"nbformat":4,"nbformat_minor":4}
diff --git a/tasks/clone_detection_task/generating_data_process/code_execution.py b/tasks/clone_detection_task/generating_data_process/code_execution.py
new file mode 100644
index 0000000..9db873e
--- /dev/null
+++ b/tasks/clone_detection_task/generating_data_process/code_execution.py
@@ -0,0 +1,96 @@
+import random
+import io
+import os
+import contextlib
+import json
+from tqdm import tqdm
+from used_variables_detector import get_printed_and_condition_variables
+from comparison_check import has_diff_var_comparison
+import argparse
+
+def load_simplifications(file_path):
+ simplifications = []
+ with open(file_path, 'r') as file:
+ lines = file.read()
+ simplification = lines.split('# Simplification')[1:]
+ for i in range(len(simplification)):
+ simplifications.append(simplification[i].split('\n\n\n#')[0])
+ return simplifications
+
+def initialize_random_values(n):
+ return [random.randint(0, n) for _ in range(150)]
+
+def execute_code_with_random_initialization(snippet, variables, num, random_initializations):
+ result_true = has_diff_var_comparison(snippet)
+ if result_true:
+ # Code block when there's a comparison between different variables
+
+ variables = snippet_initialization_code(variables, random_initializations, num, mode='different')
+ code = f"""{variables}
+ {snippet}
+ """
+
+ else:
+ # Code block when there's no comparison between different variables
+ variables = snippet_initialization_code(variables, random_initializations, num, mode='same')
+ code = f"""{variables}
+ {snippet}
+ """
+ # Capture the output of the code
+ output = io.StringIO()
+ try:
+ with contextlib.redirect_stdout(output):
+ exec(code)
+ except Exception as e:
+ return str(e)
+
+ return output.getvalue().strip()
+
+def snippet_initialization_code(variables, random_initializations, num, mode='different'):
+ variables_init = ""
+ if mode == 'different':
+ for i, var in enumerate(variables):
+
+ variables_init += f"{var} = {random_initializations[i][num]}\n"
+ else:
+ for var in variables:
+ variables_init += f"{var} = {random_initializations[0][num]}\n"
+ return variables_init
+
+def main():
+ parser = argparse.ArgumentParser(description='Execute code snippets with random initializations and capture output.')
+ parser.add_argument('--level', required=True, help='Specify the level (e.g: 1, 2, 3)')
+ parser.add_argument('--dataset-file', required=True, help='Path to the dataset file to execute.')
+ parser.add_argument('--output-file', required=True, help='Path to save the JSON output file.')
+
+ args = parser.parse_args()
+
+ simplifications = load_simplifications(args.dataset_file)
+ printed_vars = {}
+ for i, snippet in enumerate(simplifications):
+ printed_vars[i] = get_printed_and_condition_variables(snippet)
+
+ random.seed(42)
+
+ random_initializations = [initialize_random_values(22) for _ in range(10)]
+
+ outputs = {}
+ # Check if the file exists
+ if os.path.exists(args.output_file):
+ with open(args.output_file, 'r') as f:
+ outputs = json.load(f)
+
+ for i in tqdm(range(len(simplifications))):
+ output = []
+ for num in range(150): # Each code will be executed 150 time
+ output.append(execute_code_with_random_initialization(simplifications[i], list(printed_vars[i]), num, random_initializations))
+ outputs[i] = output
+
+
+ with open(args.output_file, "w") as write_file:
+ json.dump(outputs, write_file)
+
+ print(f'The outputs of the simplified programs are stored in {args.output_file}')
+
+if __name__ == "__main__":
+ main()
diff --git a/tasks/clone_detection_task/generating_data_process/code_generator.py b/tasks/clone_detection_task/generating_data_process/code_generator.py
new file mode 100644
index 0000000..860726f
--- /dev/null
+++ b/tasks/clone_detection_task/generating_data_process/code_generator.py
@@ -0,0 +1,393 @@
+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 importlib
+
+
+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", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" ],
+ "DIGIT": [str(i) for i in range(20)],
+
+ # 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"],
+
+
+ # While Loops
+
+ # Definitions for relational operators
+ "RELATIONAL_OPERATOR_LESS": [ "<", "<="],
+ "RELATIONAL_OPERATOR_GREATER": [">", ">="],
+
+ # Less than or equal conditions
+ "CONDITION_EXPRESSION_LESS": [
+ "EXPRESSION_IDENTIFIER_WHILE SPACE RELATIONAL_OPERATOR_LESS SPACE FINAL_LESS"
+ ],
+
+ # Greater than or equal conditions
+ "CONDITION_EXPRESSION_GREATER": [
+ "EXPRESSION_IDENTIFIER_WHILE SPACE RELATIONAL_OPERATOR_GREATER SPACE FINAL_GREATER"
+ ],
+
+ # While
+ "WHILE_HEADER_LESS": ["WHILE SPACE CONDITION_EXPRESSION_LESS SPACE COLON NEW_LINE"],
+ "WHILE_LOOP_LESS": ["WHILE_HEADER_LESS TAB_INDENT DISPLAY NEW_LINE TAB_INDENT UPDATE_LESS"],
+ "UPDATE_LESS": ["WHILE_IDENTIFIER SPACE EQUALS SPACE WHILE_IDENTIFIER SPACE + SPACE STEP"],
+
+ "WHILE_HEADER_GREATER": ["WHILE SPACE CONDITION_EXPRESSION_GREATER SPACE COLON NEW_LINE"],
+ "WHILE_LOOP_GREATER": ["WHILE_HEADER_GREATER TAB_INDENT DISPLAY NEW_LINE TAB_INDENT UPDATE_GREATER"],
+ "UPDATE_GREATER": ["WHILE_IDENTIFIER SPACE EQUALS SPACE WHILE_IDENTIFIER SPACE - SPACE STEP"],
+
+ # 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"],
+
+ "LEVEL4.1": ["IDENTIFIER_INITIALIZATION WHILE_LOOP_LESS", "IDENTIFIER_INITIALIZATION WHILE_LOOP_GREATER"],
+
+ "ALL": ["LEVEL1.1", "LEVEL1.2", "LEVEL2.1", "LEVEL2.2", "LEVEL3.1", "LEVEL3.2", "LEVEL4.1"],
+
+
+ }
+
+
+
+
+ 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 (dict): Dictionary of assigned identifiers and their values.
+ - 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":
+ variable_name = generated_symbols[0]
+ variable_value = generated_symbols[4]
+ assigned_identifiers[variable_name] = variable_value
+ # 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)
+
+
+ if symbol == "WHILE_IDENTIFIER":
+
+ return for_init_step.get("initial_var", "*")
+
+ elif (symbol == "FINAL") or (symbol == "FINAL_LESS"):
+
+ 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 == "FINAL_GREATER":
+
+ 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 = int(initial_value) - step_value * execution_count + 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.keys())) if assigned_identifiers else random.choice(self.cfg_rules["DIGIT"])
+ return identifier
+
+ if symbol == "EXPRESSION_IDENTIFIER_WHILE":
+
+ initial_var = random.choice(tuple(assigned_identifiers.keys())) if assigned_identifiers else random.choice(self.cfg_rules["DIGIT"])
+ for_init_step["initial_var"] = initial_var
+ for_init_step["initial_value"] = assigned_identifiers[initial_var]
+ return initial_var
+ elif symbol == "DISPLAY_IDENTIFIER":
+ try:
+ return f"{tuple(last_variable)[0]}"
+ except:
+ return f"{random.choice(tuple(assigned_identifiers.keys()))}"
+ 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()
+ assigned = {}
+ 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
+ elif level == "4.1":
+ self.max_init = 2
+ 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
+
+ level_module = importlib.import_module(f'simplify_code')
+ simplify_function = getattr(level_module, f'simplify_code_funct')
+
+ with open(filename, 'a') 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 =f"# {generated_programs}\n"+ program + "\n# Simplification"
+
+ output = simplify_function(code)
+
+ output = '\n'.join([f'{line}' 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, 4.1, 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)')
+
+ 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/tasks/clone_detection_task/generating_data_process/comparison_check.py b/tasks/clone_detection_task/generating_data_process/comparison_check.py
new file mode 100644
index 0000000..2962939
--- /dev/null
+++ b/tasks/clone_detection_task/generating_data_process/comparison_check.py
@@ -0,0 +1,49 @@
+import ast
+
+class ComparisonDetector(ast.NodeVisitor):
+ """This class check if our code snippet contain a comparison between two diffrent variables
+ or if we have a variable depanding on 2 other variables
+ example:
+ a = b - c"""
+ def __init__(self):
+ self.has_comparison_between_diff_vars = False
+ self.has_binary_operation_between_diff_vars = False
+
+ def visit_Compare(self, node):
+ # Check if the left side of the comparison is a variable
+ if isinstance(node.left, ast.Name):
+ left_var = node.left.id
+
+ # Check all comparators (right-hand side of the comparison)
+ for comparator in node.comparators:
+ if isinstance(comparator, ast.Name) and comparator.id != left_var:
+ # If there is a comparison between two different variables
+ self.has_comparison_between_diff_vars = True
+ return # No need to continue if we already found a match
+
+ self.generic_visit(node)
+
+ def visit_BinOp(self, node):
+ # check if the binary operation is within a print statement
+ if isinstance(node.op, (ast.Add, ast.Sub, ast.Mult, ast.Div, ast.Mod, ast.Pow, ast.LShift, ast.RShift, ast.BitOr, ast.BitXor, ast.BitAnd, ast.FloorDiv)):
+ if isinstance(node.left, ast.Name) and isinstance(node.right, ast.Name):
+ if node.left.id != node.right.id:
+ self.has_binary_operation_between_diff_vars = True
+ return
+
+ self.generic_visit(node)
+
+ def visit_Call(self, node):
+
+ if isinstance(node.func, ast.Name) and node.func.id == 'print':
+ # visit the arguments of the print statement to check for binary operations
+ for arg in node.args:
+ self.visit(arg)
+
+ self.generic_visit(node)
+
+def has_diff_var_comparison(code):
+ tree = ast.parse(code)
+ detector = ComparisonDetector()
+ detector.visit(tree)
+ return detector.has_comparison_between_diff_vars or detector.has_binary_operation_between_diff_vars
diff --git a/tasks/clone_detection_task/generating_data_process/generating_binaries.py b/tasks/clone_detection_task/generating_data_process/generating_binaries.py
new file mode 100644
index 0000000..ee02b1c
--- /dev/null
+++ b/tasks/clone_detection_task/generating_data_process/generating_binaries.py
@@ -0,0 +1,89 @@
+import itertools
+import json
+import os
+import argparse
+from collections import defaultdict
+from tqdm import tqdm
+def get_code_snippets(filename):
+ """
+ Reads the code snippets from the given file and returns a dictionary where keys are the snippet IDs
+ and values are the code snippets without the simplification part.
+ """
+ with open(filename, 'r') as file:
+ lines = file.read()
+
+ snippets_list = lines.split("# ")[1::2]
+ snippets = {}
+
+ for snippet in snippets_list:
+ snippet_id, snippet_code = snippet.split('\n', 1)
+ snippets[snippet_id] = snippet_code
+
+ return snippets
+
+def generate_binary_pairs(snippets, clones, max_usage=1):
+ """
+ Generates all binary pairs of code snippets and labels them as either clones (1) or not clones (0),
+ ensuring that each snippet is used at most `max_usage` times.
+ """
+ binary_pairs = []
+ snippet_usage_0 = defaultdict(int)
+ snippet_usage_1 = defaultdict(int)
+
+ # Progress tracking for clone pairs generation
+ for key, indices in tqdm(clones.items(), desc="Processing clone pairs"):
+ for pair in itertools.combinations(indices, 2):
+ if snippet_usage_1[pair[0]] <= max_usage and snippet_usage_1[pair[1]] <= max_usage:
+ snippet1, snippet2 = snippets[f'{pair[0]}'], snippets[f'{pair[1]}']
+ binary_pairs.append((snippet1, snippet2, 1))
+ snippet_usage_1[pair[0]] += 1
+ snippet_usage_1[pair[1]] += 1
+
+ # Progress tracking for non-clone pairs generation
+ all_keys = list(clones.keys())
+ for key1, key2 in tqdm(itertools.combinations(all_keys, 2), desc="Processing non-clone pairs"):
+ for idx1 in clones[key1]:
+ for idx2 in clones[key2]:
+ if snippet_usage_0[idx1] <= max_usage and snippet_usage_0[idx2] <= max_usage:
+ snippet1, snippet2 = snippets[f'{idx1}'], snippets[f'{idx2}']
+ binary_pairs.append((snippet1, snippet2, 0))
+ snippet_usage_0[idx1] += 1
+ snippet_usage_0[idx2] += 1
+
+ return binary_pairs
+
+def write_binary_pairs_to_file(binary_pairs, output_filename):
+ """
+ Writes the binary pairs and their labels to the specified output file.
+ """
+ with open(output_filename, 'a') as file:
+ for i, (snippet1, snippet2, label) in tqdm(enumerate(binary_pairs), total=len(binary_pairs)):
+ file.write(f"# snippet 1\n{snippet1}")
+ file.write(f"# snippet 2\n{snippet2}")
+ file.write(f"# is clone\n{label}\n\n")
+
+def main():
+ # Argument parsing
+ parser = argparse.ArgumentParser(description="Generate binary pairs of code snippets and their clone labels")
+ parser.add_argument('--input-clones', required=True, help='Path to the input JSON file with clone data')
+ parser.add_argument('--input-snippets', required=True, help='Path to the input file with code snippets')
+ parser.add_argument('--output-file', required=True, help='Path to the output file to store binary pairs')
+ args = parser.parse_args()
+
+ # Load clones from the specified file
+ with open(args.input_clones) as f:
+ clones = json.load(f)
+
+ # Load code snippets from the specified file
+ snippets = get_code_snippets(args.input_snippets)
+
+ # Generate binary pairs
+ binary_pairs = generate_binary_pairs(snippets, clones)
+
+ # Write binary pairs to the output file
+ write_binary_pairs_to_file(binary_pairs, args.output_file)
+
+ print(f'Clones and non-clones pairs are generated in {args.output_file}')
+
+if __name__ == "__main__":
+ main()
diff --git a/tasks/clone_detection_task/generating_data_process/identify_clones.py b/tasks/clone_detection_task/generating_data_process/identify_clones.py
new file mode 100644
index 0000000..90a4ae4
--- /dev/null
+++ b/tasks/clone_detection_task/generating_data_process/identify_clones.py
@@ -0,0 +1,48 @@
+import json
+import argparse
+from collections import defaultdict
+from tqdm import tqdm
+
+def main():
+ # Argument parsing
+ parser = argparse.ArgumentParser(description="Identify clones in the output JSON files")
+ parser.add_argument('--input-file', required=True, help='Path to the input JSON file with outputs')
+ parser.add_argument('--output-file', required=True, help='Path to the output JSON file to store clones')
+ args = parser.parse_args()
+
+ # Load the outputs from the specified file
+ with open(args.input_file) as f:
+ outputs = json.load(f)
+
+ value_to_keys = defaultdict(list)
+ for key, value in outputs.items():
+ value_to_keys[tuple(value)].append(int(key))
+
+ clones = {}
+ function = 0
+ for keys in value_to_keys.values():
+ if len(keys) > 1:
+ clones[function] = keys
+ function += 1
+
+ def trim_map_values(input_map, max_values):
+ trimmed_map = {}
+
+ for key, values in input_map.items():
+ if len(values) > max_values:
+ trimmed_map[key] = values[:max_values]
+ else:
+ trimmed_map[key] = values # Keep the original list if it's already <= 200 values
+
+ return trimmed_map
+
+ clones = trim_map_values(clones, 200) # Keep only the first 200 values
+
+ # Save the clones to the specified output file
+ with open(args.output_file, "w") as write_file:
+ json.dump(clones, write_file)
+
+ print(f'The clones are stored in {args.output_file}')
+
+if __name__ == "__main__":
+ main()
diff --git a/tasks/clone_detection_task/generating_data_process/simplify_code.py b/tasks/clone_detection_task/generating_data_process/simplify_code.py
new file mode 100644
index 0000000..0a7d0ae
--- /dev/null
+++ b/tasks/clone_detection_task/generating_data_process/simplify_code.py
@@ -0,0 +1,77 @@
+import ast
+import astor
+
+class CodeSimplification(ast.NodeTransformer):
+ def __init__(self):
+ super().__init__()
+ self.assignments = {}
+ self.in_loop = False # Track if we are inside a loop
+ self.for_loop_variable = None
+ self.is_variable_used_in_print = False
+
+ def visit_Assign(self, node):
+ # If inside a loop, keep the assignment; otherwise, remove it
+ if self.in_loop:
+ return node # Keep the assignment in loops
+ else:
+ # Remove assignments outside loops unless they are constants
+ if isinstance(node.targets[0], ast.Name):
+ if isinstance(node.value, ast.BinOp):
+ if not (isinstance(node.value.left, ast.Constant) and isinstance(node.value.right, ast.Constant)):
+ self.assignments[node.targets[0].id] = node.value
+ elif isinstance(node.value, ast.Name):
+ self.assignments[node.targets[0].id] = node.value
+ return None # Remove the assignment outside loops
+
+ def visit_For(self, node):
+ if isinstance(node.target, ast.Name):
+ self.for_loop_variable = node.target.id
+
+ for stmt in node.body:
+ self.generic_visit(stmt)
+
+ if not self.is_variable_used_in_print:
+ node.target.id = '_'
+
+ return node
+
+ def visit_While(self, node):
+ # Enter the loop
+ self.in_loop = True
+ self.generic_visit(node)
+ self.in_loop = False # Exit the loop after visiting it
+ return node
+
+ def visit_Print(self, node):
+ # Visit all child nodes (which will include Name nodes)
+ self.generic_visit(node)
+ return node
+
+ def visit_Name(self, node):
+ # Check if the loop variable is used in a print statement
+ if node.id == self.for_loop_variable:
+ self.is_variable_used_in_print = True
+
+ # Replace variables with their initialization values recursively
+ if isinstance(node.ctx, ast.Load) and node.id in self.assignments and not self.is_variable_used_in_print:
+ return ast.copy_location(self._replace_with_value(self.assignments[node.id]), node)
+ return node
+
+ def _replace_with_value(self, value):
+ if isinstance(value, ast.Name) and value.id in self.assignments:
+ return self._replace_with_value(self.assignments[value.id])
+ elif isinstance(value, ast.BinOp):
+ value.left = self._replace_with_value(value.left)
+ value.right = self._replace_with_value(value.right)
+ return value
+
+def simplify_code_funct(code):
+ # Parse the code into an AST
+ tree = ast.parse(code)
+
+ # Transform the AST
+ transformer = CodeSimplification()
+ transformed_tree = transformer.visit(tree)
+
+ # Convert the AST back to code
+ return astor.to_source(transformed_tree)
diff --git a/tasks/clone_detection_task/generating_data_process/used_variables_detector.py b/tasks/clone_detection_task/generating_data_process/used_variables_detector.py
new file mode 100644
index 0000000..336a5dc
--- /dev/null
+++ b/tasks/clone_detection_task/generating_data_process/used_variables_detector.py
@@ -0,0 +1,59 @@
+import ast
+
+class UsedVariablesDetector(ast.NodeVisitor):
+ """This class detect the used variables in our simplified code version (variables within the print statments
+ or inside the for loop or the if conditions)"""
+ def __init__(self):
+ self.printed_vars = set()
+ self.if_condition_vars = set()
+
+ def visit_Call(self, node):
+ # Check if the function being called is 'print'
+ if isinstance(node.func, ast.Name) and node.func.id == 'print':
+ for arg in node.args:
+ self._extract_variables(arg, self.printed_vars)
+ self.generic_visit(node)
+
+ def visit_If(self, node):
+ # Extract variables from the if condition
+ self._extract_variables(node.test, self.if_condition_vars)
+ self.generic_visit(node)
+
+ def visit_While(self, node):
+ # Extract variables from the if condition
+ self._extract_variables(node.test, self.if_condition_vars)
+ self.generic_visit(node)
+
+ def _extract_variables(self, node, target_set):
+ # Recursively extract variable names from the expression
+ if isinstance(node, ast.Name):
+ target_set.add(node.id)
+ elif isinstance(node, ast.BinOp):
+ self._extract_variables(node.left, target_set)
+ self._extract_variables(node.right, target_set)
+ elif isinstance(node, ast.UnaryOp):
+ self._extract_variables(node.operand, target_set)
+ elif isinstance(node, ast.Call):
+ for arg in node.args:
+ self._extract_variables(arg, target_set)
+ elif isinstance(node, ast.Attribute):
+ target_set.add(node.attr)
+ elif isinstance(node, ast.Subscript):
+ self._extract_variables(node.value, target_set)
+ elif isinstance(node, ast.Compare):
+ for comparator in node.comparators:
+ self._extract_variables(comparator, target_set)
+ self._extract_variables(node.left, target_set)
+ elif isinstance(node, ast.BoolOp):
+ for value in node.values:
+ self._extract_variables(value, target_set)
+
+def get_printed_and_condition_variables(code):
+ detector = UsedVariablesDetector()
+ tree = ast.parse(code)
+
+ detector.visit(tree)
+
+ used_vars = detector.printed_vars | detector.if_condition_vars
+
+ return used_vars
\ No newline at end of file
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/test.txt b/tasks/test.txt
new file mode 100644
index 0000000..e69de29
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")