Repository: baobabsoluciones/cornflow (language: python)

Issue:
Migration of the pkg resources library to importlib.metadata

Move docs folder
Solves issue #495 

Moved documentation from inside cornflow-server folder to root folder.
Updated documentation.
Changed documentation theme.
Fixed bug with endpoint accepting empty strings as passwords
The PUT endpoint for users accepts empty strings in the "password" field and the the hashed password in the database is replaced by an empty string. I suspect the same goes for the email. This pr fixes the issue.
Prerelease/v1.1.0



Discussion / hints:

Fix patch:
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 000000000..df807bd52
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,19 @@
+# Security Policy
+
+This document contains information on how to report security vulnerabilities in **cornflow** and how security issues reported to the **cornflow development team** are handled.
+
+## Please do not file GitHub issues fo security vulnerabilities as they are public!
+
+The cornflow development team takes security issues very seriously. If you have any concern around cornflow security or belive you have uncovered a vulnerability, we suggest that you get in touch via the e-mail addresses cornflow@baobabsoluciones.es and seguridad@baobabsoluciones.es
+
+Before sending the report, however, please read the following guideslines first. The guidleines should answer the most common questions you might have about reporting vulnerabilities.
+
+## What should be and should NOT be reported?
+
+**Only** use the security e-mail address to report undisclosed security vulnerabilities in cornflow and to manage the process of fixing such vulnerabilities. We do not accept regular bug reports or other security-related queries at this address. We will ignore mail sent to this address that does not relate to an undisclosed security problem in the cornflow project. Please follow regular communication channels for inquiries, questions and other discussions related to the process or issues.
+
+Specifically, we will ignore results of security scans that contain a list of dependencies of cornflow with dependencies in cornflow docker reference image.
+
+## How to report the issue?
+
+Please send one plain-text email for each vulnerability you are reporting including an explanation of how it affects cornflow security. We may ask that you resubmit your report if you send it as an image, movie, HTML, or PDF attachment when you could as easily describe it with plain text.
diff --git a/cornflow-dags/.coveragerc b/cornflow-dags/.coveragerc
new file mode 100644
index 000000000..2b90a30e1
--- /dev/null
+++ b/cornflow-dags/.coveragerc
@@ -0,0 +1,7 @@
+[run]
+omit =
+    */tests/*
+
+[report]
+exclude_also =
+    raise NotImplementedError
\ No newline at end of file
diff --git a/cornflow-dags/DAG/bar_cutting/__init__.py b/cornflow-dags/DAG/bar_cutting/__init__.py
index 49ace3392..731cd0cc2 100644
--- a/cornflow-dags/DAG/bar_cutting/__init__.py
+++ b/cornflow-dags/DAG/bar_cutting/__init__.py
@@ -20,24 +20,18 @@ class BarCutting(ApplicationCore):
 
     @property
     def test_cases(self) -> List[Union[Dict, Tuple[Dict, Dict]]]:
-        options_instance = ["data/example_instance_1.json"]
-
-        options_solution = ["data/example_solution_1.json"]
+        data_1 = load_json(
+            os.path.join(os.path.dirname(__file__), "data/example_instance_1.json")
+        )
+        data_out_1 = load_json(
+            os.path.join(os.path.dirname(__file__), "data/example_solution_1.json")
+        )
 
         return [
-            (
-                load_json(
-                    os.path.join(
-                        os.path.dirname(__file__),
-                        options_instance[i],
-                    )
-                ),
-                load_json(
-                    os.path.join(
-                        os.path.dirname(__file__),
-                        options_solution[i],
-                    )
-                ),
-            )
-            for i in range(len(options_instance))
+            {
+                "name": "Base case",
+                "instance": data_1,
+                "solution": data_out_1,
+                "description": "Base instance and solution",
+            }
         ]
diff --git a/cornflow-dags/DAG/bar_cutting/schemas/config.json b/cornflow-dags/DAG/bar_cutting/schemas/config.json
index d857a6310..2fd261c41 100644
--- a/cornflow-dags/DAG/bar_cutting/schemas/config.json
+++ b/cornflow-dags/DAG/bar_cutting/schemas/config.json
@@ -4,7 +4,7 @@
     "properties": {
         "solver": {
 			"type": "string",
-			"enum": ["mip", "CG", "mip.cbc", "CG.cbc"],
+			"enum": ["mip", "CG", "mip.cbc", "mip.gurobi", "CG.cbc", "CG.gurobi"],
 			"default": "mip.cbc"
 			},
         "timeLimit": {
diff --git a/cornflow-dags/DAG/bar_cutting/solvers/column_generation.py b/cornflow-dags/DAG/bar_cutting/solvers/column_generation.py
index 37016e21d..dac7c1335 100644
--- a/cornflow-dags/DAG/bar_cutting/solvers/column_generation.py
+++ b/cornflow-dags/DAG/bar_cutting/solvers/column_generation.py
@@ -204,13 +204,14 @@ def solve(self, config):
             _, solver_name = solver_name.split(".")
 
         SOLVER_PARAMETERS = dict(
-            sec=config.get("timeLimit", 360),
-            allow=config.get("gapAbs", 1),
-            ratio=config.get("gaPRel", 0.01),
-            tee=config.get("msg", 1),
+            time_limit=config.get("timeLimit", 360),
+            abs_gap=config.get("abs_gap", 1),
+            rel_gap=config.get("rel_gap", 0.01),
+            solver=solver_name
         )
+        SOLVER_PARAMETERS = self.get_solver_config(SOLVER_PARAMETERS)
 
-        opt = SolverFactory(solver_name)
+        opt = SolverFactory(solver_name, tee=config.get("msg", 1))
         opt.options.update(SOLVER_PARAMETERS)
 
         more_patterns_bar1 = True
diff --git a/cornflow-dags/DAG/bar_cutting/solvers/mip_model.py b/cornflow-dags/DAG/bar_cutting/solvers/mip_model.py
index bc8c604ff..cbcc52b58 100644
--- a/cornflow-dags/DAG/bar_cutting/solvers/mip_model.py
+++ b/cornflow-dags/DAG/bar_cutting/solvers/mip_model.py
@@ -140,13 +140,14 @@ def solve(self, config):
             _, solver_name = solver_name.split(".")
 
         SOLVER_PARAMETERS = dict(
-            sec=config.get("timeLimit", 360),
-            allow=config.get("gapAbs", 1),
-            ratio=config.get("gaPRel", 0.01),
-            tee=config.get("msg", 1),
+            time_limit=config.get("timeLimit", 360),
+            abs_gap=config.get("abs_gap", 1),
+            rel_gap=config.get("rel_gap", 0.01),
+            solver=solver_name
         )
+        SOLVER_PARAMETERS = self.get_solver_config(SOLVER_PARAMETERS)
 
-        opt = SolverFactory(solver_name)
+        opt = SolverFactory(solver_name, tee=config.get("msg", 1))
         opt.options.update(SOLVER_PARAMETERS)
         results = opt.solve(model_instance)
 
diff --git a/cornflow-dags/DAG/dag_timer.py b/cornflow-dags/DAG/dag_timer.py
index 8a776f195..f7ef66b57 100644
--- a/cornflow-dags/DAG/dag_timer.py
+++ b/cornflow-dags/DAG/dag_timer.py
@@ -46,4 +46,4 @@ class Timer(ApplicationCore):
 
     @property
     def test_cases(self):
-        return [{}]
+        return []
diff --git a/cornflow-dags/DAG/facility_location/__init__.py b/cornflow-dags/DAG/facility_location/__init__.py
index f49073d91..af70095be 100644
--- a/cornflow-dags/DAG/facility_location/__init__.py
+++ b/cornflow-dags/DAG/facility_location/__init__.py
@@ -18,4 +18,10 @@ def test_cases(self):
         data = load_json(
             os.path.join(os.path.dirname(__file__), "data/input_data_test1.json")
         )
-        return [data]
+        return [
+            {
+                "name": "Base case",
+                "instance": data,
+                "description": "Base example instance",
+            }
+        ]
diff --git a/cornflow-dags/DAG/facility_location/schemas/config.json b/cornflow-dags/DAG/facility_location/schemas/config.json
index 441d4605a..c772ab520 100644
--- a/cornflow-dags/DAG/facility_location/schemas/config.json
+++ b/cornflow-dags/DAG/facility_location/schemas/config.json
@@ -4,7 +4,7 @@
     "properties": {
         "solver": {
 			"type": "string",
-			"enum": ["Pyomo", "Pyomo.cbc"],
+			"enum": ["Pyomo", "Pyomo.cbc", "Pyomo.gurobi"],
 			"default": "Pyomo.cbc"
 			},
         "timeLimit": {
diff --git a/cornflow-dags/DAG/facility_location/solvers/PyomoSolver.py b/cornflow-dags/DAG/facility_location/solvers/PyomoSolver.py
index 8054f383f..5afc0e3b9 100644
--- a/cornflow-dags/DAG/facility_location/solvers/PyomoSolver.py
+++ b/cornflow-dags/DAG/facility_location/solvers/PyomoSolver.py
@@ -338,8 +338,8 @@ def solve(self, config):
             _, solver_name = solver_name.split(".")
 
         opt = SolverFactory(solver_name)
-        opt.options.update(config)
-        results = opt.solve(model_instance)
+        opt.options.update(self.get_solver_config(config))
+        results = opt.solve(model_instance, tee=config.get("msg", True))
 
         status = results.solver.status
         termination_condition = PYOMO_STOP_MAPPING[results.solver.termination_condition]
diff --git a/cornflow-dags/DAG/graph_coloring/__init__.py b/cornflow-dags/DAG/graph_coloring/__init__.py
index e9b40e03d..c0de3aa39 100644
--- a/cornflow-dags/DAG/graph_coloring/__init__.py
+++ b/cornflow-dags/DAG/graph_coloring/__init__.py
@@ -33,6 +33,16 @@ def read_file(filePath):
             return dict(pairs=pairs)
 
         file_dir = os.path.join(os.path.dirname(__file__), "data")
-        files = os.listdir(file_dir)
-        test_files = pt.TupList(files).vfilter(lambda v: v.startswith("gc_"))
-        return [read_file(os.path.join(file_dir, fileName)) for fileName in test_files]
+
+        return [
+            {
+                "name": "gc_4_1",
+                "instance": read_file(os.path.join(file_dir, "gc_4_1")),
+                "description": "Example data with 4 pairs",
+            },
+            {
+                "name": "gc_50_1",
+                "instance": read_file(os.path.join(file_dir, "gc_50_1")),
+                "description": "Example data with 50 pairs",
+            },
+        ]
diff --git a/cornflow-dags/DAG/knapsack/__init__.py b/cornflow-dags/DAG/knapsack/__init__.py
index 4473e0204..e110482d8 100644
--- a/cornflow-dags/DAG/knapsack/__init__.py
+++ b/cornflow-dags/DAG/knapsack/__init__.py
@@ -1,4 +1,4 @@
-from typing import  Union, Type
+from typing import Union, Type
 from cornflow_client import ApplicationCore, get_empty_schema
 import os
 from .core import Instance, Solution, Experiment
@@ -17,7 +17,8 @@ class Knapsack(ApplicationCore):
         MIP=MIPSolver,
     )
     schema = get_empty_schema(
-        properties=dict(timeLimit=dict(type="number")), solvers=list(solvers.keys()) + ["MIP.cbc"],
+        properties=dict(timeLimit=dict(type="number")),
+        solvers=list(solvers.keys()) + ["MIP.cbc", "MIP.gurobi"],
     )
 
     def get_solver_name(self, data, conf):
@@ -39,10 +40,16 @@ def solve(self, data, conf, solution_data=None):
     @property
     def test_cases(self):
         cwd = os.path.dirname(os.path.realpath(__file__))
-        path = os.path.join(cwd, "Data", "ks_4_0")
+        path = os.path.join(cwd, "data", "ks_4_0")
 
         data = Instance.from_file(path).to_dict()
-        return [data]
+        return [
+            {
+                "name": "ks_4_0",
+                "instance": data,
+                "description": "Example data with 4 items",
+            }
+        ]
 
     def get_solver(self, name: str = "default") -> Union[Type[Experiment], None]:
         if "." in name:
diff --git a/cornflow-dags/DAG/knapsack/Data/ks_4_0 b/cornflow-dags/DAG/knapsack/data/ks_4_0
similarity index 100%
rename from cornflow-dags/DAG/knapsack/Data/ks_4_0
rename to cornflow-dags/DAG/knapsack/data/ks_4_0
diff --git a/cornflow-dags/DAG/knapsack/solvers/MIPSolver.py b/cornflow-dags/DAG/knapsack/solvers/MIPSolver.py
index bde075b01..973000656 100644
--- a/cornflow-dags/DAG/knapsack/solvers/MIPSolver.py
+++ b/cornflow-dags/DAG/knapsack/solvers/MIPSolver.py
@@ -79,8 +79,8 @@ def solve(self, config):
             _, solver_name = solver_name.split(".")
 
         opt = SolverFactory(solver_name)
-        opt.options.update(config)
-        results = opt.solve(model_instance)
+        opt.options.update(self.get_solver_config(config))
+        results = opt.solve(model_instance, tee=config.get("msg", True))
 
         status = results.solver.status
         termination_condition = PYOMO_STOP_MAPPING[results.solver.termination_condition]
diff --git a/cornflow-dags/DAG/roadef/__init__.py b/cornflow-dags/DAG/roadef/__init__.py
index 214a7e000..d98d1e9c7 100644
--- a/cornflow-dags/DAG/roadef/__init__.py
+++ b/cornflow-dags/DAG/roadef/__init__.py
@@ -19,6 +19,12 @@ def test_cases(self):
         _get_file = lambda name: os.path.join(cwd, "data", name)
         _get_instance = lambda fn: Instance.from_json(_get_file(fn)).to_dict()
         _get_solution = lambda fn: Solution.from_json(_get_file(fn)).to_dict()
-        return TupList(
-            [("example_instance_filtered.json", "example_solution_filtered.json")]
-        ).vapply(lambda v: (_get_instance(v[0]), _get_solution(v[1])))
+
+        return [
+            {
+                "name": "Base case",
+                "instance": _get_instance("example_instance_filtered.json"),
+                "solution": _get_solution("example_solution_filtered.json"),
+                "description": "Example data",
+            }
+        ]
diff --git a/cornflow-dags/DAG/roadef/schemas/config.json b/cornflow-dags/DAG/roadef/schemas/config.json
index f7ef21e2b..b68f2ddae 100644
--- a/cornflow-dags/DAG/roadef/schemas/config.json
+++ b/cornflow-dags/DAG/roadef/schemas/config.json
@@ -4,7 +4,17 @@
     "solver":{
       "type": "string",
       "default": "Greedy",
-      "enum": ["Greedy", "MIPModel", "PeriodicMIPModel", "MIPModel.PULP_CBC_CMD", "PeriodicMIPModel.PULP_CBC_CMD"]
+      "enum": [
+        "Greedy",
+        "MIPModel",
+        "PeriodicMIPModel",
+        "MIPModel.PULP_CBC_CMD",
+        "PeriodicMIPModel.PULP_CBC_CMD",
+        "MIPModel.GUROBI_CMD",
+        "PeriodicMIPModel.GUROBI_CMD",
+        "MIPModel.GUROBI",
+        "PeriodicMIPModel.GUROBI"
+      ]
     },
     "timeLimit":{
       "type": "number"
diff --git a/cornflow-dags/DAG/roadef/solvers/MIPModel.py b/cornflow-dags/DAG/roadef/solvers/MIPModel.py
index 97de35826..7683ea395 100644
--- a/cornflow-dags/DAG/roadef/solvers/MIPModel.py
+++ b/cornflow-dags/DAG/roadef/solvers/MIPModel.py
@@ -88,21 +88,23 @@ def solve(self, config=None):
         solver_name = self.get_solver(config)
         config_first = dict(
             solver=solver_name,
-            gapRel=0.1,
+            rel_gap=0.1,
             timeLimit=min(200.0, self._get_remaining_time()),
             msg=self.print_log,
         )
+        config_first = self.get_solver_config(config_first, lib="pulp")
 
         def config_iteration(self, warm_start):
-            return dict(
+            conf = dict(
                 solver=solver_name,
-                gapRel=0.05,
+                rel_gap=0.05,
                 timeLimit=min(100.0, self._get_remaining_time()),
                 msg=self.print_log,
                 warmStart=warm_start,
             )
+            return self.get_solver_config(conf, lib="pulp")
 
-        solver = pl.getSolver(**config_first)
+        solver = pl.getSolver(solver=solver_name, **config_first)
         used_routes, previous_value = self.solve_one_iteration(
             solver, used_routes, previous_value, current_round
         )
@@ -111,7 +113,7 @@ def config_iteration(self, warm_start):
             self.print_in_console(
                 f"=================== ROUND {current_round} ========================"
             )
-            solver = pl.getSolver(**config_iteration(self, current_round != 1))
+            solver = pl.getSolver(solver=solver_name, **config_iteration(self, current_round != 1))
 
             used_routes, previous_value = self.solve_one_iteration(
                 solver, used_routes, previous_value, current_round
diff --git a/cornflow-dags/DAG/roadef/solvers/PeriodicMIP.py b/cornflow-dags/DAG/roadef/solvers/PeriodicMIP.py
index 69f423c75..d51d84507 100644
--- a/cornflow-dags/DAG/roadef/solvers/PeriodicMIP.py
+++ b/cornflow-dags/DAG/roadef/solvers/PeriodicMIP.py
@@ -103,21 +103,23 @@ def solve(self, config=None):
 
             config_first = dict(
                 solver=solver_name,
-                gapRel=0.1,
+                rel_gap=0.1,
                 timeLimit=min(200.0, self._get_remaining_time()),
                 msg=self.print_log,
             )
+            config_first = self.get_solver_config(config_first, lib="pulp")
 
             def config_iteration(self):
-                return dict(
+                conf = dict(
                     solver=solver_name,
-                    gapRel=0.05,
+                    rel_gap=0.05,
                     timeLimit=min(100.0, self._get_remaining_time()),
                     msg=self.print_log,
                     warmStart=(current_round != 1),
                 )
+                return self.get_solver_config(conf, lib="pulp")
 
-            solver = pl.getSolver(**config_first)
+            solver = pl.getSolver(solver=solver_name, **config_first)
             used_routes, previous_value = self.solve_one_iteration(
                 solver, used_routes, previous_value, current_round
             )
@@ -127,8 +129,7 @@ def config_iteration(self):
                 self.print_in_console(
                     f"=================== ROUND {current_round} ========================"
                 )
-
-                solver = pl.getSolver(**config_iteration(self))
+                solver = pl.getSolver(solver=solver_name, **config_iteration(self))
 
                 used_routes, previous_value = self.solve_one_iteration(
                     solver, used_routes, previous_value, current_round
diff --git a/cornflow-dags/DAG/rostering/__init__.py b/cornflow-dags/DAG/rostering/__init__.py
index 26d3332f2..4b55eb8dc 100644
--- a/cornflow-dags/DAG/rostering/__init__.py
+++ b/cornflow-dags/DAG/rostering/__init__.py
@@ -80,13 +80,44 @@ def test_cases(self) -> List[Union[Dict, Tuple[Dict, Dict]]]:
         )
 
         return [
-            (data_1, data_out1),
-            data_2,
-            (data_3, data_out3),
-            data_4,
-            data_5,
-            data_7,
-            data_8,
+            {
+                "name": "Base case",
+                "instance": data_1,
+                "solution": data_out1,
+                "description": "Base case with a split opening time on one day. "
+                "No skills, no holidays, no downtime, no preferences",
+            },
+            {
+                "name": "Employee downtime",
+                "instance": data_2,
+                "description": "Base case with an employee downtime, no preferences, no skills, no holidays",
+            },
+            {
+                "name": "Employee skills",
+                "instance": data_3,
+                "solution": data_out3,
+                "description": "Base case with skills, no preferences, no holidays, no downtime, no skills",
+            },
+            {
+                "name": "Resting hours",
+                "instance": data_4,
+                "description": "Base case with more opening hours to check the resting hours properly",
+            },
+            {
+                "name": "Store and employee holidays",
+                "instance": data_5,
+                "description": "Base case with store and employee holidays, no downtime, no preferences, no skills",
+            },
+            {
+                "name": "Employee preferences",
+                "instance": data_7,
+                "description": "Base case with preferences, skills, no holidays, no downtime",
+            },
+            {
+                "name": "Requirements deactivated",
+                "instance": data_8,
+                "description": "Base case with everything but deactivated",
+            },
         ]
 
     def get_solver(self, name: str = "mip"):
diff --git a/cornflow-dags/DAG/rostering/core/solution.py b/cornflow-dags/DAG/rostering/core/solution.py
index ad4f3a7af..00b724675 100644
--- a/cornflow-dags/DAG/rostering/core/solution.py
+++ b/cornflow-dags/DAG/rostering/core/solution.py
@@ -4,6 +4,8 @@
 # Imports from libraries
 import os
 import pickle
+from datetime import datetime
+
 from pytups import SuperDict, TupList
 
 # Imports from cornflow libraries
@@ -57,12 +59,18 @@ def get_hours_worked_per_week(self) -> SuperDict:
         Returns a SuperDict with the amount of time slots worked by each employee in each week.
         For example: {(0, 1): 40, ...}
         """
+
+        def get_week_from_datetime_string_wo_seconds(string: str) -> int:
+            """Returns the integer value of the week for the given string"""
+            datetime_object = datetime.strptime(string, "%Y-%m-%dT%H:%M")
+            return datetime_object.isocalendar()[1]
+
         return (
             TupList(
                 {
                     "id_employee": id_employee,
                     "ts": ts,
-                    "week": self.get_week_from_datetime_string(ts),
+                    "week": get_week_from_datetime_string_wo_seconds(ts),
                 }
                 for (id_employee, ts) in self.data["works"]
             )
diff --git a/cornflow-dags/DAG/run_deployed_dags.py b/cornflow-dags/DAG/run_deployed_dags.py
index d2738eb84..3ea91737c 100644
--- a/cornflow-dags/DAG/run_deployed_dags.py
+++ b/cornflow-dags/DAG/run_deployed_dags.py
@@ -29,19 +29,20 @@
 def run_examples(**kwargs):
     with create_session() as session:
         current_examples = {
-            var.key: json.loads(var.get_val())["instance_1"]
+            var.key: json.loads(var.get_val())
             for var in session.query(Variable)
             if "_examples" in var.key
         }
 
-    current_examples = {k: v for k, v in current_examples.items() if v != {}}
+    current_examples = {k: v for k, v in current_examples.items() if v != []}
 
     cf_client = connect_to_cornflow(EnvironmentVariablesBackend())
     executions = []
 
-    for key, instance in current_examples.items():
+    for key, example_list in current_examples.items():
         schema = key.split("z_")[1].split("_examples")[0]
-
+        # TODO: maybe we want to run all available test instances?
+        instance = example_list[0]["instance"]
         try:
             response = cf_client.create_instance(
                 data=instance, name=f"Automatic_instance_run_{schema}", schema=schema
@@ -55,7 +56,7 @@ def run_examples(**kwargs):
 
         instance_id = response["id"]
 
-        config = {"timeLimit": 60, "msg": True, "seconds": 60}
+        config = {"timeLimit": 60, "msg": True}
 
         try:
             response = cf_client.create_execution(
diff --git a/cornflow-dags/DAG/solve_model_dag/__init__.py b/cornflow-dags/DAG/solve_model_dag/__init__.py
index 551dcb6b3..60821e4da 100644
--- a/cornflow-dags/DAG/solve_model_dag/__init__.py
+++ b/cornflow-dags/DAG/solve_model_dag/__init__.py
@@ -11,7 +11,7 @@
 from cornflow_client.constants import (
     SOLUTION_STATUS_FEASIBLE,
     SOLUTION_STATUS_INFEASIBLE,
-    PULP_STATUS_MAPPING
+    PULP_STATUS_MAPPING,
 )
 import cornflow_client.airflow.dag_utilities as utils
 
@@ -54,13 +54,13 @@ def solve(self, options: dict):
         if model.status not in [pl.LpStatusOptimal]:
             return dict(
                 status=PULP_STATUS_MAPPING[model.status],
-                status_sol=SOLUTION_STATUS_INFEASIBLE
+                status_sol=SOLUTION_STATUS_INFEASIBLE,
             )
 
         self.solution = Solution(model.toDict())
         return dict(
             status=PULP_STATUS_MAPPING[model.status],
-            status_sol=SOLUTION_STATUS_FEASIBLE
+            status_sol=SOLUTION_STATUS_FEASIBLE,
         )
 
     def get_objective(self) -> float:
@@ -88,7 +88,14 @@ def test_cases(self) -> List[Dict]:
         prob += x + y <= 5, "c1"
         prob += x + z >= 10, "c2"
         prob += -y + z == 7.5, "c3"
-        return [prob.toDict()]
+
+        return [
+            {
+                "name": "Base case with 3 variables",
+                "instance": prob.toDict(),
+                "description": "Simple MIP with 3 variables",
+            }
+        ]
 
     def get_solver(self, name: str = "default") -> Union[Type[ExperimentCore], None]:
         return PuLPSolve
@@ -96,7 +103,6 @@ def get_solver(self, name: str = "default") -> Union[Type[ExperimentCore], None]
     def solve(
         self, data: dict, config: dict, solution_data: dict = None
     ) -> Tuple[Dict, Union[Dict, None], Union[Dict, None], str, Dict]:
-
         # we overwrite the logPath argument before solving.
         log_path = config["logPath"] = "temp.log"
         algo = PuLPSolve(Instance.from_dict(data), None)
diff --git a/cornflow-dags/DAG/tsp/__init__.py b/cornflow-dags/DAG/tsp/__init__.py
index eaad6ee0a..c4befe6e6 100644
--- a/cornflow-dags/DAG/tsp/__init__.py
+++ b/cornflow-dags/DAG/tsp/__init__.py
@@ -21,4 +21,11 @@ def test_cases(self) -> List[Dict]:
         instance = Instance.from_tsplib_file(
             os.path.join(os.path.dirname(__file__), "data/gr17.tsp")
         )
-        return [instance.to_dict()]
+
+        return [
+            {
+                "name": "Groetschel 17-city problem",
+                "instance": instance.to_dict(),
+                "description": "Example with 17 cities (Groetschel)",
+            }
+        ]
diff --git a/cornflow-dags/DAG/two_dimension_bin_packing/__init__.py b/cornflow-dags/DAG/two_dimension_bin_packing/__init__.py
index 486bc45a5..302b7562c 100644
--- a/cornflow-dags/DAG/two_dimension_bin_packing/__init__.py
+++ b/cornflow-dags/DAG/two_dimension_bin_packing/__init__.py
@@ -24,4 +24,15 @@ def test_cases(self) -> List[Dict]:
             os.path.join(os.path.dirname(__file__), "data/test_instance_2.json")
         )
 
-        return [data1, data2]
+        return [
+            {
+                "name": "example_1",
+                "instance": data1,
+                "description": "Example with 31 objects",
+            },
+            {
+                "name": "example_2",
+                "instance": data2,
+                "description": "Example with 25 objects",
+            },
+        ]
diff --git a/cornflow-dags/DAG/two_dimension_bin_packing/schemas/config.json b/cornflow-dags/DAG/two_dimension_bin_packing/schemas/config.json
index c27170052..aaf26f833 100644
--- a/cornflow-dags/DAG/two_dimension_bin_packing/schemas/config.json
+++ b/cornflow-dags/DAG/two_dimension_bin_packing/schemas/config.json
@@ -7,9 +7,6 @@
       "enum": ["right_corner.cbc", "right_corner.gurobi", "right_corner.scip"],
       "default": "right_corner.cbc"
     },
-    "seconds": {
-      "type": "number"
-    },
     "timeLimit": {
       "type": "number"
     },
diff --git a/cornflow-dags/DAG/two_dimension_bin_packing/solvers/right_corner_model.py b/cornflow-dags/DAG/two_dimension_bin_packing/solvers/right_corner_model.py
index 06808399a..31332d47a 100644
--- a/cornflow-dags/DAG/two_dimension_bin_packing/solvers/right_corner_model.py
+++ b/cornflow-dags/DAG/two_dimension_bin_packing/solvers/right_corner_model.py
@@ -262,7 +262,7 @@ def solve(self, options):
             opt = SolverFactory(solver_name, solver_io="python")
         else:
             opt = SolverFactory(solver_name)
-        opt.options.update(options)
+        opt.options.update(self.get_solver_config(options))
         results = opt.solve(model_instance, tee=options.get("msg"))
 
         if options.get("log"):
diff --git a/cornflow-dags/DAG/update_all_schemas.py b/cornflow-dags/DAG/update_all_schemas.py
index 1ee819994..e2fd60585 100644
--- a/cornflow-dags/DAG/update_all_schemas.py
+++ b/cornflow-dags/DAG/update_all_schemas.py
@@ -3,12 +3,14 @@
 import sys
 from datetime import datetime, timedelta
 from typing import List
+from warnings import warn
 
 from airflow import DAG
 from airflow.models import Variable
 from airflow.operators.python import PythonOperator
 from airflow.utils.db import create_session
 from cornflow_client import ApplicationCore
+from cornflow_client.airflow.dag_utilities import callback_email
 
 default_args = {
     "owner": "baobab",
@@ -35,20 +37,34 @@ def get_new_apps() -> List[ApplicationCore]:
 def import_dags():
     sys.path.append(os.path.dirname(__file__))
     _dir = os.path.dirname(__file__)
-    print("looking for apps in dir={}".format(_dir))
+    print(f"looking for apps in dir={_dir}")
     files = os.listdir(_dir)
-    print("Files are: {}".format(files))
+    print(f"Files are: {files}")
     # we go file by file and try to import it if matches the filters
+    # TODO: here we should implement a .dagignore file to avoid files that could be on the folder
     for dag_module in files:
         filename, ext = os.path.splitext(dag_module)
+
         if ext not in [".py", ""]:
             continue
-        if filename in ["activate_apps"]:
+
+        if filename.startswith(
+            (
+                ".",
+                "__",
+                "scripts",
+                "documentation",
+                "tests",
+                "activate_dags",
+            )
+        ):
             continue
+
         try:
             _import_file(filename)
+            print(f"Imported {filename}")
         except Exception as e:
-            continue
+            raise e
 
 
 def _import_file(filename):
@@ -60,21 +76,21 @@ def get_schemas_dag_file(_module):
     return contents
 
 
-def get_all_schemas():
-    apps = get_new_apps()
+def get_all_schemas(apps):
+    apps_names = [app.name for app in apps]
     if len(apps):
-        print("Found the following apps: {}".format([app.name for app in apps]))
+        print(f"Found the following apps: {apps_names}")
     else:
         print("No apps were found to update")
     schemas_new = {app.name: app.get_schemas() for app in apps}
-    print("Found the following new apps: {}".format([app.name for app in apps]))
+    print(f"Found the following new apps: {apps_names}")
     return schemas_new
 
 
-def get_all_example_data():
-    apps = get_new_apps()
+def get_all_example_data(apps):
+    apps_names = [app.name for app in apps]
     if len(apps):
-        print("Found the following apps: {}".format([app.name for app in apps]))
+        print(f"Found the following apps: {apps_names}")
     else:
         print("No apps were found to update")
     example_data_new = {}
@@ -82,28 +98,32 @@ def get_all_example_data():
     for app in apps:
         tests = app.test_cases
         print(f"App: {app.name} has {len(tests)} examples")
-        n = 1
-        example = dict()
-        for t in tests:
-            if isinstance(t, dict):
-                instance = f"instance_{n}"
-                example[instance] = t
-
-            elif isinstance(t, tuple):
-                instance = f"instance_{n}"
-                solution = f"solution_{n}"
-                example[instance] = t[0]
-                example[solution] = t[1]
-            n = n + 1
+
+        for pos, test in enumerate(tests):
+            if isinstance(test, dict):
+                continue
+
+            elif isinstance(test, tuple):
+                warn(
+                    "The tests as a tuple is no loger supported, please upgrade to the new test cases structure"
+                )
+                temp_example = {
+                    "name": "No available name for the test",
+                    "instance": test[0],
+                    "solution": test[1],
+                }
+                tests[pos] = temp_example
 
         if len(tests) > 0:
-            example_data_new[f"z_{app.name}_examples"] = example
+            example_data_new[f"z_{app.name}_examples"] = tests
 
-    print("Found the following new apps: {}".format([app.name for app in apps]))
+    print(f"Found the following new apps: {apps_names}")
     return example_data_new
 
 
 def update_all_schemas(**kwargs):
+    sys.setrecursionlimit(250)
+
     # first we delete all variables (this helps to keep it clean)
     with create_session() as session:
         current_vars = set(var.key for var in session.query(Variable))
@@ -111,13 +131,15 @@ def update_all_schemas(**kwargs):
             Variable.delete(_var, session)
 
     # we update all schemas that we found:
-    schemas = get_all_schemas()
+    apps = get_new_apps()
+
+    schemas = get_all_schemas(apps)
 
     for key, value in schemas.items():
         Variable.set(key=key, value=value, serialize_json=True)
 
     # we update all examples that we found:
-    example_data = get_all_example_data()
+    example_data = get_all_example_data(apps)
     for key, value in example_data.items():
         Variable.set(key=key, value=value, serialize_json=True)
 
@@ -135,6 +157,7 @@ def update_all_schemas(**kwargs):
     provide_context=True,
     python_callable=update_all_schemas,
     dag=dag,
+    on_failure_callback=callback_email,
 )
 
 
diff --git a/cornflow-dags/DAG/update_dag_registry.py b/cornflow-dags/DAG/update_dag_registry.py
index 909b4576d..c2ee4d01e 100644
--- a/cornflow-dags/DAG/update_dag_registry.py
+++ b/cornflow-dags/DAG/update_dag_registry.py
@@ -1,4 +1,3 @@
-# Partial imports
 from datetime import datetime, timedelta
 
 from airflow import DAG
diff --git a/cornflow-dags/DAG/vrp/__init__.py b/cornflow-dags/DAG/vrp/__init__.py
index ab1e723cd..11833fb47 100644
--- a/cornflow-dags/DAG/vrp/__init__.py
+++ b/cornflow-dags/DAG/vrp/__init__.py
@@ -25,4 +25,11 @@ def test_cases(self) -> List[Dict]:
         data = load_json(
             os.path.join(os.path.dirname(__file__), "data/input_test_1_small.json")
         )
-        return [data]
+
+        return [
+            {
+                "name": "example_1",
+                "instance": data,
+                "description": "Example with 17 nodes",
+            }
+        ]
diff --git a/cornflow-dags/DAG/vrp/solvers/modelMIP.py b/cornflow-dags/DAG/vrp/solvers/modelMIP.py
index 045f3d0ae..8b55f5483 100644
--- a/cornflow-dags/DAG/vrp/solvers/modelMIP.py
+++ b/cornflow-dags/DAG/vrp/solvers/modelMIP.py
@@ -266,14 +266,14 @@ def solve(self, options):
         :return:
         """
         SOLVER_PARAMETERS = dict(
-            sec=options.get("timeLimit", 300),
-            allow=options.get("gapAbs", 1),
-            ratio=options.get("gaPRel", 0.01),
-            tee=options.get("msg", 0),
+            timeLimit=options.get("timeLimit", 360),
+            abs_gap=options.get("abs_gap", 1),
+            rel_gap=options.get("rel_gap", 0.01),
+            solver="cbc"
         )
-
+        SOLVER_PARAMETERS = self.get_solver_config(SOLVER_PARAMETERS)
         mip_vrp = self.get_mip_model()
-        opt = SolverFactory("cbc")
+        opt = SolverFactory("cbc", tee=options.get("msg", 1))
         opt.options.update(SOLVER_PARAMETERS)
         termination_condition = STATUS_NOT_SOLVED
 
diff --git a/cornflow-dags/requirements.txt b/cornflow-dags/requirements.txt
index a67663a50..b29fd9ba3 100644
--- a/cornflow-dags/requirements.txt
+++ b/cornflow-dags/requirements.txt
@@ -1,8 +1,8 @@
-cornflow-client<=1.0.16
+cornflow-client==1.1.0a2
 orloge<=0.17.2
 PuLP<=2.7
 pandas<=2.1.1
-hackathonbaobab2020[solvers] @ git+https://github.com/baobabsoluciones/hackathonbaobab2020@main
+hackathonbaobab2020[solvers]
 pytups<=0.86.2
 ortools<=9.7.2996
 xmltodict<=0.13.0
diff --git a/cornflow-server/.coveragerc b/cornflow-server/.coveragerc
new file mode 100644
index 000000000..2b90a30e1
--- /dev/null
+++ b/cornflow-server/.coveragerc
@@ -0,0 +1,7 @@
+[run]
+omit =
+    */tests/*
+
+[report]
+exclude_also =
+    raise NotImplementedError
\ No newline at end of file
diff --git a/cornflow-server/Dockerfile b/cornflow-server/Dockerfile
index fbf8904a4..851f6e307 100644
--- a/cornflow-server/Dockerfile
+++ b/cornflow-server/Dockerfile
@@ -1,4 +1,4 @@
-# VERSION 1.0.11
+# VERSION 1.1.0
 # AUTHOR: sistemas@baobabsoluciones.es
 
 FROM python:3.10-slim-buster
@@ -9,7 +9,7 @@ ENV DEBIAN_FRONTEND noninteractive
 ENV TERM linux
 
 # CORNFLOW vars
-ARG CORNFLOW_VERSION=1.0.11
+ARG CORNFLOW_VERSION=1.1.0
 
 # install linux pkg
 RUN apt update -y && apt-get install -y --no-install-recommends \
diff --git a/cornflow-server/airflow_config/Dockerfile b/cornflow-server/airflow_config/Dockerfile
index 55f797bac..3a749c59b 100644
--- a/cornflow-server/airflow_config/Dockerfile
+++ b/cornflow-server/airflow_config/Dockerfile
@@ -1,7 +1,7 @@
 # AIRFLOW VERSION 2.9.0
 # AUTHOR: cornflow@baobabsoluciones.es
 # DESCRIPTION: Airflow 2.9.0 image personalized for use with Cornflow (from baobabsoluciones/pysolver image)
-# baobab code version is 1.0.11
+# baobab code version is 1.1.0
 
 FROM baobabsoluciones/pysolver:1.0
 LABEL maintainer="cornflow@baobabsoluciones"
diff --git a/cornflow-server/changelog.rst b/cornflow-server/changelog.rst
index 4f64469b9..7f8af75d4 100644
--- a/cornflow-server/changelog.rst
+++ b/cornflow-server/changelog.rst
@@ -1,3 +1,15 @@
+version 1.1.0
+--------------
+
+- released: 2024-05-22
+- description: new version of cornflow with new features and bug fixes.
+- changelog: 
+  - custom token duration.
+  - fixed errors on login.
+  - added password rotation capabilities.
+  - migrated some deprecated functions on dependencies.
+  - updated documentation.
+
 version 1.0.11
 ---------------
 
diff --git a/cornflow-server/cornflow/cli/service.py b/cornflow-server/cornflow/cli/service.py
index 7c93355ad..711683cc5 100644
--- a/cornflow-server/cornflow/cli/service.py
+++ b/cornflow-server/cornflow/cli/service.py
@@ -14,6 +14,7 @@
     register_deployed_dags_command,
     register_dag_permissions_command,
     update_schemas_command,
+    update_dag_registry_command,
 )
 from cornflow.shared.const import AUTH_DB, ADMIN_ROLE, SERVICE_ROLE
 from cornflow.shared import db
@@ -211,6 +212,9 @@ def init_cornflow_service():
             )
             register_dag_permissions_command(open_deployment, verbose=True)
             update_schemas_command(airflow_url, airflow_user, airflow_pwd, verbose=True)
+            update_dag_registry_command(
+                airflow_url, airflow_user, airflow_pwd, verbose=True
+            )
 
         os.system(
             f"/usr/local/bin/gunicorn -c python:cornflow.gunicorn "
diff --git a/cornflow-server/cornflow/commands/__init__.py b/cornflow-server/cornflow/commands/__init__.py
index cfb2f637f..3cbb02329 100644
--- a/cornflow-server/cornflow/commands/__init__.py
+++ b/cornflow-server/cornflow/commands/__init__.py
@@ -6,7 +6,7 @@
     register_dag_permissions_command,
 )
 from .roles import register_roles_command
-from .schemas import update_schemas_command
+from .schemas import update_schemas_command, update_dag_registry_command
 from .users import (
     create_user_with_role,
     create_service_user_command,
diff --git a/cornflow-server/cornflow/commands/schemas.py b/cornflow-server/cornflow/commands/schemas.py
index 051b8bad3..385c68331 100644
--- a/cornflow-server/cornflow/commands/schemas.py
+++ b/cornflow-server/cornflow/commands/schemas.py
@@ -27,3 +27,34 @@ def update_schemas_command(url, user, pwd, verbose: bool = False):
             current_app.logger.info("The DAGs schemas were not updated properly")
 
     return True
+
+
+def update_dag_registry_command(url, user, pwd, verbose: bool = False):
+    import time
+    from flask import current_app
+
+    from cornflow_client.airflow.api import Airflow
+
+    af_client = Airflow(url, user, pwd)
+    max_attempts = 20
+    attempts = 0
+    while not af_client.is_alive() and attempts < max_attempts:
+        attempts += 1
+        if verbose == 1:
+            current_app.logger.info(f"Airflow is not reachable (attempt {attempts})")
+        time.sleep(15)
+
+    if not af_client.is_alive():
+        if verbose == 1:
+            current_app.logger.info("Airflow is not reachable")
+        return False
+
+    response = af_client.update_dag_registry()
+    if response.status_code == 200:
+        if verbose:
+            current_app.logger.info("DAGs schemas updated on cornflow")
+    else:
+        if verbose:
+            current_app.logger.info("The DAGs schemas were not updated properly")
+
+    return True
diff --git a/cornflow-server/cornflow/config.py b/cornflow-server/cornflow/config.py
index ad3c0c890..75d26e259 100644
--- a/cornflow-server/cornflow/config.py
+++ b/cornflow-server/cornflow/config.py
@@ -76,6 +76,12 @@ class DefaultConfig(object):
     # Alarms endpoints
     ALARMS_ENDPOINTS = os.getenv("CF_ALARMS_ENDPOINT", 0)
 
+    # Token duration in hours
+    TOKEN_DURATION = os.getenv("TOKEN_DURATION", 24)
+
+    # Password rotation time in days
+    PWD_ROTATION_TIME = os.getenv("PWD_ROTATION_TIME", 120)
+
 
 class Development(DefaultConfig):
 
diff --git a/cornflow-server/cornflow/endpoints/__init__.py b/cornflow-server/cornflow/endpoints/__init__.py
index 4011896aa..b5cfc2edc 100644
--- a/cornflow-server/cornflow/endpoints/__init__.py
+++ b/cornflow-server/cornflow/endpoints/__init__.py
@@ -4,8 +4,8 @@
 The login resource gets created on app startup as it depends on configuration
 """
 from .action import ActionListEndpoint
+from .alarms import AlarmsEndpoint
 from .apiview import ApiViewListEndpoint
-
 from .case import (
     CaseEndpoint,
     CaseFromInstanceExecutionEndpoint,
@@ -15,7 +15,6 @@
     CaseToInstance,
     CaseCompare,
 )
-
 from .dag import (
     DAGDetailEndpoint,
     DAGEndpointManual,
@@ -24,7 +23,12 @@
     DeployedDAGEndpoint,
     DeployedDagDetailEndpoint,
 )
-
+from .data_check import (
+    DataCheckExecutionEndpoint,
+    DataCheckInstanceEndpoint,
+    DataCheckCaseEndpoint,
+)
+from .example_data import ExampleDataListEndpoint, ExampleDataDetailEndpoint
 from .execution import (
     ExecutionEndpoint,
     ExecutionDetailsEndpoint,
@@ -33,36 +37,22 @@
     ExecutionLogEndpoint,
     ExecutionRelaunchEndpoint,
 )
-
 from .health import HealthEndpoint
-
 from .instance import (
     InstanceEndpoint,
     InstanceDetailsEndpoint,
     InstanceFileEndpoint,
     InstanceDataEndpoint,
 )
-
-from .data_check import (
-    DataCheckExecutionEndpoint,
-    DataCheckInstanceEndpoint,
-    DataCheckCaseEndpoint,
-)
 from .licenses import LicensesEndpoint
+from .main_alarms import MainAlarmsEndpoint
 from .permission import PermissionsViewRoleEndpoint, PermissionsViewRoleDetailEndpoint
-
 from .roles import RolesListEndpoint, RoleDetailEndpoint
-
 from .schemas import SchemaDetailsEndpoint, SchemaEndpoint
+from .tables import TablesEndpoint, TablesDetailsEndpoint
 from .token import TokenEndpoint
-from .example_data import ExampleDataDetailsEndpoint
 from .user import UserEndpoint, UserDetailsEndpoint, ToggleUserAdmin, RecoverPassword
 from .user_role import UserRoleListEndpoint, UserRoleDetailEndpoint
-from .alarms import AlarmsEndpoint
-from .main_alarms import MainAlarmsEndpoint
-
-from .tables import TablesEndpoint, TablesDetailsEndpoint
-
 
 resources = [
     dict(resource=InstanceEndpoint, urls="/instance/", endpoint="instance"),
@@ -157,10 +147,15 @@
         endpoint="schema-details",
     ),
     dict(
-        resource=ExampleDataDetailsEndpoint,
+        resource=ExampleDataListEndpoint,
         urls="/example/<string:dag_name>/",
         endpoint="example-data",
     ),
+    dict(
+        resource=ExampleDataDetailEndpoint,
+        urls="/example/<string:dag_name>/<string:example_name>/",
+        endpoint="example-data-detail",
+    ),
     dict(resource=HealthEndpoint, urls="/health/", endpoint="health"),
     dict(
         resource=CaseFromInstanceExecutionEndpoint,
diff --git a/cornflow-server/cornflow/endpoints/example_data.py b/cornflow-server/cornflow/endpoints/example_data.py
index 90739ef06..21f27d352 100644
--- a/cornflow-server/cornflow/endpoints/example_data.py
+++ b/cornflow-server/cornflow/endpoints/example_data.py
@@ -1,36 +1,78 @@
 """
 Endpoints to get the example data from a DAG
 """
+import json
 
-# Import from libraries
 from cornflow_client.airflow.api import Airflow
 from flask import current_app, request
 from flask_apispec import marshal_with, doc
-import json
 
-# Import from internal modules
 from cornflow.endpoints.meta_resource import BaseMetaResource
 from cornflow.models import PermissionsDAG
-from cornflow.schemas.example_data import ExampleData
+from cornflow.schemas.example_data import ExampleListData, ExampleDetailData
 from cornflow.shared.authentication import Auth, authenticate
 from cornflow.shared.const import VIEWER_ROLE, PLANNER_ROLE, ADMIN_ROLE
-from cornflow.shared.exceptions import AirflowError, NoPermission
+from cornflow.shared.exceptions import AirflowError, NoPermission, ObjectDoesNotExist
 
 
-class ExampleDataDetailsEndpoint(BaseMetaResource):
+class ExampleDataListEndpoint(BaseMetaResource):
     """
     Endpoint used to obtain schemas for one app
     """
 
     ROLES_WITH_ACCESS = [VIEWER_ROLE, PLANNER_ROLE, ADMIN_ROLE]
 
-    @doc(description="Get example data from DAG", tags=["DAG"])
+    @doc(description="Get lsit of example data from DAG", tags=["DAG"])
     @authenticate(auth_class=Auth())
-    @marshal_with(ExampleData)
+    @marshal_with(ExampleListData(many=True))
     def get(self, dag_name):
         """
         API method to get example data for a given dag
 
+        :return: A dictionary with the names and descriptions of available data examples
+            and an integer with the HTTP status code
+        :rtype: Tuple(dict, integer)
+        """
+        user = Auth().get_user_from_header(request.headers)
+        permission = PermissionsDAG.check_if_has_permissions(
+            user_id=user.id, dag_id=dag_name
+        )
+
+        if permission:
+            af_client = Airflow.from_config(current_app.config)
+            if not af_client.is_alive():
+                current_app.logger.error(
+                    "Airflow not accessible when getting data {}".format(dag_name)
+                )
+                raise AirflowError(error="Airflow is not accessible")
+
+            # try airflow and see if dag_name exists
+            af_client.get_dag_info(dag_name)
+
+            current_app.logger.info("User gets example data from {}".format(dag_name))
+
+            variable_name = f"z_{dag_name}_examples"
+            response = af_client.get_one_variable(variable_name)
+
+            return json.loads(response["value"])
+        else:
+            err = "User does not have permission to access this dag."
+            raise NoPermission(
+                error=err,
+                status_code=403,
+                log_txt=f"Error while user {user} tries to get example data for dag {dag_name}. "
+                + err,
+            )
+
+
+class ExampleDataDetailEndpoint(BaseMetaResource):
+    @doc(description="Get example data from DAG", tags=["DAG"])
+    @authenticate(auth_class=Auth())
+    @marshal_with(ExampleDetailData)
+    def get(self, dag_name, example_name):
+        """
+        API method to get one example data for a given dag
+
         :return: A dictionary with a message and a integer with the HTTP status code
         :rtype: Tuple(dict, integer)
         """
@@ -54,15 +96,24 @@ def get(self, dag_name):
 
             variable_name = f"z_{dag_name}_examples"
             response = af_client.get_one_variable(variable_name)
-            result = dict()
-            result["examples"] = json.loads(response["value"])
-            result["name"] = response["key"]
 
-            return result
+            example = None
+            for item in json.loads(response["value"]):
+                if item["name"] == example_name:
+                    example = item
+                    break
+
+            if example is None:
+                raise ObjectDoesNotExist(
+                    error="The example does not exist", status_code=404
+                )
+
+            return example
         else:
             err = "User does not have permission to access this dag."
             raise NoPermission(
                 error=err,
                 status_code=403,
-                log_txt=f"Error while user {user} tries to get example data for dag {dag_name}. " + err
+                log_txt=f"Error while user {user} tries to get example data for dag {dag_name}. "
+                + err,
             )
diff --git a/cornflow-server/cornflow/endpoints/execution.py b/cornflow-server/cornflow/endpoints/execution.py
index 579eb71dc..af6f3eee5 100644
--- a/cornflow-server/cornflow/endpoints/execution.py
+++ b/cornflow-server/cornflow/endpoints/execution.py
@@ -24,6 +24,7 @@
     ExecutionEditRequest,
     QueryFiltersExecution,
     ReLaunchExecutionRequest,
+    ExecutionDetailsWithIndicatorsAndLogResponse
 )
 from cornflow.shared.authentication import Auth, authenticate
 from cornflow.shared.compress import compressed
@@ -58,7 +59,7 @@ def __init__(self):
 
     @doc(description="Get all executions", tags=["Executions"])
     @authenticate(auth_class=Auth())
-    @marshal_with(ExecutionDetailsEndpointWithIndicatorsResponse(many=True))
+    @marshal_with(ExecutionDetailsWithIndicatorsAndLogResponse(many=True))
     @use_kwargs(QueryFiltersExecution, location="query")
     def get(self, **kwargs):
         """
diff --git a/cornflow-server/cornflow/endpoints/login.py b/cornflow-server/cornflow/endpoints/login.py
index 09adab30d..4bae849d4 100644
--- a/cornflow-server/cornflow/endpoints/login.py
+++ b/cornflow-server/cornflow/endpoints/login.py
@@ -6,10 +6,11 @@
 from flask import current_app
 from flask_apispec import use_kwargs, doc
 from sqlalchemy.exc import IntegrityError, DBAPIError
+from datetime import datetime, timedelta
 
 # Import from internal modules
 from cornflow.endpoints.meta_resource import BaseMetaResource
-from cornflow.models import PermissionsDAG, UserModel, UserRoleModel
+from cornflow.models import UserModel, UserRoleModel
 from cornflow.schemas.user import LoginEndpointRequest, LoginOpenAuthRequest
 from cornflow.shared import db
 from cornflow.shared.authentication import Auth, LDAPBase
@@ -47,9 +48,11 @@ def log_in(self, **kwargs):
         :rtype: dict
         """
         auth_type = current_app.config["AUTH_TYPE"]
+        response = {}
 
         if auth_type == AUTH_DB:
             user = self.auth_db_authenticate(**kwargs)
+            response.update({"change_password": check_last_password_change(user)})
         elif auth_type == AUTH_LDAP:
             user = self.auth_ldap_authenticate(**kwargs)
         elif auth_type == AUTH_OID:
@@ -62,7 +65,9 @@ def log_in(self, **kwargs):
         except Exception as e:
             raise InvalidUsage(f"Error in generating user token: {str(e)}", 400)
 
-        return {"token": token, "id": user.id}, 200
+        response.update({"token": token, "id": user.id})
+
+        return response, 200
 
     def auth_db_authenticate(self, username, password):
         """
@@ -176,6 +181,13 @@ def auth_oid_authenticate(self, token):
         return user
 
 
+def check_last_password_change(user):
+    if user.pwd_last_change:
+        if user.pwd_last_change + timedelta(days=int(current_app.config["PWD_ROTATION_TIME"])) < datetime.utcnow():
+            return True
+    return False
+
+
 class LoginEndpoint(LoginBaseEndpoint):
     """
     Endpoint used to do the login to the cornflow webserver
@@ -198,11 +210,7 @@ def post(self, **kwargs):
         :rtype: Tuple(dict, integer)
         """
 
-        content, status = self.log_in(**kwargs)
-        if int(current_app.config["OPEN_DEPLOYMENT"]) == 1:
-            PermissionsDAG.delete_all_permissions_from_user(content["id"])
-            PermissionsDAG.add_all_permissions_to_user(content["id"])
-        return content, status
+        return self.log_in(**kwargs)
 
 
 class LoginOpenAuthEndpoint(LoginBaseEndpoint):
@@ -218,9 +226,4 @@ def __init__(self):
     @use_kwargs(LoginOpenAuthRequest, location="json")
     def post(self, **kwargs):
         """ """
-
-        content, status = self.log_in(**kwargs)
-        if int(current_app.config["OPEN_DEPLOYMENT"]) == 1:
-            PermissionsDAG.delete_all_permissions_from_user(content["id"])
-            PermissionsDAG.add_all_permissions_to_user(content["id"])
-        return content, status
+        return self.log_in(**kwargs)
diff --git a/cornflow-server/cornflow/endpoints/user.py b/cornflow-server/cornflow/endpoints/user.py
index e347af7f5..6822a8687 100644
--- a/cornflow-server/cornflow/endpoints/user.py
+++ b/cornflow-server/cornflow/endpoints/user.py
@@ -170,7 +170,7 @@ def put(self, user_id, **data):
                 f"To edit a user, go to the OID provider.",
             )
 
-        if data.get("password"):
+        if data.get("password") is not None:
             check, msg = check_password_pattern(data.get("password"))
             if not check:
                 raise InvalidCredentials(
@@ -179,7 +179,7 @@ def put(self, user_id, **data):
                     f"The new password is not valid.",
                 )
 
-        if data.get("email"):
+        if data.get("email") is not None:
             check, msg = check_email_pattern(data.get("email"))
             if not check:
                 raise InvalidCredentials(
diff --git a/cornflow-server/cornflow/migrations/versions/991b98e24225_.py b/cornflow-server/cornflow/migrations/versions/991b98e24225_.py
new file mode 100644
index 000000000..ee865f187
--- /dev/null
+++ b/cornflow-server/cornflow/migrations/versions/991b98e24225_.py
@@ -0,0 +1,33 @@
+"""
+Added pwd_last_change column to users table
+
+Revision ID: 991b98e24225
+Revises: ebdd955fcc5e
+Create Date: 2024-01-31 19:17:18.009264
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = "991b98e24225"
+down_revision = "ebdd955fcc5e"
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    with op.batch_alter_table("users", schema=None) as batch_op:
+        batch_op.add_column(sa.Column("pwd_last_change", sa.DateTime(), nullable=True))
+
+    # ### end Alembic commands ###
+
+
+def downgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    with op.batch_alter_table("users", schema=None) as batch_op:
+        batch_op.drop_column("pwd_last_change")
+
+    # ### end Alembic commands ###
diff --git a/cornflow-server/cornflow/models/user.py b/cornflow-server/cornflow/models/user.py
index 4b1f185a1..069cef37b 100644
--- a/cornflow-server/cornflow/models/user.py
+++ b/cornflow-server/cornflow/models/user.py
@@ -4,6 +4,7 @@
 # Imports from external libraries
 import random
 import string
+from datetime import datetime
 
 # Imports from internal modules
 from cornflow.models.meta_models import TraceAttributesModel
@@ -51,6 +52,7 @@ class UserModel(TraceAttributesModel):
     last_name = db.Column(db.String(128), nullable=True)
     username = db.Column(db.String(128), nullable=False, unique=True)
     password = db.Column(db.String(128), nullable=True)
+    pwd_last_change = db.Column(db.DateTime, nullable=True)
     email = db.Column(db.String(128), nullable=False, unique=True)
 
     user_roles = db.relationship(
@@ -93,6 +95,7 @@ def __init__(self, data):
         self.first_name = data.get("first_name")
         self.last_name = data.get("last_name")
         self.username = data.get("username")
+        self.pwd_last_change = datetime.utcnow()
         # TODO: handle better None passwords that can be found when using ldap
         check_pass, msg = check_password_pattern(data.get("password"))
         if check_pass:
@@ -123,6 +126,7 @@ def update(self, data):
         if new_password:
             new_password = self.__generate_hash(new_password)
             data["password"] = new_password
+            data["pwd_last_change"] = datetime.utcnow()
         super().update(data)
 
     def comes_from_external_provider(self):
diff --git a/cornflow-server/cornflow/schemas/example_data.py b/cornflow-server/cornflow/schemas/example_data.py
index ed8a8f8ab..03450fbb2 100644
--- a/cornflow-server/cornflow/schemas/example_data.py
+++ b/cornflow-server/cornflow/schemas/example_data.py
@@ -1,6 +1,11 @@
 from marshmallow import fields, Schema
 
 
-class ExampleData(Schema):
+class ExampleListData(Schema):
     name = fields.Str(required=True)
-    examples = fields.Raw(required=True)
+    description = fields.Str(required=False)
+
+
+class ExampleDetailData(ExampleListData):
+    instance = fields.Raw(required=True)
+    solution = fields.Raw(required=False)
diff --git a/cornflow-server/cornflow/schemas/execution.py b/cornflow-server/cornflow/schemas/execution.py
index cd48c5776..8b74aa95a 100644
--- a/cornflow-server/cornflow/schemas/execution.py
+++ b/cornflow-server/cornflow/schemas/execution.py
@@ -4,7 +4,7 @@
 # Imports from internal modules
 from cornflow.shared.const import MIN_EXECUTION_STATUS_CODE, MAX_EXECUTION_STATUS_CODE
 from .common import QueryFilters, BaseDataEndpointResponse
-from .solution_log import LogSchema
+from .solution_log import LogSchema, BasicLogSchema
 
 
 class QueryFiltersExecution(QueryFilters):
@@ -114,6 +114,12 @@ def get_indicators(self, obj):
     indicators = fields.Method("get_indicators")
 
 
+class ExecutionDetailsWithIndicatorsAndLogResponse(
+    ExecutionDetailsEndpointWithIndicatorsResponse
+):
+    log = fields.Nested(BasicLogSchema, attribute="log_json")
+
+
 class ExecutionStatusEndpointResponse(Schema):
     id = fields.Str()
     state = fields.Int()
@@ -129,6 +135,7 @@ class ExecutionStatusEndpointUpdate(Schema):
 class ExecutionDataEndpointResponse(ExecutionDetailsEndpointResponse):
     data = fields.Raw()
     checks = fields.Raw()
+    log = fields.Nested(BasicLogSchema, attribute="log_json")
 
 
 class ExecutionLogEndpointResponse(ExecutionDetailsEndpointWithIndicatorsResponse):
diff --git a/cornflow-server/cornflow/schemas/solution_log.py b/cornflow-server/cornflow/schemas/solution_log.py
index ddf31eaa2..3958325b0 100644
--- a/cornflow-server/cornflow/schemas/solution_log.py
+++ b/cornflow-server/cornflow/schemas/solution_log.py
@@ -1,4 +1,4 @@
-from marshmallow import fields, Schema
+from marshmallow import fields, Schema, EXCLUDE
 
 options = dict(required=True, allow_none=True)
 log_options = dict(required=False, allow_none=True)
@@ -49,10 +49,18 @@ class FirstSolution(Schema):
     CutsBestBound = fields.Float(**options)
 
 
-class LogSchema(Schema):
+class BasicLogSchema(Schema):
+    status = fields.Str(**log_options)
+    status_code = fields.Int(**log_options)
+    sol_code = fields.Int(**log_options)
+
+
+class LogSchema(BasicLogSchema):
+    class Meta:
+        unknown = EXCLUDE
+
     version = fields.Str(**log_options)
     solver = fields.Str(**log_options)
-    status = fields.Str(**log_options)
     best_bound = fields.Float(**log_options)
     best_solution = fields.Float(**log_options)
     gap = fields.Float(**log_options)
@@ -63,8 +71,6 @@ class LogSchema(Schema):
     presolve = fields.Nested(PresolveSchema, **log_options)
     first_relaxed = fields.Float(**log_options)
     first_solution = fields.Nested(FirstSolution, **log_options)
-    status_code = fields.Int(**log_options)
-    sol_code = fields.Int(**log_options)
     nodes = fields.Int(**log_options)
     progress = fields.Nested(ProgressSchema, required=False)
     cut_info = fields.Raw(**log_options)
diff --git a/cornflow-server/cornflow/schemas/user.py b/cornflow-server/cornflow/schemas/user.py
index 8a4f568a5..95c0726e8 100644
--- a/cornflow-server/cornflow/schemas/user.py
+++ b/cornflow-server/cornflow/schemas/user.py
@@ -25,6 +25,7 @@ class UserEndpointResponse(Schema):
     last_name = fields.Str()
     email = fields.Str()
     created_at = fields.Str()
+    pwd_last_change = fields.Str()
 
 
 class UserDetailsEndpointResponse(Schema):
@@ -33,6 +34,7 @@ class UserDetailsEndpointResponse(Schema):
     last_name = fields.Str()
     username = fields.Str()
     email = fields.Str()
+    pwd_last_change = fields.Str()
 
 
 class TokenEndpointResponse(Schema):
@@ -49,6 +51,7 @@ class UserEditRequest(Schema):
     last_name = fields.Str(required=False)
     email = fields.Str(required=False)
     password = fields.Str(required=False)
+    pwd_last_change = fields.DateTime(required=False)
 
 
 class LoginEndpointRequest(Schema):
diff --git a/cornflow-server/cornflow/shared/authentication/auth.py b/cornflow-server/cornflow/shared/authentication/auth.py
index 1fac35f39..ce49de02b 100644
--- a/cornflow-server/cornflow/shared/authentication/auth.py
+++ b/cornflow-server/cornflow/shared/authentication/auth.py
@@ -103,7 +103,7 @@ def generate_token(user_id: int = None) -> str:
             )
 
         payload = {
-            "exp": datetime.utcnow() + timedelta(days=1),
+            "exp": datetime.utcnow() + timedelta(hours=float(current_app.config["TOKEN_DURATION"])),
             "iat": datetime.utcnow(),
             "sub": user_id,
         }
diff --git a/cornflow-server/cornflow/shared/licenses.py b/cornflow-server/cornflow/shared/licenses.py
index 3186d7d44..394f4fc47 100644
--- a/cornflow-server/cornflow/shared/licenses.py
+++ b/cornflow-server/cornflow/shared/licenses.py
@@ -1,63 +1,21 @@
-import pkg_resources
+import importlib.metadata as metadata
 
 
-def get_license_txt(pkg):
-    if pkg.has_metadata("LICENSE"):
-        lic = pkg.get_metadata("LICENSE")
-    else:
-        lic = "(license detail not found)"
-    return lic
-
-
-def get_info(name, lines):
+def get_info(name, pkg):
     """
-    Search information in a list of lines.
+    Search information in a package metadata.
     The expected format of the line is "name: info"
-    This function search the name and return the info.
+    This function searches for the name and returns the info.
 
-    :param name: name to be search at the beginning of a line.
-    :param lines: list of strings.
+    :param name: name to be searched.
+    :param pkg: a dictionary representing the package metadata.
     :return: the info part of the line for the given name.
     """
-    sep = name + ": "
-    for line in lines:
-        if line.startswith(sep):
-            return line.split(sep, maxsplit=1)[1]
+    if name in pkg:
+        return pkg[name]
     return f"({name} not found)"
 
 
-def get_main_info(pkg):
-    """
-    Get information from libraries.
-
-    :param pkg: a package object from pkg_resources.working_set
-    :return: a dict with library, license, version, author, description and home page.
-    """
-    lines1 = []
-    lines2 = []
-    # Find info in metadata
-    if pkg.has_metadata("METADATA"):
-        lines1 = pkg.get_metadata_lines("METADATA")
-    # find info in PKG-INFO
-    if pkg.has_metadata("PKG-INFO"):
-        lines2 = pkg.get_metadata_lines("PKG-INFO")
-    # Transform lines into list
-    lines = [l for l in lines1] + [l for l in lines2]
-
-    # Manage case where license is UNKNOWN
-    lic = get_info("License", lines)
-    if lic == "UNKNOWN":
-        lic = get_info("Classifier: License :", lines)
-    return {
-        "library": get_info("Name", lines),
-        "license": lic,
-        "version": get_info("Version", lines),
-        "author": get_info("Author", lines),
-        "description": get_info("Summary", lines),
-        "home page": get_info("Home-page", lines),
-    }
-
-
 def get_licenses_summary():
     """
     Get a list of dicts with licenses and library information.
@@ -65,12 +23,17 @@ def get_licenses_summary():
     :return: a list of dicts with library, license, version, author, description, home page and license text.
     """
     license_list = []
-    # TODO: pkg_resources.working_set is deprecated, find a better way to get the list of packages
-    for pkg in sorted(pkg_resources.working_set, key=lambda x: str(x).lower()):
+    for pkg in sorted(metadata.distributions(), key=lambda x: x.metadata['Name'].lower()):
+        pkg_metadata = dict(pkg.metadata.items())
         license_list += [
             {
-                **get_main_info(pkg),
-                "license_text": get_license_txt(pkg),
+                "library": get_info("Name", pkg_metadata),
+                "license": get_info("License", pkg_metadata),
+                "version": get_info("Version", pkg_metadata),
+                "author": get_info("Author", pkg_metadata),
+                "description": get_info("Summary", pkg_metadata),
+                "home page": get_info("Home-page", pkg_metadata),
             }
         ]
+
     return license_list
diff --git a/cornflow-server/requirements.txt b/cornflow-server/requirements.txt
index 1d5221f71..0024e1b09 100644
--- a/cornflow-server/requirements.txt
+++ b/cornflow-server/requirements.txt
@@ -1,7 +1,7 @@
 alembic==1.9.2
 apispec<=6.2.0
 click<=8.1.3
-cornflow-client<=1.0.16
+cornflow-client==1.1.0a2
 cryptography<=42.0.5
 disposable-email-domains>=0.0.86
 Flask==2.3.2
diff --git a/cornflow-server/setup.py b/cornflow-server/setup.py
index a97903177..c64649c0f 100644
--- a/cornflow-server/setup.py
+++ b/cornflow-server/setup.py
@@ -9,7 +9,7 @@
 
 setuptools.setup(
     name="cornflow",
-    version="1.0.11",
+    version="1.1.0",
     author="baobab soluciones",
     author_email="cornflow@baobabsoluciones.es",
     description="Cornflow is an open source multi-solver optimization server with a REST API built using flask.",
diff --git a/docker-compose-cornflow-celery.yml b/docker-compose-cornflow-celery.yml
index 208f47559..030ba7a6f 100644
--- a/docker-compose-cornflow-celery.yml
+++ b/docker-compose-cornflow-celery.yml
@@ -30,7 +30,7 @@ x-airflow-common:
   &airflow-common
   # In order to add custom dependencies or upgrade provider packages you can use your extended image.
   # Comment the image line and uncomment the "build" and "context" lines below, Then run `docker-compose build` to build the images.
-    image: baobabsoluciones/airflow:release-v1.0.11
+    image: baobabsoluciones/airflow:release-v1.1.0
     platform: linux/amd64
     #build: 
     #context: ./cornflow-server/airflow_config
@@ -64,7 +64,7 @@ x-cornflow-common:
   &cornflow-common
   # In order to add custom dependencies or upgrade provider packages you can use your extended image.
   # Comment the image line and uncomment the "build" and "context" lines below, Then run `docker-compose build` to build the images.
-    image: baobabsoluciones/cornflow:release-v1.0.11
+    image: baobabsoluciones/cornflow:release-v1.1.0
     platform: linux/amd64
     #build: 
     #context: ./cornflow-server
diff --git a/docker-compose-cornflow-ldap.yml b/docker-compose-cornflow-ldap.yml
index 36e6e3876..73ef0d3d6 100644
--- a/docker-compose-cornflow-ldap.yml
+++ b/docker-compose-cornflow-ldap.yml
@@ -31,7 +31,7 @@ x-airflow-common:
   &airflow-common
   # In order to add custom dependencies or upgrade provider packages you can use your extended image.
   # Comment the image line and uncomment the "build" and "context" lines below, Then run `docker-compose build` to build the images.
-    image: baobabsoluciones/airflow:release-v1.0.11
+    image: baobabsoluciones/airflow:release-v1.1.0
     platform: linux/amd64
     #build: 
     #context: ./cornflow-server/airflow_config
@@ -68,7 +68,7 @@ x-cornflow-common:
   &cornflow-common
   # In order to add custom dependencies or upgrade provider packages you can use your extended image.
   # Comment the image line and uncomment the "build" and "context" lines below, Then run `docker-compose build` to build the images.
-    image: baobabsoluciones/cornflow:release-v1.0.8
+    image: baobabsoluciones/cornflow:release-v1.1.0
     platform: linux/amd64
     #build: 
     #context: ./cornflow-server
diff --git a/docker-compose.yml b/docker-compose.yml
index 143182087..b662b0611 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -30,7 +30,7 @@ x-airflow-common:
   &airflow-common
   # In order to add custom dependencies or upgrade provider packages you can use your extended image.
   # Comment the image line and uncomment the "build" and "context" lines below, Then run `docker-compose build` to build the images.
-    image: baobabsoluciones/airflow:release-v1.0.11
+    image: baobabsoluciones/airflow:release-v1.1.0
     platform: linux/amd64
     #build: 
     #context: ./cornflow-server/airflow_config
@@ -60,7 +60,7 @@ x-cornflow-common:
   &cornflow-common
   # In order to add custom dependencies or upgrade provider packages you can use your extended image.
   # Comment the image line and uncomment the "build" and "context" lines below, Then run `docker-compose build` to build the images.
-    image: baobabsoluciones/cornflow:release-v1.0.11
+    image: baobabsoluciones/cornflow:release-v1.1.0
     platform: linux/amd64
     #build: 
     #context: ./cornflow-server
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 117edf99a..1eaecbb06 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -27,7 +27,7 @@
 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
 extensions = [
     "sphinx.ext.autodoc",
-    "sphinx.ext.doctest",    
+    "sphinx.ext.doctest",
     "sphinx.ext.todo",
     "sphinx.ext.coverage",
     "sphinx.ext.ifconfig",
@@ -66,10 +66,10 @@
 import cornflow_client
 
 
-release = "1.0.11"
+release = "1.1.0"
 # The short X.Y version.
 # version = release[:3]
-version = "1.0.11"
+version = "1.1.0"
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/libs/client/.coveragerc b/libs/client/.coveragerc
new file mode 100644
index 000000000..2b90a30e1
--- /dev/null
+++ b/libs/client/.coveragerc
@@ -0,0 +1,7 @@
+[run]
+omit =
+    */tests/*
+
+[report]
+exclude_also =
+    raise NotImplementedError
\ No newline at end of file
diff --git a/libs/client/changelog.rst b/libs/client/changelog.rst
index f741ec520..5afa33865 100644
--- a/libs/client/changelog.rst
+++ b/libs/client/changelog.rst
@@ -1,3 +1,13 @@
+version 1.1.0
+--------------
+
+- released: 2024-05-22
+- description: Changed the way test cases are stored
+- changelog:
+  - changed the way test cases are stored.
+  - changed what the log stores when solverolving the application.
+
+
 version 1.0.16
 ---------------
 
diff --git a/libs/client/cornflow_client/airflow/dag_utilities.py b/libs/client/cornflow_client/airflow/dag_utilities.py
index 741b148e6..a0bd5d984 100644
--- a/libs/client/cornflow_client/airflow/dag_utilities.py
+++ b/libs/client/cornflow_client/airflow/dag_utilities.py
@@ -1,19 +1,14 @@
 """
 
 """
-# Full imports
+
 import json
-import logging
 import os
-
-# Partial imports
 from datetime import datetime, timedelta
 from urllib.parse import urlparse, urljoin
 
-# Imports from modules
 from cornflow_client import CornFlow, CornFlowApiError
 
-
 # TODO: convert everything to an object that encapsulates everything
 #  to make it clear and avoid all the arguments.
 # class DagApp(object):
@@ -44,6 +39,7 @@
 
 
 def get_schemas_from_file(_dir, dag_name):
+    # TODO: check if in use
     with open(os.path.join(_dir, dag_name + "_input.json"), "r") as f:
         instance = json.load(f)
     with open(os.path.join(_dir, dag_name + "_output.json"), "r") as f:
@@ -58,6 +54,7 @@ def get_requirements(path):
     :param path: The path of the project
     :return: A list of required packages
     """
+    # TODO: check if in use
     req_path = f"{path}/requirements.txt"
 
     try:
@@ -151,6 +148,7 @@ def try_to_write_solution(client, exec_id, payload):
 
 
 def get_schema(dag_name):
+    # TODO: check if in use
     _file = os.path.join(os.path.dirname(__file__), f"{dag_name}_output.json")
     with open(_file, "r") as f:
         schema = json.load(f)
diff --git a/libs/client/cornflow_client/core/application.py b/libs/client/cornflow_client/core/application.py
index 6230b9d9d..a12c791fd 100644
--- a/libs/client/cornflow_client/core/application.py
+++ b/libs/client/cornflow_client/core/application.py
@@ -3,23 +3,16 @@
 """
 # Partial imports
 from abc import ABC, abstractmethod
-from jsonschema import Draft7Validator
-from pytups import SuperDict
 from timeit import default_timer as timer
 from typing import Type, Dict, List, Tuple, Union
 
-# Imports from internal modules
-from .instance import InstanceCore
-from .solution import SolutionCore
-from .experiment import ExperimentCore
+from jsonschema import Draft7Validator
+from pytups import SuperDict
 
 from cornflow_client.constants import (
     STATUS_CONV,
     STATUS_OPTIMAL,
-    STATUS_NOT_SOLVED,
     STATUS_INFEASIBLE,
-    STATUS_UNDEFINED,
-    STATUS_TIME_LIMIT,
     SOLUTION_STATUS_FEASIBLE,
     SOLUTION_STATUS_INFEASIBLE,
     NoSolverException,
@@ -27,12 +20,18 @@
     BadSolution,
     BadInstance,
 )
+from .experiment import ExperimentCore
+
+# Imports from internal modules
+from .instance import InstanceCore
+from .solution import SolutionCore
 
 
 class ApplicationCore(ABC):
     """
     The application template.
     """
+
     # We create a new attribute controlling the use of the notification mail function
     def __init__(self):
         self._notify = False
@@ -110,7 +109,9 @@ def schema(self) -> dict:
 
     @property
     @abstractmethod
-    def test_cases(self) -> List[Union[Dict, Tuple[Dict, Dict]]]:
+    def test_cases(
+        self,
+    ) -> Union[List[Dict[str, Union[str, Dict]]], List[Union[Dict, Tuple[Dict, Dict]]]]:
         """
         Mandatory property
 
@@ -119,7 +120,15 @@ def test_cases(self) -> List[Union[Dict, Tuple[Dict, Dict]]]:
 
           * **dict**: each element is an instance
           * **tuple**: the first part is the instance, the second its solution
+
+          it can also return a list of dicts, where the keys are:
+
+          * **name**: name of the test case.
+          * **description** optional field with a description of the test case.
+          * **instance**: the instance data.
+          * **solution**: the solution data (optional)
         """
+        # TODO: Phase out older list implementation
         raise NotImplementedError()
 
     @property
@@ -154,6 +163,7 @@ def solve(
         if solver is None:
             solver = self.get_default_solver_name()
         solver_class = self.get_solver(name=solver)
+        # TODO: I think this exception is unreachable
         if solver_class is None:
             raise NoSolverException(f"Solver {solver} is not available")
         inst = self.instance.from_dict(data)
@@ -196,13 +206,17 @@ def solve(
             output = dict(status=output)
         status = output.get("status")
         status_sol = output.get("status_sol")
-        log = dict(
-            time=timer() - start,
-            solver=solver,
-            status=STATUS_CONV.get(status, "Unknown"),
-            status_code=status,
-            sol_code=SOLUTION_STATUS_INFEASIBLE,
-        )
+
+        log_json = {
+            **output,
+            **{
+                "time": timer() - start,
+                "solver": solver,
+                "status": STATUS_CONV.get(status, "Unknown"),
+                "status_code": status,
+                "sol_code": SOLUTION_STATUS_INFEASIBLE,
+            },
+        }
 
         try:
             log_txt = algo.log
@@ -214,11 +228,11 @@ def solve(
         #  because there may be already an initial solution in the solver
         # TODO: review whole status types and meaning
         if status_sol is not None:
-            log["sol_code"] = status_sol
+            log_json["sol_code"] = status_sol
         elif algo.solution is not None and len(algo.solution.data):
-            log["sol_code"] = SOLUTION_STATUS_FEASIBLE
+            log_json["sol_code"] = SOLUTION_STATUS_FEASIBLE
 
-        if log["sol_code"] > 0:
+        if log_json["sol_code"] > 0:
             sol = algo.solution.to_dict()
 
         if sol != {} and sol is not None:
@@ -226,7 +240,7 @@ def solve(
         else:
             checks = None
 
-        return sol, checks, instance_checks, log_txt, log
+        return sol, checks, instance_checks, log_txt, log_json
 
     def check(
         self, instance_data: dict, solution_data: dict, *args, **kwargs
diff --git a/libs/client/cornflow_client/core/experiment.py b/libs/client/cornflow_client/core/experiment.py
index ae466aacf..9676e9ded 100644
--- a/libs/client/cornflow_client/core/experiment.py
+++ b/libs/client/cornflow_client/core/experiment.py
@@ -1,15 +1,16 @@
 """
 
 """
-# Partial imports
+
 from abc import ABC, abstractmethod
 from typing import Union, Dict
 
-# Imports from internal modules
+from cornflow_client.constants import (
+    PARAMETER_SOLVER_TRANSLATING_MAPPING,
+    SOLVER_CONVERTER,
+)
 from .instance import InstanceCore
 from .solution import SolutionCore
-from .tools import copy
-from cornflow_client.constants import PARAMETER_SOLVER_TRANSLATING_MAPPING, SOLVER_CONVERTER
 
 
 class ExperimentCore(ABC):
@@ -85,7 +86,9 @@ def schema_checks(self) -> dict:
         raise NotImplementedError()
 
     @staticmethod
-    def get_solver_config(config, lib="pyomo", default_solver="cbc", remove_unknown=False):
+    def get_solver_config(
+        config, lib="pyomo", default_solver="cbc", remove_unknown=False
+    ):
         """
         Format the configuration used to solve the problem.
         Solver configuration can either be directly in config using cornflow mapping name
@@ -122,7 +125,9 @@ def get_solver_config(config, lib="pyomo", default_solver="cbc", remove_unknown=
 
         if remove_unknown:
             conf = {
-                mapping[k, lib, solver]: v for k, v in config.items() if (k, lib, solver) in mapping
+                mapping[k, lib, solver]: v
+                for k, v in config.items()
+                if (k, lib, solver) in mapping
             }
             if config.get("solver_config"):
                 conf.update(
@@ -133,9 +138,7 @@ def get_solver_config(config, lib="pyomo", default_solver="cbc", remove_unknown=
                     }
                 )
         else:
-            conf = {
-                mapping.get((k, lib, solver), k): v for k, v in config.items()
-            }
+            conf = {mapping.get((k, lib, solver), k): v for k, v in config.items()}
             conf.pop("solver", None)
             conf.pop("solver_config", None)
             if config.get("solver_config"):
diff --git a/libs/client/cornflow_client/core/instance.py b/libs/client/cornflow_client/core/instance.py
index 8f2309378..ca54c2024 100644
--- a/libs/client/cornflow_client/core/instance.py
+++ b/libs/client/cornflow_client/core/instance.py
@@ -1,10 +1,9 @@
 """
 
 """
-# Partial imports
+
 from abc import ABC, abstractmethod
 
-# Imports from internal modules
 from .instance_solution import InstanceSolutionCore
 
 
diff --git a/libs/client/cornflow_client/core/instance_solution.py b/libs/client/cornflow_client/core/instance_solution.py
index f856606cb..55d75db09 100644
--- a/libs/client/cornflow_client/core/instance_solution.py
+++ b/libs/client/cornflow_client/core/instance_solution.py
@@ -1,18 +1,16 @@
 """
 
 """
-# Full imports
-import json
 
-# Partial imports
+import json
 from abc import ABC, abstractmethod
+from datetime import datetime, timedelta
+from typing import List
+
 from genson import SchemaBuilder
 from jsonschema import Draft7Validator
 from pytups import SuperDict
-from typing import List
-from datetime import datetime, timedelta
 
-# Imports from internal modules
 from .read_tools import read_excel, is_xl_type
 
 
@@ -335,22 +333,42 @@ def add_time_to_ts(ts: datetime, weeks=0, days=0, minutes=0, seconds=0) -> datet
         return ts + timedelta(days=7 * weeks + days, minutes=minutes, seconds=seconds)
 
     @staticmethod
-    def add_time_to_date_string(string: str, weeks=0, days=0, minutes=0, seconds=0) -> str:
+    def add_time_to_date_string(
+        string: str, weeks=0, days=0, minutes=0, seconds=0
+    ) -> str:
         """Adds time to a date string"""
         date = datetime.strptime(string, "%Y-%m-%d").date()
-        return (date + timedelta(days=7 * weeks + days, minutes=minutes, seconds=seconds)).strftime("%Y-%m-%d")
+        return (
+            date + timedelta(days=7 * weeks + days, minutes=minutes, seconds=seconds)
+        ).strftime("%Y-%m-%d")
 
     @staticmethod
-    def add_time_to_datetime_string(string: str, weeks=0, days=0, minutes=0, seconds=0) -> str:
+    def add_time_to_datetime_string(
+        string: str, weeks=0, days=0, minutes=0, seconds=0
+    ) -> str:
         """Adds time to a datetime"""
         datetime_object = datetime.strptime(string, "%Y-%m-%dT%H:%M:%S")
-        return (datetime_object + timedelta(days=7 * weeks + days, minutes=minutes, seconds=seconds)).strftime("%Y-%m-%dT%H:%M:%S")
+        return (
+            datetime_object
+            + timedelta(days=7 * weeks + days, minutes=minutes, seconds=seconds)
+        ).strftime("%Y-%m-%dT%H:%M:%S")
 
     @staticmethod
-    def add_time_to_datetimesec_string(string: str, weeks=0, days=0, hours=0, minutes=0, seconds=0) -> str:
+    def add_time_to_datetimesec_string(
+        string: str, weeks=0, days=0, hours=0, minutes=0, seconds=0
+    ) -> str:
         """Adds time to a datetime"""
         datetime_object = datetime.strptime(string, "%Y-%m-%dT%H:%M:%S")
-        return (datetime_object + timedelta(weeks=weeks, days=7 * weeks + days, hours=hours, minutes=minutes, seconds=seconds)).strftime("%Y-%m-%dT%H:%M:%S")
+        return (
+            datetime_object
+            + timedelta(
+                weeks=weeks,
+                days=7 * weeks + days,
+                hours=hours,
+                minutes=minutes,
+                seconds=seconds,
+            )
+        ).strftime("%Y-%m-%dT%H:%M:%S")
 
     @staticmethod
     def get_week_from_ts(ts: datetime) -> int:
@@ -383,29 +401,29 @@ def get_weekday_from_ts(ts: datetime) -> int:
     @staticmethod
     def get_weekday_from_date_string(string: str) -> int:
         """Returns the number of the weekday from a date string in format 'YYYY-MM-DD'"""
-        date = datetime.strptime(string, '%Y-%m-%d').date()
+        date = datetime.strptime(string, "%Y-%m-%d").date()
         return date.isocalendar()[2]
 
     @staticmethod
     def get_weekday_from_datetime_string(string: str) -> int:
         """Returns the number of the weekday from a date string in format 'YYYY-MM-DDTh:m'"""
-        datetime_obj = datetime.strptime(string, '%Y-%m-%dT%H:%M:%S')
+        datetime_obj = datetime.strptime(string, "%Y-%m-%dT%H:%M:%S")
         return datetime_obj.isocalendar()[2]
 
     @staticmethod
     def get_weekday_from_datetimesec_string(string: str) -> int:
         """Returns the number of the weekday from a date string in format 'YYYY-MM-DDT:h:m:s'"""
-        datetime_obj = datetime.strptime(string, '%Y-%m-%dT%H:%M:%S')
+        datetime_obj = datetime.strptime(string, "%Y-%m-%dT%H:%M:%S")
         return datetime_obj.isocalendar()[2]
 
     @staticmethod
     def get_hour_from_datetime_string(string: str) -> float:
         """Returns the integer value of the hour (in number) from ts string in format 'YYYY-MM-DDTh:m'"""
-        datetime_obj = datetime.strptime(string, '%Y-%m-%dT%H:%M:%S')
+        datetime_obj = datetime.strptime(string, "%Y-%m-%dT%H:%M:%S")
         return datetime_obj.hour
 
     @staticmethod
     def get_hour_from_datetimesec_string(string: str) -> float:
         """Returns the integer value of the hour (in number) from ts string in format 'YYYY-MM-DDTh:m:s'"""
-        datetime_obj = datetime.strptime(string, '%Y-%m-%dT%H:%M:%S')
+        datetime_obj = datetime.strptime(string, "%Y-%m-%dT%H:%M:%S")
         return datetime_obj.hour
diff --git a/libs/client/cornflow_client/core/read_tools.py b/libs/client/cornflow_client/core/read_tools.py
index 5e1c0bef5..ad48c0165 100644
--- a/libs/client/cornflow_client/core/read_tools.py
+++ b/libs/client/cornflow_client/core/read_tools.py
@@ -1,12 +1,11 @@
 """
 
 """
-# Full imports
+
 import math
+import numbers
 
-# Partial imports
 from pytups import TupList, SuperDict
-import numbers
 
 
 def read_excel(
diff --git a/libs/client/cornflow_client/core/solution.py b/libs/client/cornflow_client/core/solution.py
index 3df0390b9..a6b4a07a9 100644
--- a/libs/client/cornflow_client/core/solution.py
+++ b/libs/client/cornflow_client/core/solution.py
@@ -1,10 +1,9 @@
 """
 
 """
-# Partial imports
+
 from abc import ABC
 
-# Imports from internal modules
 from .instance_solution import InstanceSolutionCore
 
 
diff --git a/libs/client/cornflow_client/core/tools.py b/libs/client/cornflow_client/core/tools.py
index aeda6aff2..290a4b1d2 100644
--- a/libs/client/cornflow_client/core/tools.py
+++ b/libs/client/cornflow_client/core/tools.py
@@ -1,11 +1,10 @@
 """
 
 """
-# Full imports
+
 import json
 import pickle
 
-# Partial imports
 from pytups import OrderSet
 
 
diff --git a/libs/client/cornflow_client/cornflow_client.py b/libs/client/cornflow_client/cornflow_client.py
index b51747dfa..7cb254f99 100644
--- a/libs/client/cornflow_client/cornflow_client.py
+++ b/libs/client/cornflow_client/cornflow_client.py
@@ -8,15 +8,25 @@ def __init__(self, url, token=None):
         self.sign_up = self.expect_status(self.raw.sign_up, 201)
         self.create_instance = self.expect_status(self.raw.create_instance, 201)
         self.create_case = self.expect_status(self.raw.create_case, 201)
-        self.create_instance_file = self.expect_status(self.raw.create_instance_file, 201)
+        self.create_instance_file = self.expect_status(
+            self.raw.create_instance_file, 201
+        )
         self.create_execution = self.expect_status(self.raw.create_execution, 201)
         self.relaunch_execution = self.expect_status(self.raw.relaunch_execution, 201)
-        self.create_execution_data_check = self.expect_status(self.raw.create_execution_data_check, 201)
-        self.create_instance_data_check = self.expect_status(self.raw.create_instance_data_check, 201)
-        self.create_case_data_check = self.expect_status(self.raw.create_case_data_check, 201)
+        self.create_execution_data_check = self.expect_status(
+            self.raw.create_execution_data_check, 201
+        )
+        self.create_instance_data_check = self.expect_status(
+            self.raw.create_instance_data_check, 201
+        )
+        self.create_case_data_check = self.expect_status(
+            self.raw.create_case_data_check, 201
+        )
         self.get_data = self.expect_status(self.raw.get_data, 200)
         self.write_solution = self.expect_status(self.raw.write_solution, 200)
-        self.write_instance_checks = self.expect_status(self.raw.write_instance_checks, 200)
+        self.write_instance_checks = self.expect_status(
+            self.raw.write_instance_checks, 200
+        )
         self.write_case_checks = self.expect_status(self.raw.write_case_checks, 200)
         self.stop_execution = self.expect_status(self.raw.stop_execution, 200)
         self.manual_execution = self.expect_status(self.raw.manual_execution, 201)
@@ -31,7 +41,9 @@ def __init__(self, url, token=None):
         self.get_all_users = self.expect_status(self.raw.get_all_users, 200)
         self.get_one_user = self.expect_status(self.raw.get_one_user, 200)
         self.get_one_instance = self.expect_status(self.raw.get_one_instance, 200)
-        self.get_one_instance_data = self.expect_status(self.raw.get_one_instance_data, 200)
+        self.get_one_instance_data = self.expect_status(
+            self.raw.get_one_instance_data, 200
+        )
         self.get_one_case = self.expect_status(self.raw.get_one_case, 200)
         self.get_one_case_data = self.expect_status(self.raw.get_one_case_data, 200)
         self.put_one_case = self.expect_status(self.raw.put_one_case, 200)
@@ -40,31 +52,35 @@ def __init__(self, url, token=None):
         self.patch_one_case = self.expect_status(self.raw.patch_one_case, 200)
         self.delete_one_instance = self.expect_status(self.raw.delete_one_instance, 200)
         self.delete_one_case = self.expect_status(self.raw.delete_one_case, 200)
-        self.delete_one_execution = self.expect_status(self.raw.delete_one_execution, 200)
+        self.delete_one_execution = self.expect_status(
+            self.raw.delete_one_execution, 200
+        )
         self.get_schema = self.expect_status(self.raw.get_schema, 200)
         self.get_all_schemas = self.expect_status(self.raw.get_all_schemas, 200)
         self.get_deployed_dags = self.expect_status(self.raw.get_deployed_dags, 200)
         self.create_deployed_dag = self.expect_status(self.raw.create_deployed_dag, 201)
         self.put_deployed_dag = self.expect_status(self.raw.put_deployed_dag, 200)
+        self.get_example_list = self.expect_status(self.raw.get_example_list, 200)
+        self.get_one_example = self.expect_status(self.raw.get_one_example, 200)
 
     @property
     def url(self):
-        """ Gets the url of the server """
+        """Gets the url of the server"""
         return self.raw.url
 
     @url.setter
     def url(self, url):
-        """ Sets the url of the server """
+        """Sets the url of the server"""
         self.raw.url = url
 
     @property
     def token(self):
-        """ Gets the token """
+        """Gets the token"""
         return self.raw.token
 
     @token.setter
     def token(self, token):
-        """ Sets the token """
+        """Sets the token"""
         self.raw.token = token
 
     @staticmethod
@@ -73,6 +89,7 @@ def expect_status(func, expected_status=None):
         Gets the response of the call
         and raise an exception if the status of the response is not the expected
         """
+
         def decorator(*args, **kwargs):
             response = func(*args, **kwargs)
             if expected_status is not None and response.status_code != expected_status:
@@ -80,6 +97,7 @@ def decorator(*args, **kwargs):
                     f"Expected a code {expected_status}, got a {response.status_code} error instead: {response.text}"
                 )
             return response.json()
+
         return decorator
 
     def is_alive(self):
diff --git a/libs/client/cornflow_client/raw_cornflow_client.py b/libs/client/cornflow_client/raw_cornflow_client.py
index b04b8e7db..b222419c8 100644
--- a/libs/client/cornflow_client/raw_cornflow_client.py
+++ b/libs/client/cornflow_client/raw_cornflow_client.py
@@ -1,15 +1,14 @@
 """
 
 """
-# Full imports
+
 import logging as log
 import re
-import requests
-
-# Partial imports
 from functools import wraps
 from urllib.parse import urljoin
 
+import requests
+
 
 class RawCornFlow(object):
     """
@@ -409,7 +408,7 @@ def create_execution_data_check(
             headers={
                 "Authorization": "access_token " + self.token,
                 "Content-Encoding": encoding,
-            }
+            },
         )
 
     @log_call
@@ -439,17 +438,17 @@ def create_instance_data_check(
             headers={
                 "Authorization": "access_token " + self.token,
                 "Content-Encoding": encoding,
-            }
+            },
         )
 
     @log_call
     @ask_token
     @prepare_encoding
     def create_case_data_check(
-            self,
-            case_id,
-            encoding=None,
-            run=True,
+        self,
+        case_id,
+        encoding=None,
+        run=True,
     ):
         """
         Creates an execution to check the instance and solution of a case
@@ -469,7 +468,7 @@ def create_case_data_check(
             headers={
                 "Authorization": "access_token " + self.token,
                 "Content-Encoding": encoding,
-            }
+            },
         )
 
     @ask_token
@@ -554,9 +553,7 @@ def get_results(self, execution_id, encoding=None):
         :param str execution_id: id for the execution
         :param str encoding: the type of encoding used in the call. Defaults to 'br'
         """
-        return self.get_api_for_id(
-            api="execution/", id=execution_id, encoding=encoding
-        )
+        return self.get_api_for_id(api="execution/", id=execution_id, encoding=encoding)
 
     @log_call
     @ask_token
@@ -688,9 +685,7 @@ def get_one_instance(self, reference_id, encoding=None):
         :param str encoding: the type of encoding used in the call. Defaults to 'br'
 
         """
-        return self.get_api_for_id(
-            api="instance", id=reference_id, encoding=encoding
-        )
+        return self.get_api_for_id(api="instance", id=reference_id, encoding=encoding)
 
     @log_call
     @ask_token
@@ -729,7 +724,9 @@ def get_one_case_data(self, reference_id, encoding=None):
         :param str reference_id: id for the case
         :param str encoding: the type of encoding used in the call. Defaults to 'br'
         """
-        return self.get_api_for_id(api="case", id=reference_id, post_url="data", encoding=encoding)
+        return self.get_api_for_id(
+            api="case", id=reference_id, post_url="data", encoding=encoding
+        )
 
     @log_call
     @ask_token
@@ -815,9 +812,7 @@ def delete_one_case(self, reference_id, encoding=None):
         :param int reference_id: id for the case
         :param str encoding: the type of encoding used in the call. Defaults to 'br'
         """
-        return self.delete_api_for_id(
-            api="case", id=reference_id, encoding=encoding
-        )
+        return self.delete_api_for_id(api="case", id=reference_id, encoding=encoding)
 
     @log_call
     @ask_token
@@ -877,7 +872,7 @@ def create_deployed_dag(
         solution_checks_schema: dict,
         config_schema: dict,
         description: str = None,
-        encoding=None
+        encoding=None,
     ):
         if name is None:
             return {"error": "No dag name was given"}
@@ -888,15 +883,31 @@ def create_deployed_dag(
             solution_schema=solution_schema,
             instance_checks_schema=instance_checks_schema,
             solution_checks_schema=solution_checks_schema,
-            config_schema=config_schema
+            config_schema=config_schema,
         )
         return self.create_api("dag/deployed/", json=payload, encoding=encoding)
-    
+
     @log_call
     @ask_token
     @prepare_encoding
     def put_deployed_dag(self, dag_id, data, encoding=None):
-        return self.put_api_for_id("dag/deployed/", dag_id, payload=data, encoding=encoding)
+        return self.put_api_for_id(
+            "dag/deployed/", dag_id, payload=data, encoding=encoding
+        )
+
+    @log_call
+    @ask_token
+    @prepare_encoding
+    def get_example_list(self, dag_name, encoding=None):
+        return self.get_api_for_id(api="example", id=dag_name, encoding=encoding)
+
+    @log_call
+    @ask_token
+    @prepare_encoding
+    def get_one_example(self, dag_name, example_name, encoding=None):
+        return self.get_api_for_id(
+            api="example", id=f"{dag_name}/{example_name}", encoding=encoding
+        )
 
 
 class CornFlowApiError(Exception):
diff --git a/libs/client/cornflow_client/schema/dictSchema.py b/libs/client/cornflow_client/schema/dictSchema.py
index f1b95334e..6b7e8ae8f 100644
--- a/libs/client/cornflow_client/schema/dictSchema.py
+++ b/libs/client/cornflow_client/schema/dictSchema.py
@@ -1,12 +1,10 @@
 """
 
 """
-# Full imports
 import re
 
-# Imports from internal modules
-from .dict_functions import gen_schema, ParameterSchema, sort_dict
 from cornflow_client.constants import JSON_TYPES, DATASCHEMA
+from .dict_functions import gen_schema, ParameterSchema, sort_dict
 
 
 class DictSchema:
diff --git a/libs/client/cornflow_client/schema/dict_functions.py b/libs/client/cornflow_client/schema/dict_functions.py
index 05b4783a6..b40213582 100644
--- a/libs/client/cornflow_client/schema/dict_functions.py
+++ b/libs/client/cornflow_client/schema/dict_functions.py
@@ -1,12 +1,10 @@
 """
 
 """
-# Partial imports
-
 from functools import partial
+
 from marshmallow import Schema, fields, INCLUDE
 
-# Imports from internal modules
 from cornflow_client.constants import (
     BOOLEAN_TYPE,
     STRING_TYPE,
diff --git a/libs/client/cornflow_client/schema/manager.py b/libs/client/cornflow_client/schema/manager.py
index 397e86543..24504b99d 100644
--- a/libs/client/cornflow_client/schema/manager.py
+++ b/libs/client/cornflow_client/schema/manager.py
@@ -1,18 +1,15 @@
 """
 Class to help create and manage data schema and to validate json files.
 """
-# Full imports
-import os
 
-# Partial imports
+import os
 from copy import deepcopy
+
 from genson import SchemaBuilder
 from jsonschema import Draft7Validator
 
-
-# Imports form internal modules
-from .dictSchema import DictSchema
 from cornflow_client.core.tools import load_json, save_json
+from .dictSchema import DictSchema
 
 
 class SchemaManager:
@@ -169,7 +166,7 @@ def export_schema_dict(self, path):
 
         :return: nothing
         """
-        self.save_json(self.to_dict_schema(), path)
+        save_json(self.to_dict_schema(), path)
 
     def draft_schema_from(self, path, save_path=None):
         """
@@ -290,10 +287,6 @@ def load_json(path):
         """
         return load_json(path)
 
-    @staticmethod
-    def save_json(data, path):
-        return save_json(data, path)
-
     """
     Aliases:
     """
diff --git a/libs/client/cornflow_client/schema/tools.py b/libs/client/cornflow_client/schema/tools.py
index de4dc0024..8e6025d57 100644
--- a/libs/client/cornflow_client/schema/tools.py
+++ b/libs/client/cornflow_client/schema/tools.py
@@ -1,11 +1,10 @@
 """
 
 """
-# Full imports
+
 import json
 import os
 
-# Imports from internal modules
 from cornflow_client.core import InstanceSolutionCore
 from cornflow_client.core.read_tools import read_excel
 
diff --git a/libs/client/requirements.txt b/libs/client/requirements.txt
index dc103daed..a3d662fe4 100644
--- a/libs/client/requirements.txt
+++ b/libs/client/requirements.txt
@@ -3,6 +3,5 @@ genson<=1.2.2
 jsonschema<=4.19.1
 marshmallow<=3.19.0
 pytups<=0.86.2
-ortools<=9.7.2996
-pandas>=1.5.2
+ortools<=9.8.3296
 PuLP<=2.7.0
\ No newline at end of file
diff --git a/libs/client/setup.py b/libs/client/setup.py
index 6f2a9fcc5..b75c0b22d 100644
--- a/libs/client/setup.py
+++ b/libs/client/setup.py
@@ -12,7 +12,7 @@
 
 setuptools.setup(
     name="cornflow-client",
-    version="1.0.16",
+    version="1.1.0a2",
     author="baobab soluciones",
     author_email="sistemas@baobabsoluciones.es",
     description="Client to connect to a cornflow server",


Test patch:
diff --git a/.github/workflows/test_cornflow_client.yml b/.github/workflows/test_cornflow_client.yml
index d64ba7cbf..07a82601a 100644
--- a/.github/workflows/test_cornflow_client.yml
+++ b/.github/workflows/test_cornflow_client.yml
@@ -44,7 +44,7 @@ jobs:
         pip install .
     - name: Test
       run: |
-        coverage run --source=./cornflow_client/ -m unittest discover -s cornflow_client/tests/unit
+        coverage run --source=./cornflow_client/ --rcfile=./.coveragerc -m unittest discover -s cornflow_client/tests/unit
         coverage report -m
   
   integration:
@@ -140,11 +140,11 @@ jobs:
           CORNFLOW_SERVICE_USER: airflow
       - name: Run unit tests
         run: |
-          coverage run --source=./cornflow_client/ -m unittest discover -s cornflow_client/tests/unit
+          coverage run --source=./cornflow_client/ --rcfile=./.coveragerc -m unittest discover -s cornflow_client/tests/unit
           coverage report -m
       - name: Run integration tests
         run: |
-          coverage run -a --source=./cornflow_client/ -m unittest discover -s cornflow_client/tests/integration
+          coverage run -a --source=./cornflow_client/ --rcfile=./.coveragerc -m unittest discover -s cornflow_client/tests/integration
           coverage report -m
           coverage xml
       - name: Upload coverage to codecov
diff --git a/.github/workflows/test_cornflow_dags.yml b/.github/workflows/test_cornflow_dags.yml
index ce7774c52..879c87e2d 100644
--- a/.github/workflows/test_cornflow_dags.yml
+++ b/.github/workflows/test_cornflow_dags.yml
@@ -76,11 +76,11 @@ jobs:
         AIRFLOW_CONN_CF_URI: cornflow://airflow_test@admin.com:airflow_test_password@localhost:5000
     - name: Run unit tests
       run: |
-        coverage run --source=. -m unittest tests/test_dags.py
+        coverage run --source=. --rcfile=./.coveragerc -m unittest tests/test_dags.py
         coverage report -m
     - name: Run integration tests
       run: |
-        coverage run -a --source=. -m unittest tests/test_dags_af.py
+        coverage run -a --source=. --rcfile=./.coveragerc -m unittest tests/test_dags_af.py
         coverage report -m
         coverage xml
     - name: Upload coverage to codecov
diff --git a/.github/workflows/test_cornflow_server.yml b/.github/workflows/test_cornflow_server.yml
index f3ef7d711..b603ca435 100644
--- a/.github/workflows/test_cornflow_server.yml
+++ b/.github/workflows/test_cornflow_server.yml
@@ -103,7 +103,7 @@ jobs:
         AIRFLOW_CONN_CF_URI: http://airflow:Airflow_test_password1@localhost:5050
     - name: Run unit tests
       run: | 
-        coverage run --source=./cornflow/ --omit="*/tests/data/*" -m unittest discover -s cornflow/tests/unit
+        coverage run --source=./cornflow/ --rcfile=./.coveragerc -m unittest discover -s cornflow/tests/unit
         coverage report -m
       env:
         FLASK_ENV: testing
@@ -115,7 +115,7 @@ jobs:
         CF_ALARMS_ENDPOINT: 1
     - name: Run ldap unit tests
       run: | 
-        coverage run -a --source=./cornflow/ -m unittest discover -s cornflow/tests/ldap
+        coverage run -a --source=./cornflow/ --rcfile=./.coveragerc -m unittest discover -s cornflow/tests/ldap
         coverage report -m
       env:
         FLASK_ENV: testing
@@ -143,7 +143,7 @@ jobs:
         CORNFLOW_SERVICE_USER: cornflow
     - name: Run postgres unit tests
       run: | 
-        coverage run -a --source=./cornflow/ -m unittest cornflow/tests/unit/test_commands.py
+        coverage run -a --source=./cornflow/ --rcfile=./.coveragerc -m unittest cornflow/tests/unit/test_commands.py
         coverage report -m
       env:
         FLASK_ENV: testing
@@ -153,7 +153,7 @@ jobs:
         CF_ALARMS_ENDPOINT: 1
     - name: Run integration tests
       run: |
-        coverage run -a --source=./cornflow/ -m unittest discover -s cornflow/tests/integration
+        coverage run -a --source=./cornflow/ --rcfile=./.coveragerc -m unittest discover -s cornflow/tests/integration
         coverage report -m
         coverage xml
       env:
diff --git a/cornflow-dags/DAG/two_dimension_bin_packing/data/test_instance_2.json b/cornflow-dags/DAG/two_dimension_bin_packing/data/test_instance_2.json
index d50d9eafa..7bfa78383 100644
--- a/cornflow-dags/DAG/two_dimension_bin_packing/data/test_instance_2.json
+++ b/cornflow-dags/DAG/two_dimension_bin_packing/data/test_instance_2.json
@@ -1,1 +1,158 @@
-{"items": [{"id": 1, "width": 10, "height": 5, "value": 45}, {"id": 2, "width": 6, "height": 12, "value": 47}, {"id": 3, "width": 2, "height": 1, "value": 65}, {"id": 4, "width": 8, "height": 3, "value": 47}, {"id": 5, "width": 14, "height": 6, "value": 74}, {"id": 6, "width": 9, "height": 7, "value": 78}, {"id": 7, "width": 15, "height": 11, "value": 76}, {"id": 8, "width": 15, "height": 6, "value": 13}, {"id": 9, "width": 4, "height": 13, "value": 100}, {"id": 10, "width": 5, "height": 7, "value": 52}, {"id": 11, "width": 3, "height": 8, "value": 52}, {"id": 12, "width": 9, "height": 14, "value": 29}, {"id": 13, "width": 3, "height": 7, "value": 81}, {"id": 14, "width": 6, "height": 11, "value": 33}, {"id": 15, "width": 4, "height": 9, "value": 29}, {"id": 16, "width": 15, "height": 7, "value": 60}, {"id": 17, "width": 1, "height": 2, "value": 53}, {"id": 18, "width": 12, "height": 12, "value": 80}, {"id": 19, "width": 14, "height": 13, "value": 10}, {"id": 20, "width": 5, "height": 3, "value": 60}, {"id": 21, "width": 8, "height": 11, "value": 100}, {"id": 22, "width": 8, "height": 13, "value": 90}, {"id": 23, "width": 6, "height": 2, "value": 48}, {"id": 24, "width": 15, "height": 7, "value": 7}, {"id": 25, "width": 3, "height": 3, "value": 1}], "parameters": {"width": 10, "height": 10}}
\ No newline at end of file
+{
+  "items": [
+    {
+      "id": 1,
+      "width": 10,
+      "height": 5,
+      "value": 45
+    },
+    {
+      "id": 2,
+      "width": 6,
+      "height": 12,
+      "value": 47
+    },
+    {
+      "id": 3,
+      "width": 2,
+      "height": 1,
+      "value": 65
+    },
+    {
+      "id": 4,
+      "width": 8,
+      "height": 3,
+      "value": 47
+    },
+    {
+      "id": 5,
+      "width": 14,
+      "height": 6,
+      "value": 74
+    },
+    {
+      "id": 6,
+      "width": 9,
+      "height": 7,
+      "value": 78
+    },
+    {
+      "id": 7,
+      "width": 15,
+      "height": 11,
+      "value": 76
+    },
+    {
+      "id": 8,
+      "width": 15,
+      "height": 6,
+      "value": 13
+    },
+    {
+      "id": 9,
+      "width": 4,
+      "height": 13,
+      "value": 100
+    },
+    {
+      "id": 10,
+      "width": 5,
+      "height": 7,
+      "value": 52
+    },
+    {
+      "id": 11,
+      "width": 3,
+      "height": 8,
+      "value": 52
+    },
+    {
+      "id": 12,
+      "width": 9,
+      "height": 14,
+      "value": 29
+    },
+    {
+      "id": 13,
+      "width": 3,
+      "height": 7,
+      "value": 81
+    },
+    {
+      "id": 14,
+      "width": 6,
+      "height": 11,
+      "value": 33
+    },
+    {
+      "id": 15,
+      "width": 4,
+      "height": 9,
+      "value": 29
+    },
+    {
+      "id": 16,
+      "width": 15,
+      "height": 7,
+      "value": 60
+    },
+    {
+      "id": 17,
+      "width": 1,
+      "height": 2,
+      "value": 53
+    },
+    {
+      "id": 18,
+      "width": 12,
+      "height": 12,
+      "value": 80
+    },
+    {
+      "id": 19,
+      "width": 14,
+      "height": 13,
+      "value": 10
+    },
+    {
+      "id": 20,
+      "width": 5,
+      "height": 3,
+      "value": 60
+    },
+    {
+      "id": 21,
+      "width": 8,
+      "height": 11,
+      "value": 100
+    },
+    {
+      "id": 22,
+      "width": 8,
+      "height": 13,
+      "value": 90
+    },
+    {
+      "id": 23,
+      "width": 6,
+      "height": 2,
+      "value": 48
+    },
+    {
+      "id": 24,
+      "width": 15,
+      "height": 7,
+      "value": 7
+    },
+    {
+      "id": 25,
+      "width": 3,
+      "height": 3,
+      "value": 1
+    }
+  ],
+  "parameters": {
+    "width": 10,
+    "height": 10
+  }
+}
\ No newline at end of file
diff --git a/cornflow-dags/DAG/vrp/data/input_test_2.json b/cornflow-dags/DAG/vrp/data/input_test_2.json
index 57687db23..1ea156ccf 100644
--- a/cornflow-dags/DAG/vrp/data/input_test_2.json
+++ b/cornflow-dags/DAG/vrp/data/input_test_2.json
@@ -1,1 +1,13021 @@
-{"arcs":[{"n1":782,"n2":782,"w":0},{"n1":782,"n2":1655,"w":115},{"n1":782,"n2":0,"w":54},{"n1":782,"n2":57,"w":55},{"n1":782,"n2":114,"w":99},{"n1":782,"n2":171,"w":89},{"n1":782,"n2":229,"w":101},{"n1":782,"n2":286,"w":147},{"n1":782,"n2":343,"w":124},{"n1":782,"n2":400,"w":62},{"n1":782,"n2":458,"w":65},{"n1":782,"n2":515,"w":41},{"n1":782,"n2":572,"w":72},{"n1":782,"n2":629,"w":172},{"n1":782,"n2":687,"w":161},{"n1":782,"n2":744,"w":139},{"n1":782,"n2":802,"w":13},{"n1":782,"n2":859,"w":195},{"n1":782,"n2":917,"w":135},{"n1":782,"n2":974,"w":103},{"n1":782,"n2":1031,"w":118},{"n1":782,"n2":1088,"w":62},{"n1":782,"n2":1146,"w":120},{"n1":782,"n2":1203,"w":47},{"n1":782,"n2":1260,"w":120},{"n1":782,"n2":1317,"w":131},{"n1":782,"n2":1375,"w":51},{"n1":782,"n2":1432,"w":126},{"n1":782,"n2":1489,"w":102},{"n1":782,"n2":1546,"w":29},{"n1":782,"n2":1604,"w":101},{"n1":782,"n2":1662,"w":61},{"n1":782,"n2":1719,"w":103},{"n1":782,"n2":1776,"w":28},{"n1":782,"n2":1834,"w":51},{"n1":782,"n2":1891,"w":201},{"n1":782,"n2":1948,"w":237},{"n1":782,"n2":2005,"w":232},{"n1":782,"n2":2063,"w":43},{"n1":782,"n2":2120,"w":130},{"n1":782,"n2":2177,"w":49},{"n1":782,"n2":2234,"w":69},{"n1":782,"n2":2292,"w":62},{"n1":782,"n2":2349,"w":102},{"n1":782,"n2":2406,"w":60},{"n1":782,"n2":2463,"w":155},{"n1":782,"n2":2521,"w":74},{"n1":782,"n2":2578,"w":205},{"n1":782,"n2":2635,"w":87},{"n1":782,"n2":2692,"w":77},{"n1":1655,"n2":782,"w":115},{"n1":1655,"n2":1655,"w":0},{"n1":1655,"n2":0,"w":61},{"n1":1655,"n2":57,"w":101},{"n1":1655,"n2":114,"w":71},{"n1":1655,"n2":171,"w":43},{"n1":1655,"n2":229,"w":13},{"n1":1655,"n2":286,"w":68},{"n1":1655,"n2":343,"w":48},{"n1":1655,"n2":400,"w":76},{"n1":1655,"n2":458,"w":153},{"n1":1655,"n2":515,"w":78},{"n1":1655,"n2":572,"w":56},{"n1":1655,"n2":629,"w":73},{"n1":1655,"n2":687,"w":74},{"n1":1655,"n2":744,"w":55},{"n1":1655,"n2":802,"w":104},{"n1":1655,"n2":859,"w":84},{"n1":1655,"n2":917,"w":24},{"n1":1655,"n2":974,"w":37},{"n1":1655,"n2":1031,"w":15},{"n1":1655,"n2":1088,"w":93},{"n1":1655,"n2":1146,"w":45},{"n1":1655,"n2":1203,"w":162},{"n1":1655,"n2":1260,"w":24},{"n1":1655,"n2":1317,"w":51},{"n1":1655,"n2":1375,"w":166},{"n1":1655,"n2":1432,"w":15},{"n1":1655,"n2":1489,"w":16},{"n1":1655,"n2":1546,"w":93},{"n1":1655,"n2":1604,"w":32},{"n1":1655,"n2":1662,"w":128},{"n1":1655,"n2":1719,"w":34},{"n1":1655,"n2":1776,"w":114},{"n1":1655,"n2":1834,"w":67},{"n1":1655,"n2":1891,"w":100},{"n1":1655,"n2":1948,"w":126},{"n1":1655,"n2":2005,"w":121},{"n1":1655,"n2":2063,"w":102},{"n1":1655,"n2":2120,"w":42},{"n1":1655,"n2":2177,"w":140},{"n1":1655,"n2":2234,"w":83},{"n1":1655,"n2":2292,"w":171},{"n1":1655,"n2":2349,"w":49},{"n1":1655,"n2":2406,"w":59},{"n1":1655,"n2":2463,"w":56},{"n1":1655,"n2":2521,"w":163},{"n1":1655,"n2":2578,"w":93},{"n1":1655,"n2":2635,"w":75},{"n1":1655,"n2":2692,"w":165},{"n1":0,"n2":782,"w":55},{"n1":0,"n2":1655,"w":61},{"n1":0,"n2":0,"w":0},{"n1":0,"n2":57,"w":45},{"n1":0,"n2":114,"w":52},{"n1":0,"n2":171,"w":36},{"n1":0,"n2":229,"w":47},{"n1":0,"n2":286,"w":94},{"n1":0,"n2":343,"w":71},{"n1":0,"n2":400,"w":47},{"n1":0,"n2":458,"w":105},{"n1":0,"n2":515,"w":26},{"n1":0,"n2":572,"w":37},{"n1":0,"n2":629,"w":118},{"n1":0,"n2":687,"w":108},{"n1":0,"n2":744,"w":93},{"n1":0,"n2":802,"w":43},{"n1":0,"n2":859,"w":141},{"n1":0,"n2":917,"w":81},{"n1":0,"n2":974,"w":50},{"n1":0,"n2":1031,"w":64},{"n1":0,"n2":1088,"w":39},{"n1":0,"n2":1146,"w":67},{"n1":0,"n2":1203,"w":101},{"n1":0,"n2":1260,"w":66},{"n1":0,"n2":1317,"w":78},{"n1":0,"n2":1375,"w":105},{"n1":0,"n2":1432,"w":72},{"n1":0,"n2":1489,"w":49},{"n1":0,"n2":1546,"w":32},{"n1":0,"n2":1604,"w":54},{"n1":0,"n2":1662,"w":85},{"n1":0,"n2":1719,"w":50},{"n1":0,"n2":1776,"w":62},{"n1":0,"n2":1834,"w":15},{"n1":0,"n2":1891,"w":147},{"n1":0,"n2":1948,"w":183},{"n1":0,"n2":2005,"w":178},{"n1":0,"n2":2063,"w":43},{"n1":0,"n2":2120,"w":83},{"n1":0,"n2":2177,"w":90},{"n1":0,"n2":2234,"w":60},{"n1":0,"n2":2292,"w":111},{"n1":0,"n2":2349,"w":63},{"n1":0,"n2":2406,"w":7},{"n1":0,"n2":2463,"w":101},{"n1":0,"n2":2521,"w":115},{"n1":0,"n2":2578,"w":151},{"n1":0,"n2":2635,"w":45},{"n1":0,"n2":2692,"w":117},{"n1":57,"n2":782,"w":55},{"n1":57,"n2":1655,"w":102},{"n1":57,"n2":0,"w":44},{"n1":57,"n2":57,"w":0},{"n1":57,"n2":114,"w":51},{"n1":57,"n2":171,"w":61},{"n1":57,"n2":229,"w":88},{"n1":57,"n2":286,"w":107},{"n1":57,"n2":343,"w":91},{"n1":57,"n2":400,"w":85},{"n1":57,"n2":458,"w":117},{"n1":57,"n2":515,"w":60},{"n1":57,"n2":572,"w":79},{"n1":57,"n2":629,"w":147},{"n1":57,"n2":687,"w":120},{"n1":57,"n2":744,"w":136},{"n1":57,"n2":802,"w":57},{"n1":57,"n2":859,"w":179},{"n1":57,"n2":917,"w":119},{"n1":57,"n2":974,"w":74},{"n1":57,"n2":1031,"w":96},{"n1":57,"n2":1088,"w":11},{"n1":57,"n2":1146,"w":89},{"n1":57,"n2":1203,"w":89},{"n1":57,"n2":1260,"w":95},{"n1":57,"n2":1317,"w":97},{"n1":57,"n2":1375,"w":95},{"n1":57,"n2":1432,"w":110},{"n1":57,"n2":1489,"w":90},{"n1":57,"n2":1546,"w":42},{"n1":57,"n2":1604,"w":98},{"n1":57,"n2":1662,"w":112},{"n1":57,"n2":1719,"w":75},{"n1":57,"n2":1776,"w":79},{"n1":57,"n2":1834,"w":56},{"n1":57,"n2":1891,"w":174},{"n1":57,"n2":1948,"w":221},{"n1":57,"n2":2005,"w":216},{"n1":57,"n2":2063,"w":17},{"n1":57,"n2":2120,"w":126},{"n1":57,"n2":2177,"w":102},{"n1":57,"n2":2234,"w":98},{"n1":57,"n2":2292,"w":111},{"n1":57,"n2":2349,"w":107},{"n1":57,"n2":2406,"w":51},{"n1":57,"n2":2463,"w":128},{"n1":57,"n2":2521,"w":127},{"n1":57,"n2":2578,"w":188},{"n1":57,"n2":2635,"w":40},{"n1":57,"n2":2692,"w":129},{"n1":114,"n2":782,"w":98},{"n1":114,"n2":1655,"w":71},{"n1":114,"n2":0,"w":52},{"n1":114,"n2":57,"w":51},{"n1":114,"n2":114,"w":0},{"n1":114,"n2":171,"w":36},{"n1":114,"n2":229,"w":64},{"n1":114,"n2":286,"w":58},{"n1":114,"n2":343,"w":42},{"n1":114,"n2":400,"w":99},{"n1":114,"n2":458,"w":157},{"n1":114,"n2":515,"w":77},{"n1":114,"n2":572,"w":85},{"n1":114,"n2":629,"w":98},{"n1":114,"n2":687,"w":73},{"n1":114,"n2":744,"w":123},{"n1":114,"n2":802,"w":92},{"n1":114,"n2":859,"w":148},{"n1":114,"n2":917,"w":87},{"n1":114,"n2":974,"w":34},{"n1":114,"n2":1031,"w":62},{"n1":114,"n2":1088,"w":42},{"n1":114,"n2":1146,"w":41},{"n1":114,"n2":1203,"w":137},{"n1":114,"n2":1260,"w":57},{"n1":114,"n2":1317,"w":47},{"n1":114,"n2":1375,"w":143},{"n1":114,"n2":1432,"w":79},{"n1":114,"n2":1489,"w":67},{"n1":114,"n2":1546,"w":75},{"n1":114,"n2":1604,"w":84},{"n1":114,"n2":1662,"w":137},{"n1":114,"n2":1719,"w":36},{"n1":114,"n2":1776,"w":113},{"n1":114,"n2":1834,"w":66},{"n1":114,"n2":1891,"w":125},{"n1":114,"n2":1948,"w":190},{"n1":114,"n2":2005,"w":185},{"n1":114,"n2":2063,"w":65},{"n1":114,"n2":2120,"w":111},{"n1":114,"n2":2177,"w":142},{"n1":114,"n2":2234,"w":112},{"n1":114,"n2":2292,"w":159},{"n1":114,"n2":2349,"w":102},{"n1":114,"n2":2406,"w":56},{"n1":114,"n2":2463,"w":82},{"n1":114,"n2":2521,"w":167},{"n1":114,"n2":2578,"w":150},{"n1":114,"n2":2635,"w":12},{"n1":114,"n2":2692,"w":169},{"n1":171,"n2":782,"w":90},{"n1":171,"n2":1655,"w":43},{"n1":171,"n2":0,"w":35},{"n1":171,"n2":57,"w":61},{"n1":171,"n2":114,"w":36},{"n1":171,"n2":171,"w":0},{"n1":171,"n2":229,"w":32},{"n1":171,"n2":286,"w":63},{"n1":171,"n2":343,"w":40},{"n1":171,"n2":400,"w":73},{"n1":171,"n2":458,"w":141},{"n1":171,"n2":515,"w":61},{"n1":171,"n2":572,"w":55},{"n1":171,"n2":629,"w":91},{"n1":171,"n2":687,"w":77},{"n1":171,"n2":744,"w":91},{"n1":171,"n2":802,"w":78},{"n1":171,"n2":859,"w":120},{"n1":171,"n2":917,"w":60},{"n1":171,"n2":974,"w":19},{"n1":171,"n2":1031,"w":37},{"n1":171,"n2":1088,"w":53},{"n1":171,"n2":1146,"w":36},{"n1":171,"n2":1203,"w":136},{"n1":171,"n2":1260,"w":36},{"n1":171,"n2":1317,"w":47},{"n1":171,"n2":1375,"w":140},{"n1":171,"n2":1432,"w":51},{"n1":171,"n2":1489,"w":35},{"n1":171,"n2":1546,"w":68},{"n1":171,"n2":1604,"w":52},{"n1":171,"n2":1662,"w":120},{"n1":171,"n2":1719,"w":18},{"n1":171,"n2":1776,"w":97},{"n1":171,"n2":1834,"w":47},{"n1":171,"n2":1891,"w":120},{"n1":171,"n2":1948,"w":162},{"n1":171,"n2":2005,"w":157},{"n1":171,"n2":2063,"w":66},{"n1":171,"n2":2120,"w":79},{"n1":171,"n2":2177,"w":126},{"n1":171,"n2":2234,"w":85},{"n1":171,"n2":2292,"w":146},{"n1":171,"n2":2349,"w":70},{"n1":171,"n2":2406,"w":34},{"n1":171,"n2":2463,"w":72},{"n1":171,"n2":2521,"w":151},{"n1":171,"n2":2578,"w":130},{"n1":171,"n2":2635,"w":38},{"n1":171,"n2":2692,"w":153},{"n1":229,"n2":782,"w":102},{"n1":229,"n2":1655,"w":13},{"n1":229,"n2":0,"w":47},{"n1":229,"n2":57,"w":88},{"n1":229,"n2":114,"w":65},{"n1":229,"n2":171,"w":32},{"n1":229,"n2":229,"w":0},{"n1":229,"n2":286,"w":72},{"n1":229,"n2":343,"w":49},{"n1":229,"n2":400,"w":66},{"n1":229,"n2":458,"w":143},{"n1":229,"n2":515,"w":67},{"n1":229,"n2":572,"w":45},{"n1":229,"n2":629,"w":80},{"n1":229,"n2":687,"w":80},{"n1":229,"n2":744,"w":60},{"n1":229,"n2":802,"w":90},{"n1":229,"n2":859,"w":95},{"n1":229,"n2":917,"w":35},{"n1":229,"n2":974,"w":34},{"n1":229,"n2":1031,"w":21},{"n1":229,"n2":1088,"w":80},{"n1":229,"n2":1146,"w":45},{"n1":229,"n2":1203,"w":148},{"n1":229,"n2":1260,"w":29},{"n1":229,"n2":1317,"w":53},{"n1":229,"n2":1375,"w":152},{"n1":229,"n2":1432,"w":26},{"n1":229,"n2":1489,"w":5},{"n1":229,"n2":1546,"w":79},{"n1":229,"n2":1604,"w":26},{"n1":229,"n2":1662,"w":117},{"n1":229,"n2":1719,"w":31},{"n1":229,"n2":1776,"w":103},{"n1":229,"n2":1834,"w":55},{"n1":229,"n2":1891,"w":109},{"n1":229,"n2":1948,"w":138},{"n1":229,"n2":2005,"w":132},{"n1":229,"n2":2063,"w":88},{"n1":229,"n2":2120,"w":48},{"n1":229,"n2":2177,"w":130},{"n1":229,"n2":2234,"w":75},{"n1":229,"n2":2292,"w":158},{"n1":229,"n2":2349,"w":45},{"n1":229,"n2":2406,"w":46},{"n1":229,"n2":2463,"w":63},{"n1":229,"n2":2521,"w":153},{"n1":229,"n2":2578,"w":105},{"n1":229,"n2":2635,"w":69},{"n1":229,"n2":2692,"w":154},{"n1":286,"n2":782,"w":146},{"n1":286,"n2":1655,"w":69},{"n1":286,"n2":0,"w":93},{"n1":286,"n2":57,"w":106},{"n1":286,"n2":114,"w":59},{"n1":286,"n2":171,"w":63},{"n1":286,"n2":229,"w":72},{"n1":286,"n2":286,"w":0},{"n1":286,"n2":343,"w":28},{"n1":286,"n2":400,"w":135},{"n1":286,"n2":458,"w":198},{"n1":286,"n2":515,"w":119},{"n1":286,"n2":572,"w":114},{"n1":286,"n2":629,"w":46},{"n1":286,"n2":687,"w":14},{"n1":286,"n2":744,"w":123},{"n1":286,"n2":802,"w":135},{"n1":286,"n2":859,"w":112},{"n1":286,"n2":917,"w":64},{"n1":286,"n2":974,"w":49},{"n1":286,"n2":1031,"w":54},{"n1":286,"n2":1088,"w":99},{"n1":286,"n2":1146,"w":32},{"n1":286,"n2":1203,"w":192},{"n1":286,"n2":1260,"w":45},{"n1":286,"n2":1317,"w":20},{"n1":286,"n2":1375,"w":196},{"n1":286,"n2":1432,"w":68},{"n1":286,"n2":1489,"w":78},{"n1":286,"n2":1546,"w":124},{"n1":286,"n2":1604,"w":97},{"n1":286,"n2":1662,"w":178},{"n1":286,"n2":1719,"w":49},{"n1":286,"n2":1776,"w":155},{"n1":286,"n2":1834,"w":108},{"n1":286,"n2":1891,"w":71},{"n1":286,"n2":1948,"w":147},{"n1":286,"n2":2005,"w":148},{"n1":286,"n2":2063,"w":120},{"n1":286,"n2":2120,"w":111},{"n1":286,"n2":2177,"w":183},{"n1":286,"n2":2234,"w":145},{"n1":286,"n2":2292,"w":202},{"n1":286,"n2":2349,"w":115},{"n1":286,"n2":2406,"w":96},{"n1":286,"n2":2463,"w":35},{"n1":286,"n2":2521,"w":208},{"n1":286,"n2":2578,"w":98},{"n1":286,"n2":2635,"w":71},{"n1":286,"n2":2692,"w":210},{"n1":343,"n2":782,"w":123},{"n1":343,"n2":1655,"w":48},{"n1":343,"n2":0,"w":70},{"n1":343,"n2":57,"w":91},{"n1":343,"n2":114,"w":42},{"n1":343,"n2":171,"w":40},{"n1":343,"n2":229,"w":49},{"n1":343,"n2":286,"w":28},{"n1":343,"n2":343,"w":0},{"n1":343,"n2":400,"w":110},{"n1":343,"n2":458,"w":175},{"n1":343,"n2":515,"w":96},{"n1":343,"n2":572,"w":89},{"n1":343,"n2":629,"w":59},{"n1":343,"n2":687,"w":40},{"n1":343,"n2":744,"w":102},{"n1":343,"n2":802,"w":112},{"n1":343,"n2":859,"w":109},{"n1":343,"n2":917,"w":51},{"n1":343,"n2":974,"w":23},{"n1":343,"n2":1031,"w":33},{"n1":343,"n2":1088,"w":81},{"n1":343,"n2":1146,"w":4},{"n1":343,"n2":1203,"w":170},{"n1":343,"n2":1260,"w":24},{"n1":343,"n2":1317,"w":9},{"n1":343,"n2":1375,"w":174},{"n1":343,"n2":1432,"w":52},{"n1":343,"n2":1489,"w":55},{"n1":343,"n2":1546,"w":101},{"n1":343,"n2":1604,"w":74},{"n1":343,"n2":1662,"w":155},{"n1":343,"n2":1719,"w":24},{"n1":343,"n2":1776,"w":132},{"n1":343,"n2":1834,"w":85},{"n1":343,"n2":1891,"w":86},{"n1":343,"n2":1948,"w":150},{"n1":343,"n2":2005,"w":145},{"n1":343,"n2":2063,"w":97},{"n1":343,"n2":2120,"w":90},{"n1":343,"n2":2177,"w":160},{"n1":343,"n2":2234,"w":121},{"n1":343,"n2":2292,"w":180},{"n1":343,"n2":2349,"w":92},{"n1":343,"n2":2406,"w":73},{"n1":343,"n2":2463,"w":40},{"n1":343,"n2":2521,"w":185},{"n1":343,"n2":2578,"w":111},{"n1":343,"n2":2635,"w":55},{"n1":343,"n2":2692,"w":187},{"n1":400,"n2":782,"w":64},{"n1":400,"n2":1655,"w":76},{"n1":400,"n2":0,"w":47},{"n1":400,"n2":57,"w":85},{"n1":400,"n2":114,"w":99},{"n1":400,"n2":171,"w":73},{"n1":400,"n2":229,"w":66},{"n1":400,"n2":286,"w":135},{"n1":400,"n2":343,"w":110},{"n1":400,"n2":400,"w":0},{"n1":400,"n2":458,"w":80},{"n1":400,"n2":515,"w":28},{"n1":400,"n2":572,"w":21},{"n1":400,"n2":629,"w":144},{"n1":400,"n2":687,"w":144},{"n1":400,"n2":744,"w":80},{"n1":400,"n2":802,"w":50},{"n1":400,"n2":859,"w":153},{"n1":400,"n2":917,"w":98},{"n1":400,"n2":974,"w":87},{"n1":400,"n2":1031,"w":86},{"n1":400,"n2":1088,"w":82},{"n1":400,"n2":1146,"w":106},{"n1":400,"n2":1203,"w":107},{"n1":400,"n2":1260,"w":95},{"n1":400,"n2":1317,"w":115},{"n1":400,"n2":1375,"w":107},{"n1":400,"n2":1432,"w":89},{"n1":400,"n2":1489,"w":60},{"n1":400,"n2":1546,"w":53},{"n1":400,"n2":1604,"w":50},{"n1":400,"n2":1662,"w":54},{"n1":400,"n2":1719,"w":86},{"n1":400,"n2":1776,"w":48},{"n1":400,"n2":1834,"w":33},{"n1":400,"n2":1891,"w":173},{"n1":400,"n2":1948,"w":196},{"n1":400,"n2":2005,"w":190},{"n1":400,"n2":2063,"w":79},{"n1":400,"n2":2120,"w":74},{"n1":400,"n2":2177,"w":70},{"n1":400,"n2":2234,"w":14},{"n1":400,"n2":2292,"w":111},{"n1":400,"n2":2349,"w":45},{"n1":400,"n2":2406,"w":43},{"n1":400,"n2":2463,"w":127},{"n1":400,"n2":2521,"w":90},{"n1":400,"n2":2578,"w":168},{"n1":400,"n2":2635,"w":92},{"n1":400,"n2":2692,"w":92},{"n1":458,"n2":782,"w":65},{"n1":458,"n2":1655,"w":152},{"n1":458,"n2":0,"w":105},{"n1":458,"n2":57,"w":118},{"n1":458,"n2":114,"w":157},{"n1":458,"n2":171,"w":140},{"n1":458,"n2":229,"w":142},{"n1":458,"n2":286,"w":198},{"n1":458,"n2":343,"w":175},{"n1":458,"n2":400,"w":80},{"n1":458,"n2":458,"w":0},{"n1":458,"n2":515,"w":82},{"n1":458,"n2":572,"w":100},{"n1":458,"n2":629,"w":220},{"n1":458,"n2":687,"w":213},{"n1":458,"n2":744,"w":152},{"n1":458,"n2":802,"w":68},{"n1":458,"n2":859,"w":229},{"n1":458,"n2":917,"w":174},{"n1":458,"n2":974,"w":155},{"n1":458,"n2":1031,"w":162},{"n1":458,"n2":1088,"w":125},{"n1":458,"n2":1146,"w":172},{"n1":458,"n2":1203,"w":71},{"n1":458,"n2":1260,"w":169},{"n1":458,"n2":1317,"w":183},{"n1":458,"n2":1375,"w":64},{"n1":458,"n2":1432,"w":165},{"n1":458,"n2":1489,"w":136},{"n1":458,"n2":1546,"w":88},{"n1":458,"n2":1604,"w":127},{"n1":458,"n2":1662,"w":33},{"n1":458,"n2":1719,"w":155},{"n1":458,"n2":1776,"w":45},{"n1":458,"n2":1834,"w":96},{"n1":458,"n2":1891,"w":249},{"n1":458,"n2":1948,"w":271},{"n1":458,"n2":2005,"w":266},{"n1":458,"n2":2063,"w":106},{"n1":458,"n2":2120,"w":146},{"n1":458,"n2":2177,"w":18},{"n1":458,"n2":2234,"w":74},{"n1":458,"n2":2292,"w":55},{"n1":458,"n2":2349,"w":119},{"n1":458,"n2":2406,"w":108},{"n1":458,"n2":2463,"w":203},{"n1":458,"n2":2521,"w":11},{"n1":458,"n2":2578,"w":243},{"n1":458,"n2":2635,"w":147},{"n1":458,"n2":2692,"w":12},{"n1":515,"n2":782,"w":41},{"n1":515,"n2":1655,"w":78},{"n1":515,"n2":0,"w":26},{"n1":515,"n2":57,"w":60},{"n1":515,"n2":114,"w":78},{"n1":515,"n2":171,"w":61},{"n1":515,"n2":229,"w":67},{"n1":515,"n2":286,"w":119},{"n1":515,"n2":343,"w":96},{"n1":515,"n2":400,"w":28},{"n1":515,"n2":458,"w":82},{"n1":515,"n2":515,"w":0},{"n1":515,"n2":572,"w":31},{"n1":515,"n2":629,"w":142},{"n1":515,"n2":687,"w":133},{"n1":515,"n2":744,"w":98},{"n1":515,"n2":802,"w":28},{"n1":515,"n2":859,"w":160},{"n1":515,"n2":917,"w":99},{"n1":515,"n2":974,"w":75},{"n1":515,"n2":1031,"w":87},{"n1":515,"n2":1088,"w":58},{"n1":515,"n2":1146,"w":93},{"n1":515,"n2":1203,"w":87},{"n1":515,"n2":1260,"w":90},{"n1":515,"n2":1317,"w":103},{"n1":515,"n2":1375,"w":91},{"n1":515,"n2":1432,"w":91},{"n1":515,"n2":1489,"w":62},{"n1":515,"n2":1546,"w":24},{"n1":515,"n2":1604,"w":61},{"n1":515,"n2":1662,"w":61},{"n1":515,"n2":1719,"w":76},{"n1":515,"n2":1776,"w":39},{"n1":515,"n2":1834,"w":15},{"n1":515,"n2":1891,"w":171},{"n1":515,"n2":1948,"w":202},{"n1":515,"n2":2005,"w":196},{"n1":515,"n2":2063,"w":52},{"n1":515,"n2":2120,"w":89},{"n1":515,"n2":2177,"w":67},{"n1":515,"n2":2234,"w":42},{"n1":515,"n2":2292,"w":97},{"n1":515,"n2":2349,"w":61},{"n1":515,"n2":2406,"w":28},{"n1":515,"n2":2463,"w":125},{"n1":515,"n2":2521,"w":92},{"n1":515,"n2":2578,"w":169},{"n1":515,"n2":2635,"w":70},{"n1":515,"n2":2692,"w":94},{"n1":572,"n2":782,"w":73},{"n1":572,"n2":1655,"w":56},{"n1":572,"n2":0,"w":36},{"n1":572,"n2":57,"w":80},{"n1":572,"n2":114,"w":85},{"n1":572,"n2":171,"w":55},{"n1":572,"n2":229,"w":45},{"n1":572,"n2":286,"w":114},{"n1":572,"n2":343,"w":89},{"n1":572,"n2":400,"w":21},{"n1":572,"n2":458,"w":100},{"n1":572,"n2":515,"w":32},{"n1":572,"n2":572,"w":0},{"n1":572,"n2":629,"w":124},{"n1":572,"n2":687,"w":124},{"n1":572,"n2":744,"w":70},{"n1":572,"n2":802,"w":59},{"n1":572,"n2":859,"w":136},{"n1":572,"n2":917,"w":78},{"n1":572,"n2":974,"w":67},{"n1":572,"n2":1031,"w":66},{"n1":572,"n2":1088,"w":76},{"n1":572,"n2":1146,"w":85},{"n1":572,"n2":1203,"w":118},{"n1":572,"n2":1260,"w":74},{"n1":572,"n2":1317,"w":95},{"n1":572,"n2":1375,"w":121},{"n1":572,"n2":1432,"w":69},{"n1":572,"n2":1489,"w":40},{"n1":572,"n2":1546,"w":56},{"n1":572,"n2":1604,"w":33},{"n1":572,"n2":1662,"w":74},{"n1":572,"n2":1719,"w":65},{"n1":572,"n2":1776,"w":63},{"n1":572,"n2":1834,"w":27},{"n1":572,"n2":1891,"w":153},{"n1":572,"n2":1948,"w":179},{"n1":572,"n2":2005,"w":173},{"n1":572,"n2":2063,"w":77},{"n1":572,"n2":2120,"w":60},{"n1":572,"n2":2177,"w":89},{"n1":572,"n2":2234,"w":32},{"n1":572,"n2":2292,"w":128},{"n1":572,"n2":2349,"w":31},{"n1":572,"n2":2406,"w":33},{"n1":572,"n2":2463,"w":107},{"n1":572,"n2":2521,"w":110},{"n1":572,"n2":2578,"w":147},{"n1":572,"n2":2635,"w":82},{"n1":572,"n2":2692,"w":112},{"n1":629,"n2":782,"w":172},{"n1":629,"n2":1655,"w":73},{"n1":629,"n2":0,"w":118},{"n1":629,"n2":57,"w":146},{"n1":629,"n2":114,"w":98},{"n1":629,"n2":171,"w":91},{"n1":629,"n2":229,"w":80},{"n1":629,"n2":286,"w":46},{"n1":629,"n2":343,"w":59},{"n1":629,"n2":400,"w":144},{"n1":629,"n2":458,"w":221},{"n1":629,"n2":515,"w":142},{"n1":629,"n2":572,"w":124},{"n1":629,"n2":629,"w":0},{"n1":629,"n2":687,"w":41},{"n1":629,"n2":744,"w":106},{"n1":629,"n2":802,"w":160},{"n1":629,"n2":859,"w":77},{"n1":629,"n2":917,"w":49},{"n1":629,"n2":974,"w":74},{"n1":629,"n2":1031,"w":60},{"n1":629,"n2":1088,"w":137},{"n1":629,"n2":1146,"w":61},{"n1":629,"n2":1203,"w":218},{"n1":629,"n2":1260,"w":55},{"n1":629,"n2":1317,"w":51},{"n1":629,"n2":1375,"w":222},{"n1":629,"n2":1432,"w":60},{"n1":629,"n2":1489,"w":83},{"n1":629,"n2":1546,"w":150},{"n1":629,"n2":1604,"w":102},{"n1":629,"n2":1662,"w":195},{"n1":629,"n2":1719,"w":75},{"n1":629,"n2":1776,"w":179},{"n1":629,"n2":1834,"w":129},{"n1":629,"n2":1891,"w":31},{"n1":629,"n2":1948,"w":101},{"n1":629,"n2":2005,"w":102},{"n1":629,"n2":2063,"w":153},{"n1":629,"n2":2120,"w":94},{"n1":629,"n2":2177,"w":208},{"n1":629,"n2":2234,"w":151},{"n1":629,"n2":2292,"w":228},{"n1":629,"n2":2349,"w":115},{"n1":629,"n2":2406,"w":116},{"n1":629,"n2":2463,"w":22},{"n1":629,"n2":2521,"w":231},{"n1":629,"n2":2578,"w":52},{"n1":629,"n2":2635,"w":110},{"n1":629,"n2":2692,"w":233},{"n1":687,"n2":782,"w":160},{"n1":687,"n2":1655,"w":75},{"n1":687,"n2":0,"w":107},{"n1":687,"n2":57,"w":119},{"n1":687,"n2":114,"w":73},{"n1":687,"n2":171,"w":77},{"n1":687,"n2":229,"w":81},{"n1":687,"n2":286,"w":14},{"n1":687,"n2":343,"w":40},{"n1":687,"n2":400,"w":145},{"n1":687,"n2":458,"w":212},{"n1":687,"n2":515,"w":133},{"n1":687,"n2":572,"w":124},{"n1":687,"n2":629,"w":41},{"n1":687,"n2":687,"w":0},{"n1":687,"n2":744,"w":126},{"n1":687,"n2":802,"w":149},{"n1":687,"n2":859,"w":115},{"n1":687,"n2":917,"w":66},{"n1":687,"n2":974,"w":59},{"n1":687,"n2":1031,"w":60},{"n1":687,"n2":1088,"w":113},{"n1":687,"n2":1146,"w":42},{"n1":687,"n2":1203,"w":206},{"n1":687,"n2":1260,"w":53},{"n1":687,"n2":1317,"w":31},{"n1":687,"n2":1375,"w":210},{"n1":687,"n2":1432,"w":71},{"n1":687,"n2":1489,"w":84},{"n1":687,"n2":1546,"w":138},{"n1":687,"n2":1604,"w":103},{"n1":687,"n2":1662,"w":192},{"n1":687,"n2":1719,"w":60},{"n1":687,"n2":1776,"w":169},{"n1":687,"n2":1834,"w":122},{"n1":687,"n2":1891,"w":59},{"n1":687,"n2":1948,"w":141},{"n1":687,"n2":2005,"w":142},{"n1":687,"n2":2063,"w":134},{"n1":687,"n2":2120,"w":114},{"n1":687,"n2":2177,"w":197},{"n1":687,"n2":2234,"w":151},{"n1":687,"n2":2292,"w":216},{"n1":687,"n2":2349,"w":122},{"n1":687,"n2":2406,"w":110},{"n1":687,"n2":2463,"w":34},{"n1":687,"n2":2521,"w":222},{"n1":687,"n2":2578,"w":92},{"n1":687,"n2":2635,"w":85},{"n1":687,"n2":2692,"w":224},{"n1":744,"n2":782,"w":139},{"n1":744,"n2":1655,"w":55},{"n1":744,"n2":0,"w":92},{"n1":744,"n2":57,"w":136},{"n1":744,"n2":114,"w":123},{"n1":744,"n2":171,"w":91},{"n1":744,"n2":229,"w":60},{"n1":744,"n2":286,"w":123},{"n1":744,"n2":343,"w":102},{"n1":744,"n2":400,"w":80},{"n1":744,"n2":458,"w":152},{"n1":744,"n2":515,"w":99},{"n1":744,"n2":572,"w":70},{"n1":744,"n2":629,"w":106},{"n1":744,"n2":687,"w":126},{"n1":744,"n2":744,"w":0},{"n1":744,"n2":802,"w":126},{"n1":744,"n2":859,"w":92},{"n1":744,"n2":917,"w":60},{"n1":744,"n2":974,"w":92},{"n1":744,"n2":1031,"w":69},{"n1":744,"n2":1088,"w":130},{"n1":744,"n2":1146,"w":99},{"n1":744,"n2":1203,"w":184},{"n1":744,"n2":1260,"w":79},{"n1":744,"n2":1317,"w":105},{"n1":744,"n2":1375,"w":184},{"n1":744,"n2":1432,"w":55},{"n1":744,"n2":1489,"w":56},{"n1":744,"n2":1546,"w":121},{"n1":744,"n2":1604,"w":40},{"n1":744,"n2":1662,"w":122},{"n1":744,"n2":1719,"w":89},{"n1":744,"n2":1776,"w":125},{"n1":744,"n2":1834,"w":89},{"n1":744,"n2":1891,"w":128},{"n1":744,"n2":1948,"w":135},{"n1":744,"n2":2005,"w":129},{"n1":744,"n2":2063,"w":134},{"n1":744,"n2":2120,"w":12},{"n1":744,"n2":2177,"w":146},{"n1":744,"n2":2234,"w":79},{"n1":744,"n2":2292,"w":188},{"n1":744,"n2":2349,"w":40},{"n1":744,"n2":2406,"w":87},{"n1":744,"n2":2463,"w":97},{"n1":744,"n2":2521,"w":162},{"n1":744,"n2":2578,"w":114},{"n1":744,"n2":2635,"w":127},{"n1":744,"n2":2692,"w":164},{"n1":802,"n2":782,"w":13},{"n1":802,"n2":1655,"w":103},{"n1":802,"n2":0,"w":42},{"n1":802,"n2":57,"w":57},{"n1":802,"n2":114,"w":92},{"n1":802,"n2":171,"w":77},{"n1":802,"n2":229,"w":89},{"n1":802,"n2":286,"w":135},{"n1":802,"n2":343,"w":112},{"n1":802,"n2":400,"w":49},{"n1":802,"n2":458,"w":68},{"n1":802,"n2":515,"w":28},{"n1":802,"n2":572,"w":59},{"n1":802,"n2":629,"w":160},{"n1":802,"n2":687,"w":149},{"n1":802,"n2":744,"w":126},{"n1":802,"n2":802,"w":0},{"n1":802,"n2":859,"w":183},{"n1":802,"n2":917,"w":123},{"n1":802,"n2":974,"w":91},{"n1":802,"n2":1031,"w":106},{"n1":802,"n2":1088,"w":58},{"n1":802,"n2":1146,"w":108},{"n1":802,"n2":1203,"w":59},{"n1":802,"n2":1260,"w":108},{"n1":802,"n2":1317,"w":119},{"n1":802,"n2":1375,"w":64},{"n1":802,"n2":1432,"w":114},{"n1":802,"n2":1489,"w":89},{"n1":802,"n2":1546,"w":21},{"n1":802,"n2":1604,"w":88},{"n1":802,"n2":1662,"w":56},{"n1":802,"n2":1719,"w":91},{"n1":802,"n2":1776,"w":25},{"n1":802,"n2":1834,"w":39},{"n1":802,"n2":1891,"w":189},{"n1":802,"n2":1948,"w":226},{"n1":802,"n2":2005,"w":220},{"n1":802,"n2":2063,"w":44},{"n1":802,"n2":2120,"w":117},{"n1":802,"n2":2177,"w":52},{"n1":802,"n2":2234,"w":58},{"n1":802,"n2":2292,"w":71},{"n1":802,"n2":2349,"w":89},{"n1":802,"n2":2406,"w":48},{"n1":802,"n2":2463,"w":143},{"n1":802,"n2":2521,"w":78},{"n1":802,"n2":2578,"w":193},{"n1":802,"n2":2635,"w":80},{"n1":802,"n2":2692,"w":80},{"n1":859,"n2":782,"w":195},{"n1":859,"n2":1655,"w":84},{"n1":859,"n2":0,"w":141},{"n1":859,"n2":57,"w":178},{"n1":859,"n2":114,"w":148},{"n1":859,"n2":171,"w":120},{"n1":859,"n2":229,"w":95},{"n1":859,"n2":286,"w":113},{"n1":859,"n2":343,"w":109},{"n1":859,"n2":400,"w":154},{"n1":859,"n2":458,"w":229},{"n1":859,"n2":515,"w":160},{"n1":859,"n2":572,"w":136},{"n1":859,"n2":629,"w":77},{"n1":859,"n2":687,"w":116},{"n1":859,"n2":744,"w":92},{"n1":859,"n2":802,"w":183},{"n1":859,"n2":859,"w":0},{"n1":859,"n2":917,"w":66},{"n1":859,"n2":974,"w":114},{"n1":859,"n2":1031,"w":88},{"n1":859,"n2":1088,"w":170},{"n1":859,"n2":1146,"w":109},{"n1":859,"n2":1203,"w":241},{"n1":859,"n2":1260,"w":97},{"n1":859,"n2":1317,"w":108},{"n1":859,"n2":1375,"w":245},{"n1":859,"n2":1432,"w":70},{"n1":859,"n2":1489,"w":98},{"n1":859,"n2":1546,"w":173},{"n1":859,"n2":1604,"w":104},{"n1":859,"n2":1662,"w":200},{"n1":859,"n2":1719,"w":111},{"n1":859,"n2":1776,"w":196},{"n1":859,"n2":1834,"w":149},{"n1":859,"n2":1891,"w":76},{"n1":859,"n2":1948,"w":44},{"n1":859,"n2":2005,"w":38},{"n1":859,"n2":2063,"w":181},{"n1":859,"n2":2120,"w":84},{"n1":859,"n2":2177,"w":222},{"n1":859,"n2":2234,"w":155},{"n1":859,"n2":2292,"w":251},{"n1":859,"n2":2349,"w":112},{"n1":859,"n2":2406,"w":139},{"n1":859,"n2":2463,"w":83},{"n1":859,"n2":2521,"w":239},{"n1":859,"n2":2578,"w":38},{"n1":859,"n2":2635,"w":152},{"n1":859,"n2":2692,"w":241},{"n1":917,"n2":782,"w":135},{"n1":917,"n2":1655,"w":24},{"n1":917,"n2":0,"w":81},{"n1":917,"n2":57,"w":118},{"n1":917,"n2":114,"w":87},{"n1":917,"n2":171,"w":60},{"n1":917,"n2":229,"w":35},{"n1":917,"n2":286,"w":64},{"n1":917,"n2":343,"w":52},{"n1":917,"n2":400,"w":98},{"n1":917,"n2":458,"w":175},{"n1":917,"n2":515,"w":99},{"n1":917,"n2":572,"w":78},{"n1":917,"n2":629,"w":49},{"n1":917,"n2":687,"w":67},{"n1":917,"n2":744,"w":60},{"n1":917,"n2":802,"w":124},{"n1":917,"n2":859,"w":67},{"n1":917,"n2":917,"w":0},{"n1":917,"n2":974,"w":53},{"n1":917,"n2":1031,"w":25},{"n1":917,"n2":1088,"w":110},{"n1":917,"n2":1146,"w":51},{"n1":917,"n2":1203,"w":181},{"n1":917,"n2":1260,"w":32},{"n1":917,"n2":1317,"w":51},{"n1":917,"n2":1375,"w":185},{"n1":917,"n2":1432,"w":11},{"n1":917,"n2":1489,"w":38},{"n1":917,"n2":1546,"w":113},{"n1":917,"n2":1604,"w":53},{"n1":917,"n2":1662,"w":150},{"n1":917,"n2":1719,"w":50},{"n1":917,"n2":1776,"w":136},{"n1":917,"n2":1834,"w":89},{"n1":917,"n2":1891,"w":76},{"n1":917,"n2":1948,"w":109},{"n1":917,"n2":2005,"w":104},{"n1":917,"n2":2063,"w":122},{"n1":917,"n2":2120,"w":48},{"n1":917,"n2":2177,"w":162},{"n1":917,"n2":2234,"w":105},{"n1":917,"n2":2292,"w":191},{"n1":917,"n2":2349,"w":66},{"n1":917,"n2":2406,"w":79},{"n1":917,"n2":2463,"w":38},{"n1":917,"n2":2521,"w":185},{"n1":917,"n2":2578,"w":71},{"n1":917,"n2":2635,"w":92},{"n1":917,"n2":2692,"w":187},{"n1":974,"n2":782,"w":103},{"n1":974,"n2":1655,"w":37},{"n1":974,"n2":0,"w":50},{"n1":974,"n2":57,"w":73},{"n1":974,"n2":114,"w":34},{"n1":974,"n2":171,"w":19},{"n1":974,"n2":229,"w":34},{"n1":974,"n2":286,"w":49},{"n1":974,"n2":343,"w":23},{"n1":974,"n2":400,"w":87},{"n1":974,"n2":458,"w":155},{"n1":974,"n2":515,"w":75},{"n1":974,"n2":572,"w":67},{"n1":974,"n2":629,"w":74},{"n1":974,"n2":687,"w":60},{"n1":974,"n2":744,"w":91},{"n1":974,"n2":802,"w":91},{"n1":974,"n2":859,"w":114},{"n1":974,"n2":917,"w":53},{"n1":974,"n2":974,"w":0},{"n1":974,"n2":1031,"w":28},{"n1":974,"n2":1088,"w":64},{"n1":974,"n2":1146,"w":19},{"n1":974,"n2":1203,"w":149},{"n1":974,"n2":1260,"w":22},{"n1":974,"n2":1317,"w":30},{"n1":974,"n2":1375,"w":153},{"n1":974,"n2":1432,"w":45},{"n1":974,"n2":1489,"w":37},{"n1":974,"n2":1546,"w":81},{"n1":974,"n2":1604,"w":55},{"n1":974,"n2":1662,"w":135},{"n1":974,"n2":1719,"w":3},{"n1":974,"n2":1776,"w":111},{"n1":974,"n2":1834,"w":64},{"n1":974,"n2":1891,"w":103},{"n1":974,"n2":1948,"w":156},{"n1":974,"n2":2005,"w":151},{"n1":974,"n2":2063,"w":79},{"n1":974,"n2":2120,"w":79},{"n1":974,"n2":2177,"w":140},{"n1":974,"n2":2234,"w":98},{"n1":974,"n2":2292,"w":159},{"n1":974,"n2":2349,"w":73},{"n1":974,"n2":2406,"w":52},{"n1":974,"n2":2463,"w":55},{"n1":974,"n2":2521,"w":165},{"n1":974,"n2":2578,"w":120},{"n1":974,"n2":2635,"w":39},{"n1":974,"n2":2692,"w":167},{"n1":1031,"n2":782,"w":117},{"n1":1031,"n2":1655,"w":15},{"n1":1031,"n2":0,"w":63},{"n1":1031,"n2":57,"w":95},{"n1":1031,"n2":114,"w":63},{"n1":1031,"n2":171,"w":37},{"n1":1031,"n2":229,"w":21},{"n1":1031,"n2":286,"w":54},{"n1":1031,"n2":343,"w":33},{"n1":1031,"n2":400,"w":86},{"n1":1031,"n2":458,"w":163},{"n1":1031,"n2":515,"w":87},{"n1":1031,"n2":572,"w":66},{"n1":1031,"n2":629,"w":59},{"n1":1031,"n2":687,"w":59},{"n1":1031,"n2":744,"w":68},{"n1":1031,"n2":802,"w":105},{"n1":1031,"n2":859,"w":89},{"n1":1031,"n2":917,"w":25},{"n1":1031,"n2":974,"w":28},{"n1":1031,"n2":1031,"w":0},{"n1":1031,"n2":1088,"w":87},{"n1":1031,"n2":1146,"w":30},{"n1":1031,"n2":1203,"w":163},{"n1":1031,"n2":1260,"w":10},{"n1":1031,"n2":1317,"w":36},{"n1":1031,"n2":1375,"w":167},{"n1":1031,"n2":1432,"w":21},{"n1":1031,"n2":1489,"w":25},{"n1":1031,"n2":1546,"w":95},{"n1":1031,"n2":1604,"w":44},{"n1":1031,"n2":1662,"w":138},{"n1":1031,"n2":1719,"w":26},{"n1":1031,"n2":1776,"w":124},{"n1":1031,"n2":1834,"w":74},{"n1":1031,"n2":1891,"w":88},{"n1":1031,"n2":1948,"w":131},{"n1":1031,"n2":2005,"w":125},{"n1":1031,"n2":2063,"w":100},{"n1":1031,"n2":2120,"w":56},{"n1":1031,"n2":2177,"w":150},{"n1":1031,"n2":2234,"w":93},{"n1":1031,"n2":2292,"w":173},{"n1":1031,"n2":2349,"w":63},{"n1":1031,"n2":2406,"w":61},{"n1":1031,"n2":2463,"w":42},{"n1":1031,"n2":2521,"w":173},{"n1":1031,"n2":2578,"w":93},{"n1":1031,"n2":2635,"w":68},{"n1":1031,"n2":2692,"w":175},{"n1":1088,"n2":782,"w":62},{"n1":1088,"n2":1655,"w":94},{"n1":1088,"n2":0,"w":40},{"n1":1088,"n2":57,"w":10},{"n1":1088,"n2":114,"w":42},{"n1":1088,"n2":171,"w":53},{"n1":1088,"n2":229,"w":80},{"n1":1088,"n2":286,"w":99},{"n1":1088,"n2":343,"w":81},{"n1":1088,"n2":400,"w":82},{"n1":1088,"n2":458,"w":125},{"n1":1088,"n2":515,"w":58},{"n1":1088,"n2":572,"w":76},{"n1":1088,"n2":629,"w":137},{"n1":1088,"n2":687,"w":113},{"n1":1088,"n2":744,"w":130},{"n1":1088,"n2":802,"w":57},{"n1":1088,"n2":859,"w":171},{"n1":1088,"n2":917,"w":111},{"n1":1088,"n2":974,"w":64},{"n1":1088,"n2":1031,"w":88},{"n1":1088,"n2":1088,"w":0},{"n1":1088,"n2":1146,"w":79},{"n1":1088,"n2":1203,"w":97},{"n1":1088,"n2":1260,"w":86},{"n1":1088,"n2":1317,"w":86},{"n1":1088,"n2":1375,"w":103},{"n1":1088,"n2":1432,"w":102},{"n1":1088,"n2":1489,"w":82},{"n1":1088,"n2":1546,"w":40},{"n1":1088,"n2":1604,"w":92},{"n1":1088,"n2":1662,"w":111},{"n1":1088,"n2":1719,"w":65},{"n1":1088,"n2":1776,"w":81},{"n1":1088,"n2":1834,"w":53},{"n1":1088,"n2":1891,"w":164},{"n1":1088,"n2":1948,"w":213},{"n1":1088,"n2":2005,"w":207},{"n1":1088,"n2":2063,"w":24},{"n1":1088,"n2":2120,"w":120},{"n1":1088,"n2":2177,"w":109},{"n1":1088,"n2":2234,"w":95},{"n1":1088,"n2":2292,"w":118},{"n1":1088,"n2":2349,"w":101},{"n1":1088,"n2":2406,"w":46},{"n1":1088,"n2":2463,"w":118},{"n1":1088,"n2":2521,"w":134},{"n1":1088,"n2":2578,"w":180},{"n1":1088,"n2":2635,"w":30},{"n1":1088,"n2":2692,"w":136},{"n1":1146,"n2":782,"w":120},{"n1":1146,"n2":1655,"w":45},{"n1":1146,"n2":0,"w":67},{"n1":1146,"n2":57,"w":88},{"n1":1146,"n2":114,"w":41},{"n1":1146,"n2":171,"w":36},{"n1":1146,"n2":229,"w":45},{"n1":1146,"n2":286,"w":32},{"n1":1146,"n2":343,"w":4},{"n1":1146,"n2":400,"w":106},{"n1":1146,"n2":458,"w":172},{"n1":1146,"n2":515,"w":92},{"n1":1146,"n2":572,"w":85},{"n1":1146,"n2":629,"w":61},{"n1":1146,"n2":687,"w":43},{"n1":1146,"n2":744,"w":99},{"n1":1146,"n2":802,"w":108},{"n1":1146,"n2":859,"w":110},{"n1":1146,"n2":917,"w":51},{"n1":1146,"n2":974,"w":19},{"n1":1146,"n2":1031,"w":30},{"n1":1146,"n2":1088,"w":79},{"n1":1146,"n2":1146,"w":0},{"n1":1146,"n2":1203,"w":166},{"n1":1146,"n2":1260,"w":22},{"n1":1146,"n2":1317,"w":12},{"n1":1146,"n2":1375,"w":170},{"n1":1146,"n2":1432,"w":50},{"n1":1146,"n2":1489,"w":51},{"n1":1146,"n2":1546,"w":98},{"n1":1146,"n2":1604,"w":70},{"n1":1146,"n2":1662,"w":152},{"n1":1146,"n2":1719,"w":20},{"n1":1146,"n2":1776,"w":128},{"n1":1146,"n2":1834,"w":81},{"n1":1146,"n2":1891,"w":88},{"n1":1146,"n2":1948,"w":150},{"n1":1146,"n2":2005,"w":145},{"n1":1146,"n2":2063,"w":94},{"n1":1146,"n2":2120,"w":87},{"n1":1146,"n2":2177,"w":157},{"n1":1146,"n2":2234,"w":117},{"n1":1146,"n2":2292,"w":176},{"n1":1146,"n2":2349,"w":88},{"n1":1146,"n2":2406,"w":70},{"n1":1146,"n2":2463,"w":41},{"n1":1146,"n2":2521,"w":182},{"n1":1146,"n2":2578,"w":111},{"n1":1146,"n2":2635,"w":53},{"n1":1146,"n2":2692,"w":184},{"n1":1203,"n2":782,"w":47},{"n1":1203,"n2":1655,"w":162},{"n1":1203,"n2":0,"w":101},{"n1":1203,"n2":57,"w":89},{"n1":1203,"n2":114,"w":138},{"n1":1203,"n2":171,"w":136},{"n1":1203,"n2":229,"w":148},{"n1":1203,"n2":286,"w":193},{"n1":1203,"n2":343,"w":170},{"n1":1203,"n2":400,"w":106},{"n1":1203,"n2":458,"w":71},{"n1":1203,"n2":515,"w":88},{"n1":1203,"n2":572,"w":118},{"n1":1203,"n2":629,"w":219},{"n1":1203,"n2":687,"w":207},{"n1":1203,"n2":744,"w":184},{"n1":1203,"n2":802,"w":59},{"n1":1203,"n2":859,"w":242},{"n1":1203,"n2":917,"w":182},{"n1":1203,"n2":974,"w":150},{"n1":1203,"n2":1031,"w":164},{"n1":1203,"n2":1088,"w":97},{"n1":1203,"n2":1146,"w":167},{"n1":1203,"n2":1203,"w":0},{"n1":1203,"n2":1260,"w":167},{"n1":1203,"n2":1317,"w":178},{"n1":1203,"n2":1375,"w":14},{"n1":1203,"n2":1432,"w":173},{"n1":1203,"n2":1489,"w":148},{"n1":1203,"n2":1546,"w":76},{"n1":1203,"n2":1604,"w":148},{"n1":1203,"n2":1662,"w":82},{"n1":1203,"n2":1719,"w":150},{"n1":1203,"n2":1776,"w":60},{"n1":1203,"n2":1834,"w":97},{"n1":1203,"n2":1891,"w":248},{"n1":1203,"n2":1948,"w":284},{"n1":1203,"n2":2005,"w":278},{"n1":1203,"n2":2063,"w":84},{"n1":1203,"n2":2120,"w":176},{"n1":1203,"n2":2177,"w":55},{"n1":1203,"n2":2234,"w":111},{"n1":1203,"n2":2292,"w":35},{"n1":1203,"n2":2349,"w":148},{"n1":1203,"n2":2406,"w":106},{"n1":1203,"n2":2463,"w":202},{"n1":1203,"n2":2521,"w":70},{"n1":1203,"n2":2578,"w":251},{"n1":1203,"n2":2635,"w":126},{"n1":1203,"n2":2692,"w":77},{"n1":1260,"n2":782,"w":120},{"n1":1260,"n2":1655,"w":24},{"n1":1260,"n2":0,"w":65},{"n1":1260,"n2":57,"w":94},{"n1":1260,"n2":114,"w":57},{"n1":1260,"n2":171,"w":36},{"n1":1260,"n2":229,"w":29},{"n1":1260,"n2":286,"w":45},{"n1":1260,"n2":343,"w":24},{"n1":1260,"n2":400,"w":94},{"n1":1260,"n2":458,"w":170},{"n1":1260,"n2":515,"w":90},{"n1":1260,"n2":572,"w":73},{"n1":1260,"n2":629,"w":55},{"n1":1260,"n2":687,"w":53},{"n1":1260,"n2":744,"w":78},{"n1":1260,"n2":802,"w":108},{"n1":1260,"n2":859,"w":97},{"n1":1260,"n2":917,"w":31},{"n1":1260,"n2":974,"w":23},{"n1":1260,"n2":1031,"w":10},{"n1":1260,"n2":1088,"w":86},{"n1":1260,"n2":1146,"w":22},{"n1":1260,"n2":1203,"w":166},{"n1":1260,"n2":1260,"w":0},{"n1":1260,"n2":1317,"w":26},{"n1":1260,"n2":1375,"w":170},{"n1":1260,"n2":1432,"w":31},{"n1":1260,"n2":1489,"w":34},{"n1":1260,"n2":1546,"w":98},{"n1":1260,"n2":1604,"w":53},{"n1":1260,"n2":1662,"w":145},{"n1":1260,"n2":1719,"w":22},{"n1":1260,"n2":1776,"w":127},{"n1":1260,"n2":1834,"w":77},{"n1":1260,"n2":1891,"w":84},{"n1":1260,"n2":1948,"w":139},{"n1":1260,"n2":2005,"w":134},{"n1":1260,"n2":2063,"w":100},{"n1":1260,"n2":2120,"w":66},{"n1":1260,"n2":2177,"w":156},{"n1":1260,"n2":2234,"w":101},{"n1":1260,"n2":2292,"w":176},{"n1":1260,"n2":2349,"w":71},{"n1":1260,"n2":2406,"w":64},{"n1":1260,"n2":2463,"w":38},{"n1":1260,"n2":2521,"w":180},{"n1":1260,"n2":2578,"w":100},{"n1":1260,"n2":2635,"w":62},{"n1":1260,"n2":2692,"w":182},{"n1":1317,"n2":782,"w":131},{"n1":1317,"n2":1655,"w":51},{"n1":1317,"n2":0,"w":77},{"n1":1317,"n2":57,"w":96},{"n1":1317,"n2":114,"w":47},{"n1":1317,"n2":171,"w":47},{"n1":1317,"n2":229,"w":53},{"n1":1317,"n2":286,"w":20},{"n1":1317,"n2":343,"w":9},{"n1":1317,"n2":400,"w":115},{"n1":1317,"n2":458,"w":183},{"n1":1317,"n2":515,"w":103},{"n1":1317,"n2":572,"w":95},{"n1":1317,"n2":629,"w":50},{"n1":1317,"n2":687,"w":31},{"n1":1317,"n2":744,"w":104},{"n1":1317,"n2":802,"w":119},{"n1":1317,"n2":859,"w":108},{"n1":1317,"n2":917,"w":51},{"n1":1317,"n2":974,"w":29},{"n1":1317,"n2":1031,"w":36},{"n1":1317,"n2":1088,"w":86},{"n1":1317,"n2":1146,"w":12},{"n1":1317,"n2":1203,"w":177},{"n1":1317,"n2":1260,"w":26},{"n1":1317,"n2":1317,"w":0},{"n1":1317,"n2":1375,"w":181},{"n1":1317,"n2":1432,"w":53},{"n1":1317,"n2":1489,"w":58},{"n1":1317,"n2":1546,"w":109},{"n1":1317,"n2":1604,"w":78},{"n1":1317,"n2":1662,"w":162},{"n1":1317,"n2":1719,"w":30},{"n1":1317,"n2":1776,"w":139},{"n1":1317,"n2":1834,"w":92},{"n1":1317,"n2":1891,"w":77},{"n1":1317,"n2":1948,"w":149},{"n1":1317,"n2":2005,"w":144},{"n1":1317,"n2":2063,"w":105},{"n1":1317,"n2":2120,"w":92},{"n1":1317,"n2":2177,"w":168},{"n1":1317,"n2":2234,"w":127},{"n1":1317,"n2":2292,"w":187},{"n1":1317,"n2":2349,"w":96},{"n1":1317,"n2":2406,"w":80},{"n1":1317,"n2":2463,"w":34},{"n1":1317,"n2":2521,"w":193},{"n1":1317,"n2":2578,"w":103},{"n1":1317,"n2":2635,"w":60},{"n1":1317,"n2":2692,"w":195},{"n1":1375,"n2":782,"w":51},{"n1":1375,"n2":1655,"w":165},{"n1":1375,"n2":0,"w":105},{"n1":1375,"n2":57,"w":95},{"n1":1375,"n2":114,"w":143},{"n1":1375,"n2":171,"w":140},{"n1":1375,"n2":229,"w":151},{"n1":1375,"n2":286,"w":197},{"n1":1375,"n2":343,"w":174},{"n1":1375,"n2":400,"w":106},{"n1":1375,"n2":458,"w":64},{"n1":1375,"n2":515,"w":92},{"n1":1375,"n2":572,"w":120},{"n1":1375,"n2":629,"w":223},{"n1":1375,"n2":687,"w":211},{"n1":1375,"n2":744,"w":184},{"n1":1375,"n2":802,"w":64},{"n1":1375,"n2":859,"w":246},{"n1":1375,"n2":917,"w":186},{"n1":1375,"n2":974,"w":154},{"n1":1375,"n2":1031,"w":168},{"n1":1375,"n2":1088,"w":103},{"n1":1375,"n2":1146,"w":171},{"n1":1375,"n2":1203,"w":14},{"n1":1375,"n2":1260,"w":171},{"n1":1375,"n2":1317,"w":181},{"n1":1375,"n2":1375,"w":0},{"n1":1375,"n2":1432,"w":177},{"n1":1375,"n2":1489,"w":152},{"n1":1375,"n2":1546,"w":81},{"n1":1375,"n2":1604,"w":151},{"n1":1375,"n2":1662,"w":77},{"n1":1375,"n2":1719,"w":154},{"n1":1375,"n2":1776,"w":60},{"n1":1375,"n2":1834,"w":102},{"n1":1375,"n2":1891,"w":252},{"n1":1375,"n2":1948,"w":288},{"n1":1375,"n2":2005,"w":282},{"n1":1375,"n2":2063,"w":90},{"n1":1375,"n2":2120,"w":177},{"n1":1375,"n2":2177,"w":50},{"n1":1375,"n2":2234,"w":108},{"n1":1375,"n2":2292,"w":26},{"n1":1375,"n2":2349,"w":148},{"n1":1375,"n2":2406,"w":110},{"n1":1375,"n2":2463,"w":206},{"n1":1375,"n2":2521,"w":63},{"n1":1375,"n2":2578,"w":255},{"n1":1375,"n2":2635,"w":132},{"n1":1375,"n2":2692,"w":70},{"n1":1432,"n2":782,"w":126},{"n1":1432,"n2":1655,"w":15},{"n1":1432,"n2":0,"w":72},{"n1":1432,"n2":57,"w":109},{"n1":1432,"n2":114,"w":79},{"n1":1432,"n2":171,"w":51},{"n1":1432,"n2":229,"w":26},{"n1":1432,"n2":286,"w":68},{"n1":1432,"n2":343,"w":52},{"n1":1432,"n2":400,"w":89},{"n1":1432,"n2":458,"w":166},{"n1":1432,"n2":515,"w":90},{"n1":1432,"n2":572,"w":69},{"n1":1432,"n2":629,"w":60},{"n1":1432,"n2":687,"w":72},{"n1":1432,"n2":744,"w":55},{"n1":1432,"n2":802,"w":115},{"n1":1432,"n2":859,"w":70},{"n1":1432,"n2":917,"w":11},{"n1":1432,"n2":974,"w":45},{"n1":1432,"n2":1031,"w":21},{"n1":1432,"n2":1088,"w":101},{"n1":1432,"n2":1146,"w":50},{"n1":1432,"n2":1203,"w":173},{"n1":1432,"n2":1260,"w":31},{"n1":1432,"n2":1317,"w":53},{"n1":1432,"n2":1375,"w":177},{"n1":1432,"n2":1432,"w":0},{"n1":1432,"n2":1489,"w":29},{"n1":1432,"n2":1546,"w":104},{"n1":1432,"n2":1604,"w":41},{"n1":1432,"n2":1662,"w":139},{"n1":1432,"n2":1719,"w":42},{"n1":1432,"n2":1776,"w":127},{"n1":1432,"n2":1834,"w":79},{"n1":1432,"n2":1891,"w":87},{"n1":1432,"n2":1948,"w":112},{"n1":1432,"n2":2005,"w":107},{"n1":1432,"n2":2063,"w":113},{"n1":1432,"n2":2120,"w":43},{"n1":1432,"n2":2177,"w":153},{"n1":1432,"n2":2234,"w":94},{"n1":1432,"n2":2292,"w":183},{"n1":1432,"n2":2349,"w":56},{"n1":1432,"n2":2406,"w":70},{"n1":1432,"n2":2463,"w":45},{"n1":1432,"n2":2521,"w":176},{"n1":1432,"n2":2578,"w":80},{"n1":1432,"n2":2635,"w":84},{"n1":1432,"n2":2692,"w":178},{"n1":1489,"n2":782,"w":101},{"n1":1489,"n2":1655,"w":16},{"n1":1489,"n2":0,"w":49},{"n1":1489,"n2":57,"w":90},{"n1":1489,"n2":114,"w":67},{"n1":1489,"n2":171,"w":35},{"n1":1489,"n2":229,"w":5},{"n1":1489,"n2":286,"w":78},{"n1":1489,"n2":343,"w":55},{"n1":1489,"n2":400,"w":60},{"n1":1489,"n2":458,"w":137},{"n1":1489,"n2":515,"w":61},{"n1":1489,"n2":572,"w":40},{"n1":1489,"n2":629,"w":84},{"n1":1489,"n2":687,"w":84},{"n1":1489,"n2":744,"w":56},{"n1":1489,"n2":802,"w":88},{"n1":1489,"n2":859,"w":97},{"n1":1489,"n2":917,"w":37},{"n1":1489,"n2":974,"w":37},{"n1":1489,"n2":1031,"w":25},{"n1":1489,"n2":1088,"w":82},{"n1":1489,"n2":1146,"w":51},{"n1":1489,"n2":1203,"w":147},{"n1":1489,"n2":1260,"w":34},{"n1":1489,"n2":1317,"w":58},{"n1":1489,"n2":1375,"w":152},{"n1":1489,"n2":1432,"w":28},{"n1":1489,"n2":1489,"w":0},{"n1":1489,"n2":1546,"w":81},{"n1":1489,"n2":1604,"w":21},{"n1":1489,"n2":1662,"w":112},{"n1":1489,"n2":1719,"w":35},{"n1":1489,"n2":1776,"w":98},{"n1":1489,"n2":1834,"w":50},{"n1":1489,"n2":1891,"w":113},{"n1":1489,"n2":1948,"w":140},{"n1":1489,"n2":2005,"w":134},{"n1":1489,"n2":2063,"w":90},{"n1":1489,"n2":2120,"w":44},{"n1":1489,"n2":2177,"w":124},{"n1":1489,"n2":2234,"w":69},{"n1":1489,"n2":2292,"w":158},{"n1":1489,"n2":2349,"w":39},{"n1":1489,"n2":2406,"w":45},{"n1":1489,"n2":2463,"w":67},{"n1":1489,"n2":2521,"w":147},{"n1":1489,"n2":2578,"w":107},{"n1":1489,"n2":2635,"w":71},{"n1":1489,"n2":2692,"w":149},{"n1":1546,"n2":782,"w":29},{"n1":1546,"n2":1655,"w":92},{"n1":1546,"n2":0,"w":31},{"n1":1546,"n2":57,"w":42},{"n1":1546,"n2":114,"w":75},{"n1":1546,"n2":171,"w":66},{"n1":1546,"n2":229,"w":78},{"n1":1546,"n2":286,"w":123},{"n1":1546,"n2":343,"w":100},{"n1":1546,"n2":400,"w":53},{"n1":1546,"n2":458,"w":88},{"n1":1546,"n2":515,"w":24},{"n1":1546,"n2":572,"w":56},{"n1":1546,"n2":629,"w":149},{"n1":1546,"n2":687,"w":137},{"n1":1546,"n2":744,"w":120},{"n1":1546,"n2":802,"w":21},{"n1":1546,"n2":859,"w":172},{"n1":1546,"n2":917,"w":112},{"n1":1546,"n2":974,"w":80},{"n1":1546,"n2":1031,"w":94},{"n1":1546,"n2":1088,"w":40},{"n1":1546,"n2":1146,"w":97},{"n1":1546,"n2":1203,"w":75},{"n1":1546,"n2":1260,"w":97},{"n1":1546,"n2":1317,"w":107},{"n1":1546,"n2":1375,"w":81},{"n1":1546,"n2":1432,"w":103},{"n1":1546,"n2":1489,"w":80},{"n1":1546,"n2":1546,"w":0},{"n1":1546,"n2":1604,"w":81},{"n1":1546,"n2":1662,"w":74},{"n1":1546,"n2":1719,"w":80},{"n1":1546,"n2":1776,"w":44},{"n1":1546,"n2":1834,"w":31},{"n1":1546,"n2":1891,"w":178},{"n1":1546,"n2":1948,"w":214},{"n1":1546,"n2":2005,"w":208},{"n1":1546,"n2":2063,"w":28},{"n1":1546,"n2":2120,"w":110},{"n1":1546,"n2":2177,"w":73},{"n1":1546,"n2":2234,"w":66},{"n1":1546,"n2":2292,"w":89},{"n1":1546,"n2":2349,"w":86},{"n1":1546,"n2":2406,"w":36},{"n1":1546,"n2":2463,"w":132},{"n1":1546,"n2":2521,"w":98},{"n1":1546,"n2":2578,"w":181},{"n1":1546,"n2":2635,"w":63},{"n1":1546,"n2":2692,"w":100},{"n1":1604,"n2":782,"w":100},{"n1":1604,"n2":1655,"w":33},{"n1":1604,"n2":0,"w":52},{"n1":1604,"n2":57,"w":97},{"n1":1604,"n2":114,"w":84},{"n1":1604,"n2":171,"w":52},{"n1":1604,"n2":229,"w":26},{"n1":1604,"n2":286,"w":97},{"n1":1604,"n2":343,"w":74},{"n1":1604,"n2":400,"w":51},{"n1":1604,"n2":458,"w":127},{"n1":1604,"n2":515,"w":60},{"n1":1604,"n2":572,"w":33},{"n1":1604,"n2":629,"w":102},{"n1":1604,"n2":687,"w":103},{"n1":1604,"n2":744,"w":40},{"n1":1604,"n2":802,"w":87},{"n1":1604,"n2":859,"w":104},{"n1":1604,"n2":917,"w":53},{"n1":1604,"n2":974,"w":55},{"n1":1604,"n2":1031,"w":44},{"n1":1604,"n2":1088,"w":91},{"n1":1604,"n2":1146,"w":70},{"n1":1604,"n2":1203,"w":147},{"n1":1604,"n2":1260,"w":53},{"n1":1604,"n2":1317,"w":78},{"n1":1604,"n2":1375,"w":151},{"n1":1604,"n2":1432,"w":41},{"n1":1604,"n2":1489,"w":21},{"n1":1604,"n2":1546,"w":82},{"n1":1604,"n2":1604,"w":0},{"n1":1604,"n2":1662,"w":97},{"n1":1604,"n2":1719,"w":52},{"n1":1604,"n2":1776,"w":93},{"n1":1604,"n2":1834,"w":50},{"n1":1604,"n2":1891,"w":129},{"n1":1604,"n2":1948,"w":146},{"n1":1604,"n2":2005,"w":141},{"n1":1604,"n2":2063,"w":95},{"n1":1604,"n2":2120,"w":30},{"n1":1604,"n2":2177,"w":119},{"n1":1604,"n2":2234,"w":53},{"n1":1604,"n2":2292,"w":157},{"n1":1604,"n2":2349,"w":19},{"n1":1604,"n2":2406,"w":48},{"n1":1604,"n2":2463,"w":85},{"n1":1604,"n2":2521,"w":137},{"n1":1604,"n2":2578,"w":122},{"n1":1604,"n2":2635,"w":87},{"n1":1604,"n2":2692,"w":139},{"n1":1662,"n2":782,"w":61},{"n1":1662,"n2":1655,"w":127},{"n1":1662,"n2":0,"w":85},{"n1":1662,"n2":57,"w":111},{"n1":1662,"n2":114,"w":137},{"n1":1662,"n2":171,"w":120},{"n1":1662,"n2":229,"w":117},{"n1":1662,"n2":286,"w":178},{"n1":1662,"n2":343,"w":155},{"n1":1662,"n2":400,"w":53},{"n1":1662,"n2":458,"w":33},{"n1":1662,"n2":515,"w":61},{"n1":1662,"n2":572,"w":74},{"n1":1662,"n2":629,"w":194},{"n1":1662,"n2":687,"w":192},{"n1":1662,"n2":744,"w":122},{"n1":1662,"n2":802,"w":56},{"n1":1662,"n2":859,"w":199},{"n1":1662,"n2":917,"w":149},{"n1":1662,"n2":974,"w":135},{"n1":1662,"n2":1031,"w":137},{"n1":1662,"n2":1088,"w":111},{"n1":1662,"n2":1146,"w":152},{"n1":1662,"n2":1203,"w":82},{"n1":1662,"n2":1260,"w":145},{"n1":1662,"n2":1317,"w":162},{"n1":1662,"n2":1375,"w":77},{"n1":1662,"n2":1432,"w":139},{"n1":1662,"n2":1489,"w":112},{"n1":1662,"n2":1546,"w":74},{"n1":1662,"n2":1604,"w":97},{"n1":1662,"n2":1662,"w":0},{"n1":1662,"n2":1719,"w":134},{"n1":1662,"n2":1776,"w":34},{"n1":1662,"n2":1834,"w":76},{"n1":1662,"n2":1891,"w":224},{"n1":1662,"n2":1948,"w":242},{"n1":1662,"n2":2005,"w":236},{"n1":1662,"n2":2063,"w":99},{"n1":1662,"n2":2120,"w":117},{"n1":1662,"n2":2177,"w":29},{"n1":1662,"n2":2234,"w":45},{"n1":1662,"n2":2292,"w":73},{"n1":1662,"n2":2349,"w":90},{"n1":1662,"n2":2406,"w":87},{"n1":1662,"n2":2463,"w":178},{"n1":1662,"n2":2521,"w":43},{"n1":1662,"n2":2578,"w":219},{"n1":1662,"n2":2635,"w":129},{"n1":1662,"n2":2692,"w":45},{"n1":1719,"n2":782,"w":104},{"n1":1719,"n2":1655,"w":34},{"n1":1719,"n2":0,"w":50},{"n1":1719,"n2":57,"w":75},{"n1":1719,"n2":114,"w":37},{"n1":1719,"n2":171,"w":18},{"n1":1719,"n2":229,"w":31},{"n1":1719,"n2":286,"w":50},{"n1":1719,"n2":343,"w":24},{"n1":1719,"n2":400,"w":85},{"n1":1719,"n2":458,"w":156},{"n1":1719,"n2":515,"w":76},{"n1":1719,"n2":572,"w":65},{"n1":1719,"n2":629,"w":75},{"n1":1719,"n2":687,"w":60},{"n1":1719,"n2":744,"w":88},{"n1":1719,"n2":802,"w":92},{"n1":1719,"n2":859,"w":111},{"n1":1719,"n2":917,"w":50},{"n1":1719,"n2":974,"w":3},{"n1":1719,"n2":1031,"w":26},{"n1":1719,"n2":1088,"w":66},{"n1":1719,"n2":1146,"w":20},{"n1":1719,"n2":1203,"w":150},{"n1":1719,"n2":1260,"w":22},{"n1":1719,"n2":1317,"w":30},{"n1":1719,"n2":1375,"w":154},{"n1":1719,"n2":1432,"w":42},{"n1":1719,"n2":1489,"w":35},{"n1":1719,"n2":1546,"w":81},{"n1":1719,"n2":1604,"w":52},{"n1":1719,"n2":1662,"w":133},{"n1":1719,"n2":1719,"w":0},{"n1":1719,"n2":1776,"w":112},{"n1":1719,"n2":1834,"w":64},{"n1":1719,"n2":1891,"w":104},{"n1":1719,"n2":1948,"w":153},{"n1":1719,"n2":2005,"w":148},{"n1":1719,"n2":2063,"w":80},{"n1":1719,"n2":2120,"w":76},{"n1":1719,"n2":2177,"w":140},{"n1":1719,"n2":2234,"w":97},{"n1":1719,"n2":2292,"w":160},{"n1":1719,"n2":2349,"w":71},{"n1":1719,"n2":2406,"w":51},{"n1":1719,"n2":2463,"w":56},{"n1":1719,"n2":2521,"w":166},{"n1":1719,"n2":2578,"w":119},{"n1":1719,"n2":2635,"w":41},{"n1":1719,"n2":2692,"w":167},{"n1":1776,"n2":782,"w":28},{"n1":1776,"n2":1655,"w":113},{"n1":1776,"n2":0,"w":61},{"n1":1776,"n2":57,"w":78},{"n1":1776,"n2":114,"w":113},{"n1":1776,"n2":171,"w":97},{"n1":1776,"n2":229,"w":103},{"n1":1776,"n2":286,"w":155},{"n1":1776,"n2":343,"w":132},{"n1":1776,"n2":400,"w":47},{"n1":1776,"n2":458,"w":45},{"n1":1776,"n2":515,"w":39},{"n1":1776,"n2":572,"w":62},{"n1":1776,"n2":629,"w":179},{"n1":1776,"n2":687,"w":169},{"n1":1776,"n2":744,"w":124},{"n1":1776,"n2":802,"w":25},{"n1":1776,"n2":859,"w":195},{"n1":1776,"n2":917,"w":135},{"n1":1776,"n2":974,"w":111},{"n1":1776,"n2":1031,"w":123},{"n1":1776,"n2":1088,"w":81},{"n1":1776,"n2":1146,"w":128},{"n1":1776,"n2":1203,"w":60},{"n1":1776,"n2":1260,"w":127},{"n1":1776,"n2":1317,"w":139},{"n1":1776,"n2":1375,"w":60},{"n1":1776,"n2":1432,"w":126},{"n1":1776,"n2":1489,"w":97},{"n1":1776,"n2":1546,"w":44},{"n1":1776,"n2":1604,"w":93},{"n1":1776,"n2":1662,"w":34},{"n1":1776,"n2":1719,"w":112},{"n1":1776,"n2":1776,"w":0},{"n1":1776,"n2":1834,"w":53},{"n1":1776,"n2":1891,"w":208},{"n1":1776,"n2":1948,"w":237},{"n1":1776,"n2":2005,"w":232},{"n1":1776,"n2":2063,"w":66},{"n1":1776,"n2":2120,"w":118},{"n1":1776,"n2":2177,"w":29},{"n1":1776,"n2":2234,"w":51},{"n1":1776,"n2":2292,"w":65},{"n1":1776,"n2":2349,"w":89},{"n1":1776,"n2":2406,"w":65},{"n1":1776,"n2":2463,"w":162},{"n1":1776,"n2":2521,"w":55},{"n1":1776,"n2":2578,"w":204},{"n1":1776,"n2":2635,"w":102},{"n1":1776,"n2":2692,"w":57},{"n1":1834,"n2":782,"w":52},{"n1":1834,"n2":1655,"w":67},{"n1":1834,"n2":0,"w":14},{"n1":1834,"n2":57,"w":57},{"n1":1834,"n2":114,"w":67},{"n1":1834,"n2":171,"w":47},{"n1":1834,"n2":229,"w":55},{"n1":1834,"n2":286,"w":108},{"n1":1834,"n2":343,"w":85},{"n1":1834,"n2":400,"w":33},{"n1":1834,"n2":458,"w":97},{"n1":1834,"n2":515,"w":15},{"n1":1834,"n2":572,"w":27},{"n1":1834,"n2":629,"w":129},{"n1":1834,"n2":687,"w":122},{"n1":1834,"n2":744,"w":89},{"n1":1834,"n2":802,"w":40},{"n1":1834,"n2":859,"w":149},{"n1":1834,"n2":917,"w":89},{"n1":1834,"n2":974,"w":64},{"n1":1834,"n2":1031,"w":74},{"n1":1834,"n2":1088,"w":53},{"n1":1834,"n2":1146,"w":82},{"n1":1834,"n2":1203,"w":98},{"n1":1834,"n2":1260,"w":77},{"n1":1834,"n2":1317,"w":92},{"n1":1834,"n2":1375,"w":102},{"n1":1834,"n2":1432,"w":80},{"n1":1834,"n2":1489,"w":51},{"n1":1834,"n2":1546,"w":31},{"n1":1834,"n2":1604,"w":50},{"n1":1834,"n2":1662,"w":76},{"n1":1834,"n2":1719,"w":63},{"n1":1834,"n2":1776,"w":53},{"n1":1834,"n2":1834,"w":0},{"n1":1834,"n2":1891,"w":158},{"n1":1834,"n2":1948,"w":191},{"n1":1834,"n2":2005,"w":186},{"n1":1834,"n2":2063,"w":52},{"n1":1834,"n2":2120,"w":79},{"n1":1834,"n2":2177,"w":81},{"n1":1834,"n2":2234,"w":46},{"n1":1834,"n2":2292,"w":108},{"n1":1834,"n2":2349,"w":56},{"n1":1834,"n2":2406,"w":13},{"n1":1834,"n2":2463,"w":112},{"n1":1834,"n2":2521,"w":106},{"n1":1834,"n2":2578,"w":158},{"n1":1834,"n2":2635,"w":59},{"n1":1834,"n2":2692,"w":108},{"n1":1891,"n2":782,"w":201},{"n1":1891,"n2":1655,"w":99},{"n1":1891,"n2":0,"w":147},{"n1":1891,"n2":57,"w":174},{"n1":1891,"n2":114,"w":125},{"n1":1891,"n2":171,"w":120},{"n1":1891,"n2":229,"w":109},{"n1":1891,"n2":286,"w":70},{"n1":1891,"n2":343,"w":86},{"n1":1891,"n2":400,"w":173},{"n1":1891,"n2":458,"w":250},{"n1":1891,"n2":515,"w":171},{"n1":1891,"n2":572,"w":153},{"n1":1891,"n2":629,"w":31},{"n1":1891,"n2":687,"w":59},{"n1":1891,"n2":744,"w":128},{"n1":1891,"n2":802,"w":189},{"n1":1891,"n2":859,"w":76},{"n1":1891,"n2":917,"w":76},{"n1":1891,"n2":974,"w":103},{"n1":1891,"n2":1031,"w":89},{"n1":1891,"n2":1088,"w":164},{"n1":1891,"n2":1146,"w":88},{"n1":1891,"n2":1203,"w":247},{"n1":1891,"n2":1260,"w":84},{"n1":1891,"n2":1317,"w":78},{"n1":1891,"n2":1375,"w":251},{"n1":1891,"n2":1432,"w":86},{"n1":1891,"n2":1489,"w":112},{"n1":1891,"n2":1546,"w":179},{"n1":1891,"n2":1604,"w":128},{"n1":1891,"n2":1662,"w":224},{"n1":1891,"n2":1719,"w":104},{"n1":1891,"n2":1776,"w":208},{"n1":1891,"n2":1834,"w":158},{"n1":1891,"n2":1891,"w":0},{"n1":1891,"n2":1948,"w":96},{"n1":1891,"n2":2005,"w":98},{"n1":1891,"n2":2063,"w":182},{"n1":1891,"n2":2120,"w":118},{"n1":1891,"n2":2177,"w":237},{"n1":1891,"n2":2234,"w":180},{"n1":1891,"n2":2292,"w":257},{"n1":1891,"n2":2349,"w":141},{"n1":1891,"n2":2406,"w":145},{"n1":1891,"n2":2463,"w":53},{"n1":1891,"n2":2521,"w":260},{"n1":1891,"n2":2578,"w":46},{"n1":1891,"n2":2635,"w":137},{"n1":1891,"n2":2692,"w":262},{"n1":1948,"n2":782,"w":238},{"n1":1948,"n2":1655,"w":127},{"n1":1948,"n2":0,"w":183},{"n1":1948,"n2":57,"w":220},{"n1":1948,"n2":114,"w":191},{"n1":1948,"n2":171,"w":162},{"n1":1948,"n2":229,"w":138},{"n1":1948,"n2":286,"w":147},{"n1":1948,"n2":343,"w":150},{"n1":1948,"n2":400,"w":197},{"n1":1948,"n2":458,"w":272},{"n1":1948,"n2":515,"w":202},{"n1":1948,"n2":572,"w":179},{"n1":1948,"n2":629,"w":101},{"n1":1948,"n2":687,"w":141},{"n1":1948,"n2":744,"w":135},{"n1":1948,"n2":802,"w":226},{"n1":1948,"n2":859,"w":44},{"n1":1948,"n2":917,"w":109},{"n1":1948,"n2":974,"w":156},{"n1":1948,"n2":1031,"w":131},{"n1":1948,"n2":1088,"w":213},{"n1":1948,"n2":1146,"w":150},{"n1":1948,"n2":1203,"w":284},{"n1":1948,"n2":1260,"w":139},{"n1":1948,"n2":1317,"w":148},{"n1":1948,"n2":1375,"w":288},{"n1":1948,"n2":1432,"w":112},{"n1":1948,"n2":1489,"w":141},{"n1":1948,"n2":1546,"w":215},{"n1":1948,"n2":1604,"w":146},{"n1":1948,"n2":1662,"w":242},{"n1":1948,"n2":1719,"w":154},{"n1":1948,"n2":1776,"w":239},{"n1":1948,"n2":1834,"w":191},{"n1":1948,"n2":1891,"w":96},{"n1":1948,"n2":1948,"w":0},{"n1":1948,"n2":2005,"w":21},{"n1":1948,"n2":2063,"w":224},{"n1":1948,"n2":2120,"w":127},{"n1":1948,"n2":2177,"w":265},{"n1":1948,"n2":2234,"w":198},{"n1":1948,"n2":2292,"w":294},{"n1":1948,"n2":2349,"w":155},{"n1":1948,"n2":2406,"w":182},{"n1":1948,"n2":2463,"w":123},{"n1":1948,"n2":2521,"w":282},{"n1":1948,"n2":2578,"w":54},{"n1":1948,"n2":2635,"w":195},{"n1":1948,"n2":2692,"w":284},{"n1":2005,"n2":782,"w":232},{"n1":2005,"n2":1655,"w":121},{"n1":2005,"n2":0,"w":177},{"n1":2005,"n2":57,"w":215},{"n1":2005,"n2":114,"w":185},{"n1":2005,"n2":171,"w":157},{"n1":2005,"n2":229,"w":132},{"n1":2005,"n2":286,"w":148},{"n1":2005,"n2":343,"w":145},{"n1":2005,"n2":400,"w":191},{"n1":2005,"n2":458,"w":266},{"n1":2005,"n2":515,"w":197},{"n1":2005,"n2":572,"w":173},{"n1":2005,"n2":629,"w":102},{"n1":2005,"n2":687,"w":142},{"n1":2005,"n2":744,"w":129},{"n1":2005,"n2":802,"w":220},{"n1":2005,"n2":859,"w":38},{"n1":2005,"n2":917,"w":103},{"n1":2005,"n2":974,"w":150},{"n1":2005,"n2":1031,"w":125},{"n1":2005,"n2":1088,"w":207},{"n1":2005,"n2":1146,"w":145},{"n1":2005,"n2":1203,"w":278},{"n1":2005,"n2":1260,"w":134},{"n1":2005,"n2":1317,"w":143},{"n1":2005,"n2":1375,"w":282},{"n1":2005,"n2":1432,"w":107},{"n1":2005,"n2":1489,"w":135},{"n1":2005,"n2":1546,"w":210},{"n1":2005,"n2":1604,"w":141},{"n1":2005,"n2":1662,"w":236},{"n1":2005,"n2":1719,"w":148},{"n1":2005,"n2":1776,"w":233},{"n1":2005,"n2":1834,"w":186},{"n1":2005,"n2":1891,"w":97},{"n1":2005,"n2":1948,"w":21},{"n1":2005,"n2":2005,"w":0},{"n1":2005,"n2":2063,"w":218},{"n1":2005,"n2":2120,"w":121},{"n1":2005,"n2":2177,"w":259},{"n1":2005,"n2":2234,"w":192},{"n1":2005,"n2":2292,"w":288},{"n1":2005,"n2":2349,"w":149},{"n1":2005,"n2":2406,"w":176},{"n1":2005,"n2":2463,"w":119},{"n1":2005,"n2":2521,"w":276},{"n1":2005,"n2":2578,"w":55},{"n1":2005,"n2":2635,"w":189},{"n1":2005,"n2":2692,"w":278},{"n1":2063,"n2":782,"w":44},{"n1":2063,"n2":1655,"w":101},{"n1":2063,"n2":0,"w":42},{"n1":2063,"n2":57,"w":17},{"n1":2063,"n2":114,"w":66},{"n1":2063,"n2":171,"w":66},{"n1":2063,"n2":229,"w":87},{"n1":2063,"n2":286,"w":121},{"n1":2063,"n2":343,"w":98},{"n1":2063,"n2":400,"w":78},{"n1":2063,"n2":458,"w":106},{"n1":2063,"n2":515,"w":51},{"n1":2063,"n2":572,"w":77},{"n1":2063,"n2":629,"w":152},{"n1":2063,"n2":687,"w":135},{"n1":2063,"n2":744,"w":134},{"n1":2063,"n2":802,"w":44},{"n1":2063,"n2":859,"w":181},{"n1":2063,"n2":917,"w":121},{"n1":2063,"n2":974,"w":79},{"n1":2063,"n2":1031,"w":101},{"n1":2063,"n2":1088,"w":24},{"n1":2063,"n2":1146,"w":94},{"n1":2063,"n2":1203,"w":84},{"n1":2063,"n2":1260,"w":100},{"n1":2063,"n2":1317,"w":105},{"n1":2063,"n2":1375,"w":90},{"n1":2063,"n2":1432,"w":113},{"n1":2063,"n2":1489,"w":89},{"n1":2063,"n2":1546,"w":28},{"n1":2063,"n2":1604,"w":95},{"n1":2063,"n2":1662,"w":99},{"n1":2063,"n2":1719,"w":80},{"n1":2063,"n2":1776,"w":67},{"n1":2063,"n2":1834,"w":51},{"n1":2063,"n2":1891,"w":181},{"n1":2063,"n2":1948,"w":224},{"n1":2063,"n2":2005,"w":218},{"n1":2063,"n2":2063,"w":0},{"n1":2063,"n2":2120,"w":124},{"n1":2063,"n2":2177,"w":90},{"n1":2063,"n2":2234,"w":92},{"n1":2063,"n2":2292,"w":106},{"n1":2063,"n2":2349,"w":104},{"n1":2063,"n2":2406,"w":49},{"n1":2063,"n2":2463,"w":133},{"n1":2063,"n2":2521,"w":116},{"n1":2063,"n2":2578,"w":191},{"n1":2063,"n2":2635,"w":53},{"n1":2063,"n2":2692,"w":118},{"n1":2120,"n2":782,"w":129},{"n1":2120,"n2":1655,"w":43},{"n1":2120,"n2":0,"w":81},{"n1":2120,"n2":57,"w":126},{"n1":2120,"n2":114,"w":111},{"n1":2120,"n2":171,"w":79},{"n1":2120,"n2":229,"w":48},{"n1":2120,"n2":286,"w":111},{"n1":2120,"n2":343,"w":90},{"n1":2120,"n2":400,"w":75},{"n1":2120,"n2":458,"w":146},{"n1":2120,"n2":515,"w":89},{"n1":2120,"n2":572,"w":60},{"n1":2120,"n2":629,"w":94},{"n1":2120,"n2":687,"w":115},{"n1":2120,"n2":744,"w":12},{"n1":2120,"n2":802,"w":116},{"n1":2120,"n2":859,"w":84},{"n1":2120,"n2":917,"w":48},{"n1":2120,"n2":974,"w":79},{"n1":2120,"n2":1031,"w":57},{"n1":2120,"n2":1088,"w":120},{"n1":2120,"n2":1146,"w":87},{"n1":2120,"n2":1203,"w":175},{"n1":2120,"n2":1260,"w":66},{"n1":2120,"n2":1317,"w":93},{"n1":2120,"n2":1375,"w":179},{"n1":2120,"n2":1432,"w":43},{"n1":2120,"n2":1489,"w":44},{"n1":2120,"n2":1546,"w":111},{"n1":2120,"n2":1604,"w":30},{"n1":2120,"n2":1662,"w":117},{"n1":2120,"n2":1719,"w":77},{"n1":2120,"n2":1776,"w":119},{"n1":2120,"n2":1834,"w":79},{"n1":2120,"n2":1891,"w":118},{"n1":2120,"n2":1948,"w":126},{"n1":2120,"n2":2005,"w":121},{"n1":2120,"n2":2063,"w":124},{"n1":2120,"n2":2120,"w":0},{"n1":2120,"n2":2177,"w":141},{"n1":2120,"n2":2234,"w":73},{"n1":2120,"n2":2292,"w":182},{"n1":2120,"n2":2349,"w":33},{"n1":2120,"n2":2406,"w":76},{"n1":2120,"n2":2463,"w":85},{"n1":2120,"n2":2521,"w":156},{"n1":2120,"n2":2578,"w":105},{"n1":2120,"n2":2635,"w":115},{"n1":2120,"n2":2692,"w":158},{"n1":2177,"n2":782,"w":49},{"n1":2177,"n2":1655,"w":139},{"n1":2177,"n2":0,"w":90},{"n1":2177,"n2":57,"w":102},{"n1":2177,"n2":114,"w":142},{"n1":2177,"n2":171,"w":126},{"n1":2177,"n2":229,"w":129},{"n1":2177,"n2":286,"w":184},{"n1":2177,"n2":343,"w":161},{"n1":2177,"n2":400,"w":70},{"n1":2177,"n2":458,"w":18},{"n1":2177,"n2":515,"w":68},{"n1":2177,"n2":572,"w":88},{"n1":2177,"n2":629,"w":207},{"n1":2177,"n2":687,"w":198},{"n1":2177,"n2":744,"w":146},{"n1":2177,"n2":802,"w":53},{"n1":2177,"n2":859,"w":221},{"n1":2177,"n2":917,"w":161},{"n1":2177,"n2":974,"w":140},{"n1":2177,"n2":1031,"w":149},{"n1":2177,"n2":1088,"w":109},{"n1":2177,"n2":1146,"w":157},{"n1":2177,"n2":1203,"w":56},{"n1":2177,"n2":1260,"w":156},{"n1":2177,"n2":1317,"w":168},{"n1":2177,"n2":1375,"w":50},{"n1":2177,"n2":1432,"w":152},{"n1":2177,"n2":1489,"w":123},{"n1":2177,"n2":1546,"w":73},{"n1":2177,"n2":1604,"w":119},{"n1":2177,"n2":1662,"w":30},{"n1":2177,"n2":1719,"w":140},{"n1":2177,"n2":1776,"w":30},{"n1":2177,"n2":1834,"w":82},{"n1":2177,"n2":1891,"w":236},{"n1":2177,"n2":1948,"w":263},{"n1":2177,"n2":2005,"w":258},{"n1":2177,"n2":2063,"w":90},{"n1":2177,"n2":2120,"w":140},{"n1":2177,"n2":2177,"w":0},{"n1":2177,"n2":2234,"w":68},{"n1":2177,"n2":2292,"w":45},{"n1":2177,"n2":2349,"w":112},{"n1":2177,"n2":2406,"w":93},{"n1":2177,"n2":2463,"w":190},{"n1":2177,"n2":2521,"w":26},{"n1":2177,"n2":2578,"w":230},{"n1":2177,"n2":2635,"w":131},{"n1":2177,"n2":2692,"w":31},{"n1":2234,"n2":782,"w":69},{"n1":2234,"n2":1655,"w":83},{"n1":2234,"n2":0,"w":60},{"n1":2234,"n2":57,"w":98},{"n1":2234,"n2":114,"w":112},{"n1":2234,"n2":171,"w":85},{"n1":2234,"n2":229,"w":74},{"n1":2234,"n2":286,"w":145},{"n1":2234,"n2":343,"w":121},{"n1":2234,"n2":400,"w":14},{"n1":2234,"n2":458,"w":74},{"n1":2234,"n2":515,"w":42},{"n1":2234,"n2":572,"w":32},{"n1":2234,"n2":629,"w":150},{"n1":2234,"n2":687,"w":151},{"n1":2234,"n2":744,"w":79},{"n1":2234,"n2":802,"w":58},{"n1":2234,"n2":859,"w":155},{"n1":2234,"n2":917,"w":105},{"n1":2234,"n2":974,"w":98},{"n1":2234,"n2":1031,"w":92},{"n1":2234,"n2":1088,"w":95},{"n1":2234,"n2":1146,"w":117},{"n1":2234,"n2":1203,"w":111},{"n1":2234,"n2":1260,"w":101},{"n1":2234,"n2":1317,"w":126},{"n1":2234,"n2":1375,"w":109},{"n1":2234,"n2":1432,"w":95},{"n1":2234,"n2":1489,"w":69},{"n1":2234,"n2":1546,"w":66},{"n1":2234,"n2":1604,"w":53},{"n1":2234,"n2":1662,"w":45},{"n1":2234,"n2":1719,"w":97},{"n1":2234,"n2":1776,"w":51},{"n1":2234,"n2":1834,"w":46},{"n1":2234,"n2":1891,"w":179},{"n1":2234,"n2":1948,"w":198},{"n1":2234,"n2":2005,"w":192},{"n1":2234,"n2":2063,"w":92},{"n1":2234,"n2":2120,"w":73},{"n1":2234,"n2":2177,"w":68},{"n1":2234,"n2":2234,"w":0},{"n1":2234,"n2":2292,"w":110},{"n1":2234,"n2":2349,"w":45},{"n1":2234,"n2":2406,"w":57},{"n1":2234,"n2":2463,"w":133},{"n1":2234,"n2":2521,"w":84},{"n1":2234,"n2":2578,"w":174},{"n1":2234,"n2":2635,"w":106},{"n1":2234,"n2":2692,"w":86},{"n1":2292,"n2":782,"w":62},{"n1":2292,"n2":1655,"w":171},{"n1":2292,"n2":0,"w":111},{"n1":2292,"n2":57,"w":111},{"n1":2292,"n2":114,"w":160},{"n1":2292,"n2":171,"w":146},{"n1":2292,"n2":229,"w":157},{"n1":2292,"n2":286,"w":203},{"n1":2292,"n2":343,"w":180},{"n1":2292,"n2":400,"w":111},{"n1":2292,"n2":458,"w":55},{"n1":2292,"n2":515,"w":98},{"n1":2292,"n2":572,"w":127},{"n1":2292,"n2":629,"w":229},{"n1":2292,"n2":687,"w":217},{"n1":2292,"n2":744,"w":187},{"n1":2292,"n2":802,"w":70},{"n1":2292,"n2":859,"w":252},{"n1":2292,"n2":917,"w":192},{"n1":2292,"n2":974,"w":159},{"n1":2292,"n2":1031,"w":174},{"n1":2292,"n2":1088,"w":119},{"n1":2292,"n2":1146,"w":177},{"n1":2292,"n2":1203,"w":34},{"n1":2292,"n2":1260,"w":177},{"n1":2292,"n2":1317,"w":187},{"n1":2292,"n2":1375,"w":26},{"n1":2292,"n2":1432,"w":183},{"n1":2292,"n2":1489,"w":158},{"n1":2292,"n2":1546,"w":89},{"n1":2292,"n2":1604,"w":157},{"n1":2292,"n2":1662,"w":73},{"n1":2292,"n2":1719,"w":160},{"n1":2292,"n2":1776,"w":65},{"n1":2292,"n2":1834,"w":108},{"n1":2292,"n2":1891,"w":258},{"n1":2292,"n2":1948,"w":294},{"n1":2292,"n2":2005,"w":288},{"n1":2292,"n2":2063,"w":105},{"n1":2292,"n2":2120,"w":181},{"n1":2292,"n2":2177,"w":45},{"n1":2292,"n2":2234,"w":110},{"n1":2292,"n2":2292,"w":0},{"n1":2292,"n2":2349,"w":153},{"n1":2292,"n2":2406,"w":116},{"n1":2292,"n2":2463,"w":212},{"n1":2292,"n2":2521,"w":51},{"n1":2292,"n2":2578,"w":261},{"n1":2292,"n2":2635,"w":148},{"n1":2292,"n2":2692,"w":58},{"n1":2349,"n2":782,"w":102},{"n1":2349,"n2":1655,"w":50},{"n1":2349,"n2":0,"w":63},{"n1":2349,"n2":57,"w":107},{"n1":2349,"n2":114,"w":103},{"n1":2349,"n2":171,"w":70},{"n1":2349,"n2":229,"w":45},{"n1":2349,"n2":286,"w":116},{"n1":2349,"n2":343,"w":93},{"n1":2349,"n2":400,"w":45},{"n1":2349,"n2":458,"w":119},{"n1":2349,"n2":515,"w":61},{"n1":2349,"n2":572,"w":31},{"n1":2349,"n2":629,"w":115},{"n1":2349,"n2":687,"w":121},{"n1":2349,"n2":744,"w":40},{"n1":2349,"n2":802,"w":89},{"n1":2349,"n2":859,"w":112},{"n1":2349,"n2":917,"w":66},{"n1":2349,"n2":974,"w":73},{"n1":2349,"n2":1031,"w":63},{"n1":2349,"n2":1088,"w":101},{"n1":2349,"n2":1146,"w":89},{"n1":2349,"n2":1203,"w":148},{"n1":2349,"n2":1260,"w":72},{"n1":2349,"n2":1317,"w":97},{"n1":2349,"n2":1375,"w":149},{"n1":2349,"n2":1432,"w":56},{"n1":2349,"n2":1489,"w":39},{"n1":2349,"n2":1546,"w":86},{"n1":2349,"n2":1604,"w":19},{"n1":2349,"n2":1662,"w":89},{"n1":2349,"n2":1719,"w":71},{"n1":2349,"n2":1776,"w":90},{"n1":2349,"n2":1834,"w":56},{"n1":2349,"n2":1891,"w":140},{"n1":2349,"n2":1948,"w":154},{"n1":2349,"n2":2005,"w":149},{"n1":2349,"n2":2063,"w":105},{"n1":2349,"n2":2120,"w":32},{"n1":2349,"n2":2177,"w":112},{"n1":2349,"n2":2234,"w":45},{"n1":2349,"n2":2292,"w":154},{"n1":2349,"n2":2349,"w":0},{"n1":2349,"n2":2406,"w":58},{"n1":2349,"n2":2463,"w":100},{"n1":2349,"n2":2521,"w":129},{"n1":2349,"n2":2578,"w":132},{"n1":2349,"n2":2635,"w":102},{"n1":2349,"n2":2692,"w":131},{"n1":2406,"n2":782,"w":61},{"n1":2406,"n2":1655,"w":59},{"n1":2406,"n2":0,"w":7},{"n1":2406,"n2":57,"w":51},{"n1":2406,"n2":114,"w":56},{"n1":2406,"n2":171,"w":34},{"n1":2406,"n2":229,"w":45},{"n1":2406,"n2":286,"w":96},{"n1":2406,"n2":343,"w":73},{"n1":2406,"n2":400,"w":43},{"n1":2406,"n2":458,"w":109},{"n1":2406,"n2":515,"w":28},{"n1":2406,"n2":572,"w":33},{"n1":2406,"n2":629,"w":116},{"n1":2406,"n2":687,"w":110},{"n1":2406,"n2":744,"w":87},{"n1":2406,"n2":802,"w":49},{"n1":2406,"n2":859,"w":139},{"n1":2406,"n2":917,"w":79},{"n1":2406,"n2":974,"w":52},{"n1":2406,"n2":1031,"w":61},{"n1":2406,"n2":1088,"w":46},{"n1":2406,"n2":1146,"w":70},{"n1":2406,"n2":1203,"w":107},{"n1":2406,"n2":1260,"w":64},{"n1":2406,"n2":1317,"w":80},{"n1":2406,"n2":1375,"w":111},{"n1":2406,"n2":1432,"w":70},{"n1":2406,"n2":1489,"w":45},{"n1":2406,"n2":1546,"w":38},{"n1":2406,"n2":1604,"w":48},{"n1":2406,"n2":1662,"w":87},{"n1":2406,"n2":1719,"w":50},{"n1":2406,"n2":1776,"w":66},{"n1":2406,"n2":1834,"w":13},{"n1":2406,"n2":1891,"w":145},{"n1":2406,"n2":1948,"w":181},{"n1":2406,"n2":2005,"w":175},{"n1":2406,"n2":2063,"w":49},{"n1":2406,"n2":2120,"w":77},{"n1":2406,"n2":2177,"w":94},{"n1":2406,"n2":2234,"w":57},{"n1":2406,"n2":2292,"w":117},{"n1":2406,"n2":2349,"w":57},{"n1":2406,"n2":2406,"w":0},{"n1":2406,"n2":2463,"w":99},{"n1":2406,"n2":2521,"w":119},{"n1":2406,"n2":2578,"w":148},{"n1":2406,"n2":2635,"w":51},{"n1":2406,"n2":2692,"w":121},{"n1":2463,"n2":782,"w":155},{"n1":2463,"n2":1655,"w":56},{"n1":2463,"n2":0,"w":101},{"n1":2463,"n2":57,"w":128},{"n1":2463,"n2":114,"w":82},{"n1":2463,"n2":171,"w":72},{"n1":2463,"n2":229,"w":63},{"n1":2463,"n2":286,"w":35},{"n1":2463,"n2":343,"w":41},{"n1":2463,"n2":400,"w":127},{"n1":2463,"n2":458,"w":204},{"n1":2463,"n2":515,"w":125},{"n1":2463,"n2":572,"w":107},{"n1":2463,"n2":629,"w":22},{"n1":2463,"n2":687,"w":34},{"n1":2463,"n2":744,"w":97},{"n1":2463,"n2":802,"w":143},{"n1":2463,"n2":859,"w":83},{"n1":2463,"n2":917,"w":38},{"n1":2463,"n2":974,"w":55},{"n1":2463,"n2":1031,"w":43},{"n1":2463,"n2":1088,"w":118},{"n1":2463,"n2":1146,"w":41},{"n1":2463,"n2":1203,"w":201},{"n1":2463,"n2":1260,"w":38},{"n1":2463,"n2":1317,"w":34},{"n1":2463,"n2":1375,"w":205},{"n1":2463,"n2":1432,"w":45},{"n1":2463,"n2":1489,"w":66},{"n1":2463,"n2":1546,"w":133},{"n1":2463,"n2":1604,"w":85},{"n1":2463,"n2":1662,"w":178},{"n1":2463,"n2":1719,"w":56},{"n1":2463,"n2":1776,"w":162},{"n1":2463,"n2":1834,"w":112},{"n1":2463,"n2":1891,"w":53},{"n1":2463,"n2":1948,"w":123},{"n1":2463,"n2":2005,"w":118},{"n1":2463,"n2":2063,"w":134},{"n1":2463,"n2":2120,"w":85},{"n1":2463,"n2":2177,"w":191},{"n1":2463,"n2":2234,"w":134},{"n1":2463,"n2":2292,"w":211},{"n1":2463,"n2":2349,"w":100},{"n1":2463,"n2":2406,"w":99},{"n1":2463,"n2":2463,"w":0},{"n1":2463,"n2":2521,"w":214},{"n1":2463,"n2":2578,"w":74},{"n1":2463,"n2":2635,"w":94},{"n1":2463,"n2":2692,"w":216},{"n1":2521,"n2":782,"w":74},{"n1":2521,"n2":1655,"w":162},{"n1":2521,"n2":0,"w":115},{"n1":2521,"n2":57,"w":128},{"n1":2521,"n2":114,"w":167},{"n1":2521,"n2":171,"w":150},{"n1":2521,"n2":229,"w":151},{"n1":2521,"n2":286,"w":208},{"n1":2521,"n2":343,"w":185},{"n1":2521,"n2":400,"w":90},{"n1":2521,"n2":458,"w":11},{"n1":2521,"n2":515,"w":92},{"n1":2521,"n2":572,"w":110},{"n1":2521,"n2":629,"w":230},{"n1":2521,"n2":687,"w":223},{"n1":2521,"n2":744,"w":162},{"n1":2521,"n2":802,"w":78},{"n1":2521,"n2":859,"w":239},{"n1":2521,"n2":917,"w":184},{"n1":2521,"n2":974,"w":165},{"n1":2521,"n2":1031,"w":172},{"n1":2521,"n2":1088,"w":135},{"n1":2521,"n2":1146,"w":182},{"n1":2521,"n2":1203,"w":69},{"n1":2521,"n2":1260,"w":179},{"n1":2521,"n2":1317,"w":193},{"n1":2521,"n2":1375,"w":63},{"n1":2521,"n2":1432,"w":175},{"n1":2521,"n2":1489,"w":146},{"n1":2521,"n2":1546,"w":98},{"n1":2521,"n2":1604,"w":137},{"n1":2521,"n2":1662,"w":43},{"n1":2521,"n2":1719,"w":165},{"n1":2521,"n2":1776,"w":55},{"n1":2521,"n2":1834,"w":106},{"n1":2521,"n2":1891,"w":259},{"n1":2521,"n2":1948,"w":281},{"n1":2521,"n2":2005,"w":276},{"n1":2521,"n2":2063,"w":116},{"n1":2521,"n2":2120,"w":156},{"n1":2521,"n2":2177,"w":26},{"n1":2521,"n2":2234,"w":84},{"n1":2521,"n2":2292,"w":51},{"n1":2521,"n2":2349,"w":129},{"n1":2521,"n2":2406,"w":118},{"n1":2521,"n2":2463,"w":213},{"n1":2521,"n2":2521,"w":0},{"n1":2521,"n2":2578,"w":253},{"n1":2521,"n2":2635,"w":156},{"n1":2521,"n2":2692,"w":7},{"n1":2578,"n2":782,"w":205},{"n1":2578,"n2":1655,"w":93},{"n1":2578,"n2":0,"w":150},{"n1":2578,"n2":57,"w":187},{"n1":2578,"n2":114,"w":150},{"n1":2578,"n2":171,"w":129},{"n1":2578,"n2":229,"w":104},{"n1":2578,"n2":286,"w":98},{"n1":2578,"n2":343,"w":110},{"n1":2578,"n2":400,"w":168},{"n1":2578,"n2":458,"w":244},{"n1":2578,"n2":515,"w":169},{"n1":2578,"n2":572,"w":147},{"n1":2578,"n2":629,"w":52},{"n1":2578,"n2":687,"w":92},{"n1":2578,"n2":744,"w":114},{"n1":2578,"n2":802,"w":193},{"n1":2578,"n2":859,"w":38},{"n1":2578,"n2":917,"w":71},{"n1":2578,"n2":974,"w":120},{"n1":2578,"n2":1031,"w":93},{"n1":2578,"n2":1088,"w":180},{"n1":2578,"n2":1146,"w":110},{"n1":2578,"n2":1203,"w":251},{"n1":2578,"n2":1260,"w":100},{"n1":2578,"n2":1317,"w":103},{"n1":2578,"n2":1375,"w":255},{"n1":2578,"n2":1432,"w":81},{"n1":2578,"n2":1489,"w":107},{"n1":2578,"n2":1546,"w":182},{"n1":2578,"n2":1604,"w":122},{"n1":2578,"n2":1662,"w":219},{"n1":2578,"n2":1719,"w":119},{"n1":2578,"n2":1776,"w":205},{"n1":2578,"n2":1834,"w":158},{"n1":2578,"n2":1891,"w":46},{"n1":2578,"n2":1948,"w":54},{"n1":2578,"n2":2005,"w":55},{"n1":2578,"n2":2063,"w":191},{"n1":2578,"n2":2120,"w":105},{"n1":2578,"n2":2177,"w":231},{"n1":2578,"n2":2234,"w":175},{"n1":2578,"n2":2292,"w":261},{"n1":2578,"n2":2349,"w":132},{"n1":2578,"n2":2406,"w":149},{"n1":2578,"n2":2463,"w":74},{"n1":2578,"n2":2521,"w":254},{"n1":2578,"n2":2578,"w":0},{"n1":2578,"n2":2635,"w":159},{"n1":2578,"n2":2692,"w":256},{"n1":2635,"n2":782,"w":86},{"n1":2635,"n2":1655,"w":75},{"n1":2635,"n2":0,"w":45},{"n1":2635,"n2":57,"w":39},{"n1":2635,"n2":114,"w":12},{"n1":2635,"n2":171,"w":37},{"n1":2635,"n2":229,"w":69},{"n1":2635,"n2":286,"w":70},{"n1":2635,"n2":343,"w":54},{"n1":2635,"n2":400,"w":92},{"n1":2635,"n2":458,"w":146},{"n1":2635,"n2":515,"w":70},{"n1":2635,"n2":572,"w":82},{"n1":2635,"n2":629,"w":110},{"n1":2635,"n2":687,"w":85},{"n1":2635,"n2":744,"w":127},{"n1":2635,"n2":802,"w":80},{"n1":2635,"n2":859,"w":153},{"n1":2635,"n2":917,"w":92},{"n1":2635,"n2":974,"w":40},{"n1":2635,"n2":1031,"w":67},{"n1":2635,"n2":1088,"w":30},{"n1":2635,"n2":1146,"w":54},{"n1":2635,"n2":1203,"w":125},{"n1":2635,"n2":1260,"w":61},{"n1":2635,"n2":1317,"w":60},{"n1":2635,"n2":1375,"w":131},{"n1":2635,"n2":1432,"w":84},{"n1":2635,"n2":1489,"w":71},{"n1":2635,"n2":1546,"w":63},{"n1":2635,"n2":1604,"w":87},{"n1":2635,"n2":1662,"w":129},{"n1":2635,"n2":1719,"w":41},{"n1":2635,"n2":1776,"w":102},{"n1":2635,"n2":1834,"w":59},{"n1":2635,"n2":1891,"w":137},{"n1":2635,"n2":1948,"w":195},{"n1":2635,"n2":2005,"w":189},{"n1":2635,"n2":2063,"w":53},{"n1":2635,"n2":2120,"w":116},{"n1":2635,"n2":2177,"w":131},{"n1":2635,"n2":2234,"w":106},{"n1":2635,"n2":2292,"w":147},{"n1":2635,"n2":2349,"w":102},{"n1":2635,"n2":2406,"w":51},{"n1":2635,"n2":2463,"w":94},{"n1":2635,"n2":2521,"w":156},{"n1":2635,"n2":2578,"w":159},{"n1":2635,"n2":2635,"w":0},{"n1":2635,"n2":2692,"w":158},{"n1":2692,"n2":782,"w":77},{"n1":2692,"n2":1655,"w":164},{"n1":2692,"n2":0,"w":117},{"n1":2692,"n2":57,"w":130},{"n1":2692,"n2":114,"w":169},{"n1":2692,"n2":171,"w":152},{"n1":2692,"n2":229,"w":153},{"n1":2692,"n2":286,"w":210},{"n1":2692,"n2":343,"w":187},{"n1":2692,"n2":400,"w":92},{"n1":2692,"n2":458,"w":12},{"n1":2692,"n2":515,"w":94},{"n1":2692,"n2":572,"w":112},{"n1":2692,"n2":629,"w":232},{"n1":2692,"n2":687,"w":225},{"n1":2692,"n2":744,"w":164},{"n1":2692,"n2":802,"w":80},{"n1":2692,"n2":859,"w":241},{"n1":2692,"n2":917,"w":185},{"n1":2692,"n2":974,"w":167},{"n1":2692,"n2":1031,"w":174},{"n1":2692,"n2":1088,"w":137},{"n1":2692,"n2":1146,"w":184},{"n1":2692,"n2":1203,"w":77},{"n1":2692,"n2":1260,"w":181},{"n1":2692,"n2":1317,"w":195},{"n1":2692,"n2":1375,"w":70},{"n1":2692,"n2":1432,"w":177},{"n1":2692,"n2":1489,"w":148},{"n1":2692,"n2":1546,"w":100},{"n1":2692,"n2":1604,"w":139},{"n1":2692,"n2":1662,"w":45},{"n1":2692,"n2":1719,"w":167},{"n1":2692,"n2":1776,"w":57},{"n1":2692,"n2":1834,"w":108},{"n1":2692,"n2":1891,"w":261},{"n1":2692,"n2":1948,"w":283},{"n1":2692,"n2":2005,"w":278},{"n1":2692,"n2":2063,"w":118},{"n1":2692,"n2":2120,"w":158},{"n1":2692,"n2":2177,"w":31},{"n1":2692,"n2":2234,"w":86},{"n1":2692,"n2":2292,"w":58},{"n1":2692,"n2":2349,"w":131},{"n1":2692,"n2":2406,"w":120},{"n1":2692,"n2":2463,"w":215},{"n1":2692,"n2":2521,"w":7},{"n1":2692,"n2":2578,"w":255},{"n1":2692,"n2":2635,"w":158},{"n1":2692,"n2":2692,"w":0}],"demand":[{"demand":0,"n":782},{"demand":0,"n":1655},{"demand":15,"n":0},{"demand":16,"n":57},{"demand":31,"n":114},{"demand":14,"n":171},{"demand":33,"n":229},{"demand":7,"n":286},{"demand":9,"n":343},{"demand":17,"n":400},{"demand":33,"n":458},{"demand":26,"n":515},{"demand":18,"n":572},{"demand":10,"n":629},{"demand":32,"n":687},{"demand":26,"n":744},{"demand":14,"n":802},{"demand":32,"n":859},{"demand":33,"n":917},{"demand":30,"n":974},{"demand":25,"n":1031},{"demand":18,"n":1088},{"demand":26,"n":1146},{"demand":2,"n":1203},{"demand":25,"n":1260},{"demand":10,"n":1317},{"demand":3,"n":1375},{"demand":28,"n":1432},{"demand":9,"n":1489},{"demand":21,"n":1546},{"demand":7,"n":1604},{"demand":24,"n":1662},{"demand":1,"n":1719},{"demand":5,"n":1776},{"demand":19,"n":1834},{"demand":4,"n":1891},{"demand":9,"n":1948},{"demand":7,"n":2005},{"demand":16,"n":2063},{"demand":27,"n":2120},{"demand":15,"n":2177},{"demand":17,"n":2234},{"demand":20,"n":2292},{"demand":27,"n":2349},{"demand":33,"n":2406},{"demand":18,"n":2463},{"demand":31,"n":2521},{"demand":19,"n":2578},{"demand":24,"n":2635},{"demand":16,"n":2692}],"depots":[{"n":782},{"n":1655}],"parameters":{"capacity":125,"numVehicles":-1,"size":50},"positions":[{"lat":51.0678307,"lng":3.7290914,"n":782,"name":"GENT"},{"lat":50.459267,"lng":4.8504571,"n":1655,"name":"NAMUR"},{"lat":50.8427501,"lng":4.3515499,"n":0,"name":"BRUSSEL"},{"lat":51.2198771,"lng":4.4011356,"n":57,"name":"ANTWERPEN"},{"lat":51.0261822,"lng":4.9806859,"n":114,"name":"AVERBODE"},{"lat":50.7798613,"lng":4.7614181,"n":171,"name":"BEAUVECHAIN"},{"lat":50.5329187,"lng":4.7417015,"n":229,"name":"BEUZET"},{"lat":50.7509166,"lng":5.580062,"n":286,"name":"BOIRS"},{"lat":50.7410068,"lng":5.2607332,"n":343,"name":"BOVELINGEN"},{"lat":50.5826516,"lng":3.9173444,"n":400,"name":"CAMBRON-SAINT-VINCENT"},{"lat":50.7811468,"lng":2.9997573,"n":458,"name":"COMINES"},{"lat":50.7981729,"lng":4.0248327,"n":515,"name":"DENDERWINDEKE"},{"lat":50.571588,"lng":4.1767874,"n":572,"name":"ECAUSSINNES-D'ENGHIEN"},{"lat":50.4022333,"lng":5.666316,"n":629,"name":"ERNONHEID"},{"lat":50.7041182,"lng":5.7139672,"n":687,"name":"FENEUR"},{"lat":50.0767425,"lng":4.5089143,"n":744,"name":"FRASNES_NAM."},{"lat":50.9705594,"lng":3.8153997,"n":802,"name":"GIJZENZELE"},{"lat":49.8583554,"lng":5.3727437,"n":859,"name":"GRANDVOIR"},{"lat":50.3453749,"lng":5.0922322,"n":917,"name":"HAMOIS"},{"lat":50.7497791,"lng":4.9829359,"n":974,"name":"HELECINE"},{"lat":50.5236273,"lng":5.006894,"n":1031,"name":"HINGEON"},{"lat":51.1488217,"lng":4.4785055,"n":1088,"name":"HOVE"},{"lat":50.7342411,"lng":5.209727,"n":1146,"name":"JEUK"},{"lat":51.3317067,"lng":3.3140885,"n":1203,"name":"KNOKKE-HEIST"},{"lat":50.5838176,"lng":5.0903253,"n":1260,"name":"LAMONTZEE"},{"lat":50.7216887,"lng":5.3534526,"n":1317,"name":"LENS-SUR-GEER"},{"lat":51.2948381,"lng":3.1994146,"n":1375,"name":"LISSEWEGE"},{"lat":50.3780379,"lng":4.9703054,"n":1432,"name":"MAILLEN"},{"lat":50.511588,"lng":4.6770711,"n":1489,"name":"MAZY"},{"lat":50.996176,"lng":4.0692884,"n":1546,"name":"MESPELARE"},{"lat":50.4096402,"lng":4.4729564,"n":1604,"name":"MONTIGNIES-SUR-SAMBRE"},{"lat":50.6672639,"lng":3.2680395,"n":1662,"name":"NECHIN"},{"lat":50.7289435,"lng":4.9641114,"n":1719,"name":"NODUWEZ"},{"lat":50.8705398,"lng":3.5517704,"n":1776,"name":"OOIKE_WORTEGEM-PETEGEM"},{"lat":50.7805147,"lng":4.1979164,"n":1834,"name":"OUDENAKEN"},{"lat":50.3026042,"lng":5.9894564,"n":1891,"name":"PETIT-THIER"},{"lat":49.5912687,"lng":5.7266366,"n":1948,"name":"RACHECOURT"},{"lat":49.5951701,"lng":5.5084403,"n":2005,"name":"ROBELMONT"},{"lat":51.1273737,"lng":4.2901239,"n":2063,"name":"RUPELMONDE"},{"lat":50.1683864,"lng":4.5609023,"n":2120,"name":"SAUTOUR"},{"lat":50.8760936,"lng":3.1787537,"n":2177,"name":"SINT-ELOOIS-WINKEL"},{"lat":50.5056428,"lng":3.7877341,"n":2234,"name":"SIRAULT"},{"lat":51.2105793,"lng":2.9307745,"n":2292,"name":"STENE"},{"lat":50.3414098,"lng":4.2928918,"n":2349,"name":"THUIN"},{"lat":50.7904904,"lng":4.3559193,"n":2406,"name":"UKKEL"},{"lat":50.5024548,"lng":5.511326,"n":2463,"name":"VILLERS-AUX-TOURS"},{"lat":50.8165377,"lng":2.8757493,"n":2521,"name":"VOORMEZELE"},{"lat":49.9911621,"lng":5.7883722,"n":2578,"name":"WARDIN"},{"lat":51.061278,"lng":4.8346555,"n":2635,"name":"WESTMEERBEEK"},{"lat":50.7668483,"lng":2.8435926,"n":2692,"name":"WULVERGEM"}]}
\ No newline at end of file
+{
+  "arcs": [
+    {
+      "n1": 782,
+      "n2": 782,
+      "w": 0
+    },
+    {
+      "n1": 782,
+      "n2": 1655,
+      "w": 115
+    },
+    {
+      "n1": 782,
+      "n2": 0,
+      "w": 54
+    },
+    {
+      "n1": 782,
+      "n2": 57,
+      "w": 55
+    },
+    {
+      "n1": 782,
+      "n2": 114,
+      "w": 99
+    },
+    {
+      "n1": 782,
+      "n2": 171,
+      "w": 89
+    },
+    {
+      "n1": 782,
+      "n2": 229,
+      "w": 101
+    },
+    {
+      "n1": 782,
+      "n2": 286,
+      "w": 147
+    },
+    {
+      "n1": 782,
+      "n2": 343,
+      "w": 124
+    },
+    {
+      "n1": 782,
+      "n2": 400,
+      "w": 62
+    },
+    {
+      "n1": 782,
+      "n2": 458,
+      "w": 65
+    },
+    {
+      "n1": 782,
+      "n2": 515,
+      "w": 41
+    },
+    {
+      "n1": 782,
+      "n2": 572,
+      "w": 72
+    },
+    {
+      "n1": 782,
+      "n2": 629,
+      "w": 172
+    },
+    {
+      "n1": 782,
+      "n2": 687,
+      "w": 161
+    },
+    {
+      "n1": 782,
+      "n2": 744,
+      "w": 139
+    },
+    {
+      "n1": 782,
+      "n2": 802,
+      "w": 13
+    },
+    {
+      "n1": 782,
+      "n2": 859,
+      "w": 195
+    },
+    {
+      "n1": 782,
+      "n2": 917,
+      "w": 135
+    },
+    {
+      "n1": 782,
+      "n2": 974,
+      "w": 103
+    },
+    {
+      "n1": 782,
+      "n2": 1031,
+      "w": 118
+    },
+    {
+      "n1": 782,
+      "n2": 1088,
+      "w": 62
+    },
+    {
+      "n1": 782,
+      "n2": 1146,
+      "w": 120
+    },
+    {
+      "n1": 782,
+      "n2": 1203,
+      "w": 47
+    },
+    {
+      "n1": 782,
+      "n2": 1260,
+      "w": 120
+    },
+    {
+      "n1": 782,
+      "n2": 1317,
+      "w": 131
+    },
+    {
+      "n1": 782,
+      "n2": 1375,
+      "w": 51
+    },
+    {
+      "n1": 782,
+      "n2": 1432,
+      "w": 126
+    },
+    {
+      "n1": 782,
+      "n2": 1489,
+      "w": 102
+    },
+    {
+      "n1": 782,
+      "n2": 1546,
+      "w": 29
+    },
+    {
+      "n1": 782,
+      "n2": 1604,
+      "w": 101
+    },
+    {
+      "n1": 782,
+      "n2": 1662,
+      "w": 61
+    },
+    {
+      "n1": 782,
+      "n2": 1719,
+      "w": 103
+    },
+    {
+      "n1": 782,
+      "n2": 1776,
+      "w": 28
+    },
+    {
+      "n1": 782,
+      "n2": 1834,
+      "w": 51
+    },
+    {
+      "n1": 782,
+      "n2": 1891,
+      "w": 201
+    },
+    {
+      "n1": 782,
+      "n2": 1948,
+      "w": 237
+    },
+    {
+      "n1": 782,
+      "n2": 2005,
+      "w": 232
+    },
+    {
+      "n1": 782,
+      "n2": 2063,
+      "w": 43
+    },
+    {
+      "n1": 782,
+      "n2": 2120,
+      "w": 130
+    },
+    {
+      "n1": 782,
+      "n2": 2177,
+      "w": 49
+    },
+    {
+      "n1": 782,
+      "n2": 2234,
+      "w": 69
+    },
+    {
+      "n1": 782,
+      "n2": 2292,
+      "w": 62
+    },
+    {
+      "n1": 782,
+      "n2": 2349,
+      "w": 102
+    },
+    {
+      "n1": 782,
+      "n2": 2406,
+      "w": 60
+    },
+    {
+      "n1": 782,
+      "n2": 2463,
+      "w": 155
+    },
+    {
+      "n1": 782,
+      "n2": 2521,
+      "w": 74
+    },
+    {
+      "n1": 782,
+      "n2": 2578,
+      "w": 205
+    },
+    {
+      "n1": 782,
+      "n2": 2635,
+      "w": 87
+    },
+    {
+      "n1": 782,
+      "n2": 2692,
+      "w": 77
+    },
+    {
+      "n1": 1655,
+      "n2": 782,
+      "w": 115
+    },
+    {
+      "n1": 1655,
+      "n2": 1655,
+      "w": 0
+    },
+    {
+      "n1": 1655,
+      "n2": 0,
+      "w": 61
+    },
+    {
+      "n1": 1655,
+      "n2": 57,
+      "w": 101
+    },
+    {
+      "n1": 1655,
+      "n2": 114,
+      "w": 71
+    },
+    {
+      "n1": 1655,
+      "n2": 171,
+      "w": 43
+    },
+    {
+      "n1": 1655,
+      "n2": 229,
+      "w": 13
+    },
+    {
+      "n1": 1655,
+      "n2": 286,
+      "w": 68
+    },
+    {
+      "n1": 1655,
+      "n2": 343,
+      "w": 48
+    },
+    {
+      "n1": 1655,
+      "n2": 400,
+      "w": 76
+    },
+    {
+      "n1": 1655,
+      "n2": 458,
+      "w": 153
+    },
+    {
+      "n1": 1655,
+      "n2": 515,
+      "w": 78
+    },
+    {
+      "n1": 1655,
+      "n2": 572,
+      "w": 56
+    },
+    {
+      "n1": 1655,
+      "n2": 629,
+      "w": 73
+    },
+    {
+      "n1": 1655,
+      "n2": 687,
+      "w": 74
+    },
+    {
+      "n1": 1655,
+      "n2": 744,
+      "w": 55
+    },
+    {
+      "n1": 1655,
+      "n2": 802,
+      "w": 104
+    },
+    {
+      "n1": 1655,
+      "n2": 859,
+      "w": 84
+    },
+    {
+      "n1": 1655,
+      "n2": 917,
+      "w": 24
+    },
+    {
+      "n1": 1655,
+      "n2": 974,
+      "w": 37
+    },
+    {
+      "n1": 1655,
+      "n2": 1031,
+      "w": 15
+    },
+    {
+      "n1": 1655,
+      "n2": 1088,
+      "w": 93
+    },
+    {
+      "n1": 1655,
+      "n2": 1146,
+      "w": 45
+    },
+    {
+      "n1": 1655,
+      "n2": 1203,
+      "w": 162
+    },
+    {
+      "n1": 1655,
+      "n2": 1260,
+      "w": 24
+    },
+    {
+      "n1": 1655,
+      "n2": 1317,
+      "w": 51
+    },
+    {
+      "n1": 1655,
+      "n2": 1375,
+      "w": 166
+    },
+    {
+      "n1": 1655,
+      "n2": 1432,
+      "w": 15
+    },
+    {
+      "n1": 1655,
+      "n2": 1489,
+      "w": 16
+    },
+    {
+      "n1": 1655,
+      "n2": 1546,
+      "w": 93
+    },
+    {
+      "n1": 1655,
+      "n2": 1604,
+      "w": 32
+    },
+    {
+      "n1": 1655,
+      "n2": 1662,
+      "w": 128
+    },
+    {
+      "n1": 1655,
+      "n2": 1719,
+      "w": 34
+    },
+    {
+      "n1": 1655,
+      "n2": 1776,
+      "w": 114
+    },
+    {
+      "n1": 1655,
+      "n2": 1834,
+      "w": 67
+    },
+    {
+      "n1": 1655,
+      "n2": 1891,
+      "w": 100
+    },
+    {
+      "n1": 1655,
+      "n2": 1948,
+      "w": 126
+    },
+    {
+      "n1": 1655,
+      "n2": 2005,
+      "w": 121
+    },
+    {
+      "n1": 1655,
+      "n2": 2063,
+      "w": 102
+    },
+    {
+      "n1": 1655,
+      "n2": 2120,
+      "w": 42
+    },
+    {
+      "n1": 1655,
+      "n2": 2177,
+      "w": 140
+    },
+    {
+      "n1": 1655,
+      "n2": 2234,
+      "w": 83
+    },
+    {
+      "n1": 1655,
+      "n2": 2292,
+      "w": 171
+    },
+    {
+      "n1": 1655,
+      "n2": 2349,
+      "w": 49
+    },
+    {
+      "n1": 1655,
+      "n2": 2406,
+      "w": 59
+    },
+    {
+      "n1": 1655,
+      "n2": 2463,
+      "w": 56
+    },
+    {
+      "n1": 1655,
+      "n2": 2521,
+      "w": 163
+    },
+    {
+      "n1": 1655,
+      "n2": 2578,
+      "w": 93
+    },
+    {
+      "n1": 1655,
+      "n2": 2635,
+      "w": 75
+    },
+    {
+      "n1": 1655,
+      "n2": 2692,
+      "w": 165
+    },
+    {
+      "n1": 0,
+      "n2": 782,
+      "w": 55
+    },
+    {
+      "n1": 0,
+      "n2": 1655,
+      "w": 61
+    },
+    {
+      "n1": 0,
+      "n2": 0,
+      "w": 0
+    },
+    {
+      "n1": 0,
+      "n2": 57,
+      "w": 45
+    },
+    {
+      "n1": 0,
+      "n2": 114,
+      "w": 52
+    },
+    {
+      "n1": 0,
+      "n2": 171,
+      "w": 36
+    },
+    {
+      "n1": 0,
+      "n2": 229,
+      "w": 47
+    },
+    {
+      "n1": 0,
+      "n2": 286,
+      "w": 94
+    },
+    {
+      "n1": 0,
+      "n2": 343,
+      "w": 71
+    },
+    {
+      "n1": 0,
+      "n2": 400,
+      "w": 47
+    },
+    {
+      "n1": 0,
+      "n2": 458,
+      "w": 105
+    },
+    {
+      "n1": 0,
+      "n2": 515,
+      "w": 26
+    },
+    {
+      "n1": 0,
+      "n2": 572,
+      "w": 37
+    },
+    {
+      "n1": 0,
+      "n2": 629,
+      "w": 118
+    },
+    {
+      "n1": 0,
+      "n2": 687,
+      "w": 108
+    },
+    {
+      "n1": 0,
+      "n2": 744,
+      "w": 93
+    },
+    {
+      "n1": 0,
+      "n2": 802,
+      "w": 43
+    },
+    {
+      "n1": 0,
+      "n2": 859,
+      "w": 141
+    },
+    {
+      "n1": 0,
+      "n2": 917,
+      "w": 81
+    },
+    {
+      "n1": 0,
+      "n2": 974,
+      "w": 50
+    },
+    {
+      "n1": 0,
+      "n2": 1031,
+      "w": 64
+    },
+    {
+      "n1": 0,
+      "n2": 1088,
+      "w": 39
+    },
+    {
+      "n1": 0,
+      "n2": 1146,
+      "w": 67
+    },
+    {
+      "n1": 0,
+      "n2": 1203,
+      "w": 101
+    },
+    {
+      "n1": 0,
+      "n2": 1260,
+      "w": 66
+    },
+    {
+      "n1": 0,
+      "n2": 1317,
+      "w": 78
+    },
+    {
+      "n1": 0,
+      "n2": 1375,
+      "w": 105
+    },
+    {
+      "n1": 0,
+      "n2": 1432,
+      "w": 72
+    },
+    {
+      "n1": 0,
+      "n2": 1489,
+      "w": 49
+    },
+    {
+      "n1": 0,
+      "n2": 1546,
+      "w": 32
+    },
+    {
+      "n1": 0,
+      "n2": 1604,
+      "w": 54
+    },
+    {
+      "n1": 0,
+      "n2": 1662,
+      "w": 85
+    },
+    {
+      "n1": 0,
+      "n2": 1719,
+      "w": 50
+    },
+    {
+      "n1": 0,
+      "n2": 1776,
+      "w": 62
+    },
+    {
+      "n1": 0,
+      "n2": 1834,
+      "w": 15
+    },
+    {
+      "n1": 0,
+      "n2": 1891,
+      "w": 147
+    },
+    {
+      "n1": 0,
+      "n2": 1948,
+      "w": 183
+    },
+    {
+      "n1": 0,
+      "n2": 2005,
+      "w": 178
+    },
+    {
+      "n1": 0,
+      "n2": 2063,
+      "w": 43
+    },
+    {
+      "n1": 0,
+      "n2": 2120,
+      "w": 83
+    },
+    {
+      "n1": 0,
+      "n2": 2177,
+      "w": 90
+    },
+    {
+      "n1": 0,
+      "n2": 2234,
+      "w": 60
+    },
+    {
+      "n1": 0,
+      "n2": 2292,
+      "w": 111
+    },
+    {
+      "n1": 0,
+      "n2": 2349,
+      "w": 63
+    },
+    {
+      "n1": 0,
+      "n2": 2406,
+      "w": 7
+    },
+    {
+      "n1": 0,
+      "n2": 2463,
+      "w": 101
+    },
+    {
+      "n1": 0,
+      "n2": 2521,
+      "w": 115
+    },
+    {
+      "n1": 0,
+      "n2": 2578,
+      "w": 151
+    },
+    {
+      "n1": 0,
+      "n2": 2635,
+      "w": 45
+    },
+    {
+      "n1": 0,
+      "n2": 2692,
+      "w": 117
+    },
+    {
+      "n1": 57,
+      "n2": 782,
+      "w": 55
+    },
+    {
+      "n1": 57,
+      "n2": 1655,
+      "w": 102
+    },
+    {
+      "n1": 57,
+      "n2": 0,
+      "w": 44
+    },
+    {
+      "n1": 57,
+      "n2": 57,
+      "w": 0
+    },
+    {
+      "n1": 57,
+      "n2": 114,
+      "w": 51
+    },
+    {
+      "n1": 57,
+      "n2": 171,
+      "w": 61
+    },
+    {
+      "n1": 57,
+      "n2": 229,
+      "w": 88
+    },
+    {
+      "n1": 57,
+      "n2": 286,
+      "w": 107
+    },
+    {
+      "n1": 57,
+      "n2": 343,
+      "w": 91
+    },
+    {
+      "n1": 57,
+      "n2": 400,
+      "w": 85
+    },
+    {
+      "n1": 57,
+      "n2": 458,
+      "w": 117
+    },
+    {
+      "n1": 57,
+      "n2": 515,
+      "w": 60
+    },
+    {
+      "n1": 57,
+      "n2": 572,
+      "w": 79
+    },
+    {
+      "n1": 57,
+      "n2": 629,
+      "w": 147
+    },
+    {
+      "n1": 57,
+      "n2": 687,
+      "w": 120
+    },
+    {
+      "n1": 57,
+      "n2": 744,
+      "w": 136
+    },
+    {
+      "n1": 57,
+      "n2": 802,
+      "w": 57
+    },
+    {
+      "n1": 57,
+      "n2": 859,
+      "w": 179
+    },
+    {
+      "n1": 57,
+      "n2": 917,
+      "w": 119
+    },
+    {
+      "n1": 57,
+      "n2": 974,
+      "w": 74
+    },
+    {
+      "n1": 57,
+      "n2": 1031,
+      "w": 96
+    },
+    {
+      "n1": 57,
+      "n2": 1088,
+      "w": 11
+    },
+    {
+      "n1": 57,
+      "n2": 1146,
+      "w": 89
+    },
+    {
+      "n1": 57,
+      "n2": 1203,
+      "w": 89
+    },
+    {
+      "n1": 57,
+      "n2": 1260,
+      "w": 95
+    },
+    {
+      "n1": 57,
+      "n2": 1317,
+      "w": 97
+    },
+    {
+      "n1": 57,
+      "n2": 1375,
+      "w": 95
+    },
+    {
+      "n1": 57,
+      "n2": 1432,
+      "w": 110
+    },
+    {
+      "n1": 57,
+      "n2": 1489,
+      "w": 90
+    },
+    {
+      "n1": 57,
+      "n2": 1546,
+      "w": 42
+    },
+    {
+      "n1": 57,
+      "n2": 1604,
+      "w": 98
+    },
+    {
+      "n1": 57,
+      "n2": 1662,
+      "w": 112
+    },
+    {
+      "n1": 57,
+      "n2": 1719,
+      "w": 75
+    },
+    {
+      "n1": 57,
+      "n2": 1776,
+      "w": 79
+    },
+    {
+      "n1": 57,
+      "n2": 1834,
+      "w": 56
+    },
+    {
+      "n1": 57,
+      "n2": 1891,
+      "w": 174
+    },
+    {
+      "n1": 57,
+      "n2": 1948,
+      "w": 221
+    },
+    {
+      "n1": 57,
+      "n2": 2005,
+      "w": 216
+    },
+    {
+      "n1": 57,
+      "n2": 2063,
+      "w": 17
+    },
+    {
+      "n1": 57,
+      "n2": 2120,
+      "w": 126
+    },
+    {
+      "n1": 57,
+      "n2": 2177,
+      "w": 102
+    },
+    {
+      "n1": 57,
+      "n2": 2234,
+      "w": 98
+    },
+    {
+      "n1": 57,
+      "n2": 2292,
+      "w": 111
+    },
+    {
+      "n1": 57,
+      "n2": 2349,
+      "w": 107
+    },
+    {
+      "n1": 57,
+      "n2": 2406,
+      "w": 51
+    },
+    {
+      "n1": 57,
+      "n2": 2463,
+      "w": 128
+    },
+    {
+      "n1": 57,
+      "n2": 2521,
+      "w": 127
+    },
+    {
+      "n1": 57,
+      "n2": 2578,
+      "w": 188
+    },
+    {
+      "n1": 57,
+      "n2": 2635,
+      "w": 40
+    },
+    {
+      "n1": 57,
+      "n2": 2692,
+      "w": 129
+    },
+    {
+      "n1": 114,
+      "n2": 782,
+      "w": 98
+    },
+    {
+      "n1": 114,
+      "n2": 1655,
+      "w": 71
+    },
+    {
+      "n1": 114,
+      "n2": 0,
+      "w": 52
+    },
+    {
+      "n1": 114,
+      "n2": 57,
+      "w": 51
+    },
+    {
+      "n1": 114,
+      "n2": 114,
+      "w": 0
+    },
+    {
+      "n1": 114,
+      "n2": 171,
+      "w": 36
+    },
+    {
+      "n1": 114,
+      "n2": 229,
+      "w": 64
+    },
+    {
+      "n1": 114,
+      "n2": 286,
+      "w": 58
+    },
+    {
+      "n1": 114,
+      "n2": 343,
+      "w": 42
+    },
+    {
+      "n1": 114,
+      "n2": 400,
+      "w": 99
+    },
+    {
+      "n1": 114,
+      "n2": 458,
+      "w": 157
+    },
+    {
+      "n1": 114,
+      "n2": 515,
+      "w": 77
+    },
+    {
+      "n1": 114,
+      "n2": 572,
+      "w": 85
+    },
+    {
+      "n1": 114,
+      "n2": 629,
+      "w": 98
+    },
+    {
+      "n1": 114,
+      "n2": 687,
+      "w": 73
+    },
+    {
+      "n1": 114,
+      "n2": 744,
+      "w": 123
+    },
+    {
+      "n1": 114,
+      "n2": 802,
+      "w": 92
+    },
+    {
+      "n1": 114,
+      "n2": 859,
+      "w": 148
+    },
+    {
+      "n1": 114,
+      "n2": 917,
+      "w": 87
+    },
+    {
+      "n1": 114,
+      "n2": 974,
+      "w": 34
+    },
+    {
+      "n1": 114,
+      "n2": 1031,
+      "w": 62
+    },
+    {
+      "n1": 114,
+      "n2": 1088,
+      "w": 42
+    },
+    {
+      "n1": 114,
+      "n2": 1146,
+      "w": 41
+    },
+    {
+      "n1": 114,
+      "n2": 1203,
+      "w": 137
+    },
+    {
+      "n1": 114,
+      "n2": 1260,
+      "w": 57
+    },
+    {
+      "n1": 114,
+      "n2": 1317,
+      "w": 47
+    },
+    {
+      "n1": 114,
+      "n2": 1375,
+      "w": 143
+    },
+    {
+      "n1": 114,
+      "n2": 1432,
+      "w": 79
+    },
+    {
+      "n1": 114,
+      "n2": 1489,
+      "w": 67
+    },
+    {
+      "n1": 114,
+      "n2": 1546,
+      "w": 75
+    },
+    {
+      "n1": 114,
+      "n2": 1604,
+      "w": 84
+    },
+    {
+      "n1": 114,
+      "n2": 1662,
+      "w": 137
+    },
+    {
+      "n1": 114,
+      "n2": 1719,
+      "w": 36
+    },
+    {
+      "n1": 114,
+      "n2": 1776,
+      "w": 113
+    },
+    {
+      "n1": 114,
+      "n2": 1834,
+      "w": 66
+    },
+    {
+      "n1": 114,
+      "n2": 1891,
+      "w": 125
+    },
+    {
+      "n1": 114,
+      "n2": 1948,
+      "w": 190
+    },
+    {
+      "n1": 114,
+      "n2": 2005,
+      "w": 185
+    },
+    {
+      "n1": 114,
+      "n2": 2063,
+      "w": 65
+    },
+    {
+      "n1": 114,
+      "n2": 2120,
+      "w": 111
+    },
+    {
+      "n1": 114,
+      "n2": 2177,
+      "w": 142
+    },
+    {
+      "n1": 114,
+      "n2": 2234,
+      "w": 112
+    },
+    {
+      "n1": 114,
+      "n2": 2292,
+      "w": 159
+    },
+    {
+      "n1": 114,
+      "n2": 2349,
+      "w": 102
+    },
+    {
+      "n1": 114,
+      "n2": 2406,
+      "w": 56
+    },
+    {
+      "n1": 114,
+      "n2": 2463,
+      "w": 82
+    },
+    {
+      "n1": 114,
+      "n2": 2521,
+      "w": 167
+    },
+    {
+      "n1": 114,
+      "n2": 2578,
+      "w": 150
+    },
+    {
+      "n1": 114,
+      "n2": 2635,
+      "w": 12
+    },
+    {
+      "n1": 114,
+      "n2": 2692,
+      "w": 169
+    },
+    {
+      "n1": 171,
+      "n2": 782,
+      "w": 90
+    },
+    {
+      "n1": 171,
+      "n2": 1655,
+      "w": 43
+    },
+    {
+      "n1": 171,
+      "n2": 0,
+      "w": 35
+    },
+    {
+      "n1": 171,
+      "n2": 57,
+      "w": 61
+    },
+    {
+      "n1": 171,
+      "n2": 114,
+      "w": 36
+    },
+    {
+      "n1": 171,
+      "n2": 171,
+      "w": 0
+    },
+    {
+      "n1": 171,
+      "n2": 229,
+      "w": 32
+    },
+    {
+      "n1": 171,
+      "n2": 286,
+      "w": 63
+    },
+    {
+      "n1": 171,
+      "n2": 343,
+      "w": 40
+    },
+    {
+      "n1": 171,
+      "n2": 400,
+      "w": 73
+    },
+    {
+      "n1": 171,
+      "n2": 458,
+      "w": 141
+    },
+    {
+      "n1": 171,
+      "n2": 515,
+      "w": 61
+    },
+    {
+      "n1": 171,
+      "n2": 572,
+      "w": 55
+    },
+    {
+      "n1": 171,
+      "n2": 629,
+      "w": 91
+    },
+    {
+      "n1": 171,
+      "n2": 687,
+      "w": 77
+    },
+    {
+      "n1": 171,
+      "n2": 744,
+      "w": 91
+    },
+    {
+      "n1": 171,
+      "n2": 802,
+      "w": 78
+    },
+    {
+      "n1": 171,
+      "n2": 859,
+      "w": 120
+    },
+    {
+      "n1": 171,
+      "n2": 917,
+      "w": 60
+    },
+    {
+      "n1": 171,
+      "n2": 974,
+      "w": 19
+    },
+    {
+      "n1": 171,
+      "n2": 1031,
+      "w": 37
+    },
+    {
+      "n1": 171,
+      "n2": 1088,
+      "w": 53
+    },
+    {
+      "n1": 171,
+      "n2": 1146,
+      "w": 36
+    },
+    {
+      "n1": 171,
+      "n2": 1203,
+      "w": 136
+    },
+    {
+      "n1": 171,
+      "n2": 1260,
+      "w": 36
+    },
+    {
+      "n1": 171,
+      "n2": 1317,
+      "w": 47
+    },
+    {
+      "n1": 171,
+      "n2": 1375,
+      "w": 140
+    },
+    {
+      "n1": 171,
+      "n2": 1432,
+      "w": 51
+    },
+    {
+      "n1": 171,
+      "n2": 1489,
+      "w": 35
+    },
+    {
+      "n1": 171,
+      "n2": 1546,
+      "w": 68
+    },
+    {
+      "n1": 171,
+      "n2": 1604,
+      "w": 52
+    },
+    {
+      "n1": 171,
+      "n2": 1662,
+      "w": 120
+    },
+    {
+      "n1": 171,
+      "n2": 1719,
+      "w": 18
+    },
+    {
+      "n1": 171,
+      "n2": 1776,
+      "w": 97
+    },
+    {
+      "n1": 171,
+      "n2": 1834,
+      "w": 47
+    },
+    {
+      "n1": 171,
+      "n2": 1891,
+      "w": 120
+    },
+    {
+      "n1": 171,
+      "n2": 1948,
+      "w": 162
+    },
+    {
+      "n1": 171,
+      "n2": 2005,
+      "w": 157
+    },
+    {
+      "n1": 171,
+      "n2": 2063,
+      "w": 66
+    },
+    {
+      "n1": 171,
+      "n2": 2120,
+      "w": 79
+    },
+    {
+      "n1": 171,
+      "n2": 2177,
+      "w": 126
+    },
+    {
+      "n1": 171,
+      "n2": 2234,
+      "w": 85
+    },
+    {
+      "n1": 171,
+      "n2": 2292,
+      "w": 146
+    },
+    {
+      "n1": 171,
+      "n2": 2349,
+      "w": 70
+    },
+    {
+      "n1": 171,
+      "n2": 2406,
+      "w": 34
+    },
+    {
+      "n1": 171,
+      "n2": 2463,
+      "w": 72
+    },
+    {
+      "n1": 171,
+      "n2": 2521,
+      "w": 151
+    },
+    {
+      "n1": 171,
+      "n2": 2578,
+      "w": 130
+    },
+    {
+      "n1": 171,
+      "n2": 2635,
+      "w": 38
+    },
+    {
+      "n1": 171,
+      "n2": 2692,
+      "w": 153
+    },
+    {
+      "n1": 229,
+      "n2": 782,
+      "w": 102
+    },
+    {
+      "n1": 229,
+      "n2": 1655,
+      "w": 13
+    },
+    {
+      "n1": 229,
+      "n2": 0,
+      "w": 47
+    },
+    {
+      "n1": 229,
+      "n2": 57,
+      "w": 88
+    },
+    {
+      "n1": 229,
+      "n2": 114,
+      "w": 65
+    },
+    {
+      "n1": 229,
+      "n2": 171,
+      "w": 32
+    },
+    {
+      "n1": 229,
+      "n2": 229,
+      "w": 0
+    },
+    {
+      "n1": 229,
+      "n2": 286,
+      "w": 72
+    },
+    {
+      "n1": 229,
+      "n2": 343,
+      "w": 49
+    },
+    {
+      "n1": 229,
+      "n2": 400,
+      "w": 66
+    },
+    {
+      "n1": 229,
+      "n2": 458,
+      "w": 143
+    },
+    {
+      "n1": 229,
+      "n2": 515,
+      "w": 67
+    },
+    {
+      "n1": 229,
+      "n2": 572,
+      "w": 45
+    },
+    {
+      "n1": 229,
+      "n2": 629,
+      "w": 80
+    },
+    {
+      "n1": 229,
+      "n2": 687,
+      "w": 80
+    },
+    {
+      "n1": 229,
+      "n2": 744,
+      "w": 60
+    },
+    {
+      "n1": 229,
+      "n2": 802,
+      "w": 90
+    },
+    {
+      "n1": 229,
+      "n2": 859,
+      "w": 95
+    },
+    {
+      "n1": 229,
+      "n2": 917,
+      "w": 35
+    },
+    {
+      "n1": 229,
+      "n2": 974,
+      "w": 34
+    },
+    {
+      "n1": 229,
+      "n2": 1031,
+      "w": 21
+    },
+    {
+      "n1": 229,
+      "n2": 1088,
+      "w": 80
+    },
+    {
+      "n1": 229,
+      "n2": 1146,
+      "w": 45
+    },
+    {
+      "n1": 229,
+      "n2": 1203,
+      "w": 148
+    },
+    {
+      "n1": 229,
+      "n2": 1260,
+      "w": 29
+    },
+    {
+      "n1": 229,
+      "n2": 1317,
+      "w": 53
+    },
+    {
+      "n1": 229,
+      "n2": 1375,
+      "w": 152
+    },
+    {
+      "n1": 229,
+      "n2": 1432,
+      "w": 26
+    },
+    {
+      "n1": 229,
+      "n2": 1489,
+      "w": 5
+    },
+    {
+      "n1": 229,
+      "n2": 1546,
+      "w": 79
+    },
+    {
+      "n1": 229,
+      "n2": 1604,
+      "w": 26
+    },
+    {
+      "n1": 229,
+      "n2": 1662,
+      "w": 117
+    },
+    {
+      "n1": 229,
+      "n2": 1719,
+      "w": 31
+    },
+    {
+      "n1": 229,
+      "n2": 1776,
+      "w": 103
+    },
+    {
+      "n1": 229,
+      "n2": 1834,
+      "w": 55
+    },
+    {
+      "n1": 229,
+      "n2": 1891,
+      "w": 109
+    },
+    {
+      "n1": 229,
+      "n2": 1948,
+      "w": 138
+    },
+    {
+      "n1": 229,
+      "n2": 2005,
+      "w": 132
+    },
+    {
+      "n1": 229,
+      "n2": 2063,
+      "w": 88
+    },
+    {
+      "n1": 229,
+      "n2": 2120,
+      "w": 48
+    },
+    {
+      "n1": 229,
+      "n2": 2177,
+      "w": 130
+    },
+    {
+      "n1": 229,
+      "n2": 2234,
+      "w": 75
+    },
+    {
+      "n1": 229,
+      "n2": 2292,
+      "w": 158
+    },
+    {
+      "n1": 229,
+      "n2": 2349,
+      "w": 45
+    },
+    {
+      "n1": 229,
+      "n2": 2406,
+      "w": 46
+    },
+    {
+      "n1": 229,
+      "n2": 2463,
+      "w": 63
+    },
+    {
+      "n1": 229,
+      "n2": 2521,
+      "w": 153
+    },
+    {
+      "n1": 229,
+      "n2": 2578,
+      "w": 105
+    },
+    {
+      "n1": 229,
+      "n2": 2635,
+      "w": 69
+    },
+    {
+      "n1": 229,
+      "n2": 2692,
+      "w": 154
+    },
+    {
+      "n1": 286,
+      "n2": 782,
+      "w": 146
+    },
+    {
+      "n1": 286,
+      "n2": 1655,
+      "w": 69
+    },
+    {
+      "n1": 286,
+      "n2": 0,
+      "w": 93
+    },
+    {
+      "n1": 286,
+      "n2": 57,
+      "w": 106
+    },
+    {
+      "n1": 286,
+      "n2": 114,
+      "w": 59
+    },
+    {
+      "n1": 286,
+      "n2": 171,
+      "w": 63
+    },
+    {
+      "n1": 286,
+      "n2": 229,
+      "w": 72
+    },
+    {
+      "n1": 286,
+      "n2": 286,
+      "w": 0
+    },
+    {
+      "n1": 286,
+      "n2": 343,
+      "w": 28
+    },
+    {
+      "n1": 286,
+      "n2": 400,
+      "w": 135
+    },
+    {
+      "n1": 286,
+      "n2": 458,
+      "w": 198
+    },
+    {
+      "n1": 286,
+      "n2": 515,
+      "w": 119
+    },
+    {
+      "n1": 286,
+      "n2": 572,
+      "w": 114
+    },
+    {
+      "n1": 286,
+      "n2": 629,
+      "w": 46
+    },
+    {
+      "n1": 286,
+      "n2": 687,
+      "w": 14
+    },
+    {
+      "n1": 286,
+      "n2": 744,
+      "w": 123
+    },
+    {
+      "n1": 286,
+      "n2": 802,
+      "w": 135
+    },
+    {
+      "n1": 286,
+      "n2": 859,
+      "w": 112
+    },
+    {
+      "n1": 286,
+      "n2": 917,
+      "w": 64
+    },
+    {
+      "n1": 286,
+      "n2": 974,
+      "w": 49
+    },
+    {
+      "n1": 286,
+      "n2": 1031,
+      "w": 54
+    },
+    {
+      "n1": 286,
+      "n2": 1088,
+      "w": 99
+    },
+    {
+      "n1": 286,
+      "n2": 1146,
+      "w": 32
+    },
+    {
+      "n1": 286,
+      "n2": 1203,
+      "w": 192
+    },
+    {
+      "n1": 286,
+      "n2": 1260,
+      "w": 45
+    },
+    {
+      "n1": 286,
+      "n2": 1317,
+      "w": 20
+    },
+    {
+      "n1": 286,
+      "n2": 1375,
+      "w": 196
+    },
+    {
+      "n1": 286,
+      "n2": 1432,
+      "w": 68
+    },
+    {
+      "n1": 286,
+      "n2": 1489,
+      "w": 78
+    },
+    {
+      "n1": 286,
+      "n2": 1546,
+      "w": 124
+    },
+    {
+      "n1": 286,
+      "n2": 1604,
+      "w": 97
+    },
+    {
+      "n1": 286,
+      "n2": 1662,
+      "w": 178
+    },
+    {
+      "n1": 286,
+      "n2": 1719,
+      "w": 49
+    },
+    {
+      "n1": 286,
+      "n2": 1776,
+      "w": 155
+    },
+    {
+      "n1": 286,
+      "n2": 1834,
+      "w": 108
+    },
+    {
+      "n1": 286,
+      "n2": 1891,
+      "w": 71
+    },
+    {
+      "n1": 286,
+      "n2": 1948,
+      "w": 147
+    },
+    {
+      "n1": 286,
+      "n2": 2005,
+      "w": 148
+    },
+    {
+      "n1": 286,
+      "n2": 2063,
+      "w": 120
+    },
+    {
+      "n1": 286,
+      "n2": 2120,
+      "w": 111
+    },
+    {
+      "n1": 286,
+      "n2": 2177,
+      "w": 183
+    },
+    {
+      "n1": 286,
+      "n2": 2234,
+      "w": 145
+    },
+    {
+      "n1": 286,
+      "n2": 2292,
+      "w": 202
+    },
+    {
+      "n1": 286,
+      "n2": 2349,
+      "w": 115
+    },
+    {
+      "n1": 286,
+      "n2": 2406,
+      "w": 96
+    },
+    {
+      "n1": 286,
+      "n2": 2463,
+      "w": 35
+    },
+    {
+      "n1": 286,
+      "n2": 2521,
+      "w": 208
+    },
+    {
+      "n1": 286,
+      "n2": 2578,
+      "w": 98
+    },
+    {
+      "n1": 286,
+      "n2": 2635,
+      "w": 71
+    },
+    {
+      "n1": 286,
+      "n2": 2692,
+      "w": 210
+    },
+    {
+      "n1": 343,
+      "n2": 782,
+      "w": 123
+    },
+    {
+      "n1": 343,
+      "n2": 1655,
+      "w": 48
+    },
+    {
+      "n1": 343,
+      "n2": 0,
+      "w": 70
+    },
+    {
+      "n1": 343,
+      "n2": 57,
+      "w": 91
+    },
+    {
+      "n1": 343,
+      "n2": 114,
+      "w": 42
+    },
+    {
+      "n1": 343,
+      "n2": 171,
+      "w": 40
+    },
+    {
+      "n1": 343,
+      "n2": 229,
+      "w": 49
+    },
+    {
+      "n1": 343,
+      "n2": 286,
+      "w": 28
+    },
+    {
+      "n1": 343,
+      "n2": 343,
+      "w": 0
+    },
+    {
+      "n1": 343,
+      "n2": 400,
+      "w": 110
+    },
+    {
+      "n1": 343,
+      "n2": 458,
+      "w": 175
+    },
+    {
+      "n1": 343,
+      "n2": 515,
+      "w": 96
+    },
+    {
+      "n1": 343,
+      "n2": 572,
+      "w": 89
+    },
+    {
+      "n1": 343,
+      "n2": 629,
+      "w": 59
+    },
+    {
+      "n1": 343,
+      "n2": 687,
+      "w": 40
+    },
+    {
+      "n1": 343,
+      "n2": 744,
+      "w": 102
+    },
+    {
+      "n1": 343,
+      "n2": 802,
+      "w": 112
+    },
+    {
+      "n1": 343,
+      "n2": 859,
+      "w": 109
+    },
+    {
+      "n1": 343,
+      "n2": 917,
+      "w": 51
+    },
+    {
+      "n1": 343,
+      "n2": 974,
+      "w": 23
+    },
+    {
+      "n1": 343,
+      "n2": 1031,
+      "w": 33
+    },
+    {
+      "n1": 343,
+      "n2": 1088,
+      "w": 81
+    },
+    {
+      "n1": 343,
+      "n2": 1146,
+      "w": 4
+    },
+    {
+      "n1": 343,
+      "n2": 1203,
+      "w": 170
+    },
+    {
+      "n1": 343,
+      "n2": 1260,
+      "w": 24
+    },
+    {
+      "n1": 343,
+      "n2": 1317,
+      "w": 9
+    },
+    {
+      "n1": 343,
+      "n2": 1375,
+      "w": 174
+    },
+    {
+      "n1": 343,
+      "n2": 1432,
+      "w": 52
+    },
+    {
+      "n1": 343,
+      "n2": 1489,
+      "w": 55
+    },
+    {
+      "n1": 343,
+      "n2": 1546,
+      "w": 101
+    },
+    {
+      "n1": 343,
+      "n2": 1604,
+      "w": 74
+    },
+    {
+      "n1": 343,
+      "n2": 1662,
+      "w": 155
+    },
+    {
+      "n1": 343,
+      "n2": 1719,
+      "w": 24
+    },
+    {
+      "n1": 343,
+      "n2": 1776,
+      "w": 132
+    },
+    {
+      "n1": 343,
+      "n2": 1834,
+      "w": 85
+    },
+    {
+      "n1": 343,
+      "n2": 1891,
+      "w": 86
+    },
+    {
+      "n1": 343,
+      "n2": 1948,
+      "w": 150
+    },
+    {
+      "n1": 343,
+      "n2": 2005,
+      "w": 145
+    },
+    {
+      "n1": 343,
+      "n2": 2063,
+      "w": 97
+    },
+    {
+      "n1": 343,
+      "n2": 2120,
+      "w": 90
+    },
+    {
+      "n1": 343,
+      "n2": 2177,
+      "w": 160
+    },
+    {
+      "n1": 343,
+      "n2": 2234,
+      "w": 121
+    },
+    {
+      "n1": 343,
+      "n2": 2292,
+      "w": 180
+    },
+    {
+      "n1": 343,
+      "n2": 2349,
+      "w": 92
+    },
+    {
+      "n1": 343,
+      "n2": 2406,
+      "w": 73
+    },
+    {
+      "n1": 343,
+      "n2": 2463,
+      "w": 40
+    },
+    {
+      "n1": 343,
+      "n2": 2521,
+      "w": 185
+    },
+    {
+      "n1": 343,
+      "n2": 2578,
+      "w": 111
+    },
+    {
+      "n1": 343,
+      "n2": 2635,
+      "w": 55
+    },
+    {
+      "n1": 343,
+      "n2": 2692,
+      "w": 187
+    },
+    {
+      "n1": 400,
+      "n2": 782,
+      "w": 64
+    },
+    {
+      "n1": 400,
+      "n2": 1655,
+      "w": 76
+    },
+    {
+      "n1": 400,
+      "n2": 0,
+      "w": 47
+    },
+    {
+      "n1": 400,
+      "n2": 57,
+      "w": 85
+    },
+    {
+      "n1": 400,
+      "n2": 114,
+      "w": 99
+    },
+    {
+      "n1": 400,
+      "n2": 171,
+      "w": 73
+    },
+    {
+      "n1": 400,
+      "n2": 229,
+      "w": 66
+    },
+    {
+      "n1": 400,
+      "n2": 286,
+      "w": 135
+    },
+    {
+      "n1": 400,
+      "n2": 343,
+      "w": 110
+    },
+    {
+      "n1": 400,
+      "n2": 400,
+      "w": 0
+    },
+    {
+      "n1": 400,
+      "n2": 458,
+      "w": 80
+    },
+    {
+      "n1": 400,
+      "n2": 515,
+      "w": 28
+    },
+    {
+      "n1": 400,
+      "n2": 572,
+      "w": 21
+    },
+    {
+      "n1": 400,
+      "n2": 629,
+      "w": 144
+    },
+    {
+      "n1": 400,
+      "n2": 687,
+      "w": 144
+    },
+    {
+      "n1": 400,
+      "n2": 744,
+      "w": 80
+    },
+    {
+      "n1": 400,
+      "n2": 802,
+      "w": 50
+    },
+    {
+      "n1": 400,
+      "n2": 859,
+      "w": 153
+    },
+    {
+      "n1": 400,
+      "n2": 917,
+      "w": 98
+    },
+    {
+      "n1": 400,
+      "n2": 974,
+      "w": 87
+    },
+    {
+      "n1": 400,
+      "n2": 1031,
+      "w": 86
+    },
+    {
+      "n1": 400,
+      "n2": 1088,
+      "w": 82
+    },
+    {
+      "n1": 400,
+      "n2": 1146,
+      "w": 106
+    },
+    {
+      "n1": 400,
+      "n2": 1203,
+      "w": 107
+    },
+    {
+      "n1": 400,
+      "n2": 1260,
+      "w": 95
+    },
+    {
+      "n1": 400,
+      "n2": 1317,
+      "w": 115
+    },
+    {
+      "n1": 400,
+      "n2": 1375,
+      "w": 107
+    },
+    {
+      "n1": 400,
+      "n2": 1432,
+      "w": 89
+    },
+    {
+      "n1": 400,
+      "n2": 1489,
+      "w": 60
+    },
+    {
+      "n1": 400,
+      "n2": 1546,
+      "w": 53
+    },
+    {
+      "n1": 400,
+      "n2": 1604,
+      "w": 50
+    },
+    {
+      "n1": 400,
+      "n2": 1662,
+      "w": 54
+    },
+    {
+      "n1": 400,
+      "n2": 1719,
+      "w": 86
+    },
+    {
+      "n1": 400,
+      "n2": 1776,
+      "w": 48
+    },
+    {
+      "n1": 400,
+      "n2": 1834,
+      "w": 33
+    },
+    {
+      "n1": 400,
+      "n2": 1891,
+      "w": 173
+    },
+    {
+      "n1": 400,
+      "n2": 1948,
+      "w": 196
+    },
+    {
+      "n1": 400,
+      "n2": 2005,
+      "w": 190
+    },
+    {
+      "n1": 400,
+      "n2": 2063,
+      "w": 79
+    },
+    {
+      "n1": 400,
+      "n2": 2120,
+      "w": 74
+    },
+    {
+      "n1": 400,
+      "n2": 2177,
+      "w": 70
+    },
+    {
+      "n1": 400,
+      "n2": 2234,
+      "w": 14
+    },
+    {
+      "n1": 400,
+      "n2": 2292,
+      "w": 111
+    },
+    {
+      "n1": 400,
+      "n2": 2349,
+      "w": 45
+    },
+    {
+      "n1": 400,
+      "n2": 2406,
+      "w": 43
+    },
+    {
+      "n1": 400,
+      "n2": 2463,
+      "w": 127
+    },
+    {
+      "n1": 400,
+      "n2": 2521,
+      "w": 90
+    },
+    {
+      "n1": 400,
+      "n2": 2578,
+      "w": 168
+    },
+    {
+      "n1": 400,
+      "n2": 2635,
+      "w": 92
+    },
+    {
+      "n1": 400,
+      "n2": 2692,
+      "w": 92
+    },
+    {
+      "n1": 458,
+      "n2": 782,
+      "w": 65
+    },
+    {
+      "n1": 458,
+      "n2": 1655,
+      "w": 152
+    },
+    {
+      "n1": 458,
+      "n2": 0,
+      "w": 105
+    },
+    {
+      "n1": 458,
+      "n2": 57,
+      "w": 118
+    },
+    {
+      "n1": 458,
+      "n2": 114,
+      "w": 157
+    },
+    {
+      "n1": 458,
+      "n2": 171,
+      "w": 140
+    },
+    {
+      "n1": 458,
+      "n2": 229,
+      "w": 142
+    },
+    {
+      "n1": 458,
+      "n2": 286,
+      "w": 198
+    },
+    {
+      "n1": 458,
+      "n2": 343,
+      "w": 175
+    },
+    {
+      "n1": 458,
+      "n2": 400,
+      "w": 80
+    },
+    {
+      "n1": 458,
+      "n2": 458,
+      "w": 0
+    },
+    {
+      "n1": 458,
+      "n2": 515,
+      "w": 82
+    },
+    {
+      "n1": 458,
+      "n2": 572,
+      "w": 100
+    },
+    {
+      "n1": 458,
+      "n2": 629,
+      "w": 220
+    },
+    {
+      "n1": 458,
+      "n2": 687,
+      "w": 213
+    },
+    {
+      "n1": 458,
+      "n2": 744,
+      "w": 152
+    },
+    {
+      "n1": 458,
+      "n2": 802,
+      "w": 68
+    },
+    {
+      "n1": 458,
+      "n2": 859,
+      "w": 229
+    },
+    {
+      "n1": 458,
+      "n2": 917,
+      "w": 174
+    },
+    {
+      "n1": 458,
+      "n2": 974,
+      "w": 155
+    },
+    {
+      "n1": 458,
+      "n2": 1031,
+      "w": 162
+    },
+    {
+      "n1": 458,
+      "n2": 1088,
+      "w": 125
+    },
+    {
+      "n1": 458,
+      "n2": 1146,
+      "w": 172
+    },
+    {
+      "n1": 458,
+      "n2": 1203,
+      "w": 71
+    },
+    {
+      "n1": 458,
+      "n2": 1260,
+      "w": 169
+    },
+    {
+      "n1": 458,
+      "n2": 1317,
+      "w": 183
+    },
+    {
+      "n1": 458,
+      "n2": 1375,
+      "w": 64
+    },
+    {
+      "n1": 458,
+      "n2": 1432,
+      "w": 165
+    },
+    {
+      "n1": 458,
+      "n2": 1489,
+      "w": 136
+    },
+    {
+      "n1": 458,
+      "n2": 1546,
+      "w": 88
+    },
+    {
+      "n1": 458,
+      "n2": 1604,
+      "w": 127
+    },
+    {
+      "n1": 458,
+      "n2": 1662,
+      "w": 33
+    },
+    {
+      "n1": 458,
+      "n2": 1719,
+      "w": 155
+    },
+    {
+      "n1": 458,
+      "n2": 1776,
+      "w": 45
+    },
+    {
+      "n1": 458,
+      "n2": 1834,
+      "w": 96
+    },
+    {
+      "n1": 458,
+      "n2": 1891,
+      "w": 249
+    },
+    {
+      "n1": 458,
+      "n2": 1948,
+      "w": 271
+    },
+    {
+      "n1": 458,
+      "n2": 2005,
+      "w": 266
+    },
+    {
+      "n1": 458,
+      "n2": 2063,
+      "w": 106
+    },
+    {
+      "n1": 458,
+      "n2": 2120,
+      "w": 146
+    },
+    {
+      "n1": 458,
+      "n2": 2177,
+      "w": 18
+    },
+    {
+      "n1": 458,
+      "n2": 2234,
+      "w": 74
+    },
+    {
+      "n1": 458,
+      "n2": 2292,
+      "w": 55
+    },
+    {
+      "n1": 458,
+      "n2": 2349,
+      "w": 119
+    },
+    {
+      "n1": 458,
+      "n2": 2406,
+      "w": 108
+    },
+    {
+      "n1": 458,
+      "n2": 2463,
+      "w": 203
+    },
+    {
+      "n1": 458,
+      "n2": 2521,
+      "w": 11
+    },
+    {
+      "n1": 458,
+      "n2": 2578,
+      "w": 243
+    },
+    {
+      "n1": 458,
+      "n2": 2635,
+      "w": 147
+    },
+    {
+      "n1": 458,
+      "n2": 2692,
+      "w": 12
+    },
+    {
+      "n1": 515,
+      "n2": 782,
+      "w": 41
+    },
+    {
+      "n1": 515,
+      "n2": 1655,
+      "w": 78
+    },
+    {
+      "n1": 515,
+      "n2": 0,
+      "w": 26
+    },
+    {
+      "n1": 515,
+      "n2": 57,
+      "w": 60
+    },
+    {
+      "n1": 515,
+      "n2": 114,
+      "w": 78
+    },
+    {
+      "n1": 515,
+      "n2": 171,
+      "w": 61
+    },
+    {
+      "n1": 515,
+      "n2": 229,
+      "w": 67
+    },
+    {
+      "n1": 515,
+      "n2": 286,
+      "w": 119
+    },
+    {
+      "n1": 515,
+      "n2": 343,
+      "w": 96
+    },
+    {
+      "n1": 515,
+      "n2": 400,
+      "w": 28
+    },
+    {
+      "n1": 515,
+      "n2": 458,
+      "w": 82
+    },
+    {
+      "n1": 515,
+      "n2": 515,
+      "w": 0
+    },
+    {
+      "n1": 515,
+      "n2": 572,
+      "w": 31
+    },
+    {
+      "n1": 515,
+      "n2": 629,
+      "w": 142
+    },
+    {
+      "n1": 515,
+      "n2": 687,
+      "w": 133
+    },
+    {
+      "n1": 515,
+      "n2": 744,
+      "w": 98
+    },
+    {
+      "n1": 515,
+      "n2": 802,
+      "w": 28
+    },
+    {
+      "n1": 515,
+      "n2": 859,
+      "w": 160
+    },
+    {
+      "n1": 515,
+      "n2": 917,
+      "w": 99
+    },
+    {
+      "n1": 515,
+      "n2": 974,
+      "w": 75
+    },
+    {
+      "n1": 515,
+      "n2": 1031,
+      "w": 87
+    },
+    {
+      "n1": 515,
+      "n2": 1088,
+      "w": 58
+    },
+    {
+      "n1": 515,
+      "n2": 1146,
+      "w": 93
+    },
+    {
+      "n1": 515,
+      "n2": 1203,
+      "w": 87
+    },
+    {
+      "n1": 515,
+      "n2": 1260,
+      "w": 90
+    },
+    {
+      "n1": 515,
+      "n2": 1317,
+      "w": 103
+    },
+    {
+      "n1": 515,
+      "n2": 1375,
+      "w": 91
+    },
+    {
+      "n1": 515,
+      "n2": 1432,
+      "w": 91
+    },
+    {
+      "n1": 515,
+      "n2": 1489,
+      "w": 62
+    },
+    {
+      "n1": 515,
+      "n2": 1546,
+      "w": 24
+    },
+    {
+      "n1": 515,
+      "n2": 1604,
+      "w": 61
+    },
+    {
+      "n1": 515,
+      "n2": 1662,
+      "w": 61
+    },
+    {
+      "n1": 515,
+      "n2": 1719,
+      "w": 76
+    },
+    {
+      "n1": 515,
+      "n2": 1776,
+      "w": 39
+    },
+    {
+      "n1": 515,
+      "n2": 1834,
+      "w": 15
+    },
+    {
+      "n1": 515,
+      "n2": 1891,
+      "w": 171
+    },
+    {
+      "n1": 515,
+      "n2": 1948,
+      "w": 202
+    },
+    {
+      "n1": 515,
+      "n2": 2005,
+      "w": 196
+    },
+    {
+      "n1": 515,
+      "n2": 2063,
+      "w": 52
+    },
+    {
+      "n1": 515,
+      "n2": 2120,
+      "w": 89
+    },
+    {
+      "n1": 515,
+      "n2": 2177,
+      "w": 67
+    },
+    {
+      "n1": 515,
+      "n2": 2234,
+      "w": 42
+    },
+    {
+      "n1": 515,
+      "n2": 2292,
+      "w": 97
+    },
+    {
+      "n1": 515,
+      "n2": 2349,
+      "w": 61
+    },
+    {
+      "n1": 515,
+      "n2": 2406,
+      "w": 28
+    },
+    {
+      "n1": 515,
+      "n2": 2463,
+      "w": 125
+    },
+    {
+      "n1": 515,
+      "n2": 2521,
+      "w": 92
+    },
+    {
+      "n1": 515,
+      "n2": 2578,
+      "w": 169
+    },
+    {
+      "n1": 515,
+      "n2": 2635,
+      "w": 70
+    },
+    {
+      "n1": 515,
+      "n2": 2692,
+      "w": 94
+    },
+    {
+      "n1": 572,
+      "n2": 782,
+      "w": 73
+    },
+    {
+      "n1": 572,
+      "n2": 1655,
+      "w": 56
+    },
+    {
+      "n1": 572,
+      "n2": 0,
+      "w": 36
+    },
+    {
+      "n1": 572,
+      "n2": 57,
+      "w": 80
+    },
+    {
+      "n1": 572,
+      "n2": 114,
+      "w": 85
+    },
+    {
+      "n1": 572,
+      "n2": 171,
+      "w": 55
+    },
+    {
+      "n1": 572,
+      "n2": 229,
+      "w": 45
+    },
+    {
+      "n1": 572,
+      "n2": 286,
+      "w": 114
+    },
+    {
+      "n1": 572,
+      "n2": 343,
+      "w": 89
+    },
+    {
+      "n1": 572,
+      "n2": 400,
+      "w": 21
+    },
+    {
+      "n1": 572,
+      "n2": 458,
+      "w": 100
+    },
+    {
+      "n1": 572,
+      "n2": 515,
+      "w": 32
+    },
+    {
+      "n1": 572,
+      "n2": 572,
+      "w": 0
+    },
+    {
+      "n1": 572,
+      "n2": 629,
+      "w": 124
+    },
+    {
+      "n1": 572,
+      "n2": 687,
+      "w": 124
+    },
+    {
+      "n1": 572,
+      "n2": 744,
+      "w": 70
+    },
+    {
+      "n1": 572,
+      "n2": 802,
+      "w": 59
+    },
+    {
+      "n1": 572,
+      "n2": 859,
+      "w": 136
+    },
+    {
+      "n1": 572,
+      "n2": 917,
+      "w": 78
+    },
+    {
+      "n1": 572,
+      "n2": 974,
+      "w": 67
+    },
+    {
+      "n1": 572,
+      "n2": 1031,
+      "w": 66
+    },
+    {
+      "n1": 572,
+      "n2": 1088,
+      "w": 76
+    },
+    {
+      "n1": 572,
+      "n2": 1146,
+      "w": 85
+    },
+    {
+      "n1": 572,
+      "n2": 1203,
+      "w": 118
+    },
+    {
+      "n1": 572,
+      "n2": 1260,
+      "w": 74
+    },
+    {
+      "n1": 572,
+      "n2": 1317,
+      "w": 95
+    },
+    {
+      "n1": 572,
+      "n2": 1375,
+      "w": 121
+    },
+    {
+      "n1": 572,
+      "n2": 1432,
+      "w": 69
+    },
+    {
+      "n1": 572,
+      "n2": 1489,
+      "w": 40
+    },
+    {
+      "n1": 572,
+      "n2": 1546,
+      "w": 56
+    },
+    {
+      "n1": 572,
+      "n2": 1604,
+      "w": 33
+    },
+    {
+      "n1": 572,
+      "n2": 1662,
+      "w": 74
+    },
+    {
+      "n1": 572,
+      "n2": 1719,
+      "w": 65
+    },
+    {
+      "n1": 572,
+      "n2": 1776,
+      "w": 63
+    },
+    {
+      "n1": 572,
+      "n2": 1834,
+      "w": 27
+    },
+    {
+      "n1": 572,
+      "n2": 1891,
+      "w": 153
+    },
+    {
+      "n1": 572,
+      "n2": 1948,
+      "w": 179
+    },
+    {
+      "n1": 572,
+      "n2": 2005,
+      "w": 173
+    },
+    {
+      "n1": 572,
+      "n2": 2063,
+      "w": 77
+    },
+    {
+      "n1": 572,
+      "n2": 2120,
+      "w": 60
+    },
+    {
+      "n1": 572,
+      "n2": 2177,
+      "w": 89
+    },
+    {
+      "n1": 572,
+      "n2": 2234,
+      "w": 32
+    },
+    {
+      "n1": 572,
+      "n2": 2292,
+      "w": 128
+    },
+    {
+      "n1": 572,
+      "n2": 2349,
+      "w": 31
+    },
+    {
+      "n1": 572,
+      "n2": 2406,
+      "w": 33
+    },
+    {
+      "n1": 572,
+      "n2": 2463,
+      "w": 107
+    },
+    {
+      "n1": 572,
+      "n2": 2521,
+      "w": 110
+    },
+    {
+      "n1": 572,
+      "n2": 2578,
+      "w": 147
+    },
+    {
+      "n1": 572,
+      "n2": 2635,
+      "w": 82
+    },
+    {
+      "n1": 572,
+      "n2": 2692,
+      "w": 112
+    },
+    {
+      "n1": 629,
+      "n2": 782,
+      "w": 172
+    },
+    {
+      "n1": 629,
+      "n2": 1655,
+      "w": 73
+    },
+    {
+      "n1": 629,
+      "n2": 0,
+      "w": 118
+    },
+    {
+      "n1": 629,
+      "n2": 57,
+      "w": 146
+    },
+    {
+      "n1": 629,
+      "n2": 114,
+      "w": 98
+    },
+    {
+      "n1": 629,
+      "n2": 171,
+      "w": 91
+    },
+    {
+      "n1": 629,
+      "n2": 229,
+      "w": 80
+    },
+    {
+      "n1": 629,
+      "n2": 286,
+      "w": 46
+    },
+    {
+      "n1": 629,
+      "n2": 343,
+      "w": 59
+    },
+    {
+      "n1": 629,
+      "n2": 400,
+      "w": 144
+    },
+    {
+      "n1": 629,
+      "n2": 458,
+      "w": 221
+    },
+    {
+      "n1": 629,
+      "n2": 515,
+      "w": 142
+    },
+    {
+      "n1": 629,
+      "n2": 572,
+      "w": 124
+    },
+    {
+      "n1": 629,
+      "n2": 629,
+      "w": 0
+    },
+    {
+      "n1": 629,
+      "n2": 687,
+      "w": 41
+    },
+    {
+      "n1": 629,
+      "n2": 744,
+      "w": 106
+    },
+    {
+      "n1": 629,
+      "n2": 802,
+      "w": 160
+    },
+    {
+      "n1": 629,
+      "n2": 859,
+      "w": 77
+    },
+    {
+      "n1": 629,
+      "n2": 917,
+      "w": 49
+    },
+    {
+      "n1": 629,
+      "n2": 974,
+      "w": 74
+    },
+    {
+      "n1": 629,
+      "n2": 1031,
+      "w": 60
+    },
+    {
+      "n1": 629,
+      "n2": 1088,
+      "w": 137
+    },
+    {
+      "n1": 629,
+      "n2": 1146,
+      "w": 61
+    },
+    {
+      "n1": 629,
+      "n2": 1203,
+      "w": 218
+    },
+    {
+      "n1": 629,
+      "n2": 1260,
+      "w": 55
+    },
+    {
+      "n1": 629,
+      "n2": 1317,
+      "w": 51
+    },
+    {
+      "n1": 629,
+      "n2": 1375,
+      "w": 222
+    },
+    {
+      "n1": 629,
+      "n2": 1432,
+      "w": 60
+    },
+    {
+      "n1": 629,
+      "n2": 1489,
+      "w": 83
+    },
+    {
+      "n1": 629,
+      "n2": 1546,
+      "w": 150
+    },
+    {
+      "n1": 629,
+      "n2": 1604,
+      "w": 102
+    },
+    {
+      "n1": 629,
+      "n2": 1662,
+      "w": 195
+    },
+    {
+      "n1": 629,
+      "n2": 1719,
+      "w": 75
+    },
+    {
+      "n1": 629,
+      "n2": 1776,
+      "w": 179
+    },
+    {
+      "n1": 629,
+      "n2": 1834,
+      "w": 129
+    },
+    {
+      "n1": 629,
+      "n2": 1891,
+      "w": 31
+    },
+    {
+      "n1": 629,
+      "n2": 1948,
+      "w": 101
+    },
+    {
+      "n1": 629,
+      "n2": 2005,
+      "w": 102
+    },
+    {
+      "n1": 629,
+      "n2": 2063,
+      "w": 153
+    },
+    {
+      "n1": 629,
+      "n2": 2120,
+      "w": 94
+    },
+    {
+      "n1": 629,
+      "n2": 2177,
+      "w": 208
+    },
+    {
+      "n1": 629,
+      "n2": 2234,
+      "w": 151
+    },
+    {
+      "n1": 629,
+      "n2": 2292,
+      "w": 228
+    },
+    {
+      "n1": 629,
+      "n2": 2349,
+      "w": 115
+    },
+    {
+      "n1": 629,
+      "n2": 2406,
+      "w": 116
+    },
+    {
+      "n1": 629,
+      "n2": 2463,
+      "w": 22
+    },
+    {
+      "n1": 629,
+      "n2": 2521,
+      "w": 231
+    },
+    {
+      "n1": 629,
+      "n2": 2578,
+      "w": 52
+    },
+    {
+      "n1": 629,
+      "n2": 2635,
+      "w": 110
+    },
+    {
+      "n1": 629,
+      "n2": 2692,
+      "w": 233
+    },
+    {
+      "n1": 687,
+      "n2": 782,
+      "w": 160
+    },
+    {
+      "n1": 687,
+      "n2": 1655,
+      "w": 75
+    },
+    {
+      "n1": 687,
+      "n2": 0,
+      "w": 107
+    },
+    {
+      "n1": 687,
+      "n2": 57,
+      "w": 119
+    },
+    {
+      "n1": 687,
+      "n2": 114,
+      "w": 73
+    },
+    {
+      "n1": 687,
+      "n2": 171,
+      "w": 77
+    },
+    {
+      "n1": 687,
+      "n2": 229,
+      "w": 81
+    },
+    {
+      "n1": 687,
+      "n2": 286,
+      "w": 14
+    },
+    {
+      "n1": 687,
+      "n2": 343,
+      "w": 40
+    },
+    {
+      "n1": 687,
+      "n2": 400,
+      "w": 145
+    },
+    {
+      "n1": 687,
+      "n2": 458,
+      "w": 212
+    },
+    {
+      "n1": 687,
+      "n2": 515,
+      "w": 133
+    },
+    {
+      "n1": 687,
+      "n2": 572,
+      "w": 124
+    },
+    {
+      "n1": 687,
+      "n2": 629,
+      "w": 41
+    },
+    {
+      "n1": 687,
+      "n2": 687,
+      "w": 0
+    },
+    {
+      "n1": 687,
+      "n2": 744,
+      "w": 126
+    },
+    {
+      "n1": 687,
+      "n2": 802,
+      "w": 149
+    },
+    {
+      "n1": 687,
+      "n2": 859,
+      "w": 115
+    },
+    {
+      "n1": 687,
+      "n2": 917,
+      "w": 66
+    },
+    {
+      "n1": 687,
+      "n2": 974,
+      "w": 59
+    },
+    {
+      "n1": 687,
+      "n2": 1031,
+      "w": 60
+    },
+    {
+      "n1": 687,
+      "n2": 1088,
+      "w": 113
+    },
+    {
+      "n1": 687,
+      "n2": 1146,
+      "w": 42
+    },
+    {
+      "n1": 687,
+      "n2": 1203,
+      "w": 206
+    },
+    {
+      "n1": 687,
+      "n2": 1260,
+      "w": 53
+    },
+    {
+      "n1": 687,
+      "n2": 1317,
+      "w": 31
+    },
+    {
+      "n1": 687,
+      "n2": 1375,
+      "w": 210
+    },
+    {
+      "n1": 687,
+      "n2": 1432,
+      "w": 71
+    },
+    {
+      "n1": 687,
+      "n2": 1489,
+      "w": 84
+    },
+    {
+      "n1": 687,
+      "n2": 1546,
+      "w": 138
+    },
+    {
+      "n1": 687,
+      "n2": 1604,
+      "w": 103
+    },
+    {
+      "n1": 687,
+      "n2": 1662,
+      "w": 192
+    },
+    {
+      "n1": 687,
+      "n2": 1719,
+      "w": 60
+    },
+    {
+      "n1": 687,
+      "n2": 1776,
+      "w": 169
+    },
+    {
+      "n1": 687,
+      "n2": 1834,
+      "w": 122
+    },
+    {
+      "n1": 687,
+      "n2": 1891,
+      "w": 59
+    },
+    {
+      "n1": 687,
+      "n2": 1948,
+      "w": 141
+    },
+    {
+      "n1": 687,
+      "n2": 2005,
+      "w": 142
+    },
+    {
+      "n1": 687,
+      "n2": 2063,
+      "w": 134
+    },
+    {
+      "n1": 687,
+      "n2": 2120,
+      "w": 114
+    },
+    {
+      "n1": 687,
+      "n2": 2177,
+      "w": 197
+    },
+    {
+      "n1": 687,
+      "n2": 2234,
+      "w": 151
+    },
+    {
+      "n1": 687,
+      "n2": 2292,
+      "w": 216
+    },
+    {
+      "n1": 687,
+      "n2": 2349,
+      "w": 122
+    },
+    {
+      "n1": 687,
+      "n2": 2406,
+      "w": 110
+    },
+    {
+      "n1": 687,
+      "n2": 2463,
+      "w": 34
+    },
+    {
+      "n1": 687,
+      "n2": 2521,
+      "w": 222
+    },
+    {
+      "n1": 687,
+      "n2": 2578,
+      "w": 92
+    },
+    {
+      "n1": 687,
+      "n2": 2635,
+      "w": 85
+    },
+    {
+      "n1": 687,
+      "n2": 2692,
+      "w": 224
+    },
+    {
+      "n1": 744,
+      "n2": 782,
+      "w": 139
+    },
+    {
+      "n1": 744,
+      "n2": 1655,
+      "w": 55
+    },
+    {
+      "n1": 744,
+      "n2": 0,
+      "w": 92
+    },
+    {
+      "n1": 744,
+      "n2": 57,
+      "w": 136
+    },
+    {
+      "n1": 744,
+      "n2": 114,
+      "w": 123
+    },
+    {
+      "n1": 744,
+      "n2": 171,
+      "w": 91
+    },
+    {
+      "n1": 744,
+      "n2": 229,
+      "w": 60
+    },
+    {
+      "n1": 744,
+      "n2": 286,
+      "w": 123
+    },
+    {
+      "n1": 744,
+      "n2": 343,
+      "w": 102
+    },
+    {
+      "n1": 744,
+      "n2": 400,
+      "w": 80
+    },
+    {
+      "n1": 744,
+      "n2": 458,
+      "w": 152
+    },
+    {
+      "n1": 744,
+      "n2": 515,
+      "w": 99
+    },
+    {
+      "n1": 744,
+      "n2": 572,
+      "w": 70
+    },
+    {
+      "n1": 744,
+      "n2": 629,
+      "w": 106
+    },
+    {
+      "n1": 744,
+      "n2": 687,
+      "w": 126
+    },
+    {
+      "n1": 744,
+      "n2": 744,
+      "w": 0
+    },
+    {
+      "n1": 744,
+      "n2": 802,
+      "w": 126
+    },
+    {
+      "n1": 744,
+      "n2": 859,
+      "w": 92
+    },
+    {
+      "n1": 744,
+      "n2": 917,
+      "w": 60
+    },
+    {
+      "n1": 744,
+      "n2": 974,
+      "w": 92
+    },
+    {
+      "n1": 744,
+      "n2": 1031,
+      "w": 69
+    },
+    {
+      "n1": 744,
+      "n2": 1088,
+      "w": 130
+    },
+    {
+      "n1": 744,
+      "n2": 1146,
+      "w": 99
+    },
+    {
+      "n1": 744,
+      "n2": 1203,
+      "w": 184
+    },
+    {
+      "n1": 744,
+      "n2": 1260,
+      "w": 79
+    },
+    {
+      "n1": 744,
+      "n2": 1317,
+      "w": 105
+    },
+    {
+      "n1": 744,
+      "n2": 1375,
+      "w": 184
+    },
+    {
+      "n1": 744,
+      "n2": 1432,
+      "w": 55
+    },
+    {
+      "n1": 744,
+      "n2": 1489,
+      "w": 56
+    },
+    {
+      "n1": 744,
+      "n2": 1546,
+      "w": 121
+    },
+    {
+      "n1": 744,
+      "n2": 1604,
+      "w": 40
+    },
+    {
+      "n1": 744,
+      "n2": 1662,
+      "w": 122
+    },
+    {
+      "n1": 744,
+      "n2": 1719,
+      "w": 89
+    },
+    {
+      "n1": 744,
+      "n2": 1776,
+      "w": 125
+    },
+    {
+      "n1": 744,
+      "n2": 1834,
+      "w": 89
+    },
+    {
+      "n1": 744,
+      "n2": 1891,
+      "w": 128
+    },
+    {
+      "n1": 744,
+      "n2": 1948,
+      "w": 135
+    },
+    {
+      "n1": 744,
+      "n2": 2005,
+      "w": 129
+    },
+    {
+      "n1": 744,
+      "n2": 2063,
+      "w": 134
+    },
+    {
+      "n1": 744,
+      "n2": 2120,
+      "w": 12
+    },
+    {
+      "n1": 744,
+      "n2": 2177,
+      "w": 146
+    },
+    {
+      "n1": 744,
+      "n2": 2234,
+      "w": 79
+    },
+    {
+      "n1": 744,
+      "n2": 2292,
+      "w": 188
+    },
+    {
+      "n1": 744,
+      "n2": 2349,
+      "w": 40
+    },
+    {
+      "n1": 744,
+      "n2": 2406,
+      "w": 87
+    },
+    {
+      "n1": 744,
+      "n2": 2463,
+      "w": 97
+    },
+    {
+      "n1": 744,
+      "n2": 2521,
+      "w": 162
+    },
+    {
+      "n1": 744,
+      "n2": 2578,
+      "w": 114
+    },
+    {
+      "n1": 744,
+      "n2": 2635,
+      "w": 127
+    },
+    {
+      "n1": 744,
+      "n2": 2692,
+      "w": 164
+    },
+    {
+      "n1": 802,
+      "n2": 782,
+      "w": 13
+    },
+    {
+      "n1": 802,
+      "n2": 1655,
+      "w": 103
+    },
+    {
+      "n1": 802,
+      "n2": 0,
+      "w": 42
+    },
+    {
+      "n1": 802,
+      "n2": 57,
+      "w": 57
+    },
+    {
+      "n1": 802,
+      "n2": 114,
+      "w": 92
+    },
+    {
+      "n1": 802,
+      "n2": 171,
+      "w": 77
+    },
+    {
+      "n1": 802,
+      "n2": 229,
+      "w": 89
+    },
+    {
+      "n1": 802,
+      "n2": 286,
+      "w": 135
+    },
+    {
+      "n1": 802,
+      "n2": 343,
+      "w": 112
+    },
+    {
+      "n1": 802,
+      "n2": 400,
+      "w": 49
+    },
+    {
+      "n1": 802,
+      "n2": 458,
+      "w": 68
+    },
+    {
+      "n1": 802,
+      "n2": 515,
+      "w": 28
+    },
+    {
+      "n1": 802,
+      "n2": 572,
+      "w": 59
+    },
+    {
+      "n1": 802,
+      "n2": 629,
+      "w": 160
+    },
+    {
+      "n1": 802,
+      "n2": 687,
+      "w": 149
+    },
+    {
+      "n1": 802,
+      "n2": 744,
+      "w": 126
+    },
+    {
+      "n1": 802,
+      "n2": 802,
+      "w": 0
+    },
+    {
+      "n1": 802,
+      "n2": 859,
+      "w": 183
+    },
+    {
+      "n1": 802,
+      "n2": 917,
+      "w": 123
+    },
+    {
+      "n1": 802,
+      "n2": 974,
+      "w": 91
+    },
+    {
+      "n1": 802,
+      "n2": 1031,
+      "w": 106
+    },
+    {
+      "n1": 802,
+      "n2": 1088,
+      "w": 58
+    },
+    {
+      "n1": 802,
+      "n2": 1146,
+      "w": 108
+    },
+    {
+      "n1": 802,
+      "n2": 1203,
+      "w": 59
+    },
+    {
+      "n1": 802,
+      "n2": 1260,
+      "w": 108
+    },
+    {
+      "n1": 802,
+      "n2": 1317,
+      "w": 119
+    },
+    {
+      "n1": 802,
+      "n2": 1375,
+      "w": 64
+    },
+    {
+      "n1": 802,
+      "n2": 1432,
+      "w": 114
+    },
+    {
+      "n1": 802,
+      "n2": 1489,
+      "w": 89
+    },
+    {
+      "n1": 802,
+      "n2": 1546,
+      "w": 21
+    },
+    {
+      "n1": 802,
+      "n2": 1604,
+      "w": 88
+    },
+    {
+      "n1": 802,
+      "n2": 1662,
+      "w": 56
+    },
+    {
+      "n1": 802,
+      "n2": 1719,
+      "w": 91
+    },
+    {
+      "n1": 802,
+      "n2": 1776,
+      "w": 25
+    },
+    {
+      "n1": 802,
+      "n2": 1834,
+      "w": 39
+    },
+    {
+      "n1": 802,
+      "n2": 1891,
+      "w": 189
+    },
+    {
+      "n1": 802,
+      "n2": 1948,
+      "w": 226
+    },
+    {
+      "n1": 802,
+      "n2": 2005,
+      "w": 220
+    },
+    {
+      "n1": 802,
+      "n2": 2063,
+      "w": 44
+    },
+    {
+      "n1": 802,
+      "n2": 2120,
+      "w": 117
+    },
+    {
+      "n1": 802,
+      "n2": 2177,
+      "w": 52
+    },
+    {
+      "n1": 802,
+      "n2": 2234,
+      "w": 58
+    },
+    {
+      "n1": 802,
+      "n2": 2292,
+      "w": 71
+    },
+    {
+      "n1": 802,
+      "n2": 2349,
+      "w": 89
+    },
+    {
+      "n1": 802,
+      "n2": 2406,
+      "w": 48
+    },
+    {
+      "n1": 802,
+      "n2": 2463,
+      "w": 143
+    },
+    {
+      "n1": 802,
+      "n2": 2521,
+      "w": 78
+    },
+    {
+      "n1": 802,
+      "n2": 2578,
+      "w": 193
+    },
+    {
+      "n1": 802,
+      "n2": 2635,
+      "w": 80
+    },
+    {
+      "n1": 802,
+      "n2": 2692,
+      "w": 80
+    },
+    {
+      "n1": 859,
+      "n2": 782,
+      "w": 195
+    },
+    {
+      "n1": 859,
+      "n2": 1655,
+      "w": 84
+    },
+    {
+      "n1": 859,
+      "n2": 0,
+      "w": 141
+    },
+    {
+      "n1": 859,
+      "n2": 57,
+      "w": 178
+    },
+    {
+      "n1": 859,
+      "n2": 114,
+      "w": 148
+    },
+    {
+      "n1": 859,
+      "n2": 171,
+      "w": 120
+    },
+    {
+      "n1": 859,
+      "n2": 229,
+      "w": 95
+    },
+    {
+      "n1": 859,
+      "n2": 286,
+      "w": 113
+    },
+    {
+      "n1": 859,
+      "n2": 343,
+      "w": 109
+    },
+    {
+      "n1": 859,
+      "n2": 400,
+      "w": 154
+    },
+    {
+      "n1": 859,
+      "n2": 458,
+      "w": 229
+    },
+    {
+      "n1": 859,
+      "n2": 515,
+      "w": 160
+    },
+    {
+      "n1": 859,
+      "n2": 572,
+      "w": 136
+    },
+    {
+      "n1": 859,
+      "n2": 629,
+      "w": 77
+    },
+    {
+      "n1": 859,
+      "n2": 687,
+      "w": 116
+    },
+    {
+      "n1": 859,
+      "n2": 744,
+      "w": 92
+    },
+    {
+      "n1": 859,
+      "n2": 802,
+      "w": 183
+    },
+    {
+      "n1": 859,
+      "n2": 859,
+      "w": 0
+    },
+    {
+      "n1": 859,
+      "n2": 917,
+      "w": 66
+    },
+    {
+      "n1": 859,
+      "n2": 974,
+      "w": 114
+    },
+    {
+      "n1": 859,
+      "n2": 1031,
+      "w": 88
+    },
+    {
+      "n1": 859,
+      "n2": 1088,
+      "w": 170
+    },
+    {
+      "n1": 859,
+      "n2": 1146,
+      "w": 109
+    },
+    {
+      "n1": 859,
+      "n2": 1203,
+      "w": 241
+    },
+    {
+      "n1": 859,
+      "n2": 1260,
+      "w": 97
+    },
+    {
+      "n1": 859,
+      "n2": 1317,
+      "w": 108
+    },
+    {
+      "n1": 859,
+      "n2": 1375,
+      "w": 245
+    },
+    {
+      "n1": 859,
+      "n2": 1432,
+      "w": 70
+    },
+    {
+      "n1": 859,
+      "n2": 1489,
+      "w": 98
+    },
+    {
+      "n1": 859,
+      "n2": 1546,
+      "w": 173
+    },
+    {
+      "n1": 859,
+      "n2": 1604,
+      "w": 104
+    },
+    {
+      "n1": 859,
+      "n2": 1662,
+      "w": 200
+    },
+    {
+      "n1": 859,
+      "n2": 1719,
+      "w": 111
+    },
+    {
+      "n1": 859,
+      "n2": 1776,
+      "w": 196
+    },
+    {
+      "n1": 859,
+      "n2": 1834,
+      "w": 149
+    },
+    {
+      "n1": 859,
+      "n2": 1891,
+      "w": 76
+    },
+    {
+      "n1": 859,
+      "n2": 1948,
+      "w": 44
+    },
+    {
+      "n1": 859,
+      "n2": 2005,
+      "w": 38
+    },
+    {
+      "n1": 859,
+      "n2": 2063,
+      "w": 181
+    },
+    {
+      "n1": 859,
+      "n2": 2120,
+      "w": 84
+    },
+    {
+      "n1": 859,
+      "n2": 2177,
+      "w": 222
+    },
+    {
+      "n1": 859,
+      "n2": 2234,
+      "w": 155
+    },
+    {
+      "n1": 859,
+      "n2": 2292,
+      "w": 251
+    },
+    {
+      "n1": 859,
+      "n2": 2349,
+      "w": 112
+    },
+    {
+      "n1": 859,
+      "n2": 2406,
+      "w": 139
+    },
+    {
+      "n1": 859,
+      "n2": 2463,
+      "w": 83
+    },
+    {
+      "n1": 859,
+      "n2": 2521,
+      "w": 239
+    },
+    {
+      "n1": 859,
+      "n2": 2578,
+      "w": 38
+    },
+    {
+      "n1": 859,
+      "n2": 2635,
+      "w": 152
+    },
+    {
+      "n1": 859,
+      "n2": 2692,
+      "w": 241
+    },
+    {
+      "n1": 917,
+      "n2": 782,
+      "w": 135
+    },
+    {
+      "n1": 917,
+      "n2": 1655,
+      "w": 24
+    },
+    {
+      "n1": 917,
+      "n2": 0,
+      "w": 81
+    },
+    {
+      "n1": 917,
+      "n2": 57,
+      "w": 118
+    },
+    {
+      "n1": 917,
+      "n2": 114,
+      "w": 87
+    },
+    {
+      "n1": 917,
+      "n2": 171,
+      "w": 60
+    },
+    {
+      "n1": 917,
+      "n2": 229,
+      "w": 35
+    },
+    {
+      "n1": 917,
+      "n2": 286,
+      "w": 64
+    },
+    {
+      "n1": 917,
+      "n2": 343,
+      "w": 52
+    },
+    {
+      "n1": 917,
+      "n2": 400,
+      "w": 98
+    },
+    {
+      "n1": 917,
+      "n2": 458,
+      "w": 175
+    },
+    {
+      "n1": 917,
+      "n2": 515,
+      "w": 99
+    },
+    {
+      "n1": 917,
+      "n2": 572,
+      "w": 78
+    },
+    {
+      "n1": 917,
+      "n2": 629,
+      "w": 49
+    },
+    {
+      "n1": 917,
+      "n2": 687,
+      "w": 67
+    },
+    {
+      "n1": 917,
+      "n2": 744,
+      "w": 60
+    },
+    {
+      "n1": 917,
+      "n2": 802,
+      "w": 124
+    },
+    {
+      "n1": 917,
+      "n2": 859,
+      "w": 67
+    },
+    {
+      "n1": 917,
+      "n2": 917,
+      "w": 0
+    },
+    {
+      "n1": 917,
+      "n2": 974,
+      "w": 53
+    },
+    {
+      "n1": 917,
+      "n2": 1031,
+      "w": 25
+    },
+    {
+      "n1": 917,
+      "n2": 1088,
+      "w": 110
+    },
+    {
+      "n1": 917,
+      "n2": 1146,
+      "w": 51
+    },
+    {
+      "n1": 917,
+      "n2": 1203,
+      "w": 181
+    },
+    {
+      "n1": 917,
+      "n2": 1260,
+      "w": 32
+    },
+    {
+      "n1": 917,
+      "n2": 1317,
+      "w": 51
+    },
+    {
+      "n1": 917,
+      "n2": 1375,
+      "w": 185
+    },
+    {
+      "n1": 917,
+      "n2": 1432,
+      "w": 11
+    },
+    {
+      "n1": 917,
+      "n2": 1489,
+      "w": 38
+    },
+    {
+      "n1": 917,
+      "n2": 1546,
+      "w": 113
+    },
+    {
+      "n1": 917,
+      "n2": 1604,
+      "w": 53
+    },
+    {
+      "n1": 917,
+      "n2": 1662,
+      "w": 150
+    },
+    {
+      "n1": 917,
+      "n2": 1719,
+      "w": 50
+    },
+    {
+      "n1": 917,
+      "n2": 1776,
+      "w": 136
+    },
+    {
+      "n1": 917,
+      "n2": 1834,
+      "w": 89
+    },
+    {
+      "n1": 917,
+      "n2": 1891,
+      "w": 76
+    },
+    {
+      "n1": 917,
+      "n2": 1948,
+      "w": 109
+    },
+    {
+      "n1": 917,
+      "n2": 2005,
+      "w": 104
+    },
+    {
+      "n1": 917,
+      "n2": 2063,
+      "w": 122
+    },
+    {
+      "n1": 917,
+      "n2": 2120,
+      "w": 48
+    },
+    {
+      "n1": 917,
+      "n2": 2177,
+      "w": 162
+    },
+    {
+      "n1": 917,
+      "n2": 2234,
+      "w": 105
+    },
+    {
+      "n1": 917,
+      "n2": 2292,
+      "w": 191
+    },
+    {
+      "n1": 917,
+      "n2": 2349,
+      "w": 66
+    },
+    {
+      "n1": 917,
+      "n2": 2406,
+      "w": 79
+    },
+    {
+      "n1": 917,
+      "n2": 2463,
+      "w": 38
+    },
+    {
+      "n1": 917,
+      "n2": 2521,
+      "w": 185
+    },
+    {
+      "n1": 917,
+      "n2": 2578,
+      "w": 71
+    },
+    {
+      "n1": 917,
+      "n2": 2635,
+      "w": 92
+    },
+    {
+      "n1": 917,
+      "n2": 2692,
+      "w": 187
+    },
+    {
+      "n1": 974,
+      "n2": 782,
+      "w": 103
+    },
+    {
+      "n1": 974,
+      "n2": 1655,
+      "w": 37
+    },
+    {
+      "n1": 974,
+      "n2": 0,
+      "w": 50
+    },
+    {
+      "n1": 974,
+      "n2": 57,
+      "w": 73
+    },
+    {
+      "n1": 974,
+      "n2": 114,
+      "w": 34
+    },
+    {
+      "n1": 974,
+      "n2": 171,
+      "w": 19
+    },
+    {
+      "n1": 974,
+      "n2": 229,
+      "w": 34
+    },
+    {
+      "n1": 974,
+      "n2": 286,
+      "w": 49
+    },
+    {
+      "n1": 974,
+      "n2": 343,
+      "w": 23
+    },
+    {
+      "n1": 974,
+      "n2": 400,
+      "w": 87
+    },
+    {
+      "n1": 974,
+      "n2": 458,
+      "w": 155
+    },
+    {
+      "n1": 974,
+      "n2": 515,
+      "w": 75
+    },
+    {
+      "n1": 974,
+      "n2": 572,
+      "w": 67
+    },
+    {
+      "n1": 974,
+      "n2": 629,
+      "w": 74
+    },
+    {
+      "n1": 974,
+      "n2": 687,
+      "w": 60
+    },
+    {
+      "n1": 974,
+      "n2": 744,
+      "w": 91
+    },
+    {
+      "n1": 974,
+      "n2": 802,
+      "w": 91
+    },
+    {
+      "n1": 974,
+      "n2": 859,
+      "w": 114
+    },
+    {
+      "n1": 974,
+      "n2": 917,
+      "w": 53
+    },
+    {
+      "n1": 974,
+      "n2": 974,
+      "w": 0
+    },
+    {
+      "n1": 974,
+      "n2": 1031,
+      "w": 28
+    },
+    {
+      "n1": 974,
+      "n2": 1088,
+      "w": 64
+    },
+    {
+      "n1": 974,
+      "n2": 1146,
+      "w": 19
+    },
+    {
+      "n1": 974,
+      "n2": 1203,
+      "w": 149
+    },
+    {
+      "n1": 974,
+      "n2": 1260,
+      "w": 22
+    },
+    {
+      "n1": 974,
+      "n2": 1317,
+      "w": 30
+    },
+    {
+      "n1": 974,
+      "n2": 1375,
+      "w": 153
+    },
+    {
+      "n1": 974,
+      "n2": 1432,
+      "w": 45
+    },
+    {
+      "n1": 974,
+      "n2": 1489,
+      "w": 37
+    },
+    {
+      "n1": 974,
+      "n2": 1546,
+      "w": 81
+    },
+    {
+      "n1": 974,
+      "n2": 1604,
+      "w": 55
+    },
+    {
+      "n1": 974,
+      "n2": 1662,
+      "w": 135
+    },
+    {
+      "n1": 974,
+      "n2": 1719,
+      "w": 3
+    },
+    {
+      "n1": 974,
+      "n2": 1776,
+      "w": 111
+    },
+    {
+      "n1": 974,
+      "n2": 1834,
+      "w": 64
+    },
+    {
+      "n1": 974,
+      "n2": 1891,
+      "w": 103
+    },
+    {
+      "n1": 974,
+      "n2": 1948,
+      "w": 156
+    },
+    {
+      "n1": 974,
+      "n2": 2005,
+      "w": 151
+    },
+    {
+      "n1": 974,
+      "n2": 2063,
+      "w": 79
+    },
+    {
+      "n1": 974,
+      "n2": 2120,
+      "w": 79
+    },
+    {
+      "n1": 974,
+      "n2": 2177,
+      "w": 140
+    },
+    {
+      "n1": 974,
+      "n2": 2234,
+      "w": 98
+    },
+    {
+      "n1": 974,
+      "n2": 2292,
+      "w": 159
+    },
+    {
+      "n1": 974,
+      "n2": 2349,
+      "w": 73
+    },
+    {
+      "n1": 974,
+      "n2": 2406,
+      "w": 52
+    },
+    {
+      "n1": 974,
+      "n2": 2463,
+      "w": 55
+    },
+    {
+      "n1": 974,
+      "n2": 2521,
+      "w": 165
+    },
+    {
+      "n1": 974,
+      "n2": 2578,
+      "w": 120
+    },
+    {
+      "n1": 974,
+      "n2": 2635,
+      "w": 39
+    },
+    {
+      "n1": 974,
+      "n2": 2692,
+      "w": 167
+    },
+    {
+      "n1": 1031,
+      "n2": 782,
+      "w": 117
+    },
+    {
+      "n1": 1031,
+      "n2": 1655,
+      "w": 15
+    },
+    {
+      "n1": 1031,
+      "n2": 0,
+      "w": 63
+    },
+    {
+      "n1": 1031,
+      "n2": 57,
+      "w": 95
+    },
+    {
+      "n1": 1031,
+      "n2": 114,
+      "w": 63
+    },
+    {
+      "n1": 1031,
+      "n2": 171,
+      "w": 37
+    },
+    {
+      "n1": 1031,
+      "n2": 229,
+      "w": 21
+    },
+    {
+      "n1": 1031,
+      "n2": 286,
+      "w": 54
+    },
+    {
+      "n1": 1031,
+      "n2": 343,
+      "w": 33
+    },
+    {
+      "n1": 1031,
+      "n2": 400,
+      "w": 86
+    },
+    {
+      "n1": 1031,
+      "n2": 458,
+      "w": 163
+    },
+    {
+      "n1": 1031,
+      "n2": 515,
+      "w": 87
+    },
+    {
+      "n1": 1031,
+      "n2": 572,
+      "w": 66
+    },
+    {
+      "n1": 1031,
+      "n2": 629,
+      "w": 59
+    },
+    {
+      "n1": 1031,
+      "n2": 687,
+      "w": 59
+    },
+    {
+      "n1": 1031,
+      "n2": 744,
+      "w": 68
+    },
+    {
+      "n1": 1031,
+      "n2": 802,
+      "w": 105
+    },
+    {
+      "n1": 1031,
+      "n2": 859,
+      "w": 89
+    },
+    {
+      "n1": 1031,
+      "n2": 917,
+      "w": 25
+    },
+    {
+      "n1": 1031,
+      "n2": 974,
+      "w": 28
+    },
+    {
+      "n1": 1031,
+      "n2": 1031,
+      "w": 0
+    },
+    {
+      "n1": 1031,
+      "n2": 1088,
+      "w": 87
+    },
+    {
+      "n1": 1031,
+      "n2": 1146,
+      "w": 30
+    },
+    {
+      "n1": 1031,
+      "n2": 1203,
+      "w": 163
+    },
+    {
+      "n1": 1031,
+      "n2": 1260,
+      "w": 10
+    },
+    {
+      "n1": 1031,
+      "n2": 1317,
+      "w": 36
+    },
+    {
+      "n1": 1031,
+      "n2": 1375,
+      "w": 167
+    },
+    {
+      "n1": 1031,
+      "n2": 1432,
+      "w": 21
+    },
+    {
+      "n1": 1031,
+      "n2": 1489,
+      "w": 25
+    },
+    {
+      "n1": 1031,
+      "n2": 1546,
+      "w": 95
+    },
+    {
+      "n1": 1031,
+      "n2": 1604,
+      "w": 44
+    },
+    {
+      "n1": 1031,
+      "n2": 1662,
+      "w": 138
+    },
+    {
+      "n1": 1031,
+      "n2": 1719,
+      "w": 26
+    },
+    {
+      "n1": 1031,
+      "n2": 1776,
+      "w": 124
+    },
+    {
+      "n1": 1031,
+      "n2": 1834,
+      "w": 74
+    },
+    {
+      "n1": 1031,
+      "n2": 1891,
+      "w": 88
+    },
+    {
+      "n1": 1031,
+      "n2": 1948,
+      "w": 131
+    },
+    {
+      "n1": 1031,
+      "n2": 2005,
+      "w": 125
+    },
+    {
+      "n1": 1031,
+      "n2": 2063,
+      "w": 100
+    },
+    {
+      "n1": 1031,
+      "n2": 2120,
+      "w": 56
+    },
+    {
+      "n1": 1031,
+      "n2": 2177,
+      "w": 150
+    },
+    {
+      "n1": 1031,
+      "n2": 2234,
+      "w": 93
+    },
+    {
+      "n1": 1031,
+      "n2": 2292,
+      "w": 173
+    },
+    {
+      "n1": 1031,
+      "n2": 2349,
+      "w": 63
+    },
+    {
+      "n1": 1031,
+      "n2": 2406,
+      "w": 61
+    },
+    {
+      "n1": 1031,
+      "n2": 2463,
+      "w": 42
+    },
+    {
+      "n1": 1031,
+      "n2": 2521,
+      "w": 173
+    },
+    {
+      "n1": 1031,
+      "n2": 2578,
+      "w": 93
+    },
+    {
+      "n1": 1031,
+      "n2": 2635,
+      "w": 68
+    },
+    {
+      "n1": 1031,
+      "n2": 2692,
+      "w": 175
+    },
+    {
+      "n1": 1088,
+      "n2": 782,
+      "w": 62
+    },
+    {
+      "n1": 1088,
+      "n2": 1655,
+      "w": 94
+    },
+    {
+      "n1": 1088,
+      "n2": 0,
+      "w": 40
+    },
+    {
+      "n1": 1088,
+      "n2": 57,
+      "w": 10
+    },
+    {
+      "n1": 1088,
+      "n2": 114,
+      "w": 42
+    },
+    {
+      "n1": 1088,
+      "n2": 171,
+      "w": 53
+    },
+    {
+      "n1": 1088,
+      "n2": 229,
+      "w": 80
+    },
+    {
+      "n1": 1088,
+      "n2": 286,
+      "w": 99
+    },
+    {
+      "n1": 1088,
+      "n2": 343,
+      "w": 81
+    },
+    {
+      "n1": 1088,
+      "n2": 400,
+      "w": 82
+    },
+    {
+      "n1": 1088,
+      "n2": 458,
+      "w": 125
+    },
+    {
+      "n1": 1088,
+      "n2": 515,
+      "w": 58
+    },
+    {
+      "n1": 1088,
+      "n2": 572,
+      "w": 76
+    },
+    {
+      "n1": 1088,
+      "n2": 629,
+      "w": 137
+    },
+    {
+      "n1": 1088,
+      "n2": 687,
+      "w": 113
+    },
+    {
+      "n1": 1088,
+      "n2": 744,
+      "w": 130
+    },
+    {
+      "n1": 1088,
+      "n2": 802,
+      "w": 57
+    },
+    {
+      "n1": 1088,
+      "n2": 859,
+      "w": 171
+    },
+    {
+      "n1": 1088,
+      "n2": 917,
+      "w": 111
+    },
+    {
+      "n1": 1088,
+      "n2": 974,
+      "w": 64
+    },
+    {
+      "n1": 1088,
+      "n2": 1031,
+      "w": 88
+    },
+    {
+      "n1": 1088,
+      "n2": 1088,
+      "w": 0
+    },
+    {
+      "n1": 1088,
+      "n2": 1146,
+      "w": 79
+    },
+    {
+      "n1": 1088,
+      "n2": 1203,
+      "w": 97
+    },
+    {
+      "n1": 1088,
+      "n2": 1260,
+      "w": 86
+    },
+    {
+      "n1": 1088,
+      "n2": 1317,
+      "w": 86
+    },
+    {
+      "n1": 1088,
+      "n2": 1375,
+      "w": 103
+    },
+    {
+      "n1": 1088,
+      "n2": 1432,
+      "w": 102
+    },
+    {
+      "n1": 1088,
+      "n2": 1489,
+      "w": 82
+    },
+    {
+      "n1": 1088,
+      "n2": 1546,
+      "w": 40
+    },
+    {
+      "n1": 1088,
+      "n2": 1604,
+      "w": 92
+    },
+    {
+      "n1": 1088,
+      "n2": 1662,
+      "w": 111
+    },
+    {
+      "n1": 1088,
+      "n2": 1719,
+      "w": 65
+    },
+    {
+      "n1": 1088,
+      "n2": 1776,
+      "w": 81
+    },
+    {
+      "n1": 1088,
+      "n2": 1834,
+      "w": 53
+    },
+    {
+      "n1": 1088,
+      "n2": 1891,
+      "w": 164
+    },
+    {
+      "n1": 1088,
+      "n2": 1948,
+      "w": 213
+    },
+    {
+      "n1": 1088,
+      "n2": 2005,
+      "w": 207
+    },
+    {
+      "n1": 1088,
+      "n2": 2063,
+      "w": 24
+    },
+    {
+      "n1": 1088,
+      "n2": 2120,
+      "w": 120
+    },
+    {
+      "n1": 1088,
+      "n2": 2177,
+      "w": 109
+    },
+    {
+      "n1": 1088,
+      "n2": 2234,
+      "w": 95
+    },
+    {
+      "n1": 1088,
+      "n2": 2292,
+      "w": 118
+    },
+    {
+      "n1": 1088,
+      "n2": 2349,
+      "w": 101
+    },
+    {
+      "n1": 1088,
+      "n2": 2406,
+      "w": 46
+    },
+    {
+      "n1": 1088,
+      "n2": 2463,
+      "w": 118
+    },
+    {
+      "n1": 1088,
+      "n2": 2521,
+      "w": 134
+    },
+    {
+      "n1": 1088,
+      "n2": 2578,
+      "w": 180
+    },
+    {
+      "n1": 1088,
+      "n2": 2635,
+      "w": 30
+    },
+    {
+      "n1": 1088,
+      "n2": 2692,
+      "w": 136
+    },
+    {
+      "n1": 1146,
+      "n2": 782,
+      "w": 120
+    },
+    {
+      "n1": 1146,
+      "n2": 1655,
+      "w": 45
+    },
+    {
+      "n1": 1146,
+      "n2": 0,
+      "w": 67
+    },
+    {
+      "n1": 1146,
+      "n2": 57,
+      "w": 88
+    },
+    {
+      "n1": 1146,
+      "n2": 114,
+      "w": 41
+    },
+    {
+      "n1": 1146,
+      "n2": 171,
+      "w": 36
+    },
+    {
+      "n1": 1146,
+      "n2": 229,
+      "w": 45
+    },
+    {
+      "n1": 1146,
+      "n2": 286,
+      "w": 32
+    },
+    {
+      "n1": 1146,
+      "n2": 343,
+      "w": 4
+    },
+    {
+      "n1": 1146,
+      "n2": 400,
+      "w": 106
+    },
+    {
+      "n1": 1146,
+      "n2": 458,
+      "w": 172
+    },
+    {
+      "n1": 1146,
+      "n2": 515,
+      "w": 92
+    },
+    {
+      "n1": 1146,
+      "n2": 572,
+      "w": 85
+    },
+    {
+      "n1": 1146,
+      "n2": 629,
+      "w": 61
+    },
+    {
+      "n1": 1146,
+      "n2": 687,
+      "w": 43
+    },
+    {
+      "n1": 1146,
+      "n2": 744,
+      "w": 99
+    },
+    {
+      "n1": 1146,
+      "n2": 802,
+      "w": 108
+    },
+    {
+      "n1": 1146,
+      "n2": 859,
+      "w": 110
+    },
+    {
+      "n1": 1146,
+      "n2": 917,
+      "w": 51
+    },
+    {
+      "n1": 1146,
+      "n2": 974,
+      "w": 19
+    },
+    {
+      "n1": 1146,
+      "n2": 1031,
+      "w": 30
+    },
+    {
+      "n1": 1146,
+      "n2": 1088,
+      "w": 79
+    },
+    {
+      "n1": 1146,
+      "n2": 1146,
+      "w": 0
+    },
+    {
+      "n1": 1146,
+      "n2": 1203,
+      "w": 166
+    },
+    {
+      "n1": 1146,
+      "n2": 1260,
+      "w": 22
+    },
+    {
+      "n1": 1146,
+      "n2": 1317,
+      "w": 12
+    },
+    {
+      "n1": 1146,
+      "n2": 1375,
+      "w": 170
+    },
+    {
+      "n1": 1146,
+      "n2": 1432,
+      "w": 50
+    },
+    {
+      "n1": 1146,
+      "n2": 1489,
+      "w": 51
+    },
+    {
+      "n1": 1146,
+      "n2": 1546,
+      "w": 98
+    },
+    {
+      "n1": 1146,
+      "n2": 1604,
+      "w": 70
+    },
+    {
+      "n1": 1146,
+      "n2": 1662,
+      "w": 152
+    },
+    {
+      "n1": 1146,
+      "n2": 1719,
+      "w": 20
+    },
+    {
+      "n1": 1146,
+      "n2": 1776,
+      "w": 128
+    },
+    {
+      "n1": 1146,
+      "n2": 1834,
+      "w": 81
+    },
+    {
+      "n1": 1146,
+      "n2": 1891,
+      "w": 88
+    },
+    {
+      "n1": 1146,
+      "n2": 1948,
+      "w": 150
+    },
+    {
+      "n1": 1146,
+      "n2": 2005,
+      "w": 145
+    },
+    {
+      "n1": 1146,
+      "n2": 2063,
+      "w": 94
+    },
+    {
+      "n1": 1146,
+      "n2": 2120,
+      "w": 87
+    },
+    {
+      "n1": 1146,
+      "n2": 2177,
+      "w": 157
+    },
+    {
+      "n1": 1146,
+      "n2": 2234,
+      "w": 117
+    },
+    {
+      "n1": 1146,
+      "n2": 2292,
+      "w": 176
+    },
+    {
+      "n1": 1146,
+      "n2": 2349,
+      "w": 88
+    },
+    {
+      "n1": 1146,
+      "n2": 2406,
+      "w": 70
+    },
+    {
+      "n1": 1146,
+      "n2": 2463,
+      "w": 41
+    },
+    {
+      "n1": 1146,
+      "n2": 2521,
+      "w": 182
+    },
+    {
+      "n1": 1146,
+      "n2": 2578,
+      "w": 111
+    },
+    {
+      "n1": 1146,
+      "n2": 2635,
+      "w": 53
+    },
+    {
+      "n1": 1146,
+      "n2": 2692,
+      "w": 184
+    },
+    {
+      "n1": 1203,
+      "n2": 782,
+      "w": 47
+    },
+    {
+      "n1": 1203,
+      "n2": 1655,
+      "w": 162
+    },
+    {
+      "n1": 1203,
+      "n2": 0,
+      "w": 101
+    },
+    {
+      "n1": 1203,
+      "n2": 57,
+      "w": 89
+    },
+    {
+      "n1": 1203,
+      "n2": 114,
+      "w": 138
+    },
+    {
+      "n1": 1203,
+      "n2": 171,
+      "w": 136
+    },
+    {
+      "n1": 1203,
+      "n2": 229,
+      "w": 148
+    },
+    {
+      "n1": 1203,
+      "n2": 286,
+      "w": 193
+    },
+    {
+      "n1": 1203,
+      "n2": 343,
+      "w": 170
+    },
+    {
+      "n1": 1203,
+      "n2": 400,
+      "w": 106
+    },
+    {
+      "n1": 1203,
+      "n2": 458,
+      "w": 71
+    },
+    {
+      "n1": 1203,
+      "n2": 515,
+      "w": 88
+    },
+    {
+      "n1": 1203,
+      "n2": 572,
+      "w": 118
+    },
+    {
+      "n1": 1203,
+      "n2": 629,
+      "w": 219
+    },
+    {
+      "n1": 1203,
+      "n2": 687,
+      "w": 207
+    },
+    {
+      "n1": 1203,
+      "n2": 744,
+      "w": 184
+    },
+    {
+      "n1": 1203,
+      "n2": 802,
+      "w": 59
+    },
+    {
+      "n1": 1203,
+      "n2": 859,
+      "w": 242
+    },
+    {
+      "n1": 1203,
+      "n2": 917,
+      "w": 182
+    },
+    {
+      "n1": 1203,
+      "n2": 974,
+      "w": 150
+    },
+    {
+      "n1": 1203,
+      "n2": 1031,
+      "w": 164
+    },
+    {
+      "n1": 1203,
+      "n2": 1088,
+      "w": 97
+    },
+    {
+      "n1": 1203,
+      "n2": 1146,
+      "w": 167
+    },
+    {
+      "n1": 1203,
+      "n2": 1203,
+      "w": 0
+    },
+    {
+      "n1": 1203,
+      "n2": 1260,
+      "w": 167
+    },
+    {
+      "n1": 1203,
+      "n2": 1317,
+      "w": 178
+    },
+    {
+      "n1": 1203,
+      "n2": 1375,
+      "w": 14
+    },
+    {
+      "n1": 1203,
+      "n2": 1432,
+      "w": 173
+    },
+    {
+      "n1": 1203,
+      "n2": 1489,
+      "w": 148
+    },
+    {
+      "n1": 1203,
+      "n2": 1546,
+      "w": 76
+    },
+    {
+      "n1": 1203,
+      "n2": 1604,
+      "w": 148
+    },
+    {
+      "n1": 1203,
+      "n2": 1662,
+      "w": 82
+    },
+    {
+      "n1": 1203,
+      "n2": 1719,
+      "w": 150
+    },
+    {
+      "n1": 1203,
+      "n2": 1776,
+      "w": 60
+    },
+    {
+      "n1": 1203,
+      "n2": 1834,
+      "w": 97
+    },
+    {
+      "n1": 1203,
+      "n2": 1891,
+      "w": 248
+    },
+    {
+      "n1": 1203,
+      "n2": 1948,
+      "w": 284
+    },
+    {
+      "n1": 1203,
+      "n2": 2005,
+      "w": 278
+    },
+    {
+      "n1": 1203,
+      "n2": 2063,
+      "w": 84
+    },
+    {
+      "n1": 1203,
+      "n2": 2120,
+      "w": 176
+    },
+    {
+      "n1": 1203,
+      "n2": 2177,
+      "w": 55
+    },
+    {
+      "n1": 1203,
+      "n2": 2234,
+      "w": 111
+    },
+    {
+      "n1": 1203,
+      "n2": 2292,
+      "w": 35
+    },
+    {
+      "n1": 1203,
+      "n2": 2349,
+      "w": 148
+    },
+    {
+      "n1": 1203,
+      "n2": 2406,
+      "w": 106
+    },
+    {
+      "n1": 1203,
+      "n2": 2463,
+      "w": 202
+    },
+    {
+      "n1": 1203,
+      "n2": 2521,
+      "w": 70
+    },
+    {
+      "n1": 1203,
+      "n2": 2578,
+      "w": 251
+    },
+    {
+      "n1": 1203,
+      "n2": 2635,
+      "w": 126
+    },
+    {
+      "n1": 1203,
+      "n2": 2692,
+      "w": 77
+    },
+    {
+      "n1": 1260,
+      "n2": 782,
+      "w": 120
+    },
+    {
+      "n1": 1260,
+      "n2": 1655,
+      "w": 24
+    },
+    {
+      "n1": 1260,
+      "n2": 0,
+      "w": 65
+    },
+    {
+      "n1": 1260,
+      "n2": 57,
+      "w": 94
+    },
+    {
+      "n1": 1260,
+      "n2": 114,
+      "w": 57
+    },
+    {
+      "n1": 1260,
+      "n2": 171,
+      "w": 36
+    },
+    {
+      "n1": 1260,
+      "n2": 229,
+      "w": 29
+    },
+    {
+      "n1": 1260,
+      "n2": 286,
+      "w": 45
+    },
+    {
+      "n1": 1260,
+      "n2": 343,
+      "w": 24
+    },
+    {
+      "n1": 1260,
+      "n2": 400,
+      "w": 94
+    },
+    {
+      "n1": 1260,
+      "n2": 458,
+      "w": 170
+    },
+    {
+      "n1": 1260,
+      "n2": 515,
+      "w": 90
+    },
+    {
+      "n1": 1260,
+      "n2": 572,
+      "w": 73
+    },
+    {
+      "n1": 1260,
+      "n2": 629,
+      "w": 55
+    },
+    {
+      "n1": 1260,
+      "n2": 687,
+      "w": 53
+    },
+    {
+      "n1": 1260,
+      "n2": 744,
+      "w": 78
+    },
+    {
+      "n1": 1260,
+      "n2": 802,
+      "w": 108
+    },
+    {
+      "n1": 1260,
+      "n2": 859,
+      "w": 97
+    },
+    {
+      "n1": 1260,
+      "n2": 917,
+      "w": 31
+    },
+    {
+      "n1": 1260,
+      "n2": 974,
+      "w": 23
+    },
+    {
+      "n1": 1260,
+      "n2": 1031,
+      "w": 10
+    },
+    {
+      "n1": 1260,
+      "n2": 1088,
+      "w": 86
+    },
+    {
+      "n1": 1260,
+      "n2": 1146,
+      "w": 22
+    },
+    {
+      "n1": 1260,
+      "n2": 1203,
+      "w": 166
+    },
+    {
+      "n1": 1260,
+      "n2": 1260,
+      "w": 0
+    },
+    {
+      "n1": 1260,
+      "n2": 1317,
+      "w": 26
+    },
+    {
+      "n1": 1260,
+      "n2": 1375,
+      "w": 170
+    },
+    {
+      "n1": 1260,
+      "n2": 1432,
+      "w": 31
+    },
+    {
+      "n1": 1260,
+      "n2": 1489,
+      "w": 34
+    },
+    {
+      "n1": 1260,
+      "n2": 1546,
+      "w": 98
+    },
+    {
+      "n1": 1260,
+      "n2": 1604,
+      "w": 53
+    },
+    {
+      "n1": 1260,
+      "n2": 1662,
+      "w": 145
+    },
+    {
+      "n1": 1260,
+      "n2": 1719,
+      "w": 22
+    },
+    {
+      "n1": 1260,
+      "n2": 1776,
+      "w": 127
+    },
+    {
+      "n1": 1260,
+      "n2": 1834,
+      "w": 77
+    },
+    {
+      "n1": 1260,
+      "n2": 1891,
+      "w": 84
+    },
+    {
+      "n1": 1260,
+      "n2": 1948,
+      "w": 139
+    },
+    {
+      "n1": 1260,
+      "n2": 2005,
+      "w": 134
+    },
+    {
+      "n1": 1260,
+      "n2": 2063,
+      "w": 100
+    },
+    {
+      "n1": 1260,
+      "n2": 2120,
+      "w": 66
+    },
+    {
+      "n1": 1260,
+      "n2": 2177,
+      "w": 156
+    },
+    {
+      "n1": 1260,
+      "n2": 2234,
+      "w": 101
+    },
+    {
+      "n1": 1260,
+      "n2": 2292,
+      "w": 176
+    },
+    {
+      "n1": 1260,
+      "n2": 2349,
+      "w": 71
+    },
+    {
+      "n1": 1260,
+      "n2": 2406,
+      "w": 64
+    },
+    {
+      "n1": 1260,
+      "n2": 2463,
+      "w": 38
+    },
+    {
+      "n1": 1260,
+      "n2": 2521,
+      "w": 180
+    },
+    {
+      "n1": 1260,
+      "n2": 2578,
+      "w": 100
+    },
+    {
+      "n1": 1260,
+      "n2": 2635,
+      "w": 62
+    },
+    {
+      "n1": 1260,
+      "n2": 2692,
+      "w": 182
+    },
+    {
+      "n1": 1317,
+      "n2": 782,
+      "w": 131
+    },
+    {
+      "n1": 1317,
+      "n2": 1655,
+      "w": 51
+    },
+    {
+      "n1": 1317,
+      "n2": 0,
+      "w": 77
+    },
+    {
+      "n1": 1317,
+      "n2": 57,
+      "w": 96
+    },
+    {
+      "n1": 1317,
+      "n2": 114,
+      "w": 47
+    },
+    {
+      "n1": 1317,
+      "n2": 171,
+      "w": 47
+    },
+    {
+      "n1": 1317,
+      "n2": 229,
+      "w": 53
+    },
+    {
+      "n1": 1317,
+      "n2": 286,
+      "w": 20
+    },
+    {
+      "n1": 1317,
+      "n2": 343,
+      "w": 9
+    },
+    {
+      "n1": 1317,
+      "n2": 400,
+      "w": 115
+    },
+    {
+      "n1": 1317,
+      "n2": 458,
+      "w": 183
+    },
+    {
+      "n1": 1317,
+      "n2": 515,
+      "w": 103
+    },
+    {
+      "n1": 1317,
+      "n2": 572,
+      "w": 95
+    },
+    {
+      "n1": 1317,
+      "n2": 629,
+      "w": 50
+    },
+    {
+      "n1": 1317,
+      "n2": 687,
+      "w": 31
+    },
+    {
+      "n1": 1317,
+      "n2": 744,
+      "w": 104
+    },
+    {
+      "n1": 1317,
+      "n2": 802,
+      "w": 119
+    },
+    {
+      "n1": 1317,
+      "n2": 859,
+      "w": 108
+    },
+    {
+      "n1": 1317,
+      "n2": 917,
+      "w": 51
+    },
+    {
+      "n1": 1317,
+      "n2": 974,
+      "w": 29
+    },
+    {
+      "n1": 1317,
+      "n2": 1031,
+      "w": 36
+    },
+    {
+      "n1": 1317,
+      "n2": 1088,
+      "w": 86
+    },
+    {
+      "n1": 1317,
+      "n2": 1146,
+      "w": 12
+    },
+    {
+      "n1": 1317,
+      "n2": 1203,
+      "w": 177
+    },
+    {
+      "n1": 1317,
+      "n2": 1260,
+      "w": 26
+    },
+    {
+      "n1": 1317,
+      "n2": 1317,
+      "w": 0
+    },
+    {
+      "n1": 1317,
+      "n2": 1375,
+      "w": 181
+    },
+    {
+      "n1": 1317,
+      "n2": 1432,
+      "w": 53
+    },
+    {
+      "n1": 1317,
+      "n2": 1489,
+      "w": 58
+    },
+    {
+      "n1": 1317,
+      "n2": 1546,
+      "w": 109
+    },
+    {
+      "n1": 1317,
+      "n2": 1604,
+      "w": 78
+    },
+    {
+      "n1": 1317,
+      "n2": 1662,
+      "w": 162
+    },
+    {
+      "n1": 1317,
+      "n2": 1719,
+      "w": 30
+    },
+    {
+      "n1": 1317,
+      "n2": 1776,
+      "w": 139
+    },
+    {
+      "n1": 1317,
+      "n2": 1834,
+      "w": 92
+    },
+    {
+      "n1": 1317,
+      "n2": 1891,
+      "w": 77
+    },
+    {
+      "n1": 1317,
+      "n2": 1948,
+      "w": 149
+    },
+    {
+      "n1": 1317,
+      "n2": 2005,
+      "w": 144
+    },
+    {
+      "n1": 1317,
+      "n2": 2063,
+      "w": 105
+    },
+    {
+      "n1": 1317,
+      "n2": 2120,
+      "w": 92
+    },
+    {
+      "n1": 1317,
+      "n2": 2177,
+      "w": 168
+    },
+    {
+      "n1": 1317,
+      "n2": 2234,
+      "w": 127
+    },
+    {
+      "n1": 1317,
+      "n2": 2292,
+      "w": 187
+    },
+    {
+      "n1": 1317,
+      "n2": 2349,
+      "w": 96
+    },
+    {
+      "n1": 1317,
+      "n2": 2406,
+      "w": 80
+    },
+    {
+      "n1": 1317,
+      "n2": 2463,
+      "w": 34
+    },
+    {
+      "n1": 1317,
+      "n2": 2521,
+      "w": 193
+    },
+    {
+      "n1": 1317,
+      "n2": 2578,
+      "w": 103
+    },
+    {
+      "n1": 1317,
+      "n2": 2635,
+      "w": 60
+    },
+    {
+      "n1": 1317,
+      "n2": 2692,
+      "w": 195
+    },
+    {
+      "n1": 1375,
+      "n2": 782,
+      "w": 51
+    },
+    {
+      "n1": 1375,
+      "n2": 1655,
+      "w": 165
+    },
+    {
+      "n1": 1375,
+      "n2": 0,
+      "w": 105
+    },
+    {
+      "n1": 1375,
+      "n2": 57,
+      "w": 95
+    },
+    {
+      "n1": 1375,
+      "n2": 114,
+      "w": 143
+    },
+    {
+      "n1": 1375,
+      "n2": 171,
+      "w": 140
+    },
+    {
+      "n1": 1375,
+      "n2": 229,
+      "w": 151
+    },
+    {
+      "n1": 1375,
+      "n2": 286,
+      "w": 197
+    },
+    {
+      "n1": 1375,
+      "n2": 343,
+      "w": 174
+    },
+    {
+      "n1": 1375,
+      "n2": 400,
+      "w": 106
+    },
+    {
+      "n1": 1375,
+      "n2": 458,
+      "w": 64
+    },
+    {
+      "n1": 1375,
+      "n2": 515,
+      "w": 92
+    },
+    {
+      "n1": 1375,
+      "n2": 572,
+      "w": 120
+    },
+    {
+      "n1": 1375,
+      "n2": 629,
+      "w": 223
+    },
+    {
+      "n1": 1375,
+      "n2": 687,
+      "w": 211
+    },
+    {
+      "n1": 1375,
+      "n2": 744,
+      "w": 184
+    },
+    {
+      "n1": 1375,
+      "n2": 802,
+      "w": 64
+    },
+    {
+      "n1": 1375,
+      "n2": 859,
+      "w": 246
+    },
+    {
+      "n1": 1375,
+      "n2": 917,
+      "w": 186
+    },
+    {
+      "n1": 1375,
+      "n2": 974,
+      "w": 154
+    },
+    {
+      "n1": 1375,
+      "n2": 1031,
+      "w": 168
+    },
+    {
+      "n1": 1375,
+      "n2": 1088,
+      "w": 103
+    },
+    {
+      "n1": 1375,
+      "n2": 1146,
+      "w": 171
+    },
+    {
+      "n1": 1375,
+      "n2": 1203,
+      "w": 14
+    },
+    {
+      "n1": 1375,
+      "n2": 1260,
+      "w": 171
+    },
+    {
+      "n1": 1375,
+      "n2": 1317,
+      "w": 181
+    },
+    {
+      "n1": 1375,
+      "n2": 1375,
+      "w": 0
+    },
+    {
+      "n1": 1375,
+      "n2": 1432,
+      "w": 177
+    },
+    {
+      "n1": 1375,
+      "n2": 1489,
+      "w": 152
+    },
+    {
+      "n1": 1375,
+      "n2": 1546,
+      "w": 81
+    },
+    {
+      "n1": 1375,
+      "n2": 1604,
+      "w": 151
+    },
+    {
+      "n1": 1375,
+      "n2": 1662,
+      "w": 77
+    },
+    {
+      "n1": 1375,
+      "n2": 1719,
+      "w": 154
+    },
+    {
+      "n1": 1375,
+      "n2": 1776,
+      "w": 60
+    },
+    {
+      "n1": 1375,
+      "n2": 1834,
+      "w": 102
+    },
+    {
+      "n1": 1375,
+      "n2": 1891,
+      "w": 252
+    },
+    {
+      "n1": 1375,
+      "n2": 1948,
+      "w": 288
+    },
+    {
+      "n1": 1375,
+      "n2": 2005,
+      "w": 282
+    },
+    {
+      "n1": 1375,
+      "n2": 2063,
+      "w": 90
+    },
+    {
+      "n1": 1375,
+      "n2": 2120,
+      "w": 177
+    },
+    {
+      "n1": 1375,
+      "n2": 2177,
+      "w": 50
+    },
+    {
+      "n1": 1375,
+      "n2": 2234,
+      "w": 108
+    },
+    {
+      "n1": 1375,
+      "n2": 2292,
+      "w": 26
+    },
+    {
+      "n1": 1375,
+      "n2": 2349,
+      "w": 148
+    },
+    {
+      "n1": 1375,
+      "n2": 2406,
+      "w": 110
+    },
+    {
+      "n1": 1375,
+      "n2": 2463,
+      "w": 206
+    },
+    {
+      "n1": 1375,
+      "n2": 2521,
+      "w": 63
+    },
+    {
+      "n1": 1375,
+      "n2": 2578,
+      "w": 255
+    },
+    {
+      "n1": 1375,
+      "n2": 2635,
+      "w": 132
+    },
+    {
+      "n1": 1375,
+      "n2": 2692,
+      "w": 70
+    },
+    {
+      "n1": 1432,
+      "n2": 782,
+      "w": 126
+    },
+    {
+      "n1": 1432,
+      "n2": 1655,
+      "w": 15
+    },
+    {
+      "n1": 1432,
+      "n2": 0,
+      "w": 72
+    },
+    {
+      "n1": 1432,
+      "n2": 57,
+      "w": 109
+    },
+    {
+      "n1": 1432,
+      "n2": 114,
+      "w": 79
+    },
+    {
+      "n1": 1432,
+      "n2": 171,
+      "w": 51
+    },
+    {
+      "n1": 1432,
+      "n2": 229,
+      "w": 26
+    },
+    {
+      "n1": 1432,
+      "n2": 286,
+      "w": 68
+    },
+    {
+      "n1": 1432,
+      "n2": 343,
+      "w": 52
+    },
+    {
+      "n1": 1432,
+      "n2": 400,
+      "w": 89
+    },
+    {
+      "n1": 1432,
+      "n2": 458,
+      "w": 166
+    },
+    {
+      "n1": 1432,
+      "n2": 515,
+      "w": 90
+    },
+    {
+      "n1": 1432,
+      "n2": 572,
+      "w": 69
+    },
+    {
+      "n1": 1432,
+      "n2": 629,
+      "w": 60
+    },
+    {
+      "n1": 1432,
+      "n2": 687,
+      "w": 72
+    },
+    {
+      "n1": 1432,
+      "n2": 744,
+      "w": 55
+    },
+    {
+      "n1": 1432,
+      "n2": 802,
+      "w": 115
+    },
+    {
+      "n1": 1432,
+      "n2": 859,
+      "w": 70
+    },
+    {
+      "n1": 1432,
+      "n2": 917,
+      "w": 11
+    },
+    {
+      "n1": 1432,
+      "n2": 974,
+      "w": 45
+    },
+    {
+      "n1": 1432,
+      "n2": 1031,
+      "w": 21
+    },
+    {
+      "n1": 1432,
+      "n2": 1088,
+      "w": 101
+    },
+    {
+      "n1": 1432,
+      "n2": 1146,
+      "w": 50
+    },
+    {
+      "n1": 1432,
+      "n2": 1203,
+      "w": 173
+    },
+    {
+      "n1": 1432,
+      "n2": 1260,
+      "w": 31
+    },
+    {
+      "n1": 1432,
+      "n2": 1317,
+      "w": 53
+    },
+    {
+      "n1": 1432,
+      "n2": 1375,
+      "w": 177
+    },
+    {
+      "n1": 1432,
+      "n2": 1432,
+      "w": 0
+    },
+    {
+      "n1": 1432,
+      "n2": 1489,
+      "w": 29
+    },
+    {
+      "n1": 1432,
+      "n2": 1546,
+      "w": 104
+    },
+    {
+      "n1": 1432,
+      "n2": 1604,
+      "w": 41
+    },
+    {
+      "n1": 1432,
+      "n2": 1662,
+      "w": 139
+    },
+    {
+      "n1": 1432,
+      "n2": 1719,
+      "w": 42
+    },
+    {
+      "n1": 1432,
+      "n2": 1776,
+      "w": 127
+    },
+    {
+      "n1": 1432,
+      "n2": 1834,
+      "w": 79
+    },
+    {
+      "n1": 1432,
+      "n2": 1891,
+      "w": 87
+    },
+    {
+      "n1": 1432,
+      "n2": 1948,
+      "w": 112
+    },
+    {
+      "n1": 1432,
+      "n2": 2005,
+      "w": 107
+    },
+    {
+      "n1": 1432,
+      "n2": 2063,
+      "w": 113
+    },
+    {
+      "n1": 1432,
+      "n2": 2120,
+      "w": 43
+    },
+    {
+      "n1": 1432,
+      "n2": 2177,
+      "w": 153
+    },
+    {
+      "n1": 1432,
+      "n2": 2234,
+      "w": 94
+    },
+    {
+      "n1": 1432,
+      "n2": 2292,
+      "w": 183
+    },
+    {
+      "n1": 1432,
+      "n2": 2349,
+      "w": 56
+    },
+    {
+      "n1": 1432,
+      "n2": 2406,
+      "w": 70
+    },
+    {
+      "n1": 1432,
+      "n2": 2463,
+      "w": 45
+    },
+    {
+      "n1": 1432,
+      "n2": 2521,
+      "w": 176
+    },
+    {
+      "n1": 1432,
+      "n2": 2578,
+      "w": 80
+    },
+    {
+      "n1": 1432,
+      "n2": 2635,
+      "w": 84
+    },
+    {
+      "n1": 1432,
+      "n2": 2692,
+      "w": 178
+    },
+    {
+      "n1": 1489,
+      "n2": 782,
+      "w": 101
+    },
+    {
+      "n1": 1489,
+      "n2": 1655,
+      "w": 16
+    },
+    {
+      "n1": 1489,
+      "n2": 0,
+      "w": 49
+    },
+    {
+      "n1": 1489,
+      "n2": 57,
+      "w": 90
+    },
+    {
+      "n1": 1489,
+      "n2": 114,
+      "w": 67
+    },
+    {
+      "n1": 1489,
+      "n2": 171,
+      "w": 35
+    },
+    {
+      "n1": 1489,
+      "n2": 229,
+      "w": 5
+    },
+    {
+      "n1": 1489,
+      "n2": 286,
+      "w": 78
+    },
+    {
+      "n1": 1489,
+      "n2": 343,
+      "w": 55
+    },
+    {
+      "n1": 1489,
+      "n2": 400,
+      "w": 60
+    },
+    {
+      "n1": 1489,
+      "n2": 458,
+      "w": 137
+    },
+    {
+      "n1": 1489,
+      "n2": 515,
+      "w": 61
+    },
+    {
+      "n1": 1489,
+      "n2": 572,
+      "w": 40
+    },
+    {
+      "n1": 1489,
+      "n2": 629,
+      "w": 84
+    },
+    {
+      "n1": 1489,
+      "n2": 687,
+      "w": 84
+    },
+    {
+      "n1": 1489,
+      "n2": 744,
+      "w": 56
+    },
+    {
+      "n1": 1489,
+      "n2": 802,
+      "w": 88
+    },
+    {
+      "n1": 1489,
+      "n2": 859,
+      "w": 97
+    },
+    {
+      "n1": 1489,
+      "n2": 917,
+      "w": 37
+    },
+    {
+      "n1": 1489,
+      "n2": 974,
+      "w": 37
+    },
+    {
+      "n1": 1489,
+      "n2": 1031,
+      "w": 25
+    },
+    {
+      "n1": 1489,
+      "n2": 1088,
+      "w": 82
+    },
+    {
+      "n1": 1489,
+      "n2": 1146,
+      "w": 51
+    },
+    {
+      "n1": 1489,
+      "n2": 1203,
+      "w": 147
+    },
+    {
+      "n1": 1489,
+      "n2": 1260,
+      "w": 34
+    },
+    {
+      "n1": 1489,
+      "n2": 1317,
+      "w": 58
+    },
+    {
+      "n1": 1489,
+      "n2": 1375,
+      "w": 152
+    },
+    {
+      "n1": 1489,
+      "n2": 1432,
+      "w": 28
+    },
+    {
+      "n1": 1489,
+      "n2": 1489,
+      "w": 0
+    },
+    {
+      "n1": 1489,
+      "n2": 1546,
+      "w": 81
+    },
+    {
+      "n1": 1489,
+      "n2": 1604,
+      "w": 21
+    },
+    {
+      "n1": 1489,
+      "n2": 1662,
+      "w": 112
+    },
+    {
+      "n1": 1489,
+      "n2": 1719,
+      "w": 35
+    },
+    {
+      "n1": 1489,
+      "n2": 1776,
+      "w": 98
+    },
+    {
+      "n1": 1489,
+      "n2": 1834,
+      "w": 50
+    },
+    {
+      "n1": 1489,
+      "n2": 1891,
+      "w": 113
+    },
+    {
+      "n1": 1489,
+      "n2": 1948,
+      "w": 140
+    },
+    {
+      "n1": 1489,
+      "n2": 2005,
+      "w": 134
+    },
+    {
+      "n1": 1489,
+      "n2": 2063,
+      "w": 90
+    },
+    {
+      "n1": 1489,
+      "n2": 2120,
+      "w": 44
+    },
+    {
+      "n1": 1489,
+      "n2": 2177,
+      "w": 124
+    },
+    {
+      "n1": 1489,
+      "n2": 2234,
+      "w": 69
+    },
+    {
+      "n1": 1489,
+      "n2": 2292,
+      "w": 158
+    },
+    {
+      "n1": 1489,
+      "n2": 2349,
+      "w": 39
+    },
+    {
+      "n1": 1489,
+      "n2": 2406,
+      "w": 45
+    },
+    {
+      "n1": 1489,
+      "n2": 2463,
+      "w": 67
+    },
+    {
+      "n1": 1489,
+      "n2": 2521,
+      "w": 147
+    },
+    {
+      "n1": 1489,
+      "n2": 2578,
+      "w": 107
+    },
+    {
+      "n1": 1489,
+      "n2": 2635,
+      "w": 71
+    },
+    {
+      "n1": 1489,
+      "n2": 2692,
+      "w": 149
+    },
+    {
+      "n1": 1546,
+      "n2": 782,
+      "w": 29
+    },
+    {
+      "n1": 1546,
+      "n2": 1655,
+      "w": 92
+    },
+    {
+      "n1": 1546,
+      "n2": 0,
+      "w": 31
+    },
+    {
+      "n1": 1546,
+      "n2": 57,
+      "w": 42
+    },
+    {
+      "n1": 1546,
+      "n2": 114,
+      "w": 75
+    },
+    {
+      "n1": 1546,
+      "n2": 171,
+      "w": 66
+    },
+    {
+      "n1": 1546,
+      "n2": 229,
+      "w": 78
+    },
+    {
+      "n1": 1546,
+      "n2": 286,
+      "w": 123
+    },
+    {
+      "n1": 1546,
+      "n2": 343,
+      "w": 100
+    },
+    {
+      "n1": 1546,
+      "n2": 400,
+      "w": 53
+    },
+    {
+      "n1": 1546,
+      "n2": 458,
+      "w": 88
+    },
+    {
+      "n1": 1546,
+      "n2": 515,
+      "w": 24
+    },
+    {
+      "n1": 1546,
+      "n2": 572,
+      "w": 56
+    },
+    {
+      "n1": 1546,
+      "n2": 629,
+      "w": 149
+    },
+    {
+      "n1": 1546,
+      "n2": 687,
+      "w": 137
+    },
+    {
+      "n1": 1546,
+      "n2": 744,
+      "w": 120
+    },
+    {
+      "n1": 1546,
+      "n2": 802,
+      "w": 21
+    },
+    {
+      "n1": 1546,
+      "n2": 859,
+      "w": 172
+    },
+    {
+      "n1": 1546,
+      "n2": 917,
+      "w": 112
+    },
+    {
+      "n1": 1546,
+      "n2": 974,
+      "w": 80
+    },
+    {
+      "n1": 1546,
+      "n2": 1031,
+      "w": 94
+    },
+    {
+      "n1": 1546,
+      "n2": 1088,
+      "w": 40
+    },
+    {
+      "n1": 1546,
+      "n2": 1146,
+      "w": 97
+    },
+    {
+      "n1": 1546,
+      "n2": 1203,
+      "w": 75
+    },
+    {
+      "n1": 1546,
+      "n2": 1260,
+      "w": 97
+    },
+    {
+      "n1": 1546,
+      "n2": 1317,
+      "w": 107
+    },
+    {
+      "n1": 1546,
+      "n2": 1375,
+      "w": 81
+    },
+    {
+      "n1": 1546,
+      "n2": 1432,
+      "w": 103
+    },
+    {
+      "n1": 1546,
+      "n2": 1489,
+      "w": 80
+    },
+    {
+      "n1": 1546,
+      "n2": 1546,
+      "w": 0
+    },
+    {
+      "n1": 1546,
+      "n2": 1604,
+      "w": 81
+    },
+    {
+      "n1": 1546,
+      "n2": 1662,
+      "w": 74
+    },
+    {
+      "n1": 1546,
+      "n2": 1719,
+      "w": 80
+    },
+    {
+      "n1": 1546,
+      "n2": 1776,
+      "w": 44
+    },
+    {
+      "n1": 1546,
+      "n2": 1834,
+      "w": 31
+    },
+    {
+      "n1": 1546,
+      "n2": 1891,
+      "w": 178
+    },
+    {
+      "n1": 1546,
+      "n2": 1948,
+      "w": 214
+    },
+    {
+      "n1": 1546,
+      "n2": 2005,
+      "w": 208
+    },
+    {
+      "n1": 1546,
+      "n2": 2063,
+      "w": 28
+    },
+    {
+      "n1": 1546,
+      "n2": 2120,
+      "w": 110
+    },
+    {
+      "n1": 1546,
+      "n2": 2177,
+      "w": 73
+    },
+    {
+      "n1": 1546,
+      "n2": 2234,
+      "w": 66
+    },
+    {
+      "n1": 1546,
+      "n2": 2292,
+      "w": 89
+    },
+    {
+      "n1": 1546,
+      "n2": 2349,
+      "w": 86
+    },
+    {
+      "n1": 1546,
+      "n2": 2406,
+      "w": 36
+    },
+    {
+      "n1": 1546,
+      "n2": 2463,
+      "w": 132
+    },
+    {
+      "n1": 1546,
+      "n2": 2521,
+      "w": 98
+    },
+    {
+      "n1": 1546,
+      "n2": 2578,
+      "w": 181
+    },
+    {
+      "n1": 1546,
+      "n2": 2635,
+      "w": 63
+    },
+    {
+      "n1": 1546,
+      "n2": 2692,
+      "w": 100
+    },
+    {
+      "n1": 1604,
+      "n2": 782,
+      "w": 100
+    },
+    {
+      "n1": 1604,
+      "n2": 1655,
+      "w": 33
+    },
+    {
+      "n1": 1604,
+      "n2": 0,
+      "w": 52
+    },
+    {
+      "n1": 1604,
+      "n2": 57,
+      "w": 97
+    },
+    {
+      "n1": 1604,
+      "n2": 114,
+      "w": 84
+    },
+    {
+      "n1": 1604,
+      "n2": 171,
+      "w": 52
+    },
+    {
+      "n1": 1604,
+      "n2": 229,
+      "w": 26
+    },
+    {
+      "n1": 1604,
+      "n2": 286,
+      "w": 97
+    },
+    {
+      "n1": 1604,
+      "n2": 343,
+      "w": 74
+    },
+    {
+      "n1": 1604,
+      "n2": 400,
+      "w": 51
+    },
+    {
+      "n1": 1604,
+      "n2": 458,
+      "w": 127
+    },
+    {
+      "n1": 1604,
+      "n2": 515,
+      "w": 60
+    },
+    {
+      "n1": 1604,
+      "n2": 572,
+      "w": 33
+    },
+    {
+      "n1": 1604,
+      "n2": 629,
+      "w": 102
+    },
+    {
+      "n1": 1604,
+      "n2": 687,
+      "w": 103
+    },
+    {
+      "n1": 1604,
+      "n2": 744,
+      "w": 40
+    },
+    {
+      "n1": 1604,
+      "n2": 802,
+      "w": 87
+    },
+    {
+      "n1": 1604,
+      "n2": 859,
+      "w": 104
+    },
+    {
+      "n1": 1604,
+      "n2": 917,
+      "w": 53
+    },
+    {
+      "n1": 1604,
+      "n2": 974,
+      "w": 55
+    },
+    {
+      "n1": 1604,
+      "n2": 1031,
+      "w": 44
+    },
+    {
+      "n1": 1604,
+      "n2": 1088,
+      "w": 91
+    },
+    {
+      "n1": 1604,
+      "n2": 1146,
+      "w": 70
+    },
+    {
+      "n1": 1604,
+      "n2": 1203,
+      "w": 147
+    },
+    {
+      "n1": 1604,
+      "n2": 1260,
+      "w": 53
+    },
+    {
+      "n1": 1604,
+      "n2": 1317,
+      "w": 78
+    },
+    {
+      "n1": 1604,
+      "n2": 1375,
+      "w": 151
+    },
+    {
+      "n1": 1604,
+      "n2": 1432,
+      "w": 41
+    },
+    {
+      "n1": 1604,
+      "n2": 1489,
+      "w": 21
+    },
+    {
+      "n1": 1604,
+      "n2": 1546,
+      "w": 82
+    },
+    {
+      "n1": 1604,
+      "n2": 1604,
+      "w": 0
+    },
+    {
+      "n1": 1604,
+      "n2": 1662,
+      "w": 97
+    },
+    {
+      "n1": 1604,
+      "n2": 1719,
+      "w": 52
+    },
+    {
+      "n1": 1604,
+      "n2": 1776,
+      "w": 93
+    },
+    {
+      "n1": 1604,
+      "n2": 1834,
+      "w": 50
+    },
+    {
+      "n1": 1604,
+      "n2": 1891,
+      "w": 129
+    },
+    {
+      "n1": 1604,
+      "n2": 1948,
+      "w": 146
+    },
+    {
+      "n1": 1604,
+      "n2": 2005,
+      "w": 141
+    },
+    {
+      "n1": 1604,
+      "n2": 2063,
+      "w": 95
+    },
+    {
+      "n1": 1604,
+      "n2": 2120,
+      "w": 30
+    },
+    {
+      "n1": 1604,
+      "n2": 2177,
+      "w": 119
+    },
+    {
+      "n1": 1604,
+      "n2": 2234,
+      "w": 53
+    },
+    {
+      "n1": 1604,
+      "n2": 2292,
+      "w": 157
+    },
+    {
+      "n1": 1604,
+      "n2": 2349,
+      "w": 19
+    },
+    {
+      "n1": 1604,
+      "n2": 2406,
+      "w": 48
+    },
+    {
+      "n1": 1604,
+      "n2": 2463,
+      "w": 85
+    },
+    {
+      "n1": 1604,
+      "n2": 2521,
+      "w": 137
+    },
+    {
+      "n1": 1604,
+      "n2": 2578,
+      "w": 122
+    },
+    {
+      "n1": 1604,
+      "n2": 2635,
+      "w": 87
+    },
+    {
+      "n1": 1604,
+      "n2": 2692,
+      "w": 139
+    },
+    {
+      "n1": 1662,
+      "n2": 782,
+      "w": 61
+    },
+    {
+      "n1": 1662,
+      "n2": 1655,
+      "w": 127
+    },
+    {
+      "n1": 1662,
+      "n2": 0,
+      "w": 85
+    },
+    {
+      "n1": 1662,
+      "n2": 57,
+      "w": 111
+    },
+    {
+      "n1": 1662,
+      "n2": 114,
+      "w": 137
+    },
+    {
+      "n1": 1662,
+      "n2": 171,
+      "w": 120
+    },
+    {
+      "n1": 1662,
+      "n2": 229,
+      "w": 117
+    },
+    {
+      "n1": 1662,
+      "n2": 286,
+      "w": 178
+    },
+    {
+      "n1": 1662,
+      "n2": 343,
+      "w": 155
+    },
+    {
+      "n1": 1662,
+      "n2": 400,
+      "w": 53
+    },
+    {
+      "n1": 1662,
+      "n2": 458,
+      "w": 33
+    },
+    {
+      "n1": 1662,
+      "n2": 515,
+      "w": 61
+    },
+    {
+      "n1": 1662,
+      "n2": 572,
+      "w": 74
+    },
+    {
+      "n1": 1662,
+      "n2": 629,
+      "w": 194
+    },
+    {
+      "n1": 1662,
+      "n2": 687,
+      "w": 192
+    },
+    {
+      "n1": 1662,
+      "n2": 744,
+      "w": 122
+    },
+    {
+      "n1": 1662,
+      "n2": 802,
+      "w": 56
+    },
+    {
+      "n1": 1662,
+      "n2": 859,
+      "w": 199
+    },
+    {
+      "n1": 1662,
+      "n2": 917,
+      "w": 149
+    },
+    {
+      "n1": 1662,
+      "n2": 974,
+      "w": 135
+    },
+    {
+      "n1": 1662,
+      "n2": 1031,
+      "w": 137
+    },
+    {
+      "n1": 1662,
+      "n2": 1088,
+      "w": 111
+    },
+    {
+      "n1": 1662,
+      "n2": 1146,
+      "w": 152
+    },
+    {
+      "n1": 1662,
+      "n2": 1203,
+      "w": 82
+    },
+    {
+      "n1": 1662,
+      "n2": 1260,
+      "w": 145
+    },
+    {
+      "n1": 1662,
+      "n2": 1317,
+      "w": 162
+    },
+    {
+      "n1": 1662,
+      "n2": 1375,
+      "w": 77
+    },
+    {
+      "n1": 1662,
+      "n2": 1432,
+      "w": 139
+    },
+    {
+      "n1": 1662,
+      "n2": 1489,
+      "w": 112
+    },
+    {
+      "n1": 1662,
+      "n2": 1546,
+      "w": 74
+    },
+    {
+      "n1": 1662,
+      "n2": 1604,
+      "w": 97
+    },
+    {
+      "n1": 1662,
+      "n2": 1662,
+      "w": 0
+    },
+    {
+      "n1": 1662,
+      "n2": 1719,
+      "w": 134
+    },
+    {
+      "n1": 1662,
+      "n2": 1776,
+      "w": 34
+    },
+    {
+      "n1": 1662,
+      "n2": 1834,
+      "w": 76
+    },
+    {
+      "n1": 1662,
+      "n2": 1891,
+      "w": 224
+    },
+    {
+      "n1": 1662,
+      "n2": 1948,
+      "w": 242
+    },
+    {
+      "n1": 1662,
+      "n2": 2005,
+      "w": 236
+    },
+    {
+      "n1": 1662,
+      "n2": 2063,
+      "w": 99
+    },
+    {
+      "n1": 1662,
+      "n2": 2120,
+      "w": 117
+    },
+    {
+      "n1": 1662,
+      "n2": 2177,
+      "w": 29
+    },
+    {
+      "n1": 1662,
+      "n2": 2234,
+      "w": 45
+    },
+    {
+      "n1": 1662,
+      "n2": 2292,
+      "w": 73
+    },
+    {
+      "n1": 1662,
+      "n2": 2349,
+      "w": 90
+    },
+    {
+      "n1": 1662,
+      "n2": 2406,
+      "w": 87
+    },
+    {
+      "n1": 1662,
+      "n2": 2463,
+      "w": 178
+    },
+    {
+      "n1": 1662,
+      "n2": 2521,
+      "w": 43
+    },
+    {
+      "n1": 1662,
+      "n2": 2578,
+      "w": 219
+    },
+    {
+      "n1": 1662,
+      "n2": 2635,
+      "w": 129
+    },
+    {
+      "n1": 1662,
+      "n2": 2692,
+      "w": 45
+    },
+    {
+      "n1": 1719,
+      "n2": 782,
+      "w": 104
+    },
+    {
+      "n1": 1719,
+      "n2": 1655,
+      "w": 34
+    },
+    {
+      "n1": 1719,
+      "n2": 0,
+      "w": 50
+    },
+    {
+      "n1": 1719,
+      "n2": 57,
+      "w": 75
+    },
+    {
+      "n1": 1719,
+      "n2": 114,
+      "w": 37
+    },
+    {
+      "n1": 1719,
+      "n2": 171,
+      "w": 18
+    },
+    {
+      "n1": 1719,
+      "n2": 229,
+      "w": 31
+    },
+    {
+      "n1": 1719,
+      "n2": 286,
+      "w": 50
+    },
+    {
+      "n1": 1719,
+      "n2": 343,
+      "w": 24
+    },
+    {
+      "n1": 1719,
+      "n2": 400,
+      "w": 85
+    },
+    {
+      "n1": 1719,
+      "n2": 458,
+      "w": 156
+    },
+    {
+      "n1": 1719,
+      "n2": 515,
+      "w": 76
+    },
+    {
+      "n1": 1719,
+      "n2": 572,
+      "w": 65
+    },
+    {
+      "n1": 1719,
+      "n2": 629,
+      "w": 75
+    },
+    {
+      "n1": 1719,
+      "n2": 687,
+      "w": 60
+    },
+    {
+      "n1": 1719,
+      "n2": 744,
+      "w": 88
+    },
+    {
+      "n1": 1719,
+      "n2": 802,
+      "w": 92
+    },
+    {
+      "n1": 1719,
+      "n2": 859,
+      "w": 111
+    },
+    {
+      "n1": 1719,
+      "n2": 917,
+      "w": 50
+    },
+    {
+      "n1": 1719,
+      "n2": 974,
+      "w": 3
+    },
+    {
+      "n1": 1719,
+      "n2": 1031,
+      "w": 26
+    },
+    {
+      "n1": 1719,
+      "n2": 1088,
+      "w": 66
+    },
+    {
+      "n1": 1719,
+      "n2": 1146,
+      "w": 20
+    },
+    {
+      "n1": 1719,
+      "n2": 1203,
+      "w": 150
+    },
+    {
+      "n1": 1719,
+      "n2": 1260,
+      "w": 22
+    },
+    {
+      "n1": 1719,
+      "n2": 1317,
+      "w": 30
+    },
+    {
+      "n1": 1719,
+      "n2": 1375,
+      "w": 154
+    },
+    {
+      "n1": 1719,
+      "n2": 1432,
+      "w": 42
+    },
+    {
+      "n1": 1719,
+      "n2": 1489,
+      "w": 35
+    },
+    {
+      "n1": 1719,
+      "n2": 1546,
+      "w": 81
+    },
+    {
+      "n1": 1719,
+      "n2": 1604,
+      "w": 52
+    },
+    {
+      "n1": 1719,
+      "n2": 1662,
+      "w": 133
+    },
+    {
+      "n1": 1719,
+      "n2": 1719,
+      "w": 0
+    },
+    {
+      "n1": 1719,
+      "n2": 1776,
+      "w": 112
+    },
+    {
+      "n1": 1719,
+      "n2": 1834,
+      "w": 64
+    },
+    {
+      "n1": 1719,
+      "n2": 1891,
+      "w": 104
+    },
+    {
+      "n1": 1719,
+      "n2": 1948,
+      "w": 153
+    },
+    {
+      "n1": 1719,
+      "n2": 2005,
+      "w": 148
+    },
+    {
+      "n1": 1719,
+      "n2": 2063,
+      "w": 80
+    },
+    {
+      "n1": 1719,
+      "n2": 2120,
+      "w": 76
+    },
+    {
+      "n1": 1719,
+      "n2": 2177,
+      "w": 140
+    },
+    {
+      "n1": 1719,
+      "n2": 2234,
+      "w": 97
+    },
+    {
+      "n1": 1719,
+      "n2": 2292,
+      "w": 160
+    },
+    {
+      "n1": 1719,
+      "n2": 2349,
+      "w": 71
+    },
+    {
+      "n1": 1719,
+      "n2": 2406,
+      "w": 51
+    },
+    {
+      "n1": 1719,
+      "n2": 2463,
+      "w": 56
+    },
+    {
+      "n1": 1719,
+      "n2": 2521,
+      "w": 166
+    },
+    {
+      "n1": 1719,
+      "n2": 2578,
+      "w": 119
+    },
+    {
+      "n1": 1719,
+      "n2": 2635,
+      "w": 41
+    },
+    {
+      "n1": 1719,
+      "n2": 2692,
+      "w": 167
+    },
+    {
+      "n1": 1776,
+      "n2": 782,
+      "w": 28
+    },
+    {
+      "n1": 1776,
+      "n2": 1655,
+      "w": 113
+    },
+    {
+      "n1": 1776,
+      "n2": 0,
+      "w": 61
+    },
+    {
+      "n1": 1776,
+      "n2": 57,
+      "w": 78
+    },
+    {
+      "n1": 1776,
+      "n2": 114,
+      "w": 113
+    },
+    {
+      "n1": 1776,
+      "n2": 171,
+      "w": 97
+    },
+    {
+      "n1": 1776,
+      "n2": 229,
+      "w": 103
+    },
+    {
+      "n1": 1776,
+      "n2": 286,
+      "w": 155
+    },
+    {
+      "n1": 1776,
+      "n2": 343,
+      "w": 132
+    },
+    {
+      "n1": 1776,
+      "n2": 400,
+      "w": 47
+    },
+    {
+      "n1": 1776,
+      "n2": 458,
+      "w": 45
+    },
+    {
+      "n1": 1776,
+      "n2": 515,
+      "w": 39
+    },
+    {
+      "n1": 1776,
+      "n2": 572,
+      "w": 62
+    },
+    {
+      "n1": 1776,
+      "n2": 629,
+      "w": 179
+    },
+    {
+      "n1": 1776,
+      "n2": 687,
+      "w": 169
+    },
+    {
+      "n1": 1776,
+      "n2": 744,
+      "w": 124
+    },
+    {
+      "n1": 1776,
+      "n2": 802,
+      "w": 25
+    },
+    {
+      "n1": 1776,
+      "n2": 859,
+      "w": 195
+    },
+    {
+      "n1": 1776,
+      "n2": 917,
+      "w": 135
+    },
+    {
+      "n1": 1776,
+      "n2": 974,
+      "w": 111
+    },
+    {
+      "n1": 1776,
+      "n2": 1031,
+      "w": 123
+    },
+    {
+      "n1": 1776,
+      "n2": 1088,
+      "w": 81
+    },
+    {
+      "n1": 1776,
+      "n2": 1146,
+      "w": 128
+    },
+    {
+      "n1": 1776,
+      "n2": 1203,
+      "w": 60
+    },
+    {
+      "n1": 1776,
+      "n2": 1260,
+      "w": 127
+    },
+    {
+      "n1": 1776,
+      "n2": 1317,
+      "w": 139
+    },
+    {
+      "n1": 1776,
+      "n2": 1375,
+      "w": 60
+    },
+    {
+      "n1": 1776,
+      "n2": 1432,
+      "w": 126
+    },
+    {
+      "n1": 1776,
+      "n2": 1489,
+      "w": 97
+    },
+    {
+      "n1": 1776,
+      "n2": 1546,
+      "w": 44
+    },
+    {
+      "n1": 1776,
+      "n2": 1604,
+      "w": 93
+    },
+    {
+      "n1": 1776,
+      "n2": 1662,
+      "w": 34
+    },
+    {
+      "n1": 1776,
+      "n2": 1719,
+      "w": 112
+    },
+    {
+      "n1": 1776,
+      "n2": 1776,
+      "w": 0
+    },
+    {
+      "n1": 1776,
+      "n2": 1834,
+      "w": 53
+    },
+    {
+      "n1": 1776,
+      "n2": 1891,
+      "w": 208
+    },
+    {
+      "n1": 1776,
+      "n2": 1948,
+      "w": 237
+    },
+    {
+      "n1": 1776,
+      "n2": 2005,
+      "w": 232
+    },
+    {
+      "n1": 1776,
+      "n2": 2063,
+      "w": 66
+    },
+    {
+      "n1": 1776,
+      "n2": 2120,
+      "w": 118
+    },
+    {
+      "n1": 1776,
+      "n2": 2177,
+      "w": 29
+    },
+    {
+      "n1": 1776,
+      "n2": 2234,
+      "w": 51
+    },
+    {
+      "n1": 1776,
+      "n2": 2292,
+      "w": 65
+    },
+    {
+      "n1": 1776,
+      "n2": 2349,
+      "w": 89
+    },
+    {
+      "n1": 1776,
+      "n2": 2406,
+      "w": 65
+    },
+    {
+      "n1": 1776,
+      "n2": 2463,
+      "w": 162
+    },
+    {
+      "n1": 1776,
+      "n2": 2521,
+      "w": 55
+    },
+    {
+      "n1": 1776,
+      "n2": 2578,
+      "w": 204
+    },
+    {
+      "n1": 1776,
+      "n2": 2635,
+      "w": 102
+    },
+    {
+      "n1": 1776,
+      "n2": 2692,
+      "w": 57
+    },
+    {
+      "n1": 1834,
+      "n2": 782,
+      "w": 52
+    },
+    {
+      "n1": 1834,
+      "n2": 1655,
+      "w": 67
+    },
+    {
+      "n1": 1834,
+      "n2": 0,
+      "w": 14
+    },
+    {
+      "n1": 1834,
+      "n2": 57,
+      "w": 57
+    },
+    {
+      "n1": 1834,
+      "n2": 114,
+      "w": 67
+    },
+    {
+      "n1": 1834,
+      "n2": 171,
+      "w": 47
+    },
+    {
+      "n1": 1834,
+      "n2": 229,
+      "w": 55
+    },
+    {
+      "n1": 1834,
+      "n2": 286,
+      "w": 108
+    },
+    {
+      "n1": 1834,
+      "n2": 343,
+      "w": 85
+    },
+    {
+      "n1": 1834,
+      "n2": 400,
+      "w": 33
+    },
+    {
+      "n1": 1834,
+      "n2": 458,
+      "w": 97
+    },
+    {
+      "n1": 1834,
+      "n2": 515,
+      "w": 15
+    },
+    {
+      "n1": 1834,
+      "n2": 572,
+      "w": 27
+    },
+    {
+      "n1": 1834,
+      "n2": 629,
+      "w": 129
+    },
+    {
+      "n1": 1834,
+      "n2": 687,
+      "w": 122
+    },
+    {
+      "n1": 1834,
+      "n2": 744,
+      "w": 89
+    },
+    {
+      "n1": 1834,
+      "n2": 802,
+      "w": 40
+    },
+    {
+      "n1": 1834,
+      "n2": 859,
+      "w": 149
+    },
+    {
+      "n1": 1834,
+      "n2": 917,
+      "w": 89
+    },
+    {
+      "n1": 1834,
+      "n2": 974,
+      "w": 64
+    },
+    {
+      "n1": 1834,
+      "n2": 1031,
+      "w": 74
+    },
+    {
+      "n1": 1834,
+      "n2": 1088,
+      "w": 53
+    },
+    {
+      "n1": 1834,
+      "n2": 1146,
+      "w": 82
+    },
+    {
+      "n1": 1834,
+      "n2": 1203,
+      "w": 98
+    },
+    {
+      "n1": 1834,
+      "n2": 1260,
+      "w": 77
+    },
+    {
+      "n1": 1834,
+      "n2": 1317,
+      "w": 92
+    },
+    {
+      "n1": 1834,
+      "n2": 1375,
+      "w": 102
+    },
+    {
+      "n1": 1834,
+      "n2": 1432,
+      "w": 80
+    },
+    {
+      "n1": 1834,
+      "n2": 1489,
+      "w": 51
+    },
+    {
+      "n1": 1834,
+      "n2": 1546,
+      "w": 31
+    },
+    {
+      "n1": 1834,
+      "n2": 1604,
+      "w": 50
+    },
+    {
+      "n1": 1834,
+      "n2": 1662,
+      "w": 76
+    },
+    {
+      "n1": 1834,
+      "n2": 1719,
+      "w": 63
+    },
+    {
+      "n1": 1834,
+      "n2": 1776,
+      "w": 53
+    },
+    {
+      "n1": 1834,
+      "n2": 1834,
+      "w": 0
+    },
+    {
+      "n1": 1834,
+      "n2": 1891,
+      "w": 158
+    },
+    {
+      "n1": 1834,
+      "n2": 1948,
+      "w": 191
+    },
+    {
+      "n1": 1834,
+      "n2": 2005,
+      "w": 186
+    },
+    {
+      "n1": 1834,
+      "n2": 2063,
+      "w": 52
+    },
+    {
+      "n1": 1834,
+      "n2": 2120,
+      "w": 79
+    },
+    {
+      "n1": 1834,
+      "n2": 2177,
+      "w": 81
+    },
+    {
+      "n1": 1834,
+      "n2": 2234,
+      "w": 46
+    },
+    {
+      "n1": 1834,
+      "n2": 2292,
+      "w": 108
+    },
+    {
+      "n1": 1834,
+      "n2": 2349,
+      "w": 56
+    },
+    {
+      "n1": 1834,
+      "n2": 2406,
+      "w": 13
+    },
+    {
+      "n1": 1834,
+      "n2": 2463,
+      "w": 112
+    },
+    {
+      "n1": 1834,
+      "n2": 2521,
+      "w": 106
+    },
+    {
+      "n1": 1834,
+      "n2": 2578,
+      "w": 158
+    },
+    {
+      "n1": 1834,
+      "n2": 2635,
+      "w": 59
+    },
+    {
+      "n1": 1834,
+      "n2": 2692,
+      "w": 108
+    },
+    {
+      "n1": 1891,
+      "n2": 782,
+      "w": 201
+    },
+    {
+      "n1": 1891,
+      "n2": 1655,
+      "w": 99
+    },
+    {
+      "n1": 1891,
+      "n2": 0,
+      "w": 147
+    },
+    {
+      "n1": 1891,
+      "n2": 57,
+      "w": 174
+    },
+    {
+      "n1": 1891,
+      "n2": 114,
+      "w": 125
+    },
+    {
+      "n1": 1891,
+      "n2": 171,
+      "w": 120
+    },
+    {
+      "n1": 1891,
+      "n2": 229,
+      "w": 109
+    },
+    {
+      "n1": 1891,
+      "n2": 286,
+      "w": 70
+    },
+    {
+      "n1": 1891,
+      "n2": 343,
+      "w": 86
+    },
+    {
+      "n1": 1891,
+      "n2": 400,
+      "w": 173
+    },
+    {
+      "n1": 1891,
+      "n2": 458,
+      "w": 250
+    },
+    {
+      "n1": 1891,
+      "n2": 515,
+      "w": 171
+    },
+    {
+      "n1": 1891,
+      "n2": 572,
+      "w": 153
+    },
+    {
+      "n1": 1891,
+      "n2": 629,
+      "w": 31
+    },
+    {
+      "n1": 1891,
+      "n2": 687,
+      "w": 59
+    },
+    {
+      "n1": 1891,
+      "n2": 744,
+      "w": 128
+    },
+    {
+      "n1": 1891,
+      "n2": 802,
+      "w": 189
+    },
+    {
+      "n1": 1891,
+      "n2": 859,
+      "w": 76
+    },
+    {
+      "n1": 1891,
+      "n2": 917,
+      "w": 76
+    },
+    {
+      "n1": 1891,
+      "n2": 974,
+      "w": 103
+    },
+    {
+      "n1": 1891,
+      "n2": 1031,
+      "w": 89
+    },
+    {
+      "n1": 1891,
+      "n2": 1088,
+      "w": 164
+    },
+    {
+      "n1": 1891,
+      "n2": 1146,
+      "w": 88
+    },
+    {
+      "n1": 1891,
+      "n2": 1203,
+      "w": 247
+    },
+    {
+      "n1": 1891,
+      "n2": 1260,
+      "w": 84
+    },
+    {
+      "n1": 1891,
+      "n2": 1317,
+      "w": 78
+    },
+    {
+      "n1": 1891,
+      "n2": 1375,
+      "w": 251
+    },
+    {
+      "n1": 1891,
+      "n2": 1432,
+      "w": 86
+    },
+    {
+      "n1": 1891,
+      "n2": 1489,
+      "w": 112
+    },
+    {
+      "n1": 1891,
+      "n2": 1546,
+      "w": 179
+    },
+    {
+      "n1": 1891,
+      "n2": 1604,
+      "w": 128
+    },
+    {
+      "n1": 1891,
+      "n2": 1662,
+      "w": 224
+    },
+    {
+      "n1": 1891,
+      "n2": 1719,
+      "w": 104
+    },
+    {
+      "n1": 1891,
+      "n2": 1776,
+      "w": 208
+    },
+    {
+      "n1": 1891,
+      "n2": 1834,
+      "w": 158
+    },
+    {
+      "n1": 1891,
+      "n2": 1891,
+      "w": 0
+    },
+    {
+      "n1": 1891,
+      "n2": 1948,
+      "w": 96
+    },
+    {
+      "n1": 1891,
+      "n2": 2005,
+      "w": 98
+    },
+    {
+      "n1": 1891,
+      "n2": 2063,
+      "w": 182
+    },
+    {
+      "n1": 1891,
+      "n2": 2120,
+      "w": 118
+    },
+    {
+      "n1": 1891,
+      "n2": 2177,
+      "w": 237
+    },
+    {
+      "n1": 1891,
+      "n2": 2234,
+      "w": 180
+    },
+    {
+      "n1": 1891,
+      "n2": 2292,
+      "w": 257
+    },
+    {
+      "n1": 1891,
+      "n2": 2349,
+      "w": 141
+    },
+    {
+      "n1": 1891,
+      "n2": 2406,
+      "w": 145
+    },
+    {
+      "n1": 1891,
+      "n2": 2463,
+      "w": 53
+    },
+    {
+      "n1": 1891,
+      "n2": 2521,
+      "w": 260
+    },
+    {
+      "n1": 1891,
+      "n2": 2578,
+      "w": 46
+    },
+    {
+      "n1": 1891,
+      "n2": 2635,
+      "w": 137
+    },
+    {
+      "n1": 1891,
+      "n2": 2692,
+      "w": 262
+    },
+    {
+      "n1": 1948,
+      "n2": 782,
+      "w": 238
+    },
+    {
+      "n1": 1948,
+      "n2": 1655,
+      "w": 127
+    },
+    {
+      "n1": 1948,
+      "n2": 0,
+      "w": 183
+    },
+    {
+      "n1": 1948,
+      "n2": 57,
+      "w": 220
+    },
+    {
+      "n1": 1948,
+      "n2": 114,
+      "w": 191
+    },
+    {
+      "n1": 1948,
+      "n2": 171,
+      "w": 162
+    },
+    {
+      "n1": 1948,
+      "n2": 229,
+      "w": 138
+    },
+    {
+      "n1": 1948,
+      "n2": 286,
+      "w": 147
+    },
+    {
+      "n1": 1948,
+      "n2": 343,
+      "w": 150
+    },
+    {
+      "n1": 1948,
+      "n2": 400,
+      "w": 197
+    },
+    {
+      "n1": 1948,
+      "n2": 458,
+      "w": 272
+    },
+    {
+      "n1": 1948,
+      "n2": 515,
+      "w": 202
+    },
+    {
+      "n1": 1948,
+      "n2": 572,
+      "w": 179
+    },
+    {
+      "n1": 1948,
+      "n2": 629,
+      "w": 101
+    },
+    {
+      "n1": 1948,
+      "n2": 687,
+      "w": 141
+    },
+    {
+      "n1": 1948,
+      "n2": 744,
+      "w": 135
+    },
+    {
+      "n1": 1948,
+      "n2": 802,
+      "w": 226
+    },
+    {
+      "n1": 1948,
+      "n2": 859,
+      "w": 44
+    },
+    {
+      "n1": 1948,
+      "n2": 917,
+      "w": 109
+    },
+    {
+      "n1": 1948,
+      "n2": 974,
+      "w": 156
+    },
+    {
+      "n1": 1948,
+      "n2": 1031,
+      "w": 131
+    },
+    {
+      "n1": 1948,
+      "n2": 1088,
+      "w": 213
+    },
+    {
+      "n1": 1948,
+      "n2": 1146,
+      "w": 150
+    },
+    {
+      "n1": 1948,
+      "n2": 1203,
+      "w": 284
+    },
+    {
+      "n1": 1948,
+      "n2": 1260,
+      "w": 139
+    },
+    {
+      "n1": 1948,
+      "n2": 1317,
+      "w": 148
+    },
+    {
+      "n1": 1948,
+      "n2": 1375,
+      "w": 288
+    },
+    {
+      "n1": 1948,
+      "n2": 1432,
+      "w": 112
+    },
+    {
+      "n1": 1948,
+      "n2": 1489,
+      "w": 141
+    },
+    {
+      "n1": 1948,
+      "n2": 1546,
+      "w": 215
+    },
+    {
+      "n1": 1948,
+      "n2": 1604,
+      "w": 146
+    },
+    {
+      "n1": 1948,
+      "n2": 1662,
+      "w": 242
+    },
+    {
+      "n1": 1948,
+      "n2": 1719,
+      "w": 154
+    },
+    {
+      "n1": 1948,
+      "n2": 1776,
+      "w": 239
+    },
+    {
+      "n1": 1948,
+      "n2": 1834,
+      "w": 191
+    },
+    {
+      "n1": 1948,
+      "n2": 1891,
+      "w": 96
+    },
+    {
+      "n1": 1948,
+      "n2": 1948,
+      "w": 0
+    },
+    {
+      "n1": 1948,
+      "n2": 2005,
+      "w": 21
+    },
+    {
+      "n1": 1948,
+      "n2": 2063,
+      "w": 224
+    },
+    {
+      "n1": 1948,
+      "n2": 2120,
+      "w": 127
+    },
+    {
+      "n1": 1948,
+      "n2": 2177,
+      "w": 265
+    },
+    {
+      "n1": 1948,
+      "n2": 2234,
+      "w": 198
+    },
+    {
+      "n1": 1948,
+      "n2": 2292,
+      "w": 294
+    },
+    {
+      "n1": 1948,
+      "n2": 2349,
+      "w": 155
+    },
+    {
+      "n1": 1948,
+      "n2": 2406,
+      "w": 182
+    },
+    {
+      "n1": 1948,
+      "n2": 2463,
+      "w": 123
+    },
+    {
+      "n1": 1948,
+      "n2": 2521,
+      "w": 282
+    },
+    {
+      "n1": 1948,
+      "n2": 2578,
+      "w": 54
+    },
+    {
+      "n1": 1948,
+      "n2": 2635,
+      "w": 195
+    },
+    {
+      "n1": 1948,
+      "n2": 2692,
+      "w": 284
+    },
+    {
+      "n1": 2005,
+      "n2": 782,
+      "w": 232
+    },
+    {
+      "n1": 2005,
+      "n2": 1655,
+      "w": 121
+    },
+    {
+      "n1": 2005,
+      "n2": 0,
+      "w": 177
+    },
+    {
+      "n1": 2005,
+      "n2": 57,
+      "w": 215
+    },
+    {
+      "n1": 2005,
+      "n2": 114,
+      "w": 185
+    },
+    {
+      "n1": 2005,
+      "n2": 171,
+      "w": 157
+    },
+    {
+      "n1": 2005,
+      "n2": 229,
+      "w": 132
+    },
+    {
+      "n1": 2005,
+      "n2": 286,
+      "w": 148
+    },
+    {
+      "n1": 2005,
+      "n2": 343,
+      "w": 145
+    },
+    {
+      "n1": 2005,
+      "n2": 400,
+      "w": 191
+    },
+    {
+      "n1": 2005,
+      "n2": 458,
+      "w": 266
+    },
+    {
+      "n1": 2005,
+      "n2": 515,
+      "w": 197
+    },
+    {
+      "n1": 2005,
+      "n2": 572,
+      "w": 173
+    },
+    {
+      "n1": 2005,
+      "n2": 629,
+      "w": 102
+    },
+    {
+      "n1": 2005,
+      "n2": 687,
+      "w": 142
+    },
+    {
+      "n1": 2005,
+      "n2": 744,
+      "w": 129
+    },
+    {
+      "n1": 2005,
+      "n2": 802,
+      "w": 220
+    },
+    {
+      "n1": 2005,
+      "n2": 859,
+      "w": 38
+    },
+    {
+      "n1": 2005,
+      "n2": 917,
+      "w": 103
+    },
+    {
+      "n1": 2005,
+      "n2": 974,
+      "w": 150
+    },
+    {
+      "n1": 2005,
+      "n2": 1031,
+      "w": 125
+    },
+    {
+      "n1": 2005,
+      "n2": 1088,
+      "w": 207
+    },
+    {
+      "n1": 2005,
+      "n2": 1146,
+      "w": 145
+    },
+    {
+      "n1": 2005,
+      "n2": 1203,
+      "w": 278
+    },
+    {
+      "n1": 2005,
+      "n2": 1260,
+      "w": 134
+    },
+    {
+      "n1": 2005,
+      "n2": 1317,
+      "w": 143
+    },
+    {
+      "n1": 2005,
+      "n2": 1375,
+      "w": 282
+    },
+    {
+      "n1": 2005,
+      "n2": 1432,
+      "w": 107
+    },
+    {
+      "n1": 2005,
+      "n2": 1489,
+      "w": 135
+    },
+    {
+      "n1": 2005,
+      "n2": 1546,
+      "w": 210
+    },
+    {
+      "n1": 2005,
+      "n2": 1604,
+      "w": 141
+    },
+    {
+      "n1": 2005,
+      "n2": 1662,
+      "w": 236
+    },
+    {
+      "n1": 2005,
+      "n2": 1719,
+      "w": 148
+    },
+    {
+      "n1": 2005,
+      "n2": 1776,
+      "w": 233
+    },
+    {
+      "n1": 2005,
+      "n2": 1834,
+      "w": 186
+    },
+    {
+      "n1": 2005,
+      "n2": 1891,
+      "w": 97
+    },
+    {
+      "n1": 2005,
+      "n2": 1948,
+      "w": 21
+    },
+    {
+      "n1": 2005,
+      "n2": 2005,
+      "w": 0
+    },
+    {
+      "n1": 2005,
+      "n2": 2063,
+      "w": 218
+    },
+    {
+      "n1": 2005,
+      "n2": 2120,
+      "w": 121
+    },
+    {
+      "n1": 2005,
+      "n2": 2177,
+      "w": 259
+    },
+    {
+      "n1": 2005,
+      "n2": 2234,
+      "w": 192
+    },
+    {
+      "n1": 2005,
+      "n2": 2292,
+      "w": 288
+    },
+    {
+      "n1": 2005,
+      "n2": 2349,
+      "w": 149
+    },
+    {
+      "n1": 2005,
+      "n2": 2406,
+      "w": 176
+    },
+    {
+      "n1": 2005,
+      "n2": 2463,
+      "w": 119
+    },
+    {
+      "n1": 2005,
+      "n2": 2521,
+      "w": 276
+    },
+    {
+      "n1": 2005,
+      "n2": 2578,
+      "w": 55
+    },
+    {
+      "n1": 2005,
+      "n2": 2635,
+      "w": 189
+    },
+    {
+      "n1": 2005,
+      "n2": 2692,
+      "w": 278
+    },
+    {
+      "n1": 2063,
+      "n2": 782,
+      "w": 44
+    },
+    {
+      "n1": 2063,
+      "n2": 1655,
+      "w": 101
+    },
+    {
+      "n1": 2063,
+      "n2": 0,
+      "w": 42
+    },
+    {
+      "n1": 2063,
+      "n2": 57,
+      "w": 17
+    },
+    {
+      "n1": 2063,
+      "n2": 114,
+      "w": 66
+    },
+    {
+      "n1": 2063,
+      "n2": 171,
+      "w": 66
+    },
+    {
+      "n1": 2063,
+      "n2": 229,
+      "w": 87
+    },
+    {
+      "n1": 2063,
+      "n2": 286,
+      "w": 121
+    },
+    {
+      "n1": 2063,
+      "n2": 343,
+      "w": 98
+    },
+    {
+      "n1": 2063,
+      "n2": 400,
+      "w": 78
+    },
+    {
+      "n1": 2063,
+      "n2": 458,
+      "w": 106
+    },
+    {
+      "n1": 2063,
+      "n2": 515,
+      "w": 51
+    },
+    {
+      "n1": 2063,
+      "n2": 572,
+      "w": 77
+    },
+    {
+      "n1": 2063,
+      "n2": 629,
+      "w": 152
+    },
+    {
+      "n1": 2063,
+      "n2": 687,
+      "w": 135
+    },
+    {
+      "n1": 2063,
+      "n2": 744,
+      "w": 134
+    },
+    {
+      "n1": 2063,
+      "n2": 802,
+      "w": 44
+    },
+    {
+      "n1": 2063,
+      "n2": 859,
+      "w": 181
+    },
+    {
+      "n1": 2063,
+      "n2": 917,
+      "w": 121
+    },
+    {
+      "n1": 2063,
+      "n2": 974,
+      "w": 79
+    },
+    {
+      "n1": 2063,
+      "n2": 1031,
+      "w": 101
+    },
+    {
+      "n1": 2063,
+      "n2": 1088,
+      "w": 24
+    },
+    {
+      "n1": 2063,
+      "n2": 1146,
+      "w": 94
+    },
+    {
+      "n1": 2063,
+      "n2": 1203,
+      "w": 84
+    },
+    {
+      "n1": 2063,
+      "n2": 1260,
+      "w": 100
+    },
+    {
+      "n1": 2063,
+      "n2": 1317,
+      "w": 105
+    },
+    {
+      "n1": 2063,
+      "n2": 1375,
+      "w": 90
+    },
+    {
+      "n1": 2063,
+      "n2": 1432,
+      "w": 113
+    },
+    {
+      "n1": 2063,
+      "n2": 1489,
+      "w": 89
+    },
+    {
+      "n1": 2063,
+      "n2": 1546,
+      "w": 28
+    },
+    {
+      "n1": 2063,
+      "n2": 1604,
+      "w": 95
+    },
+    {
+      "n1": 2063,
+      "n2": 1662,
+      "w": 99
+    },
+    {
+      "n1": 2063,
+      "n2": 1719,
+      "w": 80
+    },
+    {
+      "n1": 2063,
+      "n2": 1776,
+      "w": 67
+    },
+    {
+      "n1": 2063,
+      "n2": 1834,
+      "w": 51
+    },
+    {
+      "n1": 2063,
+      "n2": 1891,
+      "w": 181
+    },
+    {
+      "n1": 2063,
+      "n2": 1948,
+      "w": 224
+    },
+    {
+      "n1": 2063,
+      "n2": 2005,
+      "w": 218
+    },
+    {
+      "n1": 2063,
+      "n2": 2063,
+      "w": 0
+    },
+    {
+      "n1": 2063,
+      "n2": 2120,
+      "w": 124
+    },
+    {
+      "n1": 2063,
+      "n2": 2177,
+      "w": 90
+    },
+    {
+      "n1": 2063,
+      "n2": 2234,
+      "w": 92
+    },
+    {
+      "n1": 2063,
+      "n2": 2292,
+      "w": 106
+    },
+    {
+      "n1": 2063,
+      "n2": 2349,
+      "w": 104
+    },
+    {
+      "n1": 2063,
+      "n2": 2406,
+      "w": 49
+    },
+    {
+      "n1": 2063,
+      "n2": 2463,
+      "w": 133
+    },
+    {
+      "n1": 2063,
+      "n2": 2521,
+      "w": 116
+    },
+    {
+      "n1": 2063,
+      "n2": 2578,
+      "w": 191
+    },
+    {
+      "n1": 2063,
+      "n2": 2635,
+      "w": 53
+    },
+    {
+      "n1": 2063,
+      "n2": 2692,
+      "w": 118
+    },
+    {
+      "n1": 2120,
+      "n2": 782,
+      "w": 129
+    },
+    {
+      "n1": 2120,
+      "n2": 1655,
+      "w": 43
+    },
+    {
+      "n1": 2120,
+      "n2": 0,
+      "w": 81
+    },
+    {
+      "n1": 2120,
+      "n2": 57,
+      "w": 126
+    },
+    {
+      "n1": 2120,
+      "n2": 114,
+      "w": 111
+    },
+    {
+      "n1": 2120,
+      "n2": 171,
+      "w": 79
+    },
+    {
+      "n1": 2120,
+      "n2": 229,
+      "w": 48
+    },
+    {
+      "n1": 2120,
+      "n2": 286,
+      "w": 111
+    },
+    {
+      "n1": 2120,
+      "n2": 343,
+      "w": 90
+    },
+    {
+      "n1": 2120,
+      "n2": 400,
+      "w": 75
+    },
+    {
+      "n1": 2120,
+      "n2": 458,
+      "w": 146
+    },
+    {
+      "n1": 2120,
+      "n2": 515,
+      "w": 89
+    },
+    {
+      "n1": 2120,
+      "n2": 572,
+      "w": 60
+    },
+    {
+      "n1": 2120,
+      "n2": 629,
+      "w": 94
+    },
+    {
+      "n1": 2120,
+      "n2": 687,
+      "w": 115
+    },
+    {
+      "n1": 2120,
+      "n2": 744,
+      "w": 12
+    },
+    {
+      "n1": 2120,
+      "n2": 802,
+      "w": 116
+    },
+    {
+      "n1": 2120,
+      "n2": 859,
+      "w": 84
+    },
+    {
+      "n1": 2120,
+      "n2": 917,
+      "w": 48
+    },
+    {
+      "n1": 2120,
+      "n2": 974,
+      "w": 79
+    },
+    {
+      "n1": 2120,
+      "n2": 1031,
+      "w": 57
+    },
+    {
+      "n1": 2120,
+      "n2": 1088,
+      "w": 120
+    },
+    {
+      "n1": 2120,
+      "n2": 1146,
+      "w": 87
+    },
+    {
+      "n1": 2120,
+      "n2": 1203,
+      "w": 175
+    },
+    {
+      "n1": 2120,
+      "n2": 1260,
+      "w": 66
+    },
+    {
+      "n1": 2120,
+      "n2": 1317,
+      "w": 93
+    },
+    {
+      "n1": 2120,
+      "n2": 1375,
+      "w": 179
+    },
+    {
+      "n1": 2120,
+      "n2": 1432,
+      "w": 43
+    },
+    {
+      "n1": 2120,
+      "n2": 1489,
+      "w": 44
+    },
+    {
+      "n1": 2120,
+      "n2": 1546,
+      "w": 111
+    },
+    {
+      "n1": 2120,
+      "n2": 1604,
+      "w": 30
+    },
+    {
+      "n1": 2120,
+      "n2": 1662,
+      "w": 117
+    },
+    {
+      "n1": 2120,
+      "n2": 1719,
+      "w": 77
+    },
+    {
+      "n1": 2120,
+      "n2": 1776,
+      "w": 119
+    },
+    {
+      "n1": 2120,
+      "n2": 1834,
+      "w": 79
+    },
+    {
+      "n1": 2120,
+      "n2": 1891,
+      "w": 118
+    },
+    {
+      "n1": 2120,
+      "n2": 1948,
+      "w": 126
+    },
+    {
+      "n1": 2120,
+      "n2": 2005,
+      "w": 121
+    },
+    {
+      "n1": 2120,
+      "n2": 2063,
+      "w": 124
+    },
+    {
+      "n1": 2120,
+      "n2": 2120,
+      "w": 0
+    },
+    {
+      "n1": 2120,
+      "n2": 2177,
+      "w": 141
+    },
+    {
+      "n1": 2120,
+      "n2": 2234,
+      "w": 73
+    },
+    {
+      "n1": 2120,
+      "n2": 2292,
+      "w": 182
+    },
+    {
+      "n1": 2120,
+      "n2": 2349,
+      "w": 33
+    },
+    {
+      "n1": 2120,
+      "n2": 2406,
+      "w": 76
+    },
+    {
+      "n1": 2120,
+      "n2": 2463,
+      "w": 85
+    },
+    {
+      "n1": 2120,
+      "n2": 2521,
+      "w": 156
+    },
+    {
+      "n1": 2120,
+      "n2": 2578,
+      "w": 105
+    },
+    {
+      "n1": 2120,
+      "n2": 2635,
+      "w": 115
+    },
+    {
+      "n1": 2120,
+      "n2": 2692,
+      "w": 158
+    },
+    {
+      "n1": 2177,
+      "n2": 782,
+      "w": 49
+    },
+    {
+      "n1": 2177,
+      "n2": 1655,
+      "w": 139
+    },
+    {
+      "n1": 2177,
+      "n2": 0,
+      "w": 90
+    },
+    {
+      "n1": 2177,
+      "n2": 57,
+      "w": 102
+    },
+    {
+      "n1": 2177,
+      "n2": 114,
+      "w": 142
+    },
+    {
+      "n1": 2177,
+      "n2": 171,
+      "w": 126
+    },
+    {
+      "n1": 2177,
+      "n2": 229,
+      "w": 129
+    },
+    {
+      "n1": 2177,
+      "n2": 286,
+      "w": 184
+    },
+    {
+      "n1": 2177,
+      "n2": 343,
+      "w": 161
+    },
+    {
+      "n1": 2177,
+      "n2": 400,
+      "w": 70
+    },
+    {
+      "n1": 2177,
+      "n2": 458,
+      "w": 18
+    },
+    {
+      "n1": 2177,
+      "n2": 515,
+      "w": 68
+    },
+    {
+      "n1": 2177,
+      "n2": 572,
+      "w": 88
+    },
+    {
+      "n1": 2177,
+      "n2": 629,
+      "w": 207
+    },
+    {
+      "n1": 2177,
+      "n2": 687,
+      "w": 198
+    },
+    {
+      "n1": 2177,
+      "n2": 744,
+      "w": 146
+    },
+    {
+      "n1": 2177,
+      "n2": 802,
+      "w": 53
+    },
+    {
+      "n1": 2177,
+      "n2": 859,
+      "w": 221
+    },
+    {
+      "n1": 2177,
+      "n2": 917,
+      "w": 161
+    },
+    {
+      "n1": 2177,
+      "n2": 974,
+      "w": 140
+    },
+    {
+      "n1": 2177,
+      "n2": 1031,
+      "w": 149
+    },
+    {
+      "n1": 2177,
+      "n2": 1088,
+      "w": 109
+    },
+    {
+      "n1": 2177,
+      "n2": 1146,
+      "w": 157
+    },
+    {
+      "n1": 2177,
+      "n2": 1203,
+      "w": 56
+    },
+    {
+      "n1": 2177,
+      "n2": 1260,
+      "w": 156
+    },
+    {
+      "n1": 2177,
+      "n2": 1317,
+      "w": 168
+    },
+    {
+      "n1": 2177,
+      "n2": 1375,
+      "w": 50
+    },
+    {
+      "n1": 2177,
+      "n2": 1432,
+      "w": 152
+    },
+    {
+      "n1": 2177,
+      "n2": 1489,
+      "w": 123
+    },
+    {
+      "n1": 2177,
+      "n2": 1546,
+      "w": 73
+    },
+    {
+      "n1": 2177,
+      "n2": 1604,
+      "w": 119
+    },
+    {
+      "n1": 2177,
+      "n2": 1662,
+      "w": 30
+    },
+    {
+      "n1": 2177,
+      "n2": 1719,
+      "w": 140
+    },
+    {
+      "n1": 2177,
+      "n2": 1776,
+      "w": 30
+    },
+    {
+      "n1": 2177,
+      "n2": 1834,
+      "w": 82
+    },
+    {
+      "n1": 2177,
+      "n2": 1891,
+      "w": 236
+    },
+    {
+      "n1": 2177,
+      "n2": 1948,
+      "w": 263
+    },
+    {
+      "n1": 2177,
+      "n2": 2005,
+      "w": 258
+    },
+    {
+      "n1": 2177,
+      "n2": 2063,
+      "w": 90
+    },
+    {
+      "n1": 2177,
+      "n2": 2120,
+      "w": 140
+    },
+    {
+      "n1": 2177,
+      "n2": 2177,
+      "w": 0
+    },
+    {
+      "n1": 2177,
+      "n2": 2234,
+      "w": 68
+    },
+    {
+      "n1": 2177,
+      "n2": 2292,
+      "w": 45
+    },
+    {
+      "n1": 2177,
+      "n2": 2349,
+      "w": 112
+    },
+    {
+      "n1": 2177,
+      "n2": 2406,
+      "w": 93
+    },
+    {
+      "n1": 2177,
+      "n2": 2463,
+      "w": 190
+    },
+    {
+      "n1": 2177,
+      "n2": 2521,
+      "w": 26
+    },
+    {
+      "n1": 2177,
+      "n2": 2578,
+      "w": 230
+    },
+    {
+      "n1": 2177,
+      "n2": 2635,
+      "w": 131
+    },
+    {
+      "n1": 2177,
+      "n2": 2692,
+      "w": 31
+    },
+    {
+      "n1": 2234,
+      "n2": 782,
+      "w": 69
+    },
+    {
+      "n1": 2234,
+      "n2": 1655,
+      "w": 83
+    },
+    {
+      "n1": 2234,
+      "n2": 0,
+      "w": 60
+    },
+    {
+      "n1": 2234,
+      "n2": 57,
+      "w": 98
+    },
+    {
+      "n1": 2234,
+      "n2": 114,
+      "w": 112
+    },
+    {
+      "n1": 2234,
+      "n2": 171,
+      "w": 85
+    },
+    {
+      "n1": 2234,
+      "n2": 229,
+      "w": 74
+    },
+    {
+      "n1": 2234,
+      "n2": 286,
+      "w": 145
+    },
+    {
+      "n1": 2234,
+      "n2": 343,
+      "w": 121
+    },
+    {
+      "n1": 2234,
+      "n2": 400,
+      "w": 14
+    },
+    {
+      "n1": 2234,
+      "n2": 458,
+      "w": 74
+    },
+    {
+      "n1": 2234,
+      "n2": 515,
+      "w": 42
+    },
+    {
+      "n1": 2234,
+      "n2": 572,
+      "w": 32
+    },
+    {
+      "n1": 2234,
+      "n2": 629,
+      "w": 150
+    },
+    {
+      "n1": 2234,
+      "n2": 687,
+      "w": 151
+    },
+    {
+      "n1": 2234,
+      "n2": 744,
+      "w": 79
+    },
+    {
+      "n1": 2234,
+      "n2": 802,
+      "w": 58
+    },
+    {
+      "n1": 2234,
+      "n2": 859,
+      "w": 155
+    },
+    {
+      "n1": 2234,
+      "n2": 917,
+      "w": 105
+    },
+    {
+      "n1": 2234,
+      "n2": 974,
+      "w": 98
+    },
+    {
+      "n1": 2234,
+      "n2": 1031,
+      "w": 92
+    },
+    {
+      "n1": 2234,
+      "n2": 1088,
+      "w": 95
+    },
+    {
+      "n1": 2234,
+      "n2": 1146,
+      "w": 117
+    },
+    {
+      "n1": 2234,
+      "n2": 1203,
+      "w": 111
+    },
+    {
+      "n1": 2234,
+      "n2": 1260,
+      "w": 101
+    },
+    {
+      "n1": 2234,
+      "n2": 1317,
+      "w": 126
+    },
+    {
+      "n1": 2234,
+      "n2": 1375,
+      "w": 109
+    },
+    {
+      "n1": 2234,
+      "n2": 1432,
+      "w": 95
+    },
+    {
+      "n1": 2234,
+      "n2": 1489,
+      "w": 69
+    },
+    {
+      "n1": 2234,
+      "n2": 1546,
+      "w": 66
+    },
+    {
+      "n1": 2234,
+      "n2": 1604,
+      "w": 53
+    },
+    {
+      "n1": 2234,
+      "n2": 1662,
+      "w": 45
+    },
+    {
+      "n1": 2234,
+      "n2": 1719,
+      "w": 97
+    },
+    {
+      "n1": 2234,
+      "n2": 1776,
+      "w": 51
+    },
+    {
+      "n1": 2234,
+      "n2": 1834,
+      "w": 46
+    },
+    {
+      "n1": 2234,
+      "n2": 1891,
+      "w": 179
+    },
+    {
+      "n1": 2234,
+      "n2": 1948,
+      "w": 198
+    },
+    {
+      "n1": 2234,
+      "n2": 2005,
+      "w": 192
+    },
+    {
+      "n1": 2234,
+      "n2": 2063,
+      "w": 92
+    },
+    {
+      "n1": 2234,
+      "n2": 2120,
+      "w": 73
+    },
+    {
+      "n1": 2234,
+      "n2": 2177,
+      "w": 68
+    },
+    {
+      "n1": 2234,
+      "n2": 2234,
+      "w": 0
+    },
+    {
+      "n1": 2234,
+      "n2": 2292,
+      "w": 110
+    },
+    {
+      "n1": 2234,
+      "n2": 2349,
+      "w": 45
+    },
+    {
+      "n1": 2234,
+      "n2": 2406,
+      "w": 57
+    },
+    {
+      "n1": 2234,
+      "n2": 2463,
+      "w": 133
+    },
+    {
+      "n1": 2234,
+      "n2": 2521,
+      "w": 84
+    },
+    {
+      "n1": 2234,
+      "n2": 2578,
+      "w": 174
+    },
+    {
+      "n1": 2234,
+      "n2": 2635,
+      "w": 106
+    },
+    {
+      "n1": 2234,
+      "n2": 2692,
+      "w": 86
+    },
+    {
+      "n1": 2292,
+      "n2": 782,
+      "w": 62
+    },
+    {
+      "n1": 2292,
+      "n2": 1655,
+      "w": 171
+    },
+    {
+      "n1": 2292,
+      "n2": 0,
+      "w": 111
+    },
+    {
+      "n1": 2292,
+      "n2": 57,
+      "w": 111
+    },
+    {
+      "n1": 2292,
+      "n2": 114,
+      "w": 160
+    },
+    {
+      "n1": 2292,
+      "n2": 171,
+      "w": 146
+    },
+    {
+      "n1": 2292,
+      "n2": 229,
+      "w": 157
+    },
+    {
+      "n1": 2292,
+      "n2": 286,
+      "w": 203
+    },
+    {
+      "n1": 2292,
+      "n2": 343,
+      "w": 180
+    },
+    {
+      "n1": 2292,
+      "n2": 400,
+      "w": 111
+    },
+    {
+      "n1": 2292,
+      "n2": 458,
+      "w": 55
+    },
+    {
+      "n1": 2292,
+      "n2": 515,
+      "w": 98
+    },
+    {
+      "n1": 2292,
+      "n2": 572,
+      "w": 127
+    },
+    {
+      "n1": 2292,
+      "n2": 629,
+      "w": 229
+    },
+    {
+      "n1": 2292,
+      "n2": 687,
+      "w": 217
+    },
+    {
+      "n1": 2292,
+      "n2": 744,
+      "w": 187
+    },
+    {
+      "n1": 2292,
+      "n2": 802,
+      "w": 70
+    },
+    {
+      "n1": 2292,
+      "n2": 859,
+      "w": 252
+    },
+    {
+      "n1": 2292,
+      "n2": 917,
+      "w": 192
+    },
+    {
+      "n1": 2292,
+      "n2": 974,
+      "w": 159
+    },
+    {
+      "n1": 2292,
+      "n2": 1031,
+      "w": 174
+    },
+    {
+      "n1": 2292,
+      "n2": 1088,
+      "w": 119
+    },
+    {
+      "n1": 2292,
+      "n2": 1146,
+      "w": 177
+    },
+    {
+      "n1": 2292,
+      "n2": 1203,
+      "w": 34
+    },
+    {
+      "n1": 2292,
+      "n2": 1260,
+      "w": 177
+    },
+    {
+      "n1": 2292,
+      "n2": 1317,
+      "w": 187
+    },
+    {
+      "n1": 2292,
+      "n2": 1375,
+      "w": 26
+    },
+    {
+      "n1": 2292,
+      "n2": 1432,
+      "w": 183
+    },
+    {
+      "n1": 2292,
+      "n2": 1489,
+      "w": 158
+    },
+    {
+      "n1": 2292,
+      "n2": 1546,
+      "w": 89
+    },
+    {
+      "n1": 2292,
+      "n2": 1604,
+      "w": 157
+    },
+    {
+      "n1": 2292,
+      "n2": 1662,
+      "w": 73
+    },
+    {
+      "n1": 2292,
+      "n2": 1719,
+      "w": 160
+    },
+    {
+      "n1": 2292,
+      "n2": 1776,
+      "w": 65
+    },
+    {
+      "n1": 2292,
+      "n2": 1834,
+      "w": 108
+    },
+    {
+      "n1": 2292,
+      "n2": 1891,
+      "w": 258
+    },
+    {
+      "n1": 2292,
+      "n2": 1948,
+      "w": 294
+    },
+    {
+      "n1": 2292,
+      "n2": 2005,
+      "w": 288
+    },
+    {
+      "n1": 2292,
+      "n2": 2063,
+      "w": 105
+    },
+    {
+      "n1": 2292,
+      "n2": 2120,
+      "w": 181
+    },
+    {
+      "n1": 2292,
+      "n2": 2177,
+      "w": 45
+    },
+    {
+      "n1": 2292,
+      "n2": 2234,
+      "w": 110
+    },
+    {
+      "n1": 2292,
+      "n2": 2292,
+      "w": 0
+    },
+    {
+      "n1": 2292,
+      "n2": 2349,
+      "w": 153
+    },
+    {
+      "n1": 2292,
+      "n2": 2406,
+      "w": 116
+    },
+    {
+      "n1": 2292,
+      "n2": 2463,
+      "w": 212
+    },
+    {
+      "n1": 2292,
+      "n2": 2521,
+      "w": 51
+    },
+    {
+      "n1": 2292,
+      "n2": 2578,
+      "w": 261
+    },
+    {
+      "n1": 2292,
+      "n2": 2635,
+      "w": 148
+    },
+    {
+      "n1": 2292,
+      "n2": 2692,
+      "w": 58
+    },
+    {
+      "n1": 2349,
+      "n2": 782,
+      "w": 102
+    },
+    {
+      "n1": 2349,
+      "n2": 1655,
+      "w": 50
+    },
+    {
+      "n1": 2349,
+      "n2": 0,
+      "w": 63
+    },
+    {
+      "n1": 2349,
+      "n2": 57,
+      "w": 107
+    },
+    {
+      "n1": 2349,
+      "n2": 114,
+      "w": 103
+    },
+    {
+      "n1": 2349,
+      "n2": 171,
+      "w": 70
+    },
+    {
+      "n1": 2349,
+      "n2": 229,
+      "w": 45
+    },
+    {
+      "n1": 2349,
+      "n2": 286,
+      "w": 116
+    },
+    {
+      "n1": 2349,
+      "n2": 343,
+      "w": 93
+    },
+    {
+      "n1": 2349,
+      "n2": 400,
+      "w": 45
+    },
+    {
+      "n1": 2349,
+      "n2": 458,
+      "w": 119
+    },
+    {
+      "n1": 2349,
+      "n2": 515,
+      "w": 61
+    },
+    {
+      "n1": 2349,
+      "n2": 572,
+      "w": 31
+    },
+    {
+      "n1": 2349,
+      "n2": 629,
+      "w": 115
+    },
+    {
+      "n1": 2349,
+      "n2": 687,
+      "w": 121
+    },
+    {
+      "n1": 2349,
+      "n2": 744,
+      "w": 40
+    },
+    {
+      "n1": 2349,
+      "n2": 802,
+      "w": 89
+    },
+    {
+      "n1": 2349,
+      "n2": 859,
+      "w": 112
+    },
+    {
+      "n1": 2349,
+      "n2": 917,
+      "w": 66
+    },
+    {
+      "n1": 2349,
+      "n2": 974,
+      "w": 73
+    },
+    {
+      "n1": 2349,
+      "n2": 1031,
+      "w": 63
+    },
+    {
+      "n1": 2349,
+      "n2": 1088,
+      "w": 101
+    },
+    {
+      "n1": 2349,
+      "n2": 1146,
+      "w": 89
+    },
+    {
+      "n1": 2349,
+      "n2": 1203,
+      "w": 148
+    },
+    {
+      "n1": 2349,
+      "n2": 1260,
+      "w": 72
+    },
+    {
+      "n1": 2349,
+      "n2": 1317,
+      "w": 97
+    },
+    {
+      "n1": 2349,
+      "n2": 1375,
+      "w": 149
+    },
+    {
+      "n1": 2349,
+      "n2": 1432,
+      "w": 56
+    },
+    {
+      "n1": 2349,
+      "n2": 1489,
+      "w": 39
+    },
+    {
+      "n1": 2349,
+      "n2": 1546,
+      "w": 86
+    },
+    {
+      "n1": 2349,
+      "n2": 1604,
+      "w": 19
+    },
+    {
+      "n1": 2349,
+      "n2": 1662,
+      "w": 89
+    },
+    {
+      "n1": 2349,
+      "n2": 1719,
+      "w": 71
+    },
+    {
+      "n1": 2349,
+      "n2": 1776,
+      "w": 90
+    },
+    {
+      "n1": 2349,
+      "n2": 1834,
+      "w": 56
+    },
+    {
+      "n1": 2349,
+      "n2": 1891,
+      "w": 140
+    },
+    {
+      "n1": 2349,
+      "n2": 1948,
+      "w": 154
+    },
+    {
+      "n1": 2349,
+      "n2": 2005,
+      "w": 149
+    },
+    {
+      "n1": 2349,
+      "n2": 2063,
+      "w": 105
+    },
+    {
+      "n1": 2349,
+      "n2": 2120,
+      "w": 32
+    },
+    {
+      "n1": 2349,
+      "n2": 2177,
+      "w": 112
+    },
+    {
+      "n1": 2349,
+      "n2": 2234,
+      "w": 45
+    },
+    {
+      "n1": 2349,
+      "n2": 2292,
+      "w": 154
+    },
+    {
+      "n1": 2349,
+      "n2": 2349,
+      "w": 0
+    },
+    {
+      "n1": 2349,
+      "n2": 2406,
+      "w": 58
+    },
+    {
+      "n1": 2349,
+      "n2": 2463,
+      "w": 100
+    },
+    {
+      "n1": 2349,
+      "n2": 2521,
+      "w": 129
+    },
+    {
+      "n1": 2349,
+      "n2": 2578,
+      "w": 132
+    },
+    {
+      "n1": 2349,
+      "n2": 2635,
+      "w": 102
+    },
+    {
+      "n1": 2349,
+      "n2": 2692,
+      "w": 131
+    },
+    {
+      "n1": 2406,
+      "n2": 782,
+      "w": 61
+    },
+    {
+      "n1": 2406,
+      "n2": 1655,
+      "w": 59
+    },
+    {
+      "n1": 2406,
+      "n2": 0,
+      "w": 7
+    },
+    {
+      "n1": 2406,
+      "n2": 57,
+      "w": 51
+    },
+    {
+      "n1": 2406,
+      "n2": 114,
+      "w": 56
+    },
+    {
+      "n1": 2406,
+      "n2": 171,
+      "w": 34
+    },
+    {
+      "n1": 2406,
+      "n2": 229,
+      "w": 45
+    },
+    {
+      "n1": 2406,
+      "n2": 286,
+      "w": 96
+    },
+    {
+      "n1": 2406,
+      "n2": 343,
+      "w": 73
+    },
+    {
+      "n1": 2406,
+      "n2": 400,
+      "w": 43
+    },
+    {
+      "n1": 2406,
+      "n2": 458,
+      "w": 109
+    },
+    {
+      "n1": 2406,
+      "n2": 515,
+      "w": 28
+    },
+    {
+      "n1": 2406,
+      "n2": 572,
+      "w": 33
+    },
+    {
+      "n1": 2406,
+      "n2": 629,
+      "w": 116
+    },
+    {
+      "n1": 2406,
+      "n2": 687,
+      "w": 110
+    },
+    {
+      "n1": 2406,
+      "n2": 744,
+      "w": 87
+    },
+    {
+      "n1": 2406,
+      "n2": 802,
+      "w": 49
+    },
+    {
+      "n1": 2406,
+      "n2": 859,
+      "w": 139
+    },
+    {
+      "n1": 2406,
+      "n2": 917,
+      "w": 79
+    },
+    {
+      "n1": 2406,
+      "n2": 974,
+      "w": 52
+    },
+    {
+      "n1": 2406,
+      "n2": 1031,
+      "w": 61
+    },
+    {
+      "n1": 2406,
+      "n2": 1088,
+      "w": 46
+    },
+    {
+      "n1": 2406,
+      "n2": 1146,
+      "w": 70
+    },
+    {
+      "n1": 2406,
+      "n2": 1203,
+      "w": 107
+    },
+    {
+      "n1": 2406,
+      "n2": 1260,
+      "w": 64
+    },
+    {
+      "n1": 2406,
+      "n2": 1317,
+      "w": 80
+    },
+    {
+      "n1": 2406,
+      "n2": 1375,
+      "w": 111
+    },
+    {
+      "n1": 2406,
+      "n2": 1432,
+      "w": 70
+    },
+    {
+      "n1": 2406,
+      "n2": 1489,
+      "w": 45
+    },
+    {
+      "n1": 2406,
+      "n2": 1546,
+      "w": 38
+    },
+    {
+      "n1": 2406,
+      "n2": 1604,
+      "w": 48
+    },
+    {
+      "n1": 2406,
+      "n2": 1662,
+      "w": 87
+    },
+    {
+      "n1": 2406,
+      "n2": 1719,
+      "w": 50
+    },
+    {
+      "n1": 2406,
+      "n2": 1776,
+      "w": 66
+    },
+    {
+      "n1": 2406,
+      "n2": 1834,
+      "w": 13
+    },
+    {
+      "n1": 2406,
+      "n2": 1891,
+      "w": 145
+    },
+    {
+      "n1": 2406,
+      "n2": 1948,
+      "w": 181
+    },
+    {
+      "n1": 2406,
+      "n2": 2005,
+      "w": 175
+    },
+    {
+      "n1": 2406,
+      "n2": 2063,
+      "w": 49
+    },
+    {
+      "n1": 2406,
+      "n2": 2120,
+      "w": 77
+    },
+    {
+      "n1": 2406,
+      "n2": 2177,
+      "w": 94
+    },
+    {
+      "n1": 2406,
+      "n2": 2234,
+      "w": 57
+    },
+    {
+      "n1": 2406,
+      "n2": 2292,
+      "w": 117
+    },
+    {
+      "n1": 2406,
+      "n2": 2349,
+      "w": 57
+    },
+    {
+      "n1": 2406,
+      "n2": 2406,
+      "w": 0
+    },
+    {
+      "n1": 2406,
+      "n2": 2463,
+      "w": 99
+    },
+    {
+      "n1": 2406,
+      "n2": 2521,
+      "w": 119
+    },
+    {
+      "n1": 2406,
+      "n2": 2578,
+      "w": 148
+    },
+    {
+      "n1": 2406,
+      "n2": 2635,
+      "w": 51
+    },
+    {
+      "n1": 2406,
+      "n2": 2692,
+      "w": 121
+    },
+    {
+      "n1": 2463,
+      "n2": 782,
+      "w": 155
+    },
+    {
+      "n1": 2463,
+      "n2": 1655,
+      "w": 56
+    },
+    {
+      "n1": 2463,
+      "n2": 0,
+      "w": 101
+    },
+    {
+      "n1": 2463,
+      "n2": 57,
+      "w": 128
+    },
+    {
+      "n1": 2463,
+      "n2": 114,
+      "w": 82
+    },
+    {
+      "n1": 2463,
+      "n2": 171,
+      "w": 72
+    },
+    {
+      "n1": 2463,
+      "n2": 229,
+      "w": 63
+    },
+    {
+      "n1": 2463,
+      "n2": 286,
+      "w": 35
+    },
+    {
+      "n1": 2463,
+      "n2": 343,
+      "w": 41
+    },
+    {
+      "n1": 2463,
+      "n2": 400,
+      "w": 127
+    },
+    {
+      "n1": 2463,
+      "n2": 458,
+      "w": 204
+    },
+    {
+      "n1": 2463,
+      "n2": 515,
+      "w": 125
+    },
+    {
+      "n1": 2463,
+      "n2": 572,
+      "w": 107
+    },
+    {
+      "n1": 2463,
+      "n2": 629,
+      "w": 22
+    },
+    {
+      "n1": 2463,
+      "n2": 687,
+      "w": 34
+    },
+    {
+      "n1": 2463,
+      "n2": 744,
+      "w": 97
+    },
+    {
+      "n1": 2463,
+      "n2": 802,
+      "w": 143
+    },
+    {
+      "n1": 2463,
+      "n2": 859,
+      "w": 83
+    },
+    {
+      "n1": 2463,
+      "n2": 917,
+      "w": 38
+    },
+    {
+      "n1": 2463,
+      "n2": 974,
+      "w": 55
+    },
+    {
+      "n1": 2463,
+      "n2": 1031,
+      "w": 43
+    },
+    {
+      "n1": 2463,
+      "n2": 1088,
+      "w": 118
+    },
+    {
+      "n1": 2463,
+      "n2": 1146,
+      "w": 41
+    },
+    {
+      "n1": 2463,
+      "n2": 1203,
+      "w": 201
+    },
+    {
+      "n1": 2463,
+      "n2": 1260,
+      "w": 38
+    },
+    {
+      "n1": 2463,
+      "n2": 1317,
+      "w": 34
+    },
+    {
+      "n1": 2463,
+      "n2": 1375,
+      "w": 205
+    },
+    {
+      "n1": 2463,
+      "n2": 1432,
+      "w": 45
+    },
+    {
+      "n1": 2463,
+      "n2": 1489,
+      "w": 66
+    },
+    {
+      "n1": 2463,
+      "n2": 1546,
+      "w": 133
+    },
+    {
+      "n1": 2463,
+      "n2": 1604,
+      "w": 85
+    },
+    {
+      "n1": 2463,
+      "n2": 1662,
+      "w": 178
+    },
+    {
+      "n1": 2463,
+      "n2": 1719,
+      "w": 56
+    },
+    {
+      "n1": 2463,
+      "n2": 1776,
+      "w": 162
+    },
+    {
+      "n1": 2463,
+      "n2": 1834,
+      "w": 112
+    },
+    {
+      "n1": 2463,
+      "n2": 1891,
+      "w": 53
+    },
+    {
+      "n1": 2463,
+      "n2": 1948,
+      "w": 123
+    },
+    {
+      "n1": 2463,
+      "n2": 2005,
+      "w": 118
+    },
+    {
+      "n1": 2463,
+      "n2": 2063,
+      "w": 134
+    },
+    {
+      "n1": 2463,
+      "n2": 2120,
+      "w": 85
+    },
+    {
+      "n1": 2463,
+      "n2": 2177,
+      "w": 191
+    },
+    {
+      "n1": 2463,
+      "n2": 2234,
+      "w": 134
+    },
+    {
+      "n1": 2463,
+      "n2": 2292,
+      "w": 211
+    },
+    {
+      "n1": 2463,
+      "n2": 2349,
+      "w": 100
+    },
+    {
+      "n1": 2463,
+      "n2": 2406,
+      "w": 99
+    },
+    {
+      "n1": 2463,
+      "n2": 2463,
+      "w": 0
+    },
+    {
+      "n1": 2463,
+      "n2": 2521,
+      "w": 214
+    },
+    {
+      "n1": 2463,
+      "n2": 2578,
+      "w": 74
+    },
+    {
+      "n1": 2463,
+      "n2": 2635,
+      "w": 94
+    },
+    {
+      "n1": 2463,
+      "n2": 2692,
+      "w": 216
+    },
+    {
+      "n1": 2521,
+      "n2": 782,
+      "w": 74
+    },
+    {
+      "n1": 2521,
+      "n2": 1655,
+      "w": 162
+    },
+    {
+      "n1": 2521,
+      "n2": 0,
+      "w": 115
+    },
+    {
+      "n1": 2521,
+      "n2": 57,
+      "w": 128
+    },
+    {
+      "n1": 2521,
+      "n2": 114,
+      "w": 167
+    },
+    {
+      "n1": 2521,
+      "n2": 171,
+      "w": 150
+    },
+    {
+      "n1": 2521,
+      "n2": 229,
+      "w": 151
+    },
+    {
+      "n1": 2521,
+      "n2": 286,
+      "w": 208
+    },
+    {
+      "n1": 2521,
+      "n2": 343,
+      "w": 185
+    },
+    {
+      "n1": 2521,
+      "n2": 400,
+      "w": 90
+    },
+    {
+      "n1": 2521,
+      "n2": 458,
+      "w": 11
+    },
+    {
+      "n1": 2521,
+      "n2": 515,
+      "w": 92
+    },
+    {
+      "n1": 2521,
+      "n2": 572,
+      "w": 110
+    },
+    {
+      "n1": 2521,
+      "n2": 629,
+      "w": 230
+    },
+    {
+      "n1": 2521,
+      "n2": 687,
+      "w": 223
+    },
+    {
+      "n1": 2521,
+      "n2": 744,
+      "w": 162
+    },
+    {
+      "n1": 2521,
+      "n2": 802,
+      "w": 78
+    },
+    {
+      "n1": 2521,
+      "n2": 859,
+      "w": 239
+    },
+    {
+      "n1": 2521,
+      "n2": 917,
+      "w": 184
+    },
+    {
+      "n1": 2521,
+      "n2": 974,
+      "w": 165
+    },
+    {
+      "n1": 2521,
+      "n2": 1031,
+      "w": 172
+    },
+    {
+      "n1": 2521,
+      "n2": 1088,
+      "w": 135
+    },
+    {
+      "n1": 2521,
+      "n2": 1146,
+      "w": 182
+    },
+    {
+      "n1": 2521,
+      "n2": 1203,
+      "w": 69
+    },
+    {
+      "n1": 2521,
+      "n2": 1260,
+      "w": 179
+    },
+    {
+      "n1": 2521,
+      "n2": 1317,
+      "w": 193
+    },
+    {
+      "n1": 2521,
+      "n2": 1375,
+      "w": 63
+    },
+    {
+      "n1": 2521,
+      "n2": 1432,
+      "w": 175
+    },
+    {
+      "n1": 2521,
+      "n2": 1489,
+      "w": 146
+    },
+    {
+      "n1": 2521,
+      "n2": 1546,
+      "w": 98
+    },
+    {
+      "n1": 2521,
+      "n2": 1604,
+      "w": 137
+    },
+    {
+      "n1": 2521,
+      "n2": 1662,
+      "w": 43
+    },
+    {
+      "n1": 2521,
+      "n2": 1719,
+      "w": 165
+    },
+    {
+      "n1": 2521,
+      "n2": 1776,
+      "w": 55
+    },
+    {
+      "n1": 2521,
+      "n2": 1834,
+      "w": 106
+    },
+    {
+      "n1": 2521,
+      "n2": 1891,
+      "w": 259
+    },
+    {
+      "n1": 2521,
+      "n2": 1948,
+      "w": 281
+    },
+    {
+      "n1": 2521,
+      "n2": 2005,
+      "w": 276
+    },
+    {
+      "n1": 2521,
+      "n2": 2063,
+      "w": 116
+    },
+    {
+      "n1": 2521,
+      "n2": 2120,
+      "w": 156
+    },
+    {
+      "n1": 2521,
+      "n2": 2177,
+      "w": 26
+    },
+    {
+      "n1": 2521,
+      "n2": 2234,
+      "w": 84
+    },
+    {
+      "n1": 2521,
+      "n2": 2292,
+      "w": 51
+    },
+    {
+      "n1": 2521,
+      "n2": 2349,
+      "w": 129
+    },
+    {
+      "n1": 2521,
+      "n2": 2406,
+      "w": 118
+    },
+    {
+      "n1": 2521,
+      "n2": 2463,
+      "w": 213
+    },
+    {
+      "n1": 2521,
+      "n2": 2521,
+      "w": 0
+    },
+    {
+      "n1": 2521,
+      "n2": 2578,
+      "w": 253
+    },
+    {
+      "n1": 2521,
+      "n2": 2635,
+      "w": 156
+    },
+    {
+      "n1": 2521,
+      "n2": 2692,
+      "w": 7
+    },
+    {
+      "n1": 2578,
+      "n2": 782,
+      "w": 205
+    },
+    {
+      "n1": 2578,
+      "n2": 1655,
+      "w": 93
+    },
+    {
+      "n1": 2578,
+      "n2": 0,
+      "w": 150
+    },
+    {
+      "n1": 2578,
+      "n2": 57,
+      "w": 187
+    },
+    {
+      "n1": 2578,
+      "n2": 114,
+      "w": 150
+    },
+    {
+      "n1": 2578,
+      "n2": 171,
+      "w": 129
+    },
+    {
+      "n1": 2578,
+      "n2": 229,
+      "w": 104
+    },
+    {
+      "n1": 2578,
+      "n2": 286,
+      "w": 98
+    },
+    {
+      "n1": 2578,
+      "n2": 343,
+      "w": 110
+    },
+    {
+      "n1": 2578,
+      "n2": 400,
+      "w": 168
+    },
+    {
+      "n1": 2578,
+      "n2": 458,
+      "w": 244
+    },
+    {
+      "n1": 2578,
+      "n2": 515,
+      "w": 169
+    },
+    {
+      "n1": 2578,
+      "n2": 572,
+      "w": 147
+    },
+    {
+      "n1": 2578,
+      "n2": 629,
+      "w": 52
+    },
+    {
+      "n1": 2578,
+      "n2": 687,
+      "w": 92
+    },
+    {
+      "n1": 2578,
+      "n2": 744,
+      "w": 114
+    },
+    {
+      "n1": 2578,
+      "n2": 802,
+      "w": 193
+    },
+    {
+      "n1": 2578,
+      "n2": 859,
+      "w": 38
+    },
+    {
+      "n1": 2578,
+      "n2": 917,
+      "w": 71
+    },
+    {
+      "n1": 2578,
+      "n2": 974,
+      "w": 120
+    },
+    {
+      "n1": 2578,
+      "n2": 1031,
+      "w": 93
+    },
+    {
+      "n1": 2578,
+      "n2": 1088,
+      "w": 180
+    },
+    {
+      "n1": 2578,
+      "n2": 1146,
+      "w": 110
+    },
+    {
+      "n1": 2578,
+      "n2": 1203,
+      "w": 251
+    },
+    {
+      "n1": 2578,
+      "n2": 1260,
+      "w": 100
+    },
+    {
+      "n1": 2578,
+      "n2": 1317,
+      "w": 103
+    },
+    {
+      "n1": 2578,
+      "n2": 1375,
+      "w": 255
+    },
+    {
+      "n1": 2578,
+      "n2": 1432,
+      "w": 81
+    },
+    {
+      "n1": 2578,
+      "n2": 1489,
+      "w": 107
+    },
+    {
+      "n1": 2578,
+      "n2": 1546,
+      "w": 182
+    },
+    {
+      "n1": 2578,
+      "n2": 1604,
+      "w": 122
+    },
+    {
+      "n1": 2578,
+      "n2": 1662,
+      "w": 219
+    },
+    {
+      "n1": 2578,
+      "n2": 1719,
+      "w": 119
+    },
+    {
+      "n1": 2578,
+      "n2": 1776,
+      "w": 205
+    },
+    {
+      "n1": 2578,
+      "n2": 1834,
+      "w": 158
+    },
+    {
+      "n1": 2578,
+      "n2": 1891,
+      "w": 46
+    },
+    {
+      "n1": 2578,
+      "n2": 1948,
+      "w": 54
+    },
+    {
+      "n1": 2578,
+      "n2": 2005,
+      "w": 55
+    },
+    {
+      "n1": 2578,
+      "n2": 2063,
+      "w": 191
+    },
+    {
+      "n1": 2578,
+      "n2": 2120,
+      "w": 105
+    },
+    {
+      "n1": 2578,
+      "n2": 2177,
+      "w": 231
+    },
+    {
+      "n1": 2578,
+      "n2": 2234,
+      "w": 175
+    },
+    {
+      "n1": 2578,
+      "n2": 2292,
+      "w": 261
+    },
+    {
+      "n1": 2578,
+      "n2": 2349,
+      "w": 132
+    },
+    {
+      "n1": 2578,
+      "n2": 2406,
+      "w": 149
+    },
+    {
+      "n1": 2578,
+      "n2": 2463,
+      "w": 74
+    },
+    {
+      "n1": 2578,
+      "n2": 2521,
+      "w": 254
+    },
+    {
+      "n1": 2578,
+      "n2": 2578,
+      "w": 0
+    },
+    {
+      "n1": 2578,
+      "n2": 2635,
+      "w": 159
+    },
+    {
+      "n1": 2578,
+      "n2": 2692,
+      "w": 256
+    },
+    {
+      "n1": 2635,
+      "n2": 782,
+      "w": 86
+    },
+    {
+      "n1": 2635,
+      "n2": 1655,
+      "w": 75
+    },
+    {
+      "n1": 2635,
+      "n2": 0,
+      "w": 45
+    },
+    {
+      "n1": 2635,
+      "n2": 57,
+      "w": 39
+    },
+    {
+      "n1": 2635,
+      "n2": 114,
+      "w": 12
+    },
+    {
+      "n1": 2635,
+      "n2": 171,
+      "w": 37
+    },
+    {
+      "n1": 2635,
+      "n2": 229,
+      "w": 69
+    },
+    {
+      "n1": 2635,
+      "n2": 286,
+      "w": 70
+    },
+    {
+      "n1": 2635,
+      "n2": 343,
+      "w": 54
+    },
+    {
+      "n1": 2635,
+      "n2": 400,
+      "w": 92
+    },
+    {
+      "n1": 2635,
+      "n2": 458,
+      "w": 146
+    },
+    {
+      "n1": 2635,
+      "n2": 515,
+      "w": 70
+    },
+    {
+      "n1": 2635,
+      "n2": 572,
+      "w": 82
+    },
+    {
+      "n1": 2635,
+      "n2": 629,
+      "w": 110
+    },
+    {
+      "n1": 2635,
+      "n2": 687,
+      "w": 85
+    },
+    {
+      "n1": 2635,
+      "n2": 744,
+      "w": 127
+    },
+    {
+      "n1": 2635,
+      "n2": 802,
+      "w": 80
+    },
+    {
+      "n1": 2635,
+      "n2": 859,
+      "w": 153
+    },
+    {
+      "n1": 2635,
+      "n2": 917,
+      "w": 92
+    },
+    {
+      "n1": 2635,
+      "n2": 974,
+      "w": 40
+    },
+    {
+      "n1": 2635,
+      "n2": 1031,
+      "w": 67
+    },
+    {
+      "n1": 2635,
+      "n2": 1088,
+      "w": 30
+    },
+    {
+      "n1": 2635,
+      "n2": 1146,
+      "w": 54
+    },
+    {
+      "n1": 2635,
+      "n2": 1203,
+      "w": 125
+    },
+    {
+      "n1": 2635,
+      "n2": 1260,
+      "w": 61
+    },
+    {
+      "n1": 2635,
+      "n2": 1317,
+      "w": 60
+    },
+    {
+      "n1": 2635,
+      "n2": 1375,
+      "w": 131
+    },
+    {
+      "n1": 2635,
+      "n2": 1432,
+      "w": 84
+    },
+    {
+      "n1": 2635,
+      "n2": 1489,
+      "w": 71
+    },
+    {
+      "n1": 2635,
+      "n2": 1546,
+      "w": 63
+    },
+    {
+      "n1": 2635,
+      "n2": 1604,
+      "w": 87
+    },
+    {
+      "n1": 2635,
+      "n2": 1662,
+      "w": 129
+    },
+    {
+      "n1": 2635,
+      "n2": 1719,
+      "w": 41
+    },
+    {
+      "n1": 2635,
+      "n2": 1776,
+      "w": 102
+    },
+    {
+      "n1": 2635,
+      "n2": 1834,
+      "w": 59
+    },
+    {
+      "n1": 2635,
+      "n2": 1891,
+      "w": 137
+    },
+    {
+      "n1": 2635,
+      "n2": 1948,
+      "w": 195
+    },
+    {
+      "n1": 2635,
+      "n2": 2005,
+      "w": 189
+    },
+    {
+      "n1": 2635,
+      "n2": 2063,
+      "w": 53
+    },
+    {
+      "n1": 2635,
+      "n2": 2120,
+      "w": 116
+    },
+    {
+      "n1": 2635,
+      "n2": 2177,
+      "w": 131
+    },
+    {
+      "n1": 2635,
+      "n2": 2234,
+      "w": 106
+    },
+    {
+      "n1": 2635,
+      "n2": 2292,
+      "w": 147
+    },
+    {
+      "n1": 2635,
+      "n2": 2349,
+      "w": 102
+    },
+    {
+      "n1": 2635,
+      "n2": 2406,
+      "w": 51
+    },
+    {
+      "n1": 2635,
+      "n2": 2463,
+      "w": 94
+    },
+    {
+      "n1": 2635,
+      "n2": 2521,
+      "w": 156
+    },
+    {
+      "n1": 2635,
+      "n2": 2578,
+      "w": 159
+    },
+    {
+      "n1": 2635,
+      "n2": 2635,
+      "w": 0
+    },
+    {
+      "n1": 2635,
+      "n2": 2692,
+      "w": 158
+    },
+    {
+      "n1": 2692,
+      "n2": 782,
+      "w": 77
+    },
+    {
+      "n1": 2692,
+      "n2": 1655,
+      "w": 164
+    },
+    {
+      "n1": 2692,
+      "n2": 0,
+      "w": 117
+    },
+    {
+      "n1": 2692,
+      "n2": 57,
+      "w": 130
+    },
+    {
+      "n1": 2692,
+      "n2": 114,
+      "w": 169
+    },
+    {
+      "n1": 2692,
+      "n2": 171,
+      "w": 152
+    },
+    {
+      "n1": 2692,
+      "n2": 229,
+      "w": 153
+    },
+    {
+      "n1": 2692,
+      "n2": 286,
+      "w": 210
+    },
+    {
+      "n1": 2692,
+      "n2": 343,
+      "w": 187
+    },
+    {
+      "n1": 2692,
+      "n2": 400,
+      "w": 92
+    },
+    {
+      "n1": 2692,
+      "n2": 458,
+      "w": 12
+    },
+    {
+      "n1": 2692,
+      "n2": 515,
+      "w": 94
+    },
+    {
+      "n1": 2692,
+      "n2": 572,
+      "w": 112
+    },
+    {
+      "n1": 2692,
+      "n2": 629,
+      "w": 232
+    },
+    {
+      "n1": 2692,
+      "n2": 687,
+      "w": 225
+    },
+    {
+      "n1": 2692,
+      "n2": 744,
+      "w": 164
+    },
+    {
+      "n1": 2692,
+      "n2": 802,
+      "w": 80
+    },
+    {
+      "n1": 2692,
+      "n2": 859,
+      "w": 241
+    },
+    {
+      "n1": 2692,
+      "n2": 917,
+      "w": 185
+    },
+    {
+      "n1": 2692,
+      "n2": 974,
+      "w": 167
+    },
+    {
+      "n1": 2692,
+      "n2": 1031,
+      "w": 174
+    },
+    {
+      "n1": 2692,
+      "n2": 1088,
+      "w": 137
+    },
+    {
+      "n1": 2692,
+      "n2": 1146,
+      "w": 184
+    },
+    {
+      "n1": 2692,
+      "n2": 1203,
+      "w": 77
+    },
+    {
+      "n1": 2692,
+      "n2": 1260,
+      "w": 181
+    },
+    {
+      "n1": 2692,
+      "n2": 1317,
+      "w": 195
+    },
+    {
+      "n1": 2692,
+      "n2": 1375,
+      "w": 70
+    },
+    {
+      "n1": 2692,
+      "n2": 1432,
+      "w": 177
+    },
+    {
+      "n1": 2692,
+      "n2": 1489,
+      "w": 148
+    },
+    {
+      "n1": 2692,
+      "n2": 1546,
+      "w": 100
+    },
+    {
+      "n1": 2692,
+      "n2": 1604,
+      "w": 139
+    },
+    {
+      "n1": 2692,
+      "n2": 1662,
+      "w": 45
+    },
+    {
+      "n1": 2692,
+      "n2": 1719,
+      "w": 167
+    },
+    {
+      "n1": 2692,
+      "n2": 1776,
+      "w": 57
+    },
+    {
+      "n1": 2692,
+      "n2": 1834,
+      "w": 108
+    },
+    {
+      "n1": 2692,
+      "n2": 1891,
+      "w": 261
+    },
+    {
+      "n1": 2692,
+      "n2": 1948,
+      "w": 283
+    },
+    {
+      "n1": 2692,
+      "n2": 2005,
+      "w": 278
+    },
+    {
+      "n1": 2692,
+      "n2": 2063,
+      "w": 118
+    },
+    {
+      "n1": 2692,
+      "n2": 2120,
+      "w": 158
+    },
+    {
+      "n1": 2692,
+      "n2": 2177,
+      "w": 31
+    },
+    {
+      "n1": 2692,
+      "n2": 2234,
+      "w": 86
+    },
+    {
+      "n1": 2692,
+      "n2": 2292,
+      "w": 58
+    },
+    {
+      "n1": 2692,
+      "n2": 2349,
+      "w": 131
+    },
+    {
+      "n1": 2692,
+      "n2": 2406,
+      "w": 120
+    },
+    {
+      "n1": 2692,
+      "n2": 2463,
+      "w": 215
+    },
+    {
+      "n1": 2692,
+      "n2": 2521,
+      "w": 7
+    },
+    {
+      "n1": 2692,
+      "n2": 2578,
+      "w": 255
+    },
+    {
+      "n1": 2692,
+      "n2": 2635,
+      "w": 158
+    },
+    {
+      "n1": 2692,
+      "n2": 2692,
+      "w": 0
+    }
+  ],
+  "demand": [
+    {
+      "demand": 0,
+      "n": 782
+    },
+    {
+      "demand": 0,
+      "n": 1655
+    },
+    {
+      "demand": 15,
+      "n": 0
+    },
+    {
+      "demand": 16,
+      "n": 57
+    },
+    {
+      "demand": 31,
+      "n": 114
+    },
+    {
+      "demand": 14,
+      "n": 171
+    },
+    {
+      "demand": 33,
+      "n": 229
+    },
+    {
+      "demand": 7,
+      "n": 286
+    },
+    {
+      "demand": 9,
+      "n": 343
+    },
+    {
+      "demand": 17,
+      "n": 400
+    },
+    {
+      "demand": 33,
+      "n": 458
+    },
+    {
+      "demand": 26,
+      "n": 515
+    },
+    {
+      "demand": 18,
+      "n": 572
+    },
+    {
+      "demand": 10,
+      "n": 629
+    },
+    {
+      "demand": 32,
+      "n": 687
+    },
+    {
+      "demand": 26,
+      "n": 744
+    },
+    {
+      "demand": 14,
+      "n": 802
+    },
+    {
+      "demand": 32,
+      "n": 859
+    },
+    {
+      "demand": 33,
+      "n": 917
+    },
+    {
+      "demand": 30,
+      "n": 974
+    },
+    {
+      "demand": 25,
+      "n": 1031
+    },
+    {
+      "demand": 18,
+      "n": 1088
+    },
+    {
+      "demand": 26,
+      "n": 1146
+    },
+    {
+      "demand": 2,
+      "n": 1203
+    },
+    {
+      "demand": 25,
+      "n": 1260
+    },
+    {
+      "demand": 10,
+      "n": 1317
+    },
+    {
+      "demand": 3,
+      "n": 1375
+    },
+    {
+      "demand": 28,
+      "n": 1432
+    },
+    {
+      "demand": 9,
+      "n": 1489
+    },
+    {
+      "demand": 21,
+      "n": 1546
+    },
+    {
+      "demand": 7,
+      "n": 1604
+    },
+    {
+      "demand": 24,
+      "n": 1662
+    },
+    {
+      "demand": 1,
+      "n": 1719
+    },
+    {
+      "demand": 5,
+      "n": 1776
+    },
+    {
+      "demand": 19,
+      "n": 1834
+    },
+    {
+      "demand": 4,
+      "n": 1891
+    },
+    {
+      "demand": 9,
+      "n": 1948
+    },
+    {
+      "demand": 7,
+      "n": 2005
+    },
+    {
+      "demand": 16,
+      "n": 2063
+    },
+    {
+      "demand": 27,
+      "n": 2120
+    },
+    {
+      "demand": 15,
+      "n": 2177
+    },
+    {
+      "demand": 17,
+      "n": 2234
+    },
+    {
+      "demand": 20,
+      "n": 2292
+    },
+    {
+      "demand": 27,
+      "n": 2349
+    },
+    {
+      "demand": 33,
+      "n": 2406
+    },
+    {
+      "demand": 18,
+      "n": 2463
+    },
+    {
+      "demand": 31,
+      "n": 2521
+    },
+    {
+      "demand": 19,
+      "n": 2578
+    },
+    {
+      "demand": 24,
+      "n": 2635
+    },
+    {
+      "demand": 16,
+      "n": 2692
+    }
+  ],
+  "depots": [
+    {
+      "n": 782
+    },
+    {
+      "n": 1655
+    }
+  ],
+  "parameters": {
+    "capacity": 125,
+    "numVehicles": -1,
+    "size": 50
+  },
+  "positions": [
+    {
+      "lat": 51.0678307,
+      "lng": 3.7290914,
+      "n": 782,
+      "name": "GENT"
+    },
+    {
+      "lat": 50.459267,
+      "lng": 4.8504571,
+      "n": 1655,
+      "name": "NAMUR"
+    },
+    {
+      "lat": 50.8427501,
+      "lng": 4.3515499,
+      "n": 0,
+      "name": "BRUSSEL"
+    },
+    {
+      "lat": 51.2198771,
+      "lng": 4.4011356,
+      "n": 57,
+      "name": "ANTWERPEN"
+    },
+    {
+      "lat": 51.0261822,
+      "lng": 4.9806859,
+      "n": 114,
+      "name": "AVERBODE"
+    },
+    {
+      "lat": 50.7798613,
+      "lng": 4.7614181,
+      "n": 171,
+      "name": "BEAUVECHAIN"
+    },
+    {
+      "lat": 50.5329187,
+      "lng": 4.7417015,
+      "n": 229,
+      "name": "BEUZET"
+    },
+    {
+      "lat": 50.7509166,
+      "lng": 5.580062,
+      "n": 286,
+      "name": "BOIRS"
+    },
+    {
+      "lat": 50.7410068,
+      "lng": 5.2607332,
+      "n": 343,
+      "name": "BOVELINGEN"
+    },
+    {
+      "lat": 50.5826516,
+      "lng": 3.9173444,
+      "n": 400,
+      "name": "CAMBRON-SAINT-VINCENT"
+    },
+    {
+      "lat": 50.7811468,
+      "lng": 2.9997573,
+      "n": 458,
+      "name": "COMINES"
+    },
+    {
+      "lat": 50.7981729,
+      "lng": 4.0248327,
+      "n": 515,
+      "name": "DENDERWINDEKE"
+    },
+    {
+      "lat": 50.571588,
+      "lng": 4.1767874,
+      "n": 572,
+      "name": "ECAUSSINNES-D'ENGHIEN"
+    },
+    {
+      "lat": 50.4022333,
+      "lng": 5.666316,
+      "n": 629,
+      "name": "ERNONHEID"
+    },
+    {
+      "lat": 50.7041182,
+      "lng": 5.7139672,
+      "n": 687,
+      "name": "FENEUR"
+    },
+    {
+      "lat": 50.0767425,
+      "lng": 4.5089143,
+      "n": 744,
+      "name": "FRASNES_NAM."
+    },
+    {
+      "lat": 50.9705594,
+      "lng": 3.8153997,
+      "n": 802,
+      "name": "GIJZENZELE"
+    },
+    {
+      "lat": 49.8583554,
+      "lng": 5.3727437,
+      "n": 859,
+      "name": "GRANDVOIR"
+    },
+    {
+      "lat": 50.3453749,
+      "lng": 5.0922322,
+      "n": 917,
+      "name": "HAMOIS"
+    },
+    {
+      "lat": 50.7497791,
+      "lng": 4.9829359,
+      "n": 974,
+      "name": "HELECINE"
+    },
+    {
+      "lat": 50.5236273,
+      "lng": 5.006894,
+      "n": 1031,
+      "name": "HINGEON"
+    },
+    {
+      "lat": 51.1488217,
+      "lng": 4.4785055,
+      "n": 1088,
+      "name": "HOVE"
+    },
+    {
+      "lat": 50.7342411,
+      "lng": 5.209727,
+      "n": 1146,
+      "name": "JEUK"
+    },
+    {
+      "lat": 51.3317067,
+      "lng": 3.3140885,
+      "n": 1203,
+      "name": "KNOKKE-HEIST"
+    },
+    {
+      "lat": 50.5838176,
+      "lng": 5.0903253,
+      "n": 1260,
+      "name": "LAMONTZEE"
+    },
+    {
+      "lat": 50.7216887,
+      "lng": 5.3534526,
+      "n": 1317,
+      "name": "LENS-SUR-GEER"
+    },
+    {
+      "lat": 51.2948381,
+      "lng": 3.1994146,
+      "n": 1375,
+      "name": "LISSEWEGE"
+    },
+    {
+      "lat": 50.3780379,
+      "lng": 4.9703054,
+      "n": 1432,
+      "name": "MAILLEN"
+    },
+    {
+      "lat": 50.511588,
+      "lng": 4.6770711,
+      "n": 1489,
+      "name": "MAZY"
+    },
+    {
+      "lat": 50.996176,
+      "lng": 4.0692884,
+      "n": 1546,
+      "name": "MESPELARE"
+    },
+    {
+      "lat": 50.4096402,
+      "lng": 4.4729564,
+      "n": 1604,
+      "name": "MONTIGNIES-SUR-SAMBRE"
+    },
+    {
+      "lat": 50.6672639,
+      "lng": 3.2680395,
+      "n": 1662,
+      "name": "NECHIN"
+    },
+    {
+      "lat": 50.7289435,
+      "lng": 4.9641114,
+      "n": 1719,
+      "name": "NODUWEZ"
+    },
+    {
+      "lat": 50.8705398,
+      "lng": 3.5517704,
+      "n": 1776,
+      "name": "OOIKE_WORTEGEM-PETEGEM"
+    },
+    {
+      "lat": 50.7805147,
+      "lng": 4.1979164,
+      "n": 1834,
+      "name": "OUDENAKEN"
+    },
+    {
+      "lat": 50.3026042,
+      "lng": 5.9894564,
+      "n": 1891,
+      "name": "PETIT-THIER"
+    },
+    {
+      "lat": 49.5912687,
+      "lng": 5.7266366,
+      "n": 1948,
+      "name": "RACHECOURT"
+    },
+    {
+      "lat": 49.5951701,
+      "lng": 5.5084403,
+      "n": 2005,
+      "name": "ROBELMONT"
+    },
+    {
+      "lat": 51.1273737,
+      "lng": 4.2901239,
+      "n": 2063,
+      "name": "RUPELMONDE"
+    },
+    {
+      "lat": 50.1683864,
+      "lng": 4.5609023,
+      "n": 2120,
+      "name": "SAUTOUR"
+    },
+    {
+      "lat": 50.8760936,
+      "lng": 3.1787537,
+      "n": 2177,
+      "name": "SINT-ELOOIS-WINKEL"
+    },
+    {
+      "lat": 50.5056428,
+      "lng": 3.7877341,
+      "n": 2234,
+      "name": "SIRAULT"
+    },
+    {
+      "lat": 51.2105793,
+      "lng": 2.9307745,
+      "n": 2292,
+      "name": "STENE"
+    },
+    {
+      "lat": 50.3414098,
+      "lng": 4.2928918,
+      "n": 2349,
+      "name": "THUIN"
+    },
+    {
+      "lat": 50.7904904,
+      "lng": 4.3559193,
+      "n": 2406,
+      "name": "UKKEL"
+    },
+    {
+      "lat": 50.5024548,
+      "lng": 5.511326,
+      "n": 2463,
+      "name": "VILLERS-AUX-TOURS"
+    },
+    {
+      "lat": 50.8165377,
+      "lng": 2.8757493,
+      "n": 2521,
+      "name": "VOORMEZELE"
+    },
+    {
+      "lat": 49.9911621,
+      "lng": 5.7883722,
+      "n": 2578,
+      "name": "WARDIN"
+    },
+    {
+      "lat": 51.061278,
+      "lng": 4.8346555,
+      "n": 2635,
+      "name": "WESTMEERBEEK"
+    },
+    {
+      "lat": 50.7668483,
+      "lng": 2.8435926,
+      "n": 2692,
+      "name": "WULVERGEM"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/cornflow-dags/tests/test_dags.py b/cornflow-dags/tests/test_dags.py
index 57dedced2..b41fe5bab 100644
--- a/cornflow-dags/tests/test_dags.py
+++ b/cornflow-dags/tests/test_dags.py
@@ -22,7 +22,7 @@ class BaseDAGTests:
     class SolvingTests(unittest.TestCase):
         def setUp(self) -> None:
             self.app = None
-            self.config = SuperDict(msg=False, timeLimit=1, seconds=1)
+            self.config = SuperDict(msg=False, timeLimit=1)
 
         @property
         def app(self) -> ApplicationCore:
@@ -48,49 +48,55 @@ def test_config_requirements(self):
         def test_try_solving_testcase(self, config=None):
             config = config or self.config
             tests = self.app.test_cases
-            for pos, data in enumerate(tests):
-                data_out = None
-                if isinstance(data, tuple):
-                    # sometimes we have input and output
-                    data, data_out = data
+
+            for test_case in tests:
+                instance_data = test_case.get("instance")
+                solution_data = test_case.get("solution", None)
+                case_name = test_case.get("name")
+                case_description = test_case.get("description", "No description")
+
                 marshm = SchemaManager(self.app.instance.schema).jsonschema_to_flask()
-                marshm().load(data)
-                if data_out is not None:
+                marshm().load(instance_data)
+                if solution_data is not None:
                     (
-                        solution_data,
+                        solution_test,
                         solution_check,
                         inst_check,
                         log,
                         log_dict,
-                    ) = self.app.solve(data, config, data_out)
+                    ) = self.app.solve(instance_data, config, solution_data)
                 else:
                     # for compatibility with previous format
                     (
-                        solution_data,
+                        solution_test,
                         solution_check,
                         inst_check,
                         log,
                         log_dict,
-                    ) = self.app.solve(data, config)
-                if solution_data is None:
+                    ) = self.app.solve(instance_data, config)
+                if solution_test is None:
                     raise ValueError("No solution found")
                 marshm = SchemaManager(self.app.solution.schema).jsonschema_to_flask()
                 validator = Draft7Validator(self.app.solution.schema)
-                if not validator.is_valid(solution_data):
+                if not validator.is_valid(solution_test):
                     raise Exception("The solution has invalid format")
 
-                self.assertTrue(len(solution_data) > 0)
-                instance = self.app.instance.from_dict(data)
-                solution = self.app.solution.from_dict(solution_data)
+                self.assertTrue(len(solution_test) > 0)
+                instance = self.app.instance.from_dict(instance_data)
+                solution = self.app.solution.from_dict(solution_test)
                 s = self.app.get_default_solver_name()
                 experim = self.app.get_solver(s)(instance, solution)
                 checks = experim.check_solution()
-                if len(checks) > 0:
+                failed_checks = [k for k, v in checks.items() if len(v) > 0]
+                if len(failed_checks) > 0:
                     print(
-                        f"Test instance with position {pos} failed with the following checks:"
+                        f"Test instance {case_name} ({case_description}) "
+                        f"failed with the following checks:"
                     )
-                    for check in checks:
-                        print(check)
+                    for check, values in checks.items():
+                        if len(values) > 0:
+                            print(f"{check}: {values}")
+
                 experim.get_objective()
 
                 validator = Draft7Validator(experim.schema_checks)
@@ -105,14 +111,13 @@ def test_try_solving_testcase(self, config=None):
         def test_complete_solve(self, connectCornflow, config=None):
             config = config or self.config
             tests = self.app.test_cases
-            for pos, data in enumerate(tests):
-                data_out = None
-                if isinstance(data, tuple):
-                    # sometimes we have input and output
-                    data, data_out = data
+            for test_case in tests:
+                instance_data = test_case.get("instance")
+                solution_data = test_case.get("solution", None)
+
                 mock = Mock()
                 mock.get_data.return_value = dict(
-                    data=data, config=config, id=1, solution_data=None
+                    data=instance_data, config=config, id=1, solution_data=solution_data
                 )
                 connectCornflow.return_value = mock
                 dag_run = Mock()
@@ -135,17 +140,6 @@ def test_complete_solve(self, connectCornflow, config=None):
                 mock.write_solution.assert_called_once()
 
 
-class Hackathon(BaseDAGTests.SolvingTests):
-    def setUp(self):
-        super().setUp()
-        from DAG.hk_2020_dag import HackathonApp
-
-        self.app = HackathonApp()
-
-    def test_solve_ortools(self):
-        return self.test_try_solving_testcase(dict(solver="ortools", **self.config))
-
-
 class GraphColor(BaseDAGTests.SolvingTests):
     def setUp(self):
         super().setUp()
@@ -242,7 +236,6 @@ def setUp(self):
 
         self.app = Rostering()
         self.config.update(dict(solver="mip.PULP_CBC_CMD", rel_gap=0.02))
-        self.config.pop("seconds")
 
 
 class BarCutting(BaseDAGTests.SolvingTests):
@@ -265,7 +258,7 @@ def setUp(self):
         from DAG.facility_location import FacilityLocation
 
         self.app = FacilityLocation()
-        self.config.update(dict(solver="Pyomo.cbc", gapAbs=1, gapRel=0.01))
+        self.config.update(dict(solver="Pyomo.cbc", abs_gap=1, rel_gap=0.01))
 
 
 class PuLP(BaseDAGTests.SolvingTests):
@@ -275,7 +268,6 @@ def setUp(self):
 
         self.app = PuLP()
         self.config.update(dict(solver="PULP_CBC_CMD"))
-        self.config.pop("seconds")
 
 
 class TwoBinPackingTestCase(BaseDAGTests.SolvingTests):
diff --git a/cornflow-dags/tests/test_dags_af.py b/cornflow-dags/tests/test_dags_af.py
index 6b0ea2380..ff659e242 100644
--- a/cornflow-dags/tests/test_dags_af.py
+++ b/cornflow-dags/tests/test_dags_af.py
@@ -11,8 +11,8 @@
 from DAG.update_all_schemas import get_new_apps, get_all_schemas, get_all_example_data
 from DAG.auto_scripts.automatic_scripts import execute_scripts
 
-ALL_VARIABLES = [k for k in get_all_schemas().keys()] + [
-    k for k in get_all_example_data().keys()
+ALL_VARIABLES = [k for k in get_all_schemas(get_new_apps()).keys()] + [
+    k for k in get_all_example_data(get_new_apps()).keys()
 ]
 
 
diff --git a/cornflow-server/cornflow/tests/custom_test_case.py b/cornflow-server/cornflow/tests/custom_test_case.py
index dc36fa046..14fb47d93 100644
--- a/cornflow-server/cornflow/tests/custom_test_case.py
+++ b/cornflow-server/cornflow/tests/custom_test_case.py
@@ -5,6 +5,9 @@
 # Import from libraries
 import logging as log
 from datetime import datetime, timedelta
+
+from typing import List
+
 from flask import current_app
 from flask_testing import TestCase
 import json
@@ -27,7 +30,6 @@
     TOKEN_URL,
 )
 
-
 try:
     date_from_str = datetime.fromisoformat
 except:
@@ -172,7 +174,9 @@ def create_new_row(
                 self.assertEqual(getattr(row, key), payload[key])
         return row.id
 
-    def get_rows(self, url, data, token=None, check_data=True):
+    def get_rows(
+        self, url, data, token=None, check_data=True, keys_to_check: List[str] = None
+    ):
         token = token or self.token
 
         codes = [
@@ -187,6 +191,8 @@ def get_rows(self, url, data, token=None, check_data=True):
         if check_data:
             for i in range(len(data)):
                 self.assertEqual(rows_data[i]["id"], codes[i])
+                if keys_to_check:
+                    self.assertCountEqual(list(rows_data[i].keys()), keys_to_check)
                 for key in self.get_keys_to_check(data[i]):
                     self.assertIn(key, rows_data[i])
                     if key in data[i]:
@@ -199,7 +205,13 @@ def get_keys_to_check(self, payload):
         return payload.keys()
 
     def get_one_row(
-        self, url, payload, expected_status=200, check_payload=True, token=None
+        self,
+        url,
+        payload,
+        expected_status=200,
+        check_payload=True,
+        token=None,
+        keys_to_check: List[str] = None,
     ):
         token = token or self.token
 
@@ -210,6 +222,8 @@ def get_one_row(
         self.assertEqual(expected_status, row.status_code)
         if not check_payload:
             return row.json
+        if keys_to_check:
+            self.assertCountEqual(list(row.json.keys()), keys_to_check)
         self.assertEqual(row.json["id"], payload["id"])
         for key in self.get_keys_to_check(payload):
             self.assertIn(key, row.json)
diff --git a/cornflow-server/cornflow/tests/integration/test_cornflowclient.py b/cornflow-server/cornflow/tests/integration/test_cornflowclient.py
index 76b8e9d08..20bcac4d1 100644
--- a/cornflow-server/cornflow/tests/integration/test_cornflowclient.py
+++ b/cornflow-server/cornflow/tests/integration/test_cornflowclient.py
@@ -35,6 +35,24 @@ def setUp(self, create_all=False):
         super().setUp()
         self.items_to_check = ["name", "description"]
 
+    def check_status_evolution(self, execution, end_state=EXEC_STATE_CORRECT):
+        statuses = [execution["state"]]
+        while end_state not in statuses and len(statuses) < 100:
+            time.sleep(1)
+            status = self.client.get_status(execution["id"])
+            statuses.append(status["state"])
+
+        self.assertIn(EXEC_STATE_QUEUED, statuses)
+        self.assertIn(EXEC_STATE_RUNNING, statuses)
+        self.assertIn(end_state, statuses)
+
+        queued_idx = statuses.index(EXEC_STATE_QUEUED)
+        running_idx = statuses.index(EXEC_STATE_RUNNING)
+        end_state_idx = statuses.index(end_state)
+
+        self.assertLess(queued_idx, running_idx)
+        self.assertLess(running_idx, end_state_idx)
+
     def create_new_instance_file(self, mps_file):
         name = "test_instance1"
         description = "description123"
@@ -141,7 +159,6 @@ def create_timer_instance_and_execution(self, seconds=5):
 
 
 class TestCornflowClientOpen(TestCornflowClientBasic):
-
     # TODO: user management
     # TODO: infeasible execution
 
@@ -242,7 +259,6 @@ def test_new_instance_with_schema_additional_data(self):
         self.client.create_instance(**payload)
 
     def test_new_instance_with_schema_good(self):
-
         payload = load_file(INSTANCE_PATH)
         payload["schema"] = "solve_model_dag"
         self.create_new_instance_payload(payload)
@@ -335,23 +351,13 @@ def test_interrupt(self):
 
     def test_status_solving(self):
         execution = self.create_instance_and_execution()
-        time.sleep(10)
-        status = self.client.get_status(execution["id"])
-        self.assertEqual(status["state"], EXEC_STATE_CORRECT)
+        self.check_status_evolution(execution, EXEC_STATE_CORRECT)
 
     def test_status_solving_timer(self):
         execution = self.create_timer_instance_and_execution(10)
-        status = self.client.get_status(execution["id"])
-        self.assertEqual(status["state"], EXEC_STATE_QUEUED)
-        time.sleep(5)
-        status = self.client.get_status(execution["id"])
-        self.assertEqual(status["state"], EXEC_STATE_RUNNING)
-        time.sleep(12)
-        status = self.client.get_status(execution["id"])
-        self.assertEqual(status["state"], EXEC_STATE_CORRECT)
+        self.check_status_evolution(execution, EXEC_STATE_CORRECT)
 
     def test_manual_execution(self):
-
         instance_payload = load_file(INSTANCE_PATH)
         one_instance = self.create_new_instance_payload(instance_payload)
         name = "test_execution_name_123"
diff --git a/cornflow-server/cornflow/tests/unit/test_cases.py b/cornflow-server/cornflow/tests/unit/test_cases.py
index 285d7e860..8f4b22a51 100644
--- a/cornflow-server/cornflow/tests/unit/test_cases.py
+++ b/cornflow-server/cornflow/tests/unit/test_cases.py
@@ -201,8 +201,29 @@ def test_new_case_without_solution(self):
         self.payload.pop("solution")
         self.items_to_check = ["name", "description", "schema", "data"]
         _id = self.create_new_row(self.url, self.model, self.payload)
+        keys_to_check = [
+            "data",
+            "solution_checks",
+            "updated_at",
+            "id",
+            "schema",
+            "data_hash",
+            "path",
+            "solution_hash",
+            "user_id",
+            "indicators",
+            "solution",
+            "is_dir",
+            "description",
+            "name",
+            "checks",
+            "created_at",
+        ]
         data = self.get_one_row(
-            self.url + "/" + str(_id) + "/data/", payload={}, check_payload=False
+            self.url + "/" + str(_id) + "/data/",
+            payload={},
+            check_payload=False,
+            keys_to_check=keys_to_check,
         )
         self.assertIsNone(data["solution"])
 
@@ -293,7 +314,21 @@ def setUp(self):
         self.url = CASE_URL
 
     def test_get_rows(self):
-        self.get_rows(self.url, self.payloads)
+        keys_to_check = [
+            "data_hash",
+            "created_at",
+            "is_dir",
+            "path",
+            "schema",
+            "description",
+            "solution_hash",
+            "id",
+            "user_id",
+            "updated_at",
+            "name",
+            "indicators",
+        ]
+        self.get_rows(self.url, self.payloads, keys_to_check=keys_to_check)
 
 
 class TestCaseDetailEndpoint(BaseTestCases.DetailEndpoint):
@@ -365,7 +400,19 @@ def test_case_to_new_instance(self):
         )
 
         payload = response.json
-        result = self.get_one_row(INSTANCE_URL + payload["id"] + "/", payload)
+        keys_to_check = [
+            "id",
+            "schema",
+            "data_hash",
+            "executions",
+            "user_id",
+            "description",
+            "name",
+            "created_at",
+        ]
+        result = self.get_one_row(
+            INSTANCE_URL + payload["id"] + "/", payload, keys_to_check=keys_to_check
+        )
         dif = self.response_items.symmetric_difference(result.keys())
         self.assertEqual(len(dif), 0)
 
@@ -382,7 +429,23 @@ def test_case_to_new_instance(self):
         ]
         self.response_items = set(self.items_to_check)
 
-        result = self.get_one_row(INSTANCE_URL + payload["id"] + "/data/", payload)
+        keys_to_check = [
+            "data",
+            "id",
+            "schema",
+            "data_hash",
+            "user_id",
+            "description",
+            "name",
+            "checks",
+            "created_at",
+        ]
+
+        result = self.get_one_row(
+            INSTANCE_URL + payload["id"] + "/data/",
+            payload,
+            keys_to_check=keys_to_check,
+        )
         dif = self.response_items.symmetric_difference(result.keys())
         self.assertEqual(len(dif), 0)
 
@@ -539,11 +602,37 @@ def setUp(self):
         ]
 
     def test_get_data(self):
-        self.get_one_row(self.url + str(self.payload["id"]) + "/data/", self.payload)
+        keys_to_check = [
+            "data",
+            "solution_checks",
+            "updated_at",
+            "id",
+            "schema",
+            "data_hash",
+            "path",
+            "solution_hash",
+            "user_id",
+            "indicators",
+            "solution",
+            "is_dir",
+            "description",
+            "name",
+            "checks",
+            "created_at",
+        ]
+        self.get_one_row(
+            self.url + str(self.payload["id"]) + "/data/",
+            self.payload,
+            keys_to_check=keys_to_check,
+        )
 
     def test_get_no_data(self):
         self.get_one_row(
-            self.url + str(500) + "/data/", {}, expected_status=404, check_payload=False
+            self.url + str(500) + "/data/",
+            {},
+            expected_status=404,
+            check_payload=False,
+            keys_to_check=["error"],
         )
 
     def test_get_compressed_data(self):
diff --git a/cornflow-server/cornflow/tests/unit/test_cli.py b/cornflow-server/cornflow/tests/unit/test_cli.py
index 6f1314c3c..47ff47abe 100644
--- a/cornflow-server/cornflow/tests/unit/test_cli.py
+++ b/cornflow-server/cornflow/tests/unit/test_cli.py
@@ -131,7 +131,7 @@ def test_views_init_command(self):
         result = runner.invoke(cli, ["views", "init", "-v"])
         self.assertEqual(result.exit_code, 0)
         views = ViewModel.get_all_objects().all()
-        self.assertEqual(len(views), 48)
+        self.assertEqual(len(views), 49)
 
     def test_permissions_entrypoint(self):
         runner = CliRunner()
@@ -155,8 +155,8 @@ def test_permissions_init(self):
         permissions = PermissionViewRoleModel.get_all_objects().all()
         self.assertEqual(len(actions), 5)
         self.assertEqual(len(roles), 4)
-        self.assertEqual(len(views), 48)
-        self.assertEqual(len(permissions), 530)
+        self.assertEqual(len(views), 49)
+        self.assertEqual(len(permissions), 546)
 
     def test_permissions_base_command(self):
         runner = CliRunner()
@@ -171,8 +171,8 @@ def test_permissions_base_command(self):
         permissions = PermissionViewRoleModel.get_all_objects().all()
         self.assertEqual(len(actions), 5)
         self.assertEqual(len(roles), 4)
-        self.assertEqual(len(views), 48)
-        self.assertEqual(len(permissions), 530)
+        self.assertEqual(len(views), 49)
+        self.assertEqual(len(permissions), 546)
 
     def test_service_entrypoint(self):
         runner = CliRunner()
diff --git a/cornflow-server/cornflow/tests/unit/test_dags.py b/cornflow-server/cornflow/tests/unit/test_dags.py
index c69ca9a43..f00d14320 100644
--- a/cornflow-server/cornflow/tests/unit/test_dags.py
+++ b/cornflow-server/cornflow/tests/unit/test_dags.py
@@ -24,6 +24,7 @@
     LOGIN_URL,
     SIGNUP_URL,
     USER_URL,
+    EXECUTION_URL,
 )
 from cornflow.tests.unit.test_executions import TestExecutionsDetailEndpointMock
 from cornflow_client import get_pulp_jsonschema, get_empty_schema
@@ -90,13 +91,31 @@ def test_put_dag(self):
         idx = self.create_new_row(EXECUTION_URL_NORUN, self.model, self.payload)
         with open(CASE_PATH) as f:
             payload = json.load(f)
+
+        log_json = {
+            "time": 10.3,
+            "solver": "dummy",
+            "status": "feasible",
+            "status_code": 2,
+            "sol_code": 1,
+            "some_other_key": "this should be excluded",
+        }
+
         data = dict(
             data=payload["data"],
             state=EXEC_STATE_CORRECT,
+            log_json={
+                "time": 10.3,
+                "solver": "dummy",
+                "status": "feasible",
+                "status_code": 2,
+                "sol_code": 1,
+                "some_other_key": "this should be excluded",
+            },
         )
         payload_to_check = {**self.payload, **data}
         token = self.create_service_user()
-        data = self.update_row(
+        self.update_row(
             url=DAG_URL + idx + "/",
             payload_to_check=payload_to_check,
             change=data,
@@ -104,19 +123,46 @@ def test_put_dag(self):
             check_payload=False,
         )
 
+        data = self.get_one_row(
+            url=EXECUTION_URL + idx + "/log/",
+            token=token,
+            check_payload=False,
+            payload=self.payload,
+            expected_status=200,
+        )
+
+        for key in data["log"]:
+            self.assertEqual(data["log"][key], log_json[key])
+
+        self.assertNotIn("some_other_key", data["log"].keys())
+
     def test_get_dag(self):
         idx = self.create_new_row(EXECUTION_URL_NORUN, self.model, self.payload)
         token = self.create_service_user()
+        keys_to_check = ["id", "data", "solution_data", "config"]
         data = self.get_one_row(
             url=DAG_URL + idx + "/",
             token=token,
             check_payload=False,
             payload=self.payload,
+            keys_to_check=keys_to_check,
         )
+        keys_to_check = [
+            "data",
+            "id",
+            "schema",
+            "data_hash",
+            "user_id",
+            "description",
+            "name",
+            "checks",
+            "created_at",
+        ]
         instance_data = self.get_one_row(
             url=INSTANCE_URL + self.payload["instance_id"] + "/data/",
             payload=dict(),
             check_payload=False,
+            keys_to_check=keys_to_check,
         )
         self.assertEqual(data["data"], instance_data["data"])
         self.assertEqual(data["config"], self.payload["config"])
@@ -130,6 +176,7 @@ def test_get_no_dag(self):
             check_payload=False,
             payload=self.payload,
             expected_status=403,
+            keys_to_check=["error"],
         )
 
 
diff --git a/cornflow-server/cornflow/tests/unit/test_example_data.py b/cornflow-server/cornflow/tests/unit/test_example_data.py
index 658a28b51..2295e2fe5 100644
--- a/cornflow-server/cornflow/tests/unit/test_example_data.py
+++ b/cornflow-server/cornflow/tests/unit/test_example_data.py
@@ -1,14 +1,9 @@
-"""
-
-"""
-# General imports
 import json
 
-# Partial imports
-from unittest.mock import patch
 
+from unittest.mock import patch
 
-# Imports from internal modules
+from cornflow.models import PermissionsDAG
 from cornflow.tests.const import EXAMPLE_URL, INSTANCE_PATH
 from cornflow.tests.custom_test_case import CustomTestCase
 
@@ -22,7 +17,18 @@ def load_file(_file):
                 temp = json.load(f)
             return temp
 
-        self.example = load_file(INSTANCE_PATH)
+        self.example = [
+            {
+                "name": "test_example_1",
+                "description": "some_description",
+                "instance": load_file(INSTANCE_PATH),
+            },
+            {
+                "name": "test_example_2",
+                "description": "some_description",
+                "instance": load_file(INSTANCE_PATH),
+            },
+        ]
         self.url = EXAMPLE_URL
         self.schema_name = "solve_model_dag"
 
@@ -37,15 +43,82 @@ def patch_af_client(self, Airflow_mock):
         af_client.get_all_schemas.return_value = [{"name": self.schema_name}]
         return af_client
 
+    def patch_af_client_not_alive(self, Airflow_mock):
+        af_client = Airflow_mock.return_value
+        af_client.is_alive.return_value = False
+        af_client.is_alive.return_value = False
+        return af_client
+
     @patch("cornflow.endpoints.example_data.Airflow.from_config")
-    def test_get_example(self, airflow_init):
+    def test_get_list_of_examples(self, airflow_init):
         af_client = self.patch_af_client(airflow_init)
+        examples = self.get_one_row(
+            f"{self.url}/{self.schema_name}/",
+            {},
+            expected_status=200,
+            check_payload=False,
+        )
+
+        for pos, item in enumerate(examples):
+            self.assertIn("name", item)
+            self.assertEqual(self.example[pos]["name"], item["name"])
+            self.assertIn("description", item)
+            self.assertEqual(self.example[pos]["description"], item["description"])
+
+    @patch("cornflow.endpoints.example_data.Airflow.from_config")
+    def test_get_one_example(self, airflow_init):
+        def load_file(_file):
+            with open(_file) as f:
+                temp = json.load(f)
+            return temp
+
+        af_client = self.patch_af_client(airflow_init)
+        keys_to_check = ["name", "examples"]
         example = self.get_one_row(
-            self.url + "{}/".format(self.schema_name),
+            f"{self.url}/{self.schema_name}/test_example_1/",
             {},
             expected_status=200,
             check_payload=False,
+            keys_to_check=keys_to_check,
         )
-        self.assertIn("examples", example)
+
         self.assertIn("name", example)
-        self.assertEqual(example["examples"], self.example)
+        self.assertEqual("test_example_1", example["name"])
+        self.assertIn("description", example)
+        self.assertIn("instance", example)
+        self.assertEqual(load_file(INSTANCE_PATH), example["instance"])
+
+    @patch("cornflow.endpoints.example_data.Airflow.from_config")
+    def test_airflow_not_available(self, airflow_init):
+        af_client = self.patch_af_client_not_alive(airflow_init)
+        self.get_one_row(
+            f"{self.url}/{self.schema_name}/test_example_1/",
+            {},
+            expected_status=400,
+            check_payload=False,
+        )
+
+        self.get_one_row(
+            f"{self.url}/{self.schema_name}/",
+            {},
+            expected_status=400,
+            check_payload=False,
+        )
+
+    def test_if_no_permission(self):
+        with patch.object(
+            PermissionsDAG, "check_if_has_permissions", return_value=False
+        ) as mock_permission:
+            self.get_one_row(
+                f"{self.url}/{self.schema_name}/",
+                {},
+                expected_status=403,
+                check_payload=False,
+            )
+
+            self.get_one_row(
+                f"{self.url}/{self.schema_name}/test_example_1/",
+                {},
+                expected_status=403,
+                check_payload=False,
+            )
diff --git a/cornflow-server/cornflow/tests/unit/test_executions.py b/cornflow-server/cornflow/tests/unit/test_executions.py
index d7a94ee4c..6e67ee71f 100644
--- a/cornflow-server/cornflow/tests/unit/test_executions.py
+++ b/cornflow-server/cornflow/tests/unit/test_executions.py
@@ -43,6 +43,21 @@ def load_file_fk(_file):
         self.bad_payload = load_file_fk(BAD_EXECUTION_PATH)
         self.payloads = [load_file_fk(f) for f in EXECUTIONS_LIST]
         self.solution = load_file_fk(EXECUTION_SOLUTION_PATH)
+        self.keys_to_check = [
+            "data_hash",
+            "created_at",
+            "config",
+            "state",
+            "message",
+            "schema",
+            "description",
+            "id",
+            "user_id",
+            "log",
+            "instance_id",
+            "name",
+            "indicators",
+        ]
 
     def test_new_execution(self):
         self.create_new_row(self.url, self.model, payload=self.payload)
@@ -115,13 +130,13 @@ def test_new_execution_no_instance(self):
         self.assertTrue("error" in response.json)
 
     def test_get_executions(self):
-        self.get_rows(self.url, self.payloads)
+        self.get_rows(self.url, self.payloads, keys_to_check=self.keys_to_check)
 
     def test_get_no_executions(self):
         self.get_no_rows(self.url)
 
     def test_get_executions_superadmin(self):
-        self.get_rows(self.url, self.payloads)
+        self.get_rows(self.url, self.payloads, keys_to_check=self.keys_to_check)
         token = self.create_service_user()
         rows = self.client.get(
             self.url, follow_redirects=True, headers=self.get_header_with_auth(token)
@@ -275,15 +290,42 @@ def test_incomplete_payload2(self):
 
     def test_create_delete_instance_load(self):
         idx = self.create_new_row(self.url + "?run=0", self.model, self.payload)
+        keys_to_check = [
+            "message",
+            "id",
+            "schema",
+            "data_hash",
+            "config",
+            "instance_id",
+            "user_id",
+            "indicators",
+            "description",
+            "name",
+            "created_at",
+            "state",
+        ]
         execution = self.get_one_row(
-            self.url + idx, payload={**self.payload, **dict(id=idx)}
+            self.url + idx,
+            payload={**self.payload, **dict(id=idx)},
+            keys_to_check=keys_to_check,
         )
         self.delete_row(self.url + idx + "/")
+        keys_to_check = [
+            "id",
+            "schema",
+            "description",
+            "name",
+            "user_id",
+            "executions",
+            "created_at",
+            "data_hash",
+        ]
         instance = self.get_one_row(
             INSTANCE_URL + execution["instance_id"] + "/",
             payload={},
             expected_status=200,
             check_payload=False,
+            keys_to_check=keys_to_check,
         )
         executions = [execution["id"] for execution in instance["executions"]]
         self.assertFalse(idx in executions)
@@ -351,20 +393,41 @@ def setUp(self):
         super().setUp()
         self.response_items = {"id", "name", "data"}
         self.items_to_check = ["name"]
+        self.keys_to_check = [
+            "created_at",
+            "checks",
+            "instance_id",
+            "schema",
+            "data",
+            "user_id",
+            "message",
+            "data_hash",
+            "log",
+            "config",
+            "description",
+            "state",
+            "name",
+            "id",
+        ]
 
     def test_get_one_execution(self):
         idx = self.create_new_row(EXECUTION_URL_NORUN, self.model, self.payload)
         self.url = EXECUTION_URL + idx + "/data/"
         payload = dict(self.payload)
         payload["id"] = idx
-        self.get_one_row(self.url, payload)
+        self.get_one_row(self.url, payload, keys_to_check=self.keys_to_check)
 
     def test_get_one_execution_superadmin(self):
         idx = self.create_new_row(EXECUTION_URL_NORUN, self.model, self.payload)
         payload = dict(self.payload)
         payload["id"] = idx
         token = self.create_service_user()
-        self.get_one_row(EXECUTION_URL + idx + "/data/", payload, token=token)
+        self.get_one_row(
+            EXECUTION_URL + idx + "/data/",
+            payload,
+            token=token,
+            keys_to_check=self.keys_to_check,
+        )
 
 
 class TestExecutionsLogEndpoint(TestExecutionsDetailEndpointMock):
@@ -372,19 +435,42 @@ def setUp(self):
         super().setUp()
         self.response_items = {"id", "name", "log", "indicators"}
         self.items_to_check = ["name"]
+        self.keys_to_check = [
+            "created_at",
+            "id",
+            "log_text",
+            "instance_id",
+            "state",
+            "message",
+            "description",
+            "data_hash",
+            "name",
+            "log",
+            "schema",
+            "user_id",
+            "config",
+            "indicators",
+        ]
 
     def test_get_one_execution(self):
         idx = self.create_new_row(EXECUTION_URL_NORUN, self.model, self.payload)
         payload = dict(self.payload)
         payload["id"] = idx
-        self.get_one_row(EXECUTION_URL + idx + "/log/", payload)
+        self.get_one_row(
+            EXECUTION_URL + idx + "/log/", payload, keys_to_check=self.keys_to_check
+        )
 
     def test_get_one_execution_superadmin(self):
         idx = self.create_new_row(EXECUTION_URL_NORUN, self.model, self.payload)
         payload = dict(self.payload)
         payload["id"] = idx
         token = self.create_service_user()
-        self.get_one_row(EXECUTION_URL + idx + "/log/", payload, token=token)
+        self.get_one_row(
+            EXECUTION_URL + idx + "/log/",
+            payload,
+            token=token,
+            keys_to_check=self.keys_to_check,
+        )
 
 
 class TestExecutionsStatusEndpoint(TestExecutionsDetailEndpointMock):
@@ -400,8 +486,12 @@ def test_get_one_status(self, af_client_class):
         idx = self.create_new_row(EXECUTION_URL, self.model, self.payload)
         payload = dict(self.payload)
         payload["id"] = idx
+        keys_to_check = ["state", "message", "id", "data_hash"]
         data = self.get_one_row(
-            EXECUTION_URL + idx + "/status/", payload, check_payload=False
+            EXECUTION_URL + idx + "/status/",
+            payload,
+            check_payload=False,
+            keys_to_check=keys_to_check,
         )
         self.assertEqual(data["state"], 1)
 
diff --git a/cornflow-server/cornflow/tests/unit/test_instances.py b/cornflow-server/cornflow/tests/unit/test_instances.py
index 1d7cab6ab..5f8fee8d7 100644
--- a/cornflow-server/cornflow/tests/unit/test_instances.py
+++ b/cornflow-server/cornflow/tests/unit/test_instances.py
@@ -36,6 +36,15 @@ def load_file(_file):
 
         self.payload = load_file(INSTANCE_PATH)
         self.payloads = [load_file(f) for f in INSTANCES_LIST]
+        self.keys_to_check = [
+            "data_hash",
+            "created_at",
+            "schema",
+            "description",
+            "id",
+            "user_id",
+            "name",
+        ]
 
     def test_new_instance(self):
         self.create_new_row(self.url, self.model, self.payload)
@@ -65,10 +74,10 @@ def test_new_instance_bad_format(self):
         self.assertTrue("error" in response.json)
 
     def test_get_instances(self):
-        self.get_rows(self.url, self.payloads)
+        self.get_rows(self.url, self.payloads, keys_to_check=self.keys_to_check)
 
     def test_get_instances_superadmin(self):
-        self.get_rows(self.url, self.payloads)
+        self.get_rows(self.url, self.payloads, keys_to_check=self.keys_to_check)
         token = self.create_service_user()
         rows = self.client.get(
             self.url, follow_redirects=True, headers=self.get_header_with_auth(token)
@@ -173,7 +182,20 @@ def setUp(self):
     def test_get_one_instance(self):
         idx = self.create_new_row(self.url, self.model, self.payload)
         payload = {**self.payload, **dict(id=idx)}
-        result = self.get_one_row(INSTANCE_URL + idx + "/data/", payload)
+        keys_to_check = [
+            "data",
+            "id",
+            "schema",
+            "data_hash",
+            "user_id",
+            "description",
+            "name",
+            "checks",
+            "created_at",
+        ]
+        result = self.get_one_row(
+            INSTANCE_URL + idx + "/data/", payload, keys_to_check=keys_to_check
+        )
         dif = self.response_items.symmetric_difference(result.keys())
         self.assertEqual(len(dif), 0)
 
@@ -208,6 +230,7 @@ def test_get_none_instance_planner_one(self):
             expected_status=404,
             check_payload=False,
             token=token,
+            keys_to_check=["error"],
         )
 
     def test_get_none_instance_planner_all(self):
@@ -232,8 +255,23 @@ def test_get_one_instance_planner(self):
         idx = self.create_new_row(self.url, self.model, self.payload)
         token = self.create_planner()
         payload = {**self.payload, **dict(id=idx)}
-
-        self.get_one_row(INSTANCE_URL + idx + "/data/", payload, token=token)
+        keys_to_check = [
+            "data",
+            "id",
+            "schema",
+            "data_hash",
+            "user_id",
+            "description",
+            "name",
+            "checks",
+            "created_at",
+        ]
+        self.get_one_row(
+            INSTANCE_URL + idx + "/data/",
+            payload,
+            token=token,
+            keys_to_check=keys_to_check,
+        )
 
     def test_get_all_instance_planner(self):
         # Test planner users can access objects of other users
diff --git a/cornflow-server/cornflow/tests/unit/test_main_alarms.py b/cornflow-server/cornflow/tests/unit/test_main_alarms.py
index 0897b20aa..2e9ab0c18 100644
--- a/cornflow-server/cornflow/tests/unit/test_main_alarms.py
+++ b/cornflow-server/cornflow/tests/unit/test_main_alarms.py
@@ -1,6 +1,7 @@
 """
 
 """
+
 import json
 
 # Imports from internal modules
@@ -19,7 +20,7 @@ def setUp(self):
         payload = {
             "name": "Alarm 1",
             "description": "Description Alarm 1",
-            "criticality": 1
+            "criticality": 1,
         }
         self.id_alarm = self.client.post(
             ALARMS_URL,
@@ -32,7 +33,7 @@ def test_post_main_alarm(self):
         payload = {
             "message": "Message Main Alarm 1",
             "criticality": 1,
-            "id_alarm": self.id_alarm
+            "id_alarm": self.id_alarm,
         }
         self.create_new_row(self.url, self.model, payload)
 
@@ -41,23 +42,22 @@ def test_get_main_alarms(self):
             {
                 "message": "Message Main Alarm 1",
                 "criticality": 1,
-                "id_alarm": self.id_alarm
+                "id_alarm": self.id_alarm,
             },
             {
                 "message": "Message Main Alarm 2",
                 "criticality": 2,
                 "schema": "solve_model_dag",
-                "id_alarm": self.id_alarm
+                "id_alarm": self.id_alarm,
             },
         ]
+        keys_to_check = ["schema", "id_alarm", "criticality", "id", "message"]
         rows = self.get_rows(
-            self.url,
-            data,
-            check_data=False
+            self.url, data, check_data=False, keys_to_check=keys_to_check
         )
         rows_data = list(rows.json)
         for i in range(len(data)):
             for key in self.get_keys_to_check(data[i]):
                 self.assertIn(key, rows_data[i])
                 if key in data[i]:
-                    self.assertEqual(rows_data[i][key], data[i][key])
\ No newline at end of file
+                    self.assertEqual(rows_data[i][key], data[i][key])
diff --git a/cornflow-server/cornflow/tests/unit/test_schemas.py b/cornflow-server/cornflow/tests/unit/test_schemas.py
index 88f8bf2a6..a4b90e1f0 100644
--- a/cornflow-server/cornflow/tests/unit/test_schemas.py
+++ b/cornflow-server/cornflow/tests/unit/test_schemas.py
@@ -1,6 +1,7 @@
 """
 
 """
+
 # General imports
 import unittest
 
@@ -159,11 +160,20 @@ def setUp(self):
         self.schema_name = "solve_model_dag"
 
     def test_get_schema(self):
+        keys_to_check = [
+            "solution_checks",
+            "instance_checks",
+            "config",
+            "solution",
+            "name",
+            "instance",
+        ]
         schemas = self.get_one_row(
             self.url + "{}/".format(self.schema_name),
             {},
             expected_status=200,
             check_payload=False,
+            keys_to_check=keys_to_check,
         )
         self.assertIn("instance", schemas)
         self.assertIn("solution", schemas)
@@ -178,7 +188,7 @@ def setUp(self):
         self.url = SCHEMA_URL
 
     def test_get_all_schemas(self):
-        schemas = self.get_one_row(self.url, {}, 200, False)
+        schemas = self.get_one_row(self.url, {}, 200, False, keys_to_check=["name"])
         dags = [{"name": dag} for dag in ["solve_model_dag", "gc", "timer"]]
 
         self.assertEqual(dags, schemas)
@@ -205,6 +215,7 @@ def test_get_one_schema(self):
             {},
             expected_status=403,
             check_payload=False,
+            keys_to_check=["error"],
         )
         self.assertEqual(
             {"error": "User does not have permission to access this dag"}, schema
diff --git a/cornflow-server/cornflow/tests/unit/test_token.py b/cornflow-server/cornflow/tests/unit/test_token.py
index 97b7f5476..0093425bf 100644
--- a/cornflow-server/cornflow/tests/unit/test_token.py
+++ b/cornflow-server/cornflow/tests/unit/test_token.py
@@ -41,6 +41,23 @@ def test_get_valid_token(self):
         self.assertEqual(200, self.response.status_code)
         self.assertEqual(1, self.response.json["valid"])
 
+    def test_token_duration(self):
+        durations = [0.000000000001, 1]
+        asserts = [0, 1]
+        payload = self.data
+        for i in range(2):
+            current_app.config["TOKEN_DURATION"] = durations[i]
+            self.token = self.client.post(
+                LOGIN_URL,
+                data=json.dumps(payload),
+                follow_redirects=True,
+                headers={"Content-Type": "application/json"},
+            ).json["token"]
+
+            self.get_check_token()
+            self.assertEqual(200, self.response.status_code)
+            self.assertEqual(asserts[i], self.response.json["valid"])
+
     def test_get_invalid_token(self):
         self.token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2Mzk4MjAwNzMsImlhdCI6MTYzOTczMzY3Mywic3ViIjoxfQ"
         self.token += ".KzAYFDSrAJoCrnxGqKL2v6fE3oxT2muBgYztF1wcuN8"
diff --git a/cornflow-server/cornflow/tests/unit/test_users.py b/cornflow-server/cornflow/tests/unit/test_users.py
index c40fa1a72..c87d0d4ce 100644
--- a/cornflow-server/cornflow/tests/unit/test_users.py
+++ b/cornflow-server/cornflow/tests/unit/test_users.py
@@ -1,6 +1,8 @@
 import json
 
+from flask import current_app
 from flask_testing import TestCase
+from datetime import datetime, timedelta
 from cornflow.app import create_app
 from cornflow.commands.access import access_init_command
 from cornflow.commands.dag import register_deployed_dags_command_test
@@ -359,6 +361,20 @@ def test_viewer_user_change_password(self):
         self.assertEqual(200, response.status_code)
         self.assertIsNotNone(response.json["token"])
 
+    def test_change_password_rotation(self):
+        current_app.config["PWD_ROTATION_TIME"] = 1  # in days
+        payload = {"pwd_last_change": (datetime.utcnow() - timedelta(days=2)).strftime("%Y-%m-%dT%H:%M:%SZ")}
+        self.modify_info(self.planner, self.planner, payload)
+        response = self.log_in(self.planner)
+        self.assertEqual(True, response.json["change_password"])
+
+        payload = {"password": "Newtestpassword1!"}
+        self.modify_info(self.planner, self.planner, payload)
+        self.planner.update(payload)
+        print(self.planner)
+        response = self.log_in(self.planner)
+        self.assertEqual(False, response.json["change_password"])
+
 
 class TestUserModel(TestCase):
     def create_app(self):
diff --git a/libs/client/cornflow_client/tests/integration/test_airflow_integration.py b/libs/client/cornflow_client/tests/integration/test_airflow_integration.py
index 44cb3334b..3348fd96f 100644
--- a/libs/client/cornflow_client/tests/integration/test_airflow_integration.py
+++ b/libs/client/cornflow_client/tests/integration/test_airflow_integration.py
@@ -14,6 +14,7 @@
 # Constants
 path_to_tests_dir = os.path.dirname(os.path.abspath(__file__))
 
+
 # Helper functions
 def _load_file(_file):
     with open(_file) as f:
@@ -57,7 +58,7 @@ def test_update_dag_registry(self):
     def test_run_dag(self):
         data = _load_file(PULP_EXAMPLE)
         cf_client = CornFlow(url="http://127.0.0.1:5050/")
-        cf_login = cf_client.login("user", "UserPassword1!")
+        cf_login = cf_client.login("admin", "Adminpassword1!")
         instance = cf_client.create_instance(data, "test_example", "test_description")
         execution = cf_client.create_execution(
             instance_id=instance["id"],
diff --git a/libs/client/cornflow_client/tests/integration/test_cornflow_integration.py b/libs/client/cornflow_client/tests/integration/test_cornflow_integration.py
index 44dba8d9d..38bf1be2a 100644
--- a/libs/client/cornflow_client/tests/integration/test_cornflow_integration.py
+++ b/libs/client/cornflow_client/tests/integration/test_cornflow_integration.py
@@ -3,16 +3,14 @@
 Base, admin and service user get tested
 Integration between Airflow and cornflow through airflow client and cornflow client tested as well
 """
-# Full imports
+
 import json
 import os
-import pulp as pl
 import time
-
-# Partial imports
 from unittest import TestCase
 
-# Internal imports
+import pulp as pl
+
 from cornflow_client import CornFlow
 from cornflow_client.constants import STATUS_OPTIMAL, STATUS_NOT_SOLVED, STATUS_QUEUED
 from cornflow_client.schema.tools import get_pulp_jsonschema
@@ -21,6 +19,7 @@
 # Constants
 path_to_tests_dir = os.path.dirname(os.path.abspath(__file__))
 
+
 # Helper functions
 def _load_file(_file):
     with open(_file) as f:
@@ -44,6 +43,16 @@ def setUp(self):
     def tearDown(self):
         pass
 
+    def check_execution_statuses(self, execution_id):
+        statuses = []
+        response = self.client.get_status(execution_id)
+        statuses.append(response["state"])
+        while STATUS_OPTIMAL not in statuses and len(statuses) < 100:
+            time.sleep(2)
+            response = self.client.get_status(execution_id)
+            statuses.append(response["state"])
+        return statuses
+
     def test_health_endpoint(self):
         response = self.client.is_alive()
         self.assertEqual(response["cornflow_status"], "healthy")
@@ -171,7 +180,8 @@ def test_create_execution(self):
 
     def test_create_execution_data_check(self):
         exec_to_check = self.test_create_execution()
-        time.sleep(15)
+        statuses = self.check_execution_statuses(exec_to_check["id"])
+
         exec_to_check_id = exec_to_check["id"]
         execution = self.client.create_execution_data_check(exec_to_check_id)
         self.assertEqual(STATUS_QUEUED, execution["state"])
@@ -179,7 +189,9 @@ def test_create_execution_data_check(self):
 
     def test_execution_data_check_solution(self):
         execution = self.test_create_execution_data_check()
-        time.sleep(15)
+
+        statuses = self.check_execution_statuses(execution["id"])
+
         results = self.client.get_solution(execution["id"])
         self.assertEqual(results["state"], 1)
 
@@ -207,7 +219,8 @@ def test_instance_data_check_solution(self):
 
     def test_execution_results(self):
         execution = self.test_create_execution()
-        time.sleep(10)
+        statuses = self.check_execution_statuses(execution["id"])
+
         response = self.client.get_results(execution["id"])
 
         items = [
@@ -228,24 +241,21 @@ def test_execution_results(self):
             self.assertIn(item, response.keys())
 
         self.assertEqual(execution["id"], response["id"])
-        self.assertEqual(STATUS_OPTIMAL, response["state"])
+        self.assertIn(STATUS_NOT_SOLVED, statuses)
+        self.assertIn(STATUS_OPTIMAL, statuses)
 
     def test_execution_status(self):
         execution = self.test_create_execution()
-        self.assertEqual(STATUS_QUEUED, execution["state"])
 
-        time.sleep(4)
-        response = self.client.get_status(execution["id"])
-        items = ["id", "state", "message", "data_hash"]
-        for item in items:
-            self.assertIn(item, response.keys())
-        self.assertEqual(STATUS_NOT_SOLVED, response["state"])
+        statuses = self.check_execution_statuses(execution["id"])
 
-        time.sleep(10)
+        self.assertIn(STATUS_NOT_SOLVED, statuses)
+        self.assertIn(STATUS_OPTIMAL, statuses)
+
+        items = ["id", "state", "message", "data_hash"]
         response = self.client.get_status(execution["id"])
         for item in items:
             self.assertIn(item, response.keys())
-        self.assertEqual(STATUS_OPTIMAL, response["state"])
 
     def test_stop_execution(self):
         execution = self.test_create_execution()
@@ -277,7 +287,9 @@ def test_get_execution_log(self):
 
     def test_get_execution_solution(self):
         execution = self.test_create_execution()
-        time.sleep(15)
+        response = self.client.get_status(execution["id"])
+        statuses = self.check_execution_statuses(execution["id"])
+
         response = self.client.get_solution(execution["id"])
         items = [
             "id",
@@ -299,13 +311,16 @@ def test_get_execution_solution(self):
             self.assertIn(item, response.keys())
 
         self.assertEqual(execution["id"], response["id"])
-        self.assertEqual(STATUS_OPTIMAL, response["state"])
+        self.assertIn(STATUS_NOT_SOLVED, statuses)
+        self.assertIn(STATUS_OPTIMAL, statuses)
 
         return response
 
     def test_put_one_execution(self):
         execution = self.test_create_execution()
-        response = self.client.put_one_execution(execution["id"], {"name": "new_execution_name"})
+        response = self.client.put_one_execution(
+            execution["id"], {"name": "new_execution_name"}
+        )
         self.assertEqual("Updated correctly", response["message"])
 
     def test_delete_one_execution(self):
@@ -390,7 +405,7 @@ def test_get_one_instance(self):
         for item in items:
             self.assertIn(item, response.keys())
             self.assertEqual(instance[item], response[item])
-            
+
     def test_get_one_instance_data(self):
         instance = self.test_create_instance()
         response = self.client.get_one_instance_data(instance["id"])
@@ -401,7 +416,7 @@ def test_get_one_instance_data(self):
             "created_at",
             "user_id",
             "data_hash",
-            "schema"
+            "schema",
         ]
 
         self.assertIn("data", response.keys())
@@ -411,7 +426,9 @@ def test_get_one_instance_data(self):
 
     def test_put_one_instance(self):
         instance = self.test_create_instance()
-        response = self.client.put_one_instance(instance["id"], {"name": "new_instance_name"})
+        response = self.client.put_one_instance(
+            instance["id"], {"name": "new_instance_name"}
+        )
         self.assertEqual("Updated correctly", response["message"])
 
     def test_get_one_case(self):
@@ -434,7 +451,7 @@ def test_get_one_case(self):
         for item in items:
             self.assertIn(item, response.keys())
             self.assertEqual(case[item], response[item])
-            
+
     def test_get_one_case_data(self):
         case = self.test_create_case()
         response = self.client.get_one_case_data(case["id"])
@@ -508,7 +525,7 @@ def test_get_schema(self):
         schema["config"]["properties"]["solver"]["enum"] = pl.listSolvers()
         schema["config"]["properties"]["solver"]["default"] = "PULP_CBC_CMD"
 
-        for (key, value) in schema.items():
+        for key, value in schema.items():
             self.assertDictEqual(value, response[key])
 
     def test_get_all_schemas(self):
@@ -518,6 +535,15 @@ def test_get_all_schemas(self):
         for schema in PUBLIC_DAGS:
             self.assertIn(schema, read_schemas)
 
+    def test_get_example_list(self):
+        response = self.client.get_example_list("rostering")
+        self.assertEqual(7, len(response))
+
+    def test_get_one_example(self):
+        response = self.client.get_one_example("rostering", "Base case")
+        self.assertIn("instance", response)
+        self.assertIn("solution", response)
+
 
 class TestCornflowClientAdmin(TestCase):
     def setUp(self):
@@ -618,7 +644,6 @@ def test_get_deployed_dags(self):
             self.assertIn(dag, deployed_dags)
 
     def test_post_deployed_dag(self):
-
         response = self.client.create_deployed_dag(
             name="test_dag",
             description="test_dag_description",
@@ -626,7 +651,7 @@ def test_post_deployed_dag(self):
             instance_checks_schema=dict(),
             solution_schema=dict(),
             solution_checks_schema=dict(),
-            config_schema=dict()
+            config_schema=dict(),
         )
 
         items = ["id", "description"]
diff --git a/libs/client/cornflow_client/tests/integration/test_raw_cornflow_integration.py b/libs/client/cornflow_client/tests/integration/test_raw_cornflow_integration.py
index accec82a9..c4dcf147f 100644
--- a/libs/client/cornflow_client/tests/integration/test_raw_cornflow_integration.py
+++ b/libs/client/cornflow_client/tests/integration/test_raw_cornflow_integration.py
@@ -3,16 +3,14 @@
 Base, admin and service user get tested
 Integration between Airflow and cornflow through airflow client and cornflow client tested as well
 """
-# Full imports
+
 import json
 import os
-import pulp as pl
 import time
-
-# Partial imports
 from unittest import TestCase
 
-# Internal imports
+import pulp as pl
+
 from cornflow_client import CornFlow
 from cornflow_client.constants import STATUS_OPTIMAL, STATUS_NOT_SOLVED, STATUS_QUEUED
 from cornflow_client.schema.tools import get_pulp_jsonschema
@@ -21,6 +19,7 @@
 # Constants
 path_to_tests_dir = os.path.dirname(os.path.abspath(__file__))
 
+
 # Helper functions
 def _load_file(_file):
     with open(_file) as f:
@@ -46,6 +45,32 @@ def setUp(self):
     def tearDown(self):
         pass
 
+    def check_execution_statuses(
+        self, execution_id, end_state=STATUS_OPTIMAL, initial_state=None
+    ):
+        if initial_state is None:
+            statuses = [initial_state]
+        else:
+            statuses = []
+        response = self.client.raw.get_status(execution_id)
+        statuses.append(response.json()["state"])
+        while end_state not in statuses and len(statuses) < 100:
+            time.sleep(2)
+            response = self.client.raw.get_status(execution_id)
+            statuses.append(response.json()["state"])
+
+        self.assertIn(STATUS_QUEUED, statuses)
+        self.assertIn(STATUS_NOT_SOLVED, statuses)
+        self.assertIn(end_state, statuses)
+
+        queued_idx = statuses.index(STATUS_QUEUED)
+        not_solved_idx = statuses.index(STATUS_NOT_SOLVED)
+        end_state_idx = statuses.index(end_state)
+        self.assertLess(queued_idx, not_solved_idx)
+        self.assertLess(not_solved_idx, end_state_idx)
+
+        return statuses
+
     def test_health_endpoint(self):
         response = self.client.raw.is_alive()
         self.assertEqual(response.status_code, 200)
@@ -64,7 +89,9 @@ def test_sign_up(self):
 
     def test_create_instance(self):
         data = _load_file(PULP_EXAMPLE)
-        response = self.client.raw.create_instance(data, "test_example", "test_description")
+        response = self.client.raw.create_instance(
+            data, "test_example", "test_description"
+        )
         self.assertEqual(response.status_code, 201)
         instance = response.json()
 
@@ -183,7 +210,9 @@ def test_create_execution(self):
 
     def test_create_execution_data_check(self):
         exec_to_check = self.test_create_execution()
-        time.sleep(15)
+
+        statuses = self.check_execution_statuses(exec_to_check["id"])
+
         exec_to_check_id = exec_to_check["id"]
         response = self.client.raw.create_execution_data_check(exec_to_check_id)
         execution = response.json()
@@ -192,7 +221,11 @@ def test_create_execution_data_check(self):
 
     def test_execution_data_check_solution(self):
         execution = self.test_create_execution_data_check()
-        time.sleep(15)
+
+        statuses = self.check_execution_statuses(
+            execution["id"], initial_state=execution["state"]
+        )
+
         results = self.client.raw.get_solution(execution["id"])
         self.assertEqual(results.status_code, 200)
         self.assertEqual(results.json()["state"], 1)
@@ -225,7 +258,9 @@ def test_instance_data_check_solution(self):
 
     def test_execution_results(self):
         execution = self.test_create_execution()
-        time.sleep(10)
+
+        statuses = self.check_execution_statuses(execution["id"])
+
         response = self.client.raw.get_results(execution["id"])
         self.assertEqual(response.status_code, 200)
         response = response.json()
@@ -248,27 +283,21 @@ def test_execution_results(self):
             self.assertIn(item, response.keys())
 
         self.assertEqual(execution["id"], response["id"])
-        self.assertEqual(STATUS_OPTIMAL, response["state"])
+        self.assertIn(STATUS_NOT_SOLVED, statuses)
+        self.assertIn(STATUS_OPTIMAL, statuses)
 
     def test_execution_status(self):
         execution = self.test_create_execution()
-        self.assertEqual(STATUS_QUEUED, execution["state"])
 
-        time.sleep(4)
-        response = self.client.raw.get_status(execution["id"])
-        self.assertEqual(response.status_code, 200)
-        response = response.json()
-        items = ["id", "state", "message", "data_hash"]
-        for item in items:
-            self.assertIn(item, response.keys())
-        self.assertEqual(STATUS_NOT_SOLVED, response["state"])
+        statuses = self.check_execution_statuses(execution["id"])
+
+        self.assertIn(STATUS_NOT_SOLVED, statuses)
+        self.assertIn(STATUS_OPTIMAL, statuses)
 
-        time.sleep(10)
+        items = ["id", "state", "message", "data_hash"]
         response = self.client.raw.get_status(execution["id"])
-        self.assertEqual(response.status_code, 200)
         for item in items:
             self.assertIn(item, response.json().keys())
-        self.assertEqual(STATUS_OPTIMAL, response.json()["state"])
 
     def test_stop_execution(self):
         execution = self.test_create_execution()
@@ -302,7 +331,9 @@ def test_get_execution_log(self):
 
     def test_get_execution_solution(self):
         execution = self.test_create_execution()
-        time.sleep(15)
+
+        statuses = self.check_execution_statuses(execution["id"])
+
         response = self.client.raw.get_solution(execution["id"])
         self.assertEqual(response.status_code, 200)
         response = response.json()
@@ -326,13 +357,16 @@ def test_get_execution_solution(self):
             self.assertIn(item, response.keys())
 
         self.assertEqual(execution["id"], response["id"])
-        self.assertEqual(STATUS_OPTIMAL, response["state"])
+        self.assertIn(STATUS_NOT_SOLVED, statuses)
+        self.assertIn(STATUS_OPTIMAL, statuses)
 
         return response
 
     def test_put_one_execution(self):
         execution = self.test_create_execution()
-        response = self.client.raw.put_one_execution(execution["id"], {"name": "new_execution_name"})
+        response = self.client.raw.put_one_execution(
+            execution["id"], {"name": "new_execution_name"}
+        )
         self.assertEqual(200, response.status_code)
         self.assertEqual("Updated correctly", response.json()["message"])
 
@@ -440,7 +474,7 @@ def test_get_one_instance_data(self):
             "created_at",
             "user_id",
             "data_hash",
-            "schema"
+            "schema",
         ]
 
         self.assertIn("data", response.keys())
@@ -450,7 +484,9 @@ def test_get_one_instance_data(self):
 
     def test_put_one_instance(self):
         instance = self.test_create_instance()
-        response = self.client.raw.put_one_instance(instance["id"], {"name": "new_instance_name"})
+        response = self.client.raw.put_one_instance(
+            instance["id"], {"name": "new_instance_name"}
+        )
         self.assertEqual(response.status_code, 200)
         self.assertEqual("Updated correctly", response.json()["message"])
 
@@ -559,7 +595,7 @@ def test_get_schema(self):
         schema["config"]["properties"]["solver"]["enum"] = pl.listSolvers()
         schema["config"]["properties"]["solver"]["default"] = "PULP_CBC_CMD"
 
-        for (key, value) in schema.items():
+        for key, value in schema.items():
             self.assertDictEqual(value, response[key])
 
     def test_get_all_schemas(self):
@@ -614,7 +650,9 @@ def test_get_execution_data(self):
         client = CornFlow(url="http://127.0.0.1:5050/")
         _ = client.login("user", "UserPassword1!")
         data = _load_file(PULP_EXAMPLE)
-        instance = client.raw.create_instance(data, "test_example", "test_description").json()
+        instance = client.raw.create_instance(
+            data, "test_example", "test_description"
+        ).json()
         execution = client.raw.create_execution(
             instance_id=instance["id"],
             config={"solver": "PULP_CBC_CMD", "timeLimit": 60},
@@ -638,7 +676,9 @@ def test_write_execution_solution(self):
         client = CornFlow(url="http://127.0.0.1:5050/")
         _ = client.login("user", "UserPassword1!")
         data = _load_file(PULP_EXAMPLE)
-        instance = client.raw.create_instance(data, "test_example", "test_description").json()
+        instance = client.raw.create_instance(
+            data, "test_example", "test_description"
+        ).json()
         execution = client.raw.create_execution(
             instance_id=instance["id"],
             config={"solver": "PULP_CBC_CMD", "timeLimit": 60},
@@ -674,7 +714,6 @@ def test_get_deployed_dags(self):
             self.assertIn(dag, deployed_dags)
 
     def test_post_deployed_dag(self):
-
         response = self.client.raw.create_deployed_dag(
             name="test_dag_2",
             description="test_dag_2_description",
@@ -682,7 +721,7 @@ def test_post_deployed_dag(self):
             instance_checks_schema=dict(),
             solution_schema=dict(),
             solution_checks_schema=dict(),
-            config_schema=dict()
+            config_schema=dict(),
         )
         self.assertEqual(response.status_code, 201)
         response = response.json()
@@ -692,4 +731,4 @@ def test_post_deployed_dag(self):
         for item in items:
             self.assertIn(item, response.keys())
         self.assertEqual("test_dag_2", response["id"])
-        self.assertEqual("test_dag_2_description", response["description"])
\ No newline at end of file
+        self.assertEqual("test_dag_2_description", response["description"])
diff --git a/libs/client/cornflow_client/tests/unit/test_abc.py b/libs/client/cornflow_client/tests/unit/test_abc.py
index 66f9b3a94..36998ef86 100644
--- a/libs/client/cornflow_client/tests/unit/test_abc.py
+++ b/libs/client/cornflow_client/tests/unit/test_abc.py
@@ -63,7 +63,7 @@ def test_check_data(self):
         self.assertIsInstance(inst_check, dict)
         self.assertIsInstance(sol_check, dict)
         self.assertIsInstance(log, dict)
-        self.assertEqual(log.get('status'), "Optimal")
+        self.assertEqual(log.get("status"), "Optimal")
 
 
 class GoodInstanceClass(InstanceCore):
diff --git a/libs/client/cornflow_client/tests/unit/test_core.py b/libs/client/cornflow_client/tests/unit/test_core.py
new file mode 100644
index 000000000..8f79249b0
--- /dev/null
+++ b/libs/client/cornflow_client/tests/unit/test_core.py
@@ -0,0 +1,172 @@
+import logging
+import time
+from unittest import TestCase
+
+from jsonschema import Draft7Validator
+from pytups import SuperDict
+
+from cornflow_client import (
+    ApplicationCore,
+    InstanceCore,
+    get_empty_schema,
+    ExperimentCore,
+    SolutionCore,
+    SchemaManager,
+)
+from cornflow_client.constants import (
+    STATUS_OPTIMAL,
+    SOLUTION_STATUS_FEASIBLE,
+    NoSolverException,
+    BadSolution,
+)
+
+
+class TestCore(TestCase):
+    def setUp(self):
+        class DummyInstance(InstanceCore):
+            schema = get_empty_schema(properties=dict(seconds=dict(type="number")))
+            schema_checks = get_empty_schema(
+                properties=dict(check=dict(type="array", objects=dict(type="number")))
+            )
+
+            def check(self):
+                return dict(check=[1]) if self.data.get("seconds", 1) == 2 else dict()
+
+        class DummySolution(SolutionCore):
+            schema = get_empty_schema(properties=dict(sleep=dict(type="number")))
+
+        class DummySolver(ExperimentCore):
+            schema_checks = get_empty_schema()
+
+            def solve(self, options):
+                seconds = options.get("seconds", 60)
+                seconds = options.get("timeLimit", seconds)
+
+                logging.info(f"sleep started for {seconds} seconds")
+                time.sleep(seconds)
+                logging.info("sleep finished")
+                self.solution = DummySolution({"sleep": seconds})
+                return dict(status=STATUS_OPTIMAL, status_sol=SOLUTION_STATUS_FEASIBLE)
+
+            def get_objective(self) -> float:
+                return 0
+
+            def check_solution(self, *args, **kwargs):
+                return dict()
+
+        class DummierSolver(DummySolver):
+            def solve(self, options):
+                return 1
+
+        class DummyApp(ApplicationCore):
+            name = "timer"
+            instance = DummyInstance
+            solution = DummySolution
+            solvers = dict(
+                default=DummySolver,
+                dummier=DummierSolver,
+            )
+            schema = get_empty_schema(
+                properties=dict(
+                    seconds=dict(type="number"), timeLimit=dict(type="number")
+                ),
+                solvers=list(solvers.keys()),
+            )
+
+            @property
+            def test_cases(self):
+                return [({"seconds": 1}, {}), {"seconds": 2}]
+
+        self.instance = DummyInstance({})
+        self.solver = DummySolver(self.instance)
+        self.app = DummyApp()
+
+        self.config = SuperDict(msg=False, timeLimit=1, solver="default", seconds=10)
+
+    def tearDown(self):
+        pass
+
+    def test_application_solve(self):
+        tests = self.app.test_cases
+        for pos, data in enumerate(tests):
+            data_out = None
+            if isinstance(data, tuple):
+                # sometimes we have input and output
+                data, data_out = data
+            marshm = SchemaManager(self.app.instance.schema).jsonschema_to_flask()
+            marshm().load(data)
+            if data_out is not None:
+                (
+                    solution_data,
+                    solution_check,
+                    inst_check,
+                    log,
+                    log_dict,
+                ) = self.app.solve(data, self.config, data_out)
+            else:
+                # for compatibility with previous format
+                (
+                    solution_data,
+                    solution_check,
+                    inst_check,
+                    log,
+                    log_dict,
+                ) = self.app.solve(data, self.config)
+
+            instance = self.app.instance.from_dict(data)
+
+            if inst_check != {}:
+                validator = Draft7Validator(instance.schema_checks)
+                if not validator.is_valid(inst_check):
+                    raise Exception("The instance checks have invalid format")
+                continue
+
+            if solution_data is None:
+                raise ValueError("No solution found")
+            marshm = SchemaManager(self.app.solution.schema).jsonschema_to_flask()
+            validator = Draft7Validator(self.app.solution.schema)
+            if not validator.is_valid(solution_data):
+                raise Exception("The solution has invalid format")
+
+            self.assertTrue(len(solution_data) > 0)
+
+            solution = self.app.solution.from_dict(solution_data)
+            s = self.app.get_default_solver_name()
+            experim = self.app.get_solver(s)(instance, solution)
+            checks = experim.check_solution()
+            if len(checks) > 0:
+                print(
+                    f"Test instance with position {pos} failed with the following checks:"
+                )
+                for check in checks:
+                    print(check)
+            experim.get_objective()
+
+            validator = Draft7Validator(experim.schema_checks)
+            if not validator.is_valid(solution_check):
+                raise Exception("The solution checks have invalid format")
+
+    def test_solver_config(self):
+        self.solver.get_solver_config(self.config)
+
+    def test_second_solver(self):
+        self.config["solver"] = "dummier"
+        self.app.solve({}, self.config)
+
+    def test_even_dummier_solver(self):
+        self.assertRaises(
+            BadSolution, self.app.solve, {}, self.config, {"sleep": "SOME TEXT"}
+        )
+
+    def test_get_schemas(self):
+        schemas = self.app.get_schemas()
+        self.assertTrue(len(schemas) > 0)
+        self.assertTrue("instance" in schemas)
+        self.assertTrue("solution" in schemas)
+        self.assertTrue("config" in schemas)
+        self.assertTrue("instance_checks" in schemas)
+        self.assertTrue("solution_checks" in schemas)
+        self.assertEqual(schemas["solution_checks"], get_empty_schema())
+
+    def test_notify(self):
+        self.assertFalse(self.app.notify)