diff --git a/Melodie/algorithms/ga.py b/Melodie/algorithms/ga.py index 2e19a5a0..43ae2f6c 100644 --- a/Melodie/algorithms/ga.py +++ b/Melodie/algorithms/ga.py @@ -1,4 +1,5 @@ import logging +import numpy as np try: from sko.GA import GA @@ -16,8 +17,6 @@ def __init__(self, *args, **kwargs): class MelodieGA(GA): def run(self, max_iter=None): - import numpy as np - self.max_iter = max_iter or self.max_iter best = [] for i in range(self.max_iter): diff --git a/Melodie/calibrator.py b/Melodie/calibrator.py index 7f49d265..f4defa91 100644 --- a/Melodie/calibrator.py +++ b/Melodie/calibrator.py @@ -14,7 +14,7 @@ Type, Iterator, cast, - Literal + Literal, ) import pandas as pd @@ -196,8 +196,7 @@ def get_params(self, id_chromosome: int) -> Dict[str, Any]: :param id_chromosome: :return: """ - chromosome_value = self.algorithm.chrom2x( - self.algorithm.Chrom)[id_chromosome] + chromosome_value = self.algorithm.chrom2x(self.algorithm.Chrom)[id_chromosome] env_parameters_dict = {} for i, param_name in enumerate(self.env_param_names): env_parameters_dict[param_name] = chromosome_value[i] @@ -214,8 +213,7 @@ def target_function_to_cache( :return: """ - self.cache[(generation, id_chromosome) - ] = env_data["target_function_value"] + self.cache[(generation, id_chromosome)] = env_data["target_function_value"] def generate_target_function(self) -> Callable[[], float]: """ @@ -226,8 +224,7 @@ def generate_target_function(self) -> Callable[[], float]: def f(*args): self._chromosome_counter += 1 - value = self.cache[(self._current_generation, - self._chromosome_counter)] + value = self.cache[(self._current_generation, self._chromosome_counter)] return value return f @@ -260,14 +257,18 @@ def record_agent_properties( d.update(agent_container_data) agent_records[container_name].append(d) - self.manager._write_to_table("csv", f"{container_name}_calibrator_result", pd.DataFrame( - agent_records[container_name])) + self.manager._write_to_table( + "csv", + f"{container_name}_calibrator_result", + pd.DataFrame(agent_records[container_name]), + ) environment_record.update(meta_dict) environment_record.update(env_data) environment_record.pop("target_function_value") self.manager._write_to_table( - "csv", "environment_calibrator_result", pd.DataFrame([environment_record])) + "csv", "environment_calibrator_result", pd.DataFrame([environment_record]) + ) return agent_records, environment_record def calc_cov_df( @@ -309,8 +310,11 @@ def calc_cov_df( ) container_agent_record_list.append(cov_records) - self.manager._write_to_table("csv", f"{container_name}_calibrator_result_cov", - pd.DataFrame(container_agent_record_list)) + self.manager._write_to_table( + "csv", + f"{container_name}_calibrator_result_cov", + pd.DataFrame(container_agent_record_list), + ) env_record = {} env_record.update(meta_dict) for prop_name in ( @@ -318,11 +322,11 @@ def calc_cov_df( ): mean = env_df[prop_name].mean() cov = env_df[prop_name].std() / env_df[prop_name].mean() - env_record.update( - {prop_name + "_mean": mean, prop_name + "_cov": cov}) + env_record.update({prop_name + "_mean": mean, prop_name + "_cov": cov}) - self.manager._write_to_table("csv", "environment_calibrator_result_cov", - pd.DataFrame([env_record])) + self.manager._write_to_table( + "csv", "environment_calibrator_result_cov", pd.DataFrame([env_record]) + ) def pre_check(self, meta): """ @@ -338,7 +342,6 @@ def pre_check(self, meta): ) def run(self, scenario: Scenario, meta: Union[GACalibratorAlgorithmMeta]): - self.pre_check(meta) for i in range(self.params.generation_num): @@ -378,8 +381,7 @@ def run(self, scenario: Scenario, meta: Union[GACalibratorAlgorithmMeta]): self.target_function_to_cache(env_data, i, chrom) self.calc_cov_df( - {k: pd.DataFrame(v) - for k, v in agent_records_collector.items()}, + {k: pd.DataFrame(v) for k, v in agent_records_collector.items()}, pd.DataFrame(env_records_list), meta, ) @@ -463,8 +465,7 @@ def get_params_scenarios(self) -> List: :return: A list of dict, and each dict contains parameters. """ - calibrator_scenarios_table = self.get_dataframe( - "calibrator_params_scenarios") + calibrator_scenarios_table = self.get_dataframe("calibrator_params_scenarios") assert isinstance( calibrator_scenarios_table, pd.DataFrame ), "No learning scenarios table specified!" diff --git a/Melodie/data_collector.py b/Melodie/data_collector.py index 6916ff08..0992b0ba 100644 --- a/Melodie/data_collector.py +++ b/Melodie/data_collector.py @@ -1,7 +1,21 @@ import logging import os import time -from typing import Callable, Generic, List, TYPE_CHECKING, Dict, NewType, Tuple, Any, Optional, Type, TypeVar, Union, cast +from typing import ( + Callable, + Generic, + List, + TYPE_CHECKING, + Dict, + NewType, + Tuple, + Any, + Optional, + Type, + TypeVar, + Union, + cast, +) import pandas as pd import collections import sqlalchemy @@ -22,7 +36,8 @@ if TYPE_CHECKING: from Melodie import Model, Scenario, BaseAgentContainer, AgentList - M = TypeVar('M', bound=Model) + + M = TypeVar("M", bound=Model) class PropertyToCollect: @@ -38,12 +53,11 @@ def vectorize_template(obj): def underline_to_camel(s: str): - return ''.join(word.capitalize() for word in s.split('_')) + return "".join(word.capitalize() for word in s.split("_")) def vectorizer(attrs): - code = VEC_TEMPLATE.format(exprs=",".join( - [f'obj["{attr}"]' for attr in attrs])) + code = VEC_TEMPLATE.format(exprs=",".join([f'obj["{attr}"]' for attr in attrs])) d = {} exec(code, None, d) return d["vectorize_template"] @@ -52,7 +66,7 @@ def vectorizer(attrs): vectorizers = {} -class DataCollector(): +class DataCollector: """ Data Collector collects data in the model. @@ -63,7 +77,8 @@ class DataCollector(): Before the model running finished, the DataCollector dumps data to dataframe, and save to database. """ - _CORE_PROPERTIES_ = ['id_scenario', 'id_run', 'period'] + + _CORE_PROPERTIES_ = ["id_scenario", "id_run", "period"] def __init__(self, target="sqlite"): """ @@ -76,16 +91,15 @@ def __init__(self, target="sqlite"): self.config: Optional[Config] = None self.model: Optional[Model] = None self.scenario: Optional["Scenario"] = None - self._agent_properties_to_collect: Dict[str, - List[PropertyToCollect]] = {} - self._agent_properties_collectors: Dict[str, Callable[[ - object], object]] = {} + self._agent_properties_to_collect: Dict[str, List[PropertyToCollect]] = {} + self._agent_properties_collectors: Dict[str, Callable[[object], object]] = {} self._environment_properties_to_collect: List[PropertyToCollect] = [] self.agent_properties_dict: Dict[str, Table] = {} self.environment_properties_list: Dict[str, Table] = None - self._custom_collectors: Dict[str, - Tuple[Callable[[Model], Dict[str, Any]], List[str]]] = {} + self._custom_collectors: Dict[ + str, Tuple[Callable[[Model], Dict[str, Any]], List[str]] + ] = {} self._custom_collected_data: Dict[str, GeneralTable] = {} self._time_elapsed = 0 @@ -124,8 +138,7 @@ def add_agent_property( :return: """ if not hasattr(self.model, container_name): - raise AttributeError( - f"Model has no agent container '{container_name}'") + raise AttributeError(f"Model has no agent container '{container_name}'") if container_name not in self._agent_properties_to_collect.keys(): self._agent_properties_to_collect[container_name] = [] self._agent_properties_to_collect[container_name].append( @@ -144,17 +157,20 @@ def add_environment_property(self, property_name: str, as_type: Type = None): PropertyToCollect(property_name, as_type) ) - def add_custom_collector(self, table_name: str, row_collector: - "Callable[[M], Union[Dict[str, Any], List[Dict[str, Any]]]]", columns: List[str]): + def add_custom_collector( + self, + table_name: str, + row_collector: "Callable[[M], Union[Dict[str, Any], List[Dict[str, Any]]]]", + columns: List[str], + ): """ Add a custom data collector to generate a standalone table. :param table_name: The name of table storing the data collected. - :param row_collector: A callable function, returning a `dict` computed from `Model` forming one + :param row_collector: A callable function, returning a `dict` computed from `Model` forming one row in the table. """ - self._custom_collectors[table_name] = ( - cast(Any, row_collector), columns) + self._custom_collectors[table_name] = (cast(Any, row_collector), columns) def env_property_names(self) -> List[str]: """ @@ -183,8 +199,7 @@ def agent_containers(self) -> List[Tuple[str, "BaseAgentContainer"]]: """ containers = [] for container_name in self._agent_properties_to_collect.keys(): - containers.append( - (container_name, getattr(self.model, container_name))) + containers.append((container_name, getattr(self.model, container_name))) return containers def collect_agent_properties(self, period: int): @@ -215,7 +230,8 @@ def collect_single_custom_property(self, collector_name: str, period: int): collector_func, column_names = self._custom_collectors[collector_name] if collector_name not in self._custom_collected_data: self._custom_collected_data[collector_name] = GeneralTable( - {k: None for k in column_names}, column_names) + {k: None for k in column_names}, column_names + ) assert self.model is not None data = collector_func(self.model) if isinstance(data, list): @@ -226,7 +242,8 @@ def collect_single_custom_property(self, collector_name: str, period: int): self._custom_collected_data[collector_name].data.append(data) else: raise NotImplementedError( - "Data collector function should return a list or dict") + "Data collector function should return a list or dict" + ) def append_agent_properties_by_records( self, @@ -245,8 +262,7 @@ def append_agent_properties_by_records( id_run, id_scenario = self.model.run_id_in_scenario, self.model.scenario.id if container_name not in self.agent_properties_dict: if len(container) == 0: - raise ValueError( - f"No property collected for container {container}!") + raise ValueError(f"No property collected for container {container}!") agent_attrs_dict = container.random_sample(1)[0].__dict__ props = { "id_scenario": 0, @@ -258,7 +274,8 @@ def append_agent_properties_by_records( row_cls = TableRow.subcls_from_dict(props) self.agent_properties_dict[container_name] = Table( - row_cls, self._CORE_PROPERTIES_+['id'] + prop_names) + row_cls, self._CORE_PROPERTIES_ + ["id"] + prop_names + ) self._agent_properties_collectors[ container_name ] = objs_to_table_row_vectorizer(row_cls, prop_names) @@ -283,12 +300,12 @@ def append_environment_properties(self, period: int): "id_run": self.model.run_id_in_scenario, "period": period, } - env_dic.update(self.model.environment.to_dict( - self.env_property_names())) + env_dic.update(self.model.environment.to_dict(self.env_property_names())) if self.environment_properties_list is None: row_cls = TableRow.subcls_from_dict(env_dic) self.environment_properties_list = Table( - row_cls, self._CORE_PROPERTIES_+self.env_property_names()) + row_cls, self._CORE_PROPERTIES_ + self.env_property_names() + ) self.environment_properties_list.append_from_dicts([env_dic]) @property @@ -360,7 +377,9 @@ def get_single_agent_data(self, agent_container_name: str, agent_id: int): container_data = self.agent_properties_dict[agent_container_name] return list(filter(lambda item: item["id"] == agent_id, container_data)) - def _write_list_to_table(self, engine, table_name: str, data: Union[Table, GeneralTable]): + def _write_list_to_table( + self, engine, table_name: str, data: Union[Table, GeneralTable] + ): """ Write a list of dict into database. @@ -370,7 +389,7 @@ def _write_list_to_table(self, engine, table_name: str, data: Union[Table, Gener base_path = self.model.config.output_tables_path() if not os.path.exists(base_path): os.makedirs(base_path) - path = os.path.join(base_path, table_name+".csv") + path = os.path.join(base_path, table_name + ".csv") data.to_file(path) else: data.to_database(engine, table_name) @@ -404,7 +423,7 @@ def save(self): # "agent_list" -> "AgentList" # "agent_list" -> "Agent_list" # "Agent" - "Result_"+underline_to_camel(container_name), + "Result_" + underline_to_camel(container_name), self.agent_properties_dict[container_name], ) write_db_time += time.time() - _t @@ -414,7 +433,7 @@ def save(self): self._write_list_to_table( connection.get_engine(), custom_table_name, - self._custom_collected_data[custom_table_name] + self._custom_collected_data[custom_table_name], ) write_db_time += time.time() - _t self.agent_properties_dict = {} diff --git a/Melodie/data_loader.py b/Melodie/data_loader.py index cdc92346..6d03ba1b 100644 --- a/Melodie/data_loader.py +++ b/Melodie/data_loader.py @@ -26,15 +26,16 @@ def first_char_upper(s: str) -> str: if len(s) >= 1: - return s[0].upper()+s[1:] + return s[0].upper() + s[1:] else: return s + # TODO: move this function to utils def underline_to_camel(s): - return ''.join(first_char_upper(word) for word in s.split('_')) + return "".join(first_char_upper(word) for word in s.split("_")) class DataFrameInfo: @@ -53,7 +54,7 @@ def __init__( self, df_name: str, columns: Dict[str, "sqlalchemy.types"], - file_name: str = '', + file_name: str = "", engine: str = "pandas", ): """ @@ -102,7 +103,6 @@ def __init__( @property def dtype(self): - import numpy as np if self.data_type is None: return None py_type = self.data_type.python_type @@ -155,7 +155,11 @@ def load_scenarios(self): for file_name in os.listdir(self.config.input_folder): camel_case = underline_to_camel(os.path.splitext(file_name)[0]) - if camel_case in ("SimulatorScenarios", "TrainerScenarios", "CalibratorScenarios"): + if camel_case in ( + "SimulatorScenarios", + "TrainerScenarios", + "CalibratorScenarios", + ): self.load_dataframe(file_name, camel_case) def load_dataframe(self, df_info: Union[str, "DataFrameInfo"], df_name=""): @@ -175,7 +179,9 @@ def load_dataframe(self, df_info: Union[str, "DataFrameInfo"], df_name=""): else: return self._load_dataframe(df_info) - def load_matrix(self, mat_info: Union[str, "MatrixInfo"], mat_name="") -> np.ndarray: + def load_matrix( + self, mat_info: Union[str, "MatrixInfo"], mat_name="" + ) -> np.ndarray: """ Load a matrix from table file. @@ -186,8 +192,7 @@ def load_matrix(self, mat_info: Union[str, "MatrixInfo"], mat_name="") -> np.nda assert self.manager is not None, MelodieExceptions.MLD_INTL_EXC assert self.manager.data_loader is not None, MelodieExceptions.MLD_INTL_EXC if isinstance(mat_info, str): - mat_name = mat_name if mat_name != "" else os.path.basename( - mat_info) + mat_name = mat_name if mat_name != "" else os.path.basename(mat_info) info = MatrixInfo(mat_name, None, mat_info) return self.manager.data_loader._load_matrix(info) else: @@ -279,8 +284,7 @@ def _load_dataframe(self, df_info: "DataFrameInfo") -> "pd.DataFrame": if df_info.df_name in self.registered_dataframes: return self.registered_dataframes[df_info.df_name] assert df_info.file_name is not None - file_path_abs = os.path.join( - self.config.input_folder, df_info.file_name) + file_path_abs = os.path.join(self.config.input_folder, df_info.file_name) table = self._load_dataframe_cached(file_path_abs) @@ -299,16 +303,15 @@ def _load_matrix(self, matrix_info: "MatrixInfo") -> "np.ndarray": assert matrix_info.file_name is not None _, ext = os.path.splitext(matrix_info.file_name) - file_path_abs = os.path.join( - self.config.input_folder, matrix_info.file_name - ) + file_path_abs = os.path.join(self.config.input_folder, matrix_info.file_name) if ext in {".xls", ".xlsx"}: table: "pd.DataFrame" = pd.read_excel(file_path_abs, header=None) elif ext in {".csv"}: table: "pd.DataFrame" = pd.read_csv(file_path_abs, header=None) else: raise NotImplementedError( - f"Cannot load file with extension {ext} to matrix.") + f"Cannot load file with extension {ext} to matrix." + ) array = table.to_numpy(matrix_info.dtype, copy=True) self.registered_matrices[matrix_info.mat_name] = array return array @@ -338,20 +341,18 @@ def generate_scenarios_from_dataframe(self, df_name: str) -> List["Scenario"]: """ scenarios_dataframe = self.registered_dataframes.get(df_name) if scenarios_dataframe is None: - MelodieExceptions.Data.TableNotFound( - df_name, self.registered_dataframes) + MelodieExceptions.Data.TableNotFound(df_name, self.registered_dataframes) scenarios_dataframe = TableInterface(scenarios_dataframe) cols = [col for col in scenarios_dataframe.columns] scenarios: List[Scenario] = [] for i, row in enumerate(scenarios_dataframe.iter_dicts()): scenario = self.scenario_cls() scenario.manager = self.manager - + scenario._setup(row) scenarios.append(scenario) if len(scenarios) == 0: - raise MelodieExceptions.Scenario.NoValidScenarioGenerated( - scenarios) + raise MelodieExceptions.Scenario.NoValidScenarioGenerated(scenarios) return scenarios def generate_scenarios(self, manager_type: str) -> List["Scenario"]: @@ -363,8 +364,7 @@ def generate_scenarios(self, manager_type: str) -> List["Scenario"]: """ if manager_type not in {"Simulator", "Trainer", "Calibrator"}: raise MelodieExceptions.Program.Variable.VariableNotInSet( - "manager_type", manager_type, { - "Simulator", "Trainer", "Calibrator"} + "manager_type", manager_type, {"Simulator", "Trainer", "Calibrator"} ) df_name = f"{manager_type}Scenarios" @@ -375,4 +375,5 @@ def generate_scenarios(self, manager_type: str) -> List["Scenario"]: return self.generate_scenarios_from_dataframe(underline_to_camel(df_name)) else: raise NotImplementedError( - f"{manager_type}/{underline_to_camel(df_name)} is not supported!") + f"{manager_type}/{underline_to_camel(df_name)} is not supported!" + ) diff --git a/Melodie/model.py b/Melodie/model.py index a8ce92ad..f092817d 100644 --- a/Melodie/model.py +++ b/Melodie/model.py @@ -257,8 +257,7 @@ def _check_agent_containers(self): if isinstance(prop, BaseAgentContainer): all_ids = prop.all_agent_ids() if len(set(all_ids)) < len(all_ids): - raise MelodieExceptions.Agents.AgentIDConflict( - prop_name, all_ids) + raise MelodieExceptions.Agents.AgentIDConflict(prop_name, all_ids) def run(self): """ diff --git a/Melodie/network.py b/Melodie/network.py index e30fa8a7..4544d752 100644 --- a/Melodie/network.py +++ b/Melodie/network.py @@ -5,7 +5,7 @@ import networkx as nx - +import numpy as np from MelodieInfra.core import Agent, AgentList if TYPE_CHECKING: @@ -305,8 +305,6 @@ def update_layout(self): :return: None """ if os.path.exists(self.layout_file): - import numpy as np - try: G = nx.read_gexf(self.layout_file, node_type=ast.literal_eval) positions = {} diff --git a/Melodie/simulator.py b/Melodie/simulator.py index ddb24aa7..ab5f0e5d 100644 --- a/Melodie/simulator.py +++ b/Melodie/simulator.py @@ -21,7 +21,6 @@ MelodieExceptions, show_prettified_warning, MelodieGlobalConfig, - ) from .data_loader import DataLoader, DataFrameInfo @@ -128,8 +127,7 @@ def pre_run(self, clear_output_data=True): self.scenarios = self.generate_scenarios() if self.scenarios is None or len(self.scenarios) == 0: - raise MelodieExceptions.Scenario.NoValidScenarioGenerated( - self.scenarios) + raise MelodieExceptions.Scenario.NoValidScenarioGenerated(self.scenarios) @abc.abstractmethod def generate_scenarios(self) -> List[Scenario]: @@ -138,7 +136,9 @@ def generate_scenarios(self) -> List[Scenario]: """ pass - def _write_to_table(self, kind: Literal["csv", "sql"], table_name: str, data: pd.DataFrame): + def _write_to_table( + self, kind: Literal["csv", "sql"], table_name: str, data: pd.DataFrame + ): """ Write a pandas dataframe to a table in output directory or database """ @@ -149,8 +149,9 @@ def _write_to_table(self, kind: Literal["csv", "sql"], table_name: str, data: pd if_exists="append", ) elif kind == "csv": - csv_file = os.path.join(self.config.output_tables_path(), - table_name+".csv") + csv_file = os.path.join( + self.config.output_tables_path(), table_name + ".csv" + ) if os.path.exists(csv_file): data.to_csv(csv_file, mode="a", header=False) else: @@ -534,8 +535,7 @@ def new_parallel(self, cores: int = 1): ) first_run = True else: - parallel_manager.put_task( - (id_run, scenario.to_json(), None)) + parallel_manager.put_task((id_run, scenario.to_json(), None)) tasks_count += 1 for i in range(tasks_count): diff --git a/Melodie/trainer.py b/Melodie/trainer.py index 3c41587a..55b17b0e 100644 --- a/Melodie/trainer.py +++ b/Melodie/trainer.py @@ -2,6 +2,8 @@ import logging import time import sys + +import pandas as pd from typing import ( Dict, Tuple, @@ -185,8 +187,7 @@ def __init__( self.algorithms_dict: Dict[Tuple[int, str], Union["GA"]] = {} self.target_fcn_cache = TargetFcnCache() - self.agent_container_getters: Dict[str, - Callable[[Model], AgentList]] = {} + self.agent_container_getters: Dict[str, Callable[[Model], AgentList]] = {} self.agent_ids: Dict[str, List[int]] = {} # {category : [agent_id]} self.agent_params_defined: Dict[ str, List[str] @@ -243,8 +244,7 @@ def setup_agent_locations( for agent_id in agent_id_list: self.algorithms_dict[(agent_id, container_name)] = MelodieGA( func=cast( - "function", self.generate_target_function( - agent_id, container_name) + "function", self.generate_target_function(agent_id, container_name) ), n_dim=len(param_names), size_pop=self.params.strategy_population, @@ -270,8 +270,7 @@ def get_agent_params(self, id_chromosome: int): } # {category : [{id: 0, param1: 1, param2: 2, ...}]} for key, algorithm in self.algorithms_dict.items(): - chromosome_value = algorithm.chrom2x( - algorithm.Chrom)[id_chromosome] + chromosome_value = algorithm.chrom2x(algorithm.Chrom)[id_chromosome] agent_id, agent_category = key d = {"id": agent_id} for i, param_name in enumerate(self.agent_params_defined[agent_category]): @@ -333,7 +332,6 @@ def record_agent_properties( :param meta: :return: """ - import pandas as pd agent_records = {} env_record = {} @@ -354,13 +352,19 @@ def record_agent_properties( agent_records[container_name].append(d) self.manager._write_to_table( - "csv", f"{container_name}_trainer_result", pd.DataFrame(agent_records[container_name])) + "csv", + f"{container_name}_trainer_result", + pd.DataFrame(agent_records[container_name]), + ) env_record.update(meta_dict) env_record.update(env_data) self.manager._write_to_table( - "csv", "environment_trainer_result", pd.DataFrame([env_record]),) + "csv", + "environment_trainer_result", + pd.DataFrame([env_record]), + ) return agent_records, env_record @@ -377,7 +381,6 @@ def calc_cov_df( :param meta: :return: """ - import pandas as pd pd.set_option("max_colwidth", 500) pd.set_option("display.max_columns", None) @@ -402,17 +405,20 @@ def calc_cov_df( {prop_name + "_mean": mean, prop_name + "_cov": cov} ) container_agent_record_list.append(cov_records) - self.manager._write_to_table("csv", f"{container_name}_trainer_result_cov", - pd.DataFrame(container_agent_record_list),) + self.manager._write_to_table( + "csv", + f"{container_name}_trainer_result_cov", + pd.DataFrame(container_agent_record_list), + ) env_record = {} env_record.update(meta_dict) for prop_name in self.recorded_env_properties: mean = env_df[prop_name].mean() cov = env_df[prop_name].std() / env_df[prop_name].mean() - env_record.update( - {prop_name + "_mean": mean, prop_name + "_cov": cov}) - self.manager._write_to_table("csv", "environment_trainer_result_cov", - pd.DataFrame([env_record])) + env_record.update({prop_name + "_mean": mean, prop_name + "_cov": cov}) + self.manager._write_to_table( + "csv", "environment_trainer_result_cov", pd.DataFrame([env_record]) + ) def pre_check(self, meta): """ @@ -427,8 +433,6 @@ def pre_check(self, meta): ) def run(self, scenario: Scenario, meta: Union[GATrainerAlgorithmMeta]): - import pandas as pd - self.pre_check(meta) for i in range(self.params.generation_num): @@ -474,12 +478,11 @@ def run(self, scenario: Scenario, meta: Union[GATrainerAlgorithmMeta]): agent_records_collector[container_name] += records env_records_list.append(env_record) self.target_function_to_cache(agents_data, i, chrom) - + t1 = time.time() print(t1 - t0) self.calc_cov_df( - {k: pd.DataFrame(v) - for k, v in agent_records_collector.items()}, + {k: pd.DataFrame(v) for k, v in agent_records_collector.items()}, pd.DataFrame(env_records_list), meta, ) @@ -528,8 +531,7 @@ def add_container( :return: """ self.agent_containers.append( - RelatedAgentContainerModel( - container_name, used_properties, [], agent_ids) + RelatedAgentContainerModel(container_name, used_properties, [], agent_ids) ) def get_agent_container( @@ -669,8 +671,7 @@ def run_once_new(self, scenario: Scenario, trainer_params: Union[GATrainerParams :return: None """ - self.algorithm = GATrainerAlgorithm( - trainer_params, self, self.processors) + self.algorithm = GATrainerAlgorithm(trainer_params, self, self.processors) self.algorithm.recorded_env_properties = self.environment_properties for agent_container in self.container_manager.agent_containers: self.algorithm.setup_agent_locations( @@ -741,15 +742,13 @@ def generate_trainer_params_list( :return: A list of trainer parameters. """ - import pandas as pd trainer_params_table = self.get_dataframe("trainer_params_scenarios") assert isinstance( trainer_params_table, pd.DataFrame ), "No learning scenarios table specified!" - trainer_params_raw_list = trainer_params_table.to_dict( - orient="records") + trainer_params_raw_list = trainer_params_table.to_dict(orient="records") trainer_params_list = [] for trainer_params_raw in trainer_params_raw_list: diff --git a/MelodieInfra/boost/__init__.py b/MelodieInfra/boost/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/MelodieInfra/boost/numba_numpy_run.py b/MelodieInfra/boost/numba_numpy_run.py deleted file mode 100644 index 340d0c2d..00000000 --- a/MelodieInfra/boost/numba_numpy_run.py +++ /dev/null @@ -1,22 +0,0 @@ -from numba import njit -import numpy as np -import pandas as pd - -df = pd.DataFrame([[1, 1.0], [2, 2.2]], columns=["id", "name"]) -arr = df.to_numpy() -print(arr, arr.dtype, df["id"].dtype, df["id"].to_numpy().dtype) - -arr = np.array([(1, 1.0), (2, 2.2)], dtype=[("id", "i4"), ("value", "f4")]) -# fields_gl = ('a1', 'a2') -print(arr) - - -@njit -def test(arr): - s = 0.0 - for item in arr: - s += item[0] - return s - - -print(test(arr)) diff --git a/MelodieInfra/boost/numba_utils.py b/MelodieInfra/boost/numba_utils.py deleted file mode 100644 index 11dd7df7..00000000 --- a/MelodieInfra/boost/numba_utils.py +++ /dev/null @@ -1,183 +0,0 @@ -import random -from typing import Any, Type, List, Dict - -import pandas as pd - -from MelodieInfra.table.pandas_compat import TableInterface, TABLE_TYPE - - -def set_agent_params(agent, params): - for k, v in params.items(): - setattr(agent, k, v) - - -def set_properties(agent_cls, agent_list, props_table: TABLE_TYPE): - """ - Set parameters of all agents in current scenario from a pandas dataframe. - - :return: None - """ - table = TableInterface(props_table) - - param_names = [param for param in table.columns if param not in {"id_scenario"}] - - if "id_scenario" in table.columns: - params_table = table.filter( - lambda row: row["id_scenario"] == agent_list.scenario.id - ) - else: - params_table = table # deep copy this dataframe. - if "id" in param_names: - row: Dict[str, Any] - for i, row in enumerate(params_table.iter_dicts()): - params = {k: row[k] for k in param_names} - agent = agent_list.get_agent(params["id"]) - print(agent) - if agent is None: - agent = agent_list.add(None) - # print(params) - set_agent_params(agent, params) - print(agent.id, agent.a) - else: - row: Dict[str, Any] - params_table.df.data("out.csv") - assert len(agent_list) == len(params_table), ( - len(agent_list), - len(params_table), - ) - - for i, row in enumerate(params_table.iter_dicts()): - params = {k: row[k] for k in param_names} - agent = agent_list.agents(i) - set_agent_params(agent, params) - - -def create_class(agent_cls: Type): - from numba import types, typed, jit, njit - import numpy as np - - spec = [ - ("_id_offset", types.int64), - ("agents", types.ListType(agent_cls.class_type.instance_type)), - ("indices", types.DictType(types.int64, types.int64)), - ] - - # @jit(nopython=False) - # def create_agent_class(): - # return agent_cls - - @njit(cache=True) - def rand_choice(length, sample_num): - return np.random.choice(length, sample_num) - - @njit(cache=True) - def create_empty_int2int_dict(): - return typed.Dict.empty(types.int64, types.int64) - - @jitclass(spec) - class JittedAgentList: - def __init__(self) -> None: - self._id_offset = -1 - self.agents = typed.List([agent_cls(0) for i in range(0)]) - self.indices = create_empty_int2int_dict() - - def new_id(self) -> int: - self._id_offset += 1 - return self._id_offset - - def add(self, agent): - if agent is None: - agent = agent_cls(self.new_id()) - self.agents.append(agent) - index = len(self.agents) - 1 - self._set_index(agent.id, index) - return agent - - def get_agent(self, agent_id: int): - index = self._get_index(agent_id) - if index == -1: - return None - else: - return self.agents[index] - - def _set_index(self, agent_id, agent_index): - self.indices[agent_id] = agent_index - - def _get_index(self, agent_id): - if agent_id in self.indices: - return self.indices[agent_id] - else: - return -1 - - def __getitem__(self, agent_index): - return self.agents[agent_index] - - def __len__(self): - return len(self.agents) - - def random_sample(self, sample_num: int) -> List["AgentGeneric"]: - """ - Randomly sample `sample_num` agents from the container - :param sample_num: - :return: - """ - indices = rand_choice(len(self.agents), sample_num) - agents = typed.List([agent_cls(0) for i in range(0)]) - for index in indices: - agents.append(self.agents[index]) - return agents - - def filter(self, f): - agents = typed.List([agent_cls(0) for i in range(0)]) - for a in self.agents: - if f(a): - agents.append(a) - return agents - - return JittedAgentList - - -if __name__ == "__main__": - from numba import float64, int64, njit - from numba.experimental import jitclass - import time - - t0 = time.time() - - @jitclass([("id", int64), ("a", float64)]) - class JittedAgent: - def __init__(self, id: int) -> None: - self.id = id - self.a = 0.5 - - cls = create_class(JittedAgent) - agents = cls() - agents.add(JittedAgent(0)) - agents.add(JittedAgent(2)) - agents.add(JittedAgent(3)) - agents.add(None) - print(iter(agents)) - print(agents.agents[0].a) - print(len(agents)) - print(agents.indices) - print(agents._get_index(3)) - print(agents[1].id) - assert agents[1].id == agents.get_agent(agents[1].id).id - agent1, agent2 = agents.random_sample(2) - print(agent1.id, agent2.id) - - @njit - def f(a): - return a.id >= 2 - - filtered_agents = agents.filter(f) - print(filtered_agents) - print(filtered_agents[0].id) - t1 = time.time() - - agents = cls() - props_table = pd.DataFrame([[0, 1], [1, 114]], columns=["id", "a"]) - set_properties(JittedAgent, agents, props_table) - print(len(agents.agents)) - print(agents.agents[0].id, agents.agents[1].id) - print("warming up time", t1 - t0) diff --git a/MelodieInfra/config/config.py b/MelodieInfra/config/config.py index 3b34bb66..dd286591 100644 --- a/MelodieInfra/config/config.py +++ b/MelodieInfra/config/config.py @@ -23,7 +23,7 @@ def __init__( input_folder: str, output_folder: str, visualizer_entry: str = "", - data_output_type: Literal["csv", "sqlite"] = "csv", + data_output_type: Literal["csv", "sqlite"] = "csv", database_config: Optional["DBConfigTypes"] = None, **kwargs, ): @@ -40,8 +40,7 @@ def __init__( if database_config is None: self.database_config = SQLiteDBConfig( - os.path.join(self.output_folder, - self.project_name + SQLITE_FILE_SUFFIX) + os.path.join(self.output_folder, self.project_name + SQLITE_FILE_SUFFIX) ) else: assert isinstance(database_config, BaseMelodieDBConfig), ( @@ -95,7 +94,7 @@ def from_dict(d: Dict[str, Any]): def output_tables_path(self): """ Get the path to store the tables output from the model. It is `data/output/{project_name}` - + If output to database and using sqlite, the output directory will be `data/output` """ return os.path.join(self.output_folder) diff --git a/MelodieInfra/core/agent.py b/MelodieInfra/core/agent.py index 75b5b485..0e023d73 100644 --- a/MelodieInfra/core/agent.py +++ b/MelodieInfra/core/agent.py @@ -1,8 +1,6 @@ from typing import List from .types import Optional, TYPE_CHECKING, Dict, Any -# import .types as types - class Element: def set_params(self, params: Dict[str, Any]): diff --git a/MelodieInfra/core/agent_list.py b/MelodieInfra/core/agent_list.py index dd538782..f0ae96b6 100644 --- a/MelodieInfra/core/agent_list.py +++ b/MelodieInfra/core/agent_list.py @@ -12,6 +12,8 @@ TypeVar, ) +import pandas as pd + from .agent import Agent from ..exceptions import MelodieExceptions, show_prettified_warning from ..table import TABLE_TYPE, TableInterface @@ -277,7 +279,6 @@ def to_dataframe(self, column_names: List[str] = None) -> TABLE_TYPE: :param column_names: property names to store :return: """ - import pandas as pd data_list = self.to_list(column_names) df = pd.DataFrame(data_list) diff --git a/MelodieInfra/db/db.py b/MelodieInfra/db/db.py index 79d3de1c..598382c3 100644 --- a/MelodieInfra/db/db.py +++ b/MelodieInfra/db/db.py @@ -6,6 +6,7 @@ import sqlalchemy from sqlalchemy.exc import OperationalError from sqlalchemy_utils import database_exists, create_database +import pandas as pd from ..table import TableBase, TABLE_TYPE, GeneralTable, DatabaseConnector from ..exceptions import MelodieExceptions @@ -141,8 +142,7 @@ def clear_database(self): Clear the database, deleting all tables. """ if database_exists(self.connection.url): - logger.info( - f"Database contains tables: {self.connection.table_names()}.") + logger.info(f"Database contains tables: {self.connection.table_names()}.") table_names = list(self.connection.table_names()) for table_name in table_names: self.connection.execute(f"drop table {table_name}") @@ -182,7 +182,7 @@ def write_dataframe( if_exists=if_exists, ) t1 = time.time() - print("t1-t0", t1-t0, t2-t0, data_frame.shape) + print("t1-t0", t1 - t0, t2 - t0, data_frame.shape) def read_dataframe( self, @@ -215,8 +215,7 @@ def read_dataframe( where_condition_phrase = "" condition_phrases = [] if conditions is not None: - condition_phrases.extend([item[0] + item[1] - for item in conditions]) + condition_phrases.extend([item[0] + item[1] for item in conditions]) if id_scenario is not None: condition_phrases.append(f"id_scenario={id_scenario}") if id_run is not None: @@ -227,8 +226,6 @@ def read_dataframe( sql += " where " + " and ".join(condition_phrases) logger.debug("Querying database: " + sql) if df_type == "pandas": - import pandas as pd - return pd.read_sql(sql, self.connection) else: return GeneralTable.from_database(self.connection, table_name, sql) @@ -236,8 +233,7 @@ def read_dataframe( import traceback traceback.print_exc() - raise MelodieExceptions.Data.AttemptingReadingFromUnexistedTable( - table_name) + raise MelodieExceptions.Data.AttemptingReadingFromUnexistedTable(table_name) def drop_table(self, table_name: str): """ diff --git a/MelodieInfra/parallel/parallel_manager.py b/MelodieInfra/parallel/parallel_manager.py index c894838d..e3a21f98 100644 --- a/MelodieInfra/parallel/parallel_manager.py +++ b/MelodieInfra/parallel/parallel_manager.py @@ -99,8 +99,7 @@ def run(self, role: str): p = subprocess.Popen( [ sys.executable, - os.path.join(os.path.dirname(__file__), - "parallel_worker.py"), + os.path.join(os.path.dirname(__file__), "parallel_worker.py"), "--core_id", str(core_id), "--workdirs", diff --git a/MelodieInfra/parallel/parallel_worker.py b/MelodieInfra/parallel/parallel_worker.py index 8e48c9cd..84417e1f 100644 --- a/MelodieInfra/parallel/parallel_worker.py +++ b/MelodieInfra/parallel/parallel_worker.py @@ -111,7 +111,7 @@ def sub_routine_trainer( :return: """ # TODO: Have to set this path! - + from Melodie import Config, Trainer, Environment, AgentList, Agent import logging @@ -121,9 +121,8 @@ def sub_routine_trainer( try: config = Config.from_dict(config_raw) trainer: Trainer - - trainer, scenario_cls, model_cls = get_scenario_manager( - config, modules) + + trainer, scenario_cls, model_cls = get_scenario_manager(config, modules) except BaseException: import traceback @@ -161,8 +160,7 @@ def sub_routine_trainer( agent_data[container.container_name] = df for row in df: agent = agent_container.get_agent(row["id"]) - row["target_function_value"] = trainer.target_function( - agent) + row["target_function_value"] = trainer.target_function(agent) row["utility"] = trainer.utility(agent) row["agent_id"] = row.pop("id") env: Environment = model.environment @@ -205,8 +203,7 @@ def sub_routine_calibrator( try: config = Config.from_dict(config_raw) calibrator: "Calibrator" - calibrator, scenario_cls, model_cls = get_scenario_manager( - config, modules) + calibrator, scenario_cls, model_cls = get_scenario_manager(config, modules) except BaseException: import traceback @@ -237,8 +234,7 @@ def sub_routine_calibrator( env: Environment = model.environment env_data = env.to_dict(calibrator.watched_env_properties) env_data.update( - {prop: scenario.to_dict()[prop] - for prop in calibrator.properties} + {prop: scenario.to_dict()[prop] for prop in calibrator.properties} ) env_data["target_function_value"] = env_data[ "distance" @@ -278,8 +274,7 @@ def sub_routine_simulator( try: config = Config.from_dict(config_raw) simulator: "Simulator" - simulator, scenario_cls, model_cls = get_scenario_manager( - config, modules) + simulator, scenario_cls, model_cls = get_scenario_manager(config, modules) except BaseException: import traceback diff --git a/MelodieInfra/services/database.py b/MelodieInfra/services/database.py index 823149f2..5d724551 100644 --- a/MelodieInfra/services/database.py +++ b/MelodieInfra/services/database.py @@ -16,6 +16,9 @@ ) +import pandas as pd + + def get_table_names(conn_string: str) -> List[str]: """ @@ -65,7 +68,5 @@ def table_names(req: DatabaseBasicRequest): @staticmethod def execute_sql(conn_string, sql: str): - import pandas as pd - engine = sqlalchemy.create_engine(conn_string) return pd.read_sql(sql, engine) diff --git a/MelodieInfra/services/files/table_files/excel.py b/MelodieInfra/services/files/table_files/excel.py index fa913a7f..43974896 100644 --- a/MelodieInfra/services/files/table_files/excel.py +++ b/MelodieInfra/services/files/table_files/excel.py @@ -8,6 +8,7 @@ import tempfile from typing import Any, List, cast, TYPE_CHECKING +import pandas as pd import openpyxl from MelodieInfra.models import ( @@ -36,18 +37,12 @@ def __init__(self, filename: str) -> None: self.filename = filename def get_sheet_names(self): - import pandas as pd - return pd.ExcelFile(self.filename).sheet_names def read_sheet(self, sheet_name: str = None, **kwargs): - import pandas as pd - return pd.read_excel(self.filename, sheet_name, **kwargs) def write_to_sheet(self, df: "pd.DataFrame", sheet_name: str, **kwargs): - import pandas as pd - book = None sheet_exist = False if os.path.exists(self.filename): @@ -75,7 +70,6 @@ def write_excel(req: ExcelWriteRequest) -> DataServiceStatus: :param req: :return: error message, None means success. """ - import pandas as pd _, ext = os.path.splitext(req.path) ext = ext[1:] diff --git a/MelodieInfra/table/pandas_compat.py b/MelodieInfra/table/pandas_compat.py index b26f0c3f..9d8cebab 100644 --- a/MelodieInfra/table/pandas_compat.py +++ b/MelodieInfra/table/pandas_compat.py @@ -4,8 +4,8 @@ from typing import Callable, List, Union, TYPE_CHECKING, Iterator from .table_base import TableBase -if TYPE_CHECKING: - import pandas as pd +import pandas as pd + TABLE_TYPE = Union["pd.DataFrame", TableBase] @@ -27,8 +27,6 @@ def filter(self, condition: Callable) -> "TableInterface": if isinstance(self.df, TableBase): return TableInterface(self.df.filter(condition)) else: - import pandas as pd - if not isinstance(self.df, pd.DataFrame): raise TypeError(self.df) return TableInterface(self.df[self.df.apply(condition, axis=1)]) @@ -41,8 +39,6 @@ def iter_dicts(self) -> Iterator[dict]: for row in self.df.data: yield row else: - import pandas as pd - if not isinstance(self.df, pd.DataFrame): raise TypeError(self.df) df_dict = self.df.to_dict(orient="records") diff --git a/MelodieInfra/table/table_general.py b/MelodieInfra/table/table_general.py index 2c661688..63e6dad1 100644 --- a/MelodieInfra/table/table_general.py +++ b/MelodieInfra/table/table_general.py @@ -91,8 +91,7 @@ def from_dicts(row_type: RowType, dicts: List[dict], copy=True): assert ( len(dicts) > 0 ), "Initial data must have at least one row for Melodie to detect data type." - row_type = {k: py_types_to_sa_types[type( - v)] for k, v in dicts[0].items()} + row_type = {k: py_types_to_sa_types[type(v)] for k, v in dicts[0].items()} table = GeneralTable(row_type) if not copy: for dic in dicts: diff --git a/MelodieInfra/table/table_objects.py b/MelodieInfra/table/table_objects.py index 20dd1e2c..4a008e98 100644 --- a/MelodieInfra/table/table_objects.py +++ b/MelodieInfra/table/table_objects.py @@ -61,8 +61,7 @@ def get_annotations(cls) -> Dict[str, Union[Type[int], Type[str], Type[float]]]: @classmethod def get_aliases(cls): - attr_names = list(cls.__dict__.keys()) + \ - list(cls.get_annotations().keys()) + attr_names = list(cls.__dict__.keys()) + list(cls.get_annotations().keys()) aliases = {} for attr_name in attr_names: if hasattr(cls, attr_name) and isinstance( @@ -79,8 +78,7 @@ def get_datatypes(cls): """ Get the datatype represented in database. """ - attr_names = list(cls.__dict__.keys()) + \ - list(cls.get_annotations().keys()) + attr_names = list(cls.__dict__.keys()) + list(cls.get_annotations().keys()) attr_names = [ attr_name for attr_name in list(set(attr_names)) @@ -92,8 +90,7 @@ def get_datatypes(cls): # attr_name in cls.get_annotations() # ), f'Attribute "{attr_name}" of class {cls.__name__} must be annotated!' if not hasattr(cls, attr_name): - dtype_ = py_types_to_sa_types[cls.get_annotations()[ - attr_name]]() + dtype_ = py_types_to_sa_types[cls.get_annotations()[attr_name]]() dtype = Column(dtype_) else: meta = getattr(cls, attr_name) @@ -101,8 +98,7 @@ def get_datatypes(cls): if meta.dtype is not None: dtype = meta.dtype else: - dtype_ = py_types_to_sa_types[cls.get_annotations()[ - attr_name]]() + dtype_ = py_types_to_sa_types[cls.get_annotations()[attr_name]]() dtype = Column(dtype_) assert isinstance(dtype, Column) col_dtypes[attr_name] = dtype @@ -137,7 +133,9 @@ class TR(TableRow): class Table(TableBase, Generic[TableRowGeneric]): data: List[TableRowGeneric] - def __init__(self, row_type: Type[TableRowGeneric], columns: Optional[List[str]] = None) -> None: + def __init__( + self, row_type: Type[TableRowGeneric], columns: Optional[List[str]] = None + ) -> None: super().__init__() self.row_cls: Type[TableRow] = row_type self._db_model_cls: Type = None @@ -156,7 +154,8 @@ def __init__(self, row_type: Type[TableRowGeneric], columns: Optional[List[str]] if columns is not None: self._columns = columns assert set([row for row in self.row_types.keys()]) == set( - self._columns), f"columns_order {self._columns} should contain the same names as row_types: {self.row_types.keys()}" + self._columns + ), f"columns_order {self._columns} should contain the same names as row_types: {self.row_types.keys()}" else: self._columns = [row for row in self.row_types.keys()] @@ -195,16 +194,16 @@ def from_file(file_name: str, row_types: Type[TableRowGeneric], encoding="utf-8" aliases = table.row_cls.get_aliases() for row_data in rows_iter: table_row_obj: TableRow = table.row_cls.from_dict( - table, {col: row_data[i] - for i, col in enumerate(columns)}, aliases + table, {col: row_data[i] for i, col in enumerate(columns)}, aliases ) table.data.append(table_row_obj) return table def to_file(self, file_name: str, encoding="utf-8"): is_new_file = True if not os.path.exists(file_name) else False - writer = TableWriter(file_name, text_encoding=encoding, - append=not is_new_file).write() + writer = TableWriter( + file_name, text_encoding=encoding, append=not is_new_file + ).write() headers = self.columns if is_new_file: writer.send(headers) @@ -214,8 +213,7 @@ def to_file(self, file_name: str, encoding="utf-8"): def to_database(self, engine, table_name: str): conn = DatabaseConnector(engine) - conn.write_table(table_name, self.row_types, [ - d.__dict__ for d in self.data]) + conn.write_table(table_name, self.row_types, [d.__dict__ for d in self.data]) def to_file_with_codegen(self, file_name: str, encoding="utf-8"): writer = TableWriter(file_name, text_encoding=encoding).write() diff --git a/requirements-purepython.txt b/requirements-purepython.txt deleted file mode 100644 index 2b0e9d27..00000000 --- a/requirements-purepython.txt +++ /dev/null @@ -1,16 +0,0 @@ -flask -flask-cors -flask_sock -openpyxl -xlrd==1.2.0 -networkx -chardet~=4.0.0 -sqlalchemy~=1.4 -sqlalchemy_utils -astunparse -pprintast -pytest -termcolor -setuptools -cloudpickle~=2.0 -rpyc \ No newline at end of file diff --git a/run_before_commit.py b/run_before_commit.py index decfefee..9434ef72 100644 --- a/run_before_commit.py +++ b/run_before_commit.py @@ -4,7 +4,9 @@ import Melodie -os.system("""autoflake -r --in-place --remove-unused-variables \ - --remove-all-unused-imports --exclude=__init__.py SkyStaticAnalysis demos tests""") +os.system( + """autoflake -r --in-place --remove-unused-variables \ + --remove-all-unused-imports --exclude=__init__.py SkyStaticAnalysis demos tests""" +) os.system("isort -rc SkyStaticAnalysis demos tests") os.system(f"{sys.executable} -m black .") diff --git a/test_package.sh b/test_package.sh deleted file mode 100644 index 429514c4..00000000 --- a/test_package.sh +++ /dev/null @@ -1,10 +0,0 @@ -python3.8 setup.py bdist_wheel -conda create -n testmelodie python==3.8.5 -y -cd dist -source ~/.bash_profile -conda activate testmelodie -pip install Melodie-0.1.0-cp38-cp38-macosx_10_9_x86_64.whl -pip install pytest -cd ../tests -pytest -#conda remove -n testmelodie --all -y \ No newline at end of file diff --git a/tests/infra/config.py b/tests/infra/config.py index d2177e62..e86ec5b4 100644 --- a/tests/infra/config.py +++ b/tests/infra/config.py @@ -34,7 +34,9 @@ "temp_db_trainer", os.path.dirname(__file__), input_folder=os.path.join(os.path.dirname(__file__), "resources", "excels"), - output_folder=os.path.join(os.path.dirname(__file__), "resources", "output", "trainer"), + output_folder=os.path.join( + os.path.dirname(__file__), "resources", "output", "trainer" + ), ) cfg_dataloader_with_cache = Config( diff --git a/tests/infra/demo.py b/tests/infra/demo.py index 9a927e3f..2b9858d0 100644 --- a/tests/infra/demo.py +++ b/tests/infra/demo.py @@ -9,8 +9,8 @@ from Melodie import DataCollector if TYPE_CHECKING: - from source.scenario import AMETSScenario from source.environment import AMETSEnvironment + from source.scenario import AMETSScenario class AMETSDataCollector(DataCollector): diff --git a/tests/infra/simulator_demo.py b/tests/infra/simulator_demo.py index 0d0e2c15..3bdf8bd0 100644 --- a/tests/infra/simulator_demo.py +++ b/tests/infra/simulator_demo.py @@ -9,13 +9,13 @@ from Melodie import ( Agent, + Config, DataCollector, + DataLoader, Environment, + Model, Scenario, Simulator, - Model, - DataLoader, - Config, ) cfg_for_temp = Config( diff --git a/tests/infra/test_agent_manager.py b/tests/infra/test_agent_manager.py index b5ab7382..cd611bdd 100644 --- a/tests/infra/test_agent_manager.py +++ b/tests/infra/test_agent_manager.py @@ -1,9 +1,10 @@ import random + import pandas as pd -from Melodie import Agent, AgentList, GridAgent, set_seed, assert_exc_type_occurs -from MelodieInfra import GeneralTable from sqlalchemy import Integer +from Melodie import Agent, AgentList, GridAgent, set_seed +from MelodieInfra import GeneralTable from tests.infra.config import model @@ -123,7 +124,6 @@ def test_repr_agent_manager(): def test_agent_list_iteration(): - n = 20 al = AgentList(TestAgent, model) times = 0 for _ in al: diff --git a/tests/infra/test_ast.py b/tests/infra/test_ast.py index e5208b0c..d7c8b2b8 100644 --- a/tests/infra/test_ast.py +++ b/tests/infra/test_ast.py @@ -3,18 +3,7 @@ # @Author: Zhanyi Hou # @Email: 1295752786@qq.com # @File: test_ast.py -import ast -import os.path -import sys -import astunparse -import pprintast -from MelodieInfra.lowcode.astmani.ast_manipulator import FuncDefManipulator - -from MelodieInfra.lowcode.astmani.model_static_inspector import ( - get_model_ast, - walk_model_ast, -) # # def test_ast_manipulator(): diff --git a/tests/infra/test_chart_manager.py b/tests/infra/test_chart_manager.py index 9353f990..b6400ecc 100644 --- a/tests/infra/test_chart_manager.py +++ b/tests/infra/test_chart_manager.py @@ -10,4 +10,3 @@ def test_chart_manager(): cm.to_json(), indent=4 ) # It is fine if json.dumps function does not raise any exception. print(ret) - pass diff --git a/tests/infra/test_data_collector.py b/tests/infra/test_data_collector.py index df73f0db..d6fb4291 100644 --- a/tests/infra/test_data_collector.py +++ b/tests/infra/test_data_collector.py @@ -9,31 +9,28 @@ from Melodie import ( Agent, + Config, DataCollector, + DataLoader, Environment, + Model, Scenario, Simulator, - Model, - DataLoader, - Config ) + cfg_for_temp = Config( "temp_db_created", os.path.dirname(__file__), - input_folder=os.path.join(os.path.dirname( - __file__), "resources", "excels"), - output_folder=os.path.join(os.path.dirname( - __file__), "resources", "output"), - data_output_type="sqlite" + input_folder=os.path.join(os.path.dirname(__file__), "resources", "excels"), + output_folder=os.path.join(os.path.dirname(__file__), "resources", "output"), + data_output_type="sqlite", ) cfg_for_calibrator = Config( "temp_db_calibrator", os.path.dirname(__file__), - input_folder=os.path.join(os.path.dirname( - __file__), "resources", "excels"), - output_folder=os.path.join(os.path.dirname( - __file__), "resources", "output"), - data_output_type="sqlite" + input_folder=os.path.join(os.path.dirname(__file__), "resources", "excels"), + output_folder=os.path.join(os.path.dirname(__file__), "resources", "output"), + data_output_type="sqlite", ) AGENT_NUM_1 = 10 AGENT_NUM_2 = 20 @@ -72,11 +69,9 @@ def setup(self): # params_df_3 = pd.DataFrame( # [{"a": 1.0, "b": 1, "productivity": 0} for i in range(20)] # ) - self.agent_list1 = self.create_agent_container( - TestAgent, 10, params_df_1) + self.agent_list1 = self.create_agent_container(TestAgent, 10, params_df_1) self.agent_list1.setup_agents(10, params_df_1) - self.agent_list2 = self.create_agent_container( - TestAgent, 20, params_df_2) + self.agent_list2 = self.create_agent_container(TestAgent, 20, params_df_2) self.agent_list2.setup_agents(20, params_df_2) self.environment = self.create_environment(TestEnv) self.data_collector = self.create_data_collector(DataCollector1) @@ -131,7 +126,7 @@ def test_model_run(): def test_status(): - from tests.procedures.calibrator import CovidCalibrator, CovidScenario, CovidModel + from tests.procedures.calibrator import CovidCalibrator, CovidModel, CovidScenario calibrator = CovidCalibrator( cfg_for_calibrator, CovidScenario, CovidModel, DFLoader diff --git a/tests/infra/test_data_collector_csv.py b/tests/infra/test_data_collector_csv.py index 33004b90..4a57271e 100644 --- a/tests/infra/test_data_collector_csv.py +++ b/tests/infra/test_data_collector_csv.py @@ -9,22 +9,20 @@ from Melodie import ( Agent, + Config, DataCollector, + DataLoader, Environment, + Model, Scenario, Simulator, - Model, - DataLoader, - Config ) cfg_for_temp = Config( "temp_db_created", os.path.dirname(__file__), - input_folder=os.path.join(os.path.dirname( - __file__), "resources", "excels"), - output_folder=os.path.join(os.path.dirname( - __file__), "resources", "output"), + input_folder=os.path.join(os.path.dirname(__file__), "resources", "excels"), + output_folder=os.path.join(os.path.dirname(__file__), "resources", "output"), ) AGENT_NUM_1 = 10 AGENT_NUM_2 = 20 @@ -63,15 +61,14 @@ def setup(self): # params_df_3 = pd.DataFrame( # [{"a": 1.0, "b": 1, "productivity": 0} for i in range(20)] # ) - self.agent_list1 = self.create_agent_container( - TestAgent, 10, params_df_1) + self.agent_list1 = self.create_agent_container(TestAgent, 10, params_df_1) self.agent_list1.setup_agents(10, params_df_1) - self.agent_list2 = self.create_agent_container( - TestAgent, 20, params_df_2) + self.agent_list2 = self.create_agent_container(TestAgent, 20, params_df_2) self.agent_list2.setup_agents(20, params_df_2) self.environment = self.create_environment(TestEnv) self.data_collector: DataCollector1[DCTestModel] = self.create_data_collector( - DataCollector1) + DataCollector1 + ) class Simulator4Test(Simulator): @@ -102,14 +99,26 @@ def setup(self): self.add_agent_property("agent_list2", "b") def get_data(model: DCTestModel): - return {"agent1_num": len(model.agent_list1), "agent2_num": len(model.agent_list2)} + return { + "agent1_num": len(model.agent_list1), + "agent2_num": len(model.agent_list2), + } def get_data2(model: DCTestModel): - return [{"agent1_num": len(model.agent_list1), "agent2_num": len(model.agent_list2)} for i in range(2)] - self.add_custom_collector("my_collector", get_data, [ - 'agent1_num', "agent2_num"]) - self.add_custom_collector("my_collector2", get_data2, [ - 'agent1_num', "agent2_num"]) + return [ + { + "agent1_num": len(model.agent_list1), + "agent2_num": len(model.agent_list2), + } + for i in range(2) + ] + + self.add_custom_collector( + "my_collector", get_data, ["agent1_num", "agent2_num"] + ) + self.add_custom_collector( + "my_collector2", get_data2, ["agent1_num", "agent2_num"] + ) def test_model_run(): @@ -130,6 +139,6 @@ def test_model_run(): assert len(dc.agent_properties_dict["agent_list1"]) == AGENT_NUM_1 * 2 assert len(dc.agent_properties_dict["agent_list2"]) == AGENT_NUM_2 * 2 - assert len(dc._custom_collected_data['my_collector'].data) == 2 - assert len(dc._custom_collected_data['my_collector2'].data) == 4 + assert len(dc._custom_collected_data["my_collector"].data) == 2 + assert len(dc._custom_collected_data["my_collector2"].data) == 4 dc.save() diff --git a/tests/infra/test_data_loader.py b/tests/infra/test_data_loader.py index 47ee3a89..9b68610e 100644 --- a/tests/infra/test_data_loader.py +++ b/tests/infra/test_data_loader.py @@ -1,8 +1,10 @@ -from Melodie import DataLoader, Scenario, DataFrameInfo, Simulator -from tests.infra.config import cfg_dataloader_with_cache, cfg_dataloader_without_cache from collections import namedtuple + from sqlalchemy import BigInteger, Float +from Melodie import DataFrameInfo, DataLoader, Scenario +from tests.infra.config import cfg_dataloader_with_cache + def test_data_loader(): sim = namedtuple("PseudoSimulator", ["data_loader"]) diff --git a/tests/infra/test_db.py b/tests/infra/test_db.py index 27f7cc84..f47ae28d 100644 --- a/tests/infra/test_db.py +++ b/tests/infra/test_db.py @@ -2,11 +2,11 @@ import os import pandas as pd -from pandas.api.types import is_integer_dtype, is_float_dtype +from pandas.api.types import is_float_dtype, is_integer_dtype from sqlalchemy.types import Integer -from MelodieInfra import create_db_conn, DBConn, MelodieException from Melodie import Scenario +from MelodieInfra import DBConn, MelodieException, create_db_conn from tests.infra.config import cfg cfg = cfg diff --git a/tests/infra/test_errors.py b/tests/infra/test_errors.py index 4010a12a..3a09c7ec 100644 --- a/tests/infra/test_errors.py +++ b/tests/infra/test_errors.py @@ -1,5 +1,6 @@ -from Melodie import DataFrameInfo from sqlalchemy import Integer + +from Melodie import DataFrameInfo from MelodieInfra.exceptions.exceptions import assert_exc_occurs df_info = DataFrameInfo("df_name", {"a": Integer(), "b": Integer(), "c": Integer()}) diff --git a/tests/infra/test_grid.py b/tests/infra/test_grid.py index 74293615..4463cd7f 100644 --- a/tests/infra/test_grid.py +++ b/tests/infra/test_grid.py @@ -4,7 +4,7 @@ import numpy as np -from Melodie import Grid, Spot, GridAgent, Agent, AgentList +from Melodie import Agent, AgentList, Grid, GridAgent, Spot from tests.infra.config import model logger = logging.getLogger(__name__) diff --git a/tests/infra/test_model.py b/tests/infra/test_model.py index b03f29fe..ec0f8acf 100644 --- a/tests/infra/test_model.py +++ b/tests/infra/test_model.py @@ -1,8 +1,8 @@ # -*- coding:utf-8 -*- import pandas as pd -from MelodieInfra import MelodieException from Melodie import Agent, Model, Scenario +from MelodieInfra import MelodieException from tests.infra.config import cfg diff --git a/tests/infra/test_models.py b/tests/infra/test_models.py index 0d73d2cb..37b203eb 100644 --- a/tests/infra/test_models.py +++ b/tests/infra/test_models.py @@ -5,9 +5,9 @@ # @File: test_file_io.py from MelodieInfra import ( + ExcelReadSheetResponse, ExcelWriteRequest, assert_exc_type_occurs, - ExcelReadSheetResponse, ) diff --git a/tests/infra/test_network.py b/tests/infra/test_network.py index 5ab96f66..2f860db4 100644 --- a/tests/infra/test_network.py +++ b/tests/infra/test_network.py @@ -1,4 +1,4 @@ -from Melodie import AgentList, Model, Scenario, Edge, Network +from Melodie import AgentList, Edge, Model, Network, Scenario from Melodie.network import NetworkAgent from tests.infra.config import cfg diff --git a/tests/infra/test_params.py b/tests/infra/test_params.py index 70119c22..0891bd49 100644 --- a/tests/infra/test_params.py +++ b/tests/infra/test_params.py @@ -8,7 +8,7 @@ import pandas as pd from Melodie import Scenario -from MelodieInfra.lowcode.params import IntParam, ArrayParam, ParamsManager, FloatParam +from MelodieInfra.lowcode.params import ArrayParam, FloatParam, IntParam, ParamsManager class TestScenario(Scenario): diff --git a/tests/infra/test_tools.py b/tests/infra/test_tools.py index 9cb2e181..31461f47 100644 --- a/tests/infra/test_tools.py +++ b/tests/infra/test_tools.py @@ -1,4 +1,4 @@ -from Melodie import run_profile, get_system_info +from Melodie import get_system_info, run_profile def test_profiler(): diff --git a/tests/infra/test_typing.py b/tests/infra/test_typing.py index d376a1b8..a76dbe38 100644 --- a/tests/infra/test_typing.py +++ b/tests/infra/test_typing.py @@ -1,17 +1,22 @@ -from typing import Callable, Dict, Any +from typing import Any, Callable, Dict + class Model: pass + class DCTestModel(Model): pass + def add_custom_collector(row_collector: Callable[[Model], Dict[str, Any]]) -> None: # 函数实现 pass + def my_collector(model: DCTestModel) -> Dict[str, int]: # 自定义收集器实现 pass + add_custom_collector(my_collector) diff --git a/tests/procedures/calibrator.py b/tests/procedures/calibrator.py index e1a16acb..4bcf2340 100644 --- a/tests/procedures/calibrator.py +++ b/tests/procedures/calibrator.py @@ -1,15 +1,15 @@ import random -from typing import List, Union +from typing import List from Melodie import ( + AgentList, Calibrator, + DataCollector, Environment, - Model, - AgentList, + Grid, GridAgent, + Model, Scenario, - Grid, - DataCollector, ) diff --git a/tests/procedures/new_trainer_algorithm.py b/tests/procedures/new_trainer_algorithm.py index c222725a..7bb34809 100644 --- a/tests/procedures/new_trainer_algorithm.py +++ b/tests/procedures/new_trainer_algorithm.py @@ -1,25 +1,17 @@ # -*- coding:utf-8 -*- -from typing import List # import pytest import os -from Melodie import ( - Agent, - Model, - Scenario, - Trainer, - DataLoader, - Environment, - Config -) -from Melodie.trainer import GATrainerAlgorithm, GATrainerAlgorithmMeta, GATrainerParams +from typing import List + +from Melodie import Agent, Config, DataLoader, Environment, Model, Scenario, Trainer cfg_for_trainer = Config( "temp_db_trainer", os.path.dirname(__file__), - input_folder=os.path.join(os.path.dirname( - __file__), "resources", "excels"), - output_folder=os.path.join(os.path.dirname( - __file__), "resources", "output", "trainer"), + input_folder=os.path.join(os.path.dirname(__file__), "resources", "excels"), + output_folder=os.path.join( + os.path.dirname(__file__), "resources", "output", "trainer" + ), ) @@ -44,8 +36,7 @@ def generate_scenarios(self, manager_type: str) -> List["Scenario"]: class MockTrainer(Trainer): def setup(self): self.add_agent_training_property( - "agent_list", ["param1", "param2"], lambda s: [ - i for i in range(10)] + "agent_list", ["param1", "param2"], lambda s: [i for i in range(10)] ) def utility(self, agent: Agent) -> float: diff --git a/tests/procedures/resources/output/parallel_simulation/Result_AgentList1.csv b/tests/procedures/resources/output/parallel_simulation/Result_AgentList1.csv index c86c91f2..35fe4b32 100644 --- a/tests/procedures/resources/output/parallel_simulation/Result_AgentList1.csv +++ b/tests/procedures/resources/output/parallel_simulation/Result_AgentList1.csv @@ -999,2006 +999,6 @@ id_scenario,id_run,period,id,a 0,0,99,7,1 0,0,99,8,1 0,0,99,9,1 -0,1,0,0,1 -0,1,0,1,1 -0,1,0,2,1 -0,1,0,3,1 -0,1,0,4,1 -0,1,0,5,1 -0,1,0,6,1 -0,1,0,7,1 -0,1,0,8,1 -0,1,0,9,1 -0,1,1,0,1 -0,1,1,1,1 -0,1,1,2,1 -0,1,1,3,1 -0,1,1,4,1 -0,1,1,5,1 -0,1,1,6,1 -0,1,1,7,1 -0,1,1,8,1 -0,1,1,9,1 -0,1,2,0,1 -0,1,2,1,1 -0,1,2,2,1 -0,1,2,3,1 -0,1,2,4,1 -0,1,2,5,1 -0,1,2,6,1 -0,1,2,7,1 -0,1,2,8,1 -0,1,2,9,1 -0,1,3,0,1 -0,1,3,1,1 -0,1,3,2,1 -0,1,3,3,1 -0,1,3,4,1 -0,1,3,5,1 -0,1,3,6,1 -0,1,3,7,1 -0,1,3,8,1 -0,1,3,9,1 -0,1,4,0,1 -0,1,4,1,1 -0,1,4,2,1 -0,1,4,3,1 -0,1,4,4,1 -0,1,4,5,1 -0,1,4,6,1 -0,1,4,7,1 -0,1,4,8,1 -0,1,4,9,1 -0,1,5,0,1 -0,1,5,1,1 -0,1,5,2,1 -0,1,5,3,1 -0,1,5,4,1 -0,1,5,5,1 -0,1,5,6,1 -0,1,5,7,1 -0,1,5,8,1 -0,1,5,9,1 -0,1,6,0,1 -0,1,6,1,1 -0,1,6,2,1 -0,1,6,3,1 -0,1,6,4,1 -0,1,6,5,1 -0,1,6,6,1 -0,1,6,7,1 -0,1,6,8,1 -0,1,6,9,1 -0,1,7,0,1 -0,1,7,1,1 -0,1,7,2,1 -0,1,7,3,1 -0,1,7,4,1 -0,1,7,5,1 -0,1,7,6,1 -0,1,7,7,1 -0,1,7,8,1 -0,1,7,9,1 -0,1,8,0,1 -0,1,8,1,1 -0,1,8,2,1 -0,1,8,3,1 -0,1,8,4,1 -0,1,8,5,1 -0,1,8,6,1 -0,1,8,7,1 -0,1,8,8,1 -0,1,8,9,1 -0,1,9,0,1 -0,1,9,1,1 -0,1,9,2,1 -0,1,9,3,1 -0,1,9,4,1 -0,1,9,5,1 -0,1,9,6,1 -0,1,9,7,1 -0,1,9,8,1 -0,1,9,9,1 -0,1,10,0,1 -0,1,10,1,1 -0,1,10,2,1 -0,1,10,3,1 -0,1,10,4,1 -0,1,10,5,1 -0,1,10,6,1 -0,1,10,7,1 -0,1,10,8,1 -0,1,10,9,1 -0,1,11,0,1 -0,1,11,1,1 -0,1,11,2,1 -0,1,11,3,1 -0,1,11,4,1 -0,1,11,5,1 -0,1,11,6,1 -0,1,11,7,1 -0,1,11,8,1 -0,1,11,9,1 -0,1,12,0,1 -0,1,12,1,1 -0,1,12,2,1 -0,1,12,3,1 -0,1,12,4,1 -0,1,12,5,1 -0,1,12,6,1 -0,1,12,7,1 -0,1,12,8,1 -0,1,12,9,1 -0,1,13,0,1 -0,1,13,1,1 -0,1,13,2,1 -0,1,13,3,1 -0,1,13,4,1 -0,1,13,5,1 -0,1,13,6,1 -0,1,13,7,1 -0,1,13,8,1 -0,1,13,9,1 -0,1,14,0,1 -0,1,14,1,1 -0,1,14,2,1 -0,1,14,3,1 -0,1,14,4,1 -0,1,14,5,1 -0,1,14,6,1 -0,1,14,7,1 -0,1,14,8,1 -0,1,14,9,1 -0,1,15,0,1 -0,1,15,1,1 -0,1,15,2,1 -0,1,15,3,1 -0,1,15,4,1 -0,1,15,5,1 -0,1,15,6,1 -0,1,15,7,1 -0,1,15,8,1 -0,1,15,9,1 -0,1,16,0,1 -0,1,16,1,1 -0,1,16,2,1 -0,1,16,3,1 -0,1,16,4,1 -0,1,16,5,1 -0,1,16,6,1 -0,1,16,7,1 -0,1,16,8,1 -0,1,16,9,1 -0,1,17,0,1 -0,1,17,1,1 -0,1,17,2,1 -0,1,17,3,1 -0,1,17,4,1 -0,1,17,5,1 -0,1,17,6,1 -0,1,17,7,1 -0,1,17,8,1 -0,1,17,9,1 -0,1,18,0,1 -0,1,18,1,1 -0,1,18,2,1 -0,1,18,3,1 -0,1,18,4,1 -0,1,18,5,1 -0,1,18,6,1 -0,1,18,7,1 -0,1,18,8,1 -0,1,18,9,1 -0,1,19,0,1 -0,1,19,1,1 -0,1,19,2,1 -0,1,19,3,1 -0,1,19,4,1 -0,1,19,5,1 -0,1,19,6,1 -0,1,19,7,1 -0,1,19,8,1 -0,1,19,9,1 -0,1,20,0,1 -0,1,20,1,1 -0,1,20,2,1 -0,1,20,3,1 -0,1,20,4,1 -0,1,20,5,1 -0,1,20,6,1 -0,1,20,7,1 -0,1,20,8,1 -0,1,20,9,1 -0,1,21,0,1 -0,1,21,1,1 -0,1,21,2,1 -0,1,21,3,1 -0,1,21,4,1 -0,1,21,5,1 -0,1,21,6,1 -0,1,21,7,1 -0,1,21,8,1 -0,1,21,9,1 -0,1,22,0,1 -0,1,22,1,1 -0,1,22,2,1 -0,1,22,3,1 -0,1,22,4,1 -0,1,22,5,1 -0,1,22,6,1 -0,1,22,7,1 -0,1,22,8,1 -0,1,22,9,1 -0,1,23,0,1 -0,1,23,1,1 -0,1,23,2,1 -0,1,23,3,1 -0,1,23,4,1 -0,1,23,5,1 -0,1,23,6,1 -0,1,23,7,1 -0,1,23,8,1 -0,1,23,9,1 -0,1,24,0,1 -0,1,24,1,1 -0,1,24,2,1 -0,1,24,3,1 -0,1,24,4,1 -0,1,24,5,1 -0,1,24,6,1 -0,1,24,7,1 -0,1,24,8,1 -0,1,24,9,1 -0,1,25,0,1 -0,1,25,1,1 -0,1,25,2,1 -0,1,25,3,1 -0,1,25,4,1 -0,1,25,5,1 -0,1,25,6,1 -0,1,25,7,1 -0,1,25,8,1 -0,1,25,9,1 -0,1,26,0,1 -0,1,26,1,1 -0,1,26,2,1 -0,1,26,3,1 -0,1,26,4,1 -0,1,26,5,1 -0,1,26,6,1 -0,1,26,7,1 -0,1,26,8,1 -0,1,26,9,1 -0,1,27,0,1 -0,1,27,1,1 -0,1,27,2,1 -0,1,27,3,1 -0,1,27,4,1 -0,1,27,5,1 -0,1,27,6,1 -0,1,27,7,1 -0,1,27,8,1 -0,1,27,9,1 -0,1,28,0,1 -0,1,28,1,1 -0,1,28,2,1 -0,1,28,3,1 -0,1,28,4,1 -0,1,28,5,1 -0,1,28,6,1 -0,1,28,7,1 -0,1,28,8,1 -0,1,28,9,1 -0,1,29,0,1 -0,1,29,1,1 -0,1,29,2,1 -0,1,29,3,1 -0,1,29,4,1 -0,1,29,5,1 -0,1,29,6,1 -0,1,29,7,1 -0,1,29,8,1 -0,1,29,9,1 -0,1,30,0,1 -0,1,30,1,1 -0,1,30,2,1 -0,1,30,3,1 -0,1,30,4,1 -0,1,30,5,1 -0,1,30,6,1 -0,1,30,7,1 -0,1,30,8,1 -0,1,30,9,1 -0,1,31,0,1 -0,1,31,1,1 -0,1,31,2,1 -0,1,31,3,1 -0,1,31,4,1 -0,1,31,5,1 -0,1,31,6,1 -0,1,31,7,1 -0,1,31,8,1 -0,1,31,9,1 -0,1,32,0,1 -0,1,32,1,1 -0,1,32,2,1 -0,1,32,3,1 -0,1,32,4,1 -0,1,32,5,1 -0,1,32,6,1 -0,1,32,7,1 -0,1,32,8,1 -0,1,32,9,1 -0,1,33,0,1 -0,1,33,1,1 -0,1,33,2,1 -0,1,33,3,1 -0,1,33,4,1 -0,1,33,5,1 -0,1,33,6,1 -0,1,33,7,1 -0,1,33,8,1 -0,1,33,9,1 -0,1,34,0,1 -0,1,34,1,1 -0,1,34,2,1 -0,1,34,3,1 -0,1,34,4,1 -0,1,34,5,1 -0,1,34,6,1 -0,1,34,7,1 -0,1,34,8,1 -0,1,34,9,1 -0,1,35,0,1 -0,1,35,1,1 -0,1,35,2,1 -0,1,35,3,1 -0,1,35,4,1 -0,1,35,5,1 -0,1,35,6,1 -0,1,35,7,1 -0,1,35,8,1 -0,1,35,9,1 -0,1,36,0,1 -0,1,36,1,1 -0,1,36,2,1 -0,1,36,3,1 -0,1,36,4,1 -0,1,36,5,1 -0,1,36,6,1 -0,1,36,7,1 -0,1,36,8,1 -0,1,36,9,1 -0,1,37,0,1 -0,1,37,1,1 -0,1,37,2,1 -0,1,37,3,1 -0,1,37,4,1 -0,1,37,5,1 -0,1,37,6,1 -0,1,37,7,1 -0,1,37,8,1 -0,1,37,9,1 -0,1,38,0,1 -0,1,38,1,1 -0,1,38,2,1 -0,1,38,3,1 -0,1,38,4,1 -0,1,38,5,1 -0,1,38,6,1 -0,1,38,7,1 -0,1,38,8,1 -0,1,38,9,1 -0,1,39,0,1 -0,1,39,1,1 -0,1,39,2,1 -0,1,39,3,1 -0,1,39,4,1 -0,1,39,5,1 -0,1,39,6,1 -0,1,39,7,1 -0,1,39,8,1 -0,1,39,9,1 -0,1,40,0,1 -0,1,40,1,1 -0,1,40,2,1 -0,1,40,3,1 -0,1,40,4,1 -0,1,40,5,1 -0,1,40,6,1 -0,1,40,7,1 -0,1,40,8,1 -0,1,40,9,1 -0,1,41,0,1 -0,1,41,1,1 -0,1,41,2,1 -0,1,41,3,1 -0,1,41,4,1 -0,1,41,5,1 -0,1,41,6,1 -0,1,41,7,1 -0,1,41,8,1 -0,1,41,9,1 -0,1,42,0,1 -0,1,42,1,1 -0,1,42,2,1 -0,1,42,3,1 -0,1,42,4,1 -0,1,42,5,1 -0,1,42,6,1 -0,1,42,7,1 -0,1,42,8,1 -0,1,42,9,1 -0,1,43,0,1 -0,1,43,1,1 -0,1,43,2,1 -0,1,43,3,1 -0,1,43,4,1 -0,1,43,5,1 -0,1,43,6,1 -0,1,43,7,1 -0,1,43,8,1 -0,1,43,9,1 -0,1,44,0,1 -0,1,44,1,1 -0,1,44,2,1 -0,1,44,3,1 -0,1,44,4,1 -0,1,44,5,1 -0,1,44,6,1 -0,1,44,7,1 -0,1,44,8,1 -0,1,44,9,1 -0,1,45,0,1 -0,1,45,1,1 -0,1,45,2,1 -0,1,45,3,1 -0,1,45,4,1 -0,1,45,5,1 -0,1,45,6,1 -0,1,45,7,1 -0,1,45,8,1 -0,1,45,9,1 -0,1,46,0,1 -0,1,46,1,1 -0,1,46,2,1 -0,1,46,3,1 -0,1,46,4,1 -0,1,46,5,1 -0,1,46,6,1 -0,1,46,7,1 -0,1,46,8,1 -0,1,46,9,1 -0,1,47,0,1 -0,1,47,1,1 -0,1,47,2,1 -0,1,47,3,1 -0,1,47,4,1 -0,1,47,5,1 -0,1,47,6,1 -0,1,47,7,1 -0,1,47,8,1 -0,1,47,9,1 -0,1,48,0,1 -0,1,48,1,1 -0,1,48,2,1 -0,1,48,3,1 -0,1,48,4,1 -0,1,48,5,1 -0,1,48,6,1 -0,1,48,7,1 -0,1,48,8,1 -0,1,48,9,1 -0,1,49,0,1 -0,1,49,1,1 -0,1,49,2,1 -0,1,49,3,1 -0,1,49,4,1 -0,1,49,5,1 -0,1,49,6,1 -0,1,49,7,1 -0,1,49,8,1 -0,1,49,9,1 -0,1,50,0,1 -0,1,50,1,1 -0,1,50,2,1 -0,1,50,3,1 -0,1,50,4,1 -0,1,50,5,1 -0,1,50,6,1 -0,1,50,7,1 -0,1,50,8,1 -0,1,50,9,1 -0,1,51,0,1 -0,1,51,1,1 -0,1,51,2,1 -0,1,51,3,1 -0,1,51,4,1 -0,1,51,5,1 -0,1,51,6,1 -0,1,51,7,1 -0,1,51,8,1 -0,1,51,9,1 -0,1,52,0,1 -0,1,52,1,1 -0,1,52,2,1 -0,1,52,3,1 -0,1,52,4,1 -0,1,52,5,1 -0,1,52,6,1 -0,1,52,7,1 -0,1,52,8,1 -0,1,52,9,1 -0,1,53,0,1 -0,1,53,1,1 -0,1,53,2,1 -0,1,53,3,1 -0,1,53,4,1 -0,1,53,5,1 -0,1,53,6,1 -0,1,53,7,1 -0,1,53,8,1 -0,1,53,9,1 -0,1,54,0,1 -0,1,54,1,1 -0,1,54,2,1 -0,1,54,3,1 -0,1,54,4,1 -0,1,54,5,1 -0,1,54,6,1 -0,1,54,7,1 -0,1,54,8,1 -0,1,54,9,1 -0,1,55,0,1 -0,1,55,1,1 -0,1,55,2,1 -0,1,55,3,1 -0,1,55,4,1 -0,1,55,5,1 -0,1,55,6,1 -0,1,55,7,1 -0,1,55,8,1 -0,1,55,9,1 -0,1,56,0,1 -0,1,56,1,1 -0,1,56,2,1 -0,1,56,3,1 -0,1,56,4,1 -0,1,56,5,1 -0,1,56,6,1 -0,1,56,7,1 -0,1,56,8,1 -0,1,56,9,1 -0,1,57,0,1 -0,1,57,1,1 -0,1,57,2,1 -0,1,57,3,1 -0,1,57,4,1 -0,1,57,5,1 -0,1,57,6,1 -0,1,57,7,1 -0,1,57,8,1 -0,1,57,9,1 -0,1,58,0,1 -0,1,58,1,1 -0,1,58,2,1 -0,1,58,3,1 -0,1,58,4,1 -0,1,58,5,1 -0,1,58,6,1 -0,1,58,7,1 -0,1,58,8,1 -0,1,58,9,1 -0,1,59,0,1 -0,1,59,1,1 -0,1,59,2,1 -0,1,59,3,1 -0,1,59,4,1 -0,1,59,5,1 -0,1,59,6,1 -0,1,59,7,1 -0,1,59,8,1 -0,1,59,9,1 -0,1,60,0,1 -0,1,60,1,1 -0,1,60,2,1 -0,1,60,3,1 -0,1,60,4,1 -0,1,60,5,1 -0,1,60,6,1 -0,1,60,7,1 -0,1,60,8,1 -0,1,60,9,1 -0,1,61,0,1 -0,1,61,1,1 -0,1,61,2,1 -0,1,61,3,1 -0,1,61,4,1 -0,1,61,5,1 -0,1,61,6,1 -0,1,61,7,1 -0,1,61,8,1 -0,1,61,9,1 -0,1,62,0,1 -0,1,62,1,1 -0,1,62,2,1 -0,1,62,3,1 -0,1,62,4,1 -0,1,62,5,1 -0,1,62,6,1 -0,1,62,7,1 -0,1,62,8,1 -0,1,62,9,1 -0,1,63,0,1 -0,1,63,1,1 -0,1,63,2,1 -0,1,63,3,1 -0,1,63,4,1 -0,1,63,5,1 -0,1,63,6,1 -0,1,63,7,1 -0,1,63,8,1 -0,1,63,9,1 -0,1,64,0,1 -0,1,64,1,1 -0,1,64,2,1 -0,1,64,3,1 -0,1,64,4,1 -0,1,64,5,1 -0,1,64,6,1 -0,1,64,7,1 -0,1,64,8,1 -0,1,64,9,1 -0,1,65,0,1 -0,1,65,1,1 -0,1,65,2,1 -0,1,65,3,1 -0,1,65,4,1 -0,1,65,5,1 -0,1,65,6,1 -0,1,65,7,1 -0,1,65,8,1 -0,1,65,9,1 -0,1,66,0,1 -0,1,66,1,1 -0,1,66,2,1 -0,1,66,3,1 -0,1,66,4,1 -0,1,66,5,1 -0,1,66,6,1 -0,1,66,7,1 -0,1,66,8,1 -0,1,66,9,1 -0,1,67,0,1 -0,1,67,1,1 -0,1,67,2,1 -0,1,67,3,1 -0,1,67,4,1 -0,1,67,5,1 -0,1,67,6,1 -0,1,67,7,1 -0,1,67,8,1 -0,1,67,9,1 -0,1,68,0,1 -0,1,68,1,1 -0,1,68,2,1 -0,1,68,3,1 -0,1,68,4,1 -0,1,68,5,1 -0,1,68,6,1 -0,1,68,7,1 -0,1,68,8,1 -0,1,68,9,1 -0,1,69,0,1 -0,1,69,1,1 -0,1,69,2,1 -0,1,69,3,1 -0,1,69,4,1 -0,1,69,5,1 -0,1,69,6,1 -0,1,69,7,1 -0,1,69,8,1 -0,1,69,9,1 -0,1,70,0,1 -0,1,70,1,1 -0,1,70,2,1 -0,1,70,3,1 -0,1,70,4,1 -0,1,70,5,1 -0,1,70,6,1 -0,1,70,7,1 -0,1,70,8,1 -0,1,70,9,1 -0,1,71,0,1 -0,1,71,1,1 -0,1,71,2,1 -0,1,71,3,1 -0,1,71,4,1 -0,1,71,5,1 -0,1,71,6,1 -0,1,71,7,1 -0,1,71,8,1 -0,1,71,9,1 -0,1,72,0,1 -0,1,72,1,1 -0,1,72,2,1 -0,1,72,3,1 -0,1,72,4,1 -0,1,72,5,1 -0,1,72,6,1 -0,1,72,7,1 -0,1,72,8,1 -0,1,72,9,1 -0,1,73,0,1 -0,1,73,1,1 -0,1,73,2,1 -0,1,73,3,1 -0,1,73,4,1 -0,1,73,5,1 -0,1,73,6,1 -0,1,73,7,1 -0,1,73,8,1 -0,1,73,9,1 -0,1,74,0,1 -0,1,74,1,1 -0,1,74,2,1 -0,1,74,3,1 -0,1,74,4,1 -0,1,74,5,1 -0,1,74,6,1 -0,1,74,7,1 -0,1,74,8,1 -0,1,74,9,1 -0,1,75,0,1 -0,1,75,1,1 -0,1,75,2,1 -0,1,75,3,1 -0,1,75,4,1 -0,1,75,5,1 -0,1,75,6,1 -0,1,75,7,1 -0,1,75,8,1 -0,1,75,9,1 -0,1,76,0,1 -0,1,76,1,1 -0,1,76,2,1 -0,1,76,3,1 -0,1,76,4,1 -0,1,76,5,1 -0,1,76,6,1 -0,1,76,7,1 -0,1,76,8,1 -0,1,76,9,1 -0,1,77,0,1 -0,1,77,1,1 -0,1,77,2,1 -0,1,77,3,1 -0,1,77,4,1 -0,1,77,5,1 -0,1,77,6,1 -0,1,77,7,1 -0,1,77,8,1 -0,1,77,9,1 -0,1,78,0,1 -0,1,78,1,1 -0,1,78,2,1 -0,1,78,3,1 -0,1,78,4,1 -0,1,78,5,1 -0,1,78,6,1 -0,1,78,7,1 -0,1,78,8,1 -0,1,78,9,1 -0,1,79,0,1 -0,1,79,1,1 -0,1,79,2,1 -0,1,79,3,1 -0,1,79,4,1 -0,1,79,5,1 -0,1,79,6,1 -0,1,79,7,1 -0,1,79,8,1 -0,1,79,9,1 -0,1,80,0,1 -0,1,80,1,1 -0,1,80,2,1 -0,1,80,3,1 -0,1,80,4,1 -0,1,80,5,1 -0,1,80,6,1 -0,1,80,7,1 -0,1,80,8,1 -0,1,80,9,1 -0,1,81,0,1 -0,1,81,1,1 -0,1,81,2,1 -0,1,81,3,1 -0,1,81,4,1 -0,1,81,5,1 -0,1,81,6,1 -0,1,81,7,1 -0,1,81,8,1 -0,1,81,9,1 -0,1,82,0,1 -0,1,82,1,1 -0,1,82,2,1 -0,1,82,3,1 -0,1,82,4,1 -0,1,82,5,1 -0,1,82,6,1 -0,1,82,7,1 -0,1,82,8,1 -0,1,82,9,1 -0,1,83,0,1 -0,1,83,1,1 -0,1,83,2,1 -0,1,83,3,1 -0,1,83,4,1 -0,1,83,5,1 -0,1,83,6,1 -0,1,83,7,1 -0,1,83,8,1 -0,1,83,9,1 -0,1,84,0,1 -0,1,84,1,1 -0,1,84,2,1 -0,1,84,3,1 -0,1,84,4,1 -0,1,84,5,1 -0,1,84,6,1 -0,1,84,7,1 -0,1,84,8,1 -0,1,84,9,1 -0,1,85,0,1 -0,1,85,1,1 -0,1,85,2,1 -0,1,85,3,1 -0,1,85,4,1 -0,1,85,5,1 -0,1,85,6,1 -0,1,85,7,1 -0,1,85,8,1 -0,1,85,9,1 -0,1,86,0,1 -0,1,86,1,1 -0,1,86,2,1 -0,1,86,3,1 -0,1,86,4,1 -0,1,86,5,1 -0,1,86,6,1 -0,1,86,7,1 -0,1,86,8,1 -0,1,86,9,1 -0,1,87,0,1 -0,1,87,1,1 -0,1,87,2,1 -0,1,87,3,1 -0,1,87,4,1 -0,1,87,5,1 -0,1,87,6,1 -0,1,87,7,1 -0,1,87,8,1 -0,1,87,9,1 -0,1,88,0,1 -0,1,88,1,1 -0,1,88,2,1 -0,1,88,3,1 -0,1,88,4,1 -0,1,88,5,1 -0,1,88,6,1 -0,1,88,7,1 -0,1,88,8,1 -0,1,88,9,1 -0,1,89,0,1 -0,1,89,1,1 -0,1,89,2,1 -0,1,89,3,1 -0,1,89,4,1 -0,1,89,5,1 -0,1,89,6,1 -0,1,89,7,1 -0,1,89,8,1 -0,1,89,9,1 -0,1,90,0,1 -0,1,90,1,1 -0,1,90,2,1 -0,1,90,3,1 -0,1,90,4,1 -0,1,90,5,1 -0,1,90,6,1 -0,1,90,7,1 -0,1,90,8,1 -0,1,90,9,1 -0,1,91,0,1 -0,1,91,1,1 -0,1,91,2,1 -0,1,91,3,1 -0,1,91,4,1 -0,1,91,5,1 -0,1,91,6,1 -0,1,91,7,1 -0,1,91,8,1 -0,1,91,9,1 -0,1,92,0,1 -0,1,92,1,1 -0,1,92,2,1 -0,1,92,3,1 -0,1,92,4,1 -0,1,92,5,1 -0,1,92,6,1 -0,1,92,7,1 -0,1,92,8,1 -0,1,92,9,1 -0,1,93,0,1 -0,1,93,1,1 -0,1,93,2,1 -0,1,93,3,1 -0,1,93,4,1 -0,1,93,5,1 -0,1,93,6,1 -0,1,93,7,1 -0,1,93,8,1 -0,1,93,9,1 -0,1,94,0,1 -0,1,94,1,1 -0,1,94,2,1 -0,1,94,3,1 -0,1,94,4,1 -0,1,94,5,1 -0,1,94,6,1 -0,1,94,7,1 -0,1,94,8,1 -0,1,94,9,1 -0,1,95,0,1 -0,1,95,1,1 -0,1,95,2,1 -0,1,95,3,1 -0,1,95,4,1 -0,1,95,5,1 -0,1,95,6,1 -0,1,95,7,1 -0,1,95,8,1 -0,1,95,9,1 -0,1,96,0,1 -0,1,96,1,1 -0,1,96,2,1 -0,1,96,3,1 -0,1,96,4,1 -0,1,96,5,1 -0,1,96,6,1 -0,1,96,7,1 -0,1,96,8,1 -0,1,96,9,1 -0,1,97,0,1 -0,1,97,1,1 -0,1,97,2,1 -0,1,97,3,1 -0,1,97,4,1 -0,1,97,5,1 -0,1,97,6,1 -0,1,97,7,1 -0,1,97,8,1 -0,1,97,9,1 -0,1,98,0,1 -0,1,98,1,1 -0,1,98,2,1 -0,1,98,3,1 -0,1,98,4,1 -0,1,98,5,1 -0,1,98,6,1 -0,1,98,7,1 -0,1,98,8,1 -0,1,98,9,1 -0,1,99,0,1 -0,1,99,1,1 -0,1,99,2,1 -0,1,99,3,1 -0,1,99,4,1 -0,1,99,5,1 -0,1,99,6,1 -0,1,99,7,1 -0,1,99,8,1 -0,1,99,9,1 -1,1,0,0,1 -1,1,0,1,1 -1,1,0,2,1 -1,1,0,3,1 -1,1,0,4,1 -1,1,0,5,1 -1,1,0,6,1 -1,1,0,7,1 -1,1,0,8,1 -1,1,0,9,1 -1,1,1,0,1 -1,1,1,1,1 -1,1,1,2,1 -1,1,1,3,1 -1,1,1,4,1 -1,1,1,5,1 -1,1,1,6,1 -1,1,1,7,1 -1,1,1,8,1 -1,1,1,9,1 -1,1,2,0,1 -1,1,2,1,1 -1,1,2,2,1 -1,1,2,3,1 -1,1,2,4,1 -1,1,2,5,1 -1,1,2,6,1 -1,1,2,7,1 -1,1,2,8,1 -1,1,2,9,1 -1,1,3,0,1 -1,1,3,1,1 -1,1,3,2,1 -1,1,3,3,1 -1,1,3,4,1 -1,1,3,5,1 -1,1,3,6,1 -1,1,3,7,1 -1,1,3,8,1 -1,1,3,9,1 -1,1,4,0,1 -1,1,4,1,1 -1,1,4,2,1 -1,1,4,3,1 -1,1,4,4,1 -1,1,4,5,1 -1,1,4,6,1 -1,1,4,7,1 -1,1,4,8,1 -1,1,4,9,1 -1,1,5,0,1 -1,1,5,1,1 -1,1,5,2,1 -1,1,5,3,1 -1,1,5,4,1 -1,1,5,5,1 -1,1,5,6,1 -1,1,5,7,1 -1,1,5,8,1 -1,1,5,9,1 -1,1,6,0,1 -1,1,6,1,1 -1,1,6,2,1 -1,1,6,3,1 -1,1,6,4,1 -1,1,6,5,1 -1,1,6,6,1 -1,1,6,7,1 -1,1,6,8,1 -1,1,6,9,1 -1,1,7,0,1 -1,1,7,1,1 -1,1,7,2,1 -1,1,7,3,1 -1,1,7,4,1 -1,1,7,5,1 -1,1,7,6,1 -1,1,7,7,1 -1,1,7,8,1 -1,1,7,9,1 -1,1,8,0,1 -1,1,8,1,1 -1,1,8,2,1 -1,1,8,3,1 -1,1,8,4,1 -1,1,8,5,1 -1,1,8,6,1 -1,1,8,7,1 -1,1,8,8,1 -1,1,8,9,1 -1,1,9,0,1 -1,1,9,1,1 -1,1,9,2,1 -1,1,9,3,1 -1,1,9,4,1 -1,1,9,5,1 -1,1,9,6,1 -1,1,9,7,1 -1,1,9,8,1 -1,1,9,9,1 -1,1,10,0,1 -1,1,10,1,1 -1,1,10,2,1 -1,1,10,3,1 -1,1,10,4,1 -1,1,10,5,1 -1,1,10,6,1 -1,1,10,7,1 -1,1,10,8,1 -1,1,10,9,1 -1,1,11,0,1 -1,1,11,1,1 -1,1,11,2,1 -1,1,11,3,1 -1,1,11,4,1 -1,1,11,5,1 -1,1,11,6,1 -1,1,11,7,1 -1,1,11,8,1 -1,1,11,9,1 -1,1,12,0,1 -1,1,12,1,1 -1,1,12,2,1 -1,1,12,3,1 -1,1,12,4,1 -1,1,12,5,1 -1,1,12,6,1 -1,1,12,7,1 -1,1,12,8,1 -1,1,12,9,1 -1,1,13,0,1 -1,1,13,1,1 -1,1,13,2,1 -1,1,13,3,1 -1,1,13,4,1 -1,1,13,5,1 -1,1,13,6,1 -1,1,13,7,1 -1,1,13,8,1 -1,1,13,9,1 -1,1,14,0,1 -1,1,14,1,1 -1,1,14,2,1 -1,1,14,3,1 -1,1,14,4,1 -1,1,14,5,1 -1,1,14,6,1 -1,1,14,7,1 -1,1,14,8,1 -1,1,14,9,1 -1,1,15,0,1 -1,1,15,1,1 -1,1,15,2,1 -1,1,15,3,1 -1,1,15,4,1 -1,1,15,5,1 -1,1,15,6,1 -1,1,15,7,1 -1,1,15,8,1 -1,1,15,9,1 -1,1,16,0,1 -1,1,16,1,1 -1,1,16,2,1 -1,1,16,3,1 -1,1,16,4,1 -1,1,16,5,1 -1,1,16,6,1 -1,1,16,7,1 -1,1,16,8,1 -1,1,16,9,1 -1,1,17,0,1 -1,1,17,1,1 -1,1,17,2,1 -1,1,17,3,1 -1,1,17,4,1 -1,1,17,5,1 -1,1,17,6,1 -1,1,17,7,1 -1,1,17,8,1 -1,1,17,9,1 -1,1,18,0,1 -1,1,18,1,1 -1,1,18,2,1 -1,1,18,3,1 -1,1,18,4,1 -1,1,18,5,1 -1,1,18,6,1 -1,1,18,7,1 -1,1,18,8,1 -1,1,18,9,1 -1,1,19,0,1 -1,1,19,1,1 -1,1,19,2,1 -1,1,19,3,1 -1,1,19,4,1 -1,1,19,5,1 -1,1,19,6,1 -1,1,19,7,1 -1,1,19,8,1 -1,1,19,9,1 -1,1,20,0,1 -1,1,20,1,1 -1,1,20,2,1 -1,1,20,3,1 -1,1,20,4,1 -1,1,20,5,1 -1,1,20,6,1 -1,1,20,7,1 -1,1,20,8,1 -1,1,20,9,1 -1,1,21,0,1 -1,1,21,1,1 -1,1,21,2,1 -1,1,21,3,1 -1,1,21,4,1 -1,1,21,5,1 -1,1,21,6,1 -1,1,21,7,1 -1,1,21,8,1 -1,1,21,9,1 -1,1,22,0,1 -1,1,22,1,1 -1,1,22,2,1 -1,1,22,3,1 -1,1,22,4,1 -1,1,22,5,1 -1,1,22,6,1 -1,1,22,7,1 -1,1,22,8,1 -1,1,22,9,1 -1,1,23,0,1 -1,1,23,1,1 -1,1,23,2,1 -1,1,23,3,1 -1,1,23,4,1 -1,1,23,5,1 -1,1,23,6,1 -1,1,23,7,1 -1,1,23,8,1 -1,1,23,9,1 -1,1,24,0,1 -1,1,24,1,1 -1,1,24,2,1 -1,1,24,3,1 -1,1,24,4,1 -1,1,24,5,1 -1,1,24,6,1 -1,1,24,7,1 -1,1,24,8,1 -1,1,24,9,1 -1,1,25,0,1 -1,1,25,1,1 -1,1,25,2,1 -1,1,25,3,1 -1,1,25,4,1 -1,1,25,5,1 -1,1,25,6,1 -1,1,25,7,1 -1,1,25,8,1 -1,1,25,9,1 -1,1,26,0,1 -1,1,26,1,1 -1,1,26,2,1 -1,1,26,3,1 -1,1,26,4,1 -1,1,26,5,1 -1,1,26,6,1 -1,1,26,7,1 -1,1,26,8,1 -1,1,26,9,1 -1,1,27,0,1 -1,1,27,1,1 -1,1,27,2,1 -1,1,27,3,1 -1,1,27,4,1 -1,1,27,5,1 -1,1,27,6,1 -1,1,27,7,1 -1,1,27,8,1 -1,1,27,9,1 -1,1,28,0,1 -1,1,28,1,1 -1,1,28,2,1 -1,1,28,3,1 -1,1,28,4,1 -1,1,28,5,1 -1,1,28,6,1 -1,1,28,7,1 -1,1,28,8,1 -1,1,28,9,1 -1,1,29,0,1 -1,1,29,1,1 -1,1,29,2,1 -1,1,29,3,1 -1,1,29,4,1 -1,1,29,5,1 -1,1,29,6,1 -1,1,29,7,1 -1,1,29,8,1 -1,1,29,9,1 -1,1,30,0,1 -1,1,30,1,1 -1,1,30,2,1 -1,1,30,3,1 -1,1,30,4,1 -1,1,30,5,1 -1,1,30,6,1 -1,1,30,7,1 -1,1,30,8,1 -1,1,30,9,1 -1,1,31,0,1 -1,1,31,1,1 -1,1,31,2,1 -1,1,31,3,1 -1,1,31,4,1 -1,1,31,5,1 -1,1,31,6,1 -1,1,31,7,1 -1,1,31,8,1 -1,1,31,9,1 -1,1,32,0,1 -1,1,32,1,1 -1,1,32,2,1 -1,1,32,3,1 -1,1,32,4,1 -1,1,32,5,1 -1,1,32,6,1 -1,1,32,7,1 -1,1,32,8,1 -1,1,32,9,1 -1,1,33,0,1 -1,1,33,1,1 -1,1,33,2,1 -1,1,33,3,1 -1,1,33,4,1 -1,1,33,5,1 -1,1,33,6,1 -1,1,33,7,1 -1,1,33,8,1 -1,1,33,9,1 -1,1,34,0,1 -1,1,34,1,1 -1,1,34,2,1 -1,1,34,3,1 -1,1,34,4,1 -1,1,34,5,1 -1,1,34,6,1 -1,1,34,7,1 -1,1,34,8,1 -1,1,34,9,1 -1,1,35,0,1 -1,1,35,1,1 -1,1,35,2,1 -1,1,35,3,1 -1,1,35,4,1 -1,1,35,5,1 -1,1,35,6,1 -1,1,35,7,1 -1,1,35,8,1 -1,1,35,9,1 -1,1,36,0,1 -1,1,36,1,1 -1,1,36,2,1 -1,1,36,3,1 -1,1,36,4,1 -1,1,36,5,1 -1,1,36,6,1 -1,1,36,7,1 -1,1,36,8,1 -1,1,36,9,1 -1,1,37,0,1 -1,1,37,1,1 -1,1,37,2,1 -1,1,37,3,1 -1,1,37,4,1 -1,1,37,5,1 -1,1,37,6,1 -1,1,37,7,1 -1,1,37,8,1 -1,1,37,9,1 -1,1,38,0,1 -1,1,38,1,1 -1,1,38,2,1 -1,1,38,3,1 -1,1,38,4,1 -1,1,38,5,1 -1,1,38,6,1 -1,1,38,7,1 -1,1,38,8,1 -1,1,38,9,1 -1,1,39,0,1 -1,1,39,1,1 -1,1,39,2,1 -1,1,39,3,1 -1,1,39,4,1 -1,1,39,5,1 -1,1,39,6,1 -1,1,39,7,1 -1,1,39,8,1 -1,1,39,9,1 -1,1,40,0,1 -1,1,40,1,1 -1,1,40,2,1 -1,1,40,3,1 -1,1,40,4,1 -1,1,40,5,1 -1,1,40,6,1 -1,1,40,7,1 -1,1,40,8,1 -1,1,40,9,1 -1,1,41,0,1 -1,1,41,1,1 -1,1,41,2,1 -1,1,41,3,1 -1,1,41,4,1 -1,1,41,5,1 -1,1,41,6,1 -1,1,41,7,1 -1,1,41,8,1 -1,1,41,9,1 -1,1,42,0,1 -1,1,42,1,1 -1,1,42,2,1 -1,1,42,3,1 -1,1,42,4,1 -1,1,42,5,1 -1,1,42,6,1 -1,1,42,7,1 -1,1,42,8,1 -1,1,42,9,1 -1,1,43,0,1 -1,1,43,1,1 -1,1,43,2,1 -1,1,43,3,1 -1,1,43,4,1 -1,1,43,5,1 -1,1,43,6,1 -1,1,43,7,1 -1,1,43,8,1 -1,1,43,9,1 -1,1,44,0,1 -1,1,44,1,1 -1,1,44,2,1 -1,1,44,3,1 -1,1,44,4,1 -1,1,44,5,1 -1,1,44,6,1 -1,1,44,7,1 -1,1,44,8,1 -1,1,44,9,1 -1,1,45,0,1 -1,1,45,1,1 -1,1,45,2,1 -1,1,45,3,1 -1,1,45,4,1 -1,1,45,5,1 -1,1,45,6,1 -1,1,45,7,1 -1,1,45,8,1 -1,1,45,9,1 -1,1,46,0,1 -1,1,46,1,1 -1,1,46,2,1 -1,1,46,3,1 -1,1,46,4,1 -1,1,46,5,1 -1,1,46,6,1 -1,1,46,7,1 -1,1,46,8,1 -1,1,46,9,1 -1,1,47,0,1 -1,1,47,1,1 -1,1,47,2,1 -1,1,47,3,1 -1,1,47,4,1 -1,1,47,5,1 -1,1,47,6,1 -1,1,47,7,1 -1,1,47,8,1 -1,1,47,9,1 -1,1,48,0,1 -1,1,48,1,1 -1,1,48,2,1 -1,1,48,3,1 -1,1,48,4,1 -1,1,48,5,1 -1,1,48,6,1 -1,1,48,7,1 -1,1,48,8,1 -1,1,48,9,1 -1,1,49,0,1 -1,1,49,1,1 -1,1,49,2,1 -1,1,49,3,1 -1,1,49,4,1 -1,1,49,5,1 -1,1,49,6,1 -1,1,49,7,1 -1,1,49,8,1 -1,1,49,9,1 -1,1,50,0,1 -1,1,50,1,1 -1,1,50,2,1 -1,1,50,3,1 -1,1,50,4,1 -1,1,50,5,1 -1,1,50,6,1 -1,1,50,7,1 -1,1,50,8,1 -1,1,50,9,1 -1,1,51,0,1 -1,1,51,1,1 -1,1,51,2,1 -1,1,51,3,1 -1,1,51,4,1 -1,1,51,5,1 -1,1,51,6,1 -1,1,51,7,1 -1,1,51,8,1 -1,1,51,9,1 -1,1,52,0,1 -1,1,52,1,1 -1,1,52,2,1 -1,1,52,3,1 -1,1,52,4,1 -1,1,52,5,1 -1,1,52,6,1 -1,1,52,7,1 -1,1,52,8,1 -1,1,52,9,1 -1,1,53,0,1 -1,1,53,1,1 -1,1,53,2,1 -1,1,53,3,1 -1,1,53,4,1 -1,1,53,5,1 -1,1,53,6,1 -1,1,53,7,1 -1,1,53,8,1 -1,1,53,9,1 -1,1,54,0,1 -1,1,54,1,1 -1,1,54,2,1 -1,1,54,3,1 -1,1,54,4,1 -1,1,54,5,1 -1,1,54,6,1 -1,1,54,7,1 -1,1,54,8,1 -1,1,54,9,1 -1,1,55,0,1 -1,1,55,1,1 -1,1,55,2,1 -1,1,55,3,1 -1,1,55,4,1 -1,1,55,5,1 -1,1,55,6,1 -1,1,55,7,1 -1,1,55,8,1 -1,1,55,9,1 -1,1,56,0,1 -1,1,56,1,1 -1,1,56,2,1 -1,1,56,3,1 -1,1,56,4,1 -1,1,56,5,1 -1,1,56,6,1 -1,1,56,7,1 -1,1,56,8,1 -1,1,56,9,1 -1,1,57,0,1 -1,1,57,1,1 -1,1,57,2,1 -1,1,57,3,1 -1,1,57,4,1 -1,1,57,5,1 -1,1,57,6,1 -1,1,57,7,1 -1,1,57,8,1 -1,1,57,9,1 -1,1,58,0,1 -1,1,58,1,1 -1,1,58,2,1 -1,1,58,3,1 -1,1,58,4,1 -1,1,58,5,1 -1,1,58,6,1 -1,1,58,7,1 -1,1,58,8,1 -1,1,58,9,1 -1,1,59,0,1 -1,1,59,1,1 -1,1,59,2,1 -1,1,59,3,1 -1,1,59,4,1 -1,1,59,5,1 -1,1,59,6,1 -1,1,59,7,1 -1,1,59,8,1 -1,1,59,9,1 -1,1,60,0,1 -1,1,60,1,1 -1,1,60,2,1 -1,1,60,3,1 -1,1,60,4,1 -1,1,60,5,1 -1,1,60,6,1 -1,1,60,7,1 -1,1,60,8,1 -1,1,60,9,1 -1,1,61,0,1 -1,1,61,1,1 -1,1,61,2,1 -1,1,61,3,1 -1,1,61,4,1 -1,1,61,5,1 -1,1,61,6,1 -1,1,61,7,1 -1,1,61,8,1 -1,1,61,9,1 -1,1,62,0,1 -1,1,62,1,1 -1,1,62,2,1 -1,1,62,3,1 -1,1,62,4,1 -1,1,62,5,1 -1,1,62,6,1 -1,1,62,7,1 -1,1,62,8,1 -1,1,62,9,1 -1,1,63,0,1 -1,1,63,1,1 -1,1,63,2,1 -1,1,63,3,1 -1,1,63,4,1 -1,1,63,5,1 -1,1,63,6,1 -1,1,63,7,1 -1,1,63,8,1 -1,1,63,9,1 -1,1,64,0,1 -1,1,64,1,1 -1,1,64,2,1 -1,1,64,3,1 -1,1,64,4,1 -1,1,64,5,1 -1,1,64,6,1 -1,1,64,7,1 -1,1,64,8,1 -1,1,64,9,1 -1,1,65,0,1 -1,1,65,1,1 -1,1,65,2,1 -1,1,65,3,1 -1,1,65,4,1 -1,1,65,5,1 -1,1,65,6,1 -1,1,65,7,1 -1,1,65,8,1 -1,1,65,9,1 -1,1,66,0,1 -1,1,66,1,1 -1,1,66,2,1 -1,1,66,3,1 -1,1,66,4,1 -1,1,66,5,1 -1,1,66,6,1 -1,1,66,7,1 -1,1,66,8,1 -1,1,66,9,1 -1,1,67,0,1 -1,1,67,1,1 -1,1,67,2,1 -1,1,67,3,1 -1,1,67,4,1 -1,1,67,5,1 -1,1,67,6,1 -1,1,67,7,1 -1,1,67,8,1 -1,1,67,9,1 -1,1,68,0,1 -1,1,68,1,1 -1,1,68,2,1 -1,1,68,3,1 -1,1,68,4,1 -1,1,68,5,1 -1,1,68,6,1 -1,1,68,7,1 -1,1,68,8,1 -1,1,68,9,1 -1,1,69,0,1 -1,1,69,1,1 -1,1,69,2,1 -1,1,69,3,1 -1,1,69,4,1 -1,1,69,5,1 -1,1,69,6,1 -1,1,69,7,1 -1,1,69,8,1 -1,1,69,9,1 -1,1,70,0,1 -1,1,70,1,1 -1,1,70,2,1 -1,1,70,3,1 -1,1,70,4,1 -1,1,70,5,1 -1,1,70,6,1 -1,1,70,7,1 -1,1,70,8,1 -1,1,70,9,1 -1,1,71,0,1 -1,1,71,1,1 -1,1,71,2,1 -1,1,71,3,1 -1,1,71,4,1 -1,1,71,5,1 -1,1,71,6,1 -1,1,71,7,1 -1,1,71,8,1 -1,1,71,9,1 -1,1,72,0,1 -1,1,72,1,1 -1,1,72,2,1 -1,1,72,3,1 -1,1,72,4,1 -1,1,72,5,1 -1,1,72,6,1 -1,1,72,7,1 -1,1,72,8,1 -1,1,72,9,1 -1,1,73,0,1 -1,1,73,1,1 -1,1,73,2,1 -1,1,73,3,1 -1,1,73,4,1 -1,1,73,5,1 -1,1,73,6,1 -1,1,73,7,1 -1,1,73,8,1 -1,1,73,9,1 -1,1,74,0,1 -1,1,74,1,1 -1,1,74,2,1 -1,1,74,3,1 -1,1,74,4,1 -1,1,74,5,1 -1,1,74,6,1 -1,1,74,7,1 -1,1,74,8,1 -1,1,74,9,1 -1,1,75,0,1 -1,1,75,1,1 -1,1,75,2,1 -1,1,75,3,1 -1,1,75,4,1 -1,1,75,5,1 -1,1,75,6,1 -1,1,75,7,1 -1,1,75,8,1 -1,1,75,9,1 -1,1,76,0,1 -1,1,76,1,1 -1,1,76,2,1 -1,1,76,3,1 -1,1,76,4,1 -1,1,76,5,1 -1,1,76,6,1 -1,1,76,7,1 -1,1,76,8,1 -1,1,76,9,1 -1,1,77,0,1 -1,1,77,1,1 -1,1,77,2,1 -1,1,77,3,1 -1,1,77,4,1 -1,1,77,5,1 -1,1,77,6,1 -1,1,77,7,1 -1,1,77,8,1 -1,1,77,9,1 -1,1,78,0,1 -1,1,78,1,1 -1,1,78,2,1 -1,1,78,3,1 -1,1,78,4,1 -1,1,78,5,1 -1,1,78,6,1 -1,1,78,7,1 -1,1,78,8,1 -1,1,78,9,1 -1,1,79,0,1 -1,1,79,1,1 -1,1,79,2,1 -1,1,79,3,1 -1,1,79,4,1 -1,1,79,5,1 -1,1,79,6,1 -1,1,79,7,1 -1,1,79,8,1 -1,1,79,9,1 -1,1,80,0,1 -1,1,80,1,1 -1,1,80,2,1 -1,1,80,3,1 -1,1,80,4,1 -1,1,80,5,1 -1,1,80,6,1 -1,1,80,7,1 -1,1,80,8,1 -1,1,80,9,1 -1,1,81,0,1 -1,1,81,1,1 -1,1,81,2,1 -1,1,81,3,1 -1,1,81,4,1 -1,1,81,5,1 -1,1,81,6,1 -1,1,81,7,1 -1,1,81,8,1 -1,1,81,9,1 -1,1,82,0,1 -1,1,82,1,1 -1,1,82,2,1 -1,1,82,3,1 -1,1,82,4,1 -1,1,82,5,1 -1,1,82,6,1 -1,1,82,7,1 -1,1,82,8,1 -1,1,82,9,1 -1,1,83,0,1 -1,1,83,1,1 -1,1,83,2,1 -1,1,83,3,1 -1,1,83,4,1 -1,1,83,5,1 -1,1,83,6,1 -1,1,83,7,1 -1,1,83,8,1 -1,1,83,9,1 -1,1,84,0,1 -1,1,84,1,1 -1,1,84,2,1 -1,1,84,3,1 -1,1,84,4,1 -1,1,84,5,1 -1,1,84,6,1 -1,1,84,7,1 -1,1,84,8,1 -1,1,84,9,1 -1,1,85,0,1 -1,1,85,1,1 -1,1,85,2,1 -1,1,85,3,1 -1,1,85,4,1 -1,1,85,5,1 -1,1,85,6,1 -1,1,85,7,1 -1,1,85,8,1 -1,1,85,9,1 -1,1,86,0,1 -1,1,86,1,1 -1,1,86,2,1 -1,1,86,3,1 -1,1,86,4,1 -1,1,86,5,1 -1,1,86,6,1 -1,1,86,7,1 -1,1,86,8,1 -1,1,86,9,1 -1,1,87,0,1 -1,1,87,1,1 -1,1,87,2,1 -1,1,87,3,1 -1,1,87,4,1 -1,1,87,5,1 -1,1,87,6,1 -1,1,87,7,1 -1,1,87,8,1 -1,1,87,9,1 -1,1,88,0,1 -1,1,88,1,1 -1,1,88,2,1 -1,1,88,3,1 -1,1,88,4,1 -1,1,88,5,1 -1,1,88,6,1 -1,1,88,7,1 -1,1,88,8,1 -1,1,88,9,1 -1,1,89,0,1 -1,1,89,1,1 -1,1,89,2,1 -1,1,89,3,1 -1,1,89,4,1 -1,1,89,5,1 -1,1,89,6,1 -1,1,89,7,1 -1,1,89,8,1 -1,1,89,9,1 -1,1,90,0,1 -1,1,90,1,1 -1,1,90,2,1 -1,1,90,3,1 -1,1,90,4,1 -1,1,90,5,1 -1,1,90,6,1 -1,1,90,7,1 -1,1,90,8,1 -1,1,90,9,1 -1,1,91,0,1 -1,1,91,1,1 -1,1,91,2,1 -1,1,91,3,1 -1,1,91,4,1 -1,1,91,5,1 -1,1,91,6,1 -1,1,91,7,1 -1,1,91,8,1 -1,1,91,9,1 -1,1,92,0,1 -1,1,92,1,1 -1,1,92,2,1 -1,1,92,3,1 -1,1,92,4,1 -1,1,92,5,1 -1,1,92,6,1 -1,1,92,7,1 -1,1,92,8,1 -1,1,92,9,1 -1,1,93,0,1 -1,1,93,1,1 -1,1,93,2,1 -1,1,93,3,1 -1,1,93,4,1 -1,1,93,5,1 -1,1,93,6,1 -1,1,93,7,1 -1,1,93,8,1 -1,1,93,9,1 -1,1,94,0,1 -1,1,94,1,1 -1,1,94,2,1 -1,1,94,3,1 -1,1,94,4,1 -1,1,94,5,1 -1,1,94,6,1 -1,1,94,7,1 -1,1,94,8,1 -1,1,94,9,1 -1,1,95,0,1 -1,1,95,1,1 -1,1,95,2,1 -1,1,95,3,1 -1,1,95,4,1 -1,1,95,5,1 -1,1,95,6,1 -1,1,95,7,1 -1,1,95,8,1 -1,1,95,9,1 -1,1,96,0,1 -1,1,96,1,1 -1,1,96,2,1 -1,1,96,3,1 -1,1,96,4,1 -1,1,96,5,1 -1,1,96,6,1 -1,1,96,7,1 -1,1,96,8,1 -1,1,96,9,1 -1,1,97,0,1 -1,1,97,1,1 -1,1,97,2,1 -1,1,97,3,1 -1,1,97,4,1 -1,1,97,5,1 -1,1,97,6,1 -1,1,97,7,1 -1,1,97,8,1 -1,1,97,9,1 -1,1,98,0,1 -1,1,98,1,1 -1,1,98,2,1 -1,1,98,3,1 -1,1,98,4,1 -1,1,98,5,1 -1,1,98,6,1 -1,1,98,7,1 -1,1,98,8,1 -1,1,98,9,1 -1,1,99,0,1 -1,1,99,1,1 -1,1,99,2,1 -1,1,99,3,1 -1,1,99,4,1 -1,1,99,5,1 -1,1,99,6,1 -1,1,99,7,1 -1,1,99,8,1 -1,1,99,9,1 1,0,0,0,1 1,0,0,1,1 1,0,0,2,1 @@ -3690,6 +1690,315 @@ id_scenario,id_run,period,id,a 1,0,68,8,1 1,0,68,9,1 1,0,69,0,1 +0,1,69,1,1 +0,1,69,2,1 +0,1,69,3,1 +0,1,69,4,1 +0,1,69,5,1 +0,1,69,6,1 +0,1,69,7,1 +0,1,69,8,1 +0,1,69,9,1 +0,1,70,0,1 +0,1,70,1,1 +0,1,70,2,1 +0,1,70,3,1 +0,1,70,4,1 +0,1,70,5,1 +0,1,70,6,1 +0,1,70,7,1 +0,1,70,8,1 +0,1,70,9,1 +0,1,71,0,1 +0,1,71,1,1 +0,1,71,2,1 +0,1,71,3,1 +0,1,71,4,1 +0,1,71,5,1 +0,1,71,6,1 +0,1,71,7,1 +0,1,71,8,1 +0,1,71,9,1 +0,1,72,0,1 +0,1,72,1,1 +0,1,72,2,1 +0,1,72,3,1 +0,1,72,4,1 +0,1,72,5,1 +0,1,72,6,1 +0,1,72,7,1 +0,1,72,8,1 +0,1,72,9,1 +0,1,73,0,1 +0,1,73,1,1 +0,1,73,2,1 +0,1,73,3,1 +0,1,73,4,1 +0,1,73,5,1 +0,1,73,6,1 +0,1,73,7,1 +0,1,73,8,1 +0,1,73,9,1 +0,1,74,0,1 +0,1,74,1,1 +0,1,74,2,1 +0,1,74,3,1 +0,1,74,4,1 +0,1,74,5,1 +0,1,74,6,1 +0,1,74,7,1 +0,1,74,8,1 +0,1,74,9,1 +0,1,75,0,1 +0,1,75,1,1 +0,1,75,2,1 +0,1,75,3,1 +0,1,75,4,1 +0,1,75,5,1 +0,1,75,6,1 +0,1,75,7,1 +0,1,75,8,1 +0,1,75,9,1 +0,1,76,0,1 +0,1,76,1,1 +0,1,76,2,1 +0,1,76,3,1 +0,1,76,4,1 +0,1,76,5,1 +0,1,76,6,1 +0,1,76,7,1 +0,1,76,8,1 +0,1,76,9,1 +0,1,77,0,1 +0,1,77,1,1 +0,1,77,2,1 +0,1,77,3,1 +0,1,77,4,1 +0,1,77,5,1 +0,1,77,6,1 +0,1,77,7,1 +0,1,77,8,1 +0,1,77,9,1 +0,1,78,0,1 +0,1,78,1,1 +0,1,78,2,1 +0,1,78,3,1 +0,1,78,4,1 +0,1,78,5,1 +0,1,78,6,1 +0,1,78,7,1 +0,1,78,8,1 +0,1,78,9,1 +0,1,79,0,1 +0,1,79,1,1 +0,1,79,2,1 +0,1,79,3,1 +0,1,79,4,1 +0,1,79,5,1 +0,1,79,6,1 +0,1,79,7,1 +0,1,79,8,1 +0,1,79,9,1 +0,1,80,0,1 +0,1,80,1,1 +0,1,80,2,1 +0,1,80,3,1 +0,1,80,4,1 +0,1,80,5,1 +0,1,80,6,1 +0,1,80,7,1 +0,1,80,8,1 +0,1,80,9,1 +0,1,81,0,1 +0,1,81,1,1 +0,1,81,2,1 +0,1,81,3,1 +0,1,81,4,1 +0,1,81,5,1 +0,1,81,6,1 +0,1,81,7,1 +0,1,81,8,1 +0,1,81,9,1 +0,1,82,0,1 +0,1,82,1,1 +0,1,82,2,1 +0,1,82,3,1 +0,1,82,4,1 +0,1,82,5,1 +0,1,82,6,1 +0,1,82,7,1 +0,1,82,8,1 +0,1,82,9,1 +0,1,83,0,1 +0,1,83,1,1 +0,1,83,2,1 +0,1,83,3,1 +0,1,83,4,1 +0,1,83,5,1 +0,1,83,6,1 +0,1,83,7,1 +0,1,83,8,1 +0,1,83,9,1 +0,1,84,0,1 +0,1,84,1,1 +0,1,84,2,1 +0,1,84,3,1 +0,1,84,4,1 +0,1,84,5,1 +0,1,84,6,1 +0,1,84,7,1 +0,1,84,8,1 +0,1,84,9,1 +0,1,85,0,1 +0,1,85,1,1 +0,1,85,2,1 +0,1,85,3,1 +0,1,85,4,1 +0,1,85,5,1 +0,1,85,6,1 +0,1,85,7,1 +0,1,85,8,1 +0,1,85,9,1 +0,1,86,0,1 +0,1,86,1,1 +0,1,86,2,1 +0,1,86,3,1 +0,1,86,4,1 +0,1,86,5,1 +0,1,86,6,1 +0,1,86,7,1 +0,1,86,8,1 +0,1,86,9,1 +0,1,87,0,1 +0,1,87,1,1 +0,1,87,2,1 +0,1,87,3,1 +0,1,87,4,1 +0,1,87,5,1 +0,1,87,6,1 +0,1,87,7,1 +0,1,87,8,1 +0,1,87,9,1 +0,1,88,0,1 +0,1,88,1,1 +0,1,88,2,1 +0,1,88,3,1 +0,1,88,4,1 +0,1,88,5,1 +0,1,88,6,1 +0,1,88,7,1 +0,1,88,8,1 +0,1,88,9,1 +0,1,89,0,1 +0,1,89,1,1 +0,1,89,2,1 +0,1,89,3,1 +0,1,89,4,1 +0,1,89,5,1 +0,1,89,6,1 +0,1,89,7,1 +0,1,89,8,1 +0,1,89,9,1 +0,1,90,0,1 +0,1,90,1,1 +0,1,90,2,1 +0,1,90,3,1 +0,1,90,4,1 +0,1,90,5,1 +0,1,90,6,1 +0,1,90,7,1 +0,1,90,8,1 +0,1,90,9,1 +0,1,91,0,1 +0,1,91,1,1 +0,1,91,2,1 +0,1,91,3,1 +0,1,91,4,1 +0,1,91,5,1 +0,1,91,6,1 +0,1,91,7,1 +0,1,91,8,1 +0,1,91,9,1 +0,1,92,0,1 +0,1,92,1,1 +0,1,92,2,1 +0,1,92,3,1 +0,1,92,4,1 +0,1,92,5,1 +0,1,92,6,1 +0,1,92,7,1 +0,1,92,8,1 +0,1,92,9,1 +0,1,93,0,1 +0,1,93,1,1 +0,1,93,2,1 +0,1,93,3,1 +0,1,93,4,1 +0,1,93,5,1 +0,1,93,6,1 +0,1,93,7,1 +0,1,93,8,1 +0,1,93,9,1 +0,1,94,0,1 +0,1,94,1,1 +0,1,94,2,1 +0,1,94,3,1 +0,1,94,4,1 +0,1,94,5,1 +0,1,94,6,1 +0,1,94,7,1 +0,1,94,8,1 +0,1,94,9,1 +0,1,95,0,1 +0,1,95,1,1 +0,1,95,2,1 +0,1,95,3,1 +0,1,95,4,1 +0,1,95,5,1 +0,1,95,6,1 +0,1,95,7,1 +0,1,95,8,1 +0,1,95,9,1 +0,1,96,0,1 +0,1,96,1,1 +0,1,96,2,1 +0,1,96,3,1 +0,1,96,4,1 +0,1,96,5,1 +0,1,96,6,1 +0,1,96,7,1 +0,1,96,8,1 +0,1,96,9,1 +0,1,97,0,1 +0,1,97,1,1 +0,1,97,2,1 +0,1,97,3,1 +0,1,97,4,1 +0,1,97,5,1 +0,1,97,6,1 +0,1,97,7,1 +0,1,97,8,1 +0,1,97,9,1 +0,1,98,0,1 +0,1,98,1,1 +0,1,98,2,1 +0,1,98,3,1 +0,1,98,4,1 +0,1,98,5,1 +0,1,98,6,1 +0,1,98,7,1 +0,1,98,8,1 +0,1,98,9,1 +0,1,99,0,1 +0,1,99,1,1 +0,1,99,2,1 +0,1,99,3,1 +0,1,99,4,1 +0,1,99,5,1 +0,1,99,6,1 +0,1,99,7,1 +0,1,99,8,1 +0,1,99,9,1 1,0,69,1,1 1,0,69,2,1 1,0,69,3,1 @@ -3999,3 +2308,1003 @@ id_scenario,id_run,period,id,a 1,0,99,7,1 1,0,99,8,1 1,0,99,9,1 +1,1,0,0,1 +1,1,0,1,1 +1,1,0,2,1 +1,1,0,3,1 +1,1,0,4,1 +1,1,0,5,1 +1,1,0,6,1 +1,1,0,7,1 +1,1,0,8,1 +1,1,0,9,1 +1,1,1,0,1 +1,1,1,1,1 +1,1,1,2,1 +1,1,1,3,1 +1,1,1,4,1 +1,1,1,5,1 +1,1,1,6,1 +1,1,1,7,1 +1,1,1,8,1 +1,1,1,9,1 +1,1,2,0,1 +1,1,2,1,1 +1,1,2,2,1 +1,1,2,3,1 +1,1,2,4,1 +1,1,2,5,1 +1,1,2,6,1 +1,1,2,7,1 +1,1,2,8,1 +1,1,2,9,1 +1,1,3,0,1 +1,1,3,1,1 +1,1,3,2,1 +1,1,3,3,1 +1,1,3,4,1 +1,1,3,5,1 +1,1,3,6,1 +1,1,3,7,1 +1,1,3,8,1 +1,1,3,9,1 +1,1,4,0,1 +1,1,4,1,1 +1,1,4,2,1 +1,1,4,3,1 +1,1,4,4,1 +1,1,4,5,1 +1,1,4,6,1 +1,1,4,7,1 +1,1,4,8,1 +1,1,4,9,1 +1,1,5,0,1 +1,1,5,1,1 +1,1,5,2,1 +1,1,5,3,1 +1,1,5,4,1 +1,1,5,5,1 +1,1,5,6,1 +1,1,5,7,1 +1,1,5,8,1 +1,1,5,9,1 +1,1,6,0,1 +1,1,6,1,1 +1,1,6,2,1 +1,1,6,3,1 +1,1,6,4,1 +1,1,6,5,1 +1,1,6,6,1 +1,1,6,7,1 +1,1,6,8,1 +1,1,6,9,1 +1,1,7,0,1 +1,1,7,1,1 +1,1,7,2,1 +1,1,7,3,1 +1,1,7,4,1 +1,1,7,5,1 +1,1,7,6,1 +1,1,7,7,1 +1,1,7,8,1 +1,1,7,9,1 +1,1,8,0,1 +1,1,8,1,1 +1,1,8,2,1 +1,1,8,3,1 +1,1,8,4,1 +1,1,8,5,1 +1,1,8,6,1 +1,1,8,7,1 +1,1,8,8,1 +1,1,8,9,1 +1,1,9,0,1 +1,1,9,1,1 +1,1,9,2,1 +1,1,9,3,1 +1,1,9,4,1 +1,1,9,5,1 +1,1,9,6,1 +1,1,9,7,1 +1,1,9,8,1 +1,1,9,9,1 +1,1,10,0,1 +1,1,10,1,1 +1,1,10,2,1 +1,1,10,3,1 +1,1,10,4,1 +1,1,10,5,1 +1,1,10,6,1 +1,1,10,7,1 +1,1,10,8,1 +1,1,10,9,1 +1,1,11,0,1 +1,1,11,1,1 +1,1,11,2,1 +1,1,11,3,1 +1,1,11,4,1 +1,1,11,5,1 +1,1,11,6,1 +1,1,11,7,1 +1,1,11,8,1 +1,1,11,9,1 +1,1,12,0,1 +1,1,12,1,1 +1,1,12,2,1 +1,1,12,3,1 +1,1,12,4,1 +1,1,12,5,1 +1,1,12,6,1 +1,1,12,7,1 +1,1,12,8,1 +1,1,12,9,1 +1,1,13,0,1 +1,1,13,1,1 +1,1,13,2,1 +1,1,13,3,1 +1,1,13,4,1 +1,1,13,5,1 +1,1,13,6,1 +1,1,13,7,1 +1,1,13,8,1 +1,1,13,9,1 +1,1,14,0,1 +1,1,14,1,1 +1,1,14,2,1 +1,1,14,3,1 +1,1,14,4,1 +1,1,14,5,1 +1,1,14,6,1 +1,1,14,7,1 +1,1,14,8,1 +1,1,14,9,1 +1,1,15,0,1 +1,1,15,1,1 +1,1,15,2,1 +1,1,15,3,1 +1,1,15,4,1 +1,1,15,5,1 +1,1,15,6,1 +1,1,15,7,1 +1,1,15,8,1 +1,1,15,9,1 +1,1,16,0,1 +1,1,16,1,1 +1,1,16,2,1 +1,1,16,3,1 +1,1,16,4,1 +1,1,16,5,1 +1,1,16,6,1 +1,1,16,7,1 +1,1,16,8,1 +1,1,16,9,1 +1,1,17,0,1 +1,1,17,1,1 +1,1,17,2,1 +1,1,17,3,1 +1,1,17,4,1 +1,1,17,5,1 +1,1,17,6,1 +1,1,17,7,1 +1,1,17,8,1 +1,1,17,9,1 +1,1,18,0,1 +1,1,18,1,1 +1,1,18,2,1 +1,1,18,3,1 +1,1,18,4,1 +1,1,18,5,1 +1,1,18,6,1 +1,1,18,7,1 +1,1,18,8,1 +1,1,18,9,1 +1,1,19,0,1 +1,1,19,1,1 +1,1,19,2,1 +1,1,19,3,1 +1,1,19,4,1 +1,1,19,5,1 +1,1,19,6,1 +1,1,19,7,1 +1,1,19,8,1 +1,1,19,9,1 +1,1,20,0,1 +1,1,20,1,1 +1,1,20,2,1 +1,1,20,3,1 +1,1,20,4,1 +1,1,20,5,1 +1,1,20,6,1 +1,1,20,7,1 +1,1,20,8,1 +1,1,20,9,1 +1,1,21,0,1 +1,1,21,1,1 +1,1,21,2,1 +1,1,21,3,1 +1,1,21,4,1 +1,1,21,5,1 +1,1,21,6,1 +1,1,21,7,1 +1,1,21,8,1 +1,1,21,9,1 +1,1,22,0,1 +1,1,22,1,1 +1,1,22,2,1 +1,1,22,3,1 +1,1,22,4,1 +1,1,22,5,1 +1,1,22,6,1 +1,1,22,7,1 +1,1,22,8,1 +1,1,22,9,1 +1,1,23,0,1 +1,1,23,1,1 +1,1,23,2,1 +1,1,23,3,1 +1,1,23,4,1 +1,1,23,5,1 +1,1,23,6,1 +1,1,23,7,1 +1,1,23,8,1 +1,1,23,9,1 +1,1,24,0,1 +1,1,24,1,1 +1,1,24,2,1 +1,1,24,3,1 +1,1,24,4,1 +1,1,24,5,1 +1,1,24,6,1 +1,1,24,7,1 +1,1,24,8,1 +1,1,24,9,1 +1,1,25,0,1 +1,1,25,1,1 +1,1,25,2,1 +1,1,25,3,1 +1,1,25,4,1 +1,1,25,5,1 +1,1,25,6,1 +1,1,25,7,1 +1,1,25,8,1 +1,1,25,9,1 +1,1,26,0,1 +1,1,26,1,1 +1,1,26,2,1 +1,1,26,3,1 +1,1,26,4,1 +1,1,26,5,1 +1,1,26,6,1 +1,1,26,7,1 +1,1,26,8,1 +1,1,26,9,1 +1,1,27,0,1 +1,1,27,1,1 +1,1,27,2,1 +1,1,27,3,1 +1,1,27,4,1 +1,1,27,5,1 +1,1,27,6,1 +1,1,27,7,1 +1,1,27,8,1 +1,1,27,9,1 +1,1,28,0,1 +1,1,28,1,1 +1,1,28,2,1 +1,1,28,3,1 +1,1,28,4,1 +1,1,28,5,1 +1,1,28,6,1 +1,1,28,7,1 +1,1,28,8,1 +1,1,28,9,1 +1,1,29,0,1 +1,1,29,1,1 +1,1,29,2,1 +1,1,29,3,1 +1,1,29,4,1 +1,1,29,5,1 +1,1,29,6,1 +1,1,29,7,1 +1,1,29,8,1 +1,1,29,9,1 +1,1,30,0,1 +1,1,30,1,1 +1,1,30,2,1 +1,1,30,3,1 +1,1,30,4,1 +1,1,30,5,1 +1,1,30,6,1 +1,1,30,7,1 +1,1,30,8,1 +1,1,30,9,1 +1,1,31,0,1 +1,1,31,1,1 +1,1,31,2,1 +1,1,31,3,1 +1,1,31,4,1 +1,1,31,5,1 +1,1,31,6,1 +1,1,31,7,1 +1,1,31,8,1 +1,1,31,9,1 +1,1,32,0,1 +1,1,32,1,1 +1,1,32,2,1 +1,1,32,3,1 +1,1,32,4,1 +1,1,32,5,1 +1,1,32,6,1 +1,1,32,7,1 +1,1,32,8,1 +1,1,32,9,1 +1,1,33,0,1 +1,1,33,1,1 +1,1,33,2,1 +1,1,33,3,1 +1,1,33,4,1 +1,1,33,5,1 +1,1,33,6,1 +1,1,33,7,1 +1,1,33,8,1 +1,1,33,9,1 +1,1,34,0,1 +1,1,34,1,1 +1,1,34,2,1 +1,1,34,3,1 +1,1,34,4,1 +1,1,34,5,1 +1,1,34,6,1 +1,1,34,7,1 +1,1,34,8,1 +1,1,34,9,1 +1,1,35,0,1 +1,1,35,1,1 +1,1,35,2,1 +1,1,35,3,1 +1,1,35,4,1 +1,1,35,5,1 +1,1,35,6,1 +1,1,35,7,1 +1,1,35,8,1 +1,1,35,9,1 +1,1,36,0,1 +1,1,36,1,1 +1,1,36,2,1 +1,1,36,3,1 +1,1,36,4,1 +1,1,36,5,1 +1,1,36,6,1 +1,1,36,7,1 +1,1,36,8,1 +1,1,36,9,1 +1,1,37,0,1 +1,1,37,1,1 +1,1,37,2,1 +1,1,37,3,1 +1,1,37,4,1 +1,1,37,5,1 +1,1,37,6,1 +1,1,37,7,1 +1,1,37,8,1 +1,1,37,9,1 +1,1,38,0,1 +1,1,38,1,1 +1,1,38,2,1 +1,1,38,3,1 +1,1,38,4,1 +1,1,38,5,1 +1,1,38,6,1 +1,1,38,7,1 +1,1,38,8,1 +1,1,38,9,1 +1,1,39,0,1 +1,1,39,1,1 +1,1,39,2,1 +1,1,39,3,1 +1,1,39,4,1 +1,1,39,5,1 +1,1,39,6,1 +1,1,39,7,1 +1,1,39,8,1 +1,1,39,9,1 +1,1,40,0,1 +1,1,40,1,1 +1,1,40,2,1 +1,1,40,3,1 +1,1,40,4,1 +1,1,40,5,1 +1,1,40,6,1 +1,1,40,7,1 +1,1,40,8,1 +1,1,40,9,1 +1,1,41,0,1 +1,1,41,1,1 +1,1,41,2,1 +1,1,41,3,1 +1,1,41,4,1 +1,1,41,5,1 +1,1,41,6,1 +1,1,41,7,1 +1,1,41,8,1 +1,1,41,9,1 +1,1,42,0,1 +1,1,42,1,1 +1,1,42,2,1 +1,1,42,3,1 +1,1,42,4,1 +1,1,42,5,1 +1,1,42,6,1 +1,1,42,7,1 +1,1,42,8,1 +1,1,42,9,1 +1,1,43,0,1 +1,1,43,1,1 +1,1,43,2,1 +1,1,43,3,1 +1,1,43,4,1 +1,1,43,5,1 +1,1,43,6,1 +1,1,43,7,1 +1,1,43,8,1 +1,1,43,9,1 +1,1,44,0,1 +1,1,44,1,1 +1,1,44,2,1 +1,1,44,3,1 +1,1,44,4,1 +1,1,44,5,1 +1,1,44,6,1 +1,1,44,7,1 +1,1,44,8,1 +1,1,44,9,1 +1,1,45,0,1 +1,1,45,1,1 +1,1,45,2,1 +1,1,45,3,1 +1,1,45,4,1 +1,1,45,5,1 +1,1,45,6,1 +1,1,45,7,1 +1,1,45,8,1 +1,1,45,9,1 +1,1,46,0,1 +1,1,46,1,1 +1,1,46,2,1 +1,1,46,3,1 +1,1,46,4,1 +1,1,46,5,1 +1,1,46,6,1 +1,1,46,7,1 +1,1,46,8,1 +1,1,46,9,1 +1,1,47,0,1 +1,1,47,1,1 +1,1,47,2,1 +1,1,47,3,1 +1,1,47,4,1 +1,1,47,5,1 +1,1,47,6,1 +1,1,47,7,1 +1,1,47,8,1 +1,1,47,9,1 +1,1,48,0,1 +1,1,48,1,1 +1,1,48,2,1 +1,1,48,3,1 +1,1,48,4,1 +1,1,48,5,1 +1,1,48,6,1 +1,1,48,7,1 +1,1,48,8,1 +1,1,48,9,1 +1,1,49,0,1 +1,1,49,1,1 +1,1,49,2,1 +1,1,49,3,1 +1,1,49,4,1 +1,1,49,5,1 +1,1,49,6,1 +1,1,49,7,1 +1,1,49,8,1 +1,1,49,9,1 +1,1,50,0,1 +1,1,50,1,1 +1,1,50,2,1 +1,1,50,3,1 +1,1,50,4,1 +1,1,50,5,1 +1,1,50,6,1 +1,1,50,7,1 +1,1,50,8,1 +1,1,50,9,1 +1,1,51,0,1 +1,1,51,1,1 +1,1,51,2,1 +1,1,51,3,1 +1,1,51,4,1 +1,1,51,5,1 +1,1,51,6,1 +1,1,51,7,1 +1,1,51,8,1 +1,1,51,9,1 +1,1,52,0,1 +1,1,52,1,1 +1,1,52,2,1 +1,1,52,3,1 +1,1,52,4,1 +1,1,52,5,1 +1,1,52,6,1 +1,1,52,7,1 +1,1,52,8,1 +1,1,52,9,1 +1,1,53,0,1 +1,1,53,1,1 +1,1,53,2,1 +1,1,53,3,1 +1,1,53,4,1 +1,1,53,5,1 +1,1,53,6,1 +1,1,53,7,1 +1,1,53,8,1 +1,1,53,9,1 +1,1,54,0,1 +1,1,54,1,1 +1,1,54,2,1 +1,1,54,3,1 +1,1,54,4,1 +1,1,54,5,1 +1,1,54,6,1 +1,1,54,7,1 +1,1,54,8,1 +1,1,54,9,1 +1,1,55,0,1 +1,1,55,1,1 +1,1,55,2,1 +1,1,55,3,1 +1,1,55,4,1 +1,1,55,5,1 +1,1,55,6,1 +1,1,55,7,1 +1,1,55,8,1 +1,1,55,9,1 +1,1,56,0,1 +1,1,56,1,1 +1,1,56,2,1 +1,1,56,3,1 +1,1,56,4,1 +1,1,56,5,1 +1,1,56,6,1 +1,1,56,7,1 +1,1,56,8,1 +1,1,56,9,1 +1,1,57,0,1 +1,1,57,1,1 +1,1,57,2,1 +1,1,57,3,1 +1,1,57,4,1 +1,1,57,5,1 +1,1,57,6,1 +1,1,57,7,1 +1,1,57,8,1 +1,1,57,9,1 +1,1,58,0,1 +1,1,58,1,1 +1,1,58,2,1 +1,1,58,3,1 +1,1,58,4,1 +1,1,58,5,1 +1,1,58,6,1 +1,1,58,7,1 +1,1,58,8,1 +1,1,58,9,1 +1,1,59,0,1 +1,1,59,1,1 +1,1,59,2,1 +1,1,59,3,1 +1,1,59,4,1 +1,1,59,5,1 +1,1,59,6,1 +1,1,59,7,1 +1,1,59,8,1 +1,1,59,9,1 +1,1,60,0,1 +1,1,60,1,1 +1,1,60,2,1 +1,1,60,3,1 +1,1,60,4,1 +1,1,60,5,1 +1,1,60,6,1 +1,1,60,7,1 +1,1,60,8,1 +1,1,60,9,1 +1,1,61,0,1 +1,1,61,1,1 +1,1,61,2,1 +1,1,61,3,1 +1,1,61,4,1 +1,1,61,5,1 +1,1,61,6,1 +1,1,61,7,1 +1,1,61,8,1 +1,1,61,9,1 +1,1,62,0,1 +1,1,62,1,1 +1,1,62,2,1 +1,1,62,3,1 +1,1,62,4,1 +1,1,62,5,1 +1,1,62,6,1 +1,1,62,7,1 +1,1,62,8,1 +1,1,62,9,1 +1,1,63,0,1 +1,1,63,1,1 +1,1,63,2,1 +1,1,63,3,1 +1,1,63,4,1 +1,1,63,5,1 +1,1,63,6,1 +1,1,63,7,1 +1,1,63,8,1 +1,1,63,9,1 +1,1,64,0,1 +1,1,64,1,1 +1,1,64,2,1 +1,1,64,3,1 +1,1,64,4,1 +1,1,64,5,1 +1,1,64,6,1 +1,1,64,7,1 +1,1,64,8,1 +1,1,64,9,1 +1,1,65,0,1 +1,1,65,1,1 +1,1,65,2,1 +1,1,65,3,1 +1,1,65,4,1 +1,1,65,5,1 +1,1,65,6,1 +1,1,65,7,1 +1,1,65,8,1 +1,1,65,9,1 +1,1,66,0,1 +1,1,66,1,1 +1,1,66,2,1 +1,1,66,3,1 +1,1,66,4,1 +1,1,66,5,1 +1,1,66,6,1 +1,1,66,7,1 +1,1,66,8,1 +1,1,66,9,1 +1,1,67,0,1 +1,1,67,1,1 +1,1,67,2,1 +1,1,67,3,1 +1,1,67,4,1 +1,1,67,5,1 +1,1,67,6,1 +1,1,67,7,1 +1,1,67,8,1 +1,1,67,9,1 +1,1,68,0,1 +1,1,68,1,1 +1,1,68,2,1 +1,1,68,3,1 +1,1,68,4,1 +1,1,68,5,1 +1,1,68,6,1 +1,1,68,7,1 +1,1,68,8,1 +1,1,68,9,1 +1,1,69,0,1 +1,1,69,1,1 +1,1,69,2,1 +1,1,69,3,1 +1,1,69,4,1 +1,1,69,5,1 +1,1,69,6,1 +1,1,69,7,1 +1,1,69,8,1 +1,1,69,9,1 +1,1,70,0,1 +1,1,70,1,1 +1,1,70,2,1 +1,1,70,3,1 +1,1,70,4,1 +1,1,70,5,1 +1,1,70,6,1 +1,1,70,7,1 +1,1,70,8,1 +1,1,70,9,1 +1,1,71,0,1 +1,1,71,1,1 +1,1,71,2,1 +1,1,71,3,1 +1,1,71,4,1 +1,1,71,5,1 +1,1,71,6,1 +1,1,71,7,1 +1,1,71,8,1 +1,1,71,9,1 +1,1,72,0,1 +1,1,72,1,1 +1,1,72,2,1 +1,1,72,3,1 +1,1,72,4,1 +1,1,72,5,1 +1,1,72,6,1 +1,1,72,7,1 +1,1,72,8,1 +1,1,72,9,1 +1,1,73,0,1 +1,1,73,1,1 +1,1,73,2,1 +1,1,73,3,1 +1,1,73,4,1 +1,1,73,5,1 +1,1,73,6,1 +1,1,73,7,1 +1,1,73,8,1 +1,1,73,9,1 +1,1,74,0,1 +1,1,74,1,1 +1,1,74,2,1 +1,1,74,3,1 +1,1,74,4,1 +1,1,74,5,1 +1,1,74,6,1 +1,1,74,7,1 +1,1,74,8,1 +1,1,74,9,1 +1,1,75,0,1 +1,1,75,1,1 +1,1,75,2,1 +1,1,75,3,1 +1,1,75,4,1 +1,1,75,5,1 +1,1,75,6,1 +1,1,75,7,1 +1,1,75,8,1 +1,1,75,9,1 +1,1,76,0,1 +1,1,76,1,1 +1,1,76,2,1 +1,1,76,3,1 +1,1,76,4,1 +1,1,76,5,1 +1,1,76,6,1 +1,1,76,7,1 +1,1,76,8,1 +1,1,76,9,1 +1,1,77,0,1 +1,1,77,1,1 +1,1,77,2,1 +1,1,77,3,1 +1,1,77,4,1 +1,1,77,5,1 +1,1,77,6,1 +1,1,77,7,1 +1,1,77,8,1 +1,1,77,9,1 +1,1,78,0,1 +1,1,78,1,1 +1,1,78,2,1 +1,1,78,3,1 +1,1,78,4,1 +1,1,78,5,1 +1,1,78,6,1 +1,1,78,7,1 +1,1,78,8,1 +1,1,78,9,1 +1,1,79,0,1 +1,1,79,1,1 +1,1,79,2,1 +1,1,79,3,1 +1,1,79,4,1 +1,1,79,5,1 +1,1,79,6,1 +1,1,79,7,1 +1,1,79,8,1 +1,1,79,9,1 +1,1,80,0,1 +1,1,80,1,1 +1,1,80,2,1 +1,1,80,3,1 +1,1,80,4,1 +1,1,80,5,1 +1,1,80,6,1 +1,1,80,7,1 +1,1,80,8,1 +1,1,80,9,1 +1,1,81,0,1 +1,1,81,1,1 +1,1,81,2,1 +1,1,81,3,1 +1,1,81,4,1 +1,1,81,5,1 +1,1,81,6,1 +1,1,81,7,1 +1,1,81,8,1 +1,1,81,9,1 +1,1,82,0,1 +1,1,82,1,1 +1,1,82,2,1 +1,1,82,3,1 +1,1,82,4,1 +1,1,82,5,1 +1,1,82,6,1 +1,1,82,7,1 +1,1,82,8,1 +1,1,82,9,1 +1,1,83,0,1 +1,1,83,1,1 +1,1,83,2,1 +1,1,83,3,1 +1,1,83,4,1 +1,1,83,5,1 +1,1,83,6,1 +1,1,83,7,1 +1,1,83,8,1 +1,1,83,9,1 +1,1,84,0,1 +1,1,84,1,1 +1,1,84,2,1 +1,1,84,3,1 +1,1,84,4,1 +1,1,84,5,1 +1,1,84,6,1 +1,1,84,7,1 +1,1,84,8,1 +1,1,84,9,1 +1,1,85,0,1 +1,1,85,1,1 +1,1,85,2,1 +1,1,85,3,1 +1,1,85,4,1 +1,1,85,5,1 +1,1,85,6,1 +1,1,85,7,1 +1,1,85,8,1 +1,1,85,9,1 +1,1,86,0,1 +1,1,86,1,1 +1,1,86,2,1 +1,1,86,3,1 +1,1,86,4,1 +1,1,86,5,1 +1,1,86,6,1 +1,1,86,7,1 +1,1,86,8,1 +1,1,86,9,1 +1,1,87,0,1 +1,1,87,1,1 +1,1,87,2,1 +1,1,87,3,1 +1,1,87,4,1 +1,1,87,5,1 +1,1,87,6,1 +1,1,87,7,1 +1,1,87,8,1 +1,1,87,9,1 +1,1,88,0,1 +1,1,88,1,1 +1,1,88,2,1 +1,1,88,3,1 +1,1,88,4,1 +1,1,88,5,1 +1,1,88,6,1 +1,1,88,7,1 +1,1,88,8,1 +1,1,88,9,1 +1,1,89,0,1 +1,1,89,1,1 +1,1,89,2,1 +1,1,89,3,1 +1,1,89,4,1 +1,1,89,5,1 +1,1,89,6,1 +1,1,89,7,1 +1,1,89,8,1 +1,1,89,9,1 +1,1,90,0,1 +1,1,90,1,1 +1,1,90,2,1 +1,1,90,3,1 +1,1,90,4,1 +1,1,90,5,1 +1,1,90,6,1 +1,1,90,7,1 +1,1,90,8,1 +1,1,90,9,1 +1,1,91,0,1 +1,1,91,1,1 +1,1,91,2,1 +1,1,91,3,1 +1,1,91,4,1 +1,1,91,5,1 +1,1,91,6,1 +1,1,91,7,1 +1,1,91,8,1 +1,1,91,9,1 +1,1,92,0,1 +1,1,92,1,1 +1,1,92,2,1 +1,1,92,3,1 +1,1,92,4,1 +1,1,92,5,1 +1,1,92,6,1 +1,1,92,7,1 +1,1,92,8,1 +1,1,92,9,1 +1,1,93,0,1 +1,1,93,1,1 +1,1,93,2,1 +1,1,93,3,1 +1,1,93,4,1 +1,1,93,5,1 +1,1,93,6,1 +1,1,93,7,1 +1,1,93,8,1 +1,1,93,9,1 +1,1,94,0,1 +1,1,94,1,1 +1,1,94,2,1 +1,1,94,3,1 +1,1,94,4,1 +1,1,94,5,1 +1,1,94,6,1 +1,1,94,7,1 +1,1,94,8,1 +1,1,94,9,1 +1,1,95,0,1 +1,1,95,1,1 +1,1,95,2,1 +1,1,95,3,1 +1,1,95,4,1 +1,1,95,5,1 +1,1,95,6,1 +1,1,95,7,1 +1,1,95,8,1 +1,1,95,9,1 +1,1,96,0,1 +1,1,96,1,1 +1,1,96,2,1 +1,1,96,3,1 +1,1,96,4,1 +1,1,96,5,1 +1,1,96,6,1 +1,1,96,7,1 +1,1,96,8,1 +1,1,96,9,1 +1,1,97,0,1 +1,1,97,1,1 +1,1,97,2,1 +1,1,97,3,1 +1,1,97,4,1 +1,1,97,5,1 +1,1,97,6,1 +1,1,97,7,1 +1,1,97,8,1 +1,1,97,9,1 +1,1,98,0,1 +1,1,98,1,1 +1,1,98,2,1 +1,1,98,3,1 +1,1,98,4,1 +1,1,98,5,1 +1,1,98,6,1 +1,1,98,7,1 +1,1,98,8,1 +1,1,98,9,1 +1,1,99,0,1 +1,1,99,1,1 +1,1,99,2,1 +1,1,99,3,1 +1,1,99,4,1 +1,1,99,5,1 +1,1,99,6,1 +1,1,99,7,1 +1,1,99,8,1 +1,1,99,9,1 diff --git a/tests/procedures/resources/output/parallel_simulation/Result_AgentList2.csv b/tests/procedures/resources/output/parallel_simulation/Result_AgentList2.csv index ba96531c..f605eb8d 100644 --- a/tests/procedures/resources/output/parallel_simulation/Result_AgentList2.csv +++ b/tests/procedures/resources/output/parallel_simulation/Result_AgentList2.csv @@ -1999,4006 +1999,6 @@ id_scenario,id_run,period,id,b 0,0,99,17,1 0,0,99,18,1 0,0,99,19,1 -0,1,0,0,1 -0,1,0,1,1 -0,1,0,2,1 -0,1,0,3,1 -0,1,0,4,1 -0,1,0,5,1 -0,1,0,6,1 -0,1,0,7,1 -0,1,0,8,1 -0,1,0,9,1 -0,1,0,10,1 -0,1,0,11,1 -0,1,0,12,1 -0,1,0,13,1 -0,1,0,14,1 -0,1,0,15,1 -0,1,0,16,1 -0,1,0,17,1 -0,1,0,18,1 -0,1,0,19,1 -0,1,1,0,1 -0,1,1,1,1 -0,1,1,2,1 -0,1,1,3,1 -0,1,1,4,1 -0,1,1,5,1 -0,1,1,6,1 -0,1,1,7,1 -0,1,1,8,1 -0,1,1,9,1 -0,1,1,10,1 -0,1,1,11,1 -0,1,1,12,1 -0,1,1,13,1 -0,1,1,14,1 -0,1,1,15,1 -0,1,1,16,1 -0,1,1,17,1 -0,1,1,18,1 -0,1,1,19,1 -0,1,2,0,1 -0,1,2,1,1 -0,1,2,2,1 -0,1,2,3,1 -0,1,2,4,1 -0,1,2,5,1 -0,1,2,6,1 -0,1,2,7,1 -0,1,2,8,1 -0,1,2,9,1 -0,1,2,10,1 -0,1,2,11,1 -0,1,2,12,1 -0,1,2,13,1 -0,1,2,14,1 -0,1,2,15,1 -0,1,2,16,1 -0,1,2,17,1 -0,1,2,18,1 -0,1,2,19,1 -0,1,3,0,1 -0,1,3,1,1 -0,1,3,2,1 -0,1,3,3,1 -0,1,3,4,1 -0,1,3,5,1 -0,1,3,6,1 -0,1,3,7,1 -0,1,3,8,1 -0,1,3,9,1 -0,1,3,10,1 -0,1,3,11,1 -0,1,3,12,1 -0,1,3,13,1 -0,1,3,14,1 -0,1,3,15,1 -0,1,3,16,1 -0,1,3,17,1 -0,1,3,18,1 -0,1,3,19,1 -0,1,4,0,1 -0,1,4,1,1 -0,1,4,2,1 -0,1,4,3,1 -0,1,4,4,1 -0,1,4,5,1 -0,1,4,6,1 -0,1,4,7,1 -0,1,4,8,1 -0,1,4,9,1 -0,1,4,10,1 -0,1,4,11,1 -0,1,4,12,1 -0,1,4,13,1 -0,1,4,14,1 -0,1,4,15,1 -0,1,4,16,1 -0,1,4,17,1 -0,1,4,18,1 -0,1,4,19,1 -0,1,5,0,1 -0,1,5,1,1 -0,1,5,2,1 -0,1,5,3,1 -0,1,5,4,1 -0,1,5,5,1 -0,1,5,6,1 -0,1,5,7,1 -0,1,5,8,1 -0,1,5,9,1 -0,1,5,10,1 -0,1,5,11,1 -0,1,5,12,1 -0,1,5,13,1 -0,1,5,14,1 -0,1,5,15,1 -0,1,5,16,1 -0,1,5,17,1 -0,1,5,18,1 -0,1,5,19,1 -0,1,6,0,1 -0,1,6,1,1 -0,1,6,2,1 -0,1,6,3,1 -0,1,6,4,1 -0,1,6,5,1 -0,1,6,6,1 -0,1,6,7,1 -0,1,6,8,1 -0,1,6,9,1 -0,1,6,10,1 -0,1,6,11,1 -0,1,6,12,1 -0,1,6,13,1 -0,1,6,14,1 -0,1,6,15,1 -0,1,6,16,1 -0,1,6,17,1 -0,1,6,18,1 -0,1,6,19,1 -0,1,7,0,1 -0,1,7,1,1 -0,1,7,2,1 -0,1,7,3,1 -0,1,7,4,1 -0,1,7,5,1 -0,1,7,6,1 -0,1,7,7,1 -0,1,7,8,1 -0,1,7,9,1 -0,1,7,10,1 -0,1,7,11,1 -0,1,7,12,1 -0,1,7,13,1 -0,1,7,14,1 -0,1,7,15,1 -0,1,7,16,1 -0,1,7,17,1 -0,1,7,18,1 -0,1,7,19,1 -0,1,8,0,1 -0,1,8,1,1 -0,1,8,2,1 -0,1,8,3,1 -0,1,8,4,1 -0,1,8,5,1 -0,1,8,6,1 -0,1,8,7,1 -0,1,8,8,1 -0,1,8,9,1 -0,1,8,10,1 -0,1,8,11,1 -0,1,8,12,1 -0,1,8,13,1 -0,1,8,14,1 -0,1,8,15,1 -0,1,8,16,1 -0,1,8,17,1 -0,1,8,18,1 -0,1,8,19,1 -0,1,9,0,1 -0,1,9,1,1 -0,1,9,2,1 -0,1,9,3,1 -0,1,9,4,1 -0,1,9,5,1 -0,1,9,6,1 -0,1,9,7,1 -0,1,9,8,1 -0,1,9,9,1 -0,1,9,10,1 -0,1,9,11,1 -0,1,9,12,1 -0,1,9,13,1 -0,1,9,14,1 -0,1,9,15,1 -0,1,9,16,1 -0,1,9,17,1 -0,1,9,18,1 -0,1,9,19,1 -0,1,10,0,1 -0,1,10,1,1 -0,1,10,2,1 -0,1,10,3,1 -0,1,10,4,1 -0,1,10,5,1 -0,1,10,6,1 -0,1,10,7,1 -0,1,10,8,1 -0,1,10,9,1 -0,1,10,10,1 -0,1,10,11,1 -0,1,10,12,1 -0,1,10,13,1 -0,1,10,14,1 -0,1,10,15,1 -0,1,10,16,1 -0,1,10,17,1 -0,1,10,18,1 -0,1,10,19,1 -0,1,11,0,1 -0,1,11,1,1 -0,1,11,2,1 -0,1,11,3,1 -0,1,11,4,1 -0,1,11,5,1 -0,1,11,6,1 -0,1,11,7,1 -0,1,11,8,1 -0,1,11,9,1 -0,1,11,10,1 -0,1,11,11,1 -0,1,11,12,1 -0,1,11,13,1 -0,1,11,14,1 -0,1,11,15,1 -0,1,11,16,1 -0,1,11,17,1 -0,1,11,18,1 -0,1,11,19,1 -0,1,12,0,1 -0,1,12,1,1 -0,1,12,2,1 -0,1,12,3,1 -0,1,12,4,1 -0,1,12,5,1 -0,1,12,6,1 -0,1,12,7,1 -0,1,12,8,1 -0,1,12,9,1 -0,1,12,10,1 -0,1,12,11,1 -0,1,12,12,1 -0,1,12,13,1 -0,1,12,14,1 -0,1,12,15,1 -0,1,12,16,1 -0,1,12,17,1 -0,1,12,18,1 -0,1,12,19,1 -0,1,13,0,1 -0,1,13,1,1 -0,1,13,2,1 -0,1,13,3,1 -0,1,13,4,1 -0,1,13,5,1 -0,1,13,6,1 -0,1,13,7,1 -0,1,13,8,1 -0,1,13,9,1 -0,1,13,10,1 -0,1,13,11,1 -0,1,13,12,1 -0,1,13,13,1 -0,1,13,14,1 -0,1,13,15,1 -0,1,13,16,1 -0,1,13,17,1 -0,1,13,18,1 -0,1,13,19,1 -0,1,14,0,1 -0,1,14,1,1 -0,1,14,2,1 -0,1,14,3,1 -0,1,14,4,1 -0,1,14,5,1 -0,1,14,6,1 -0,1,14,7,1 -0,1,14,8,1 -0,1,14,9,1 -0,1,14,10,1 -0,1,14,11,1 -0,1,14,12,1 -0,1,14,13,1 -0,1,14,14,1 -0,1,14,15,1 -0,1,14,16,1 -0,1,14,17,1 -0,1,14,18,1 -0,1,14,19,1 -0,1,15,0,1 -0,1,15,1,1 -0,1,15,2,1 -0,1,15,3,1 -0,1,15,4,1 -0,1,15,5,1 -0,1,15,6,1 -0,1,15,7,1 -0,1,15,8,1 -0,1,15,9,1 -0,1,15,10,1 -0,1,15,11,1 -0,1,15,12,1 -0,1,15,13,1 -0,1,15,14,1 -0,1,15,15,1 -0,1,15,16,1 -0,1,15,17,1 -0,1,15,18,1 -0,1,15,19,1 -0,1,16,0,1 -0,1,16,1,1 -0,1,16,2,1 -0,1,16,3,1 -0,1,16,4,1 -0,1,16,5,1 -0,1,16,6,1 -0,1,16,7,1 -0,1,16,8,1 -0,1,16,9,1 -0,1,16,10,1 -0,1,16,11,1 -0,1,16,12,1 -0,1,16,13,1 -0,1,16,14,1 -0,1,16,15,1 -0,1,16,16,1 -0,1,16,17,1 -0,1,16,18,1 -0,1,16,19,1 -0,1,17,0,1 -0,1,17,1,1 -0,1,17,2,1 -0,1,17,3,1 -0,1,17,4,1 -0,1,17,5,1 -0,1,17,6,1 -0,1,17,7,1 -0,1,17,8,1 -0,1,17,9,1 -0,1,17,10,1 -0,1,17,11,1 -0,1,17,12,1 -0,1,17,13,1 -0,1,17,14,1 -0,1,17,15,1 -0,1,17,16,1 -0,1,17,17,1 -0,1,17,18,1 -0,1,17,19,1 -0,1,18,0,1 -0,1,18,1,1 -0,1,18,2,1 -0,1,18,3,1 -0,1,18,4,1 -0,1,18,5,1 -0,1,18,6,1 -0,1,18,7,1 -0,1,18,8,1 -0,1,18,9,1 -0,1,18,10,1 -0,1,18,11,1 -0,1,18,12,1 -0,1,18,13,1 -0,1,18,14,1 -0,1,18,15,1 -0,1,18,16,1 -0,1,18,17,1 -0,1,18,18,1 -0,1,18,19,1 -0,1,19,0,1 -0,1,19,1,1 -0,1,19,2,1 -0,1,19,3,1 -0,1,19,4,1 -0,1,19,5,1 -0,1,19,6,1 -0,1,19,7,1 -0,1,19,8,1 -0,1,19,9,1 -0,1,19,10,1 -0,1,19,11,1 -0,1,19,12,1 -0,1,19,13,1 -0,1,19,14,1 -0,1,19,15,1 -0,1,19,16,1 -0,1,19,17,1 -0,1,19,18,1 -0,1,19,19,1 -0,1,20,0,1 -0,1,20,1,1 -0,1,20,2,1 -0,1,20,3,1 -0,1,20,4,1 -0,1,20,5,1 -0,1,20,6,1 -0,1,20,7,1 -0,1,20,8,1 -0,1,20,9,1 -0,1,20,10,1 -0,1,20,11,1 -0,1,20,12,1 -0,1,20,13,1 -0,1,20,14,1 -0,1,20,15,1 -0,1,20,16,1 -0,1,20,17,1 -0,1,20,18,1 -0,1,20,19,1 -0,1,21,0,1 -0,1,21,1,1 -0,1,21,2,1 -0,1,21,3,1 -0,1,21,4,1 -0,1,21,5,1 -0,1,21,6,1 -0,1,21,7,1 -0,1,21,8,1 -0,1,21,9,1 -0,1,21,10,1 -0,1,21,11,1 -0,1,21,12,1 -0,1,21,13,1 -0,1,21,14,1 -0,1,21,15,1 -0,1,21,16,1 -0,1,21,17,1 -0,1,21,18,1 -0,1,21,19,1 -0,1,22,0,1 -0,1,22,1,1 -0,1,22,2,1 -0,1,22,3,1 -0,1,22,4,1 -0,1,22,5,1 -0,1,22,6,1 -0,1,22,7,1 -0,1,22,8,1 -0,1,22,9,1 -0,1,22,10,1 -0,1,22,11,1 -0,1,22,12,1 -0,1,22,13,1 -0,1,22,14,1 -0,1,22,15,1 -0,1,22,16,1 -0,1,22,17,1 -0,1,22,18,1 -0,1,22,19,1 -0,1,23,0,1 -0,1,23,1,1 -0,1,23,2,1 -0,1,23,3,1 -0,1,23,4,1 -0,1,23,5,1 -0,1,23,6,1 -0,1,23,7,1 -0,1,23,8,1 -0,1,23,9,1 -0,1,23,10,1 -0,1,23,11,1 -0,1,23,12,1 -0,1,23,13,1 -0,1,23,14,1 -0,1,23,15,1 -0,1,23,16,1 -0,1,23,17,1 -0,1,23,18,1 -0,1,23,19,1 -0,1,24,0,1 -0,1,24,1,1 -0,1,24,2,1 -0,1,24,3,1 -0,1,24,4,1 -0,1,24,5,1 -0,1,24,6,1 -0,1,24,7,1 -0,1,24,8,1 -0,1,24,9,1 -0,1,24,10,1 -0,1,24,11,1 -0,1,24,12,1 -0,1,24,13,1 -0,1,24,14,1 -0,1,24,15,1 -0,1,24,16,1 -0,1,24,17,1 -0,1,24,18,1 -0,1,24,19,1 -0,1,25,0,1 -0,1,25,1,1 -0,1,25,2,1 -0,1,25,3,1 -0,1,25,4,1 -0,1,25,5,1 -0,1,25,6,1 -0,1,25,7,1 -0,1,25,8,1 -0,1,25,9,1 -0,1,25,10,1 -0,1,25,11,1 -0,1,25,12,1 -0,1,25,13,1 -0,1,25,14,1 -0,1,25,15,1 -0,1,25,16,1 -0,1,25,17,1 -0,1,25,18,1 -0,1,25,19,1 -0,1,26,0,1 -0,1,26,1,1 -0,1,26,2,1 -0,1,26,3,1 -0,1,26,4,1 -0,1,26,5,1 -0,1,26,6,1 -0,1,26,7,1 -0,1,26,8,1 -0,1,26,9,1 -0,1,26,10,1 -0,1,26,11,1 -0,1,26,12,1 -0,1,26,13,1 -0,1,26,14,1 -0,1,26,15,1 -0,1,26,16,1 -0,1,26,17,1 -0,1,26,18,1 -0,1,26,19,1 -0,1,27,0,1 -0,1,27,1,1 -0,1,27,2,1 -0,1,27,3,1 -0,1,27,4,1 -0,1,27,5,1 -0,1,27,6,1 -0,1,27,7,1 -0,1,27,8,1 -0,1,27,9,1 -0,1,27,10,1 -0,1,27,11,1 -0,1,27,12,1 -0,1,27,13,1 -0,1,27,14,1 -0,1,27,15,1 -0,1,27,16,1 -0,1,27,17,1 -0,1,27,18,1 -0,1,27,19,1 -0,1,28,0,1 -0,1,28,1,1 -0,1,28,2,1 -0,1,28,3,1 -0,1,28,4,1 -0,1,28,5,1 -0,1,28,6,1 -0,1,28,7,1 -0,1,28,8,1 -0,1,28,9,1 -0,1,28,10,1 -0,1,28,11,1 -0,1,28,12,1 -0,1,28,13,1 -0,1,28,14,1 -0,1,28,15,1 -0,1,28,16,1 -0,1,28,17,1 -0,1,28,18,1 -0,1,28,19,1 -0,1,29,0,1 -0,1,29,1,1 -0,1,29,2,1 -0,1,29,3,1 -0,1,29,4,1 -0,1,29,5,1 -0,1,29,6,1 -0,1,29,7,1 -0,1,29,8,1 -0,1,29,9,1 -0,1,29,10,1 -0,1,29,11,1 -0,1,29,12,1 -0,1,29,13,1 -0,1,29,14,1 -0,1,29,15,1 -0,1,29,16,1 -0,1,29,17,1 -0,1,29,18,1 -0,1,29,19,1 -0,1,30,0,1 -0,1,30,1,1 -0,1,30,2,1 -0,1,30,3,1 -0,1,30,4,1 -0,1,30,5,1 -0,1,30,6,1 -0,1,30,7,1 -0,1,30,8,1 -0,1,30,9,1 -0,1,30,10,1 -0,1,30,11,1 -0,1,30,12,1 -0,1,30,13,1 -0,1,30,14,1 -0,1,30,15,1 -0,1,30,16,1 -0,1,30,17,1 -0,1,30,18,1 -0,1,30,19,1 -0,1,31,0,1 -0,1,31,1,1 -0,1,31,2,1 -0,1,31,3,1 -0,1,31,4,1 -0,1,31,5,1 -0,1,31,6,1 -0,1,31,7,1 -0,1,31,8,1 -0,1,31,9,1 -0,1,31,10,1 -0,1,31,11,1 -0,1,31,12,1 -0,1,31,13,1 -0,1,31,14,1 -0,1,31,15,1 -0,1,31,16,1 -0,1,31,17,1 -0,1,31,18,1 -0,1,31,19,1 -0,1,32,0,1 -0,1,32,1,1 -0,1,32,2,1 -0,1,32,3,1 -0,1,32,4,1 -0,1,32,5,1 -0,1,32,6,1 -0,1,32,7,1 -0,1,32,8,1 -0,1,32,9,1 -0,1,32,10,1 -0,1,32,11,1 -0,1,32,12,1 -0,1,32,13,1 -0,1,32,14,1 -0,1,32,15,1 -0,1,32,16,1 -0,1,32,17,1 -0,1,32,18,1 -0,1,32,19,1 -0,1,33,0,1 -0,1,33,1,1 -0,1,33,2,1 -0,1,33,3,1 -0,1,33,4,1 -0,1,33,5,1 -0,1,33,6,1 -0,1,33,7,1 -0,1,33,8,1 -0,1,33,9,1 -0,1,33,10,1 -0,1,33,11,1 -0,1,33,12,1 -0,1,33,13,1 -0,1,33,14,1 -0,1,33,15,1 -0,1,33,16,1 -0,1,33,17,1 -0,1,33,18,1 -0,1,33,19,1 -0,1,34,0,1 -0,1,34,1,1 -0,1,34,2,1 -0,1,34,3,1 -0,1,34,4,1 -0,1,34,5,1 -0,1,34,6,1 -0,1,34,7,1 -0,1,34,8,1 -0,1,34,9,1 -0,1,34,10,1 -0,1,34,11,1 -0,1,34,12,1 -0,1,34,13,1 -0,1,34,14,1 -0,1,34,15,1 -0,1,34,16,1 -0,1,34,17,1 -0,1,34,18,1 -0,1,34,19,1 -0,1,35,0,1 -0,1,35,1,1 -0,1,35,2,1 -0,1,35,3,1 -0,1,35,4,1 -0,1,35,5,1 -0,1,35,6,1 -0,1,35,7,1 -0,1,35,8,1 -0,1,35,9,1 -0,1,35,10,1 -0,1,35,11,1 -0,1,35,12,1 -0,1,35,13,1 -0,1,35,14,1 -0,1,35,15,1 -0,1,35,16,1 -0,1,35,17,1 -0,1,35,18,1 -0,1,35,19,1 -0,1,36,0,1 -0,1,36,1,1 -0,1,36,2,1 -0,1,36,3,1 -0,1,36,4,1 -0,1,36,5,1 -0,1,36,6,1 -0,1,36,7,1 -0,1,36,8,1 -0,1,36,9,1 -0,1,36,10,1 -0,1,36,11,1 -0,1,36,12,1 -0,1,36,13,1 -0,1,36,14,1 -0,1,36,15,1 -0,1,36,16,1 -0,1,36,17,1 -0,1,36,18,1 -0,1,36,19,1 -0,1,37,0,1 -0,1,37,1,1 -0,1,37,2,1 -0,1,37,3,1 -0,1,37,4,1 -0,1,37,5,1 -0,1,37,6,1 -0,1,37,7,1 -0,1,37,8,1 -0,1,37,9,1 -0,1,37,10,1 -0,1,37,11,1 -0,1,37,12,1 -0,1,37,13,1 -0,1,37,14,1 -0,1,37,15,1 -0,1,37,16,1 -0,1,37,17,1 -0,1,37,18,1 -0,1,37,19,1 -0,1,38,0,1 -0,1,38,1,1 -0,1,38,2,1 -0,1,38,3,1 -0,1,38,4,1 -0,1,38,5,1 -0,1,38,6,1 -0,1,38,7,1 -0,1,38,8,1 -0,1,38,9,1 -0,1,38,10,1 -0,1,38,11,1 -0,1,38,12,1 -0,1,38,13,1 -0,1,38,14,1 -0,1,38,15,1 -0,1,38,16,1 -0,1,38,17,1 -0,1,38,18,1 -0,1,38,19,1 -0,1,39,0,1 -0,1,39,1,1 -0,1,39,2,1 -0,1,39,3,1 -0,1,39,4,1 -0,1,39,5,1 -0,1,39,6,1 -0,1,39,7,1 -0,1,39,8,1 -0,1,39,9,1 -0,1,39,10,1 -0,1,39,11,1 -0,1,39,12,1 -0,1,39,13,1 -0,1,39,14,1 -0,1,39,15,1 -0,1,39,16,1 -0,1,39,17,1 -0,1,39,18,1 -0,1,39,19,1 -0,1,40,0,1 -0,1,40,1,1 -0,1,40,2,1 -0,1,40,3,1 -0,1,40,4,1 -0,1,40,5,1 -0,1,40,6,1 -0,1,40,7,1 -0,1,40,8,1 -0,1,40,9,1 -0,1,40,10,1 -0,1,40,11,1 -0,1,40,12,1 -0,1,40,13,1 -0,1,40,14,1 -0,1,40,15,1 -0,1,40,16,1 -0,1,40,17,1 -0,1,40,18,1 -0,1,40,19,1 -0,1,41,0,1 -0,1,41,1,1 -0,1,41,2,1 -0,1,41,3,1 -0,1,41,4,1 -0,1,41,5,1 -0,1,41,6,1 -0,1,41,7,1 -0,1,41,8,1 -0,1,41,9,1 -0,1,41,10,1 -0,1,41,11,1 -0,1,41,12,1 -0,1,41,13,1 -0,1,41,14,1 -0,1,41,15,1 -0,1,41,16,1 -0,1,41,17,1 -0,1,41,18,1 -0,1,41,19,1 -0,1,42,0,1 -0,1,42,1,1 -0,1,42,2,1 -0,1,42,3,1 -0,1,42,4,1 -0,1,42,5,1 -0,1,42,6,1 -0,1,42,7,1 -0,1,42,8,1 -0,1,42,9,1 -0,1,42,10,1 -0,1,42,11,1 -0,1,42,12,1 -0,1,42,13,1 -0,1,42,14,1 -0,1,42,15,1 -0,1,42,16,1 -0,1,42,17,1 -0,1,42,18,1 -0,1,42,19,1 -0,1,43,0,1 -0,1,43,1,1 -0,1,43,2,1 -0,1,43,3,1 -0,1,43,4,1 -0,1,43,5,1 -0,1,43,6,1 -0,1,43,7,1 -0,1,43,8,1 -0,1,43,9,1 -0,1,43,10,1 -0,1,43,11,1 -0,1,43,12,1 -0,1,43,13,1 -0,1,43,14,1 -0,1,43,15,1 -0,1,43,16,1 -0,1,43,17,1 -0,1,43,18,1 -0,1,43,19,1 -0,1,44,0,1 -0,1,44,1,1 -0,1,44,2,1 -0,1,44,3,1 -0,1,44,4,1 -0,1,44,5,1 -0,1,44,6,1 -0,1,44,7,1 -0,1,44,8,1 -0,1,44,9,1 -0,1,44,10,1 -0,1,44,11,1 -0,1,44,12,1 -0,1,44,13,1 -0,1,44,14,1 -0,1,44,15,1 -0,1,44,16,1 -0,1,44,17,1 -0,1,44,18,1 -0,1,44,19,1 -0,1,45,0,1 -0,1,45,1,1 -0,1,45,2,1 -0,1,45,3,1 -0,1,45,4,1 -0,1,45,5,1 -0,1,45,6,1 -0,1,45,7,1 -0,1,45,8,1 -0,1,45,9,1 -0,1,45,10,1 -0,1,45,11,1 -0,1,45,12,1 -0,1,45,13,1 -0,1,45,14,1 -0,1,45,15,1 -0,1,45,16,1 -0,1,45,17,1 -0,1,45,18,1 -0,1,45,19,1 -0,1,46,0,1 -0,1,46,1,1 -0,1,46,2,1 -0,1,46,3,1 -0,1,46,4,1 -0,1,46,5,1 -0,1,46,6,1 -0,1,46,7,1 -0,1,46,8,1 -0,1,46,9,1 -0,1,46,10,1 -0,1,46,11,1 -0,1,46,12,1 -0,1,46,13,1 -0,1,46,14,1 -0,1,46,15,1 -0,1,46,16,1 -0,1,46,17,1 -0,1,46,18,1 -0,1,46,19,1 -0,1,47,0,1 -0,1,47,1,1 -0,1,47,2,1 -0,1,47,3,1 -0,1,47,4,1 -0,1,47,5,1 -0,1,47,6,1 -0,1,47,7,1 -0,1,47,8,1 -0,1,47,9,1 -0,1,47,10,1 -0,1,47,11,1 -0,1,47,12,1 -0,1,47,13,1 -0,1,47,14,1 -0,1,47,15,1 -0,1,47,16,1 -0,1,47,17,1 -0,1,47,18,1 -0,1,47,19,1 -0,1,48,0,1 -0,1,48,1,1 -0,1,48,2,1 -0,1,48,3,1 -0,1,48,4,1 -0,1,48,5,1 -0,1,48,6,1 -0,1,48,7,1 -0,1,48,8,1 -0,1,48,9,1 -0,1,48,10,1 -0,1,48,11,1 -0,1,48,12,1 -0,1,48,13,1 -0,1,48,14,1 -0,1,48,15,1 -0,1,48,16,1 -0,1,48,17,1 -0,1,48,18,1 -0,1,48,19,1 -0,1,49,0,1 -0,1,49,1,1 -0,1,49,2,1 -0,1,49,3,1 -0,1,49,4,1 -0,1,49,5,1 -0,1,49,6,1 -0,1,49,7,1 -0,1,49,8,1 -0,1,49,9,1 -0,1,49,10,1 -0,1,49,11,1 -0,1,49,12,1 -0,1,49,13,1 -0,1,49,14,1 -0,1,49,15,1 -0,1,49,16,1 -0,1,49,17,1 -0,1,49,18,1 -0,1,49,19,1 -0,1,50,0,1 -0,1,50,1,1 -0,1,50,2,1 -0,1,50,3,1 -0,1,50,4,1 -0,1,50,5,1 -0,1,50,6,1 -0,1,50,7,1 -0,1,50,8,1 -0,1,50,9,1 -0,1,50,10,1 -0,1,50,11,1 -0,1,50,12,1 -0,1,50,13,1 -0,1,50,14,1 -0,1,50,15,1 -0,1,50,16,1 -0,1,50,17,1 -0,1,50,18,1 -0,1,50,19,1 -0,1,51,0,1 -0,1,51,1,1 -0,1,51,2,1 -0,1,51,3,1 -0,1,51,4,1 -0,1,51,5,1 -0,1,51,6,1 -0,1,51,7,1 -0,1,51,8,1 -0,1,51,9,1 -0,1,51,10,1 -0,1,51,11,1 -0,1,51,12,1 -0,1,51,13,1 -0,1,51,14,1 -0,1,51,15,1 -0,1,51,16,1 -0,1,51,17,1 -0,1,51,18,1 -0,1,51,19,1 -0,1,52,0,1 -0,1,52,1,1 -0,1,52,2,1 -0,1,52,3,1 -0,1,52,4,1 -0,1,52,5,1 -0,1,52,6,1 -0,1,52,7,1 -0,1,52,8,1 -0,1,52,9,1 -0,1,52,10,1 -0,1,52,11,1 -0,1,52,12,1 -0,1,52,13,1 -0,1,52,14,1 -0,1,52,15,1 -0,1,52,16,1 -0,1,52,17,1 -0,1,52,18,1 -0,1,52,19,1 -0,1,53,0,1 -0,1,53,1,1 -0,1,53,2,1 -0,1,53,3,1 -0,1,53,4,1 -0,1,53,5,1 -0,1,53,6,1 -0,1,53,7,1 -0,1,53,8,1 -0,1,53,9,1 -0,1,53,10,1 -0,1,53,11,1 -0,1,53,12,1 -0,1,53,13,1 -0,1,53,14,1 -0,1,53,15,1 -0,1,53,16,1 -0,1,53,17,1 -0,1,53,18,1 -0,1,53,19,1 -0,1,54,0,1 -0,1,54,1,1 -0,1,54,2,1 -0,1,54,3,1 -0,1,54,4,1 -0,1,54,5,1 -0,1,54,6,1 -0,1,54,7,1 -0,1,54,8,1 -0,1,54,9,1 -0,1,54,10,1 -0,1,54,11,1 -0,1,54,12,1 -0,1,54,13,1 -0,1,54,14,1 -0,1,54,15,1 -0,1,54,16,1 -0,1,54,17,1 -0,1,54,18,1 -0,1,54,19,1 -0,1,55,0,1 -0,1,55,1,1 -0,1,55,2,1 -0,1,55,3,1 -0,1,55,4,1 -0,1,55,5,1 -0,1,55,6,1 -0,1,55,7,1 -0,1,55,8,1 -0,1,55,9,1 -0,1,55,10,1 -0,1,55,11,1 -0,1,55,12,1 -0,1,55,13,1 -0,1,55,14,1 -0,1,55,15,1 -0,1,55,16,1 -0,1,55,17,1 -0,1,55,18,1 -0,1,55,19,1 -0,1,56,0,1 -0,1,56,1,1 -0,1,56,2,1 -0,1,56,3,1 -0,1,56,4,1 -0,1,56,5,1 -0,1,56,6,1 -0,1,56,7,1 -0,1,56,8,1 -0,1,56,9,1 -0,1,56,10,1 -0,1,56,11,1 -0,1,56,12,1 -0,1,56,13,1 -0,1,56,14,1 -0,1,56,15,1 -0,1,56,16,1 -0,1,56,17,1 -0,1,56,18,1 -0,1,56,19,1 -0,1,57,0,1 -0,1,57,1,1 -0,1,57,2,1 -0,1,57,3,1 -0,1,57,4,1 -0,1,57,5,1 -0,1,57,6,1 -0,1,57,7,1 -0,1,57,8,1 -0,1,57,9,1 -0,1,57,10,1 -0,1,57,11,1 -0,1,57,12,1 -0,1,57,13,1 -0,1,57,14,1 -0,1,57,15,1 -0,1,57,16,1 -0,1,57,17,1 -0,1,57,18,1 -0,1,57,19,1 -0,1,58,0,1 -0,1,58,1,1 -0,1,58,2,1 -0,1,58,3,1 -0,1,58,4,1 -0,1,58,5,1 -0,1,58,6,1 -0,1,58,7,1 -0,1,58,8,1 -0,1,58,9,1 -0,1,58,10,1 -0,1,58,11,1 -0,1,58,12,1 -0,1,58,13,1 -0,1,58,14,1 -0,1,58,15,1 -0,1,58,16,1 -0,1,58,17,1 -0,1,58,18,1 -0,1,58,19,1 -0,1,59,0,1 -0,1,59,1,1 -0,1,59,2,1 -0,1,59,3,1 -0,1,59,4,1 -0,1,59,5,1 -0,1,59,6,1 -0,1,59,7,1 -0,1,59,8,1 -0,1,59,9,1 -0,1,59,10,1 -0,1,59,11,1 -0,1,59,12,1 -0,1,59,13,1 -0,1,59,14,1 -0,1,59,15,1 -0,1,59,16,1 -0,1,59,17,1 -0,1,59,18,1 -0,1,59,19,1 -0,1,60,0,1 -0,1,60,1,1 -0,1,60,2,1 -0,1,60,3,1 -0,1,60,4,1 -0,1,60,5,1 -0,1,60,6,1 -0,1,60,7,1 -0,1,60,8,1 -0,1,60,9,1 -0,1,60,10,1 -0,1,60,11,1 -0,1,60,12,1 -0,1,60,13,1 -0,1,60,14,1 -0,1,60,15,1 -0,1,60,16,1 -0,1,60,17,1 -0,1,60,18,1 -0,1,60,19,1 -0,1,61,0,1 -0,1,61,1,1 -0,1,61,2,1 -0,1,61,3,1 -0,1,61,4,1 -0,1,61,5,1 -0,1,61,6,1 -0,1,61,7,1 -0,1,61,8,1 -0,1,61,9,1 -0,1,61,10,1 -0,1,61,11,1 -0,1,61,12,1 -0,1,61,13,1 -0,1,61,14,1 -0,1,61,15,1 -0,1,61,16,1 -0,1,61,17,1 -0,1,61,18,1 -0,1,61,19,1 -0,1,62,0,1 -0,1,62,1,1 -0,1,62,2,1 -0,1,62,3,1 -0,1,62,4,1 -0,1,62,5,1 -0,1,62,6,1 -0,1,62,7,1 -0,1,62,8,1 -0,1,62,9,1 -0,1,62,10,1 -0,1,62,11,1 -0,1,62,12,1 -0,1,62,13,1 -0,1,62,14,1 -0,1,62,15,1 -0,1,62,16,1 -0,1,62,17,1 -0,1,62,18,1 -0,1,62,19,1 -0,1,63,0,1 -0,1,63,1,1 -0,1,63,2,1 -0,1,63,3,1 -0,1,63,4,1 -0,1,63,5,1 -0,1,63,6,1 -0,1,63,7,1 -0,1,63,8,1 -0,1,63,9,1 -0,1,63,10,1 -0,1,63,11,1 -0,1,63,12,1 -0,1,63,13,1 -0,1,63,14,1 -0,1,63,15,1 -0,1,63,16,1 -0,1,63,17,1 -0,1,63,18,1 -0,1,63,19,1 -0,1,64,0,1 -0,1,64,1,1 -0,1,64,2,1 -0,1,64,3,1 -0,1,64,4,1 -0,1,64,5,1 -0,1,64,6,1 -0,1,64,7,1 -0,1,64,8,1 -0,1,64,9,1 -0,1,64,10,1 -0,1,64,11,1 -0,1,64,12,1 -0,1,64,13,1 -0,1,64,14,1 -0,1,64,15,1 -0,1,64,16,1 -0,1,64,17,1 -0,1,64,18,1 -0,1,64,19,1 -0,1,65,0,1 -0,1,65,1,1 -0,1,65,2,1 -0,1,65,3,1 -0,1,65,4,1 -0,1,65,5,1 -0,1,65,6,1 -0,1,65,7,1 -0,1,65,8,1 -0,1,65,9,1 -0,1,65,10,1 -0,1,65,11,1 -0,1,65,12,1 -0,1,65,13,1 -0,1,65,14,1 -0,1,65,15,1 -0,1,65,16,1 -0,1,65,17,1 -0,1,65,18,1 -0,1,65,19,1 -0,1,66,0,1 -0,1,66,1,1 -0,1,66,2,1 -0,1,66,3,1 -0,1,66,4,1 -0,1,66,5,1 -0,1,66,6,1 -0,1,66,7,1 -0,1,66,8,1 -0,1,66,9,1 -0,1,66,10,1 -0,1,66,11,1 -0,1,66,12,1 -0,1,66,13,1 -0,1,66,14,1 -0,1,66,15,1 -0,1,66,16,1 -0,1,66,17,1 -0,1,66,18,1 -0,1,66,19,1 -0,1,67,0,1 -0,1,67,1,1 -0,1,67,2,1 -0,1,67,3,1 -0,1,67,4,1 -0,1,67,5,1 -0,1,67,6,1 -0,1,67,7,1 -0,1,67,8,1 -0,1,67,9,1 -0,1,67,10,1 -0,1,67,11,1 -0,1,67,12,1 -0,1,67,13,1 -0,1,67,14,1 -0,1,67,15,1 -0,1,67,16,1 -0,1,67,17,1 -0,1,67,18,1 -0,1,67,19,1 -0,1,68,0,1 -0,1,68,1,1 -0,1,68,2,1 -0,1,68,3,1 -0,1,68,4,1 -0,1,68,5,1 -0,1,68,6,1 -0,1,68,7,1 -0,1,68,8,1 -0,1,68,9,1 -0,1,68,10,1 -0,1,68,11,1 -0,1,68,12,1 -0,1,68,13,1 -0,1,68,14,1 -0,1,68,15,1 -0,1,68,16,1 -0,1,68,17,1 -0,1,68,18,1 -0,1,68,19,1 -0,1,69,0,1 -0,1,69,1,1 -0,1,69,2,1 -0,1,69,3,1 -0,1,69,4,1 -0,1,69,5,1 -0,1,69,6,1 -0,1,69,7,1 -0,1,69,8,1 -0,1,69,9,1 -0,1,69,10,1 -0,1,69,11,1 -0,1,69,12,1 -0,1,69,13,1 -0,1,69,14,1 -0,1,69,15,1 -0,1,69,16,1 -0,1,69,17,1 -0,1,69,18,1 -0,1,69,19,1 -0,1,70,0,1 -0,1,70,1,1 -0,1,70,2,1 -0,1,70,3,1 -0,1,70,4,1 -0,1,70,5,1 -0,1,70,6,1 -0,1,70,7,1 -0,1,70,8,1 -0,1,70,9,1 -0,1,70,10,1 -0,1,70,11,1 -0,1,70,12,1 -0,1,70,13,1 -0,1,70,14,1 -0,1,70,15,1 -0,1,70,16,1 -0,1,70,17,1 -0,1,70,18,1 -0,1,70,19,1 -0,1,71,0,1 -0,1,71,1,1 -0,1,71,2,1 -0,1,71,3,1 -0,1,71,4,1 -0,1,71,5,1 -0,1,71,6,1 -0,1,71,7,1 -0,1,71,8,1 -0,1,71,9,1 -0,1,71,10,1 -0,1,71,11,1 -0,1,71,12,1 -0,1,71,13,1 -0,1,71,14,1 -0,1,71,15,1 -0,1,71,16,1 -0,1,71,17,1 -0,1,71,18,1 -0,1,71,19,1 -0,1,72,0,1 -0,1,72,1,1 -0,1,72,2,1 -0,1,72,3,1 -0,1,72,4,1 -0,1,72,5,1 -0,1,72,6,1 -0,1,72,7,1 -0,1,72,8,1 -0,1,72,9,1 -0,1,72,10,1 -0,1,72,11,1 -0,1,72,12,1 -0,1,72,13,1 -0,1,72,14,1 -0,1,72,15,1 -0,1,72,16,1 -0,1,72,17,1 -0,1,72,18,1 -0,1,72,19,1 -0,1,73,0,1 -0,1,73,1,1 -0,1,73,2,1 -0,1,73,3,1 -0,1,73,4,1 -0,1,73,5,1 -0,1,73,6,1 -0,1,73,7,1 -0,1,73,8,1 -0,1,73,9,1 -0,1,73,10,1 -0,1,73,11,1 -0,1,73,12,1 -0,1,73,13,1 -0,1,73,14,1 -0,1,73,15,1 -0,1,73,16,1 -0,1,73,17,1 -0,1,73,18,1 -0,1,73,19,1 -0,1,74,0,1 -0,1,74,1,1 -0,1,74,2,1 -0,1,74,3,1 -0,1,74,4,1 -0,1,74,5,1 -0,1,74,6,1 -0,1,74,7,1 -0,1,74,8,1 -0,1,74,9,1 -0,1,74,10,1 -0,1,74,11,1 -0,1,74,12,1 -0,1,74,13,1 -0,1,74,14,1 -0,1,74,15,1 -0,1,74,16,1 -0,1,74,17,1 -0,1,74,18,1 -0,1,74,19,1 -0,1,75,0,1 -0,1,75,1,1 -0,1,75,2,1 -0,1,75,3,1 -0,1,75,4,1 -0,1,75,5,1 -0,1,75,6,1 -0,1,75,7,1 -0,1,75,8,1 -0,1,75,9,1 -0,1,75,10,1 -0,1,75,11,1 -0,1,75,12,1 -0,1,75,13,1 -0,1,75,14,1 -0,1,75,15,1 -0,1,75,16,1 -0,1,75,17,1 -0,1,75,18,1 -0,1,75,19,1 -0,1,76,0,1 -0,1,76,1,1 -0,1,76,2,1 -0,1,76,3,1 -0,1,76,4,1 -0,1,76,5,1 -0,1,76,6,1 -0,1,76,7,1 -0,1,76,8,1 -0,1,76,9,1 -0,1,76,10,1 -0,1,76,11,1 -0,1,76,12,1 -0,1,76,13,1 -0,1,76,14,1 -0,1,76,15,1 -0,1,76,16,1 -0,1,76,17,1 -0,1,76,18,1 -0,1,76,19,1 -0,1,77,0,1 -0,1,77,1,1 -0,1,77,2,1 -0,1,77,3,1 -0,1,77,4,1 -0,1,77,5,1 -0,1,77,6,1 -0,1,77,7,1 -0,1,77,8,1 -0,1,77,9,1 -0,1,77,10,1 -0,1,77,11,1 -0,1,77,12,1 -0,1,77,13,1 -0,1,77,14,1 -0,1,77,15,1 -0,1,77,16,1 -0,1,77,17,1 -0,1,77,18,1 -0,1,77,19,1 -0,1,78,0,1 -0,1,78,1,1 -0,1,78,2,1 -0,1,78,3,1 -0,1,78,4,1 -0,1,78,5,1 -0,1,78,6,1 -0,1,78,7,1 -0,1,78,8,1 -0,1,78,9,1 -0,1,78,10,1 -0,1,78,11,1 -0,1,78,12,1 -0,1,78,13,1 -0,1,78,14,1 -0,1,78,15,1 -0,1,78,16,1 -0,1,78,17,1 -0,1,78,18,1 -0,1,78,19,1 -0,1,79,0,1 -0,1,79,1,1 -0,1,79,2,1 -0,1,79,3,1 -0,1,79,4,1 -0,1,79,5,1 -0,1,79,6,1 -0,1,79,7,1 -0,1,79,8,1 -0,1,79,9,1 -0,1,79,10,1 -0,1,79,11,1 -0,1,79,12,1 -0,1,79,13,1 -0,1,79,14,1 -0,1,79,15,1 -0,1,79,16,1 -0,1,79,17,1 -0,1,79,18,1 -0,1,79,19,1 -0,1,80,0,1 -0,1,80,1,1 -0,1,80,2,1 -0,1,80,3,1 -0,1,80,4,1 -0,1,80,5,1 -0,1,80,6,1 -0,1,80,7,1 -0,1,80,8,1 -0,1,80,9,1 -0,1,80,10,1 -0,1,80,11,1 -0,1,80,12,1 -0,1,80,13,1 -0,1,80,14,1 -0,1,80,15,1 -0,1,80,16,1 -0,1,80,17,1 -0,1,80,18,1 -0,1,80,19,1 -0,1,81,0,1 -0,1,81,1,1 -0,1,81,2,1 -0,1,81,3,1 -0,1,81,4,1 -0,1,81,5,1 -0,1,81,6,1 -0,1,81,7,1 -0,1,81,8,1 -0,1,81,9,1 -0,1,81,10,1 -0,1,81,11,1 -0,1,81,12,1 -0,1,81,13,1 -0,1,81,14,1 -0,1,81,15,1 -0,1,81,16,1 -0,1,81,17,1 -0,1,81,18,1 -0,1,81,19,1 -0,1,82,0,1 -0,1,82,1,1 -0,1,82,2,1 -0,1,82,3,1 -0,1,82,4,1 -0,1,82,5,1 -0,1,82,6,1 -0,1,82,7,1 -0,1,82,8,1 -0,1,82,9,1 -0,1,82,10,1 -0,1,82,11,1 -0,1,82,12,1 -0,1,82,13,1 -0,1,82,14,1 -0,1,82,15,1 -0,1,82,16,1 -0,1,82,17,1 -0,1,82,18,1 -0,1,82,19,1 -0,1,83,0,1 -0,1,83,1,1 -0,1,83,2,1 -0,1,83,3,1 -0,1,83,4,1 -0,1,83,5,1 -0,1,83,6,1 -0,1,83,7,1 -0,1,83,8,1 -0,1,83,9,1 -0,1,83,10,1 -0,1,83,11,1 -0,1,83,12,1 -0,1,83,13,1 -0,1,83,14,1 -0,1,83,15,1 -0,1,83,16,1 -0,1,83,17,1 -0,1,83,18,1 -0,1,83,19,1 -0,1,84,0,1 -0,1,84,1,1 -0,1,84,2,1 -0,1,84,3,1 -0,1,84,4,1 -0,1,84,5,1 -0,1,84,6,1 -0,1,84,7,1 -0,1,84,8,1 -0,1,84,9,1 -0,1,84,10,1 -0,1,84,11,1 -0,1,84,12,1 -0,1,84,13,1 -0,1,84,14,1 -0,1,84,15,1 -0,1,84,16,1 -0,1,84,17,1 -0,1,84,18,1 -0,1,84,19,1 -0,1,85,0,1 -0,1,85,1,1 -0,1,85,2,1 -0,1,85,3,1 -0,1,85,4,1 -0,1,85,5,1 -0,1,85,6,1 -0,1,85,7,1 -0,1,85,8,1 -0,1,85,9,1 -0,1,85,10,1 -0,1,85,11,1 -0,1,85,12,1 -0,1,85,13,1 -0,1,85,14,1 -0,1,85,15,1 -0,1,85,16,1 -0,1,85,17,1 -0,1,85,18,1 -0,1,85,19,1 -0,1,86,0,1 -0,1,86,1,1 -0,1,86,2,1 -0,1,86,3,1 -0,1,86,4,1 -0,1,86,5,1 -0,1,86,6,1 -0,1,86,7,1 -0,1,86,8,1 -0,1,86,9,1 -0,1,86,10,1 -0,1,86,11,1 -0,1,86,12,1 -0,1,86,13,1 -0,1,86,14,1 -0,1,86,15,1 -0,1,86,16,1 -0,1,86,17,1 -0,1,86,18,1 -0,1,86,19,1 -0,1,87,0,1 -0,1,87,1,1 -0,1,87,2,1 -0,1,87,3,1 -0,1,87,4,1 -0,1,87,5,1 -0,1,87,6,1 -0,1,87,7,1 -0,1,87,8,1 -0,1,87,9,1 -0,1,87,10,1 -0,1,87,11,1 -0,1,87,12,1 -0,1,87,13,1 -0,1,87,14,1 -0,1,87,15,1 -0,1,87,16,1 -0,1,87,17,1 -0,1,87,18,1 -0,1,87,19,1 -0,1,88,0,1 -0,1,88,1,1 -0,1,88,2,1 -0,1,88,3,1 -0,1,88,4,1 -0,1,88,5,1 -0,1,88,6,1 -0,1,88,7,1 -0,1,88,8,1 -0,1,88,9,1 -0,1,88,10,1 -0,1,88,11,1 -0,1,88,12,1 -0,1,88,13,1 -0,1,88,14,1 -0,1,88,15,1 -0,1,88,16,1 -0,1,88,17,1 -0,1,88,18,1 -0,1,88,19,1 -0,1,89,0,1 -0,1,89,1,1 -0,1,89,2,1 -0,1,89,3,1 -0,1,89,4,1 -0,1,89,5,1 -0,1,89,6,1 -0,1,89,7,1 -0,1,89,8,1 -0,1,89,9,1 -0,1,89,10,1 -0,1,89,11,1 -0,1,89,12,1 -0,1,89,13,1 -0,1,89,14,1 -0,1,89,15,1 -0,1,89,16,1 -0,1,89,17,1 -0,1,89,18,1 -0,1,89,19,1 -0,1,90,0,1 -0,1,90,1,1 -0,1,90,2,1 -0,1,90,3,1 -0,1,90,4,1 -0,1,90,5,1 -0,1,90,6,1 -0,1,90,7,1 -0,1,90,8,1 -0,1,90,9,1 -0,1,90,10,1 -0,1,90,11,1 -0,1,90,12,1 -0,1,90,13,1 -0,1,90,14,1 -0,1,90,15,1 -0,1,90,16,1 -0,1,90,17,1 -0,1,90,18,1 -0,1,90,19,1 -0,1,91,0,1 -0,1,91,1,1 -0,1,91,2,1 -0,1,91,3,1 -0,1,91,4,1 -0,1,91,5,1 -0,1,91,6,1 -0,1,91,7,1 -0,1,91,8,1 -0,1,91,9,1 -0,1,91,10,1 -0,1,91,11,1 -0,1,91,12,1 -0,1,91,13,1 -0,1,91,14,1 -0,1,91,15,1 -0,1,91,16,1 -0,1,91,17,1 -0,1,91,18,1 -0,1,91,19,1 -0,1,92,0,1 -0,1,92,1,1 -0,1,92,2,1 -0,1,92,3,1 -0,1,92,4,1 -0,1,92,5,1 -0,1,92,6,1 -0,1,92,7,1 -0,1,92,8,1 -0,1,92,9,1 -0,1,92,10,1 -0,1,92,11,1 -0,1,92,12,1 -0,1,92,13,1 -0,1,92,14,1 -0,1,92,15,1 -0,1,92,16,1 -0,1,92,17,1 -0,1,92,18,1 -0,1,92,19,1 -0,1,93,0,1 -0,1,93,1,1 -0,1,93,2,1 -0,1,93,3,1 -0,1,93,4,1 -0,1,93,5,1 -0,1,93,6,1 -0,1,93,7,1 -0,1,93,8,1 -0,1,93,9,1 -0,1,93,10,1 -0,1,93,11,1 -0,1,93,12,1 -0,1,93,13,1 -0,1,93,14,1 -0,1,93,15,1 -0,1,93,16,1 -0,1,93,17,1 -0,1,93,18,1 -0,1,93,19,1 -0,1,94,0,1 -0,1,94,1,1 -0,1,94,2,1 -0,1,94,3,1 -0,1,94,4,1 -0,1,94,5,1 -0,1,94,6,1 -0,1,94,7,1 -0,1,94,8,1 -0,1,94,9,1 -0,1,94,10,1 -0,1,94,11,1 -0,1,94,12,1 -0,1,94,13,1 -0,1,94,14,1 -0,1,94,15,1 -0,1,94,16,1 -0,1,94,17,1 -0,1,94,18,1 -0,1,94,19,1 -0,1,95,0,1 -0,1,95,1,1 -0,1,95,2,1 -0,1,95,3,1 -0,1,95,4,1 -0,1,95,5,1 -0,1,95,6,1 -0,1,95,7,1 -0,1,95,8,1 -0,1,95,9,1 -0,1,95,10,1 -0,1,95,11,1 -0,1,95,12,1 -0,1,95,13,1 -0,1,95,14,1 -0,1,95,15,1 -0,1,95,16,1 -0,1,95,17,1 -0,1,95,18,1 -0,1,95,19,1 -0,1,96,0,1 -0,1,96,1,1 -0,1,96,2,1 -0,1,96,3,1 -0,1,96,4,1 -0,1,96,5,1 -0,1,96,6,1 -0,1,96,7,1 -0,1,96,8,1 -0,1,96,9,1 -0,1,96,10,1 -0,1,96,11,1 -0,1,96,12,1 -0,1,96,13,1 -0,1,96,14,1 -0,1,96,15,1 -0,1,96,16,1 -0,1,96,17,1 -0,1,96,18,1 -0,1,96,19,1 -0,1,97,0,1 -0,1,97,1,1 -0,1,97,2,1 -0,1,97,3,1 -0,1,97,4,1 -0,1,97,5,1 -0,1,97,6,1 -0,1,97,7,1 -0,1,97,8,1 -0,1,97,9,1 -0,1,97,10,1 -0,1,97,11,1 -0,1,97,12,1 -0,1,97,13,1 -0,1,97,14,1 -0,1,97,15,1 -0,1,97,16,1 -0,1,97,17,1 -0,1,97,18,1 -0,1,97,19,1 -0,1,98,0,1 -0,1,98,1,1 -0,1,98,2,1 -0,1,98,3,1 -0,1,98,4,1 -0,1,98,5,1 -0,1,98,6,1 -0,1,98,7,1 -0,1,98,8,1 -0,1,98,9,1 -0,1,98,10,1 -0,1,98,11,1 -0,1,98,12,1 -0,1,98,13,1 -0,1,98,14,1 -0,1,98,15,1 -0,1,98,16,1 -0,1,98,17,1 -0,1,98,18,1 -0,1,98,19,1 -0,1,99,0,1 -0,1,99,1,1 -0,1,99,2,1 -0,1,99,3,1 -0,1,99,4,1 -0,1,99,5,1 -0,1,99,6,1 -0,1,99,7,1 -0,1,99,8,1 -0,1,99,9,1 -0,1,99,10,1 -0,1,99,11,1 -0,1,99,12,1 -0,1,99,13,1 -0,1,99,14,1 -0,1,99,15,1 -0,1,99,16,1 -0,1,99,17,1 -0,1,99,18,1 -0,1,99,19,1 -1,1,0,0,1 -1,1,0,1,1 -1,1,0,2,1 -1,1,0,3,1 -1,1,0,4,1 -1,1,0,5,1 -1,1,0,6,1 -1,1,0,7,1 -1,1,0,8,1 -1,1,0,9,1 -1,1,0,10,1 -1,1,0,11,1 -1,1,0,12,1 -1,1,0,13,1 -1,1,0,14,1 -1,1,0,15,1 -1,1,0,16,1 -1,1,0,17,1 -1,1,0,18,1 -1,1,0,19,1 -1,1,1,0,1 -1,1,1,1,1 -1,1,1,2,1 -1,1,1,3,1 -1,1,1,4,1 -1,1,1,5,1 -1,1,1,6,1 -1,1,1,7,1 -1,1,1,8,1 -1,1,1,9,1 -1,1,1,10,1 -1,1,1,11,1 -1,1,1,12,1 -1,1,1,13,1 -1,1,1,14,1 -1,1,1,15,1 -1,1,1,16,1 -1,1,1,17,1 -1,1,1,18,1 -1,1,1,19,1 -1,1,2,0,1 -1,1,2,1,1 -1,1,2,2,1 -1,1,2,3,1 -1,1,2,4,1 -1,1,2,5,1 -1,1,2,6,1 -1,1,2,7,1 -1,1,2,8,1 -1,1,2,9,1 -1,1,2,10,1 -1,1,2,11,1 -1,1,2,12,1 -1,1,2,13,1 -1,1,2,14,1 -1,1,2,15,1 -1,1,2,16,1 -1,1,2,17,1 -1,1,2,18,1 -1,1,2,19,1 -1,1,3,0,1 -1,1,3,1,1 -1,1,3,2,1 -1,1,3,3,1 -1,1,3,4,1 -1,1,3,5,1 -1,1,3,6,1 -1,1,3,7,1 -1,1,3,8,1 -1,1,3,9,1 -1,1,3,10,1 -1,1,3,11,1 -1,1,3,12,1 -1,1,3,13,1 -1,1,3,14,1 -1,1,3,15,1 -1,1,3,16,1 -1,1,3,17,1 -1,1,3,18,1 -1,1,3,19,1 -1,1,4,0,1 -1,1,4,1,1 -1,1,4,2,1 -1,1,4,3,1 -1,1,4,4,1 -1,1,4,5,1 -1,1,4,6,1 -1,1,4,7,1 -1,1,4,8,1 -1,1,4,9,1 -1,1,4,10,1 -1,1,4,11,1 -1,1,4,12,1 -1,1,4,13,1 -1,1,4,14,1 -1,1,4,15,1 -1,1,4,16,1 -1,1,4,17,1 -1,1,4,18,1 -1,1,4,19,1 -1,1,5,0,1 -1,1,5,1,1 -1,1,5,2,1 -1,1,5,3,1 -1,1,5,4,1 -1,1,5,5,1 -1,1,5,6,1 -1,1,5,7,1 -1,1,5,8,1 -1,1,5,9,1 -1,1,5,10,1 -1,1,5,11,1 -1,1,5,12,1 -1,1,5,13,1 -1,1,5,14,1 -1,1,5,15,1 -1,1,5,16,1 -1,1,5,17,1 -1,1,5,18,1 -1,1,5,19,1 -1,1,6,0,1 -1,1,6,1,1 -1,1,6,2,1 -1,1,6,3,1 -1,1,6,4,1 -1,1,6,5,1 -1,1,6,6,1 -1,1,6,7,1 -1,1,6,8,1 -1,1,6,9,1 -1,1,6,10,1 -1,1,6,11,1 -1,1,6,12,1 -1,1,6,13,1 -1,1,6,14,1 -1,1,6,15,1 -1,1,6,16,1 -1,1,6,17,1 -1,1,6,18,1 -1,1,6,19,1 -1,1,7,0,1 -1,1,7,1,1 -1,1,7,2,1 -1,1,7,3,1 -1,1,7,4,1 -1,1,7,5,1 -1,1,7,6,1 -1,1,7,7,1 -1,1,7,8,1 -1,1,7,9,1 -1,1,7,10,1 -1,1,7,11,1 -1,1,7,12,1 -1,1,7,13,1 -1,1,7,14,1 -1,1,7,15,1 -1,1,7,16,1 -1,1,7,17,1 -1,1,7,18,1 -1,1,7,19,1 -1,1,8,0,1 -1,1,8,1,1 -1,1,8,2,1 -1,1,8,3,1 -1,1,8,4,1 -1,1,8,5,1 -1,1,8,6,1 -1,1,8,7,1 -1,1,8,8,1 -1,1,8,9,1 -1,1,8,10,1 -1,1,8,11,1 -1,1,8,12,1 -1,1,8,13,1 -1,1,8,14,1 -1,1,8,15,1 -1,1,8,16,1 -1,1,8,17,1 -1,1,8,18,1 -1,1,8,19,1 -1,1,9,0,1 -1,1,9,1,1 -1,1,9,2,1 -1,1,9,3,1 -1,1,9,4,1 -1,1,9,5,1 -1,1,9,6,1 -1,1,9,7,1 -1,1,9,8,1 -1,1,9,9,1 -1,1,9,10,1 -1,1,9,11,1 -1,1,9,12,1 -1,1,9,13,1 -1,1,9,14,1 -1,1,9,15,1 -1,1,9,16,1 -1,1,9,17,1 -1,1,9,18,1 -1,1,9,19,1 -1,1,10,0,1 -1,1,10,1,1 -1,1,10,2,1 -1,1,10,3,1 -1,1,10,4,1 -1,1,10,5,1 -1,1,10,6,1 -1,1,10,7,1 -1,1,10,8,1 -1,1,10,9,1 -1,1,10,10,1 -1,1,10,11,1 -1,1,10,12,1 -1,1,10,13,1 -1,1,10,14,1 -1,1,10,15,1 -1,1,10,16,1 -1,1,10,17,1 -1,1,10,18,1 -1,1,10,19,1 -1,1,11,0,1 -1,1,11,1,1 -1,1,11,2,1 -1,1,11,3,1 -1,1,11,4,1 -1,1,11,5,1 -1,1,11,6,1 -1,1,11,7,1 -1,1,11,8,1 -1,1,11,9,1 -1,1,11,10,1 -1,1,11,11,1 -1,1,11,12,1 -1,1,11,13,1 -1,1,11,14,1 -1,1,11,15,1 -1,1,11,16,1 -1,1,11,17,1 -1,1,11,18,1 -1,1,11,19,1 -1,1,12,0,1 -1,1,12,1,1 -1,1,12,2,1 -1,1,12,3,1 -1,1,12,4,1 -1,1,12,5,1 -1,1,12,6,1 -1,1,12,7,1 -1,1,12,8,1 -1,1,12,9,1 -1,1,12,10,1 -1,1,12,11,1 -1,1,12,12,1 -1,1,12,13,1 -1,1,12,14,1 -1,1,12,15,1 -1,1,12,16,1 -1,1,12,17,1 -1,1,12,18,1 -1,1,12,19,1 -1,1,13,0,1 -1,1,13,1,1 -1,1,13,2,1 -1,1,13,3,1 -1,1,13,4,1 -1,1,13,5,1 -1,1,13,6,1 -1,1,13,7,1 -1,1,13,8,1 -1,1,13,9,1 -1,1,13,10,1 -1,1,13,11,1 -1,1,13,12,1 -1,1,13,13,1 -1,1,13,14,1 -1,1,13,15,1 -1,1,13,16,1 -1,1,13,17,1 -1,1,13,18,1 -1,1,13,19,1 -1,1,14,0,1 -1,1,14,1,1 -1,1,14,2,1 -1,1,14,3,1 -1,1,14,4,1 -1,1,14,5,1 -1,1,14,6,1 -1,1,14,7,1 -1,1,14,8,1 -1,1,14,9,1 -1,1,14,10,1 -1,1,14,11,1 -1,1,14,12,1 -1,1,14,13,1 -1,1,14,14,1 -1,1,14,15,1 -1,1,14,16,1 -1,1,14,17,1 -1,1,14,18,1 -1,1,14,19,1 -1,1,15,0,1 -1,1,15,1,1 -1,1,15,2,1 -1,1,15,3,1 -1,1,15,4,1 -1,1,15,5,1 -1,1,15,6,1 -1,1,15,7,1 -1,1,15,8,1 -1,1,15,9,1 -1,1,15,10,1 -1,1,15,11,1 -1,1,15,12,1 -1,1,15,13,1 -1,1,15,14,1 -1,1,15,15,1 -1,1,15,16,1 -1,1,15,17,1 -1,1,15,18,1 -1,1,15,19,1 -1,1,16,0,1 -1,1,16,1,1 -1,1,16,2,1 -1,1,16,3,1 -1,1,16,4,1 -1,1,16,5,1 -1,1,16,6,1 -1,1,16,7,1 -1,1,16,8,1 -1,1,16,9,1 -1,1,16,10,1 -1,1,16,11,1 -1,1,16,12,1 -1,1,16,13,1 -1,1,16,14,1 -1,1,16,15,1 -1,1,16,16,1 -1,1,16,17,1 -1,1,16,18,1 -1,1,16,19,1 -1,1,17,0,1 -1,1,17,1,1 -1,1,17,2,1 -1,1,17,3,1 -1,1,17,4,1 -1,1,17,5,1 -1,1,17,6,1 -1,1,17,7,1 -1,1,17,8,1 -1,1,17,9,1 -1,1,17,10,1 -1,1,17,11,1 -1,1,17,12,1 -1,1,17,13,1 -1,1,17,14,1 -1,1,17,15,1 -1,1,17,16,1 -1,1,17,17,1 -1,1,17,18,1 -1,1,17,19,1 -1,1,18,0,1 -1,1,18,1,1 -1,1,18,2,1 -1,1,18,3,1 -1,1,18,4,1 -1,1,18,5,1 -1,1,18,6,1 -1,1,18,7,1 -1,1,18,8,1 -1,1,18,9,1 -1,1,18,10,1 -1,1,18,11,1 -1,1,18,12,1 -1,1,18,13,1 -1,1,18,14,1 -1,1,18,15,1 -1,1,18,16,1 -1,1,18,17,1 -1,1,18,18,1 -1,1,18,19,1 -1,1,19,0,1 -1,1,19,1,1 -1,1,19,2,1 -1,1,19,3,1 -1,1,19,4,1 -1,1,19,5,1 -1,1,19,6,1 -1,1,19,7,1 -1,1,19,8,1 -1,1,19,9,1 -1,1,19,10,1 -1,1,19,11,1 -1,1,19,12,1 -1,1,19,13,1 -1,1,19,14,1 -1,1,19,15,1 -1,1,19,16,1 -1,1,19,17,1 -1,1,19,18,1 -1,1,19,19,1 -1,1,20,0,1 -1,1,20,1,1 -1,1,20,2,1 -1,1,20,3,1 -1,1,20,4,1 -1,1,20,5,1 -1,1,20,6,1 -1,1,20,7,1 -1,1,20,8,1 -1,1,20,9,1 -1,1,20,10,1 -1,1,20,11,1 -1,1,20,12,1 -1,1,20,13,1 -1,1,20,14,1 -1,1,20,15,1 -1,1,20,16,1 -1,1,20,17,1 -1,1,20,18,1 -1,1,20,19,1 -1,1,21,0,1 -1,1,21,1,1 -1,1,21,2,1 -1,1,21,3,1 -1,1,21,4,1 -1,1,21,5,1 -1,1,21,6,1 -1,1,21,7,1 -1,1,21,8,1 -1,1,21,9,1 -1,1,21,10,1 -1,1,21,11,1 -1,1,21,12,1 -1,1,21,13,1 -1,1,21,14,1 -1,1,21,15,1 -1,1,21,16,1 -1,1,21,17,1 -1,1,21,18,1 -1,1,21,19,1 -1,1,22,0,1 -1,1,22,1,1 -1,1,22,2,1 -1,1,22,3,1 -1,1,22,4,1 -1,1,22,5,1 -1,1,22,6,1 -1,1,22,7,1 -1,1,22,8,1 -1,1,22,9,1 -1,1,22,10,1 -1,1,22,11,1 -1,1,22,12,1 -1,1,22,13,1 -1,1,22,14,1 -1,1,22,15,1 -1,1,22,16,1 -1,1,22,17,1 -1,1,22,18,1 -1,1,22,19,1 -1,1,23,0,1 -1,1,23,1,1 -1,1,23,2,1 -1,1,23,3,1 -1,1,23,4,1 -1,1,23,5,1 -1,1,23,6,1 -1,1,23,7,1 -1,1,23,8,1 -1,1,23,9,1 -1,1,23,10,1 -1,1,23,11,1 -1,1,23,12,1 -1,1,23,13,1 -1,1,23,14,1 -1,1,23,15,1 -1,1,23,16,1 -1,1,23,17,1 -1,1,23,18,1 -1,1,23,19,1 -1,1,24,0,1 -1,1,24,1,1 -1,1,24,2,1 -1,1,24,3,1 -1,1,24,4,1 -1,1,24,5,1 -1,1,24,6,1 -1,1,24,7,1 -1,1,24,8,1 -1,1,24,9,1 -1,1,24,10,1 -1,1,24,11,1 -1,1,24,12,1 -1,1,24,13,1 -1,1,24,14,1 -1,1,24,15,1 -1,1,24,16,1 -1,1,24,17,1 -1,1,24,18,1 -1,1,24,19,1 -1,1,25,0,1 -1,1,25,1,1 -1,1,25,2,1 -1,1,25,3,1 -1,1,25,4,1 -1,1,25,5,1 -1,1,25,6,1 -1,1,25,7,1 -1,1,25,8,1 -1,1,25,9,1 -1,1,25,10,1 -1,1,25,11,1 -1,1,25,12,1 -1,1,25,13,1 -1,1,25,14,1 -1,1,25,15,1 -1,1,25,16,1 -1,1,25,17,1 -1,1,25,18,1 -1,1,25,19,1 -1,1,26,0,1 -1,1,26,1,1 -1,1,26,2,1 -1,1,26,3,1 -1,1,26,4,1 -1,1,26,5,1 -1,1,26,6,1 -1,1,26,7,1 -1,1,26,8,1 -1,1,26,9,1 -1,1,26,10,1 -1,1,26,11,1 -1,1,26,12,1 -1,1,26,13,1 -1,1,26,14,1 -1,1,26,15,1 -1,1,26,16,1 -1,1,26,17,1 -1,1,26,18,1 -1,1,26,19,1 -1,1,27,0,1 -1,1,27,1,1 -1,1,27,2,1 -1,1,27,3,1 -1,1,27,4,1 -1,1,27,5,1 -1,1,27,6,1 -1,1,27,7,1 -1,1,27,8,1 -1,1,27,9,1 -1,1,27,10,1 -1,1,27,11,1 -1,1,27,12,1 -1,1,27,13,1 -1,1,27,14,1 -1,1,27,15,1 -1,1,27,16,1 -1,1,27,17,1 -1,1,27,18,1 -1,1,27,19,1 -1,1,28,0,1 -1,1,28,1,1 -1,1,28,2,1 -1,1,28,3,1 -1,1,28,4,1 -1,1,28,5,1 -1,1,28,6,1 -1,1,28,7,1 -1,1,28,8,1 -1,1,28,9,1 -1,1,28,10,1 -1,1,28,11,1 -1,1,28,12,1 -1,1,28,13,1 -1,1,28,14,1 -1,1,28,15,1 -1,1,28,16,1 -1,1,28,17,1 -1,1,28,18,1 -1,1,28,19,1 -1,1,29,0,1 -1,1,29,1,1 -1,1,29,2,1 -1,1,29,3,1 -1,1,29,4,1 -1,1,29,5,1 -1,1,29,6,1 -1,1,29,7,1 -1,1,29,8,1 -1,1,29,9,1 -1,1,29,10,1 -1,1,29,11,1 -1,1,29,12,1 -1,1,29,13,1 -1,1,29,14,1 -1,1,29,15,1 -1,1,29,16,1 -1,1,29,17,1 -1,1,29,18,1 -1,1,29,19,1 -1,1,30,0,1 -1,1,30,1,1 -1,1,30,2,1 -1,1,30,3,1 -1,1,30,4,1 -1,1,30,5,1 -1,1,30,6,1 -1,1,30,7,1 -1,1,30,8,1 -1,1,30,9,1 -1,1,30,10,1 -1,1,30,11,1 -1,1,30,12,1 -1,1,30,13,1 -1,1,30,14,1 -1,1,30,15,1 -1,1,30,16,1 -1,1,30,17,1 -1,1,30,18,1 -1,1,30,19,1 -1,1,31,0,1 -1,1,31,1,1 -1,1,31,2,1 -1,1,31,3,1 -1,1,31,4,1 -1,1,31,5,1 -1,1,31,6,1 -1,1,31,7,1 -1,1,31,8,1 -1,1,31,9,1 -1,1,31,10,1 -1,1,31,11,1 -1,1,31,12,1 -1,1,31,13,1 -1,1,31,14,1 -1,1,31,15,1 -1,1,31,16,1 -1,1,31,17,1 -1,1,31,18,1 -1,1,31,19,1 -1,1,32,0,1 -1,1,32,1,1 -1,1,32,2,1 -1,1,32,3,1 -1,1,32,4,1 -1,1,32,5,1 -1,1,32,6,1 -1,1,32,7,1 -1,1,32,8,1 -1,1,32,9,1 -1,1,32,10,1 -1,1,32,11,1 -1,1,32,12,1 -1,1,32,13,1 -1,1,32,14,1 -1,1,32,15,1 -1,1,32,16,1 -1,1,32,17,1 -1,1,32,18,1 -1,1,32,19,1 -1,1,33,0,1 -1,1,33,1,1 -1,1,33,2,1 -1,1,33,3,1 -1,1,33,4,1 -1,1,33,5,1 -1,1,33,6,1 -1,1,33,7,1 -1,1,33,8,1 -1,1,33,9,1 -1,1,33,10,1 -1,1,33,11,1 -1,1,33,12,1 -1,1,33,13,1 -1,1,33,14,1 -1,1,33,15,1 -1,1,33,16,1 -1,1,33,17,1 -1,1,33,18,1 -1,1,33,19,1 -1,1,34,0,1 -1,1,34,1,1 -1,1,34,2,1 -1,1,34,3,1 -1,1,34,4,1 -1,1,34,5,1 -1,1,34,6,1 -1,1,34,7,1 -1,1,34,8,1 -1,1,34,9,1 -1,1,34,10,1 -1,1,34,11,1 -1,1,34,12,1 -1,1,34,13,1 -1,1,34,14,1 -1,1,34,15,1 -1,1,34,16,1 -1,1,34,17,1 -1,1,34,18,1 -1,1,34,19,1 -1,1,35,0,1 -1,1,35,1,1 -1,1,35,2,1 -1,1,35,3,1 -1,1,35,4,1 -1,1,35,5,1 -1,1,35,6,1 -1,1,35,7,1 -1,1,35,8,1 -1,1,35,9,1 -1,1,35,10,1 -1,1,35,11,1 -1,1,35,12,1 -1,1,35,13,1 -1,1,35,14,1 -1,1,35,15,1 -1,1,35,16,1 -1,1,35,17,1 -1,1,35,18,1 -1,1,35,19,1 -1,1,36,0,1 -1,1,36,1,1 -1,1,36,2,1 -1,1,36,3,1 -1,1,36,4,1 -1,1,36,5,1 -1,1,36,6,1 -1,1,36,7,1 -1,1,36,8,1 -1,1,36,9,1 -1,1,36,10,1 -1,1,36,11,1 -1,1,36,12,1 -1,1,36,13,1 -1,1,36,14,1 -1,1,36,15,1 -1,1,36,16,1 -1,1,36,17,1 -1,1,36,18,1 -1,1,36,19,1 -1,1,37,0,1 -1,1,37,1,1 -1,1,37,2,1 -1,1,37,3,1 -1,1,37,4,1 -1,1,37,5,1 -1,1,37,6,1 -1,1,37,7,1 -1,1,37,8,1 -1,1,37,9,1 -1,1,37,10,1 -1,1,37,11,1 -1,1,37,12,1 -1,1,37,13,1 -1,1,37,14,1 -1,1,37,15,1 -1,1,37,16,1 -1,1,37,17,1 -1,1,37,18,1 -1,1,37,19,1 -1,1,38,0,1 -1,1,38,1,1 -1,1,38,2,1 -1,1,38,3,1 -1,1,38,4,1 -1,1,38,5,1 -1,1,38,6,1 -1,1,38,7,1 -1,1,38,8,1 -1,1,38,9,1 -1,1,38,10,1 -1,1,38,11,1 -1,1,38,12,1 -1,1,38,13,1 -1,1,38,14,1 -1,1,38,15,1 -1,1,38,16,1 -1,1,38,17,1 -1,1,38,18,1 -1,1,38,19,1 -1,1,39,0,1 -1,1,39,1,1 -1,1,39,2,1 -1,1,39,3,1 -1,1,39,4,1 -1,1,39,5,1 -1,1,39,6,1 -1,1,39,7,1 -1,1,39,8,1 -1,1,39,9,1 -1,1,39,10,1 -1,1,39,11,1 -1,1,39,12,1 -1,1,39,13,1 -1,1,39,14,1 -1,1,39,15,1 -1,1,39,16,1 -1,1,39,17,1 -1,1,39,18,1 -1,1,39,19,1 -1,1,40,0,1 -1,1,40,1,1 -1,1,40,2,1 -1,1,40,3,1 -1,1,40,4,1 -1,1,40,5,1 -1,1,40,6,1 -1,1,40,7,1 -1,1,40,8,1 -1,1,40,9,1 -1,1,40,10,1 -1,1,40,11,1 -1,1,40,12,1 -1,1,40,13,1 -1,1,40,14,1 -1,1,40,15,1 -1,1,40,16,1 -1,1,40,17,1 -1,1,40,18,1 -1,1,40,19,1 -1,1,41,0,1 -1,1,41,1,1 -1,1,41,2,1 -1,1,41,3,1 -1,1,41,4,1 -1,1,41,5,1 -1,1,41,6,1 -1,1,41,7,1 -1,1,41,8,1 -1,1,41,9,1 -1,1,41,10,1 -1,1,41,11,1 -1,1,41,12,1 -1,1,41,13,1 -1,1,41,14,1 -1,1,41,15,1 -1,1,41,16,1 -1,1,41,17,1 -1,1,41,18,1 -1,1,41,19,1 -1,1,42,0,1 -1,1,42,1,1 -1,1,42,2,1 -1,1,42,3,1 -1,1,42,4,1 -1,1,42,5,1 -1,1,42,6,1 -1,1,42,7,1 -1,1,42,8,1 -1,1,42,9,1 -1,1,42,10,1 -1,1,42,11,1 -1,1,42,12,1 -1,1,42,13,1 -1,1,42,14,1 -1,1,42,15,1 -1,1,42,16,1 -1,1,42,17,1 -1,1,42,18,1 -1,1,42,19,1 -1,1,43,0,1 -1,1,43,1,1 -1,1,43,2,1 -1,1,43,3,1 -1,1,43,4,1 -1,1,43,5,1 -1,1,43,6,1 -1,1,43,7,1 -1,1,43,8,1 -1,1,43,9,1 -1,1,43,10,1 -1,1,43,11,1 -1,1,43,12,1 -1,1,43,13,1 -1,1,43,14,1 -1,1,43,15,1 -1,1,43,16,1 -1,1,43,17,1 -1,1,43,18,1 -1,1,43,19,1 -1,1,44,0,1 -1,1,44,1,1 -1,1,44,2,1 -1,1,44,3,1 -1,1,44,4,1 -1,1,44,5,1 -1,1,44,6,1 -1,1,44,7,1 -1,1,44,8,1 -1,1,44,9,1 -1,1,44,10,1 -1,1,44,11,1 -1,1,44,12,1 -1,1,44,13,1 -1,1,44,14,1 -1,1,44,15,1 -1,1,44,16,1 -1,1,44,17,1 -1,1,44,18,1 -1,1,44,19,1 -1,1,45,0,1 -1,1,45,1,1 -1,1,45,2,1 -1,1,45,3,1 -1,1,45,4,1 -1,1,45,5,1 -1,1,45,6,1 -1,1,45,7,1 -1,1,45,8,1 -1,1,45,9,1 -1,1,45,10,1 -1,1,45,11,1 -1,1,45,12,1 -1,1,45,13,1 -1,1,45,14,1 -1,1,45,15,1 -1,1,45,16,1 -1,1,45,17,1 -1,1,45,18,1 -1,1,45,19,1 -1,1,46,0,1 -1,1,46,1,1 -1,1,46,2,1 -1,1,46,3,1 -1,1,46,4,1 -1,1,46,5,1 -1,1,46,6,1 -1,1,46,7,1 -1,1,46,8,1 -1,1,46,9,1 -1,1,46,10,1 -1,1,46,11,1 -1,1,46,12,1 -1,1,46,13,1 -1,1,46,14,1 -1,1,46,15,1 -1,1,46,16,1 -1,1,46,17,1 -1,1,46,18,1 -1,1,46,19,1 -1,1,47,0,1 -1,1,47,1,1 -1,1,47,2,1 -1,1,47,3,1 -1,1,47,4,1 -1,1,47,5,1 -1,1,47,6,1 -1,1,47,7,1 -1,1,47,8,1 -1,1,47,9,1 -1,1,47,10,1 -1,1,47,11,1 -1,1,47,12,1 -1,1,47,13,1 -1,1,47,14,1 -1,1,47,15,1 -1,1,47,16,1 -1,1,47,17,1 -1,1,47,18,1 -1,1,47,19,1 -1,1,48,0,1 -1,1,48,1,1 -1,1,48,2,1 -1,1,48,3,1 -1,1,48,4,1 -1,1,48,5,1 -1,1,48,6,1 -1,1,48,7,1 -1,1,48,8,1 -1,1,48,9,1 -1,1,48,10,1 -1,1,48,11,1 -1,1,48,12,1 -1,1,48,13,1 -1,1,48,14,1 -1,1,48,15,1 -1,1,48,16,1 -1,1,48,17,1 -1,1,48,18,1 -1,1,48,19,1 -1,1,49,0,1 -1,1,49,1,1 -1,1,49,2,1 -1,1,49,3,1 -1,1,49,4,1 -1,1,49,5,1 -1,1,49,6,1 -1,1,49,7,1 -1,1,49,8,1 -1,1,49,9,1 -1,1,49,10,1 -1,1,49,11,1 -1,1,49,12,1 -1,1,49,13,1 -1,1,49,14,1 -1,1,49,15,1 -1,1,49,16,1 -1,1,49,17,1 -1,1,49,18,1 -1,1,49,19,1 -1,1,50,0,1 -1,1,50,1,1 -1,1,50,2,1 -1,1,50,3,1 -1,1,50,4,1 -1,1,50,5,1 -1,1,50,6,1 -1,1,50,7,1 -1,1,50,8,1 -1,1,50,9,1 -1,1,50,10,1 -1,1,50,11,1 -1,1,50,12,1 -1,1,50,13,1 -1,1,50,14,1 -1,1,50,15,1 -1,1,50,16,1 -1,1,50,17,1 -1,1,50,18,1 -1,1,50,19,1 -1,1,51,0,1 -1,1,51,1,1 -1,1,51,2,1 -1,1,51,3,1 -1,1,51,4,1 -1,1,51,5,1 -1,1,51,6,1 -1,1,51,7,1 -1,1,51,8,1 -1,1,51,9,1 -1,1,51,10,1 -1,1,51,11,1 -1,1,51,12,1 -1,1,51,13,1 -1,1,51,14,1 -1,1,51,15,1 -1,1,51,16,1 -1,1,51,17,1 -1,1,51,18,1 -1,1,51,19,1 -1,1,52,0,1 -1,1,52,1,1 -1,1,52,2,1 -1,1,52,3,1 -1,1,52,4,1 -1,1,52,5,1 -1,1,52,6,1 -1,1,52,7,1 -1,1,52,8,1 -1,1,52,9,1 -1,1,52,10,1 -1,1,52,11,1 -1,1,52,12,1 -1,1,52,13,1 -1,1,52,14,1 -1,1,52,15,1 -1,1,52,16,1 -1,1,52,17,1 -1,1,52,18,1 -1,1,52,19,1 -1,1,53,0,1 -1,1,53,1,1 -1,1,53,2,1 -1,1,53,3,1 -1,1,53,4,1 -1,1,53,5,1 -1,1,53,6,1 -1,1,53,7,1 -1,1,53,8,1 -1,1,53,9,1 -1,1,53,10,1 -1,1,53,11,1 -1,1,53,12,1 -1,1,53,13,1 -1,1,53,14,1 -1,1,53,15,1 -1,1,53,16,1 -1,1,53,17,1 -1,1,53,18,1 -1,1,53,19,1 -1,1,54,0,1 -1,1,54,1,1 -1,1,54,2,1 -1,1,54,3,1 -1,1,54,4,1 -1,1,54,5,1 -1,1,54,6,1 -1,1,54,7,1 -1,1,54,8,1 -1,1,54,9,1 -1,1,54,10,1 -1,1,54,11,1 -1,1,54,12,1 -1,1,54,13,1 -1,1,54,14,1 -1,1,54,15,1 -1,1,54,16,1 -1,1,54,17,1 -1,1,54,18,1 -1,1,54,19,1 -1,1,55,0,1 -1,1,55,1,1 -1,1,55,2,1 -1,1,55,3,1 -1,1,55,4,1 -1,1,55,5,1 -1,1,55,6,1 -1,1,55,7,1 -1,1,55,8,1 -1,1,55,9,1 -1,1,55,10,1 -1,1,55,11,1 -1,1,55,12,1 -1,1,55,13,1 -1,1,55,14,1 -1,1,55,15,1 -1,1,55,16,1 -1,1,55,17,1 -1,1,55,18,1 -1,1,55,19,1 -1,1,56,0,1 -1,1,56,1,1 -1,1,56,2,1 -1,1,56,3,1 -1,1,56,4,1 -1,1,56,5,1 -1,1,56,6,1 -1,1,56,7,1 -1,1,56,8,1 -1,1,56,9,1 -1,1,56,10,1 -1,1,56,11,1 -1,1,56,12,1 -1,1,56,13,1 -1,1,56,14,1 -1,1,56,15,1 -1,1,56,16,1 -1,1,56,17,1 -1,1,56,18,1 -1,1,56,19,1 -1,1,57,0,1 -1,1,57,1,1 -1,1,57,2,1 -1,1,57,3,1 -1,1,57,4,1 -1,1,57,5,1 -1,1,57,6,1 -1,1,57,7,1 -1,1,57,8,1 -1,1,57,9,1 -1,1,57,10,1 -1,1,57,11,1 -1,1,57,12,1 -1,1,57,13,1 -1,1,57,14,1 -1,1,57,15,1 -1,1,57,16,1 -1,1,57,17,1 -1,1,57,18,1 -1,1,57,19,1 -1,1,58,0,1 -1,1,58,1,1 -1,1,58,2,1 -1,1,58,3,1 -1,1,58,4,1 -1,1,58,5,1 -1,1,58,6,1 -1,1,58,7,1 -1,1,58,8,1 -1,1,58,9,1 -1,1,58,10,1 -1,1,58,11,1 -1,1,58,12,1 -1,1,58,13,1 -1,1,58,14,1 -1,1,58,15,1 -1,1,58,16,1 -1,1,58,17,1 -1,1,58,18,1 -1,1,58,19,1 -1,1,59,0,1 -1,1,59,1,1 -1,1,59,2,1 -1,1,59,3,1 -1,1,59,4,1 -1,1,59,5,1 -1,1,59,6,1 -1,1,59,7,1 -1,1,59,8,1 -1,1,59,9,1 -1,1,59,10,1 -1,1,59,11,1 -1,1,59,12,1 -1,1,59,13,1 -1,1,59,14,1 -1,1,59,15,1 -1,1,59,16,1 -1,1,59,17,1 -1,1,59,18,1 -1,1,59,19,1 -1,1,60,0,1 -1,1,60,1,1 -1,1,60,2,1 -1,1,60,3,1 -1,1,60,4,1 -1,1,60,5,1 -1,1,60,6,1 -1,1,60,7,1 -1,1,60,8,1 -1,1,60,9,1 -1,1,60,10,1 -1,1,60,11,1 -1,1,60,12,1 -1,1,60,13,1 -1,1,60,14,1 -1,1,60,15,1 -1,1,60,16,1 -1,1,60,17,1 -1,1,60,18,1 -1,1,60,19,1 -1,1,61,0,1 -1,1,61,1,1 -1,1,61,2,1 -1,1,61,3,1 -1,1,61,4,1 -1,1,61,5,1 -1,1,61,6,1 -1,1,61,7,1 -1,1,61,8,1 -1,1,61,9,1 -1,1,61,10,1 -1,1,61,11,1 -1,1,61,12,1 -1,1,61,13,1 -1,1,61,14,1 -1,1,61,15,1 -1,1,61,16,1 -1,1,61,17,1 -1,1,61,18,1 -1,1,61,19,1 -1,1,62,0,1 -1,1,62,1,1 -1,1,62,2,1 -1,1,62,3,1 -1,1,62,4,1 -1,1,62,5,1 -1,1,62,6,1 -1,1,62,7,1 -1,1,62,8,1 -1,1,62,9,1 -1,1,62,10,1 -1,1,62,11,1 -1,1,62,12,1 -1,1,62,13,1 -1,1,62,14,1 -1,1,62,15,1 -1,1,62,16,1 -1,1,62,17,1 -1,1,62,18,1 -1,1,62,19,1 -1,1,63,0,1 -1,1,63,1,1 -1,1,63,2,1 -1,1,63,3,1 -1,1,63,4,1 -1,1,63,5,1 -1,1,63,6,1 -1,1,63,7,1 -1,1,63,8,1 -1,1,63,9,1 -1,1,63,10,1 -1,1,63,11,1 -1,1,63,12,1 -1,1,63,13,1 -1,1,63,14,1 -1,1,63,15,1 -1,1,63,16,1 -1,1,63,17,1 -1,1,63,18,1 -1,1,63,19,1 -1,1,64,0,1 -1,1,64,1,1 -1,1,64,2,1 -1,1,64,3,1 -1,1,64,4,1 -1,1,64,5,1 -1,1,64,6,1 -1,1,64,7,1 -1,1,64,8,1 -1,1,64,9,1 -1,1,64,10,1 -1,1,64,11,1 -1,1,64,12,1 -1,1,64,13,1 -1,1,64,14,1 -1,1,64,15,1 -1,1,64,16,1 -1,1,64,17,1 -1,1,64,18,1 -1,1,64,19,1 -1,1,65,0,1 -1,1,65,1,1 -1,1,65,2,1 -1,1,65,3,1 -1,1,65,4,1 -1,1,65,5,1 -1,1,65,6,1 -1,1,65,7,1 -1,1,65,8,1 -1,1,65,9,1 -1,1,65,10,1 -1,1,65,11,1 -1,1,65,12,1 -1,1,65,13,1 -1,1,65,14,1 -1,1,65,15,1 -1,1,65,16,1 -1,1,65,17,1 -1,1,65,18,1 -1,1,65,19,1 -1,1,66,0,1 -1,1,66,1,1 -1,1,66,2,1 -1,1,66,3,1 -1,1,66,4,1 -1,1,66,5,1 -1,1,66,6,1 -1,1,66,7,1 -1,1,66,8,1 -1,1,66,9,1 -1,1,66,10,1 -1,1,66,11,1 -1,1,66,12,1 -1,1,66,13,1 -1,1,66,14,1 -1,1,66,15,1 -1,1,66,16,1 -1,1,66,17,1 -1,1,66,18,1 -1,1,66,19,1 -1,1,67,0,1 -1,1,67,1,1 -1,1,67,2,1 -1,1,67,3,1 -1,1,67,4,1 -1,1,67,5,1 -1,1,67,6,1 -1,1,67,7,1 -1,1,67,8,1 -1,1,67,9,1 -1,1,67,10,1 -1,1,67,11,1 -1,1,67,12,1 -1,1,67,13,1 -1,1,67,14,1 -1,1,67,15,1 -1,1,67,16,1 -1,1,67,17,1 -1,1,67,18,1 -1,1,67,19,1 -1,1,68,0,1 -1,1,68,1,1 -1,1,68,2,1 -1,1,68,3,1 -1,1,68,4,1 -1,1,68,5,1 -1,1,68,6,1 -1,1,68,7,1 -1,1,68,8,1 -1,1,68,9,1 -1,1,68,10,1 -1,1,68,11,1 -1,1,68,12,1 -1,1,68,13,1 -1,1,68,14,1 -1,1,68,15,1 -1,1,68,16,1 -1,1,68,17,1 -1,1,68,18,1 -1,1,68,19,1 -1,1,69,0,1 -1,1,69,1,1 -1,1,69,2,1 -1,1,69,3,1 -1,1,69,4,1 -1,1,69,5,1 -1,1,69,6,1 -1,1,69,7,1 -1,1,69,8,1 -1,1,69,9,1 -1,1,69,10,1 -1,1,69,11,1 -1,1,69,12,1 -1,1,69,13,1 -1,1,69,14,1 -1,1,69,15,1 -1,1,69,16,1 -1,1,69,17,1 -1,1,69,18,1 -1,1,69,19,1 -1,1,70,0,1 -1,1,70,1,1 -1,1,70,2,1 -1,1,70,3,1 -1,1,70,4,1 -1,1,70,5,1 -1,1,70,6,1 -1,1,70,7,1 -1,1,70,8,1 -1,1,70,9,1 -1,1,70,10,1 -1,1,70,11,1 -1,1,70,12,1 -1,1,70,13,1 -1,1,70,14,1 -1,1,70,15,1 -1,1,70,16,1 -1,1,70,17,1 -1,1,70,18,1 -1,1,70,19,1 -1,1,71,0,1 -1,1,71,1,1 -1,1,71,2,1 -1,1,71,3,1 -1,1,71,4,1 -1,1,71,5,1 -1,1,71,6,1 -1,1,71,7,1 -1,1,71,8,1 -1,1,71,9,1 -1,1,71,10,1 -1,1,71,11,1 -1,1,71,12,1 -1,1,71,13,1 -1,1,71,14,1 -1,1,71,15,1 -1,1,71,16,1 -1,1,71,17,1 -1,1,71,18,1 -1,1,71,19,1 -1,1,72,0,1 -1,1,72,1,1 -1,1,72,2,1 -1,1,72,3,1 -1,1,72,4,1 -1,1,72,5,1 -1,1,72,6,1 -1,1,72,7,1 -1,1,72,8,1 -1,1,72,9,1 -1,1,72,10,1 -1,1,72,11,1 -1,1,72,12,1 -1,1,72,13,1 -1,1,72,14,1 -1,1,72,15,1 -1,1,72,16,1 -1,1,72,17,1 -1,1,72,18,1 -1,1,72,19,1 -1,1,73,0,1 -1,1,73,1,1 -1,1,73,2,1 -1,1,73,3,1 -1,1,73,4,1 -1,1,73,5,1 -1,1,73,6,1 -1,1,73,7,1 -1,1,73,8,1 -1,1,73,9,1 -1,1,73,10,1 -1,1,73,11,1 -1,1,73,12,1 -1,1,73,13,1 -1,1,73,14,1 -1,1,73,15,1 -1,1,73,16,1 -1,1,73,17,1 -1,1,73,18,1 -1,1,73,19,1 -1,1,74,0,1 -1,1,74,1,1 -1,1,74,2,1 -1,1,74,3,1 -1,1,74,4,1 -1,1,74,5,1 -1,1,74,6,1 -1,1,74,7,1 -1,1,74,8,1 -1,1,74,9,1 -1,1,74,10,1 -1,1,74,11,1 -1,1,74,12,1 -1,1,74,13,1 -1,1,74,14,1 -1,1,74,15,1 -1,1,74,16,1 -1,1,74,17,1 -1,1,74,18,1 -1,1,74,19,1 -1,1,75,0,1 -1,1,75,1,1 -1,1,75,2,1 -1,1,75,3,1 -1,1,75,4,1 -1,1,75,5,1 -1,1,75,6,1 -1,1,75,7,1 -1,1,75,8,1 -1,1,75,9,1 -1,1,75,10,1 -1,1,75,11,1 -1,1,75,12,1 -1,1,75,13,1 -1,1,75,14,1 -1,1,75,15,1 -1,1,75,16,1 -1,1,75,17,1 -1,1,75,18,1 -1,1,75,19,1 -1,1,76,0,1 -1,1,76,1,1 -1,1,76,2,1 -1,1,76,3,1 -1,1,76,4,1 -1,1,76,5,1 -1,1,76,6,1 -1,1,76,7,1 -1,1,76,8,1 -1,1,76,9,1 -1,1,76,10,1 -1,1,76,11,1 -1,1,76,12,1 -1,1,76,13,1 -1,1,76,14,1 -1,1,76,15,1 -1,1,76,16,1 -1,1,76,17,1 -1,1,76,18,1 -1,1,76,19,1 -1,1,77,0,1 -1,1,77,1,1 -1,1,77,2,1 -1,1,77,3,1 -1,1,77,4,1 -1,1,77,5,1 -1,1,77,6,1 -1,1,77,7,1 -1,1,77,8,1 -1,1,77,9,1 -1,1,77,10,1 -1,1,77,11,1 -1,1,77,12,1 -1,1,77,13,1 -1,1,77,14,1 -1,1,77,15,1 -1,1,77,16,1 -1,1,77,17,1 -1,1,77,18,1 -1,1,77,19,1 -1,1,78,0,1 -1,1,78,1,1 -1,1,78,2,1 -1,1,78,3,1 -1,1,78,4,1 -1,1,78,5,1 -1,1,78,6,1 -1,1,78,7,1 -1,1,78,8,1 -1,1,78,9,1 -1,1,78,10,1 -1,1,78,11,1 -1,1,78,12,1 -1,1,78,13,1 -1,1,78,14,1 -1,1,78,15,1 -1,1,78,16,1 -1,1,78,17,1 -1,1,78,18,1 -1,1,78,19,1 -1,1,79,0,1 -1,1,79,1,1 -1,1,79,2,1 -1,1,79,3,1 -1,1,79,4,1 -1,1,79,5,1 -1,1,79,6,1 -1,1,79,7,1 -1,1,79,8,1 -1,1,79,9,1 -1,1,79,10,1 -1,1,79,11,1 -1,1,79,12,1 -1,1,79,13,1 -1,1,79,14,1 -1,1,79,15,1 -1,1,79,16,1 -1,1,79,17,1 -1,1,79,18,1 -1,1,79,19,1 -1,1,80,0,1 -1,1,80,1,1 -1,1,80,2,1 -1,1,80,3,1 -1,1,80,4,1 -1,1,80,5,1 -1,1,80,6,1 -1,1,80,7,1 -1,1,80,8,1 -1,1,80,9,1 -1,1,80,10,1 -1,1,80,11,1 -1,1,80,12,1 -1,1,80,13,1 -1,1,80,14,1 -1,1,80,15,1 -1,1,80,16,1 -1,1,80,17,1 -1,1,80,18,1 -1,1,80,19,1 -1,1,81,0,1 -1,1,81,1,1 -1,1,81,2,1 -1,1,81,3,1 -1,1,81,4,1 -1,1,81,5,1 -1,1,81,6,1 -1,1,81,7,1 -1,1,81,8,1 -1,1,81,9,1 -1,1,81,10,1 -1,1,81,11,1 -1,1,81,12,1 -1,1,81,13,1 -1,1,81,14,1 -1,1,81,15,1 -1,1,81,16,1 -1,1,81,17,1 -1,1,81,18,1 -1,1,81,19,1 -1,1,82,0,1 -1,1,82,1,1 -1,1,82,2,1 -1,1,82,3,1 -1,1,82,4,1 -1,1,82,5,1 -1,1,82,6,1 -1,1,82,7,1 -1,1,82,8,1 -1,1,82,9,1 -1,1,82,10,1 -1,1,82,11,1 -1,1,82,12,1 -1,1,82,13,1 -1,1,82,14,1 -1,1,82,15,1 -1,1,82,16,1 -1,1,82,17,1 -1,1,82,18,1 -1,1,82,19,1 -1,1,83,0,1 -1,1,83,1,1 -1,1,83,2,1 -1,1,83,3,1 -1,1,83,4,1 -1,1,83,5,1 -1,1,83,6,1 -1,1,83,7,1 -1,1,83,8,1 -1,1,83,9,1 -1,1,83,10,1 -1,1,83,11,1 -1,1,83,12,1 -1,1,83,13,1 -1,1,83,14,1 -1,1,83,15,1 -1,1,83,16,1 -1,1,83,17,1 -1,1,83,18,1 -1,1,83,19,1 -1,1,84,0,1 -1,1,84,1,1 -1,1,84,2,1 -1,1,84,3,1 -1,1,84,4,1 -1,1,84,5,1 -1,1,84,6,1 -1,1,84,7,1 -1,1,84,8,1 -1,1,84,9,1 -1,1,84,10,1 -1,1,84,11,1 -1,1,84,12,1 -1,1,84,13,1 -1,1,84,14,1 -1,1,84,15,1 -1,1,84,16,1 -1,1,84,17,1 -1,1,84,18,1 -1,1,84,19,1 -1,1,85,0,1 -1,1,85,1,1 -1,1,85,2,1 -1,1,85,3,1 -1,1,85,4,1 -1,1,85,5,1 -1,1,85,6,1 -1,1,85,7,1 -1,1,85,8,1 -1,1,85,9,1 -1,1,85,10,1 -1,1,85,11,1 -1,1,85,12,1 -1,1,85,13,1 -1,1,85,14,1 -1,1,85,15,1 -1,1,85,16,1 -1,1,85,17,1 -1,1,85,18,1 -1,1,85,19,1 -1,1,86,0,1 -1,1,86,1,1 -1,1,86,2,1 -1,1,86,3,1 -1,1,86,4,1 -1,1,86,5,1 -1,1,86,6,1 -1,1,86,7,1 -1,1,86,8,1 -1,1,86,9,1 -1,1,86,10,1 -1,1,86,11,1 -1,1,86,12,1 -1,1,86,13,1 -1,1,86,14,1 -1,1,86,15,1 -1,1,86,16,1 -1,1,86,17,1 -1,1,86,18,1 -1,1,86,19,1 -1,1,87,0,1 -1,1,87,1,1 -1,1,87,2,1 -1,1,87,3,1 -1,1,87,4,1 -1,1,87,5,1 -1,1,87,6,1 -1,1,87,7,1 -1,1,87,8,1 -1,1,87,9,1 -1,1,87,10,1 -1,1,87,11,1 -1,1,87,12,1 -1,1,87,13,1 -1,1,87,14,1 -1,1,87,15,1 -1,1,87,16,1 -1,1,87,17,1 -1,1,87,18,1 -1,1,87,19,1 -1,1,88,0,1 -1,1,88,1,1 -1,1,88,2,1 -1,1,88,3,1 -1,1,88,4,1 -1,1,88,5,1 -1,1,88,6,1 -1,1,88,7,1 -1,1,88,8,1 -1,1,88,9,1 -1,1,88,10,1 -1,1,88,11,1 -1,1,88,12,1 -1,1,88,13,1 -1,1,88,14,1 -1,1,88,15,1 -1,1,88,16,1 -1,1,88,17,1 -1,1,88,18,1 -1,1,88,19,1 -1,1,89,0,1 -1,1,89,1,1 -1,1,89,2,1 -1,1,89,3,1 -1,1,89,4,1 -1,1,89,5,1 -1,1,89,6,1 -1,1,89,7,1 -1,1,89,8,1 -1,1,89,9,1 -1,1,89,10,1 -1,1,89,11,1 -1,1,89,12,1 -1,1,89,13,1 -1,1,89,14,1 -1,1,89,15,1 -1,1,89,16,1 -1,1,89,17,1 -1,1,89,18,1 -1,1,89,19,1 -1,1,90,0,1 -1,1,90,1,1 -1,1,90,2,1 -1,1,90,3,1 -1,1,90,4,1 -1,1,90,5,1 -1,1,90,6,1 -1,1,90,7,1 -1,1,90,8,1 -1,1,90,9,1 -1,1,90,10,1 -1,1,90,11,1 -1,1,90,12,1 -1,1,90,13,1 -1,1,90,14,1 -1,1,90,15,1 -1,1,90,16,1 -1,1,90,17,1 -1,1,90,18,1 -1,1,90,19,1 -1,1,91,0,1 -1,1,91,1,1 -1,1,91,2,1 -1,1,91,3,1 -1,1,91,4,1 -1,1,91,5,1 -1,1,91,6,1 -1,1,91,7,1 -1,1,91,8,1 -1,1,91,9,1 -1,1,91,10,1 -1,1,91,11,1 -1,1,91,12,1 -1,1,91,13,1 -1,1,91,14,1 -1,1,91,15,1 -1,1,91,16,1 -1,1,91,17,1 -1,1,91,18,1 -1,1,91,19,1 -1,1,92,0,1 -1,1,92,1,1 -1,1,92,2,1 -1,1,92,3,1 -1,1,92,4,1 -1,1,92,5,1 -1,1,92,6,1 -1,1,92,7,1 -1,1,92,8,1 -1,1,92,9,1 -1,1,92,10,1 -1,1,92,11,1 -1,1,92,12,1 -1,1,92,13,1 -1,1,92,14,1 -1,1,92,15,1 -1,1,92,16,1 -1,1,92,17,1 -1,1,92,18,1 -1,1,92,19,1 -1,1,93,0,1 -1,1,93,1,1 -1,1,93,2,1 -1,1,93,3,1 -1,1,93,4,1 -1,1,93,5,1 -1,1,93,6,1 -1,1,93,7,1 -1,1,93,8,1 -1,1,93,9,1 -1,1,93,10,1 -1,1,93,11,1 -1,1,93,12,1 -1,1,93,13,1 -1,1,93,14,1 -1,1,93,15,1 -1,1,93,16,1 -1,1,93,17,1 -1,1,93,18,1 -1,1,93,19,1 -1,1,94,0,1 -1,1,94,1,1 -1,1,94,2,1 -1,1,94,3,1 -1,1,94,4,1 -1,1,94,5,1 -1,1,94,6,1 -1,1,94,7,1 -1,1,94,8,1 -1,1,94,9,1 -1,1,94,10,1 -1,1,94,11,1 -1,1,94,12,1 -1,1,94,13,1 -1,1,94,14,1 -1,1,94,15,1 -1,1,94,16,1 -1,1,94,17,1 -1,1,94,18,1 -1,1,94,19,1 -1,1,95,0,1 -1,1,95,1,1 -1,1,95,2,1 -1,1,95,3,1 -1,1,95,4,1 -1,1,95,5,1 -1,1,95,6,1 -1,1,95,7,1 -1,1,95,8,1 -1,1,95,9,1 -1,1,95,10,1 -1,1,95,11,1 -1,1,95,12,1 -1,1,95,13,1 -1,1,95,14,1 -1,1,95,15,1 -1,1,95,16,1 -1,1,95,17,1 -1,1,95,18,1 -1,1,95,19,1 -1,1,96,0,1 -1,1,96,1,1 -1,1,96,2,1 -1,1,96,3,1 -1,1,96,4,1 -1,1,96,5,1 -1,1,96,6,1 -1,1,96,7,1 -1,1,96,8,1 -1,1,96,9,1 -1,1,96,10,1 -1,1,96,11,1 -1,1,96,12,1 -1,1,96,13,1 -1,1,96,14,1 -1,1,96,15,1 -1,1,96,16,1 -1,1,96,17,1 -1,1,96,18,1 -1,1,96,19,1 -1,1,97,0,1 -1,1,97,1,1 -1,1,97,2,1 -1,1,97,3,1 -1,1,97,4,1 -1,1,97,5,1 -1,1,97,6,1 -1,1,97,7,1 -1,1,97,8,1 -1,1,97,9,1 -1,1,97,10,1 -1,1,97,11,1 -1,1,97,12,1 -1,1,97,13,1 -1,1,97,14,1 -1,1,97,15,1 -1,1,97,16,1 -1,1,97,17,1 -1,1,97,18,1 -1,1,97,19,1 -1,1,98,0,1 -1,1,98,1,1 -1,1,98,2,1 -1,1,98,3,1 -1,1,98,4,1 -1,1,98,5,1 -1,1,98,6,1 -1,1,98,7,1 -1,1,98,8,1 -1,1,98,9,1 -1,1,98,10,1 -1,1,98,11,1 -1,1,98,12,1 -1,1,98,13,1 -1,1,98,14,1 -1,1,98,15,1 -1,1,98,16,1 -1,1,98,17,1 -1,1,98,18,1 -1,1,98,19,1 -1,1,99,0,1 -1,1,99,1,1 -1,1,99,2,1 -1,1,99,3,1 -1,1,99,4,1 -1,1,99,5,1 -1,1,99,6,1 -1,1,99,7,1 -1,1,99,8,1 -1,1,99,9,1 -1,1,99,10,1 -1,1,99,11,1 -1,1,99,12,1 -1,1,99,13,1 -1,1,99,14,1 -1,1,99,15,1 -1,1,99,16,1 -1,1,99,17,1 -1,1,99,18,1 -1,1,99,19,1 1,0,0,0,1 1,0,0,1,1 1,0,0,2,1 @@ -6670,6 +2670,677 @@ id_scenario,id_run,period,id,b 1,0,33,8,1 1,0,33,9,1 1,0,33,10,1 +0,1,0,0,1 +0,1,0,1,1 +0,1,0,2,1 +0,1,0,3,1 +0,1,0,4,1 +0,1,0,5,1 +0,1,0,6,1 +0,1,0,7,1 +0,1,0,8,1 +0,1,0,9,1 +0,1,0,10,1 +0,1,0,11,1 +0,1,0,12,1 +0,1,0,13,1 +0,1,0,14,1 +0,1,0,15,1 +0,1,0,16,1 +0,1,0,17,1 +0,1,0,18,1 +0,1,0,19,1 +0,1,1,0,1 +0,1,1,1,1 +0,1,1,2,1 +0,1,1,3,1 +0,1,1,4,1 +0,1,1,5,1 +0,1,1,6,1 +0,1,1,7,1 +0,1,1,8,1 +0,1,1,9,1 +0,1,1,10,1 +0,1,1,11,1 +0,1,1,12,1 +0,1,1,13,1 +0,1,1,14,1 +0,1,1,15,1 +0,1,1,16,1 +0,1,1,17,1 +0,1,1,18,1 +0,1,1,19,1 +0,1,2,0,1 +0,1,2,1,1 +0,1,2,2,1 +0,1,2,3,1 +0,1,2,4,1 +0,1,2,5,1 +0,1,2,6,1 +0,1,2,7,1 +0,1,2,8,1 +0,1,2,9,1 +0,1,2,10,1 +0,1,2,11,1 +0,1,2,12,1 +0,1,2,13,1 +0,1,2,14,1 +0,1,2,15,1 +0,1,2,16,1 +0,1,2,17,1 +0,1,2,18,1 +0,1,2,19,1 +0,1,3,0,1 +0,1,3,1,1 +0,1,3,2,1 +0,1,3,3,1 +0,1,3,4,1 +0,1,3,5,1 +0,1,3,6,1 +0,1,3,7,1 +0,1,3,8,1 +0,1,3,9,1 +0,1,3,10,1 +0,1,3,11,1 +0,1,3,12,1 +0,1,3,13,1 +0,1,3,14,1 +0,1,3,15,1 +0,1,3,16,1 +0,1,3,17,1 +0,1,3,18,1 +0,1,3,19,1 +0,1,4,0,1 +0,1,4,1,1 +0,1,4,2,1 +0,1,4,3,1 +0,1,4,4,1 +0,1,4,5,1 +0,1,4,6,1 +0,1,4,7,1 +0,1,4,8,1 +0,1,4,9,1 +0,1,4,10,1 +0,1,4,11,1 +0,1,4,12,1 +0,1,4,13,1 +0,1,4,14,1 +0,1,4,15,1 +0,1,4,16,1 +0,1,4,17,1 +0,1,4,18,1 +0,1,4,19,1 +0,1,5,0,1 +0,1,5,1,1 +0,1,5,2,1 +0,1,5,3,1 +0,1,5,4,1 +0,1,5,5,1 +0,1,5,6,1 +0,1,5,7,1 +0,1,5,8,1 +0,1,5,9,1 +0,1,5,10,1 +0,1,5,11,1 +0,1,5,12,1 +0,1,5,13,1 +0,1,5,14,1 +0,1,5,15,1 +0,1,5,16,1 +0,1,5,17,1 +0,1,5,18,1 +0,1,5,19,1 +0,1,6,0,1 +0,1,6,1,1 +0,1,6,2,1 +0,1,6,3,1 +0,1,6,4,1 +0,1,6,5,1 +0,1,6,6,1 +0,1,6,7,1 +0,1,6,8,1 +0,1,6,9,1 +0,1,6,10,1 +0,1,6,11,1 +0,1,6,12,1 +0,1,6,13,1 +0,1,6,14,1 +0,1,6,15,1 +0,1,6,16,1 +0,1,6,17,1 +0,1,6,18,1 +0,1,6,19,1 +0,1,7,0,1 +0,1,7,1,1 +0,1,7,2,1 +0,1,7,3,1 +0,1,7,4,1 +0,1,7,5,1 +0,1,7,6,1 +0,1,7,7,1 +0,1,7,8,1 +0,1,7,9,1 +0,1,7,10,1 +0,1,7,11,1 +0,1,7,12,1 +0,1,7,13,1 +0,1,7,14,1 +0,1,7,15,1 +0,1,7,16,1 +0,1,7,17,1 +0,1,7,18,1 +0,1,7,19,1 +0,1,8,0,1 +0,1,8,1,1 +0,1,8,2,1 +0,1,8,3,1 +0,1,8,4,1 +0,1,8,5,1 +0,1,8,6,1 +0,1,8,7,1 +0,1,8,8,1 +0,1,8,9,1 +0,1,8,10,1 +0,1,8,11,1 +0,1,8,12,1 +0,1,8,13,1 +0,1,8,14,1 +0,1,8,15,1 +0,1,8,16,1 +0,1,8,17,1 +0,1,8,18,1 +0,1,8,19,1 +0,1,9,0,1 +0,1,9,1,1 +0,1,9,2,1 +0,1,9,3,1 +0,1,9,4,1 +0,1,9,5,1 +0,1,9,6,1 +0,1,9,7,1 +0,1,9,8,1 +0,1,9,9,1 +0,1,9,10,1 +0,1,9,11,1 +0,1,9,12,1 +0,1,9,13,1 +0,1,9,14,1 +0,1,9,15,1 +0,1,9,16,1 +0,1,9,17,1 +0,1,9,18,1 +0,1,9,19,1 +0,1,10,0,1 +0,1,10,1,1 +0,1,10,2,1 +0,1,10,3,1 +0,1,10,4,1 +0,1,10,5,1 +0,1,10,6,1 +0,1,10,7,1 +0,1,10,8,1 +0,1,10,9,1 +0,1,10,10,1 +0,1,10,11,1 +0,1,10,12,1 +0,1,10,13,1 +0,1,10,14,1 +0,1,10,15,1 +0,1,10,16,1 +0,1,10,17,1 +0,1,10,18,1 +0,1,10,19,1 +0,1,11,0,1 +0,1,11,1,1 +0,1,11,2,1 +0,1,11,3,1 +0,1,11,4,1 +0,1,11,5,1 +0,1,11,6,1 +0,1,11,7,1 +0,1,11,8,1 +0,1,11,9,1 +0,1,11,10,1 +0,1,11,11,1 +0,1,11,12,1 +0,1,11,13,1 +0,1,11,14,1 +0,1,11,15,1 +0,1,11,16,1 +0,1,11,17,1 +0,1,11,18,1 +0,1,11,19,1 +0,1,12,0,1 +0,1,12,1,1 +0,1,12,2,1 +0,1,12,3,1 +0,1,12,4,1 +0,1,12,5,1 +0,1,12,6,1 +0,1,12,7,1 +0,1,12,8,1 +0,1,12,9,1 +0,1,12,10,1 +0,1,12,11,1 +0,1,12,12,1 +0,1,12,13,1 +0,1,12,14,1 +0,1,12,15,1 +0,1,12,16,1 +0,1,12,17,1 +0,1,12,18,1 +0,1,12,19,1 +0,1,13,0,1 +0,1,13,1,1 +0,1,13,2,1 +0,1,13,3,1 +0,1,13,4,1 +0,1,13,5,1 +0,1,13,6,1 +0,1,13,7,1 +0,1,13,8,1 +0,1,13,9,1 +0,1,13,10,1 +0,1,13,11,1 +0,1,13,12,1 +0,1,13,13,1 +0,1,13,14,1 +0,1,13,15,1 +0,1,13,16,1 +0,1,13,17,1 +0,1,13,18,1 +0,1,13,19,1 +0,1,14,0,1 +0,1,14,1,1 +0,1,14,2,1 +0,1,14,3,1 +0,1,14,4,1 +0,1,14,5,1 +0,1,14,6,1 +0,1,14,7,1 +0,1,14,8,1 +0,1,14,9,1 +0,1,14,10,1 +0,1,14,11,1 +0,1,14,12,1 +0,1,14,13,1 +0,1,14,14,1 +0,1,14,15,1 +0,1,14,16,1 +0,1,14,17,1 +0,1,14,18,1 +0,1,14,19,1 +0,1,15,0,1 +0,1,15,1,1 +0,1,15,2,1 +0,1,15,3,1 +0,1,15,4,1 +0,1,15,5,1 +0,1,15,6,1 +0,1,15,7,1 +0,1,15,8,1 +0,1,15,9,1 +0,1,15,10,1 +0,1,15,11,1 +0,1,15,12,1 +0,1,15,13,1 +0,1,15,14,1 +0,1,15,15,1 +0,1,15,16,1 +0,1,15,17,1 +0,1,15,18,1 +0,1,15,19,1 +0,1,16,0,1 +0,1,16,1,1 +0,1,16,2,1 +0,1,16,3,1 +0,1,16,4,1 +0,1,16,5,1 +0,1,16,6,1 +0,1,16,7,1 +0,1,16,8,1 +0,1,16,9,1 +0,1,16,10,1 +0,1,16,11,1 +0,1,16,12,1 +0,1,16,13,1 +0,1,16,14,1 +0,1,16,15,1 +0,1,16,16,1 +0,1,16,17,1 +0,1,16,18,1 +0,1,16,19,1 +0,1,17,0,1 +0,1,17,1,1 +0,1,17,2,1 +0,1,17,3,1 +0,1,17,4,1 +0,1,17,5,1 +0,1,17,6,1 +0,1,17,7,1 +0,1,17,8,1 +0,1,17,9,1 +0,1,17,10,1 +0,1,17,11,1 +0,1,17,12,1 +0,1,17,13,1 +0,1,17,14,1 +0,1,17,15,1 +0,1,17,16,1 +0,1,17,17,1 +0,1,17,18,1 +0,1,17,19,1 +0,1,18,0,1 +0,1,18,1,1 +0,1,18,2,1 +0,1,18,3,1 +0,1,18,4,1 +0,1,18,5,1 +0,1,18,6,1 +0,1,18,7,1 +0,1,18,8,1 +0,1,18,9,1 +0,1,18,10,1 +0,1,18,11,1 +0,1,18,12,1 +0,1,18,13,1 +0,1,18,14,1 +0,1,18,15,1 +0,1,18,16,1 +0,1,18,17,1 +0,1,18,18,1 +0,1,18,19,1 +0,1,19,0,1 +0,1,19,1,1 +0,1,19,2,1 +0,1,19,3,1 +0,1,19,4,1 +0,1,19,5,1 +0,1,19,6,1 +0,1,19,7,1 +0,1,19,8,1 +0,1,19,9,1 +0,1,19,10,1 +0,1,19,11,1 +0,1,19,12,1 +0,1,19,13,1 +0,1,19,14,1 +0,1,19,15,1 +0,1,19,16,1 +0,1,19,17,1 +0,1,19,18,1 +0,1,19,19,1 +0,1,20,0,1 +0,1,20,1,1 +0,1,20,2,1 +0,1,20,3,1 +0,1,20,4,1 +0,1,20,5,1 +0,1,20,6,1 +0,1,20,7,1 +0,1,20,8,1 +0,1,20,9,1 +0,1,20,10,1 +0,1,20,11,1 +0,1,20,12,1 +0,1,20,13,1 +0,1,20,14,1 +0,1,20,15,1 +0,1,20,16,1 +0,1,20,17,1 +0,1,20,18,1 +0,1,20,19,1 +0,1,21,0,1 +0,1,21,1,1 +0,1,21,2,1 +0,1,21,3,1 +0,1,21,4,1 +0,1,21,5,1 +0,1,21,6,1 +0,1,21,7,1 +0,1,21,8,1 +0,1,21,9,1 +0,1,21,10,1 +0,1,21,11,1 +0,1,21,12,1 +0,1,21,13,1 +0,1,21,14,1 +0,1,21,15,1 +0,1,21,16,1 +0,1,21,17,1 +0,1,21,18,1 +0,1,21,19,1 +0,1,22,0,1 +0,1,22,1,1 +0,1,22,2,1 +0,1,22,3,1 +0,1,22,4,1 +0,1,22,5,1 +0,1,22,6,1 +0,1,22,7,1 +0,1,22,8,1 +0,1,22,9,1 +0,1,22,10,1 +0,1,22,11,1 +0,1,22,12,1 +0,1,22,13,1 +0,1,22,14,1 +0,1,22,15,1 +0,1,22,16,1 +0,1,22,17,1 +0,1,22,18,1 +0,1,22,19,1 +0,1,23,0,1 +0,1,23,1,1 +0,1,23,2,1 +0,1,23,3,1 +0,1,23,4,1 +0,1,23,5,1 +0,1,23,6,1 +0,1,23,7,1 +0,1,23,8,1 +0,1,23,9,1 +0,1,23,10,1 +0,1,23,11,1 +0,1,23,12,1 +0,1,23,13,1 +0,1,23,14,1 +0,1,23,15,1 +0,1,23,16,1 +0,1,23,17,1 +0,1,23,18,1 +0,1,23,19,1 +0,1,24,0,1 +0,1,24,1,1 +0,1,24,2,1 +0,1,24,3,1 +0,1,24,4,1 +0,1,24,5,1 +0,1,24,6,1 +0,1,24,7,1 +0,1,24,8,1 +0,1,24,9,1 +0,1,24,10,1 +0,1,24,11,1 +0,1,24,12,1 +0,1,24,13,1 +0,1,24,14,1 +0,1,24,15,1 +0,1,24,16,1 +0,1,24,17,1 +0,1,24,18,1 +0,1,24,19,1 +0,1,25,0,1 +0,1,25,1,1 +0,1,25,2,1 +0,1,25,3,1 +0,1,25,4,1 +0,1,25,5,1 +0,1,25,6,1 +0,1,25,7,1 +0,1,25,8,1 +0,1,25,9,1 +0,1,25,10,1 +0,1,25,11,1 +0,1,25,12,1 +0,1,25,13,1 +0,1,25,14,1 +0,1,25,15,1 +0,1,25,16,1 +0,1,25,17,1 +0,1,25,18,1 +0,1,25,19,1 +0,1,26,0,1 +0,1,26,1,1 +0,1,26,2,1 +0,1,26,3,1 +0,1,26,4,1 +0,1,26,5,1 +0,1,26,6,1 +0,1,26,7,1 +0,1,26,8,1 +0,1,26,9,1 +0,1,26,10,1 +0,1,26,11,1 +0,1,26,12,1 +0,1,26,13,1 +0,1,26,14,1 +0,1,26,15,1 +0,1,26,16,1 +0,1,26,17,1 +0,1,26,18,1 +0,1,26,19,1 +0,1,27,0,1 +0,1,27,1,1 +0,1,27,2,1 +0,1,27,3,1 +0,1,27,4,1 +0,1,27,5,1 +0,1,27,6,1 +0,1,27,7,1 +0,1,27,8,1 +0,1,27,9,1 +0,1,27,10,1 +0,1,27,11,1 +0,1,27,12,1 +0,1,27,13,1 +0,1,27,14,1 +0,1,27,15,1 +0,1,27,16,1 +0,1,27,17,1 +0,1,27,18,1 +0,1,27,19,1 +0,1,28,0,1 +0,1,28,1,1 +0,1,28,2,1 +0,1,28,3,1 +0,1,28,4,1 +0,1,28,5,1 +0,1,28,6,1 +0,1,28,7,1 +0,1,28,8,1 +0,1,28,9,1 +0,1,28,10,1 +0,1,28,11,1 +0,1,28,12,1 +0,1,28,13,1 +0,1,28,14,1 +0,1,28,15,1 +0,1,28,16,1 +0,1,28,17,1 +0,1,28,18,1 +0,1,28,19,1 +0,1,29,0,1 +0,1,29,1,1 +0,1,29,2,1 +0,1,29,3,1 +0,1,29,4,1 +0,1,29,5,1 +0,1,29,6,1 +0,1,29,7,1 +0,1,29,8,1 +0,1,29,9,1 +0,1,29,10,1 +0,1,29,11,1 +0,1,29,12,1 +0,1,29,13,1 +0,1,29,14,1 +0,1,29,15,1 +0,1,29,16,1 +0,1,29,17,1 +0,1,29,18,1 +0,1,29,19,1 +0,1,30,0,1 +0,1,30,1,1 +0,1,30,2,1 +0,1,30,3,1 +0,1,30,4,1 +0,1,30,5,1 +0,1,30,6,1 +0,1,30,7,1 +0,1,30,8,1 +0,1,30,9,1 +0,1,30,10,1 +0,1,30,11,1 +0,1,30,12,1 +0,1,30,13,1 +0,1,30,14,1 +0,1,30,15,1 +0,1,30,16,1 +0,1,30,17,1 +0,1,30,18,1 +0,1,30,19,1 +0,1,31,0,1 +0,1,31,1,1 +0,1,31,2,1 +0,1,31,3,1 +0,1,31,4,1 +0,1,31,5,1 +0,1,31,6,1 +0,1,31,7,1 +0,1,31,8,1 +0,1,31,9,1 +0,1,31,10,1 +0,1,31,11,1 +0,1,31,12,1 +0,1,31,13,1 +0,1,31,14,1 +0,1,31,15,1 +0,1,31,16,1 +0,1,31,17,1 +0,1,31,18,1 +0,1,31,19,1 +0,1,32,0,1 +0,1,32,1,1 +0,1,32,2,1 +0,1,32,3,1 +0,1,32,4,1 +0,1,32,5,1 +0,1,32,6,1 +0,1,32,7,1 +0,1,32,8,1 +0,1,32,9,1 +0,1,32,10,1 +0,1,32,11,1 +0,1,32,12,1 +0,1,32,13,1 +0,1,32,14,1 +0,1,32,15,1 +0,1,32,16,1 +0,1,32,17,1 +0,1,32,18,1 +0,1,32,19,1 +0,1,33,0,1 +0,1,33,1,1 +0,1,33,2,1 +0,1,33,3,1 +0,1,33,4,1 +0,1,33,5,1 +0,1,33,6,1 +0,1,33,7,1 +0,1,33,8,1 +0,1,33,9,1 +0,1,33,10,1 1,0,33,11,1 1,0,33,12,1 1,0,33,13,1 @@ -7999,3 +4670,3332 @@ id_scenario,id_run,period,id,b 1,0,99,17,1 1,0,99,18,1 1,0,99,19,1 +0,1,33,11,1 +0,1,33,12,1 +0,1,33,13,1 +0,1,33,14,1 +0,1,33,15,1 +0,1,33,16,1 +0,1,33,17,1 +0,1,33,18,1 +0,1,33,19,1 +0,1,34,0,1 +0,1,34,1,1 +0,1,34,2,1 +0,1,34,3,1 +0,1,34,4,1 +0,1,34,5,1 +0,1,34,6,1 +0,1,34,7,1 +0,1,34,8,1 +0,1,34,9,1 +0,1,34,10,1 +0,1,34,11,1 +0,1,34,12,1 +0,1,34,13,1 +0,1,34,14,1 +0,1,34,15,1 +0,1,34,16,1 +0,1,34,17,1 +0,1,34,18,1 +0,1,34,19,1 +0,1,35,0,1 +0,1,35,1,1 +0,1,35,2,1 +0,1,35,3,1 +0,1,35,4,1 +0,1,35,5,1 +0,1,35,6,1 +0,1,35,7,1 +0,1,35,8,1 +0,1,35,9,1 +0,1,35,10,1 +0,1,35,11,1 +0,1,35,12,1 +0,1,35,13,1 +0,1,35,14,1 +0,1,35,15,1 +0,1,35,16,1 +0,1,35,17,1 +0,1,35,18,1 +0,1,35,19,1 +0,1,36,0,1 +0,1,36,1,1 +0,1,36,2,1 +0,1,36,3,1 +0,1,36,4,1 +0,1,36,5,1 +0,1,36,6,1 +0,1,36,7,1 +0,1,36,8,1 +0,1,36,9,1 +0,1,36,10,1 +0,1,36,11,1 +0,1,36,12,1 +0,1,36,13,1 +0,1,36,14,1 +0,1,36,15,1 +0,1,36,16,1 +0,1,36,17,1 +0,1,36,18,1 +0,1,36,19,1 +0,1,37,0,1 +0,1,37,1,1 +0,1,37,2,1 +0,1,37,3,1 +0,1,37,4,1 +0,1,37,5,1 +0,1,37,6,1 +0,1,37,7,1 +0,1,37,8,1 +0,1,37,9,1 +0,1,37,10,1 +0,1,37,11,1 +0,1,37,12,1 +0,1,37,13,1 +0,1,37,14,1 +0,1,37,15,1 +0,1,37,16,1 +0,1,37,17,1 +0,1,37,18,1 +0,1,37,19,1 +0,1,38,0,1 +0,1,38,1,1 +0,1,38,2,1 +0,1,38,3,1 +0,1,38,4,1 +0,1,38,5,1 +0,1,38,6,1 +0,1,38,7,1 +0,1,38,8,1 +0,1,38,9,1 +0,1,38,10,1 +0,1,38,11,1 +0,1,38,12,1 +0,1,38,13,1 +0,1,38,14,1 +0,1,38,15,1 +0,1,38,16,1 +0,1,38,17,1 +0,1,38,18,1 +0,1,38,19,1 +0,1,39,0,1 +0,1,39,1,1 +0,1,39,2,1 +0,1,39,3,1 +0,1,39,4,1 +0,1,39,5,1 +0,1,39,6,1 +0,1,39,7,1 +0,1,39,8,1 +0,1,39,9,1 +0,1,39,10,1 +0,1,39,11,1 +0,1,39,12,1 +0,1,39,13,1 +0,1,39,14,1 +0,1,39,15,1 +0,1,39,16,1 +0,1,39,17,1 +0,1,39,18,1 +0,1,39,19,1 +0,1,40,0,1 +0,1,40,1,1 +0,1,40,2,1 +0,1,40,3,1 +0,1,40,4,1 +0,1,40,5,1 +0,1,40,6,1 +0,1,40,7,1 +0,1,40,8,1 +0,1,40,9,1 +0,1,40,10,1 +0,1,40,11,1 +0,1,40,12,1 +0,1,40,13,1 +0,1,40,14,1 +0,1,40,15,1 +0,1,40,16,1 +0,1,40,17,1 +0,1,40,18,1 +0,1,40,19,1 +0,1,41,0,1 +0,1,41,1,1 +0,1,41,2,1 +0,1,41,3,1 +0,1,41,4,1 +0,1,41,5,1 +0,1,41,6,1 +0,1,41,7,1 +0,1,41,8,1 +0,1,41,9,1 +0,1,41,10,1 +0,1,41,11,1 +0,1,41,12,1 +0,1,41,13,1 +0,1,41,14,1 +0,1,41,15,1 +0,1,41,16,1 +0,1,41,17,1 +0,1,41,18,1 +0,1,41,19,1 +0,1,42,0,1 +0,1,42,1,1 +0,1,42,2,1 +0,1,42,3,1 +0,1,42,4,1 +0,1,42,5,1 +0,1,42,6,1 +0,1,42,7,1 +0,1,42,8,1 +0,1,42,9,1 +0,1,42,10,1 +0,1,42,11,1 +0,1,42,12,1 +0,1,42,13,1 +0,1,42,14,1 +0,1,42,15,1 +0,1,42,16,1 +0,1,42,17,1 +0,1,42,18,1 +0,1,42,19,1 +0,1,43,0,1 +0,1,43,1,1 +0,1,43,2,1 +0,1,43,3,1 +0,1,43,4,1 +0,1,43,5,1 +0,1,43,6,1 +0,1,43,7,1 +0,1,43,8,1 +0,1,43,9,1 +0,1,43,10,1 +0,1,43,11,1 +0,1,43,12,1 +0,1,43,13,1 +0,1,43,14,1 +0,1,43,15,1 +0,1,43,16,1 +0,1,43,17,1 +0,1,43,18,1 +0,1,43,19,1 +0,1,44,0,1 +0,1,44,1,1 +0,1,44,2,1 +0,1,44,3,1 +0,1,44,4,1 +0,1,44,5,1 +0,1,44,6,1 +0,1,44,7,1 +0,1,44,8,1 +0,1,44,9,1 +0,1,44,10,1 +0,1,44,11,1 +0,1,44,12,1 +0,1,44,13,1 +0,1,44,14,1 +0,1,44,15,1 +0,1,44,16,1 +0,1,44,17,1 +0,1,44,18,1 +0,1,44,19,1 +0,1,45,0,1 +0,1,45,1,1 +0,1,45,2,1 +0,1,45,3,1 +0,1,45,4,1 +0,1,45,5,1 +0,1,45,6,1 +0,1,45,7,1 +0,1,45,8,1 +0,1,45,9,1 +0,1,45,10,1 +0,1,45,11,1 +0,1,45,12,1 +0,1,45,13,1 +0,1,45,14,1 +0,1,45,15,1 +0,1,45,16,1 +0,1,45,17,1 +0,1,45,18,1 +0,1,45,19,1 +0,1,46,0,1 +0,1,46,1,1 +0,1,46,2,1 +0,1,46,3,1 +0,1,46,4,1 +0,1,46,5,1 +0,1,46,6,1 +0,1,46,7,1 +0,1,46,8,1 +0,1,46,9,1 +0,1,46,10,1 +0,1,46,11,1 +0,1,46,12,1 +0,1,46,13,1 +0,1,46,14,1 +0,1,46,15,1 +0,1,46,16,1 +0,1,46,17,1 +0,1,46,18,1 +0,1,46,19,1 +0,1,47,0,1 +0,1,47,1,1 +0,1,47,2,1 +0,1,47,3,1 +0,1,47,4,1 +0,1,47,5,1 +0,1,47,6,1 +0,1,47,7,1 +0,1,47,8,1 +0,1,47,9,1 +0,1,47,10,1 +0,1,47,11,1 +0,1,47,12,1 +0,1,47,13,1 +0,1,47,14,1 +0,1,47,15,1 +0,1,47,16,1 +0,1,47,17,1 +0,1,47,18,1 +0,1,47,19,1 +0,1,48,0,1 +0,1,48,1,1 +0,1,48,2,1 +0,1,48,3,1 +0,1,48,4,1 +0,1,48,5,1 +0,1,48,6,1 +0,1,48,7,1 +0,1,48,8,1 +0,1,48,9,1 +0,1,48,10,1 +0,1,48,11,1 +0,1,48,12,1 +0,1,48,13,1 +0,1,48,14,1 +0,1,48,15,1 +0,1,48,16,1 +0,1,48,17,1 +0,1,48,18,1 +0,1,48,19,1 +0,1,49,0,1 +0,1,49,1,1 +0,1,49,2,1 +0,1,49,3,1 +0,1,49,4,1 +0,1,49,5,1 +0,1,49,6,1 +0,1,49,7,1 +0,1,49,8,1 +0,1,49,9,1 +0,1,49,10,1 +0,1,49,11,1 +0,1,49,12,1 +0,1,49,13,1 +0,1,49,14,1 +0,1,49,15,1 +0,1,49,16,1 +0,1,49,17,1 +0,1,49,18,1 +0,1,49,19,1 +0,1,50,0,1 +0,1,50,1,1 +0,1,50,2,1 +0,1,50,3,1 +0,1,50,4,1 +0,1,50,5,1 +0,1,50,6,1 +0,1,50,7,1 +0,1,50,8,1 +0,1,50,9,1 +0,1,50,10,1 +0,1,50,11,1 +0,1,50,12,1 +0,1,50,13,1 +0,1,50,14,1 +0,1,50,15,1 +0,1,50,16,1 +0,1,50,17,1 +0,1,50,18,1 +0,1,50,19,1 +0,1,51,0,1 +0,1,51,1,1 +0,1,51,2,1 +0,1,51,3,1 +0,1,51,4,1 +0,1,51,5,1 +0,1,51,6,1 +0,1,51,7,1 +0,1,51,8,1 +0,1,51,9,1 +0,1,51,10,1 +0,1,51,11,1 +0,1,51,12,1 +0,1,51,13,1 +0,1,51,14,1 +0,1,51,15,1 +0,1,51,16,1 +0,1,51,17,1 +0,1,51,18,1 +0,1,51,19,1 +0,1,52,0,1 +0,1,52,1,1 +0,1,52,2,1 +0,1,52,3,1 +0,1,52,4,1 +0,1,52,5,1 +0,1,52,6,1 +0,1,52,7,1 +0,1,52,8,1 +0,1,52,9,1 +0,1,52,10,1 +0,1,52,11,1 +0,1,52,12,1 +0,1,52,13,1 +0,1,52,14,1 +0,1,52,15,1 +0,1,52,16,1 +0,1,52,17,1 +0,1,52,18,1 +0,1,52,19,1 +0,1,53,0,1 +0,1,53,1,1 +0,1,53,2,1 +0,1,53,3,1 +0,1,53,4,1 +0,1,53,5,1 +0,1,53,6,1 +0,1,53,7,1 +0,1,53,8,1 +0,1,53,9,1 +0,1,53,10,1 +0,1,53,11,1 +0,1,53,12,1 +0,1,53,13,1 +0,1,53,14,1 +0,1,53,15,1 +0,1,53,16,1 +0,1,53,17,1 +0,1,53,18,1 +0,1,53,19,1 +0,1,54,0,1 +0,1,54,1,1 +0,1,54,2,1 +0,1,54,3,1 +0,1,54,4,1 +0,1,54,5,1 +0,1,54,6,1 +0,1,54,7,1 +0,1,54,8,1 +0,1,54,9,1 +0,1,54,10,1 +0,1,54,11,1 +0,1,54,12,1 +0,1,54,13,1 +0,1,54,14,1 +0,1,54,15,1 +0,1,54,16,1 +0,1,54,17,1 +0,1,54,18,1 +0,1,54,19,1 +0,1,55,0,1 +0,1,55,1,1 +0,1,55,2,1 +0,1,55,3,1 +0,1,55,4,1 +0,1,55,5,1 +0,1,55,6,1 +0,1,55,7,1 +0,1,55,8,1 +0,1,55,9,1 +0,1,55,10,1 +0,1,55,11,1 +0,1,55,12,1 +0,1,55,13,1 +0,1,55,14,1 +0,1,55,15,1 +0,1,55,16,1 +0,1,55,17,1 +0,1,55,18,1 +0,1,55,19,1 +0,1,56,0,1 +0,1,56,1,1 +0,1,56,2,1 +0,1,56,3,1 +0,1,56,4,1 +0,1,56,5,1 +0,1,56,6,1 +0,1,56,7,1 +0,1,56,8,1 +0,1,56,9,1 +0,1,56,10,1 +0,1,56,11,1 +0,1,56,12,1 +0,1,56,13,1 +0,1,56,14,1 +0,1,56,15,1 +0,1,56,16,1 +0,1,56,17,1 +0,1,56,18,1 +0,1,56,19,1 +0,1,57,0,1 +0,1,57,1,1 +0,1,57,2,1 +0,1,57,3,1 +0,1,57,4,1 +0,1,57,5,1 +0,1,57,6,1 +0,1,57,7,1 +0,1,57,8,1 +0,1,57,9,1 +0,1,57,10,1 +0,1,57,11,1 +0,1,57,12,1 +0,1,57,13,1 +0,1,57,14,1 +0,1,57,15,1 +0,1,57,16,1 +0,1,57,17,1 +0,1,57,18,1 +0,1,57,19,1 +0,1,58,0,1 +0,1,58,1,1 +0,1,58,2,1 +0,1,58,3,1 +0,1,58,4,1 +0,1,58,5,1 +0,1,58,6,1 +0,1,58,7,1 +0,1,58,8,1 +0,1,58,9,1 +0,1,58,10,1 +0,1,58,11,1 +0,1,58,12,1 +0,1,58,13,1 +0,1,58,14,1 +0,1,58,15,1 +0,1,58,16,1 +0,1,58,17,1 +0,1,58,18,1 +0,1,58,19,1 +0,1,59,0,1 +0,1,59,1,1 +0,1,59,2,1 +0,1,59,3,1 +0,1,59,4,1 +0,1,59,5,1 +0,1,59,6,1 +0,1,59,7,1 +0,1,59,8,1 +0,1,59,9,1 +0,1,59,10,1 +0,1,59,11,1 +0,1,59,12,1 +0,1,59,13,1 +0,1,59,14,1 +0,1,59,15,1 +0,1,59,16,1 +0,1,59,17,1 +0,1,59,18,1 +0,1,59,19,1 +0,1,60,0,1 +0,1,60,1,1 +0,1,60,2,1 +0,1,60,3,1 +0,1,60,4,1 +0,1,60,5,1 +0,1,60,6,1 +0,1,60,7,1 +0,1,60,8,1 +0,1,60,9,1 +0,1,60,10,1 +0,1,60,11,1 +0,1,60,12,1 +0,1,60,13,1 +0,1,60,14,1 +0,1,60,15,1 +0,1,60,16,1 +0,1,60,17,1 +0,1,60,18,1 +0,1,60,19,1 +0,1,61,0,1 +0,1,61,1,1 +0,1,61,2,1 +0,1,61,3,1 +0,1,61,4,1 +0,1,61,5,1 +0,1,61,6,1 +0,1,61,7,1 +0,1,61,8,1 +0,1,61,9,1 +0,1,61,10,1 +0,1,61,11,1 +0,1,61,12,1 +0,1,61,13,1 +0,1,61,14,1 +0,1,61,15,1 +0,1,61,16,1 +0,1,61,17,1 +0,1,61,18,1 +0,1,61,19,1 +0,1,62,0,1 +0,1,62,1,1 +0,1,62,2,1 +0,1,62,3,1 +0,1,62,4,1 +0,1,62,5,1 +0,1,62,6,1 +0,1,62,7,1 +0,1,62,8,1 +0,1,62,9,1 +0,1,62,10,1 +0,1,62,11,1 +0,1,62,12,1 +0,1,62,13,1 +0,1,62,14,1 +0,1,62,15,1 +0,1,62,16,1 +0,1,62,17,1 +0,1,62,18,1 +0,1,62,19,1 +0,1,63,0,1 +0,1,63,1,1 +0,1,63,2,1 +0,1,63,3,1 +0,1,63,4,1 +0,1,63,5,1 +0,1,63,6,1 +0,1,63,7,1 +0,1,63,8,1 +0,1,63,9,1 +0,1,63,10,1 +0,1,63,11,1 +0,1,63,12,1 +0,1,63,13,1 +0,1,63,14,1 +0,1,63,15,1 +0,1,63,16,1 +0,1,63,17,1 +0,1,63,18,1 +0,1,63,19,1 +0,1,64,0,1 +0,1,64,1,1 +0,1,64,2,1 +0,1,64,3,1 +0,1,64,4,1 +0,1,64,5,1 +0,1,64,6,1 +0,1,64,7,1 +0,1,64,8,1 +0,1,64,9,1 +0,1,64,10,1 +0,1,64,11,1 +0,1,64,12,1 +0,1,64,13,1 +0,1,64,14,1 +0,1,64,15,1 +0,1,64,16,1 +0,1,64,17,1 +0,1,64,18,1 +0,1,64,19,1 +0,1,65,0,1 +0,1,65,1,1 +0,1,65,2,1 +0,1,65,3,1 +0,1,65,4,1 +0,1,65,5,1 +0,1,65,6,1 +0,1,65,7,1 +0,1,65,8,1 +0,1,65,9,1 +0,1,65,10,1 +0,1,65,11,1 +0,1,65,12,1 +0,1,65,13,1 +0,1,65,14,1 +0,1,65,15,1 +0,1,65,16,1 +0,1,65,17,1 +0,1,65,18,1 +0,1,65,19,1 +0,1,66,0,1 +0,1,66,1,1 +0,1,66,2,1 +0,1,66,3,1 +0,1,66,4,1 +0,1,66,5,1 +0,1,66,6,1 +0,1,66,7,1 +0,1,66,8,1 +0,1,66,9,1 +0,1,66,10,1 +0,1,66,11,1 +0,1,66,12,1 +0,1,66,13,1 +0,1,66,14,1 +0,1,66,15,1 +0,1,66,16,1 +0,1,66,17,1 +0,1,66,18,1 +0,1,66,19,1 +0,1,67,0,1 +0,1,67,1,1 +0,1,67,2,1 +0,1,67,3,1 +0,1,67,4,1 +0,1,67,5,1 +0,1,67,6,1 +0,1,67,7,1 +0,1,67,8,1 +0,1,67,9,1 +0,1,67,10,1 +0,1,67,11,1 +0,1,67,12,1 +0,1,67,13,1 +0,1,67,14,1 +0,1,67,15,1 +0,1,67,16,1 +0,1,67,17,1 +0,1,67,18,1 +0,1,67,19,1 +0,1,68,0,1 +0,1,68,1,1 +0,1,68,2,1 +0,1,68,3,1 +0,1,68,4,1 +0,1,68,5,1 +0,1,68,6,1 +0,1,68,7,1 +0,1,68,8,1 +0,1,68,9,1 +0,1,68,10,1 +0,1,68,11,1 +0,1,68,12,1 +0,1,68,13,1 +0,1,68,14,1 +0,1,68,15,1 +0,1,68,16,1 +0,1,68,17,1 +0,1,68,18,1 +0,1,68,19,1 +0,1,69,0,1 +0,1,69,1,1 +0,1,69,2,1 +0,1,69,3,1 +0,1,69,4,1 +0,1,69,5,1 +0,1,69,6,1 +0,1,69,7,1 +0,1,69,8,1 +0,1,69,9,1 +0,1,69,10,1 +0,1,69,11,1 +0,1,69,12,1 +0,1,69,13,1 +0,1,69,14,1 +0,1,69,15,1 +0,1,69,16,1 +0,1,69,17,1 +0,1,69,18,1 +0,1,69,19,1 +0,1,70,0,1 +0,1,70,1,1 +0,1,70,2,1 +0,1,70,3,1 +0,1,70,4,1 +0,1,70,5,1 +0,1,70,6,1 +0,1,70,7,1 +0,1,70,8,1 +0,1,70,9,1 +0,1,70,10,1 +0,1,70,11,1 +0,1,70,12,1 +0,1,70,13,1 +0,1,70,14,1 +0,1,70,15,1 +0,1,70,16,1 +0,1,70,17,1 +0,1,70,18,1 +0,1,70,19,1 +0,1,71,0,1 +0,1,71,1,1 +0,1,71,2,1 +0,1,71,3,1 +0,1,71,4,1 +0,1,71,5,1 +0,1,71,6,1 +0,1,71,7,1 +0,1,71,8,1 +0,1,71,9,1 +0,1,71,10,1 +0,1,71,11,1 +0,1,71,12,1 +0,1,71,13,1 +0,1,71,14,1 +0,1,71,15,1 +0,1,71,16,1 +0,1,71,17,1 +0,1,71,18,1 +0,1,71,19,1 +0,1,72,0,1 +0,1,72,1,1 +0,1,72,2,1 +0,1,72,3,1 +0,1,72,4,1 +0,1,72,5,1 +0,1,72,6,1 +0,1,72,7,1 +0,1,72,8,1 +0,1,72,9,1 +0,1,72,10,1 +0,1,72,11,1 +0,1,72,12,1 +0,1,72,13,1 +0,1,72,14,1 +0,1,72,15,1 +0,1,72,16,1 +0,1,72,17,1 +0,1,72,18,1 +0,1,72,19,1 +0,1,73,0,1 +0,1,73,1,1 +0,1,73,2,1 +0,1,73,3,1 +0,1,73,4,1 +0,1,73,5,1 +0,1,73,6,1 +0,1,73,7,1 +0,1,73,8,1 +0,1,73,9,1 +0,1,73,10,1 +0,1,73,11,1 +0,1,73,12,1 +0,1,73,13,1 +0,1,73,14,1 +0,1,73,15,1 +0,1,73,16,1 +0,1,73,17,1 +0,1,73,18,1 +0,1,73,19,1 +0,1,74,0,1 +0,1,74,1,1 +0,1,74,2,1 +0,1,74,3,1 +0,1,74,4,1 +0,1,74,5,1 +0,1,74,6,1 +0,1,74,7,1 +0,1,74,8,1 +0,1,74,9,1 +0,1,74,10,1 +0,1,74,11,1 +0,1,74,12,1 +0,1,74,13,1 +0,1,74,14,1 +0,1,74,15,1 +0,1,74,16,1 +0,1,74,17,1 +0,1,74,18,1 +0,1,74,19,1 +0,1,75,0,1 +0,1,75,1,1 +0,1,75,2,1 +0,1,75,3,1 +0,1,75,4,1 +0,1,75,5,1 +0,1,75,6,1 +0,1,75,7,1 +0,1,75,8,1 +0,1,75,9,1 +0,1,75,10,1 +0,1,75,11,1 +0,1,75,12,1 +0,1,75,13,1 +0,1,75,14,1 +0,1,75,15,1 +0,1,75,16,1 +0,1,75,17,1 +0,1,75,18,1 +0,1,75,19,1 +0,1,76,0,1 +0,1,76,1,1 +0,1,76,2,1 +0,1,76,3,1 +0,1,76,4,1 +0,1,76,5,1 +0,1,76,6,1 +0,1,76,7,1 +0,1,76,8,1 +0,1,76,9,1 +0,1,76,10,1 +0,1,76,11,1 +0,1,76,12,1 +0,1,76,13,1 +0,1,76,14,1 +0,1,76,15,1 +0,1,76,16,1 +0,1,76,17,1 +0,1,76,18,1 +0,1,76,19,1 +0,1,77,0,1 +0,1,77,1,1 +0,1,77,2,1 +0,1,77,3,1 +0,1,77,4,1 +0,1,77,5,1 +0,1,77,6,1 +0,1,77,7,1 +0,1,77,8,1 +0,1,77,9,1 +0,1,77,10,1 +0,1,77,11,1 +0,1,77,12,1 +0,1,77,13,1 +0,1,77,14,1 +0,1,77,15,1 +0,1,77,16,1 +0,1,77,17,1 +0,1,77,18,1 +0,1,77,19,1 +0,1,78,0,1 +0,1,78,1,1 +0,1,78,2,1 +0,1,78,3,1 +0,1,78,4,1 +0,1,78,5,1 +0,1,78,6,1 +0,1,78,7,1 +0,1,78,8,1 +0,1,78,9,1 +0,1,78,10,1 +0,1,78,11,1 +0,1,78,12,1 +0,1,78,13,1 +0,1,78,14,1 +0,1,78,15,1 +0,1,78,16,1 +0,1,78,17,1 +0,1,78,18,1 +0,1,78,19,1 +0,1,79,0,1 +0,1,79,1,1 +0,1,79,2,1 +0,1,79,3,1 +0,1,79,4,1 +0,1,79,5,1 +0,1,79,6,1 +0,1,79,7,1 +0,1,79,8,1 +0,1,79,9,1 +0,1,79,10,1 +0,1,79,11,1 +0,1,79,12,1 +0,1,79,13,1 +0,1,79,14,1 +0,1,79,15,1 +0,1,79,16,1 +0,1,79,17,1 +0,1,79,18,1 +0,1,79,19,1 +0,1,80,0,1 +0,1,80,1,1 +0,1,80,2,1 +0,1,80,3,1 +0,1,80,4,1 +0,1,80,5,1 +0,1,80,6,1 +0,1,80,7,1 +0,1,80,8,1 +0,1,80,9,1 +0,1,80,10,1 +0,1,80,11,1 +0,1,80,12,1 +0,1,80,13,1 +0,1,80,14,1 +0,1,80,15,1 +0,1,80,16,1 +0,1,80,17,1 +0,1,80,18,1 +0,1,80,19,1 +0,1,81,0,1 +0,1,81,1,1 +0,1,81,2,1 +0,1,81,3,1 +0,1,81,4,1 +0,1,81,5,1 +0,1,81,6,1 +0,1,81,7,1 +0,1,81,8,1 +0,1,81,9,1 +0,1,81,10,1 +0,1,81,11,1 +0,1,81,12,1 +0,1,81,13,1 +0,1,81,14,1 +0,1,81,15,1 +0,1,81,16,1 +0,1,81,17,1 +0,1,81,18,1 +0,1,81,19,1 +0,1,82,0,1 +0,1,82,1,1 +0,1,82,2,1 +0,1,82,3,1 +0,1,82,4,1 +0,1,82,5,1 +0,1,82,6,1 +0,1,82,7,1 +0,1,82,8,1 +0,1,82,9,1 +0,1,82,10,1 +0,1,82,11,1 +0,1,82,12,1 +0,1,82,13,1 +0,1,82,14,1 +0,1,82,15,1 +0,1,82,16,1 +0,1,82,17,1 +0,1,82,18,1 +0,1,82,19,1 +0,1,83,0,1 +0,1,83,1,1 +0,1,83,2,1 +0,1,83,3,1 +0,1,83,4,1 +0,1,83,5,1 +0,1,83,6,1 +0,1,83,7,1 +0,1,83,8,1 +0,1,83,9,1 +0,1,83,10,1 +0,1,83,11,1 +0,1,83,12,1 +0,1,83,13,1 +0,1,83,14,1 +0,1,83,15,1 +0,1,83,16,1 +0,1,83,17,1 +0,1,83,18,1 +0,1,83,19,1 +0,1,84,0,1 +0,1,84,1,1 +0,1,84,2,1 +0,1,84,3,1 +0,1,84,4,1 +0,1,84,5,1 +0,1,84,6,1 +0,1,84,7,1 +0,1,84,8,1 +0,1,84,9,1 +0,1,84,10,1 +0,1,84,11,1 +0,1,84,12,1 +0,1,84,13,1 +0,1,84,14,1 +0,1,84,15,1 +0,1,84,16,1 +0,1,84,17,1 +0,1,84,18,1 +0,1,84,19,1 +0,1,85,0,1 +0,1,85,1,1 +0,1,85,2,1 +0,1,85,3,1 +0,1,85,4,1 +0,1,85,5,1 +0,1,85,6,1 +0,1,85,7,1 +0,1,85,8,1 +0,1,85,9,1 +0,1,85,10,1 +0,1,85,11,1 +0,1,85,12,1 +0,1,85,13,1 +0,1,85,14,1 +0,1,85,15,1 +0,1,85,16,1 +0,1,85,17,1 +0,1,85,18,1 +0,1,85,19,1 +0,1,86,0,1 +0,1,86,1,1 +0,1,86,2,1 +0,1,86,3,1 +0,1,86,4,1 +0,1,86,5,1 +0,1,86,6,1 +0,1,86,7,1 +0,1,86,8,1 +0,1,86,9,1 +0,1,86,10,1 +0,1,86,11,1 +0,1,86,12,1 +0,1,86,13,1 +0,1,86,14,1 +0,1,86,15,1 +0,1,86,16,1 +0,1,86,17,1 +0,1,86,18,1 +0,1,86,19,1 +0,1,87,0,1 +0,1,87,1,1 +0,1,87,2,1 +0,1,87,3,1 +0,1,87,4,1 +0,1,87,5,1 +0,1,87,6,1 +0,1,87,7,1 +0,1,87,8,1 +0,1,87,9,1 +0,1,87,10,1 +0,1,87,11,1 +0,1,87,12,1 +0,1,87,13,1 +0,1,87,14,1 +0,1,87,15,1 +0,1,87,16,1 +0,1,87,17,1 +0,1,87,18,1 +0,1,87,19,1 +0,1,88,0,1 +0,1,88,1,1 +0,1,88,2,1 +0,1,88,3,1 +0,1,88,4,1 +0,1,88,5,1 +0,1,88,6,1 +0,1,88,7,1 +0,1,88,8,1 +0,1,88,9,1 +0,1,88,10,1 +0,1,88,11,1 +0,1,88,12,1 +0,1,88,13,1 +0,1,88,14,1 +0,1,88,15,1 +0,1,88,16,1 +0,1,88,17,1 +0,1,88,18,1 +0,1,88,19,1 +0,1,89,0,1 +0,1,89,1,1 +0,1,89,2,1 +0,1,89,3,1 +0,1,89,4,1 +0,1,89,5,1 +0,1,89,6,1 +0,1,89,7,1 +0,1,89,8,1 +0,1,89,9,1 +0,1,89,10,1 +0,1,89,11,1 +0,1,89,12,1 +0,1,89,13,1 +0,1,89,14,1 +0,1,89,15,1 +0,1,89,16,1 +0,1,89,17,1 +0,1,89,18,1 +0,1,89,19,1 +0,1,90,0,1 +0,1,90,1,1 +0,1,90,2,1 +0,1,90,3,1 +0,1,90,4,1 +0,1,90,5,1 +0,1,90,6,1 +0,1,90,7,1 +0,1,90,8,1 +0,1,90,9,1 +0,1,90,10,1 +0,1,90,11,1 +0,1,90,12,1 +0,1,90,13,1 +0,1,90,14,1 +0,1,90,15,1 +0,1,90,16,1 +0,1,90,17,1 +0,1,90,18,1 +0,1,90,19,1 +0,1,91,0,1 +0,1,91,1,1 +0,1,91,2,1 +0,1,91,3,1 +0,1,91,4,1 +0,1,91,5,1 +0,1,91,6,1 +0,1,91,7,1 +0,1,91,8,1 +0,1,91,9,1 +0,1,91,10,1 +0,1,91,11,1 +0,1,91,12,1 +0,1,91,13,1 +0,1,91,14,1 +0,1,91,15,1 +0,1,91,16,1 +0,1,91,17,1 +0,1,91,18,1 +0,1,91,19,1 +0,1,92,0,1 +0,1,92,1,1 +0,1,92,2,1 +0,1,92,3,1 +0,1,92,4,1 +0,1,92,5,1 +0,1,92,6,1 +0,1,92,7,1 +0,1,92,8,1 +0,1,92,9,1 +0,1,92,10,1 +0,1,92,11,1 +0,1,92,12,1 +0,1,92,13,1 +0,1,92,14,1 +0,1,92,15,1 +0,1,92,16,1 +0,1,92,17,1 +0,1,92,18,1 +0,1,92,19,1 +0,1,93,0,1 +0,1,93,1,1 +0,1,93,2,1 +0,1,93,3,1 +0,1,93,4,1 +0,1,93,5,1 +0,1,93,6,1 +0,1,93,7,1 +0,1,93,8,1 +0,1,93,9,1 +0,1,93,10,1 +0,1,93,11,1 +0,1,93,12,1 +0,1,93,13,1 +0,1,93,14,1 +0,1,93,15,1 +0,1,93,16,1 +0,1,93,17,1 +0,1,93,18,1 +0,1,93,19,1 +0,1,94,0,1 +0,1,94,1,1 +0,1,94,2,1 +0,1,94,3,1 +0,1,94,4,1 +0,1,94,5,1 +0,1,94,6,1 +0,1,94,7,1 +0,1,94,8,1 +0,1,94,9,1 +0,1,94,10,1 +0,1,94,11,1 +0,1,94,12,1 +0,1,94,13,1 +0,1,94,14,1 +0,1,94,15,1 +0,1,94,16,1 +0,1,94,17,1 +0,1,94,18,1 +0,1,94,19,1 +0,1,95,0,1 +0,1,95,1,1 +0,1,95,2,1 +0,1,95,3,1 +0,1,95,4,1 +0,1,95,5,1 +0,1,95,6,1 +0,1,95,7,1 +0,1,95,8,1 +0,1,95,9,1 +0,1,95,10,1 +0,1,95,11,1 +0,1,95,12,1 +0,1,95,13,1 +0,1,95,14,1 +0,1,95,15,1 +0,1,95,16,1 +0,1,95,17,1 +0,1,95,18,1 +0,1,95,19,1 +0,1,96,0,1 +0,1,96,1,1 +0,1,96,2,1 +0,1,96,3,1 +0,1,96,4,1 +0,1,96,5,1 +0,1,96,6,1 +0,1,96,7,1 +0,1,96,8,1 +0,1,96,9,1 +0,1,96,10,1 +0,1,96,11,1 +0,1,96,12,1 +0,1,96,13,1 +0,1,96,14,1 +0,1,96,15,1 +0,1,96,16,1 +0,1,96,17,1 +0,1,96,18,1 +0,1,96,19,1 +0,1,97,0,1 +0,1,97,1,1 +0,1,97,2,1 +0,1,97,3,1 +0,1,97,4,1 +0,1,97,5,1 +0,1,97,6,1 +0,1,97,7,1 +0,1,97,8,1 +0,1,97,9,1 +0,1,97,10,1 +0,1,97,11,1 +0,1,97,12,1 +0,1,97,13,1 +0,1,97,14,1 +0,1,97,15,1 +0,1,97,16,1 +0,1,97,17,1 +0,1,97,18,1 +0,1,97,19,1 +0,1,98,0,1 +0,1,98,1,1 +0,1,98,2,1 +0,1,98,3,1 +0,1,98,4,1 +0,1,98,5,1 +0,1,98,6,1 +0,1,98,7,1 +0,1,98,8,1 +0,1,98,9,1 +0,1,98,10,1 +0,1,98,11,1 +0,1,98,12,1 +0,1,98,13,1 +0,1,98,14,1 +0,1,98,15,1 +0,1,98,16,1 +0,1,98,17,1 +0,1,98,18,1 +0,1,98,19,1 +0,1,99,0,1 +0,1,99,1,1 +0,1,99,2,1 +0,1,99,3,1 +0,1,99,4,1 +0,1,99,5,1 +0,1,99,6,1 +0,1,99,7,1 +0,1,99,8,1 +0,1,99,9,1 +0,1,99,10,1 +0,1,99,11,1 +0,1,99,12,1 +0,1,99,13,1 +0,1,99,14,1 +0,1,99,15,1 +0,1,99,16,1 +0,1,99,17,1 +0,1,99,18,1 +0,1,99,19,1 +1,1,0,0,1 +1,1,0,1,1 +1,1,0,2,1 +1,1,0,3,1 +1,1,0,4,1 +1,1,0,5,1 +1,1,0,6,1 +1,1,0,7,1 +1,1,0,8,1 +1,1,0,9,1 +1,1,0,10,1 +1,1,0,11,1 +1,1,0,12,1 +1,1,0,13,1 +1,1,0,14,1 +1,1,0,15,1 +1,1,0,16,1 +1,1,0,17,1 +1,1,0,18,1 +1,1,0,19,1 +1,1,1,0,1 +1,1,1,1,1 +1,1,1,2,1 +1,1,1,3,1 +1,1,1,4,1 +1,1,1,5,1 +1,1,1,6,1 +1,1,1,7,1 +1,1,1,8,1 +1,1,1,9,1 +1,1,1,10,1 +1,1,1,11,1 +1,1,1,12,1 +1,1,1,13,1 +1,1,1,14,1 +1,1,1,15,1 +1,1,1,16,1 +1,1,1,17,1 +1,1,1,18,1 +1,1,1,19,1 +1,1,2,0,1 +1,1,2,1,1 +1,1,2,2,1 +1,1,2,3,1 +1,1,2,4,1 +1,1,2,5,1 +1,1,2,6,1 +1,1,2,7,1 +1,1,2,8,1 +1,1,2,9,1 +1,1,2,10,1 +1,1,2,11,1 +1,1,2,12,1 +1,1,2,13,1 +1,1,2,14,1 +1,1,2,15,1 +1,1,2,16,1 +1,1,2,17,1 +1,1,2,18,1 +1,1,2,19,1 +1,1,3,0,1 +1,1,3,1,1 +1,1,3,2,1 +1,1,3,3,1 +1,1,3,4,1 +1,1,3,5,1 +1,1,3,6,1 +1,1,3,7,1 +1,1,3,8,1 +1,1,3,9,1 +1,1,3,10,1 +1,1,3,11,1 +1,1,3,12,1 +1,1,3,13,1 +1,1,3,14,1 +1,1,3,15,1 +1,1,3,16,1 +1,1,3,17,1 +1,1,3,18,1 +1,1,3,19,1 +1,1,4,0,1 +1,1,4,1,1 +1,1,4,2,1 +1,1,4,3,1 +1,1,4,4,1 +1,1,4,5,1 +1,1,4,6,1 +1,1,4,7,1 +1,1,4,8,1 +1,1,4,9,1 +1,1,4,10,1 +1,1,4,11,1 +1,1,4,12,1 +1,1,4,13,1 +1,1,4,14,1 +1,1,4,15,1 +1,1,4,16,1 +1,1,4,17,1 +1,1,4,18,1 +1,1,4,19,1 +1,1,5,0,1 +1,1,5,1,1 +1,1,5,2,1 +1,1,5,3,1 +1,1,5,4,1 +1,1,5,5,1 +1,1,5,6,1 +1,1,5,7,1 +1,1,5,8,1 +1,1,5,9,1 +1,1,5,10,1 +1,1,5,11,1 +1,1,5,12,1 +1,1,5,13,1 +1,1,5,14,1 +1,1,5,15,1 +1,1,5,16,1 +1,1,5,17,1 +1,1,5,18,1 +1,1,5,19,1 +1,1,6,0,1 +1,1,6,1,1 +1,1,6,2,1 +1,1,6,3,1 +1,1,6,4,1 +1,1,6,5,1 +1,1,6,6,1 +1,1,6,7,1 +1,1,6,8,1 +1,1,6,9,1 +1,1,6,10,1 +1,1,6,11,1 +1,1,6,12,1 +1,1,6,13,1 +1,1,6,14,1 +1,1,6,15,1 +1,1,6,16,1 +1,1,6,17,1 +1,1,6,18,1 +1,1,6,19,1 +1,1,7,0,1 +1,1,7,1,1 +1,1,7,2,1 +1,1,7,3,1 +1,1,7,4,1 +1,1,7,5,1 +1,1,7,6,1 +1,1,7,7,1 +1,1,7,8,1 +1,1,7,9,1 +1,1,7,10,1 +1,1,7,11,1 +1,1,7,12,1 +1,1,7,13,1 +1,1,7,14,1 +1,1,7,15,1 +1,1,7,16,1 +1,1,7,17,1 +1,1,7,18,1 +1,1,7,19,1 +1,1,8,0,1 +1,1,8,1,1 +1,1,8,2,1 +1,1,8,3,1 +1,1,8,4,1 +1,1,8,5,1 +1,1,8,6,1 +1,1,8,7,1 +1,1,8,8,1 +1,1,8,9,1 +1,1,8,10,1 +1,1,8,11,1 +1,1,8,12,1 +1,1,8,13,1 +1,1,8,14,1 +1,1,8,15,1 +1,1,8,16,1 +1,1,8,17,1 +1,1,8,18,1 +1,1,8,19,1 +1,1,9,0,1 +1,1,9,1,1 +1,1,9,2,1 +1,1,9,3,1 +1,1,9,4,1 +1,1,9,5,1 +1,1,9,6,1 +1,1,9,7,1 +1,1,9,8,1 +1,1,9,9,1 +1,1,9,10,1 +1,1,9,11,1 +1,1,9,12,1 +1,1,9,13,1 +1,1,9,14,1 +1,1,9,15,1 +1,1,9,16,1 +1,1,9,17,1 +1,1,9,18,1 +1,1,9,19,1 +1,1,10,0,1 +1,1,10,1,1 +1,1,10,2,1 +1,1,10,3,1 +1,1,10,4,1 +1,1,10,5,1 +1,1,10,6,1 +1,1,10,7,1 +1,1,10,8,1 +1,1,10,9,1 +1,1,10,10,1 +1,1,10,11,1 +1,1,10,12,1 +1,1,10,13,1 +1,1,10,14,1 +1,1,10,15,1 +1,1,10,16,1 +1,1,10,17,1 +1,1,10,18,1 +1,1,10,19,1 +1,1,11,0,1 +1,1,11,1,1 +1,1,11,2,1 +1,1,11,3,1 +1,1,11,4,1 +1,1,11,5,1 +1,1,11,6,1 +1,1,11,7,1 +1,1,11,8,1 +1,1,11,9,1 +1,1,11,10,1 +1,1,11,11,1 +1,1,11,12,1 +1,1,11,13,1 +1,1,11,14,1 +1,1,11,15,1 +1,1,11,16,1 +1,1,11,17,1 +1,1,11,18,1 +1,1,11,19,1 +1,1,12,0,1 +1,1,12,1,1 +1,1,12,2,1 +1,1,12,3,1 +1,1,12,4,1 +1,1,12,5,1 +1,1,12,6,1 +1,1,12,7,1 +1,1,12,8,1 +1,1,12,9,1 +1,1,12,10,1 +1,1,12,11,1 +1,1,12,12,1 +1,1,12,13,1 +1,1,12,14,1 +1,1,12,15,1 +1,1,12,16,1 +1,1,12,17,1 +1,1,12,18,1 +1,1,12,19,1 +1,1,13,0,1 +1,1,13,1,1 +1,1,13,2,1 +1,1,13,3,1 +1,1,13,4,1 +1,1,13,5,1 +1,1,13,6,1 +1,1,13,7,1 +1,1,13,8,1 +1,1,13,9,1 +1,1,13,10,1 +1,1,13,11,1 +1,1,13,12,1 +1,1,13,13,1 +1,1,13,14,1 +1,1,13,15,1 +1,1,13,16,1 +1,1,13,17,1 +1,1,13,18,1 +1,1,13,19,1 +1,1,14,0,1 +1,1,14,1,1 +1,1,14,2,1 +1,1,14,3,1 +1,1,14,4,1 +1,1,14,5,1 +1,1,14,6,1 +1,1,14,7,1 +1,1,14,8,1 +1,1,14,9,1 +1,1,14,10,1 +1,1,14,11,1 +1,1,14,12,1 +1,1,14,13,1 +1,1,14,14,1 +1,1,14,15,1 +1,1,14,16,1 +1,1,14,17,1 +1,1,14,18,1 +1,1,14,19,1 +1,1,15,0,1 +1,1,15,1,1 +1,1,15,2,1 +1,1,15,3,1 +1,1,15,4,1 +1,1,15,5,1 +1,1,15,6,1 +1,1,15,7,1 +1,1,15,8,1 +1,1,15,9,1 +1,1,15,10,1 +1,1,15,11,1 +1,1,15,12,1 +1,1,15,13,1 +1,1,15,14,1 +1,1,15,15,1 +1,1,15,16,1 +1,1,15,17,1 +1,1,15,18,1 +1,1,15,19,1 +1,1,16,0,1 +1,1,16,1,1 +1,1,16,2,1 +1,1,16,3,1 +1,1,16,4,1 +1,1,16,5,1 +1,1,16,6,1 +1,1,16,7,1 +1,1,16,8,1 +1,1,16,9,1 +1,1,16,10,1 +1,1,16,11,1 +1,1,16,12,1 +1,1,16,13,1 +1,1,16,14,1 +1,1,16,15,1 +1,1,16,16,1 +1,1,16,17,1 +1,1,16,18,1 +1,1,16,19,1 +1,1,17,0,1 +1,1,17,1,1 +1,1,17,2,1 +1,1,17,3,1 +1,1,17,4,1 +1,1,17,5,1 +1,1,17,6,1 +1,1,17,7,1 +1,1,17,8,1 +1,1,17,9,1 +1,1,17,10,1 +1,1,17,11,1 +1,1,17,12,1 +1,1,17,13,1 +1,1,17,14,1 +1,1,17,15,1 +1,1,17,16,1 +1,1,17,17,1 +1,1,17,18,1 +1,1,17,19,1 +1,1,18,0,1 +1,1,18,1,1 +1,1,18,2,1 +1,1,18,3,1 +1,1,18,4,1 +1,1,18,5,1 +1,1,18,6,1 +1,1,18,7,1 +1,1,18,8,1 +1,1,18,9,1 +1,1,18,10,1 +1,1,18,11,1 +1,1,18,12,1 +1,1,18,13,1 +1,1,18,14,1 +1,1,18,15,1 +1,1,18,16,1 +1,1,18,17,1 +1,1,18,18,1 +1,1,18,19,1 +1,1,19,0,1 +1,1,19,1,1 +1,1,19,2,1 +1,1,19,3,1 +1,1,19,4,1 +1,1,19,5,1 +1,1,19,6,1 +1,1,19,7,1 +1,1,19,8,1 +1,1,19,9,1 +1,1,19,10,1 +1,1,19,11,1 +1,1,19,12,1 +1,1,19,13,1 +1,1,19,14,1 +1,1,19,15,1 +1,1,19,16,1 +1,1,19,17,1 +1,1,19,18,1 +1,1,19,19,1 +1,1,20,0,1 +1,1,20,1,1 +1,1,20,2,1 +1,1,20,3,1 +1,1,20,4,1 +1,1,20,5,1 +1,1,20,6,1 +1,1,20,7,1 +1,1,20,8,1 +1,1,20,9,1 +1,1,20,10,1 +1,1,20,11,1 +1,1,20,12,1 +1,1,20,13,1 +1,1,20,14,1 +1,1,20,15,1 +1,1,20,16,1 +1,1,20,17,1 +1,1,20,18,1 +1,1,20,19,1 +1,1,21,0,1 +1,1,21,1,1 +1,1,21,2,1 +1,1,21,3,1 +1,1,21,4,1 +1,1,21,5,1 +1,1,21,6,1 +1,1,21,7,1 +1,1,21,8,1 +1,1,21,9,1 +1,1,21,10,1 +1,1,21,11,1 +1,1,21,12,1 +1,1,21,13,1 +1,1,21,14,1 +1,1,21,15,1 +1,1,21,16,1 +1,1,21,17,1 +1,1,21,18,1 +1,1,21,19,1 +1,1,22,0,1 +1,1,22,1,1 +1,1,22,2,1 +1,1,22,3,1 +1,1,22,4,1 +1,1,22,5,1 +1,1,22,6,1 +1,1,22,7,1 +1,1,22,8,1 +1,1,22,9,1 +1,1,22,10,1 +1,1,22,11,1 +1,1,22,12,1 +1,1,22,13,1 +1,1,22,14,1 +1,1,22,15,1 +1,1,22,16,1 +1,1,22,17,1 +1,1,22,18,1 +1,1,22,19,1 +1,1,23,0,1 +1,1,23,1,1 +1,1,23,2,1 +1,1,23,3,1 +1,1,23,4,1 +1,1,23,5,1 +1,1,23,6,1 +1,1,23,7,1 +1,1,23,8,1 +1,1,23,9,1 +1,1,23,10,1 +1,1,23,11,1 +1,1,23,12,1 +1,1,23,13,1 +1,1,23,14,1 +1,1,23,15,1 +1,1,23,16,1 +1,1,23,17,1 +1,1,23,18,1 +1,1,23,19,1 +1,1,24,0,1 +1,1,24,1,1 +1,1,24,2,1 +1,1,24,3,1 +1,1,24,4,1 +1,1,24,5,1 +1,1,24,6,1 +1,1,24,7,1 +1,1,24,8,1 +1,1,24,9,1 +1,1,24,10,1 +1,1,24,11,1 +1,1,24,12,1 +1,1,24,13,1 +1,1,24,14,1 +1,1,24,15,1 +1,1,24,16,1 +1,1,24,17,1 +1,1,24,18,1 +1,1,24,19,1 +1,1,25,0,1 +1,1,25,1,1 +1,1,25,2,1 +1,1,25,3,1 +1,1,25,4,1 +1,1,25,5,1 +1,1,25,6,1 +1,1,25,7,1 +1,1,25,8,1 +1,1,25,9,1 +1,1,25,10,1 +1,1,25,11,1 +1,1,25,12,1 +1,1,25,13,1 +1,1,25,14,1 +1,1,25,15,1 +1,1,25,16,1 +1,1,25,17,1 +1,1,25,18,1 +1,1,25,19,1 +1,1,26,0,1 +1,1,26,1,1 +1,1,26,2,1 +1,1,26,3,1 +1,1,26,4,1 +1,1,26,5,1 +1,1,26,6,1 +1,1,26,7,1 +1,1,26,8,1 +1,1,26,9,1 +1,1,26,10,1 +1,1,26,11,1 +1,1,26,12,1 +1,1,26,13,1 +1,1,26,14,1 +1,1,26,15,1 +1,1,26,16,1 +1,1,26,17,1 +1,1,26,18,1 +1,1,26,19,1 +1,1,27,0,1 +1,1,27,1,1 +1,1,27,2,1 +1,1,27,3,1 +1,1,27,4,1 +1,1,27,5,1 +1,1,27,6,1 +1,1,27,7,1 +1,1,27,8,1 +1,1,27,9,1 +1,1,27,10,1 +1,1,27,11,1 +1,1,27,12,1 +1,1,27,13,1 +1,1,27,14,1 +1,1,27,15,1 +1,1,27,16,1 +1,1,27,17,1 +1,1,27,18,1 +1,1,27,19,1 +1,1,28,0,1 +1,1,28,1,1 +1,1,28,2,1 +1,1,28,3,1 +1,1,28,4,1 +1,1,28,5,1 +1,1,28,6,1 +1,1,28,7,1 +1,1,28,8,1 +1,1,28,9,1 +1,1,28,10,1 +1,1,28,11,1 +1,1,28,12,1 +1,1,28,13,1 +1,1,28,14,1 +1,1,28,15,1 +1,1,28,16,1 +1,1,28,17,1 +1,1,28,18,1 +1,1,28,19,1 +1,1,29,0,1 +1,1,29,1,1 +1,1,29,2,1 +1,1,29,3,1 +1,1,29,4,1 +1,1,29,5,1 +1,1,29,6,1 +1,1,29,7,1 +1,1,29,8,1 +1,1,29,9,1 +1,1,29,10,1 +1,1,29,11,1 +1,1,29,12,1 +1,1,29,13,1 +1,1,29,14,1 +1,1,29,15,1 +1,1,29,16,1 +1,1,29,17,1 +1,1,29,18,1 +1,1,29,19,1 +1,1,30,0,1 +1,1,30,1,1 +1,1,30,2,1 +1,1,30,3,1 +1,1,30,4,1 +1,1,30,5,1 +1,1,30,6,1 +1,1,30,7,1 +1,1,30,8,1 +1,1,30,9,1 +1,1,30,10,1 +1,1,30,11,1 +1,1,30,12,1 +1,1,30,13,1 +1,1,30,14,1 +1,1,30,15,1 +1,1,30,16,1 +1,1,30,17,1 +1,1,30,18,1 +1,1,30,19,1 +1,1,31,0,1 +1,1,31,1,1 +1,1,31,2,1 +1,1,31,3,1 +1,1,31,4,1 +1,1,31,5,1 +1,1,31,6,1 +1,1,31,7,1 +1,1,31,8,1 +1,1,31,9,1 +1,1,31,10,1 +1,1,31,11,1 +1,1,31,12,1 +1,1,31,13,1 +1,1,31,14,1 +1,1,31,15,1 +1,1,31,16,1 +1,1,31,17,1 +1,1,31,18,1 +1,1,31,19,1 +1,1,32,0,1 +1,1,32,1,1 +1,1,32,2,1 +1,1,32,3,1 +1,1,32,4,1 +1,1,32,5,1 +1,1,32,6,1 +1,1,32,7,1 +1,1,32,8,1 +1,1,32,9,1 +1,1,32,10,1 +1,1,32,11,1 +1,1,32,12,1 +1,1,32,13,1 +1,1,32,14,1 +1,1,32,15,1 +1,1,32,16,1 +1,1,32,17,1 +1,1,32,18,1 +1,1,32,19,1 +1,1,33,0,1 +1,1,33,1,1 +1,1,33,2,1 +1,1,33,3,1 +1,1,33,4,1 +1,1,33,5,1 +1,1,33,6,1 +1,1,33,7,1 +1,1,33,8,1 +1,1,33,9,1 +1,1,33,10,1 +1,1,33,11,1 +1,1,33,12,1 +1,1,33,13,1 +1,1,33,14,1 +1,1,33,15,1 +1,1,33,16,1 +1,1,33,17,1 +1,1,33,18,1 +1,1,33,19,1 +1,1,34,0,1 +1,1,34,1,1 +1,1,34,2,1 +1,1,34,3,1 +1,1,34,4,1 +1,1,34,5,1 +1,1,34,6,1 +1,1,34,7,1 +1,1,34,8,1 +1,1,34,9,1 +1,1,34,10,1 +1,1,34,11,1 +1,1,34,12,1 +1,1,34,13,1 +1,1,34,14,1 +1,1,34,15,1 +1,1,34,16,1 +1,1,34,17,1 +1,1,34,18,1 +1,1,34,19,1 +1,1,35,0,1 +1,1,35,1,1 +1,1,35,2,1 +1,1,35,3,1 +1,1,35,4,1 +1,1,35,5,1 +1,1,35,6,1 +1,1,35,7,1 +1,1,35,8,1 +1,1,35,9,1 +1,1,35,10,1 +1,1,35,11,1 +1,1,35,12,1 +1,1,35,13,1 +1,1,35,14,1 +1,1,35,15,1 +1,1,35,16,1 +1,1,35,17,1 +1,1,35,18,1 +1,1,35,19,1 +1,1,36,0,1 +1,1,36,1,1 +1,1,36,2,1 +1,1,36,3,1 +1,1,36,4,1 +1,1,36,5,1 +1,1,36,6,1 +1,1,36,7,1 +1,1,36,8,1 +1,1,36,9,1 +1,1,36,10,1 +1,1,36,11,1 +1,1,36,12,1 +1,1,36,13,1 +1,1,36,14,1 +1,1,36,15,1 +1,1,36,16,1 +1,1,36,17,1 +1,1,36,18,1 +1,1,36,19,1 +1,1,37,0,1 +1,1,37,1,1 +1,1,37,2,1 +1,1,37,3,1 +1,1,37,4,1 +1,1,37,5,1 +1,1,37,6,1 +1,1,37,7,1 +1,1,37,8,1 +1,1,37,9,1 +1,1,37,10,1 +1,1,37,11,1 +1,1,37,12,1 +1,1,37,13,1 +1,1,37,14,1 +1,1,37,15,1 +1,1,37,16,1 +1,1,37,17,1 +1,1,37,18,1 +1,1,37,19,1 +1,1,38,0,1 +1,1,38,1,1 +1,1,38,2,1 +1,1,38,3,1 +1,1,38,4,1 +1,1,38,5,1 +1,1,38,6,1 +1,1,38,7,1 +1,1,38,8,1 +1,1,38,9,1 +1,1,38,10,1 +1,1,38,11,1 +1,1,38,12,1 +1,1,38,13,1 +1,1,38,14,1 +1,1,38,15,1 +1,1,38,16,1 +1,1,38,17,1 +1,1,38,18,1 +1,1,38,19,1 +1,1,39,0,1 +1,1,39,1,1 +1,1,39,2,1 +1,1,39,3,1 +1,1,39,4,1 +1,1,39,5,1 +1,1,39,6,1 +1,1,39,7,1 +1,1,39,8,1 +1,1,39,9,1 +1,1,39,10,1 +1,1,39,11,1 +1,1,39,12,1 +1,1,39,13,1 +1,1,39,14,1 +1,1,39,15,1 +1,1,39,16,1 +1,1,39,17,1 +1,1,39,18,1 +1,1,39,19,1 +1,1,40,0,1 +1,1,40,1,1 +1,1,40,2,1 +1,1,40,3,1 +1,1,40,4,1 +1,1,40,5,1 +1,1,40,6,1 +1,1,40,7,1 +1,1,40,8,1 +1,1,40,9,1 +1,1,40,10,1 +1,1,40,11,1 +1,1,40,12,1 +1,1,40,13,1 +1,1,40,14,1 +1,1,40,15,1 +1,1,40,16,1 +1,1,40,17,1 +1,1,40,18,1 +1,1,40,19,1 +1,1,41,0,1 +1,1,41,1,1 +1,1,41,2,1 +1,1,41,3,1 +1,1,41,4,1 +1,1,41,5,1 +1,1,41,6,1 +1,1,41,7,1 +1,1,41,8,1 +1,1,41,9,1 +1,1,41,10,1 +1,1,41,11,1 +1,1,41,12,1 +1,1,41,13,1 +1,1,41,14,1 +1,1,41,15,1 +1,1,41,16,1 +1,1,41,17,1 +1,1,41,18,1 +1,1,41,19,1 +1,1,42,0,1 +1,1,42,1,1 +1,1,42,2,1 +1,1,42,3,1 +1,1,42,4,1 +1,1,42,5,1 +1,1,42,6,1 +1,1,42,7,1 +1,1,42,8,1 +1,1,42,9,1 +1,1,42,10,1 +1,1,42,11,1 +1,1,42,12,1 +1,1,42,13,1 +1,1,42,14,1 +1,1,42,15,1 +1,1,42,16,1 +1,1,42,17,1 +1,1,42,18,1 +1,1,42,19,1 +1,1,43,0,1 +1,1,43,1,1 +1,1,43,2,1 +1,1,43,3,1 +1,1,43,4,1 +1,1,43,5,1 +1,1,43,6,1 +1,1,43,7,1 +1,1,43,8,1 +1,1,43,9,1 +1,1,43,10,1 +1,1,43,11,1 +1,1,43,12,1 +1,1,43,13,1 +1,1,43,14,1 +1,1,43,15,1 +1,1,43,16,1 +1,1,43,17,1 +1,1,43,18,1 +1,1,43,19,1 +1,1,44,0,1 +1,1,44,1,1 +1,1,44,2,1 +1,1,44,3,1 +1,1,44,4,1 +1,1,44,5,1 +1,1,44,6,1 +1,1,44,7,1 +1,1,44,8,1 +1,1,44,9,1 +1,1,44,10,1 +1,1,44,11,1 +1,1,44,12,1 +1,1,44,13,1 +1,1,44,14,1 +1,1,44,15,1 +1,1,44,16,1 +1,1,44,17,1 +1,1,44,18,1 +1,1,44,19,1 +1,1,45,0,1 +1,1,45,1,1 +1,1,45,2,1 +1,1,45,3,1 +1,1,45,4,1 +1,1,45,5,1 +1,1,45,6,1 +1,1,45,7,1 +1,1,45,8,1 +1,1,45,9,1 +1,1,45,10,1 +1,1,45,11,1 +1,1,45,12,1 +1,1,45,13,1 +1,1,45,14,1 +1,1,45,15,1 +1,1,45,16,1 +1,1,45,17,1 +1,1,45,18,1 +1,1,45,19,1 +1,1,46,0,1 +1,1,46,1,1 +1,1,46,2,1 +1,1,46,3,1 +1,1,46,4,1 +1,1,46,5,1 +1,1,46,6,1 +1,1,46,7,1 +1,1,46,8,1 +1,1,46,9,1 +1,1,46,10,1 +1,1,46,11,1 +1,1,46,12,1 +1,1,46,13,1 +1,1,46,14,1 +1,1,46,15,1 +1,1,46,16,1 +1,1,46,17,1 +1,1,46,18,1 +1,1,46,19,1 +1,1,47,0,1 +1,1,47,1,1 +1,1,47,2,1 +1,1,47,3,1 +1,1,47,4,1 +1,1,47,5,1 +1,1,47,6,1 +1,1,47,7,1 +1,1,47,8,1 +1,1,47,9,1 +1,1,47,10,1 +1,1,47,11,1 +1,1,47,12,1 +1,1,47,13,1 +1,1,47,14,1 +1,1,47,15,1 +1,1,47,16,1 +1,1,47,17,1 +1,1,47,18,1 +1,1,47,19,1 +1,1,48,0,1 +1,1,48,1,1 +1,1,48,2,1 +1,1,48,3,1 +1,1,48,4,1 +1,1,48,5,1 +1,1,48,6,1 +1,1,48,7,1 +1,1,48,8,1 +1,1,48,9,1 +1,1,48,10,1 +1,1,48,11,1 +1,1,48,12,1 +1,1,48,13,1 +1,1,48,14,1 +1,1,48,15,1 +1,1,48,16,1 +1,1,48,17,1 +1,1,48,18,1 +1,1,48,19,1 +1,1,49,0,1 +1,1,49,1,1 +1,1,49,2,1 +1,1,49,3,1 +1,1,49,4,1 +1,1,49,5,1 +1,1,49,6,1 +1,1,49,7,1 +1,1,49,8,1 +1,1,49,9,1 +1,1,49,10,1 +1,1,49,11,1 +1,1,49,12,1 +1,1,49,13,1 +1,1,49,14,1 +1,1,49,15,1 +1,1,49,16,1 +1,1,49,17,1 +1,1,49,18,1 +1,1,49,19,1 +1,1,50,0,1 +1,1,50,1,1 +1,1,50,2,1 +1,1,50,3,1 +1,1,50,4,1 +1,1,50,5,1 +1,1,50,6,1 +1,1,50,7,1 +1,1,50,8,1 +1,1,50,9,1 +1,1,50,10,1 +1,1,50,11,1 +1,1,50,12,1 +1,1,50,13,1 +1,1,50,14,1 +1,1,50,15,1 +1,1,50,16,1 +1,1,50,17,1 +1,1,50,18,1 +1,1,50,19,1 +1,1,51,0,1 +1,1,51,1,1 +1,1,51,2,1 +1,1,51,3,1 +1,1,51,4,1 +1,1,51,5,1 +1,1,51,6,1 +1,1,51,7,1 +1,1,51,8,1 +1,1,51,9,1 +1,1,51,10,1 +1,1,51,11,1 +1,1,51,12,1 +1,1,51,13,1 +1,1,51,14,1 +1,1,51,15,1 +1,1,51,16,1 +1,1,51,17,1 +1,1,51,18,1 +1,1,51,19,1 +1,1,52,0,1 +1,1,52,1,1 +1,1,52,2,1 +1,1,52,3,1 +1,1,52,4,1 +1,1,52,5,1 +1,1,52,6,1 +1,1,52,7,1 +1,1,52,8,1 +1,1,52,9,1 +1,1,52,10,1 +1,1,52,11,1 +1,1,52,12,1 +1,1,52,13,1 +1,1,52,14,1 +1,1,52,15,1 +1,1,52,16,1 +1,1,52,17,1 +1,1,52,18,1 +1,1,52,19,1 +1,1,53,0,1 +1,1,53,1,1 +1,1,53,2,1 +1,1,53,3,1 +1,1,53,4,1 +1,1,53,5,1 +1,1,53,6,1 +1,1,53,7,1 +1,1,53,8,1 +1,1,53,9,1 +1,1,53,10,1 +1,1,53,11,1 +1,1,53,12,1 +1,1,53,13,1 +1,1,53,14,1 +1,1,53,15,1 +1,1,53,16,1 +1,1,53,17,1 +1,1,53,18,1 +1,1,53,19,1 +1,1,54,0,1 +1,1,54,1,1 +1,1,54,2,1 +1,1,54,3,1 +1,1,54,4,1 +1,1,54,5,1 +1,1,54,6,1 +1,1,54,7,1 +1,1,54,8,1 +1,1,54,9,1 +1,1,54,10,1 +1,1,54,11,1 +1,1,54,12,1 +1,1,54,13,1 +1,1,54,14,1 +1,1,54,15,1 +1,1,54,16,1 +1,1,54,17,1 +1,1,54,18,1 +1,1,54,19,1 +1,1,55,0,1 +1,1,55,1,1 +1,1,55,2,1 +1,1,55,3,1 +1,1,55,4,1 +1,1,55,5,1 +1,1,55,6,1 +1,1,55,7,1 +1,1,55,8,1 +1,1,55,9,1 +1,1,55,10,1 +1,1,55,11,1 +1,1,55,12,1 +1,1,55,13,1 +1,1,55,14,1 +1,1,55,15,1 +1,1,55,16,1 +1,1,55,17,1 +1,1,55,18,1 +1,1,55,19,1 +1,1,56,0,1 +1,1,56,1,1 +1,1,56,2,1 +1,1,56,3,1 +1,1,56,4,1 +1,1,56,5,1 +1,1,56,6,1 +1,1,56,7,1 +1,1,56,8,1 +1,1,56,9,1 +1,1,56,10,1 +1,1,56,11,1 +1,1,56,12,1 +1,1,56,13,1 +1,1,56,14,1 +1,1,56,15,1 +1,1,56,16,1 +1,1,56,17,1 +1,1,56,18,1 +1,1,56,19,1 +1,1,57,0,1 +1,1,57,1,1 +1,1,57,2,1 +1,1,57,3,1 +1,1,57,4,1 +1,1,57,5,1 +1,1,57,6,1 +1,1,57,7,1 +1,1,57,8,1 +1,1,57,9,1 +1,1,57,10,1 +1,1,57,11,1 +1,1,57,12,1 +1,1,57,13,1 +1,1,57,14,1 +1,1,57,15,1 +1,1,57,16,1 +1,1,57,17,1 +1,1,57,18,1 +1,1,57,19,1 +1,1,58,0,1 +1,1,58,1,1 +1,1,58,2,1 +1,1,58,3,1 +1,1,58,4,1 +1,1,58,5,1 +1,1,58,6,1 +1,1,58,7,1 +1,1,58,8,1 +1,1,58,9,1 +1,1,58,10,1 +1,1,58,11,1 +1,1,58,12,1 +1,1,58,13,1 +1,1,58,14,1 +1,1,58,15,1 +1,1,58,16,1 +1,1,58,17,1 +1,1,58,18,1 +1,1,58,19,1 +1,1,59,0,1 +1,1,59,1,1 +1,1,59,2,1 +1,1,59,3,1 +1,1,59,4,1 +1,1,59,5,1 +1,1,59,6,1 +1,1,59,7,1 +1,1,59,8,1 +1,1,59,9,1 +1,1,59,10,1 +1,1,59,11,1 +1,1,59,12,1 +1,1,59,13,1 +1,1,59,14,1 +1,1,59,15,1 +1,1,59,16,1 +1,1,59,17,1 +1,1,59,18,1 +1,1,59,19,1 +1,1,60,0,1 +1,1,60,1,1 +1,1,60,2,1 +1,1,60,3,1 +1,1,60,4,1 +1,1,60,5,1 +1,1,60,6,1 +1,1,60,7,1 +1,1,60,8,1 +1,1,60,9,1 +1,1,60,10,1 +1,1,60,11,1 +1,1,60,12,1 +1,1,60,13,1 +1,1,60,14,1 +1,1,60,15,1 +1,1,60,16,1 +1,1,60,17,1 +1,1,60,18,1 +1,1,60,19,1 +1,1,61,0,1 +1,1,61,1,1 +1,1,61,2,1 +1,1,61,3,1 +1,1,61,4,1 +1,1,61,5,1 +1,1,61,6,1 +1,1,61,7,1 +1,1,61,8,1 +1,1,61,9,1 +1,1,61,10,1 +1,1,61,11,1 +1,1,61,12,1 +1,1,61,13,1 +1,1,61,14,1 +1,1,61,15,1 +1,1,61,16,1 +1,1,61,17,1 +1,1,61,18,1 +1,1,61,19,1 +1,1,62,0,1 +1,1,62,1,1 +1,1,62,2,1 +1,1,62,3,1 +1,1,62,4,1 +1,1,62,5,1 +1,1,62,6,1 +1,1,62,7,1 +1,1,62,8,1 +1,1,62,9,1 +1,1,62,10,1 +1,1,62,11,1 +1,1,62,12,1 +1,1,62,13,1 +1,1,62,14,1 +1,1,62,15,1 +1,1,62,16,1 +1,1,62,17,1 +1,1,62,18,1 +1,1,62,19,1 +1,1,63,0,1 +1,1,63,1,1 +1,1,63,2,1 +1,1,63,3,1 +1,1,63,4,1 +1,1,63,5,1 +1,1,63,6,1 +1,1,63,7,1 +1,1,63,8,1 +1,1,63,9,1 +1,1,63,10,1 +1,1,63,11,1 +1,1,63,12,1 +1,1,63,13,1 +1,1,63,14,1 +1,1,63,15,1 +1,1,63,16,1 +1,1,63,17,1 +1,1,63,18,1 +1,1,63,19,1 +1,1,64,0,1 +1,1,64,1,1 +1,1,64,2,1 +1,1,64,3,1 +1,1,64,4,1 +1,1,64,5,1 +1,1,64,6,1 +1,1,64,7,1 +1,1,64,8,1 +1,1,64,9,1 +1,1,64,10,1 +1,1,64,11,1 +1,1,64,12,1 +1,1,64,13,1 +1,1,64,14,1 +1,1,64,15,1 +1,1,64,16,1 +1,1,64,17,1 +1,1,64,18,1 +1,1,64,19,1 +1,1,65,0,1 +1,1,65,1,1 +1,1,65,2,1 +1,1,65,3,1 +1,1,65,4,1 +1,1,65,5,1 +1,1,65,6,1 +1,1,65,7,1 +1,1,65,8,1 +1,1,65,9,1 +1,1,65,10,1 +1,1,65,11,1 +1,1,65,12,1 +1,1,65,13,1 +1,1,65,14,1 +1,1,65,15,1 +1,1,65,16,1 +1,1,65,17,1 +1,1,65,18,1 +1,1,65,19,1 +1,1,66,0,1 +1,1,66,1,1 +1,1,66,2,1 +1,1,66,3,1 +1,1,66,4,1 +1,1,66,5,1 +1,1,66,6,1 +1,1,66,7,1 +1,1,66,8,1 +1,1,66,9,1 +1,1,66,10,1 +1,1,66,11,1 +1,1,66,12,1 +1,1,66,13,1 +1,1,66,14,1 +1,1,66,15,1 +1,1,66,16,1 +1,1,66,17,1 +1,1,66,18,1 +1,1,66,19,1 +1,1,67,0,1 +1,1,67,1,1 +1,1,67,2,1 +1,1,67,3,1 +1,1,67,4,1 +1,1,67,5,1 +1,1,67,6,1 +1,1,67,7,1 +1,1,67,8,1 +1,1,67,9,1 +1,1,67,10,1 +1,1,67,11,1 +1,1,67,12,1 +1,1,67,13,1 +1,1,67,14,1 +1,1,67,15,1 +1,1,67,16,1 +1,1,67,17,1 +1,1,67,18,1 +1,1,67,19,1 +1,1,68,0,1 +1,1,68,1,1 +1,1,68,2,1 +1,1,68,3,1 +1,1,68,4,1 +1,1,68,5,1 +1,1,68,6,1 +1,1,68,7,1 +1,1,68,8,1 +1,1,68,9,1 +1,1,68,10,1 +1,1,68,11,1 +1,1,68,12,1 +1,1,68,13,1 +1,1,68,14,1 +1,1,68,15,1 +1,1,68,16,1 +1,1,68,17,1 +1,1,68,18,1 +1,1,68,19,1 +1,1,69,0,1 +1,1,69,1,1 +1,1,69,2,1 +1,1,69,3,1 +1,1,69,4,1 +1,1,69,5,1 +1,1,69,6,1 +1,1,69,7,1 +1,1,69,8,1 +1,1,69,9,1 +1,1,69,10,1 +1,1,69,11,1 +1,1,69,12,1 +1,1,69,13,1 +1,1,69,14,1 +1,1,69,15,1 +1,1,69,16,1 +1,1,69,17,1 +1,1,69,18,1 +1,1,69,19,1 +1,1,70,0,1 +1,1,70,1,1 +1,1,70,2,1 +1,1,70,3,1 +1,1,70,4,1 +1,1,70,5,1 +1,1,70,6,1 +1,1,70,7,1 +1,1,70,8,1 +1,1,70,9,1 +1,1,70,10,1 +1,1,70,11,1 +1,1,70,12,1 +1,1,70,13,1 +1,1,70,14,1 +1,1,70,15,1 +1,1,70,16,1 +1,1,70,17,1 +1,1,70,18,1 +1,1,70,19,1 +1,1,71,0,1 +1,1,71,1,1 +1,1,71,2,1 +1,1,71,3,1 +1,1,71,4,1 +1,1,71,5,1 +1,1,71,6,1 +1,1,71,7,1 +1,1,71,8,1 +1,1,71,9,1 +1,1,71,10,1 +1,1,71,11,1 +1,1,71,12,1 +1,1,71,13,1 +1,1,71,14,1 +1,1,71,15,1 +1,1,71,16,1 +1,1,71,17,1 +1,1,71,18,1 +1,1,71,19,1 +1,1,72,0,1 +1,1,72,1,1 +1,1,72,2,1 +1,1,72,3,1 +1,1,72,4,1 +1,1,72,5,1 +1,1,72,6,1 +1,1,72,7,1 +1,1,72,8,1 +1,1,72,9,1 +1,1,72,10,1 +1,1,72,11,1 +1,1,72,12,1 +1,1,72,13,1 +1,1,72,14,1 +1,1,72,15,1 +1,1,72,16,1 +1,1,72,17,1 +1,1,72,18,1 +1,1,72,19,1 +1,1,73,0,1 +1,1,73,1,1 +1,1,73,2,1 +1,1,73,3,1 +1,1,73,4,1 +1,1,73,5,1 +1,1,73,6,1 +1,1,73,7,1 +1,1,73,8,1 +1,1,73,9,1 +1,1,73,10,1 +1,1,73,11,1 +1,1,73,12,1 +1,1,73,13,1 +1,1,73,14,1 +1,1,73,15,1 +1,1,73,16,1 +1,1,73,17,1 +1,1,73,18,1 +1,1,73,19,1 +1,1,74,0,1 +1,1,74,1,1 +1,1,74,2,1 +1,1,74,3,1 +1,1,74,4,1 +1,1,74,5,1 +1,1,74,6,1 +1,1,74,7,1 +1,1,74,8,1 +1,1,74,9,1 +1,1,74,10,1 +1,1,74,11,1 +1,1,74,12,1 +1,1,74,13,1 +1,1,74,14,1 +1,1,74,15,1 +1,1,74,16,1 +1,1,74,17,1 +1,1,74,18,1 +1,1,74,19,1 +1,1,75,0,1 +1,1,75,1,1 +1,1,75,2,1 +1,1,75,3,1 +1,1,75,4,1 +1,1,75,5,1 +1,1,75,6,1 +1,1,75,7,1 +1,1,75,8,1 +1,1,75,9,1 +1,1,75,10,1 +1,1,75,11,1 +1,1,75,12,1 +1,1,75,13,1 +1,1,75,14,1 +1,1,75,15,1 +1,1,75,16,1 +1,1,75,17,1 +1,1,75,18,1 +1,1,75,19,1 +1,1,76,0,1 +1,1,76,1,1 +1,1,76,2,1 +1,1,76,3,1 +1,1,76,4,1 +1,1,76,5,1 +1,1,76,6,1 +1,1,76,7,1 +1,1,76,8,1 +1,1,76,9,1 +1,1,76,10,1 +1,1,76,11,1 +1,1,76,12,1 +1,1,76,13,1 +1,1,76,14,1 +1,1,76,15,1 +1,1,76,16,1 +1,1,76,17,1 +1,1,76,18,1 +1,1,76,19,1 +1,1,77,0,1 +1,1,77,1,1 +1,1,77,2,1 +1,1,77,3,1 +1,1,77,4,1 +1,1,77,5,1 +1,1,77,6,1 +1,1,77,7,1 +1,1,77,8,1 +1,1,77,9,1 +1,1,77,10,1 +1,1,77,11,1 +1,1,77,12,1 +1,1,77,13,1 +1,1,77,14,1 +1,1,77,15,1 +1,1,77,16,1 +1,1,77,17,1 +1,1,77,18,1 +1,1,77,19,1 +1,1,78,0,1 +1,1,78,1,1 +1,1,78,2,1 +1,1,78,3,1 +1,1,78,4,1 +1,1,78,5,1 +1,1,78,6,1 +1,1,78,7,1 +1,1,78,8,1 +1,1,78,9,1 +1,1,78,10,1 +1,1,78,11,1 +1,1,78,12,1 +1,1,78,13,1 +1,1,78,14,1 +1,1,78,15,1 +1,1,78,16,1 +1,1,78,17,1 +1,1,78,18,1 +1,1,78,19,1 +1,1,79,0,1 +1,1,79,1,1 +1,1,79,2,1 +1,1,79,3,1 +1,1,79,4,1 +1,1,79,5,1 +1,1,79,6,1 +1,1,79,7,1 +1,1,79,8,1 +1,1,79,9,1 +1,1,79,10,1 +1,1,79,11,1 +1,1,79,12,1 +1,1,79,13,1 +1,1,79,14,1 +1,1,79,15,1 +1,1,79,16,1 +1,1,79,17,1 +1,1,79,18,1 +1,1,79,19,1 +1,1,80,0,1 +1,1,80,1,1 +1,1,80,2,1 +1,1,80,3,1 +1,1,80,4,1 +1,1,80,5,1 +1,1,80,6,1 +1,1,80,7,1 +1,1,80,8,1 +1,1,80,9,1 +1,1,80,10,1 +1,1,80,11,1 +1,1,80,12,1 +1,1,80,13,1 +1,1,80,14,1 +1,1,80,15,1 +1,1,80,16,1 +1,1,80,17,1 +1,1,80,18,1 +1,1,80,19,1 +1,1,81,0,1 +1,1,81,1,1 +1,1,81,2,1 +1,1,81,3,1 +1,1,81,4,1 +1,1,81,5,1 +1,1,81,6,1 +1,1,81,7,1 +1,1,81,8,1 +1,1,81,9,1 +1,1,81,10,1 +1,1,81,11,1 +1,1,81,12,1 +1,1,81,13,1 +1,1,81,14,1 +1,1,81,15,1 +1,1,81,16,1 +1,1,81,17,1 +1,1,81,18,1 +1,1,81,19,1 +1,1,82,0,1 +1,1,82,1,1 +1,1,82,2,1 +1,1,82,3,1 +1,1,82,4,1 +1,1,82,5,1 +1,1,82,6,1 +1,1,82,7,1 +1,1,82,8,1 +1,1,82,9,1 +1,1,82,10,1 +1,1,82,11,1 +1,1,82,12,1 +1,1,82,13,1 +1,1,82,14,1 +1,1,82,15,1 +1,1,82,16,1 +1,1,82,17,1 +1,1,82,18,1 +1,1,82,19,1 +1,1,83,0,1 +1,1,83,1,1 +1,1,83,2,1 +1,1,83,3,1 +1,1,83,4,1 +1,1,83,5,1 +1,1,83,6,1 +1,1,83,7,1 +1,1,83,8,1 +1,1,83,9,1 +1,1,83,10,1 +1,1,83,11,1 +1,1,83,12,1 +1,1,83,13,1 +1,1,83,14,1 +1,1,83,15,1 +1,1,83,16,1 +1,1,83,17,1 +1,1,83,18,1 +1,1,83,19,1 +1,1,84,0,1 +1,1,84,1,1 +1,1,84,2,1 +1,1,84,3,1 +1,1,84,4,1 +1,1,84,5,1 +1,1,84,6,1 +1,1,84,7,1 +1,1,84,8,1 +1,1,84,9,1 +1,1,84,10,1 +1,1,84,11,1 +1,1,84,12,1 +1,1,84,13,1 +1,1,84,14,1 +1,1,84,15,1 +1,1,84,16,1 +1,1,84,17,1 +1,1,84,18,1 +1,1,84,19,1 +1,1,85,0,1 +1,1,85,1,1 +1,1,85,2,1 +1,1,85,3,1 +1,1,85,4,1 +1,1,85,5,1 +1,1,85,6,1 +1,1,85,7,1 +1,1,85,8,1 +1,1,85,9,1 +1,1,85,10,1 +1,1,85,11,1 +1,1,85,12,1 +1,1,85,13,1 +1,1,85,14,1 +1,1,85,15,1 +1,1,85,16,1 +1,1,85,17,1 +1,1,85,18,1 +1,1,85,19,1 +1,1,86,0,1 +1,1,86,1,1 +1,1,86,2,1 +1,1,86,3,1 +1,1,86,4,1 +1,1,86,5,1 +1,1,86,6,1 +1,1,86,7,1 +1,1,86,8,1 +1,1,86,9,1 +1,1,86,10,1 +1,1,86,11,1 +1,1,86,12,1 +1,1,86,13,1 +1,1,86,14,1 +1,1,86,15,1 +1,1,86,16,1 +1,1,86,17,1 +1,1,86,18,1 +1,1,86,19,1 +1,1,87,0,1 +1,1,87,1,1 +1,1,87,2,1 +1,1,87,3,1 +1,1,87,4,1 +1,1,87,5,1 +1,1,87,6,1 +1,1,87,7,1 +1,1,87,8,1 +1,1,87,9,1 +1,1,87,10,1 +1,1,87,11,1 +1,1,87,12,1 +1,1,87,13,1 +1,1,87,14,1 +1,1,87,15,1 +1,1,87,16,1 +1,1,87,17,1 +1,1,87,18,1 +1,1,87,19,1 +1,1,88,0,1 +1,1,88,1,1 +1,1,88,2,1 +1,1,88,3,1 +1,1,88,4,1 +1,1,88,5,1 +1,1,88,6,1 +1,1,88,7,1 +1,1,88,8,1 +1,1,88,9,1 +1,1,88,10,1 +1,1,88,11,1 +1,1,88,12,1 +1,1,88,13,1 +1,1,88,14,1 +1,1,88,15,1 +1,1,88,16,1 +1,1,88,17,1 +1,1,88,18,1 +1,1,88,19,1 +1,1,89,0,1 +1,1,89,1,1 +1,1,89,2,1 +1,1,89,3,1 +1,1,89,4,1 +1,1,89,5,1 +1,1,89,6,1 +1,1,89,7,1 +1,1,89,8,1 +1,1,89,9,1 +1,1,89,10,1 +1,1,89,11,1 +1,1,89,12,1 +1,1,89,13,1 +1,1,89,14,1 +1,1,89,15,1 +1,1,89,16,1 +1,1,89,17,1 +1,1,89,18,1 +1,1,89,19,1 +1,1,90,0,1 +1,1,90,1,1 +1,1,90,2,1 +1,1,90,3,1 +1,1,90,4,1 +1,1,90,5,1 +1,1,90,6,1 +1,1,90,7,1 +1,1,90,8,1 +1,1,90,9,1 +1,1,90,10,1 +1,1,90,11,1 +1,1,90,12,1 +1,1,90,13,1 +1,1,90,14,1 +1,1,90,15,1 +1,1,90,16,1 +1,1,90,17,1 +1,1,90,18,1 +1,1,90,19,1 +1,1,91,0,1 +1,1,91,1,1 +1,1,91,2,1 +1,1,91,3,1 +1,1,91,4,1 +1,1,91,5,1 +1,1,91,6,1 +1,1,91,7,1 +1,1,91,8,1 +1,1,91,9,1 +1,1,91,10,1 +1,1,91,11,1 +1,1,91,12,1 +1,1,91,13,1 +1,1,91,14,1 +1,1,91,15,1 +1,1,91,16,1 +1,1,91,17,1 +1,1,91,18,1 +1,1,91,19,1 +1,1,92,0,1 +1,1,92,1,1 +1,1,92,2,1 +1,1,92,3,1 +1,1,92,4,1 +1,1,92,5,1 +1,1,92,6,1 +1,1,92,7,1 +1,1,92,8,1 +1,1,92,9,1 +1,1,92,10,1 +1,1,92,11,1 +1,1,92,12,1 +1,1,92,13,1 +1,1,92,14,1 +1,1,92,15,1 +1,1,92,16,1 +1,1,92,17,1 +1,1,92,18,1 +1,1,92,19,1 +1,1,93,0,1 +1,1,93,1,1 +1,1,93,2,1 +1,1,93,3,1 +1,1,93,4,1 +1,1,93,5,1 +1,1,93,6,1 +1,1,93,7,1 +1,1,93,8,1 +1,1,93,9,1 +1,1,93,10,1 +1,1,93,11,1 +1,1,93,12,1 +1,1,93,13,1 +1,1,93,14,1 +1,1,93,15,1 +1,1,93,16,1 +1,1,93,17,1 +1,1,93,18,1 +1,1,93,19,1 +1,1,94,0,1 +1,1,94,1,1 +1,1,94,2,1 +1,1,94,3,1 +1,1,94,4,1 +1,1,94,5,1 +1,1,94,6,1 +1,1,94,7,1 +1,1,94,8,1 +1,1,94,9,1 +1,1,94,10,1 +1,1,94,11,1 +1,1,94,12,1 +1,1,94,13,1 +1,1,94,14,1 +1,1,94,15,1 +1,1,94,16,1 +1,1,94,17,1 +1,1,94,18,1 +1,1,94,19,1 +1,1,95,0,1 +1,1,95,1,1 +1,1,95,2,1 +1,1,95,3,1 +1,1,95,4,1 +1,1,95,5,1 +1,1,95,6,1 +1,1,95,7,1 +1,1,95,8,1 +1,1,95,9,1 +1,1,95,10,1 +1,1,95,11,1 +1,1,95,12,1 +1,1,95,13,1 +1,1,95,14,1 +1,1,95,15,1 +1,1,95,16,1 +1,1,95,17,1 +1,1,95,18,1 +1,1,95,19,1 +1,1,96,0,1 +1,1,96,1,1 +1,1,96,2,1 +1,1,96,3,1 +1,1,96,4,1 +1,1,96,5,1 +1,1,96,6,1 +1,1,96,7,1 +1,1,96,8,1 +1,1,96,9,1 +1,1,96,10,1 +1,1,96,11,1 +1,1,96,12,1 +1,1,96,13,1 +1,1,96,14,1 +1,1,96,15,1 +1,1,96,16,1 +1,1,96,17,1 +1,1,96,18,1 +1,1,96,19,1 +1,1,97,0,1 +1,1,97,1,1 +1,1,97,2,1 +1,1,97,3,1 +1,1,97,4,1 +1,1,97,5,1 +1,1,97,6,1 +1,1,97,7,1 +1,1,97,8,1 +1,1,97,9,1 +1,1,97,10,1 +1,1,97,11,1 +1,1,97,12,1 +1,1,97,13,1 +1,1,97,14,1 +1,1,97,15,1 +1,1,97,16,1 +1,1,97,17,1 +1,1,97,18,1 +1,1,97,19,1 +1,1,98,0,1 +1,1,98,1,1 +1,1,98,2,1 +1,1,98,3,1 +1,1,98,4,1 +1,1,98,5,1 +1,1,98,6,1 +1,1,98,7,1 +1,1,98,8,1 +1,1,98,9,1 +1,1,98,10,1 +1,1,98,11,1 +1,1,98,12,1 +1,1,98,13,1 +1,1,98,14,1 +1,1,98,15,1 +1,1,98,16,1 +1,1,98,17,1 +1,1,98,18,1 +1,1,98,19,1 +1,1,99,0,1 +1,1,99,1,1 +1,1,99,2,1 +1,1,99,3,1 +1,1,99,4,1 +1,1,99,5,1 +1,1,99,6,1 +1,1,99,7,1 +1,1,99,8,1 +1,1,99,9,1 +1,1,99,10,1 +1,1,99,11,1 +1,1,99,12,1 +1,1,99,13,1 +1,1,99,14,1 +1,1,99,15,1 +1,1,99,16,1 +1,1,99,17,1 +1,1,99,18,1 +1,1,99,19,1 diff --git a/tests/procedures/resources/output/parallel_simulation/Result_Environment.csv b/tests/procedures/resources/output/parallel_simulation/Result_Environment.csv index c58cb112..637e3534 100644 --- a/tests/procedures/resources/output/parallel_simulation/Result_Environment.csv +++ b/tests/procedures/resources/output/parallel_simulation/Result_Environment.csv @@ -99,206 +99,6 @@ id_scenario,id_run,period 0,0,97 0,0,98 0,0,99 -0,1,0 -0,1,1 -0,1,2 -0,1,3 -0,1,4 -0,1,5 -0,1,6 -0,1,7 -0,1,8 -0,1,9 -0,1,10 -0,1,11 -0,1,12 -0,1,13 -0,1,14 -0,1,15 -0,1,16 -0,1,17 -0,1,18 -0,1,19 -0,1,20 -0,1,21 -0,1,22 -0,1,23 -0,1,24 -0,1,25 -0,1,26 -0,1,27 -0,1,28 -0,1,29 -0,1,30 -0,1,31 -0,1,32 -0,1,33 -0,1,34 -0,1,35 -0,1,36 -0,1,37 -0,1,38 -0,1,39 -0,1,40 -0,1,41 -0,1,42 -0,1,43 -0,1,44 -0,1,45 -0,1,46 -0,1,47 -0,1,48 -0,1,49 -0,1,50 -0,1,51 -0,1,52 -0,1,53 -0,1,54 -0,1,55 -0,1,56 -0,1,57 -0,1,58 -0,1,59 -0,1,60 -0,1,61 -0,1,62 -0,1,63 -0,1,64 -0,1,65 -0,1,66 -0,1,67 -0,1,68 -0,1,69 -0,1,70 -0,1,71 -0,1,72 -0,1,73 -0,1,74 -0,1,75 -0,1,76 -0,1,77 -0,1,78 -0,1,79 -0,1,80 -0,1,81 -0,1,82 -0,1,83 -0,1,84 -0,1,85 -0,1,86 -0,1,87 -0,1,88 -0,1,89 -0,1,90 -0,1,91 -0,1,92 -0,1,93 -0,1,94 -0,1,95 -0,1,96 -0,1,97 -0,1,98 -0,1,99 -1,1,0 -1,1,1 -1,1,2 -1,1,3 -1,1,4 -1,1,5 -1,1,6 -1,1,7 -1,1,8 -1,1,9 -1,1,10 -1,1,11 -1,1,12 -1,1,13 -1,1,14 -1,1,15 -1,1,16 -1,1,17 -1,1,18 -1,1,19 -1,1,20 -1,1,21 -1,1,22 -1,1,23 -1,1,24 -1,1,25 -1,1,26 -1,1,27 -1,1,28 -1,1,29 -1,1,30 -1,1,31 -1,1,32 -1,1,33 -1,1,34 -1,1,35 -1,1,36 -1,1,37 -1,1,38 -1,1,39 -1,1,40 -1,1,41 -1,1,42 -1,1,43 -1,1,44 -1,1,45 -1,1,46 -1,1,47 -1,1,48 -1,1,49 -1,1,50 -1,1,51 -1,1,52 -1,1,53 -1,1,54 -1,1,55 -1,1,56 -1,1,57 -1,1,58 -1,1,59 -1,1,60 -1,1,61 -1,1,62 -1,1,63 -1,1,64 -1,1,65 -1,1,66 -1,1,67 -1,1,68 -1,1,69 -1,1,70 -1,1,71 -1,1,72 -1,1,73 -1,1,74 -1,1,75 -1,1,76 -1,1,77 -1,1,78 -1,1,79 -1,1,80 -1,1,81 -1,1,82 -1,1,83 -1,1,84 -1,1,85 -1,1,86 -1,1,87 -1,1,88 -1,1,89 -1,1,90 -1,1,91 -1,1,92 -1,1,93 -1,1,94 -1,1,95 -1,1,96 -1,1,97 -1,1,98 -1,1,99 1,0,0 1,0,1 1,0,2 @@ -399,3 +199,103 @@ id_scenario,id_run,period 1,0,97 1,0,98 1,0,99 +1,1,0 +1,1,1 +1,1,2 +1,1,3 +1,1,4 +1,1,5 +1,1,6 +1,1,7 +1,1,8 +1,1,9 +1,1,10 +1,1,11 +1,1,12 +1,1,13 +1,1,14 +1,1,15 +1,1,16 +1,1,17 +1,1,18 +1,1,19 +1,1,20 +1,1,21 +1,1,22 +1,1,23 +1,1,24 +1,1,25 +1,1,26 +1,1,27 +1,1,28 +1,1,29 +1,1,30 +1,1,31 +1,1,32 +1,1,33 +1,1,34 +1,1,35 +1,1,36 +1,1,37 +1,1,38 +1,1,39 +1,1,40 +1,1,41 +1,1,42 +1,1,43 +1,1,44 +1,1,45 +1,1,46 +1,1,47 +1,1,48 +1,1,49 +1,1,50 +1,1,51 +1,1,52 +1,1,53 +1,1,54 +1,1,55 +1,1,56 +1,1,57 +1,1,58 +1,1,59 +1,1,60 +1,1,61 +1,1,62 +1,1,63 +1,1,64 +1,1,65 +1,1,66 +1,1,67 +1,1,68 +1,1,69 +1,1,70 +1,1,71 +1,1,72 +1,1,73 +1,1,74 +1,1,75 +1,1,76 +1,1,77 +1,1,78 +1,1,79 +1,1,80 +1,1,81 +1,1,82 +1,1,83 +1,1,84 +1,1,85 +1,1,86 +1,1,87 +1,1,88 +1,1,89 +1,1,90 +1,1,91 +1,1,92 +1,1,93 +1,1,94 +1,1,95 +1,1,96 +1,1,97 +1,1,98 +1,1,99 diff --git a/tests/procedures/run_new_trainer_algorithm.py b/tests/procedures/run_new_trainer_algorithm.py index cea21ed1..ebfd6fef 100644 --- a/tests/procedures/run_new_trainer_algorithm.py +++ b/tests/procedures/run_new_trainer_algorithm.py @@ -1,9 +1,9 @@ # -*- coding:utf-8 -*- -import sys import os +import sys + sys.path.insert(0, os.path.dirname(__file__)) print(os.path.abspath(sys.path[0])) -import base from new_trainer_algorithm import * @@ -22,5 +22,6 @@ def test_chrom_params_algorithm(): ta.run(scenario, meta) ta.stop() + if __name__ == "__main__": - test_chrom_params_algorithm() \ No newline at end of file + test_chrom_params_algorithm() diff --git a/tests/procedures/simulator_demo.py b/tests/procedures/simulator_demo.py index 2e68cba3..264dc4fd 100644 --- a/tests/procedures/simulator_demo.py +++ b/tests/procedures/simulator_demo.py @@ -9,13 +9,13 @@ from Melodie import ( Agent, + Config, DataCollector, + DataLoader, Environment, + Model, Scenario, Simulator, - Model, - DataLoader, - Config, ) cfg_for_temp = Config( diff --git a/tests/procedures/test_calibrator.py b/tests/procedures/test_calibrator.py index 1da5d79b..9a918a65 100644 --- a/tests/procedures/test_calibrator.py +++ b/tests/procedures/test_calibrator.py @@ -1,6 +1,7 @@ import pytest -from tests.infra.config import cfg_for_calibrator + from Melodie import DataLoader +from tests.infra.config import cfg_for_calibrator from tests.procedures.calibrator import CovidCalibrator, CovidModel, CovidScenario diff --git a/tests/procedures/test_learning_params.py b/tests/procedures/test_learning_params.py index d02b1311..a13fcbdf 100644 --- a/tests/procedures/test_learning_params.py +++ b/tests/procedures/test_learning_params.py @@ -1,7 +1,7 @@ import pandas as pd -import tests.procedures.base -from Melodie.trainer import GATrainerParams + from Melodie.calibrator import GACalibratorParams +from Melodie.trainer import GATrainerParams def test_trainer_params(): diff --git a/tests/procedures/test_scenario.py b/tests/procedures/test_scenario.py index 826c3a94..8f51f734 100644 --- a/tests/procedures/test_scenario.py +++ b/tests/procedures/test_scenario.py @@ -8,24 +8,15 @@ import pandas as pd import pytest -from Melodie import ( - Agent, - DataCollector, - Environment, - Scenario, - Simulator, - Model, - DataLoader, - Config, -) +from Melodie import Agent, Config, DataLoader, Environment, Model, Scenario, Simulator cfg_for_temp = Config( "temp_db_for_parallel_simulation", os.path.dirname(__file__), - input_folder=os.path.join(os.path.dirname( - __file__), "resources", "excels"), - output_folder=os.path.join(os.path.dirname( - __file__), "resources", "output/test_scenario"), + input_folder=os.path.join(os.path.dirname(__file__), "resources", "excels"), + output_folder=os.path.join( + os.path.dirname(__file__), "resources", "output/test_scenario" + ), ) AGENT_NUM_1 = 10 AGENT_NUM_2 = 20 @@ -60,7 +51,7 @@ def setup(self): # def setup(self): - # self.demo_matrix1 = self.load + # self.demo_matrix1 = self.load class DCTestModel(Model): @@ -76,11 +67,9 @@ def setup(self): # params_df_3 = pd.DataFrame( # [{"a": 1.0, "b": 1, "productivity": 0} for i in range(20)] # ) - self.agent_list1 = self.create_agent_container( - TestAgent, 10, params_df_1) + self.agent_list1 = self.create_agent_container(TestAgent, 10, params_df_1) self.agent_list1.setup_agents(10, params_df_1) - self.agent_list2 = self.create_agent_container( - TestAgent, 20, params_df_2) + self.agent_list2 = self.create_agent_container(TestAgent, 20, params_df_2) self.agent_list2.setup_agents(20, params_df_2) self.environment = self.create_environment(TestEnv) # self.data_collector = self.create_data_collector(DataCollector1) diff --git a/tests/procedures/test_simulator_run_parallel.py b/tests/procedures/test_simulator_run_parallel.py index 36c524a8..89bf8460 100644 --- a/tests/procedures/test_simulator_run_parallel.py +++ b/tests/procedures/test_simulator_run_parallel.py @@ -2,16 +2,16 @@ import os -from tests.procedures.simulator_demo import Simulator4Test, DCTestModel, TestScenario from MelodieInfra import Config +from tests.procedures.simulator_demo import DCTestModel, Simulator4Test, TestScenario cfg_for_temp2 = Config( "temp_db_for_parallel_simulation", os.path.dirname(__file__), - input_folder=os.path.join(os.path.dirname( - __file__), "resources", "excels"), - output_folder=os.path.join(os.path.dirname( - __file__), "resources", "output", "parallel_simulation"), + input_folder=os.path.join(os.path.dirname(__file__), "resources", "excels"), + output_folder=os.path.join( + os.path.dirname(__file__), "resources", "output", "parallel_simulation" + ), ) AGENT_NUM_1 = 10 AGENT_NUM_2 = 20 diff --git a/tests/procedures/test_sqlite_performance.py b/tests/procedures/test_sqlite_performance.py index ce2b12dd..8c3ff106 100644 --- a/tests/procedures/test_sqlite_performance.py +++ b/tests/procedures/test_sqlite_performance.py @@ -1,10 +1,9 @@ # -*- coding:utf-8 -*- +import logging import random import sqlite3 import time -import logging - def test_sqlite_performance(): logging.warning("performance test will not be executed!") @@ -47,4 +46,3 @@ def test_select(): cx.commit() print(len(all)) print(t1 - t0, t2 - t1) - pass diff --git a/tests/table/test_compat.py b/tests/table/test_compat.py index a1d38a4b..6d91d6d5 100644 --- a/tests/table/test_compat.py +++ b/tests/table/test_compat.py @@ -1,4 +1,6 @@ -from MelodieInfra.table import Table, TableRow, TableInterface +import pandas as pd + +from MelodieInfra.table import Table, TableInterface, TableRow def filter_test(df, table): @@ -17,8 +19,6 @@ def iter_test(df, table): def test_filter(): - import pandas as pd - data = [[1, 2, 3], [1, 2, 4], [1, 3, 5], [2, 3, 4], [2, 4, 6]] df = pd.DataFrame(data, columns=["a", "b", "c"]) diff --git a/tests/table/test_general_table.py b/tests/table/test_general_table.py index 88fac090..f9044d86 100644 --- a/tests/table/test_general_table.py +++ b/tests/table/test_general_table.py @@ -1,9 +1,10 @@ import os import time -from typing import List + from base import OUTPUT_DIR +from sqlalchemy import Integer + from MelodieInfra.table import GeneralTable -from sqlalchemy import Integer, create_engine XLSFILE = os.path.join(os.path.dirname(__file__), "data", "params.xlsx") diff --git a/tests/table/test_iamc_table.py b/tests/table/test_iamc_table.py index 3b525a3f..39d22906 100644 --- a/tests/table/test_iamc_table.py +++ b/tests/table/test_iamc_table.py @@ -1,10 +1,7 @@ -import time -from typing import Optional -from base import is_pypy -from MelodieInfra.table import PyAMTable, PyAMTableRow -from sqlalchemy import Integer import os +from MelodieInfra.table import PyAMTable, PyAMTableRow + # if not is_pypy(): # import pyam PATH = os.path.join(os.path.dirname(__file__), "data", "pyam_tutorial_data.csv") diff --git a/tests/table/test_objects_table.py b/tests/table/test_objects_table.py index d55a4096..b4e19026 100644 --- a/tests/table/test_objects_table.py +++ b/tests/table/test_objects_table.py @@ -1,11 +1,12 @@ -from dataclasses import dataclass import os import time from typing import List + from base import OUTPUT_DIR -from MelodieInfra.table import Table, TableRow, column_meta from sqlalchemy import BigInteger, Integer, create_engine +from MelodieInfra.table import Table, TableRow, column_meta + XLSFILE = os.path.join(os.path.dirname(__file__), "data", "params.xlsx") XLSFILE_TO_WRITE = os.path.join(OUTPUT_DIR, "params.xlsx") @@ -177,4 +178,4 @@ def test_indicing(): def test_create_autodetect(): agents = [{"a": i, "b": i + 0.5} for i in range(1000)] row_cls = TableRow.subcls_from_dict(agents[0]) - table = Table.from_dicts(row_cls, agents) + Table.from_dicts(row_cls, agents) diff --git a/tests/table/test_reader_writer.py b/tests/table/test_reader_writer.py index 71ff9009..ca5123d6 100644 --- a/tests/table/test_reader_writer.py +++ b/tests/table/test_reader_writer.py @@ -1,8 +1,8 @@ import os -import time -from base import is_pypy, OUTPUT_DIR -from MelodieInfra.table import PyAMTable, TableReader, TableWriter -from sqlalchemy import Integer + +from base import OUTPUT_DIR + +from MelodieInfra.table import TableReader, TableWriter PATH = os.path.join(os.path.dirname(__file__), "data", "pyam_tutorial_data.csv") diff --git a/tests/table/test_vectorizer.py b/tests/table/test_vectorizer.py index 21deb180..e10b7335 100644 --- a/tests/table/test_vectorizer.py +++ b/tests/table/test_vectorizer.py @@ -1,4 +1,4 @@ -from MelodieInfra import objs_to_table_row_vectorizer, TableRow, Table +from MelodieInfra import Table, TableRow, objs_to_table_row_vectorizer class CustomClass: diff --git a/tests/test1.py b/tests/test1.py deleted file mode 100644 index 53eaab42..00000000 --- a/tests/test1.py +++ /dev/null @@ -1,3 +0,0 @@ -from tests.infra.test_network import test_create_ba - -test_create_ba() diff --git a/tests/test123.py b/tests/test123.py deleted file mode 100644 index 1fca8983..00000000 --- a/tests/test123.py +++ /dev/null @@ -1,8 +0,0 @@ -from test_new_trainer_algorithm import test_chrom_params_algorithm -from test_calibrator import test_calibrator - -test_chrom_params_algorithm() -test_calibrator() -print("1======" * 100) -test_chrom_params_algorithm() -print("2*-*-*-" * 100)