diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/cerc_persistence.iml b/.idea/cerc_persistence.iml
new file mode 100644
index 0000000..e2ac58d
--- /dev/null
+++ b/.idea/cerc_persistence.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..29a294b
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..89f7164
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index bff34cf..9957463 100644
--- a/README.md
+++ b/README.md
@@ -1,32 +1,47 @@
+## TODO
+
+- Figure out what version to put
+
## Database Persistence ##
+
The persistence package includes classes to store different class objects in a Postgres database.
### models ###
+
This defines models for all class objects that we want to persist. It is used for Object Relation Mapping (ORM)
of the class objects to database table columns
### repositories ###
-This defines repository classes that contain CRUD methods for database operations. The constructor of all repositories requires
+
+This defines repository classes that contain CRUD methods for database operations. The constructor of all repositories
+requires
The database name to connect to and the application environment (PROD or TEST). Tests use a different database
from the production environment, which is why this is necessary. An example is shown below
```python
-from hub.persistence import CityRepo
+from cerc_persistence import CityRepo
# instantiate city repo for hub production database
city_repo = CityRepo(db_name='hub', app_env='PROD')
```
+
All database operations are conducted with the production database (*PROD*) named *hub* in the example above
### config_db ##
-This Python file is a configuration class that contains variables that map to configuration parameters in a .env file.
+
+This Python file is a configuration class that contains variables that map to configuration parameters in a .env file.
It also contains a method ``def conn_string()`` which returns the connection string to a Postgres database.
### Base ##
-This class has a constructor that establishes a database connection and returns a reference for database-related CRUD operations.
+
+This class has a constructor that establishes a database connection and returns a reference for database-related CRUD
+operations.
### Database Configuration Parameter ###
-A .env file (or environment variables) with configuration parameters described below are needed to establish a database connection:
+
+A .env file (or environment variables) with configuration parameters described below are needed to establish a database
+connection:
+
```
# production database credentials
PROD_DB_USER=postgres-database-user
@@ -42,8 +57,9 @@ TEST_DB_PORT=database-port
```
### Database Related Unit Test
+
Unit tests that involve database operations require a Postgres database to be set up.
-The tests connect to the database server using the default postgres user (*postgres*).
+The tests connect to the database server using the default postgres user (*postgres*).
NB: You can provide any credentials for the test to connect to postgres, just make sure
the credentials are set in your .env file as explained above in *Database Configuration Parameters* section
diff --git a/__init__.py b/cerc_persistence/__init__.py
similarity index 100%
rename from __init__.py
rename to cerc_persistence/__init__.py
diff --git a/cerc_persistence/configuration.py b/cerc_persistence/configuration.py
new file mode 100644
index 0000000..71e69a3
--- /dev/null
+++ b/cerc_persistence/configuration.py
@@ -0,0 +1,67 @@
+"""
+Persistence (Postgresql) configuration
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Peter Yefi peteryefi@gmail.com
+"""
+
+import logging
+import os
+from pathlib import Path
+from dotenv import load_dotenv
+from sqlalchemy.ext.declarative import declarative_base
+
+Models = declarative_base()
+
+
+class Configuration:
+ """
+ Configuration class to hold common persistence configuration
+ """
+
+ def __init__(self, db_name: str, dotenv_path: str, app_env='TEST'):
+ """
+ :param db_name: database name
+ :param app_env: application environment, test or production
+ :param dotenv_path: the absolute path to dotenv file
+ """
+ try:
+ # load environmental variables
+ if not Path(dotenv_path).exists():
+ error_message = f'dotenv file doesn\'t exists at {dotenv_path}'
+ logging.error(error_message)
+ raise FileNotFoundError(error_message)
+ load_dotenv(dotenv_path=dotenv_path)
+
+ self._db_name = db_name
+ self._db_host = os.getenv(f'{app_env}_DB_HOST')
+ self._db_user = os.getenv(f'{app_env}_DB_USER')
+ self._db_pass = os.getenv(f'{app_env}_DB_PASSWORD')
+ self._db_port = os.getenv(f'{app_env}_DB_PORT')
+ self.hub_token = os.getenv('HUB_TOKEN')
+ except KeyError as err:
+ logging.error('Error with credentials: %s', err)
+
+ @property
+ def connection_string(self):
+ """
+ Returns a connection string postgresql
+ :return: connection string
+ """
+ if self._db_pass:
+ return f'postgresql://{self._db_user}:{self._db_pass}@{self._db_host}:{self._db_port}/{self._db_name}'
+ return f'postgresql://{self._db_user}@{self._db_host}:{self._db_port}/{self._db_name}'
+
+ @property
+ def db_user(self):
+ """
+ retrieve the configured username
+ """
+ return self._db_user
+
+ @property
+ def db_name(self):
+ """
+ retrieve the configured database name
+ """
+ return self._db_name
diff --git a/cerc_persistence/db_control.py b/cerc_persistence/db_control.py
new file mode 100644
index 0000000..c3f67aa
--- /dev/null
+++ b/cerc_persistence/db_control.py
@@ -0,0 +1,248 @@
+"""
+DBFactory performs read related operations
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project CoderPeter Yefi peteryefi@gmail.com
+"""
+import json
+from typing import Dict
+
+from cerc_persistence.repositories.application import Application
+from cerc_persistence.repositories.city import City
+from cerc_persistence.repositories.city_object import CityObject
+from cerc_persistence.repositories.simulation_results import SimulationResults
+from cerc_persistence.repositories.user import User
+from cerc_persistence.repositories.user import UserRoles
+
+
+class DBControl:
+ """
+ DBFactory class
+ """
+
+ def __init__(self, db_name, app_env, dotenv_path):
+ self._city = City(db_name=db_name, dotenv_path=dotenv_path, app_env=app_env)
+ self._application = Application(db_name=db_name, app_env=app_env, dotenv_path=dotenv_path)
+ self._user = User(db_name=db_name, app_env=app_env, dotenv_path=dotenv_path)
+ self._city_object = CityObject(db_name=db_name, app_env=app_env, dotenv_path=dotenv_path)
+ self._simulation_results = SimulationResults(db_name=db_name, dotenv_path=dotenv_path, app_env=app_env)
+
+ def application_info(self, application_uuid) -> Application:
+ """
+ Retrieve the application info for the given uuid from the database
+ :param application_uuid: the uuid for the application
+ :return: Application
+ """
+ return self._application.get_by_uuid(application_uuid)
+
+ def user_info(self, name, password, application_id) -> User:
+ """
+ Retrieve the user info for the given name and password and application_id from the database
+ :param name: the username
+ :param password: the user password
+ :param application_id: the application id
+ :return: User
+ """
+ return self._user.get_by_name_application_id_and_password(name, password, application_id)
+
+ def user_login(self, name, password, application_uuid) -> User:
+ """
+ Retrieve the user info from the database
+ :param name: the username
+ :param password: the user password
+ :param application_uuid: the application uuid
+ :return: User
+ """
+ return self._user.get_by_name_application_uuid_and_password(name, password, application_uuid)
+
+ def cities_by_user_and_application(self, user_id, application_id) -> [City]:
+ """
+ Retrieve the cities belonging to the user and the application from the database
+ :param user_id: User id
+ :param application_id: Application id
+ :return: [City]
+ """
+ return self._city.get_by_user_id_and_application_id(user_id, application_id)
+
+ def building(self, name, user_id, application_id, scenario) -> CityObject:
+ """
+ Retrieve the building from the database
+ :param name: Building name
+ :param user_id: User id
+ :param application_id: Application id
+ :param scenario: Scenario
+ :
+ """
+ cities = self._city.get_by_user_id_application_id_and_scenario(user_id, application_id, scenario)
+ for city in cities:
+ result = self.building_info(name, city[0].id)
+ if result is not None:
+ return result
+ return None
+
+ def building_info(self, name, city_id) -> CityObject:
+ """
+ Retrieve the building info from the database
+ :param name: Building name
+ :param city_id: City ID
+ :return: CityObject
+ """
+ return self._city_object.get_by_name_or_alias_and_city(name, city_id)
+
+ def buildings_info(self, request_values, city_id) -> [CityObject]:
+ """
+ Retrieve the buildings info from the database
+ :param request_values: Building names
+ :param city_id: City ID
+ :return: [CityObject]
+ """
+ buildings = []
+ for name in request_values['names']:
+ buildings.append(self.building_info(name, city_id))
+ return buildings
+
+ def results(self, user_id, application_id, request_values, result_names=None) -> Dict:
+ """
+ Retrieve the simulation results for the given cities from the database
+ :param user_id: the user id owning the results
+ :param application_id: the application id owning the results
+ :param request_values: dictionary containing the scenario and building names to grab the results
+ :param result_names: if given, filter the results to the selected names
+ """
+ if result_names is None:
+ result_names = []
+ results = {}
+ for scenario in request_values['scenarios']:
+ for scenario_name in scenario.keys():
+ result_sets = self._city.get_by_user_id_application_id_and_scenario(
+ user_id,
+ application_id,
+ scenario_name
+ )
+ if result_sets is None:
+ continue
+ for result_set in result_sets:
+ city_id = result_set[0].id
+
+ results[scenario_name] = []
+ for building_name in scenario[scenario_name]:
+ _building = self._city_object.get_by_name_or_alias_and_city(building_name, city_id)
+ if _building is None:
+ continue
+ city_object_id = _building.id
+ _ = self._simulation_results.get_simulation_results_by_city_id_city_object_id_and_names(
+ city_id,
+ city_object_id,
+ result_names)
+
+ for value in _:
+ values = json.loads(value.values)
+ values["building"] = building_name
+ results[scenario_name].append(values)
+ return results
+
+ def persist_city(self, city: City, pickle_path, scenario, application_id: int, user_id: int):
+ """
+ Creates a city into the database
+ :param city: City to be stored
+ :param pickle_path: Path to save the pickle file
+ :param scenario: Simulation scenario name
+ :param application_id: Application id owning this city
+ :param user_id: User who create the city
+ return identity_id
+ """
+ return self._city.insert(city, pickle_path, scenario, application_id, user_id)
+
+ def update_city(self, city_id, city):
+ """
+ Update an existing city in the database
+ :param city_id: the id of the city to update
+ :param city: the updated city object
+ """
+ return self._city.update(city_id, city)
+
+ def persist_application(self, name: str, description: str, application_uuid: str):
+ """
+ Creates information for an application in the database
+ :param name: name of application
+ :param description: the description of the application
+ :param application_uuid: the uuid of the application to be created
+ """
+ return self._application.insert(name, description, application_uuid)
+
+ def update_application(self, name: str, description: str, application_uuid: str):
+ """
+ Update the application information stored in the database
+ :param name: name of application
+ :param description: the description of the application
+ :param application_uuid: the uuid of the application to be created
+ """
+ return self._application.update(application_uuid, name, description)
+
+ def add_simulation_results(self, name, values, city_id=None, city_object_id=None):
+ """
+ Add simulation results to the city or to the city_object to the database
+ :param name: simulation and simulation engine name
+ :param values: simulation values in json format
+ :param city_id: city id or None
+ :param city_object_id: city object id or None
+ """
+ return self._simulation_results.insert(name, values, city_id, city_object_id)
+
+ def create_user(self, name: str, application_id: int, password: str, role: UserRoles):
+ """
+ Creates a new user in the database
+ :param name: the name of the user
+ :param application_id: the application id of the user
+ :param password: the password of the user
+ :param role: the role of the user
+ """
+ return self._user.insert(name, password, role, application_id)
+
+ def update_user(self, user_id: int, name: str, password: str, role: UserRoles):
+ """
+ Updates a user in the database
+ :param user_id: the id of the user
+ :param name: the name of the user
+ :param password: the password of the user
+ :param role: the role of the user
+ """
+ return self._user.update(user_id, name, password, role)
+
+ def get_by_name_and_application(self, name: str, application: int):
+ """
+ Retrieve a single user from the database
+ :param name: username
+ :param application: application accessing hub
+ """
+ return self._user.get_by_name_and_application(name, application)
+
+ def delete_user(self, user_id):
+ """
+ Delete a single user from the database
+ :param user_id: the id of the user to delete
+ """
+ self._user.delete(user_id)
+
+ def delete_city(self, city_id):
+ """
+ Deletes a single city from the database
+ :param city_id: the id of the city to get
+ """
+ self._city.delete(city_id)
+
+ def delete_results_by_name(self, name, city_id=None, city_object_id=None):
+ """
+ Deletes city object simulation results from the database
+ :param name: simulation name
+ :param city_id: if given, delete delete the results for the city with id city_id
+ :param city_object_id: if given, delete delete the results for the city object with id city_object_id
+ """
+ self._simulation_results.delete(name, city_id=city_id, city_object_id=city_object_id)
+
+ def delete_application(self, application_uuid):
+ """
+ Deletes a single application from the database
+ :param application_uuid: the id of the application to get
+ """
+ self._application.delete(application_uuid)
diff --git a/cerc_persistence/db_setup.py b/cerc_persistence/db_setup.py
new file mode 100644
index 0000000..bb97dc4
--- /dev/null
+++ b/cerc_persistence/db_setup.py
@@ -0,0 +1,70 @@
+"""
+Database setup
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Peter Yefi peteryefi@gmail.com
+"""
+
+import logging
+from cerc_persistence.repository import Repository
+from cerc_persistence.models import Application
+from cerc_persistence.models import City
+from cerc_persistence.models import CityObject
+from cerc_persistence.models import User
+from cerc_persistence.models import UserRoles
+from cerc_persistence.models import SimulationResults
+from cerc_persistence.repositories.user import User as UserRepository
+from cerc_persistence.repositories.application import Application as ApplicationRepository
+
+
+class DBSetup:
+ """
+ Creates a Persistence database structure
+ """
+
+ def __init__(self, db_name, app_env, dotenv_path, admin_password, application_uuid):
+ """
+ Creates database tables a default admin user and a default admin app with the given password and uuid
+ :param db_name: database name
+ :param app_env: application environment type [TEST|PROD]
+ :param dotenv_path: .env file path
+ :param admin_password: administrator password for the application uuid
+ :application_uuid: application uuid
+ """
+ repository = Repository(db_name=db_name, app_env=app_env, dotenv_path=dotenv_path)
+
+ # Create the tables using the models
+ Application.__table__.create(bind=repository.engine, checkfirst=True)
+ User.__table__.create(bind=repository.engine, checkfirst=True)
+ City.__table__.create(bind=repository.engine, checkfirst=True)
+ CityObject.__table__.create(bind=repository.engine, checkfirst=True)
+ SimulationResults.__table__.create(bind=repository.engine, checkfirst=True)
+
+ self._user_repo = UserRepository(db_name=db_name, app_env=app_env, dotenv_path=dotenv_path)
+ self._application_repo = ApplicationRepository(db_name=db_name, app_env=app_env, dotenv_path=dotenv_path)
+ application_id = self._create_admin_app(self._application_repo, application_uuid)
+ self._create_admin_user(self._user_repo, admin_password, application_id)
+
+ @staticmethod
+ def _create_admin_app(application_repo, application_uuid):
+ name = 'AdminTool'
+ description = 'Admin tool to control city persistence and to test the API v1.4'
+ logging.info('Creating default admin tool application...')
+ application = application_repo.insert(name, description, application_uuid)
+
+ if isinstance(application, dict):
+ logging.info(application)
+ else:
+ msg = f'Created Admin tool with application_uuid: {application_uuid}'
+ logging.info(msg)
+ return application.id
+
+ @staticmethod
+ def _create_admin_user(user_repo, admin_password, application_id):
+ password = admin_password
+ logging.info('Creating default admin user...')
+ user = user_repo.insert('Administrator', password, UserRoles.Admin, application_id)
+ if isinstance(user, dict):
+ logging.info(user)
+ else:
+ logging.info('Created Admin user')
diff --git a/models/__init__.py b/cerc_persistence/models/__init__.py
similarity index 100%
rename from models/__init__.py
rename to cerc_persistence/models/__init__.py
diff --git a/cerc_persistence/models/application.py b/cerc_persistence/models/application.py
new file mode 100644
index 0000000..9528585
--- /dev/null
+++ b/cerc_persistence/models/application.py
@@ -0,0 +1,32 @@
+"""
+Model representation of an application
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Guille Gutierrez Guillermo.GutierrezMorote@concordia.ca
+"""
+
+import datetime
+
+from sqlalchemy import Column, Integer, String, Sequence
+from sqlalchemy import DateTime
+from sqlalchemy.dialects.postgresql import UUID
+
+from cerc_persistence.configuration import Models
+
+
+class Application(Models):
+ """
+ A model representation of an application
+ """
+ __tablename__ = 'application'
+ id = Column(Integer, Sequence('application_id_seq'), primary_key=True)
+ name = Column(String, nullable=False)
+ description = Column(String, nullable=False)
+ application_uuid = Column(UUID(as_uuid=True), nullable=False)
+ created = Column(DateTime, default=datetime.datetime.utcnow)
+ updated = Column(DateTime, default=datetime.datetime.utcnow)
+
+ def __init__(self, name, description, application_uuid):
+ self.name = name
+ self.description = description
+ self.application_uuid = application_uuid
diff --git a/cerc_persistence/models/city.py b/cerc_persistence/models/city.py
new file mode 100644
index 0000000..6247415
--- /dev/null
+++ b/cerc_persistence/models/city.py
@@ -0,0 +1,36 @@
+"""
+Model representation of a City
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Peter Yefi peteryefi@gmail.com
+"""
+
+import datetime
+
+from sqlalchemy import Column, Integer, String, Sequence, ForeignKey
+from sqlalchemy import DateTime
+
+from cerc_persistence.configuration import Models
+
+
+class City(Models):
+ """A model representation of a city
+ """
+ __tablename__ = 'city'
+ id = Column(Integer, Sequence('city_id_seq'), primary_key=True)
+ pickle_path = Column(String, nullable=False)
+ name = Column(String, nullable=False)
+ scenario = Column(String, nullable=False)
+ application_id = Column(Integer, ForeignKey('application.id', ondelete='CASCADE'), nullable=False)
+ user_id = Column(Integer, ForeignKey('user.id', ondelete='CASCADE'), nullable=True)
+ hub_release = Column(String, nullable=False)
+ created = Column(DateTime, default=datetime.datetime.utcnow)
+ updated = Column(DateTime, default=datetime.datetime.utcnow)
+
+ def __init__(self, pickle_path, name, scenario, application_id, user_id, hub_release):
+ self.pickle_path = str(pickle_path)
+ self.name = name
+ self.scenario = scenario
+ self.application_id = application_id
+ self.user_id = user_id
+ self.hub_release = hub_release
diff --git a/cerc_persistence/models/city_object.py b/cerc_persistence/models/city_object.py
new file mode 100644
index 0000000..a5f3044
--- /dev/null
+++ b/cerc_persistence/models/city_object.py
@@ -0,0 +1,81 @@
+"""
+Model representation of a city object
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Guille Gutierrez Guillermo.GutierrezMorote@concordia.ca
+"""
+
+import datetime
+import logging
+
+from sqlalchemy import Column, Integer, String, Sequence, ForeignKey, Float
+from sqlalchemy import DateTime
+
+from hub.city_model_structure.building import Building
+from cerc_persistence.configuration import Models
+
+
+class CityObject(Models):
+ """
+ A model representation of an application
+ """
+ __tablename__ = 'city_object'
+ id = Column(Integer, Sequence('city_object_id_seq'), primary_key=True)
+ city_id = Column(Integer, ForeignKey('city.id', ondelete='CASCADE'), nullable=False)
+ name = Column(String, nullable=False)
+ aliases = Column(String, nullable=True)
+ type = Column(String, nullable=False)
+ year_of_construction = Column(Integer, nullable=True)
+ function = Column(String, nullable=True)
+ usage = Column(String, nullable=True)
+ volume = Column(Float, nullable=False)
+ area = Column(Float, nullable=False)
+ total_heating_area = Column(Float, nullable=False)
+ wall_area = Column(Float, nullable=False)
+ windows_area = Column(Float, nullable=False)
+ roof_area = Column(Float, nullable=False)
+ total_pv_area = Column(Float, nullable=False)
+ system_name = Column(String, nullable=False)
+ created = Column(DateTime, default=datetime.datetime.utcnow)
+ updated = Column(DateTime, default=datetime.datetime.utcnow)
+
+ def __init__(self, city_id, building: Building):
+ self.city_id = city_id
+ self.name = building.name
+ self.aliases = building.aliases
+ self.type = building.type
+ self.year_of_construction = building.year_of_construction
+ self.function = building.function
+ self.usage = building.usages_percentage
+ self.volume = building.volume
+ self.area = building.floor_area
+ self.roof_area = sum(roof.solid_polygon.area for roof in building.roofs)
+ self.total_pv_area = sum(
+ roof.solid_polygon.area * roof.solar_collectors_area_reduction_factor for roof in building.roofs)
+ storeys = building.storeys_above_ground
+ wall_area = 0
+ window_ratio = 0
+ try:
+ if storeys is None:
+ storeys = building.max_height / building.average_storey_height
+ for internal_zone in building.internal_zones:
+ for thermal_zone in internal_zone.thermal_zones_from_internal_zones:
+ for thermal_boundary in thermal_zone.thermal_boundaries:
+ window_ratio = thermal_boundary.window_ratio
+ break
+ except TypeError:
+ storeys = 0
+ logging.warning(
+ 'building %s has no storey height so heating area, storeys and window ratio cannot be calculated',
+ self.name
+ )
+ self.total_heating_area = building.floor_area * storeys
+
+ for wall in building.walls:
+ wall_area += wall.solid_polygon.area
+ self.wall_area = wall_area
+ self.windows_area = wall_area * window_ratio
+ system_name = building.energy_systems_archetype_name
+ if system_name is None:
+ system_name = ''
+ self.system_name = system_name
diff --git a/cerc_persistence/models/simulation_results.py b/cerc_persistence/models/simulation_results.py
new file mode 100644
index 0000000..b0bac59
--- /dev/null
+++ b/cerc_persistence/models/simulation_results.py
@@ -0,0 +1,33 @@
+"""
+Model representation of simulation results
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Guille Gutierrez Guillermo.GutierrezMorote@concordia.ca
+"""
+
+import datetime
+
+from sqlalchemy import Column, Integer, String, Sequence, ForeignKey
+from sqlalchemy import DateTime
+from sqlalchemy.dialects.postgresql import JSONB
+from cerc_persistence.configuration import Models
+
+
+class SimulationResults(Models):
+ """
+ A model representation of an application
+ """
+ __tablename__ = 'simulation_results'
+ id = Column(Integer, Sequence('simulation_results_id_seq'), primary_key=True)
+ city_id = Column(Integer, ForeignKey('city.id', ondelete='CASCADE'), nullable=True)
+ city_object_id = Column(Integer, ForeignKey('city_object.id', ondelete='CASCADE'), nullable=True)
+ name = Column(String, nullable=False)
+ values = Column(JSONB, nullable=False)
+ created = Column(DateTime, default=datetime.datetime.utcnow)
+ updated = Column(DateTime, default=datetime.datetime.utcnow)
+
+ def __init__(self, name, values, city_id=None, city_object_id=None):
+ self.name = name
+ self.values = values
+ self.city_id = city_id
+ self.city_object_id = city_object_id
diff --git a/cerc_persistence/models/user.py b/cerc_persistence/models/user.py
new file mode 100644
index 0000000..7eb1da0
--- /dev/null
+++ b/cerc_persistence/models/user.py
@@ -0,0 +1,42 @@
+"""
+Model representation of a User
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Peter Yefi peteryefi@gmail.com
+"""
+
+import datetime
+import enum
+
+from sqlalchemy import Column, Integer, String, Sequence
+from sqlalchemy import DateTime, Enum
+
+from cerc_persistence.configuration import Models
+
+
+class UserRoles(enum.Enum):
+ """
+ User roles enum
+ """
+ Admin = 'Admin'
+ Hub_Reader = 'Hub_Reader'
+
+
+class User(Models):
+ """
+ A model representation of a city
+ """
+ __tablename__ = 'user'
+ id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
+ name = Column(String, nullable=False)
+ password = Column(String, nullable=False)
+ role = Column(Enum(UserRoles), nullable=False, default=UserRoles.Hub_Reader)
+ application_id = Column(Integer, nullable=False)
+ created = Column(DateTime, default=datetime.datetime.utcnow)
+ updated = Column(DateTime, default=datetime.datetime.utcnow)
+
+ def __init__(self, name, password, role, application_id):
+ self.name = name
+ self.password = password
+ self.role = role
+ self.application_id = application_id
diff --git a/repositories/__init__.py b/cerc_persistence/repositories/__init__.py
similarity index 100%
rename from repositories/__init__.py
rename to cerc_persistence/repositories/__init__.py
diff --git a/cerc_persistence/repositories/application.py b/cerc_persistence/repositories/application.py
new file mode 100644
index 0000000..b0da12e
--- /dev/null
+++ b/cerc_persistence/repositories/application.py
@@ -0,0 +1,111 @@
+"""
+Application repository with database CRUD operations
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Guille Gutierrez Guillermo.GutierrezMorote@concordia.ca
+"""
+
+import datetime
+import logging
+
+from sqlalchemy import select
+from sqlalchemy.exc import SQLAlchemyError
+from sqlalchemy.orm.session import Session
+
+from cerc_persistence.repository import Repository
+from cerc_persistence.models import Application as Model
+
+
+class Application(Repository):
+ """
+ Application repository
+ """
+ _instance = None
+
+ def __init__(self, db_name: str, dotenv_path: str, app_env: str):
+ super().__init__(db_name, dotenv_path, app_env)
+
+ def __new__(cls, db_name, dotenv_path, app_env):
+ """
+ Implemented for a singleton pattern
+ """
+ if cls._instance is None:
+ cls._instance = super(Application, cls).__new__(cls)
+ return cls._instance
+
+ def insert(self, name: str, description: str, application_uuid: str):
+ """
+ Inserts a new application
+ :param name: Application name
+ :param description: Application description
+ :param application_uuid: Unique identifier for the application
+ :return: Identity id
+ """
+ try:
+ application = self.get_by_uuid(application_uuid)
+ if application is not None:
+ raise SQLAlchemyError('application already exists')
+ except TypeError:
+ pass
+ try:
+ application = Model(name=name, description=description, application_uuid=application_uuid)
+ with Session(self.engine) as session:
+ session.add(application)
+ session.commit()
+ session.refresh(application)
+ return application.id
+ except SQLAlchemyError as err:
+ logging.error('An error occurred while creating application %s', err)
+ raise SQLAlchemyError from err
+
+ def update(self, application_uuid: str, name: str, description: str):
+ """
+ Updates an application
+ :param application_uuid: the application uuid of the application to be updated
+ :param name: the application name
+ :param description: the application description
+ :return: None
+ """
+ try:
+ with Session(self.engine) as session:
+ session.query(Model).filter(
+ Model.application_uuid == application_uuid
+ ).update({'name': name, 'description': description, 'updated': datetime.datetime.utcnow()})
+ session.commit()
+ except SQLAlchemyError as err:
+ logging.error('Error while updating application %s', err)
+ raise SQLAlchemyError from err
+
+ def delete(self, application_uuid: str):
+ """
+ Deletes an application with the application_uuid
+ :param application_uuid: The application uuid
+ :return: None
+ """
+ try:
+ with Session(self.engine) as session:
+ session.query(Model).filter(Model.application_uuid == application_uuid).delete()
+ session.flush()
+ session.commit()
+ except SQLAlchemyError as err:
+ logging.error('Error while deleting application %s', err)
+ raise SQLAlchemyError from err
+
+ def get_by_uuid(self, application_uuid: str) -> Model:
+ """
+ Fetch Application based on the application uuid
+ :param application_uuid: the application uuid
+ :return: Application with the provided application_uuid
+ """
+ try:
+ with Session(self.engine) as session:
+ result_set = session.execute(select(Model).where(
+ Model.application_uuid == application_uuid)
+ ).first()
+ return result_set[0]
+ except SQLAlchemyError as err:
+ logging.error('Error while fetching application by application_uuid %s', err)
+ raise SQLAlchemyError from err
+ except TypeError as err:
+ logging.error('Error while fetching application, empty result %s', err)
+ raise TypeError from err
diff --git a/cerc_persistence/repositories/city.py b/cerc_persistence/repositories/city.py
new file mode 100644
index 0000000..e69d144
--- /dev/null
+++ b/cerc_persistence/repositories/city.py
@@ -0,0 +1,138 @@
+"""
+City repository with database CRUD operations
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Peter Yefi peteryefi@gmail.com
+"""
+import datetime
+import logging
+
+from sqlalchemy import select
+from sqlalchemy.exc import SQLAlchemyError
+from sqlalchemy.orm import Session
+
+from hub.city_model_structure.city import City as CityHub
+from cerc_persistence.repository import Repository
+from cerc_persistence.models import City as Model
+from cerc_persistence.models import CityObject
+from hub.version import __version__
+
+
+class City(Repository):
+ """
+ City repository
+ """
+ _instance = None
+
+ def __init__(self, db_name: str, dotenv_path: str, app_env: str):
+ super().__init__(db_name, dotenv_path, app_env)
+
+ def __new__(cls, db_name, dotenv_path, app_env):
+ """
+ Implemented for a singleton pattern
+ """
+ if cls._instance is None:
+ cls._instance = super(City, cls).__new__(cls)
+ return cls._instance
+
+ def insert(self, city: CityHub, pickle_path, scenario, application_id, user_id: int):
+ """
+ Inserts a city
+ :param city: The complete city instance
+ :param pickle_path: Path to the pickle
+ :param scenario: Simulation scenario name
+ :param application_id: Application id owning the instance
+ :param user_id: User id owning the instance
+ :return: Identity id
+ """
+ city.save_compressed(pickle_path)
+ try:
+ db_city = Model(
+ pickle_path,
+ city.name,
+ scenario,
+ application_id,
+ user_id,
+ __version__)
+ with Session(self.engine) as session:
+ session.add(db_city)
+ session.flush()
+ session.commit()
+ for building in city.buildings:
+ db_city_object = CityObject(db_city.id,
+ building)
+ session.add(db_city_object)
+ session.flush()
+ session.commit()
+ session.refresh(db_city)
+ return db_city.id
+ except SQLAlchemyError as err:
+ logging.error('An error occurred while creating a city %s', err)
+ raise SQLAlchemyError from err
+
+ def update(self, city_id: int, city: CityHub):
+ """
+ Updates a city name (other updates makes no sense)
+ :param city_id: the id of the city to be updated
+ :param city: the city object
+ :return: None
+ """
+ try:
+ now = datetime.datetime.utcnow()
+ with Session(self.engine) as session:
+ session.query(Model).filter(Model.id == city_id).update({'name': city.name, 'updated': now})
+ session.commit()
+ except SQLAlchemyError as err:
+ logging.error('Error while updating city %s', err)
+ raise SQLAlchemyError from err
+
+ def delete(self, city_id: int):
+ """
+ Deletes a City with the id
+ :param city_id: the city id
+ :return: None
+ """
+ try:
+ with Session(self.engine) as session:
+ session.query(CityObject).filter(CityObject.city_id == city_id).delete()
+ session.query(Model).filter(Model.id == city_id).delete()
+ session.commit()
+ except SQLAlchemyError as err:
+ logging.error('Error while fetching city %s', err)
+ raise SQLAlchemyError from err
+
+ def get_by_user_id_application_id_and_scenario(self, user_id, application_id, scenario) -> [Model]:
+ """
+ Fetch city based on the user who created it
+ :param user_id: the user id
+ :param application_id: the application id
+ :param scenario: simulation scenario name
+ :return: [ModelCity]
+ """
+ try:
+ with Session(self.engine) as session:
+ result_set = session.execute(select(Model).where(Model.user_id == user_id,
+ Model.application_id == application_id,
+ Model.scenario == scenario
+ )).all()
+ return result_set
+ except SQLAlchemyError as err:
+ logging.error('Error while fetching city by name %s', err)
+ raise SQLAlchemyError from err
+
+ def get_by_user_id_and_application_id(self, user_id, application_id) -> [Model]:
+ """
+ Fetch city based on the user who created it
+ :param user_id: the user id
+ :param application_id: the application id
+ :return: ModelCity
+ """
+ try:
+ with Session(self.engine) as session:
+ result_set = session.execute(
+ select(Model).where(Model.user_id == user_id, Model.application_id == application_id)
+ )
+ return [r[0] for r in result_set]
+ except SQLAlchemyError as err:
+ logging.error('Error while fetching city by name %s', err)
+ raise SQLAlchemyError from err
diff --git a/cerc_persistence/repositories/city_object.py b/cerc_persistence/repositories/city_object.py
new file mode 100644
index 0000000..584c4f5
--- /dev/null
+++ b/cerc_persistence/repositories/city_object.py
@@ -0,0 +1,133 @@
+"""
+City Object repository with database CRUD operations
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Guille Gutierrez Guillermo.GutierrezMorote@concordia.ca
+"""
+import datetime
+import logging
+
+from sqlalchemy import select, or_
+from sqlalchemy.exc import SQLAlchemyError
+from sqlalchemy.orm import Session
+
+from hub.city_model_structure.building import Building
+from cerc_persistence.repository import Repository
+from cerc_persistence.models import CityObject as Model
+
+
+class CityObject(Repository):
+ """
+ City object repository
+ """
+ _instance = None
+
+ def __init__(self, db_name: str, dotenv_path: str, app_env: str):
+ super().__init__(db_name, dotenv_path, app_env)
+
+ def __new__(cls, db_name, dotenv_path, app_env):
+ """
+ Implemented for a singleton pattern
+ """
+ if cls._instance is None:
+ cls._instance = super(CityObject, cls).__new__(cls)
+ return cls._instance
+
+ def insert(self, city_id: int, building: Building):
+ """
+ Inserts a new city object
+ :param city_id: city id for the city owning this city object
+ :param building: the city object (only building for now) to be inserted
+ return Identity id
+ """
+ city_object = self.get_by_name_or_alias_and_city(building.name, city_id)
+ if city_object is not None:
+ raise SQLAlchemyError(f'A city_object named {building.name} already exists in that city')
+ try:
+ city_object = Model(city_id=city_id,
+ building=building)
+ with Session(self.engine) as session:
+ session.add(city_object)
+ session.flush()
+ session.commit()
+ session.refresh(city_object)
+ return city_object.id
+ except SQLAlchemyError as err:
+ logging.error('An error occurred while creating city_object %s', err)
+ raise SQLAlchemyError from err
+
+ def update(self, city_id: int, building: Building):
+ """
+ Updates an application
+ :param city_id: the city id of the city owning the city object
+ :param building: the city object
+ :return: None
+ """
+ try:
+ object_usage = ''
+ for internal_zone in building.internal_zones:
+ for usage in internal_zone.usages:
+ object_usage = f'{object_usage}{usage.name}_{usage.percentage} '
+ object_usage = object_usage.rstrip()
+ with Session(self.engine) as session:
+ session.query(Model).filter(Model.name == building.name, Model.city_id == city_id).update(
+ {'name': building.name,
+ 'alias': building.alias,
+ 'object_type': building.type,
+ 'year_of_construction': building.year_of_construction,
+ 'function': building.function,
+ 'usage': object_usage,
+ 'volume': building.volume,
+ 'area': building.floor_area,
+ 'updated': datetime.datetime.utcnow()})
+ session.commit()
+ except SQLAlchemyError as err:
+ logging.error('Error while updating city object %s', err)
+ raise SQLAlchemyError from err
+
+ def delete(self, city_id: int, name: str):
+ """
+ Deletes an application with the application_uuid
+ :param city_id: The id for the city owning the city object
+ :param name: The city object name
+ :return: None
+ """
+ try:
+ with Session(self.engine) as session:
+ session.query(Model).filter(Model.city_id == city_id, Model.name == name).delete()
+ session.commit()
+ except SQLAlchemyError as err:
+ logging.error('Error while deleting application %s', err)
+ raise SQLAlchemyError from err
+
+ def get_by_name_or_alias_and_city(self, name, city_id) -> Model:
+ """
+ Fetch a city object based on name and city id
+ :param name: city object name
+ :param city_id: a city identifier
+ :return: [CityObject] with the provided name or alias belonging to the city with id city_id
+ """
+ try:
+ # search by name first
+ with Session(self.engine) as session:
+ city_object = session.execute(select(Model).where(Model.name == name, Model.city_id == city_id)).first()
+ if city_object is not None:
+ return city_object[0]
+ # name not found, so search by alias instead
+ city_objects = session.execute(
+ select(Model).where(Model.aliases.contains(name), Model.city_id == city_id)
+ ).all()
+ for city_object in city_objects:
+ aliases = city_object[0].aliases.replace('{', '').replace('}', '').split(',')
+ for alias in aliases:
+ if alias == name:
+ # force the name as the alias
+ city_object[0].name = name
+ return city_object[0]
+ return None
+ except SQLAlchemyError as err:
+ logging.error('Error while fetching city object by name and city: %s', err)
+ raise SQLAlchemyError from err
+ except IndexError as err:
+ logging.error('Error while fetching city object by name and city, empty result %s', err)
+ raise IndexError from err
diff --git a/cerc_persistence/repositories/simulation_results.py b/cerc_persistence/repositories/simulation_results.py
new file mode 100644
index 0000000..13a8345
--- /dev/null
+++ b/cerc_persistence/repositories/simulation_results.py
@@ -0,0 +1,170 @@
+"""
+Simulation results repository with database CRUD operations
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Guille Gutierrez Guillermo.GutierrezMorote@concordia.ca
+"""
+import datetime
+import logging
+
+from sqlalchemy import or_
+from sqlalchemy import select
+from sqlalchemy.exc import SQLAlchemyError
+from sqlalchemy.orm import Session
+
+from cerc_persistence.repository import Repository
+from cerc_persistence.models import City
+from cerc_persistence.models import CityObject
+from cerc_persistence.models import SimulationResults as Model
+
+
+class SimulationResults(Repository):
+ """
+ Simulation results repository
+ """
+ _instance = None
+
+ def __init__(self, db_name: str, dotenv_path: str, app_env: str):
+ super().__init__(db_name, dotenv_path, app_env)
+
+ def __new__(cls, db_name, dotenv_path, app_env):
+ """
+ Implemented for a singleton pattern
+ """
+ if cls._instance is None:
+ cls._instance = super(SimulationResults, cls).__new__(cls)
+ return cls._instance
+
+ def insert(self, name: str, values: str, city_id=None, city_object_id=None):
+ """
+ Inserts simulations results linked either with a city as a whole or with a city object
+ :param name: results name
+ :param values: the simulation results in json format
+ :param city_id: optional city id
+ :param city_object_id: optional city object id
+ :return: Identity id
+ """
+ if city_id is not None:
+ _ = self._get_city(city_id)
+ else:
+ _ = self._get_city_object(city_object_id)
+ try:
+ simulation_result = Model(name=name,
+ values=values,
+ city_id=city_id,
+ city_object_id=city_object_id)
+ with Session(self.engine) as session:
+ session.add(simulation_result)
+ session.flush()
+ session.commit()
+ session.refresh(simulation_result)
+ return simulation_result.id
+ except SQLAlchemyError as err:
+ logging.error('An error occurred while creating city_object %s', err)
+ raise SQLAlchemyError from err
+
+ def update(self, name: str, values: str, city_id=None, city_object_id=None):
+ """
+ Updates simulation results for a city or a city object
+ :param name: The simulation results tool and workflow name
+ :param values: the simulation results in json format
+ :param city_id: optional city id
+ :param city_object_id: optional city object id
+ :return: None
+ """
+ try:
+ with Session(self.engine) as session:
+ if city_id is not None:
+ session.query(Model).filter(Model.name == name, Model.city_id == city_id).update(
+ {
+ 'values': values,
+ 'updated': datetime.datetime.utcnow()
+ })
+ session.commit()
+ elif city_object_id is not None:
+ session.query(Model).filter(Model.name == name, Model.city_object_id == city_object_id).update(
+ {
+ 'values': values,
+ 'updated': datetime.datetime.utcnow()
+ })
+ session.commit()
+ else:
+ raise NotImplementedError('Missing either city_id or city_object_id')
+ except SQLAlchemyError as err:
+ logging.error('Error while updating city object %s', err)
+ raise SQLAlchemyError from err
+
+ def delete(self, name: str, city_id=None, city_object_id=None):
+ """
+ Deletes an application with the application_uuid
+ :param name: The simulation results tool and workflow name
+ :param city_id: The id for the city owning the simulation results
+ :param city_object_id: the id for the city_object owning these simulation results
+ :return: None
+ """
+ try:
+ with Session(self.engine) as session:
+ if city_id is not None:
+ session.query(Model).filter(Model.name == name, Model.city_id == city_id).delete()
+ session.commit()
+ elif city_object_id is not None:
+ session.query(Model).filter(Model.name == name, Model.city_object_id == city_object_id).delete()
+ session.commit()
+ else:
+ raise NotImplementedError('Missing either city_id or city_object_id')
+ except SQLAlchemyError as err:
+ logging.error('Error while deleting application: %s', err)
+ raise SQLAlchemyError from err
+
+ def _get_city(self, city_id) -> City:
+ """
+ Fetch a city object based city id
+ :param city_id: a city identifier
+ :return: [City] with the provided city_id
+ """
+ try:
+ with Session(self.engine) as session:
+ return session.execute(select(City).where(City.id == city_id)).first()
+ except SQLAlchemyError as err:
+ logging.error('Error while fetching city by city_id: %s', err)
+ raise SQLAlchemyError from err
+
+ def _get_city_object(self, city_object_id) -> [CityObject]:
+ """
+ Fetch a city object based city id
+ :param city_object_id: a city object identifier
+ :return: [CityObject] with the provided city_object_id
+ """
+ try:
+ with Session(self.engine) as session:
+ return session.execute(select(CityObject).where(CityObject.id == city_object_id)).first()
+ except SQLAlchemyError as err:
+ logging.error('Error while fetching city by city_id: %s', err)
+ raise SQLAlchemyError from err
+
+ def get_simulation_results_by_city_id_city_object_id_and_names(self, city_id, city_object_id,
+ result_names=None) -> [Model]:
+ """
+ Fetch the simulation results based in the city_id or city_object_id with the given names or all
+ :param city_id: the city id
+ :param city_object_id: the city object id
+ :param result_names: if given filter the results
+ :return: [SimulationResult]
+ """
+ try:
+ with Session(self.engine) as session:
+ result_set = session.execute(select(Model).where(or_(
+ Model.city_id == city_id,
+ Model.city_object_id == city_object_id
+ )))
+ results = [r[0] for r in result_set]
+ if not result_names:
+ return results
+ filtered_results = []
+ for result in results:
+ if result.name in result_names:
+ filtered_results.append(result)
+ return filtered_results
+ except SQLAlchemyError as err:
+ logging.error('Error while fetching city by city_id: %s', err)
+ raise SQLAlchemyError from err
diff --git a/cerc_persistence/repositories/user.py b/cerc_persistence/repositories/user.py
new file mode 100644
index 0000000..f2c7ba8
--- /dev/null
+++ b/cerc_persistence/repositories/user.py
@@ -0,0 +1,159 @@
+"""
+User repository with database CRUD operations
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Peter Yefi peteryefi@gmail.com
+"""
+import datetime
+import logging
+
+from sqlalchemy import select
+from sqlalchemy.exc import SQLAlchemyError
+from sqlalchemy.orm import Session
+
+from hub.helpers.auth import Auth
+from cerc_persistence.repository import Repository
+from cerc_persistence.models import User as Model, Application as ApplicationModel, UserRoles
+
+
+class User(Repository):
+ """
+ User class
+ """
+ _instance = None
+
+ def __init__(self, db_name: str, dotenv_path: str, app_env: str):
+ super().__init__(db_name, dotenv_path, app_env)
+
+ def __new__(cls, db_name, dotenv_path, app_env):
+ """
+ Implemented for a singleton pattern
+ """
+ if cls._instance is None:
+ cls._instance = super(User, cls).__new__(cls)
+ return cls._instance
+
+ def insert(self, name: str, password: str, role: UserRoles, application_id: int):
+ """
+ Inserts a new user
+ :param name: username
+ :param password: user password
+ :param role: user rol [Admin or Hub_Reader]
+ :param application_id: user application id
+ :return: Identity id
+ """
+ try:
+ user = self.get_by_name_and_application(name, application_id)
+ if user is not None:
+ raise SQLAlchemyError(f'A user named {user.name} already exists for that application')
+ except TypeError:
+ pass
+ try:
+ user = Model(name=name, password=Auth.hash_password(password), role=role, application_id=application_id)
+ with Session(self.engine) as session:
+ session.add(user)
+ session.flush()
+ session.commit()
+ session.refresh(user)
+ return user.id
+ except SQLAlchemyError as err:
+ logging.error('An error occurred while creating user %s', err)
+ raise SQLAlchemyError from err
+
+ def update(self, user_id: int, name: str, password: str, role: UserRoles):
+ """
+ Updates a user
+ :param user_id: the id of the user to be updated
+ :param name: the name of the user
+ :param password: the password of the user
+ :param role: the role of the user
+ :return: None
+ """
+ try:
+ with Session(self.engine) as session:
+ session.query(Model).filter(Model.id == user_id).update({
+ 'name': name,
+ 'password': Auth.hash_password(password),
+ 'role': role,
+ 'updated': datetime.datetime.utcnow()
+ })
+ session.commit()
+ except SQLAlchemyError as err:
+ logging.error('Error while updating user: %s', err)
+ raise SQLAlchemyError from err
+
+ def delete(self, user_id: int):
+ """
+ Deletes a user with the id
+ :param user_id: the user id
+ :return: None
+ """
+ try:
+ with Session(self.engine) as session:
+ session.query(Model).filter(Model.id == user_id).delete()
+ session.commit()
+ except SQLAlchemyError as err:
+ logging.error('Error while fetching user: %s', err)
+ raise SQLAlchemyError from err
+
+ def get_by_name_and_application(self, name: str, application_id: int) -> Model:
+ """
+ Fetch user based on the email address
+ :param name: Username
+ :param application_id: User application name
+ :return: User matching the search criteria or None
+ """
+ try:
+ with Session(self.engine) as session:
+ user = session.execute(
+ select(Model).where(Model.name == name, Model.application_id == application_id)
+ ).first()
+ session.commit()
+ return user[0]
+ except SQLAlchemyError as err:
+ logging.error('Error while fetching user by name and application: %s', err)
+ raise SQLAlchemyError from err
+ except TypeError as err:
+ logging.error('Error while fetching user, empty result %s', err)
+ raise TypeError from err
+
+ def get_by_name_application_id_and_password(self, name: str, password: str, application_id: int) -> Model:
+ """
+ Fetch user based on the name, password and application id
+ :param name: Username
+ :param password: User password
+ :param application_id: Application id
+ :return: User
+ """
+ try:
+ with Session(self.engine) as session:
+ user = session.execute(
+ select(Model).where(Model.name == name, Model.application_id == application_id)
+ ).first()
+ if user:
+ if Auth.check_password(password, user[0].password):
+ return user[0]
+ except SQLAlchemyError as err:
+ logging.error('Error while fetching user by name: %s', err)
+ raise SQLAlchemyError from err
+ raise ValueError('Unauthorized')
+
+ def get_by_name_application_uuid_and_password(self, name: str, password: str, application_uuid: str) -> Model:
+ """
+ Fetch user based on the email and password
+ :param name: Username
+ :param password: User password
+ :param application_uuid: Application uuid
+ :return: User
+ """
+ try:
+ with Session(self.engine) as session:
+ application = session.execute(
+ select(ApplicationModel).where(ApplicationModel.application_uuid == application_uuid)
+ ).first()
+ return self.get_by_name_application_id_and_password(name, password, application[0].id)
+ except SQLAlchemyError as err:
+ logging.error('Error while fetching user by name: %s', err)
+ raise SQLAlchemyError from err
+ except ValueError as err:
+ raise ValueError from err
diff --git a/cerc_persistence/repository.py b/cerc_persistence/repository.py
new file mode 100644
index 0000000..5459844
--- /dev/null
+++ b/cerc_persistence/repository.py
@@ -0,0 +1,22 @@
+"""
+Base repository class to establish db connection
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Peter Yefi peteryefi@gmail.com
+"""
+import logging
+from sqlalchemy import create_engine
+from cerc_persistence.configuration import Configuration
+
+
+class Repository:
+ """
+ Base repository class to establish db connection
+ """
+
+ def __init__(self, db_name, dotenv_path: str, app_env='TEST'):
+ try:
+ self.configuration = Configuration(db_name, dotenv_path, app_env)
+ self.engine = create_engine(self.configuration.connection_string)
+ except ValueError as err:
+ logging.error('Missing value for credentials: %s', err)
diff --git a/cerc_persistence/version.py b/cerc_persistence/version.py
new file mode 100644
index 0000000..52dd18c
--- /dev/null
+++ b/cerc_persistence/version.py
@@ -0,0 +1,4 @@
+"""
+CERC Persistence version number
+"""
+__version__ = '0.1.0'
diff --git a/configuration.py b/configuration.py
deleted file mode 100644
index a71ca59..0000000
--- a/configuration.py
+++ /dev/null
@@ -1,67 +0,0 @@
-"""
-Persistence (Postgresql) configuration
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project Coder Peter Yefi peteryefi@gmail.com
-"""
-
-import logging
-import os
-from pathlib import Path
-from dotenv import load_dotenv
-from sqlalchemy.ext.declarative import declarative_base
-
-Models = declarative_base()
-
-
-class Configuration:
- """
- Configuration class to hold common persistence configuration
- """
-
- def __init__(self, db_name: str, dotenv_path: str, app_env='TEST'):
- """
- :param db_name: database name
- :param app_env: application environment, test or production
- :param dotenv_path: the absolute path to dotenv file
- """
- try:
- # load environmental variables
- if not Path(dotenv_path).exists():
- error_message = f'dotenv file doesn\'t exists at {dotenv_path}'
- logging.error(error_message)
- raise FileNotFoundError(error_message)
- load_dotenv(dotenv_path=dotenv_path)
-
- self._db_name = db_name
- self._db_host = os.getenv(f'{app_env}_DB_HOST')
- self._db_user = os.getenv(f'{app_env}_DB_USER')
- self._db_pass = os.getenv(f'{app_env}_DB_PASSWORD')
- self._db_port = os.getenv(f'{app_env}_DB_PORT')
- self.hub_token = os.getenv('HUB_TOKEN')
- except KeyError as err:
- logging.error('Error with credentials: %s', err)
-
- @property
- def connection_string(self):
- """
- Returns a connection string postgresql
- :return: connection string
- """
- if self._db_pass:
- return f'postgresql://{self._db_user}:{self._db_pass}@{self._db_host}:{self._db_port}/{self._db_name}'
- return f'postgresql://{self._db_user}@{self._db_host}:{self._db_port}/{self._db_name}'
-
- @property
- def db_user(self):
- """
- retrieve the configured username
- """
- return self._db_user
-
- @property
- def db_name(self):
- """
- retrieve the configured database name
- """
- return self._db_name
diff --git a/db_control.py b/db_control.py
deleted file mode 100644
index f53d0d3..0000000
--- a/db_control.py
+++ /dev/null
@@ -1,249 +0,0 @@
-"""
-DBFactory performs read related operations
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project CoderPeter Yefi peteryefi@gmail.com
-"""
-import json
-from typing import Dict
-
-
-from hub.persistence.repositories.application import Application
-from hub.persistence.repositories.city import City
-from hub.persistence.repositories.city_object import CityObject
-from hub.persistence.repositories.simulation_results import SimulationResults
-from hub.persistence.repositories.user import User
-from hub.persistence.repositories.user import UserRoles
-
-
-class DBControl:
- """
- DBFactory class
- """
-
- def __init__(self, db_name, app_env, dotenv_path):
- self._city = City(db_name=db_name, dotenv_path=dotenv_path, app_env=app_env)
- self._application = Application(db_name=db_name, app_env=app_env, dotenv_path=dotenv_path)
- self._user = User(db_name=db_name, app_env=app_env, dotenv_path=dotenv_path)
- self._city_object = CityObject(db_name=db_name, app_env=app_env, dotenv_path=dotenv_path)
- self._simulation_results = SimulationResults(db_name=db_name, dotenv_path=dotenv_path, app_env=app_env)
-
- def application_info(self, application_uuid) -> Application:
- """
- Retrieve the application info for the given uuid from the database
- :param application_uuid: the uuid for the application
- :return: Application
- """
- return self._application.get_by_uuid(application_uuid)
-
- def user_info(self, name, password, application_id) -> User:
- """
- Retrieve the user info for the given name and password and application_id from the database
- :param name: the username
- :param password: the user password
- :param application_id: the application id
- :return: User
- """
- return self._user.get_by_name_application_id_and_password(name, password, application_id)
-
- def user_login(self, name, password, application_uuid) -> User:
- """
- Retrieve the user info from the database
- :param name: the username
- :param password: the user password
- :param application_uuid: the application uuid
- :return: User
- """
- return self._user.get_by_name_application_uuid_and_password(name, password, application_uuid)
-
- def cities_by_user_and_application(self, user_id, application_id) -> [City]:
- """
- Retrieve the cities belonging to the user and the application from the database
- :param user_id: User id
- :param application_id: Application id
- :return: [City]
- """
- return self._city.get_by_user_id_and_application_id(user_id, application_id)
-
- def building(self, name, user_id, application_id, scenario) -> CityObject:
- """
- Retrieve the building from the database
- :param name: Building name
- :param user_id: User id
- :param application_id: Application id
- :param scenario: Scenario
- :
- """
- cities = self._city.get_by_user_id_application_id_and_scenario(user_id, application_id, scenario)
- for city in cities:
- result = self.building_info(name, city[0].id)
- if result is not None:
- return result
- return None
-
- def building_info(self, name, city_id) -> CityObject:
- """
- Retrieve the building info from the database
- :param name: Building name
- :param city_id: City ID
- :return: CityObject
- """
- return self._city_object.get_by_name_or_alias_and_city(name, city_id)
-
- def buildings_info(self, request_values, city_id) -> [CityObject]:
- """
- Retrieve the buildings info from the database
- :param request_values: Building names
- :param city_id: City ID
- :return: [CityObject]
- """
- buildings = []
- for name in request_values['names']:
- buildings.append(self.building_info(name, city_id))
- return buildings
-
- def results(self, user_id, application_id, request_values, result_names=None) -> Dict:
- """
- Retrieve the simulation results for the given cities from the database
- :param user_id: the user id owning the results
- :param application_id: the application id owning the results
- :param request_values: dictionary containing the scenario and building names to grab the results
- :param result_names: if given, filter the results to the selected names
- """
- if result_names is None:
- result_names = []
- results = {}
- for scenario in request_values['scenarios']:
- for scenario_name in scenario.keys():
- result_sets = self._city.get_by_user_id_application_id_and_scenario(
- user_id,
- application_id,
- scenario_name
- )
- if result_sets is None:
- continue
- for result_set in result_sets:
- city_id = result_set[0].id
-
- results[scenario_name] = []
- for building_name in scenario[scenario_name]:
- _building = self._city_object.get_by_name_or_alias_and_city(building_name, city_id)
- if _building is None:
- continue
- city_object_id = _building.id
- _ = self._simulation_results.get_simulation_results_by_city_id_city_object_id_and_names(
- city_id,
- city_object_id,
- result_names)
-
- for value in _:
- values = json.loads(value.values)
- values["building"] = building_name
- results[scenario_name].append(values)
- return results
-
- def persist_city(self, city: City, pickle_path, scenario, application_id: int, user_id: int):
- """
- Creates a city into the database
- :param city: City to be stored
- :param pickle_path: Path to save the pickle file
- :param scenario: Simulation scenario name
- :param application_id: Application id owning this city
- :param user_id: User who create the city
- return identity_id
- """
- return self._city.insert(city, pickle_path, scenario, application_id, user_id)
-
- def update_city(self, city_id, city):
- """
- Update an existing city in the database
- :param city_id: the id of the city to update
- :param city: the updated city object
- """
- return self._city.update(city_id, city)
-
- def persist_application(self, name: str, description: str, application_uuid: str):
- """
- Creates information for an application in the database
- :param name: name of application
- :param description: the description of the application
- :param application_uuid: the uuid of the application to be created
- """
- return self._application.insert(name, description, application_uuid)
-
- def update_application(self, name: str, description: str, application_uuid: str):
- """
- Update the application information stored in the database
- :param name: name of application
- :param description: the description of the application
- :param application_uuid: the uuid of the application to be created
- """
- return self._application.update(application_uuid, name, description)
-
- def add_simulation_results(self, name, values, city_id=None, city_object_id=None):
- """
- Add simulation results to the city or to the city_object to the database
- :param name: simulation and simulation engine name
- :param values: simulation values in json format
- :param city_id: city id or None
- :param city_object_id: city object id or None
- """
- return self._simulation_results.insert(name, values, city_id, city_object_id)
-
- def create_user(self, name: str, application_id: int, password: str, role: UserRoles):
- """
- Creates a new user in the database
- :param name: the name of the user
- :param application_id: the application id of the user
- :param password: the password of the user
- :param role: the role of the user
- """
- return self._user.insert(name, password, role, application_id)
-
- def update_user(self, user_id: int, name: str, password: str, role: UserRoles):
- """
- Updates a user in the database
- :param user_id: the id of the user
- :param name: the name of the user
- :param password: the password of the user
- :param role: the role of the user
- """
- return self._user.update(user_id, name, password, role)
-
- def get_by_name_and_application(self, name: str, application: int):
- """
- Retrieve a single user from the database
- :param name: username
- :param application: application accessing hub
- """
- return self._user.get_by_name_and_application(name, application)
-
- def delete_user(self, user_id):
- """
- Delete a single user from the database
- :param user_id: the id of the user to delete
- """
- self._user.delete(user_id)
-
- def delete_city(self, city_id):
- """
- Deletes a single city from the database
- :param city_id: the id of the city to get
- """
- self._city.delete(city_id)
-
- def delete_results_by_name(self, name, city_id=None, city_object_id=None):
- """
- Deletes city object simulation results from the database
- :param name: simulation name
- :param city_id: if given, delete delete the results for the city with id city_id
- :param city_object_id: if given, delete delete the results for the city object with id city_object_id
- """
- self._simulation_results.delete(name, city_id=city_id, city_object_id=city_object_id)
-
- def delete_application(self, application_uuid):
- """
- Deletes a single application from the database
- :param application_uuid: the id of the application to get
- """
- self._application.delete(application_uuid)
diff --git a/db_setup.py b/db_setup.py
deleted file mode 100644
index cb8bf33..0000000
--- a/db_setup.py
+++ /dev/null
@@ -1,70 +0,0 @@
-"""
-Database setup
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project Coder Peter Yefi peteryefi@gmail.com
-"""
-
-import logging
-from hub.persistence.repository import Repository
-from hub.persistence.models import Application
-from hub.persistence.models import City
-from hub.persistence.models import CityObject
-from hub.persistence.models import User
-from hub.persistence.models import UserRoles
-from hub.persistence.models import SimulationResults
-from hub.persistence.repositories.user import User as UserRepository
-from hub.persistence.repositories.application import Application as ApplicationRepository
-
-
-class DBSetup:
- """
- Creates a Persistence database structure
- """
-
- def __init__(self, db_name, app_env, dotenv_path, admin_password, application_uuid):
- """
- Creates database tables a default admin user and a default admin app with the given password and uuid
- :param db_name: database name
- :param app_env: application environment type [TEST|PROD]
- :param dotenv_path: .env file path
- :param admin_password: administrator password for the application uuid
- :application_uuid: application uuid
- """
- repository = Repository(db_name=db_name, app_env=app_env, dotenv_path=dotenv_path)
-
- # Create the tables using the models
- Application.__table__.create(bind=repository.engine, checkfirst=True)
- User.__table__.create(bind=repository.engine, checkfirst=True)
- City.__table__.create(bind=repository.engine, checkfirst=True)
- CityObject.__table__.create(bind=repository.engine, checkfirst=True)
- SimulationResults.__table__.create(bind=repository.engine, checkfirst=True)
-
- self._user_repo = UserRepository(db_name=db_name, app_env=app_env, dotenv_path=dotenv_path)
- self._application_repo = ApplicationRepository(db_name=db_name, app_env=app_env, dotenv_path=dotenv_path)
- application_id = self._create_admin_app(self._application_repo, application_uuid)
- self._create_admin_user(self._user_repo, admin_password, application_id)
-
- @staticmethod
- def _create_admin_app(application_repo, application_uuid):
- name = 'AdminTool'
- description = 'Admin tool to control city persistence and to test the API v1.4'
- logging.info('Creating default admin tool application...')
- application = application_repo.insert(name, description, application_uuid)
-
- if isinstance(application, dict):
- logging.info(application)
- else:
- msg = f'Created Admin tool with application_uuid: {application_uuid}'
- logging.info(msg)
- return application.id
-
- @staticmethod
- def _create_admin_user(user_repo, admin_password, application_id):
- password = admin_password
- logging.info('Creating default admin user...')
- user = user_repo.insert('Administrator', password, UserRoles.Admin, application_id)
- if isinstance(user, dict):
- logging.info(user)
- else:
- logging.info('Created Admin user')
diff --git a/models/application.py b/models/application.py
deleted file mode 100644
index 23f05a2..0000000
--- a/models/application.py
+++ /dev/null
@@ -1,32 +0,0 @@
-"""
-Model representation of an application
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project Coder Guille Gutierrez Guillermo.GutierrezMorote@concordia.ca
-"""
-
-import datetime
-
-from sqlalchemy import Column, Integer, String, Sequence
-from sqlalchemy import DateTime
-from sqlalchemy.dialects.postgresql import UUID
-
-from hub.persistence.configuration import Models
-
-
-class Application(Models):
- """
- A model representation of an application
- """
- __tablename__ = 'application'
- id = Column(Integer, Sequence('application_id_seq'), primary_key=True)
- name = Column(String, nullable=False)
- description = Column(String, nullable=False)
- application_uuid = Column(UUID(as_uuid=True), nullable=False)
- created = Column(DateTime, default=datetime.datetime.utcnow)
- updated = Column(DateTime, default=datetime.datetime.utcnow)
-
- def __init__(self, name, description, application_uuid):
- self.name = name
- self.description = description
- self.application_uuid = application_uuid
diff --git a/models/city.py b/models/city.py
deleted file mode 100644
index 35f529b..0000000
--- a/models/city.py
+++ /dev/null
@@ -1,36 +0,0 @@
-"""
-Model representation of a City
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project Coder Peter Yefi peteryefi@gmail.com
-"""
-
-import datetime
-
-from sqlalchemy import Column, Integer, String, Sequence, ForeignKey
-from sqlalchemy import DateTime
-
-from hub.persistence.configuration import Models
-
-
-class City(Models):
- """A model representation of a city
- """
- __tablename__ = 'city'
- id = Column(Integer, Sequence('city_id_seq'), primary_key=True)
- pickle_path = Column(String, nullable=False)
- name = Column(String, nullable=False)
- scenario = Column(String, nullable=False)
- application_id = Column(Integer, ForeignKey('application.id', ondelete='CASCADE'), nullable=False)
- user_id = Column(Integer, ForeignKey('user.id', ondelete='CASCADE'), nullable=True)
- hub_release = Column(String, nullable=False)
- created = Column(DateTime, default=datetime.datetime.utcnow)
- updated = Column(DateTime, default=datetime.datetime.utcnow)
-
- def __init__(self, pickle_path, name, scenario, application_id, user_id, hub_release):
- self.pickle_path = str(pickle_path)
- self.name = name
- self.scenario = scenario
- self.application_id = application_id
- self.user_id = user_id
- self.hub_release = hub_release
diff --git a/models/city_object.py b/models/city_object.py
deleted file mode 100644
index 1d88b9e..0000000
--- a/models/city_object.py
+++ /dev/null
@@ -1,80 +0,0 @@
-"""
-Model representation of a city object
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project Coder Guille Gutierrez Guillermo.GutierrezMorote@concordia.ca
-"""
-
-import datetime
-import logging
-
-from sqlalchemy import Column, Integer, String, Sequence, ForeignKey, Float
-from sqlalchemy import DateTime
-
-from hub.city_model_structure.building import Building
-from hub.persistence.configuration import Models
-
-
-class CityObject(Models):
- """
- A model representation of an application
- """
- __tablename__ = 'city_object'
- id = Column(Integer, Sequence('city_object_id_seq'), primary_key=True)
- city_id = Column(Integer, ForeignKey('city.id', ondelete='CASCADE'), nullable=False)
- name = Column(String, nullable=False)
- aliases = Column(String, nullable=True)
- type = Column(String, nullable=False)
- year_of_construction = Column(Integer, nullable=True)
- function = Column(String, nullable=True)
- usage = Column(String, nullable=True)
- volume = Column(Float, nullable=False)
- area = Column(Float, nullable=False)
- total_heating_area = Column(Float, nullable=False)
- wall_area = Column(Float, nullable=False)
- windows_area = Column(Float, nullable=False)
- roof_area = Column(Float, nullable=False)
- total_pv_area = Column(Float, nullable=False)
- system_name = Column(String, nullable=False)
- created = Column(DateTime, default=datetime.datetime.utcnow)
- updated = Column(DateTime, default=datetime.datetime.utcnow)
-
- def __init__(self, city_id, building: Building):
- self.city_id = city_id
- self.name = building.name
- self.aliases = building.aliases
- self.type = building.type
- self.year_of_construction = building.year_of_construction
- self.function = building.function
- self.usage = building.usages_percentage
- self.volume = building.volume
- self.area = building.floor_area
- self.roof_area = sum(roof.solid_polygon.area for roof in building.roofs)
- self.total_pv_area = sum(roof.solid_polygon.area * roof.solar_collectors_area_reduction_factor for roof in building.roofs)
- storeys = building.storeys_above_ground
- wall_area = 0
- window_ratio = 0
- try:
- if storeys is None:
- storeys = building.max_height / building.average_storey_height
- for internal_zone in building.internal_zones:
- for thermal_zone in internal_zone.thermal_zones_from_internal_zones:
- for thermal_boundary in thermal_zone.thermal_boundaries:
- window_ratio = thermal_boundary.window_ratio
- break
- except TypeError:
- storeys = 0
- logging.warning(
- 'building %s has no storey height so heating area, storeys and window ratio cannot be calculated',
- self.name
- )
- self.total_heating_area = building.floor_area * storeys
-
- for wall in building.walls:
- wall_area += wall.solid_polygon.area
- self.wall_area = wall_area
- self.windows_area = wall_area * window_ratio
- system_name = building.energy_systems_archetype_name
- if system_name is None:
- system_name = ''
- self.system_name = system_name
diff --git a/models/simulation_results.py b/models/simulation_results.py
deleted file mode 100644
index a40c077..0000000
--- a/models/simulation_results.py
+++ /dev/null
@@ -1,33 +0,0 @@
-"""
-Model representation of simulation results
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project Coder Guille Gutierrez Guillermo.GutierrezMorote@concordia.ca
-"""
-
-import datetime
-
-from sqlalchemy import Column, Integer, String, Sequence, ForeignKey
-from sqlalchemy import DateTime
-from sqlalchemy.dialects.postgresql import JSONB
-from hub.persistence.configuration import Models
-
-
-class SimulationResults(Models):
- """
- A model representation of an application
- """
- __tablename__ = 'simulation_results'
- id = Column(Integer, Sequence('simulation_results_id_seq'), primary_key=True)
- city_id = Column(Integer, ForeignKey('city.id', ondelete='CASCADE'), nullable=True)
- city_object_id = Column(Integer, ForeignKey('city_object.id', ondelete='CASCADE'), nullable=True)
- name = Column(String, nullable=False)
- values = Column(JSONB, nullable=False)
- created = Column(DateTime, default=datetime.datetime.utcnow)
- updated = Column(DateTime, default=datetime.datetime.utcnow)
-
- def __init__(self, name, values, city_id=None, city_object_id=None):
- self.name = name
- self.values = values
- self.city_id = city_id
- self.city_object_id = city_object_id
diff --git a/models/user.py b/models/user.py
deleted file mode 100644
index 7a45e0b..0000000
--- a/models/user.py
+++ /dev/null
@@ -1,42 +0,0 @@
-"""
-Model representation of a User
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project Coder Peter Yefi peteryefi@gmail.com
-"""
-
-import datetime
-import enum
-
-from sqlalchemy import Column, Integer, String, Sequence
-from sqlalchemy import DateTime, Enum
-
-from hub.persistence.configuration import Models
-
-
-class UserRoles(enum.Enum):
- """
- User roles enum
- """
- Admin = 'Admin'
- Hub_Reader = 'Hub_Reader'
-
-
-class User(Models):
- """
- A model representation of a city
- """
- __tablename__ = 'user'
- id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
- name = Column(String, nullable=False)
- password = Column(String, nullable=False)
- role = Column(Enum(UserRoles), nullable=False, default=UserRoles.Hub_Reader)
- application_id = Column(Integer, nullable=False)
- created = Column(DateTime, default=datetime.datetime.utcnow)
- updated = Column(DateTime, default=datetime.datetime.utcnow)
-
- def __init__(self, name, password, role, application_id):
- self.name = name
- self.password = password
- self.role = role
- self.application_id = application_id
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..8c14840
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,8 @@
+# pyproject.toml
+
+[build-system]
+requires = ["setuptools>=61.0.0", "wheel"]
+build-backend = "setuptools.build_meta"
+
+[options.packages.find_namespace]
+where = "hub"
\ No newline at end of file
diff --git a/repositories/application.py b/repositories/application.py
deleted file mode 100644
index a70fde3..0000000
--- a/repositories/application.py
+++ /dev/null
@@ -1,111 +0,0 @@
-"""
-Application repository with database CRUD operations
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project Coder Guille Gutierrez Guillermo.GutierrezMorote@concordia.ca
-"""
-
-import datetime
-import logging
-
-from sqlalchemy import select
-from sqlalchemy.exc import SQLAlchemyError
-from sqlalchemy.orm.session import Session
-
-from hub.persistence.repository import Repository
-from hub.persistence.models import Application as Model
-
-
-class Application(Repository):
- """
- Application repository
- """
- _instance = None
-
- def __init__(self, db_name: str, dotenv_path: str, app_env: str):
- super().__init__(db_name, dotenv_path, app_env)
-
- def __new__(cls, db_name, dotenv_path, app_env):
- """
- Implemented for a singleton pattern
- """
- if cls._instance is None:
- cls._instance = super(Application, cls).__new__(cls)
- return cls._instance
-
- def insert(self, name: str, description: str, application_uuid: str):
- """
- Inserts a new application
- :param name: Application name
- :param description: Application description
- :param application_uuid: Unique identifier for the application
- :return: Identity id
- """
- try:
- application = self.get_by_uuid(application_uuid)
- if application is not None:
- raise SQLAlchemyError('application already exists')
- except TypeError:
- pass
- try:
- application = Model(name=name, description=description, application_uuid=application_uuid)
- with Session(self.engine) as session:
- session.add(application)
- session.commit()
- session.refresh(application)
- return application.id
- except SQLAlchemyError as err:
- logging.error('An error occurred while creating application %s', err)
- raise SQLAlchemyError from err
-
- def update(self, application_uuid: str, name: str, description: str):
- """
- Updates an application
- :param application_uuid: the application uuid of the application to be updated
- :param name: the application name
- :param description: the application description
- :return: None
- """
- try:
- with Session(self.engine) as session:
- session.query(Model).filter(
- Model.application_uuid == application_uuid
- ).update({'name': name, 'description': description, 'updated': datetime.datetime.utcnow()})
- session.commit()
- except SQLAlchemyError as err:
- logging.error('Error while updating application %s', err)
- raise SQLAlchemyError from err
-
- def delete(self, application_uuid: str):
- """
- Deletes an application with the application_uuid
- :param application_uuid: The application uuid
- :return: None
- """
- try:
- with Session(self.engine) as session:
- session.query(Model).filter(Model.application_uuid == application_uuid).delete()
- session.flush()
- session.commit()
- except SQLAlchemyError as err:
- logging.error('Error while deleting application %s', err)
- raise SQLAlchemyError from err
-
- def get_by_uuid(self, application_uuid: str) -> Model:
- """
- Fetch Application based on the application uuid
- :param application_uuid: the application uuid
- :return: Application with the provided application_uuid
- """
- try:
- with Session(self.engine) as session:
- result_set = session.execute(select(Model).where(
- Model.application_uuid == application_uuid)
- ).first()
- return result_set[0]
- except SQLAlchemyError as err:
- logging.error('Error while fetching application by application_uuid %s', err)
- raise SQLAlchemyError from err
- except TypeError as err:
- logging.error('Error while fetching application, empty result %s', err)
- raise TypeError from err
diff --git a/repositories/city.py b/repositories/city.py
deleted file mode 100644
index d1e0734..0000000
--- a/repositories/city.py
+++ /dev/null
@@ -1,139 +0,0 @@
-"""
-City repository with database CRUD operations
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project Coder Peter Yefi peteryefi@gmail.com
-"""
-import datetime
-import logging
-
-from sqlalchemy import select
-from sqlalchemy.exc import SQLAlchemyError
-from sqlalchemy.orm import Session
-
-from hub.city_model_structure.city import City as CityHub
-from hub.persistence.repository import Repository
-from hub.persistence.models import City as Model
-from hub.persistence.models import CityObject
-from hub.version import __version__
-
-
-class City(Repository):
- """
- City repository
- """
- _instance = None
-
- def __init__(self, db_name: str, dotenv_path: str, app_env: str):
- super().__init__(db_name, dotenv_path, app_env)
-
- def __new__(cls, db_name, dotenv_path, app_env):
- """
- Implemented for a singleton pattern
- """
- if cls._instance is None:
- cls._instance = super(City, cls).__new__(cls)
- return cls._instance
-
- def insert(self, city: CityHub, pickle_path, scenario, application_id, user_id: int):
- """
- Inserts a city
- :param city: The complete city instance
- :param pickle_path: Path to the pickle
- :param scenario: Simulation scenario name
- :param application_id: Application id owning the instance
- :param user_id: User id owning the instance
- :return: Identity id
- """
- city.save_compressed(pickle_path)
- try:
- db_city = Model(
- pickle_path,
- city.name,
- scenario,
- application_id,
- user_id,
- __version__)
- with Session(self.engine) as session:
- session.add(db_city)
- session.flush()
- session.commit()
- for building in city.buildings:
- db_city_object = CityObject(db_city.id,
- building)
- session.add(db_city_object)
- session.flush()
- session.commit()
- session.refresh(db_city)
- return db_city.id
- except SQLAlchemyError as err:
- logging.error('An error occurred while creating a city %s', err)
- raise SQLAlchemyError from err
-
- def update(self, city_id: int, city: CityHub):
- """
- Updates a city name (other updates makes no sense)
- :param city_id: the id of the city to be updated
- :param city: the city object
- :return: None
- """
- try:
- now = datetime.datetime.utcnow()
- with Session(self.engine) as session:
- session.query(Model).filter(Model.id == city_id).update({'name': city.name, 'updated': now})
- session.commit()
- except SQLAlchemyError as err:
- logging.error('Error while updating city %s', err)
- raise SQLAlchemyError from err
-
- def delete(self, city_id: int):
- """
- Deletes a City with the id
- :param city_id: the city id
- :return: None
- """
- try:
- with Session(self.engine) as session:
- session.query(CityObject).filter(CityObject.city_id == city_id).delete()
- session.query(Model).filter(Model.id == city_id).delete()
- session.commit()
- except SQLAlchemyError as err:
- logging.error('Error while fetching city %s', err)
- raise SQLAlchemyError from err
-
- def get_by_user_id_application_id_and_scenario(self, user_id, application_id, scenario) -> [Model]:
- """
- Fetch city based on the user who created it
- :param user_id: the user id
- :param application_id: the application id
- :param scenario: simulation scenario name
- :return: [ModelCity]
- """
- try:
- with Session(self.engine) as session:
- result_set = session.execute(select(Model).where(Model.user_id == user_id,
- Model.application_id == application_id,
- Model.scenario == scenario
- )).all()
- return result_set
- except SQLAlchemyError as err:
- logging.error('Error while fetching city by name %s', err)
- raise SQLAlchemyError from err
-
- def get_by_user_id_and_application_id(self, user_id, application_id) -> [Model]:
- """
- Fetch city based on the user who created it
- :param user_id: the user id
- :param application_id: the application id
- :return: ModelCity
- """
- try:
- with Session(self.engine) as session:
- result_set = session.execute(
- select(Model).where(Model.user_id == user_id, Model.application_id == application_id)
- )
- return [r[0] for r in result_set]
- except SQLAlchemyError as err:
- logging.error('Error while fetching city by name %s', err)
- raise SQLAlchemyError from err
-
diff --git a/repositories/city_object.py b/repositories/city_object.py
deleted file mode 100644
index 3028741..0000000
--- a/repositories/city_object.py
+++ /dev/null
@@ -1,133 +0,0 @@
-"""
-City Object repository with database CRUD operations
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project Coder Guille Gutierrez Guillermo.GutierrezMorote@concordia.ca
-"""
-import datetime
-import logging
-
-from sqlalchemy import select, or_
-from sqlalchemy.exc import SQLAlchemyError
-from sqlalchemy.orm import Session
-
-from hub.city_model_structure.building import Building
-from hub.persistence.repository import Repository
-from hub.persistence.models import CityObject as Model
-
-
-class CityObject(Repository):
- """
- City object repository
- """
- _instance = None
-
- def __init__(self, db_name: str, dotenv_path: str, app_env: str):
- super().__init__(db_name, dotenv_path, app_env)
-
- def __new__(cls, db_name, dotenv_path, app_env):
- """
- Implemented for a singleton pattern
- """
- if cls._instance is None:
- cls._instance = super(CityObject, cls).__new__(cls)
- return cls._instance
-
- def insert(self, city_id: int, building: Building):
- """
- Inserts a new city object
- :param city_id: city id for the city owning this city object
- :param building: the city object (only building for now) to be inserted
- return Identity id
- """
- city_object = self.get_by_name_or_alias_and_city(building.name, city_id)
- if city_object is not None:
- raise SQLAlchemyError(f'A city_object named {building.name} already exists in that city')
- try:
- city_object = Model(city_id=city_id,
- building=building)
- with Session(self.engine) as session:
- session.add(city_object)
- session.flush()
- session.commit()
- session.refresh(city_object)
- return city_object.id
- except SQLAlchemyError as err:
- logging.error('An error occurred while creating city_object %s', err)
- raise SQLAlchemyError from err
-
- def update(self, city_id: int, building: Building):
- """
- Updates an application
- :param city_id: the city id of the city owning the city object
- :param building: the city object
- :return: None
- """
- try:
- object_usage = ''
- for internal_zone in building.internal_zones:
- for usage in internal_zone.usages:
- object_usage = f'{object_usage}{usage.name}_{usage.percentage} '
- object_usage = object_usage.rstrip()
- with Session(self.engine) as session:
- session.query(Model).filter(Model.name == building.name, Model.city_id == city_id).update(
- {'name': building.name,
- 'alias': building.alias,
- 'object_type': building.type,
- 'year_of_construction': building.year_of_construction,
- 'function': building.function,
- 'usage': object_usage,
- 'volume': building.volume,
- 'area': building.floor_area,
- 'updated': datetime.datetime.utcnow()})
- session.commit()
- except SQLAlchemyError as err:
- logging.error('Error while updating city object %s', err)
- raise SQLAlchemyError from err
-
- def delete(self, city_id: int, name: str):
- """
- Deletes an application with the application_uuid
- :param city_id: The id for the city owning the city object
- :param name: The city object name
- :return: None
- """
- try:
- with Session(self.engine) as session:
- session.query(Model).filter(Model.city_id == city_id, Model.name == name).delete()
- session.commit()
- except SQLAlchemyError as err:
- logging.error('Error while deleting application %s', err)
- raise SQLAlchemyError from err
-
- def get_by_name_or_alias_and_city(self, name, city_id) -> Model:
- """
- Fetch a city object based on name and city id
- :param name: city object name
- :param city_id: a city identifier
- :return: [CityObject] with the provided name or alias belonging to the city with id city_id
- """
- try:
- # search by name first
- with Session(self.engine) as session:
- city_object = session.execute(select(Model).where(Model.name == name, Model.city_id == city_id)).first()
- if city_object is not None:
- return city_object[0]
- # name not found, so search by alias instead
- city_objects = session.execute(
- select(Model).where(Model.aliases.contains(name), Model.city_id == city_id)
- ).all()
- for city_object in city_objects:
- aliases = city_object[0].aliases.replace('{', '').replace('}', '').split(',')
- for alias in aliases:
- if alias == name:
- # force the name as the alias
- city_object[0].name = name
- return city_object[0]
- return None
- except SQLAlchemyError as err:
- logging.error('Error while fetching city object by name and city: %s', err)
- raise SQLAlchemyError from err
- except IndexError as err:
- logging.error('Error while fetching city object by name and city, empty result %s', err)
- raise IndexError from err
diff --git a/repositories/simulation_results.py b/repositories/simulation_results.py
deleted file mode 100644
index 3f6faa4..0000000
--- a/repositories/simulation_results.py
+++ /dev/null
@@ -1,169 +0,0 @@
-"""
-Simulation results repository with database CRUD operations
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project Coder Guille Gutierrez Guillermo.GutierrezMorote@concordia.ca
-"""
-import datetime
-import logging
-
-from sqlalchemy import or_
-from sqlalchemy import select
-from sqlalchemy.exc import SQLAlchemyError
-from sqlalchemy.orm import Session
-
-from hub.persistence.repository import Repository
-from hub.persistence.models import City
-from hub.persistence.models import CityObject
-from hub.persistence.models import SimulationResults as Model
-
-
-class SimulationResults(Repository):
- """
- Simulation results repository
- """
- _instance = None
-
- def __init__(self, db_name: str, dotenv_path: str, app_env: str):
- super().__init__(db_name, dotenv_path, app_env)
-
- def __new__(cls, db_name, dotenv_path, app_env):
- """
- Implemented for a singleton pattern
- """
- if cls._instance is None:
- cls._instance = super(SimulationResults, cls).__new__(cls)
- return cls._instance
-
- def insert(self, name: str, values: str, city_id=None, city_object_id=None):
- """
- Inserts simulations results linked either with a city as a whole or with a city object
- :param name: results name
- :param values: the simulation results in json format
- :param city_id: optional city id
- :param city_object_id: optional city object id
- :return: Identity id
- """
- if city_id is not None:
- _ = self._get_city(city_id)
- else:
- _ = self._get_city_object(city_object_id)
- try:
- simulation_result = Model(name=name,
- values=values,
- city_id=city_id,
- city_object_id=city_object_id)
- with Session(self.engine) as session:
- session.add(simulation_result)
- session.flush()
- session.commit()
- session.refresh(simulation_result)
- return simulation_result.id
- except SQLAlchemyError as err:
- logging.error('An error occurred while creating city_object %s', err)
- raise SQLAlchemyError from err
-
- def update(self, name: str, values: str, city_id=None, city_object_id=None):
- """
- Updates simulation results for a city or a city object
- :param name: The simulation results tool and workflow name
- :param values: the simulation results in json format
- :param city_id: optional city id
- :param city_object_id: optional city object id
- :return: None
- """
- try:
- with Session(self.engine) as session:
- if city_id is not None:
- session.query(Model).filter(Model.name == name, Model.city_id == city_id).update(
- {
- 'values': values,
- 'updated': datetime.datetime.utcnow()
- })
- session.commit()
- elif city_object_id is not None:
- session.query(Model).filter(Model.name == name, Model.city_object_id == city_object_id).update(
- {
- 'values': values,
- 'updated': datetime.datetime.utcnow()
- })
- session.commit()
- else:
- raise NotImplementedError('Missing either city_id or city_object_id')
- except SQLAlchemyError as err:
- logging.error('Error while updating city object %s', err)
- raise SQLAlchemyError from err
-
- def delete(self, name: str, city_id=None, city_object_id=None):
- """
- Deletes an application with the application_uuid
- :param name: The simulation results tool and workflow name
- :param city_id: The id for the city owning the simulation results
- :param city_object_id: the id for the city_object owning these simulation results
- :return: None
- """
- try:
- with Session(self.engine) as session:
- if city_id is not None:
- session.query(Model).filter(Model.name == name, Model.city_id == city_id).delete()
- session.commit()
- elif city_object_id is not None:
- session.query(Model).filter(Model.name == name, Model.city_object_id == city_object_id).delete()
- session.commit()
- else:
- raise NotImplementedError('Missing either city_id or city_object_id')
- except SQLAlchemyError as err:
- logging.error('Error while deleting application: %s', err)
- raise SQLAlchemyError from err
-
- def _get_city(self, city_id) -> City:
- """
- Fetch a city object based city id
- :param city_id: a city identifier
- :return: [City] with the provided city_id
- """
- try:
- with Session(self.engine) as session:
- return session.execute(select(City).where(City.id == city_id)).first()
- except SQLAlchemyError as err:
- logging.error('Error while fetching city by city_id: %s', err)
- raise SQLAlchemyError from err
-
- def _get_city_object(self, city_object_id) -> [CityObject]:
- """
- Fetch a city object based city id
- :param city_object_id: a city object identifier
- :return: [CityObject] with the provided city_object_id
- """
- try:
- with Session(self.engine) as session:
- return session.execute(select(CityObject).where(CityObject.id == city_object_id)).first()
- except SQLAlchemyError as err:
- logging.error('Error while fetching city by city_id: %s', err)
- raise SQLAlchemyError from err
-
- def get_simulation_results_by_city_id_city_object_id_and_names(self, city_id, city_object_id, result_names=None) -> [Model]:
- """
- Fetch the simulation results based in the city_id or city_object_id with the given names or all
- :param city_id: the city id
- :param city_object_id: the city object id
- :param result_names: if given filter the results
- :return: [SimulationResult]
- """
- try:
- with Session(self.engine) as session:
- result_set = session.execute(select(Model).where(or_(
- Model.city_id == city_id,
- Model.city_object_id == city_object_id
- )))
- results = [r[0] for r in result_set]
- if not result_names:
- return results
- filtered_results = []
- for result in results:
- if result.name in result_names:
- filtered_results.append(result)
- return filtered_results
- except SQLAlchemyError as err:
- logging.error('Error while fetching city by city_id: %s', err)
- raise SQLAlchemyError from err
diff --git a/repositories/user.py b/repositories/user.py
deleted file mode 100644
index 4467f7c..0000000
--- a/repositories/user.py
+++ /dev/null
@@ -1,159 +0,0 @@
-"""
-User repository with database CRUD operations
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project Coder Peter Yefi peteryefi@gmail.com
-"""
-import datetime
-import logging
-
-from sqlalchemy import select
-from sqlalchemy.exc import SQLAlchemyError
-from sqlalchemy.orm import Session
-
-from hub.helpers.auth import Auth
-from hub.persistence.repository import Repository
-from hub.persistence.models import User as Model, Application as ApplicationModel, UserRoles
-
-
-class User(Repository):
- """
- User class
- """
- _instance = None
-
- def __init__(self, db_name: str, dotenv_path: str, app_env: str):
- super().__init__(db_name, dotenv_path, app_env)
-
- def __new__(cls, db_name, dotenv_path, app_env):
- """
- Implemented for a singleton pattern
- """
- if cls._instance is None:
- cls._instance = super(User, cls).__new__(cls)
- return cls._instance
-
- def insert(self, name: str, password: str, role: UserRoles, application_id: int):
- """
- Inserts a new user
- :param name: username
- :param password: user password
- :param role: user rol [Admin or Hub_Reader]
- :param application_id: user application id
- :return: Identity id
- """
- try:
- user = self.get_by_name_and_application(name, application_id)
- if user is not None:
- raise SQLAlchemyError(f'A user named {user.name} already exists for that application')
- except TypeError:
- pass
- try:
- user = Model(name=name, password=Auth.hash_password(password), role=role, application_id=application_id)
- with Session(self.engine) as session:
- session.add(user)
- session.flush()
- session.commit()
- session.refresh(user)
- return user.id
- except SQLAlchemyError as err:
- logging.error('An error occurred while creating user %s', err)
- raise SQLAlchemyError from err
-
- def update(self, user_id: int, name: str, password: str, role: UserRoles):
- """
- Updates a user
- :param user_id: the id of the user to be updated
- :param name: the name of the user
- :param password: the password of the user
- :param role: the role of the user
- :return: None
- """
- try:
- with Session(self.engine) as session:
- session.query(Model).filter(Model.id == user_id).update({
- 'name': name,
- 'password': Auth.hash_password(password),
- 'role': role,
- 'updated': datetime.datetime.utcnow()
- })
- session.commit()
- except SQLAlchemyError as err:
- logging.error('Error while updating user: %s', err)
- raise SQLAlchemyError from err
-
- def delete(self, user_id: int):
- """
- Deletes a user with the id
- :param user_id: the user id
- :return: None
- """
- try:
- with Session(self.engine) as session:
- session.query(Model).filter(Model.id == user_id).delete()
- session.commit()
- except SQLAlchemyError as err:
- logging.error('Error while fetching user: %s', err)
- raise SQLAlchemyError from err
-
- def get_by_name_and_application(self, name: str, application_id: int) -> Model:
- """
- Fetch user based on the email address
- :param name: Username
- :param application_id: User application name
- :return: User matching the search criteria or None
- """
- try:
- with Session(self.engine) as session:
- user = session.execute(
- select(Model).where(Model.name == name, Model.application_id == application_id)
- ).first()
- session.commit()
- return user[0]
- except SQLAlchemyError as err:
- logging.error('Error while fetching user by name and application: %s', err)
- raise SQLAlchemyError from err
- except TypeError as err:
- logging.error('Error while fetching user, empty result %s', err)
- raise TypeError from err
-
- def get_by_name_application_id_and_password(self, name: str, password: str, application_id: int) -> Model:
- """
- Fetch user based on the name, password and application id
- :param name: Username
- :param password: User password
- :param application_id: Application id
- :return: User
- """
- try:
- with Session(self.engine) as session:
- user = session.execute(
- select(Model).where(Model.name == name, Model.application_id == application_id)
- ).first()
- if user:
- if Auth.check_password(password, user[0].password):
- return user[0]
- except SQLAlchemyError as err:
- logging.error('Error while fetching user by name: %s', err)
- raise SQLAlchemyError from err
- raise ValueError('Unauthorized')
-
- def get_by_name_application_uuid_and_password(self, name: str, password: str, application_uuid: str) -> Model:
- """
- Fetch user based on the email and password
- :param name: Username
- :param password: User password
- :param application_uuid: Application uuid
- :return: User
- """
- try:
- with Session(self.engine) as session:
- application = session.execute(
- select(ApplicationModel).where(ApplicationModel.application_uuid == application_uuid)
- ).first()
- return self.get_by_name_application_id_and_password(name, password, application[0].id)
- except SQLAlchemyError as err:
- logging.error('Error while fetching user by name: %s', err)
- raise SQLAlchemyError from err
- except ValueError as err:
- raise ValueError from err
diff --git a/repository.py b/repository.py
deleted file mode 100644
index 5a3b4e2..0000000
--- a/repository.py
+++ /dev/null
@@ -1,22 +0,0 @@
-"""
-Base repository class to establish db connection
-SPDX - License - Identifier: LGPL - 3.0 - or -later
-Copyright © 2022 Concordia CERC group
-Project Coder Peter Yefi peteryefi@gmail.com
-"""
-import logging
-from sqlalchemy import create_engine
-from hub.persistence.configuration import Configuration
-
-
-class Repository:
- """
- Base repository class to establish db connection
- """
-
- def __init__(self, db_name, dotenv_path: str, app_env='TEST'):
- try:
- self.configuration = Configuration(db_name, dotenv_path, app_env)
- self.engine = create_engine(self.configuration.connection_string)
- except ValueError as err:
- logging.error('Missing value for credentials: %s', err)
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..ca76da0
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,4 @@
+pathlib
+python-dotenv
+SQLAlchemy
+cerc-hub
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..540247d
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,39 @@
+import glob
+import pathlib
+from distutils.util import convert_path
+
+from setuptools import setup
+
+with pathlib.Path('requirements.txt').open() as r:
+ install_requires = [
+ str(requirement).replace('\n', '')
+ for requirement
+ in r.readlines()
+ ]
+install_requires.append('setuptools')
+
+main_ns = {}
+version = convert_path('cerc_persistence/version.py')
+with open(version) as f:
+ exec(f.read(), main_ns)
+
+setup(
+ name='cerc-persistence',
+ version=main_ns['__version__'],
+ description="",
+ long_description="",
+ classifiers=[
+ "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3",
+ ],
+ include_package_data=True,
+ packages=[
+ 'cerc_persistence',
+ 'cerc_persistence.models',
+ 'cerc_persistence.repositories'
+ ],
+ setup_requires=install_requires,
+ install_requires=install_requires,
+ data_files=[],
+)
diff --git a/tests/test_db_factory.py b/tests/test_db_factory.py
new file mode 100644
index 0000000..f07ef4e
--- /dev/null
+++ b/tests/test_db_factory.py
@@ -0,0 +1,300 @@
+"""
+Test db factory
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Peter Yefi peteryefi@gmail.com
+"""
+import distutils.spawn
+import glob
+import json
+import logging
+import os
+import subprocess
+import unittest
+from pathlib import Path
+from unittest import TestCase
+
+import sqlalchemy.exc
+from sqlalchemy import create_engine
+from sqlalchemy.exc import ProgrammingError
+
+import hub.helpers.constants as cte
+from hub.exports.energy_building_exports_factory import EnergyBuildingsExportsFactory
+from hub.exports.exports_factory import ExportsFactory
+from hub.helpers.data.montreal_function_to_hub_function import MontrealFunctionToHubFunction
+from hub.imports.construction_factory import ConstructionFactory
+from hub.imports.energy_systems_factory import EnergySystemsFactory
+from hub.imports.geometry_factory import GeometryFactory
+from hub.imports.results_factory import ResultFactory
+from hub.imports.usage_factory import UsageFactory
+from hub.imports.weather_factory import WeatherFactory
+from cerc_persistence.db_control import DBControl
+from cerc_persistence.models import City, Application, CityObject, SimulationResults
+from cerc_persistence.models import User, UserRoles
+from cerc_persistence.repository import Repository
+
+
+class Control:
+ _skip_test = False
+ _skip_reason = 'PostgreSQL not properly installed in host machine'
+
+ def __init__(self):
+ """
+ Test
+ setup
+ :return: None
+ """
+ self._skip_test = False
+ # Create test database
+ dotenv_path = Path("{}/.local/etc/hub/.env".format(os.path.expanduser('~'))).resolve()
+ if not dotenv_path.exists():
+ self._skip_test = True
+ self._skip_reason = f'.env file missing at {dotenv_path}'
+ return
+ dotenv_path = str(dotenv_path)
+ repository = Repository(db_name='test_db', app_env='TEST', dotenv_path=dotenv_path)
+ engine = create_engine(repository.configuration.connection_string)
+ try:
+ # delete test database if it exists
+ connection = engine.connect()
+ connection.close()
+ except ProgrammingError:
+ logging.info('Database does not exist. Nothing to delete')
+ except sqlalchemy.exc.OperationalError as operational_error:
+ self._skip_test = True
+ self._skip_reason = f'{operational_error}'
+ return
+
+ Application.__table__.create(bind=repository.engine, checkfirst=True)
+ User.__table__.create(bind=repository.engine, checkfirst=True)
+ City.__table__.create(bind=repository.engine, checkfirst=True)
+ CityObject.__table__.create(bind=repository.engine, checkfirst=True)
+ SimulationResults.__table__.create(bind=repository.engine, checkfirst=True)
+
+ city_file = Path('tests_data/test.geojson').resolve()
+ output_path = Path('tests_outputs/').resolve()
+ self._city = GeometryFactory('geojson',
+ city_file,
+ height_field='citygml_me',
+ year_of_construction_field='ANNEE_CONS',
+ aliases_field=['ID_UEV', 'CIVIQUE_DE', 'NOM_RUE'],
+ function_field='CODE_UTILI',
+ function_to_hub=MontrealFunctionToHubFunction().dictionary).city
+
+ ConstructionFactory('nrcan', self._city).enrich()
+ UsageFactory('nrcan', self._city).enrich()
+ WeatherFactory('epw', self._city).enrich()
+ ExportsFactory('sra', self._city, output_path).export()
+ sra_file = str((output_path / f'{self._city.name}_sra.xml').resolve())
+ subprocess.run([self.sra, sra_file], stdout=subprocess.DEVNULL)
+ ResultFactory('sra', self._city, output_path).enrich()
+
+ for building in self._city.buildings:
+ building.energy_systems_archetype_name = 'system 1 gas pv'
+ EnergySystemsFactory('montreal_custom', self._city).enrich()
+ EnergyBuildingsExportsFactory('insel_monthly_energy_balance', self._city, output_path).export()
+ _insel_files = glob.glob(f'{output_path}/*.insel')
+ for insel_file in _insel_files:
+ subprocess.run([self.insel, str(insel_file)], stdout=subprocess.DEVNULL)
+ ResultFactory('insel_monthly_energy_balance', self._city, output_path).enrich()
+
+ self._database = DBControl(
+ db_name=repository.configuration.db_name,
+ app_env='TEST',
+ dotenv_path=dotenv_path)
+
+ self._application_uuid = 'b9e0ce80-1218-410c-8a64-9d9b7026aad8'
+ self._application_id = 1
+ self._user_id = 1
+
+ self._application_id = self._database.persist_application(
+ 'test',
+ 'test',
+ self.application_uuid
+ )
+ self._user_id = self._database.create_user('test', self._application_id, 'test', UserRoles.Admin)
+
+ self._pickle_path = Path('tests_data/pickle_path.bz2').resolve()
+
+ @property
+ def database(self):
+ return self._database
+
+ @property
+ def application_uuid(self):
+ return self._application_uuid
+
+ @property
+ def application_id(self):
+ return self._application_id
+
+ @property
+ def user_id(self):
+ return self._user_id
+
+ @property
+ def skip_test(self):
+ return self._skip_test
+
+ @property
+ def insel(self):
+ return distutils.spawn.find_executable('insel')
+
+ @property
+ def sra(self):
+ return distutils.spawn.find_executable('sra')
+
+ @property
+ def skip_insel_test(self):
+ return self.insel is None
+
+ @property
+ def skip_reason(self):
+ return self._skip_reason
+
+ @property
+ def message(self):
+ return self._skip_reason
+
+ @property
+ def city(self):
+ return self._city
+
+ @property
+ def pickle_path(self):
+ return self._pickle_path
+
+
+control = Control()
+
+
+class TestDBFactory(TestCase):
+ """
+ TestDBFactory
+ """
+
+ @unittest.skipIf(control.skip_test, control.skip_reason)
+ def test_save_city(self):
+ control.city.name = "Montreal"
+ city_id = control.database.persist_city(
+ control.city,
+ control.pickle_path,
+ control.city.name,
+ control.application_id,
+ control.user_id)
+ control.database.delete_city(city_id)
+
+ @unittest.skipIf(control.skip_test, control.skip_reason)
+ def test_get_update_city(self):
+ city_id = control.database.persist_city(control.city,
+ control.pickle_path,
+ control.city.name,
+ control.application_id,
+ control.user_id)
+ control.city.name = "Ottawa"
+ control.database.update_city(city_id, control.city)
+ cities = control.database.cities_by_user_and_application(
+ control.user_id,
+ control.application_id)
+ for updated_city in cities:
+ if updated_city.id == city_id:
+ self.assertEqual(updated_city.name, control.city.name)
+ break
+ control.database.delete_city(city_id)
+
+ @unittest.skipIf(control.skip_test, control.skip_reason)
+ @unittest.skipIf(control.skip_insel_test, 'insel is not installed')
+ def test_save_results(self):
+ city_id = control.database.persist_city(control.city,
+ control.pickle_path,
+ 'current status',
+ control.application_id,
+ control.user_id)
+ city_objects_id = []
+ for building in control.city.buildings:
+ _building = control.database.building_info(building.name, city_id)
+ if cte.MONTH not in building.cooling_demand:
+ print(f'building {building.name} not calculated')
+ continue
+ monthly_cooling_peak_load = building.cooling_peak_load[cte.MONTH]
+ yearly_cooling_peak_load = building.cooling_peak_load[cte.YEAR]
+ monthly_heating_peak_load = building.heating_peak_load[cte.MONTH]
+ yearly_heating_peak_load = building.heating_peak_load[cte.YEAR]
+ monthly_lighting_peak_load = building.lighting_peak_load[cte.MONTH]
+ yearly_lighting_peak_load = building.lighting_peak_load[cte.YEAR]
+ monthly_appliances_peak_load = building.appliances_peak_load[cte.MONTH]
+ yearly_appliances_peak_load = building.appliances_peak_load[cte.YEAR]
+ monthly_cooling_demand = building.cooling_demand[cte.MONTH]
+ yearly_cooling_demand = building.cooling_demand[cte.YEAR]
+ monthly_heating_demand = building.heating_demand[cte.MONTH]
+ yearly_heating_demand = building.heating_demand[cte.YEAR]
+ monthly_lighting_electrical_demand = building.lighting_electrical_demand[cte.MONTH]
+ yearly_lighting_electrical_demand = building.lighting_electrical_demand[cte.YEAR]
+ monthly_appliances_electrical_demand = building.appliances_electrical_demand[cte.MONTH]
+ yearly_appliances_electrical_demand = building.appliances_electrical_demand[cte.YEAR]
+ monthly_domestic_hot_water_heat_demand = building.domestic_hot_water_heat_demand[cte.MONTH]
+ yearly_domestic_hot_water_heat_demand = building.domestic_hot_water_heat_demand[cte.YEAR]
+ monthly_heating_consumption = building.heating_consumption[cte.MONTH]
+ yearly_heating_consumption = building.heating_consumption[cte.YEAR]
+ monthly_cooling_consumption = building.cooling_consumption[cte.MONTH]
+ yearly_cooling_consumption = building.cooling_consumption[cte.YEAR]
+ monthly_domestic_hot_water_consumption = building.domestic_hot_water_consumption[cte.MONTH]
+ yearly_domestic_hot_water_consumption = building._domestic_hot_water_consumption[cte.YEAR]
+ monthly_distribution_systems_electrical_consumption = building.distribution_systems_electrical_consumption[
+ cte.MONTH]
+ yearly_distribution_systems_electrical_consumption = building.distribution_systems_electrical_consumption[
+ cte.YEAR]
+ monthly_on_site_electrical_production = [x * cte.WATTS_HOUR_TO_JULES
+ for x in building.onsite_electrical_production[cte.MONTH]]
+ yearly_on_site_electrical_production = [x * cte.WATTS_HOUR_TO_JULES
+ for x in building.onsite_electrical_production[cte.YEAR]]
+ results = json.dumps({cte.INSEL_MEB: [
+ {'monthly_cooling_peak_load': monthly_cooling_peak_load},
+ {'yearly_cooling_peak_load': yearly_cooling_peak_load},
+ {'monthly_heating_peak_load': monthly_heating_peak_load},
+ {'yearly_heating_peak_load': yearly_heating_peak_load},
+ {'monthly_lighting_peak_load': monthly_lighting_peak_load},
+ {'yearly_lighting_peak_load': yearly_lighting_peak_load},
+ {'monthly_appliances_peak_load': monthly_appliances_peak_load},
+ {'yearly_appliances_peak_load': yearly_appliances_peak_load},
+ {'monthly_cooling_demand': monthly_cooling_demand},
+ {'yearly_cooling_demand': yearly_cooling_demand},
+ {'monthly_heating_demand': monthly_heating_demand},
+ {'yearly_heating_demand': yearly_heating_demand},
+ {'monthly_lighting_electrical_demand': monthly_lighting_electrical_demand},
+ {'yearly_lighting_electrical_demand': yearly_lighting_electrical_demand},
+ {'monthly_appliances_electrical_demand': monthly_appliances_electrical_demand},
+ {'yearly_appliances_electrical_demand': yearly_appliances_electrical_demand},
+ {'monthly_domestic_hot_water_heat_demand': monthly_domestic_hot_water_heat_demand},
+ {'yearly_domestic_hot_water_heat_demand': yearly_domestic_hot_water_heat_demand},
+ {'monthly_heating_consumption': monthly_heating_consumption},
+ {'yearly_heating_consumption': yearly_heating_consumption},
+ {'monthly_cooling_consumption': monthly_cooling_consumption},
+ {'yearly_cooling_consumption': yearly_cooling_consumption},
+ {'monthly_domestic_hot_water_consumption': monthly_domestic_hot_water_consumption},
+ {'yearly_domestic_hot_water_consumption': yearly_domestic_hot_water_consumption},
+ {
+ 'monthly_distribution_systems_electrical_consumption': monthly_distribution_systems_electrical_consumption},
+ {
+ 'yearly_distribution_systems_electrical_consumption': yearly_distribution_systems_electrical_consumption},
+ {'monthly_on_site_electrical_production': monthly_on_site_electrical_production},
+ {'yearly_on_site_electrical_production': yearly_on_site_electrical_production}
+ ]})
+
+ db_building_id = _building.id
+ city_objects_id.append(db_building_id)
+ control.database.add_simulation_results(
+ cte.INSEL_MEB,
+ results, city_object_id=db_building_id)
+ self.assertEqual(17, len(city_objects_id), 'wrong number of results')
+ self.assertIsNotNone(city_objects_id[0], 'city_object_id is None')
+ for _id in city_objects_id:
+ control.database.delete_results_by_name('insel meb', city_object_id=_id)
+ control.database.delete_city(city_id)
+
+ @classmethod
+ @unittest.skipIf(control.skip_test, control.skip_reason)
+ def tearDownClass(cls):
+ control.database.delete_application(control.application_uuid)
+ control.database.delete_user(control.user_id)
+ os.unlink(control.pickle_path)
diff --git a/tests/test_db_retrieve.py b/tests/test_db_retrieve.py
new file mode 100644
index 0000000..0b8af00
--- /dev/null
+++ b/tests/test_db_retrieve.py
@@ -0,0 +1,135 @@
+"""
+Test db factory
+SPDX - License - Identifier: LGPL - 3.0 - or -later
+Copyright © 2022 Concordia CERC group
+Project Coder Peter Yefi peteryefi@gmail.com
+"""
+import distutils.spawn
+import logging
+import os
+import unittest
+from pathlib import Path
+from unittest import TestCase
+
+import sqlalchemy.exc
+from sqlalchemy import create_engine
+from sqlalchemy.exc import ProgrammingError
+from cerc_persistence.db_control import DBControl
+from cerc_persistence.repository import Repository
+
+
+class Control:
+ _skip_test = False
+ _skip_reason = 'PostgreSQL not properly installed in host machine'
+
+ def __init__(self):
+ """
+ Test
+ setup
+ :return: None
+ """
+ self._skip_test = False
+ # Create test database
+ dotenv_path = Path("{}/.local/etc/hub/.env".format(os.path.expanduser('~'))).resolve()
+ if not dotenv_path.exists():
+ self._skip_test = True
+ self._skip_reason = f'.env file missing at {dotenv_path}'
+ return
+ dotenv_path = str(dotenv_path)
+ repository = Repository(db_name='montreal_retrofit_test', app_env='TEST', dotenv_path=dotenv_path)
+ engine = create_engine(repository.configuration.connection_string)
+ try:
+ # delete test database if it exists
+ connection = engine.connect()
+ connection.close()
+ except ProgrammingError:
+ logging.info('Database does not exist. Nothing to delete')
+ except sqlalchemy.exc.OperationalError as operational_error:
+ self._skip_test = True
+ self._skip_reason = f'{operational_error}'
+ return
+
+ self._database = DBControl(
+ db_name=repository.configuration.db_name,
+ app_env='TEST',
+ dotenv_path=dotenv_path)
+
+ self._application_uuid = '60b7fc1b-f389-4254-9ffd-22a4cf32c7a3'
+ self._application_id = 1
+ self._user_id = 1
+ self._pickle_path = 'tests_data/pickle_path.bz2'
+
+ @property
+ def database(self):
+ return self._database
+
+ @property
+ def application_uuid(self):
+ return self._application_uuid
+
+ @property
+ def application_id(self):
+ return self._application_id
+
+ @property
+ def user_id(self):
+ return self._user_id
+
+ @property
+ def skip_test(self):
+ return self._skip_test
+
+ @property
+ def insel(self):
+ return distutils.spawn.find_executable('insel')
+
+ @property
+ def sra(self):
+ return distutils.spawn.find_executable('sra')
+
+ @property
+ def skip_insel_test(self):
+ return self.insel is None
+
+ @property
+ def skip_reason(self):
+ return self._skip_reason
+
+ @property
+ def message(self):
+ return self._skip_reason
+
+ @property
+ def pickle_path(self):
+ return self._pickle_path
+
+
+control = Control()
+
+
+class TestDBFactory(TestCase):
+ """
+ TestDBFactory
+ """
+
+ @unittest.skipIf(control.skip_test, control.skip_reason)
+ def test_retrieve_results(self):
+ request_values = {
+ "scenarios": [
+ {
+ "current status": ["01002777", "01002773", "01036804"]
+ },
+ {
+ "skin retrofit": ["01002777", "01002773", "01036804"]
+ },
+ {
+ "system retrofit and pv": ["01002777", "01002773", "01036804"]
+ },
+ {
+ "skin and system retrofit with pv": ["01002777", "01002773", "01036804"]
+ }
+
+ ]
+ }
+ results = control.database.results(control.user_id, control.application_id, request_values)
+ print(results)
diff --git a/tests/tests_data/C40_Final.gml b/tests/tests_data/C40_Final.gml
new file mode 100644
index 0000000..34126bd
--- /dev/null
+++ b/tests/tests_data/C40_Final.gml
@@ -0,0 +1,3377 @@
+
+
+
+
+610610.7547462888 5035770.347264212 566.5784301757819
+610818.6731258357 5035968.504367453 598.217651367188
+
+
+
+
+
+
+residential
+1996
+12.822875976562045
+2
+4.5
+
+
+
+
+
+
+
+
+610731.736095011 5035823.038792845 579.401306152344 610710.8787736718 5035807.662177984 579.401306152344 610731.736095011 5035823.038792845 566.5784301757819 610731.736095011 5035823.038792845 579.401306152344
+
+
+
+
+
+
+
+
+610710.8787736718 5035807.662177984 579.401306152344 610710.8787736718 5035807.662177984 566.5784301757819 610731.736095011 5035823.038792845 566.5784301757819 610710.8787736718 5035807.662177984 579.401306152344
+
+
+
+
+
+
+
+
+610731.736095011 5035823.038792845 579.401306152344 610685.9119691952 5035884.728175624 566.5784301757819 610685.9119691952 5035884.728175624 579.401306152344 610731.736095011 5035823.038792845 579.401306152344
+
+
+
+
+
+
+
+
+610731.736095011 5035823.038792845 566.5784301757819 610685.9119691952 5035884.728175624 566.5784301757819 610731.736095011 5035823.038792845 579.401306152344 610731.736095011 5035823.038792845 566.5784301757819
+
+
+
+
+
+
+
+
+610731.736095011 5035823.038792845 566.5784301757819 610710.8787736718 5035807.662177984 566.5784301757819 610685.9119691952 5035884.728175624 566.5784301757819 610731.736095011 5035823.038792845 566.5784301757819
+
+
+
+
+
+
+
+
+610685.9119691952 5035884.728175624 566.5784301757819 610710.8787736718 5035807.662177984 566.5784301757819 610665.0659159254 5035869.341116842 566.5784301757819 610685.9119691952 5035884.728175624 566.5784301757819
+
+
+
+
+
+
+
+
+610685.9119691952 5035884.728175624 579.401306152344 610665.0659159254 5035869.341116842 579.401306152344 610710.8787736718 5035807.662177984 579.401306152344 610685.9119691952 5035884.728175624 579.401306152344
+
+
+
+
+
+
+
+
+610731.736095011 5035823.038792845 579.401306152344 610685.9119691952 5035884.728175624 579.401306152344 610710.8787736718 5035807.662177984 579.401306152344 610731.736095011 5035823.038792845 579.401306152344
+
+
+
+
+
+
+
+
+610710.8787736718 5035807.662177984 566.5784301757819 610710.8787736718 5035807.662177984 579.401306152344 610665.0659159254 5035869.341116842 579.401306152344 610710.8787736718 5035807.662177984 566.5784301757819
+
+
+
+
+
+
+
+
+610710.8787736718 5035807.662177984 566.5784301757819 610665.0659159254 5035869.341116842 579.401306152344 610665.0659159254 5035869.341116842 566.5784301757819 610710.8787736718 5035807.662177984 566.5784301757819
+
+
+
+
+
+
+
+
+610665.0659159254 5035869.341116842 579.401306152344 610685.9119691952 5035884.728175624 579.401306152344 610665.0659159254 5035869.341116842 566.5784301757819 610665.0659159254 5035869.341116842 579.401306152344
+
+
+
+
+
+
+
+
+610685.9119691952 5035884.728175624 579.401306152344 610685.9119691952 5035884.728175624 566.5784301757819 610665.0659159254 5035869.341116842 566.5784301757819 610685.9119691952 5035884.728175624 579.401306152344
+
+
+
+
+
+
+
+
+
+
+
+
+residential
+1996
+17.09716796875
+2
+6
+
+
+
+
+
+
+
+
+610703.3889290215 5035897.594541908 583.6755981445319 610684.1980603877 5035923.445129678 566.5784301757819 610684.1980603877 5035923.445129678 583.6755981445319 610703.3889290215 5035897.594541908 583.6755981445319
+
+
+
+
+
+
+
+
+610703.3889290215 5035897.594541908 566.5784301757819 610684.1980603877 5035923.445129678 566.5784301757819 610703.3889290215 5035897.594541908 583.6755981445319 610703.3889290215 5035897.594541908 566.5784301757819
+
+
+
+
+
+
+
+
+610703.3889290215 5035897.594541908 583.6755981445319 610665.0659159254 5035869.341116842 583.6755981445319 610703.3889290215 5035897.594541908 566.5784301757819 610703.3889290215 5035897.594541908 583.6755981445319
+
+
+
+
+
+
+
+
+610665.0659159254 5035869.341116842 583.6755981445319 610665.0659159254 5035869.341116842 566.5784301757819 610703.3889290215 5035897.594541908 566.5784301757819 610665.0659159254 5035869.341116842 583.6755981445319
+
+
+
+
+
+
+
+
+610684.1980603877 5035923.445129678 583.6755981445319 610645.9080433963 5035895.192514391 583.6755981445319 610703.3889290215 5035897.594541908 583.6755981445319 610684.1980603877 5035923.445129678 583.6755981445319
+
+
+
+
+
+
+
+
+610703.3889290215 5035897.594541908 583.6755981445319 610645.9080433963 5035895.192514391 583.6755981445319 610665.0659159254 5035869.341116842 583.6755981445319 610703.3889290215 5035897.594541908 583.6755981445319
+
+
+
+
+
+
+
+
+610665.0659159254 5035869.341116842 566.5784301757819 610665.0659159254 5035869.341116842 583.6755981445319 610645.9080433963 5035895.192514391 583.6755981445319 610665.0659159254 5035869.341116842 566.5784301757819
+
+
+
+
+
+
+
+
+610665.0659159254 5035869.341116842 566.5784301757819 610645.9080433963 5035895.192514391 583.6755981445319 610645.9080433963 5035895.192514391 566.5784301757819 610665.0659159254 5035869.341116842 566.5784301757819
+
+
+
+
+
+
+
+
+610645.9080433963 5035895.192514391 583.6755981445319 610684.1980603877 5035923.445129678 583.6755981445319 610645.9080433963 5035895.192514391 566.5784301757819 610645.9080433963 5035895.192514391 583.6755981445319
+
+
+
+
+
+
+
+
+610684.1980603877 5035923.445129678 583.6755981445319 610684.1980603877 5035923.445129678 566.5784301757819 610645.9080433963 5035895.192514391 566.5784301757819 610684.1980603877 5035923.445129678 583.6755981445319
+
+
+
+
+
+
+
+
+610684.1980603877 5035923.445129678 566.5784301757819 610703.3889290215 5035897.594541908 566.5784301757819 610645.9080433963 5035895.192514391 566.5784301757819 610684.1980603877 5035923.445129678 566.5784301757819
+
+
+
+
+
+
+
+
+610703.3889290215 5035897.594541908 566.5784301757819 610665.0659159254 5035869.341116842 566.5784301757819 610645.9080433963 5035895.192514391 566.5784301757819 610703.3889290215 5035897.594541908 566.5784301757819
+
+
+
+
+
+
+
+
+
+
+
+
+residential
+1996
+6.411376953125
+1
+4.5
+
+
+
+
+
+
+
+
+610621.7522854737 5035912.554446138 572.989868164063 610646.6181083214 5035930.900036323 572.989868164063 610621.7522854737 5035912.554446138 566.578491210938 610621.7522854737 5035912.554446138 572.989868164063
+
+
+
+
+
+
+
+
+610646.6181083214 5035930.900036323 572.989868164063 610646.6181083214 5035930.900036323 566.578491210938 610621.7522854737 5035912.554446138 566.578491210938 610646.6181083214 5035930.900036323 572.989868164063
+
+
+
+
+
+
+
+
+610663.4816818945 5035908.180781324 572.989868164063 610646.6181083214 5035930.900036323 566.578491210938 610646.6181083214 5035930.900036323 572.989868164063 610663.4816818945 5035908.180781324 572.989868164063
+
+
+
+
+
+
+
+
+610663.4816818945 5035908.180781324 566.578491210938 610646.6181083214 5035930.900036323 566.578491210938 610663.4816818945 5035908.180781324 572.989868164063 610663.4816818945 5035908.180781324 566.578491210938
+
+
+
+
+
+
+
+
+610710.889553302 5035807.673307475 572.989868164063 610668.1231967269 5035865.259882145 566.578491210938 610668.1231967269 5035865.259882145 572.989868164063 610710.889553302 5035807.673307475 572.989868164063
+
+
+
+
+
+
+
+
+610710.889553302 5035807.673307475 566.578491210938 610668.1231967269 5035865.259882145 566.578491210938 610710.889553302 5035807.673307475 572.989868164063 610710.889553302 5035807.673307475 566.578491210938
+
+
+
+
+
+
+
+
+610710.889553302 5035807.673307475 572.989868164063 610692.6219659926 5035794.191143957 572.989868164063 610710.889553302 5035807.673307475 566.578491210938 610710.889553302 5035807.673307475 572.989868164063
+
+
+
+
+
+
+
+
+610692.6219659926 5035794.191143957 572.989868164063 610692.6219659926 5035794.191143957 566.578491210938 610710.889553302 5035807.673307475 566.578491210938 610692.6219659926 5035794.191143957 572.989868164063
+
+
+
+
+
+
+
+
+610621.7522854737 5035912.554446138 572.989868164063 610619.3578221387 5035915.772196898 566.578491210938 610619.3578221387 5035915.772196898 572.989868164063 610621.7522854737 5035912.554446138 572.989868164063
+
+
+
+
+
+
+
+
+610621.7522854737 5035912.554446138 566.578491210938 610619.3578221387 5035915.772196898 566.578491210938 610621.7522854737 5035912.554446138 572.989868164063 610621.7522854737 5035912.554446138 566.578491210938
+
+
+
+
+
+
+
+
+610614.1462577312 5035911.9282374615 572.989868164063 610619.3578221387 5035915.772196898 572.989868164063 610614.1462577312 5035911.9282374615 566.578491210938 610614.1462577312 5035911.9282374615 572.989868164063
+
+
+
+
+
+
+
+
+610619.3578221387 5035915.772196898 572.989868164063 610619.3578221387 5035915.772196898 566.578491210938 610614.1462577312 5035911.9282374615 566.578491210938 610619.3578221387 5035915.772196898 572.989868164063
+
+
+
+
+
+
+
+
+610649.8555010457 5035851.7888990585 566.578491210938 610649.8555010457 5035851.7888990585 572.989868164063 610610.7547462888 5035904.451651935 572.989868164063 610649.8555010457 5035851.7888990585 566.578491210938
+
+
+
+
+
+
+
+
+610692.6219659926 5035794.191143957 566.578491210938 610692.6219659926 5035794.191143957 572.989868164063 610649.8555010457 5035851.7888990585 572.989868164063 610692.6219659926 5035794.191143957 566.578491210938
+
+
+
+
+
+
+
+
+610649.8555010457 5035851.7888990585 566.578491210938 610610.7547462888 5035904.451651935 572.989868164063 610610.7547462888 5035904.451651935 566.578491210938 610649.8555010457 5035851.7888990585 566.578491210938
+
+
+
+
+
+
+
+
+610692.6219659926 5035794.191143957 566.578491210938 610649.8555010457 5035851.7888990585 572.989868164063 610649.8555010457 5035851.7888990585 566.578491210938 610692.6219659926 5035794.191143957 566.578491210938
+
+
+
+
+
+
+
+
+610619.3578221387 5035915.772196898 572.989868164063 610616.5297475372 5035908.71028959 572.989868164063 610621.7522854737 5035912.554446138 572.989868164063 610619.3578221387 5035915.772196898 572.989868164063
+
+
+
+
+
+
+
+
+610621.7522854737 5035912.554446138 572.989868164063 610616.5297475372 5035908.71028959 572.989868164063 610645.8968785583 5035895.203257089 572.989868164063 610621.7522854737 5035912.554446138 572.989868164063
+
+
+
+
+
+
+
+
+610616.5297475372 5035908.71028959 572.989868164063 610610.7547462888 5035904.451651935 572.989868164063 610645.8968785583 5035895.203257089 572.989868164063 610616.5297475372 5035908.71028959 572.989868164063
+
+
+
+
+
+
+
+
+610668.1231967269 5035865.259882145 572.989868164063 610645.8968785583 5035895.203257089 572.989868164063 610649.8555010457 5035851.7888990585 572.989868164063 610668.1231967269 5035865.259882145 572.989868164063
+
+
+
+
+
+
+
+
+610645.8968785583 5035895.203257089 572.989868164063 610610.7547462888 5035904.451651935 572.989868164063 610649.8555010457 5035851.7888990585 572.989868164063 610645.8968785583 5035895.203257089 572.989868164063
+
+
+
+
+
+
+
+
+610646.6181083214 5035930.900036323 572.989868164063 610645.8968785583 5035895.203257089 572.989868164063 610663.4816818945 5035908.180781324 572.989868164063 610646.6181083214 5035930.900036323 572.989868164063
+
+
+
+
+
+
+
+
+610646.6181083214 5035930.900036323 572.989868164063 610621.7522854737 5035912.554446138 572.989868164063 610645.8968785583 5035895.203257089 572.989868164063 610646.6181083214 5035930.900036323 572.989868164063
+
+
+
+
+
+
+
+
+610668.1231967269 5035865.259882145 572.989868164063 610649.8555010457 5035851.7888990585 572.989868164063 610710.889553302 5035807.673307475 572.989868164063 610668.1231967269 5035865.259882145 572.989868164063
+
+
+
+
+
+
+
+
+610619.3578221387 5035915.772196898 572.989868164063 610614.1462577312 5035911.9282374615 572.989868164063 610616.5297475372 5035908.71028959 572.989868164063 610619.3578221387 5035915.772196898 572.989868164063
+
+
+
+
+
+
+
+
+610710.889553302 5035807.673307475 572.989868164063 610649.8555010457 5035851.7888990585 572.989868164063 610692.6219659926 5035794.191143957 572.989868164063 610710.889553302 5035807.673307475 572.989868164063
+
+
+
+
+
+
+
+
+610663.4816818945 5035908.180781324 572.989868164063 610645.8968785583 5035895.203257089 572.989868164063 610663.4816818945 5035908.180781324 566.578491210938 610663.4816818945 5035908.180781324 572.989868164063
+
+
+
+
+
+
+
+
+610645.8968785583 5035895.203257089 572.989868164063 610645.8968785583 5035895.203257089 566.578491210938 610663.4816818945 5035908.180781324 566.578491210938 610645.8968785583 5035895.203257089 572.989868164063
+
+
+
+
+
+
+
+
+610616.5297475372 5035908.71028959 566.578491210938 610616.5297475372 5035908.71028959 572.989868164063 610614.1462577312 5035911.9282374615 572.989868164063 610616.5297475372 5035908.71028959 566.578491210938
+
+
+
+
+
+
+
+
+610616.5297475372 5035908.71028959 566.578491210938 610614.1462577312 5035911.9282374615 572.989868164063 610614.1462577312 5035911.9282374615 566.578491210938 610616.5297475372 5035908.71028959 566.578491210938
+
+
+
+
+
+
+
+
+610619.3578221387 5035915.772196898 566.578491210938 610621.7522854737 5035912.554446138 566.578491210938 610616.5297475372 5035908.71028959 566.578491210938 610619.3578221387 5035915.772196898 566.578491210938
+
+
+
+
+
+
+
+
+610621.7522854737 5035912.554446138 566.578491210938 610645.8968785583 5035895.203257089 566.578491210938 610616.5297475372 5035908.71028959 566.578491210938 610621.7522854737 5035912.554446138 566.578491210938
+
+
+
+
+
+
+
+
+610616.5297475372 5035908.71028959 566.578491210938 610645.8968785583 5035895.203257089 566.578491210938 610610.7547462888 5035904.451651935 566.578491210938 610616.5297475372 5035908.71028959 566.578491210938
+
+
+
+
+
+
+
+
+610668.1231967269 5035865.259882145 566.578491210938 610649.8555010457 5035851.7888990585 566.578491210938 610645.8968785583 5035895.203257089 566.578491210938 610668.1231967269 5035865.259882145 566.578491210938
+
+
+
+
+
+
+
+
+610645.8968785583 5035895.203257089 566.578491210938 610649.8555010457 5035851.7888990585 566.578491210938 610610.7547462888 5035904.451651935 566.578491210938 610645.8968785583 5035895.203257089 566.578491210938
+
+
+
+
+
+
+
+
+610646.6181083214 5035930.900036323 566.578491210938 610663.4816818945 5035908.180781324 566.578491210938 610645.8968785583 5035895.203257089 566.578491210938 610646.6181083214 5035930.900036323 566.578491210938
+
+
+
+
+
+
+
+
+610646.6181083214 5035930.900036323 566.578491210938 610645.8968785583 5035895.203257089 566.578491210938 610621.7522854737 5035912.554446138 566.578491210938 610646.6181083214 5035930.900036323 566.578491210938
+
+
+
+
+
+
+
+
+610668.1231967269 5035865.259882145 566.578491210938 610710.889553302 5035807.673307475 566.578491210938 610649.8555010457 5035851.7888990585 566.578491210938 610668.1231967269 5035865.259882145 566.578491210938
+
+
+
+
+
+
+
+
+610619.3578221387 5035915.772196898 566.578491210938 610616.5297475372 5035908.71028959 566.578491210938 610614.1462577312 5035911.9282374615 566.578491210938 610619.3578221387 5035915.772196898 566.578491210938
+
+
+
+
+
+
+
+
+610710.889553302 5035807.673307475 566.578491210938 610692.6219659926 5035794.191143957 566.578491210938 610649.8555010457 5035851.7888990585 566.578491210938 610710.889553302 5035807.673307475 566.578491210938
+
+
+
+
+
+
+
+
+610668.1231967269 5035865.259882145 572.989868164063 610645.8968785583 5035895.203257089 566.578491210938 610645.8968785583 5035895.203257089 572.989868164063 610668.1231967269 5035865.259882145 572.989868164063
+
+
+
+
+
+
+
+
+610668.1231967269 5035865.259882145 566.578491210938 610645.8968785583 5035895.203257089 566.578491210938 610668.1231967269 5035865.259882145 572.989868164063 610668.1231967269 5035865.259882145 566.578491210938
+
+
+
+
+
+
+
+
+610610.7547462888 5035904.451651935 572.989868164063 610616.5297475372 5035908.71028959 572.989868164063 610610.7547462888 5035904.451651935 566.578491210938 610610.7547462888 5035904.451651935 572.989868164063
+
+
+
+
+
+
+
+
+610616.5297475372 5035908.71028959 572.989868164063 610616.5297475372 5035908.71028959 566.578491210938 610610.7547462888 5035904.451651935 566.578491210938 610616.5297475372 5035908.71028959 572.989868164063
+
+
+
+
+
+
+
+
+
+
+
+
+residential
+1996
+6.411376953125
+1
+4.5
+
+
+
+
+
+
+
+
+610621.7524780579 5035912.543510207 579.401306152344 610623.0743290926 5035913.518509444 579.401306152344 610621.7524780579 5035912.543510207 572.989929199219 610621.7524780579 5035912.543510207 579.401306152344
+
+
+
+
+
+
+
+
+610623.0743290926 5035913.518509444 579.401306152344 610623.0743290926 5035913.518509444 572.989929199219 610621.7524780579 5035912.543510207 572.989929199219 610623.0743290926 5035913.518509444 579.401306152344
+
+
+
+
+
+
+
+
+610619.3362629502 5035915.74993861 572.989929199219 610621.7524780579 5035912.543510207 572.989929199219 610616.5191605 5035908.688224501 572.989929199219 610619.3362629502 5035915.74993861 572.989929199219
+
+
+
+
+
+
+
+
+610616.5191605 5035908.688224501 572.989929199219 610692.6329383818 5035794.1913372995 572.989929199219 610610.7547462888 5035904.451651935 572.989929199219 610616.5191605 5035908.688224501 572.989929199219
+
+
+
+
+
+
+
+
+610621.7524780579 5035912.543510207 572.989929199219 610704.9412724827 5035803.280188803 572.989929199219 610616.5191605 5035908.688224501 572.989929199219 610621.7524780579 5035912.543510207 572.989929199219
+
+
+
+
+
+
+
+
+610704.9412724827 5035803.280188803 572.989929199219 610692.6329383818 5035794.1913372995 572.989929199219 610616.5191605 5035908.688224501 572.989929199219 610704.9412724827 5035803.280188803 572.989929199219
+
+
+
+
+
+
+
+
+610623.0743290926 5035913.518509444 572.989929199219 610704.9412724827 5035803.280188803 572.989929199219 610621.7524780579 5035912.543510207 572.989929199219 610623.0743290926 5035913.518509444 572.989929199219
+
+
+
+
+
+
+
+
+610619.3362629502 5035915.74993861 572.989929199219 610616.5191605 5035908.688224501 572.989929199219 610614.1350929802 5035911.9389801845 572.989929199219 610619.3362629502 5035915.74993861 572.989929199219
+
+
+
+
+
+
+
+
+610704.9412724827 5035803.280188803 579.401306152344 610623.0743290926 5035913.518509444 572.989929199219 610623.0743290926 5035913.518509444 579.401306152344 610704.9412724827 5035803.280188803 579.401306152344
+
+
+
+
+
+
+
+
+610704.9412724827 5035803.280188803 572.989929199219 610623.0743290926 5035913.518509444 572.989929199219 610704.9412724827 5035803.280188803 579.401306152344 610704.9412724827 5035803.280188803 572.989929199219
+
+
+
+
+
+
+
+
+610619.3362629502 5035915.74993861 579.401306152344 610616.5191605 5035908.688224501 579.401306152344 610621.7524780579 5035912.543510207 579.401306152344 610619.3362629502 5035915.74993861 579.401306152344
+
+
+
+
+
+
+
+
+610616.5191605 5035908.688224501 579.401306152344 610610.7547462888 5035904.451651935 579.401306152344 610692.6329383818 5035794.1913372995 579.401306152344 610616.5191605 5035908.688224501 579.401306152344
+
+
+
+
+
+
+
+
+610621.7524780579 5035912.543510207 579.401306152344 610616.5191605 5035908.688224501 579.401306152344 610704.9412724827 5035803.280188803 579.401306152344 610621.7524780579 5035912.543510207 579.401306152344
+
+
+
+
+
+
+
+
+610704.9412724827 5035803.280188803 579.401306152344 610616.5191605 5035908.688224501 579.401306152344 610692.6329383818 5035794.1913372995 579.401306152344 610704.9412724827 5035803.280188803 579.401306152344
+
+
+
+
+
+
+
+
+610623.0743290926 5035913.518509444 579.401306152344 610621.7524780579 5035912.543510207 579.401306152344 610704.9412724827 5035803.280188803 579.401306152344 610623.0743290926 5035913.518509444 579.401306152344
+
+
+
+
+
+
+
+
+610619.3362629502 5035915.74993861 579.401306152344 610614.1350929802 5035911.9389801845 579.401306152344 610616.5191605 5035908.688224501 579.401306152344 610619.3362629502 5035915.74993861 579.401306152344
+
+
+
+
+
+
+
+
+610621.7524780579 5035912.543510207 579.401306152344 610619.3362629502 5035915.74993861 572.989929199219 610619.3362629502 5035915.74993861 579.401306152344 610621.7524780579 5035912.543510207 579.401306152344
+
+
+
+
+
+
+
+
+610621.7524780579 5035912.543510207 572.989929199219 610619.3362629502 5035915.74993861 572.989929199219 610621.7524780579 5035912.543510207 579.401306152344 610621.7524780579 5035912.543510207 572.989929199219
+
+
+
+
+
+
+
+
+610614.1350929802 5035911.9389801845 579.401306152344 610619.3362629502 5035915.74993861 579.401306152344 610614.1350929802 5035911.9389801845 572.989929199219 610614.1350929802 5035911.9389801845 579.401306152344
+
+
+
+
+
+
+
+
+610619.3362629502 5035915.74993861 579.401306152344 610619.3362629502 5035915.74993861 572.989929199219 610614.1350929802 5035911.9389801845 572.989929199219 610619.3362629502 5035915.74993861 579.401306152344
+
+
+
+
+
+
+
+
+610704.9412724827 5035803.280188803 579.401306152344 610692.6329383818 5035794.1913372995 579.401306152344 610704.9412724827 5035803.280188803 572.989929199219 610704.9412724827 5035803.280188803 579.401306152344
+
+
+
+
+
+
+
+
+610692.6329383818 5035794.1913372995 579.401306152344 610692.6329383818 5035794.1913372995 572.989929199219 610704.9412724827 5035803.280188803 572.989929199219 610692.6329383818 5035794.1913372995 579.401306152344
+
+
+
+
+
+
+
+
+610616.5191605 5035908.688224501 572.989929199219 610616.5191605 5035908.688224501 579.401306152344 610614.1350929802 5035911.9389801845 579.401306152344 610616.5191605 5035908.688224501 572.989929199219
+
+
+
+
+
+
+
+
+610616.5191605 5035908.688224501 572.989929199219 610614.1350929802 5035911.9389801845 579.401306152344 610614.1350929802 5035911.9389801845 572.989929199219 610616.5191605 5035908.688224501 572.989929199219
+
+
+
+
+
+
+
+
+610692.6329383818 5035794.1913372995 572.989929199219 610692.6329383818 5035794.1913372995 579.401306152344 610610.7547462888 5035904.451651935 579.401306152344 610692.6329383818 5035794.1913372995 572.989929199219
+
+
+
+
+
+
+
+
+610692.6329383818 5035794.1913372995 572.989929199219 610610.7547462888 5035904.451651935 579.401306152344 610610.7547462888 5035904.451651935 572.989929199219 610692.6329383818 5035794.1913372995 572.989929199219
+
+
+
+
+
+
+
+
+610610.7547462888 5035904.451651935 579.401306152344 610616.5191605 5035908.688224501 579.401306152344 610610.7547462888 5035904.451651935 572.989929199219 610610.7547462888 5035904.451651935 579.401306152344
+
+
+
+
+
+
+
+
+610616.5191605 5035908.688224501 579.401306152344 610616.5191605 5035908.688224501 572.989929199219 610610.7547462888 5035904.451651935 572.989929199219 610616.5191605 5035908.688224501 579.401306152344
+
+
+
+
+
+
+
+
+
+
+
+
+residential
+1996
+6.411437988281023
+1
+4.5
+
+
+
+
+
+
+
+
+610710.889553302 5035807.673307475 572.989868164063 610629.0223648318 5035917.922411644 572.989868164063 610629.0223648318 5035917.922411644 579.401306152344 610710.889553302 5035807.673307475 572.989868164063
+
+
+
+
+
+
+
+
+610710.889553302 5035807.673307475 572.989868164063 610629.0223648318 5035917.922411644 579.401306152344 610710.889553302 5035807.673307475 579.401306152344 610710.889553302 5035807.673307475 572.989868164063
+
+
+
+
+
+
+
+
+610710.889553302 5035807.673307475 579.401306152344 610704.9412724827 5035803.280188803 572.989868164063 610710.889553302 5035807.673307475 572.989868164063 610710.889553302 5035807.673307475 579.401306152344
+
+
+
+
+
+
+
+
+610704.9412724827 5035803.280188803 579.401306152344 610704.9412724827 5035803.280188803 572.989868164063 610710.889553302 5035807.673307475 579.401306152344 610704.9412724827 5035803.280188803 579.401306152344
+
+
+
+
+
+
+
+
+610629.0223648318 5035917.922411644 579.401306152344 610623.0741365062 5035913.5294453725 579.401306152344 610704.9412724827 5035803.280188803 579.401306152344 610629.0223648318 5035917.922411644 579.401306152344
+
+
+
+
+
+
+
+
+610710.889553302 5035807.673307475 579.401306152344 610629.0223648318 5035917.922411644 579.401306152344 610704.9412724827 5035803.280188803 579.401306152344 610710.889553302 5035807.673307475 579.401306152344
+
+
+
+
+
+
+
+
+610629.0223648318 5035917.922411644 572.989868164063 610704.9412724827 5035803.280188803 572.989868164063 610623.0741365062 5035913.5294453725 572.989868164063 610629.0223648318 5035917.922411644 572.989868164063
+
+
+
+
+
+
+
+
+610710.889553302 5035807.673307475 572.989868164063 610704.9412724827 5035803.280188803 572.989868164063 610629.0223648318 5035917.922411644 572.989868164063 610710.889553302 5035807.673307475 572.989868164063
+
+
+
+
+
+
+
+
+610623.0741365062 5035913.5294453725 579.401306152344 610629.0223648318 5035917.922411644 572.989868164063 610623.0741365062 5035913.5294453725 572.989868164063 610623.0741365062 5035913.5294453725 579.401306152344
+
+
+
+
+
+
+
+
+610629.0223648318 5035917.922411644 579.401306152344 610629.0223648318 5035917.922411644 572.989868164063 610623.0741365062 5035913.5294453725 579.401306152344 610629.0223648318 5035917.922411644 579.401306152344
+
+
+
+
+
+
+
+
+610704.9412724827 5035803.280188803 572.989868164063 610704.9412724827 5035803.280188803 579.401306152344 610623.0741365062 5035913.5294453725 572.989868164063 610704.9412724827 5035803.280188803 572.989868164063
+
+
+
+
+
+
+
+
+610704.9412724827 5035803.280188803 579.401306152344 610623.0741365062 5035913.5294453725 579.401306152344 610623.0741365062 5035913.5294453725 572.989868164063 610704.9412724827 5035803.280188803 579.401306152344
+
+
+
+
+
+
+
+
+
+
+
+
+residential
+1996
+6.411376953125
+1
+4.5
+
+
+
+
+
+
+
+
+610681.0666060724 5035921.147394737 572.989929199219 610664.20319311 5035943.855621107 572.989929199219 610664.20319311 5035943.855621107 579.401306152344 610681.0666060724 5035921.147394737 572.989929199219
+
+
+
+
+
+
+
+
+610681.0666060724 5035921.147394737 572.989929199219 610664.20319311 5035943.855621107 579.401306152344 610681.0666060724 5035921.147394737 579.401306152344 610681.0666060724 5035921.147394737 572.989929199219
+
+
+
+
+
+
+
+
+610681.0666060724 5035921.147394737 579.401306152344 610645.9080433963 5035895.192514391 572.989929199219 610681.0666060724 5035921.147394737 572.989929199219 610681.0666060724 5035921.147394737 579.401306152344
+
+
+
+
+
+
+
+
+610645.9080433963 5035895.192514391 579.401306152344 610645.9080433963 5035895.192514391 572.989929199219 610681.0666060724 5035921.147394737 579.401306152344 610645.9080433963 5035895.192514391 579.401306152344
+
+
+
+
+
+
+
+
+610664.20319311 5035943.855621107 579.401306152344 610629.0113926606 5035917.922218408 579.401306152344 610645.9080433963 5035895.192514391 579.401306152344 610664.20319311 5035943.855621107 579.401306152344
+
+
+
+
+
+
+
+
+610664.20319311 5035943.855621107 579.401306152344 610645.9080433963 5035895.192514391 579.401306152344 610681.0666060724 5035921.147394737 579.401306152344 610664.20319311 5035943.855621107 579.401306152344
+
+
+
+
+
+
+
+
+610664.20319311 5035943.855621107 572.989929199219 610681.0666060724 5035921.147394737 572.989929199219 610645.9080433963 5035895.192514391 572.989929199219 610664.20319311 5035943.855621107 572.989929199219
+
+
+
+
+
+
+
+
+610664.20319311 5035943.855621107 572.989929199219 610645.9080433963 5035895.192514391 572.989929199219 610629.0113926606 5035917.922218408 572.989929199219 610664.20319311 5035943.855621107 572.989929199219
+
+
+
+
+
+
+
+
+610629.0113926606 5035917.922218408 579.401306152344 610664.20319311 5035943.855621107 572.989929199219 610629.0113926606 5035917.922218408 572.989929199219 610629.0113926606 5035917.922218408 579.401306152344
+
+
+
+
+
+
+
+
+610664.20319311 5035943.855621107 579.401306152344 610664.20319311 5035943.855621107 572.989929199219 610629.0113926606 5035917.922218408 579.401306152344 610664.20319311 5035943.855621107 579.401306152344
+
+
+
+
+
+
+
+
+610645.9080433963 5035895.192514391 572.989929199219 610645.9080433963 5035895.192514391 579.401306152344 610629.0113926606 5035917.922218408 572.989929199219 610645.9080433963 5035895.192514391 572.989929199219
+
+
+
+
+
+
+
+
+610645.9080433963 5035895.192514391 579.401306152344 610629.0113926606 5035917.922218408 579.401306152344 610629.0113926606 5035917.922218408 572.989929199219 610645.9080433963 5035895.192514391 579.401306152344
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+residential
+1996
+14.532531738281023
+3
+3.4
+
+
+
+
+
+
+
+
+610730.5091460128 5035898.247573101 578.840942382813 610730.5091460128 5035898.247573101 573.996765136719 610734.9514596879 5035901.520172936 573.996765136719 610730.5091460128 5035898.247573101 578.840942382813
+
+
+
+
+
+
+
+
+610734.9514596879 5035901.520172936 578.840942382813 610730.5091460128 5035898.247573101 578.840942382813 610734.9514596879 5035901.520172936 573.996765136719 610734.9514596879 5035901.520172936 578.840942382813
+
+
+
+
+
+
+
+
+610730.5091460128 5035898.247573101 573.996765136719 610709.3888679559 5035920.847918315 578.840942382813 610709.3888679559 5035920.847918315 573.996765136719 610730.5091460128 5035898.247573101 573.996765136719
+
+
+
+
+
+
+
+
+610730.5091460128 5035898.247573101 573.996765136719 610730.5091460128 5035898.247573101 578.840942382813 610709.3888679559 5035920.847918315 578.840942382813 610730.5091460128 5035898.247573101 573.996765136719
+
+
+
+
+
+
+
+
+610753.0128684435 5035914.845466099 573.996765136719 610734.9514596879 5035901.520172936 573.996765136719 610733.181859054 5035938.39824457 573.996765136719 610753.0128684435 5035914.845466099 573.996765136719
+
+
+
+
+
+
+
+
+610734.9514596879 5035901.520172936 573.996765136719 610730.5091460128 5035898.247573101 573.996765136719 610709.3888679559 5035920.847918315 573.996765136719 610734.9514596879 5035901.520172936 573.996765136719
+
+
+
+
+
+
+
+
+610733.181859054 5035938.39824457 573.996765136719 610734.9514596879 5035901.520172936 573.996765136719 610709.3888679559 5035920.847918315 573.996765136719 610733.181859054 5035938.39824457 573.996765136719
+
+
+
+
+
+
+
+
+610716.5712022368 5035954.229941277 573.996765136719 610696.2016912752 5035938.599727995 573.996765136719 610695.9420089822 5035939.010844626 573.996765136719 610716.5712022368 5035954.229941277 573.996765136719
+
+
+
+
+
+
+
+
+610716.5712022368 5035954.229941277 573.996765136719 610709.3888679559 5035920.847918315 573.996765136719 610696.2016912752 5035938.599727995 573.996765136719 610716.5712022368 5035954.229941277 573.996765136719
+
+
+
+
+
+
+
+
+610716.5712022368 5035954.229941277 573.996765136719 610733.181859054 5035938.39824457 573.996765136719 610709.3888679559 5035920.847918315 573.996765136719 610716.5712022368 5035954.229941277 573.996765136719
+
+
+
+
+
+
+
+
+610696.2016912752 5035938.599727995 573.996765136719 610695.9420089822 5035939.010844626 578.648071289063 610695.9420089822 5035939.010844626 573.996765136719 610696.2016912752 5035938.599727995 573.996765136719
+
+
+
+
+
+
+
+
+610696.2016912752 5035938.599727995 573.996765136719 610696.1905264247 5035938.610470531 578.835571289063 610695.9420089822 5035939.010844626 578.648071289063 610696.2016912752 5035938.599727995 573.996765136719
+
+
+
+
+
+
+
+
+610753.0128684435 5035914.845466099 588.529296875 610733.181859054 5035938.39824457 583.6851196289069 610733.181859054 5035938.39824457 588.529296875 610753.0128684435 5035914.845466099 588.529296875
+
+
+
+
+
+
+
+
+610753.0128684435 5035914.845466099 583.6851196289069 610733.181859054 5035938.39824457 578.840942382813 610733.181859054 5035938.39824457 583.6851196289069 610753.0128684435 5035914.845466099 583.6851196289069
+
+
+
+
+
+
+
+
+610753.0128684435 5035914.845466099 573.996765136719 610733.181859054 5035938.39824457 573.996765136719 610753.0128684435 5035914.845466099 578.840942382813 610753.0128684435 5035914.845466099 573.996765136719
+
+
+
+
+
+
+
+
+610753.0128684435 5035914.845466099 583.6851196289069 610733.181859054 5035938.39824457 583.6851196289069 610753.0128684435 5035914.845466099 588.529296875 610753.0128684435 5035914.845466099 583.6851196289069
+
+
+
+
+
+
+
+
+610753.0128684435 5035914.845466099 578.840942382813 610733.181859054 5035938.39824457 578.840942382813 610753.0128684435 5035914.845466099 583.6851196289069 610753.0128684435 5035914.845466099 578.840942382813
+
+
+
+
+
+
+
+
+610753.0128684435 5035914.845466099 578.840942382813 610733.181859054 5035938.39824457 573.996765136719 610733.181859054 5035938.39824457 578.840942382813 610753.0128684435 5035914.845466099 578.840942382813
+
+
+
+
+
+
+
+
+610753.0128684435 5035914.845466099 588.529296875 610734.9514596879 5035901.520172936 588.529296875 610753.0128684435 5035914.845466099 583.6851196289069 610753.0128684435 5035914.845466099 588.529296875
+
+
+
+
+
+
+
+
+610753.0128684435 5035914.845466099 583.6851196289069 610734.9514596879 5035901.520172936 583.6851196289069 610753.0128684435 5035914.845466099 578.840942382813 610753.0128684435 5035914.845466099 583.6851196289069
+
+
+
+
+
+
+
+
+610753.0128684435 5035914.845466099 578.840942382813 610734.9514596879 5035901.520172936 578.840942382813 610753.0128684435 5035914.845466099 573.996765136719 610753.0128684435 5035914.845466099 578.840942382813
+
+
+
+
+
+
+
+
+610734.9514596879 5035901.520172936 588.529296875 610734.9514596879 5035901.520172936 583.6851196289069 610753.0128684435 5035914.845466099 583.6851196289069 610734.9514596879 5035901.520172936 588.529296875
+
+
+
+
+
+
+
+
+610734.9514596879 5035901.520172936 583.6851196289069 610734.9514596879 5035901.520172936 578.840942382813 610753.0128684435 5035914.845466099 578.840942382813 610734.9514596879 5035901.520172936 583.6851196289069
+
+
+
+
+
+
+
+
+610734.9514596879 5035901.520172936 578.840942382813 610734.9514596879 5035901.520172936 573.996765136719 610753.0128684435 5035914.845466099 573.996765136719 610734.9514596879 5035901.520172936 578.840942382813
+
+
+
+
+
+
+
+
+610696.2016912752 5035938.599727995 578.839050292969 610696.1905264247 5035938.610470531 578.835571289063 610696.2016912752 5035938.599727995 573.996765136719 610696.2016912752 5035938.599727995 578.839050292969
+
+
+
+
+
+
+
+
+610709.3888679559 5035920.847918315 573.996765136719 610696.2016912752 5035938.599727995 578.839050292969 610696.2016912752 5035938.599727995 573.996765136719 610709.3888679559 5035920.847918315 573.996765136719
+
+
+
+
+
+
+
+
+610709.3888679559 5035920.847918315 578.840942382813 610696.2016912752 5035938.599727995 578.840942382813 610696.2016912752 5035938.599727995 578.839050292969 610709.3888679559 5035920.847918315 578.840942382813
+
+
+
+
+
+
+
+
+610709.3888679559 5035920.847918315 573.996765136719 610709.3888679559 5035920.847918315 578.840942382813 610696.2016912752 5035938.599727995 578.839050292969 610709.3888679559 5035920.847918315 573.996765136719
+
+
+
+
+
+
+
+
+610716.5712022368 5035954.229941277 578.840942382813 610703.5371131136 5035944.614331181 578.840942382813 610694.2664484897 5035963.091453249 578.840942382813 610716.5712022368 5035954.229941277 578.840942382813
+
+
+
+
+
+
+
+
+610734.9514596879 5035901.520172936 578.840942382813 610713.8311757242 5035924.120491701 578.840942382813 610730.5091460128 5035898.247573101 578.840942382813 610734.9514596879 5035901.520172936 578.840942382813
+
+
+
+
+
+
+
+
+610713.8311757242 5035924.120491701 578.840942382813 610709.3888679559 5035920.847918315 578.840942382813 610730.5091460128 5035898.247573101 578.840942382813 610713.8311757242 5035924.120491701 578.840942382813
+
+
+
+
+
+
+
+
+610713.8311757242 5035924.120491701 578.840942382813 610696.2016912752 5035938.599727995 578.840942382813 610709.3888679559 5035920.847918315 578.840942382813 610713.8311757242 5035924.120491701 578.840942382813
+
+
+
+
+
+
+
+
+610703.7644574965 5035944.1698274845 578.840942382813 610696.2016912752 5035938.599727995 578.840942382813 610713.8311757242 5035924.120491701 578.840942382813 610703.7644574965 5035944.1698274845 578.840942382813
+
+
+
+
+
+
+
+
+610701.6014704753 5035968.504367453 578.840942382813 610716.5712022368 5035954.229941277 578.840942382813 610694.2664484897 5035963.091453249 578.840942382813 610701.6014704753 5035968.504367453 578.840942382813
+
+
+
+
+
+
+
+
+610734.9514596879 5035901.520172936 583.6851196289069 610734.9514596879 5035901.520172936 588.529296875 610713.8311757242 5035924.120491701 588.529296875 610734.9514596879 5035901.520172936 583.6851196289069
+
+
+
+
+
+
+
+
+610734.9514596879 5035901.520172936 578.840942382813 610734.9514596879 5035901.520172936 583.6851196289069 610713.8311757242 5035924.120491701 583.6851196289069 610734.9514596879 5035901.520172936 578.840942382813
+
+
+
+
+
+
+
+
+610734.9514596879 5035901.520172936 583.6851196289069 610713.8311757242 5035924.120491701 588.529296875 610713.8311757242 5035924.120491701 583.6851196289069 610734.9514596879 5035901.520172936 583.6851196289069
+
+
+
+
+
+
+
+
+610734.9514596879 5035901.520172936 578.840942382813 610713.8311757242 5035924.120491701 583.6851196289069 610713.8311757242 5035924.120491701 578.840942382813 610734.9514596879 5035901.520172936 578.840942382813
+
+
+
+
+
+
+
+
+610703.5371131136 5035944.614331181 578.648071289063 610716.5712022368 5035954.229941277 573.996765136719 610695.9420089822 5035939.010844626 573.996765136719 610703.5371131136 5035944.614331181 578.648071289063
+
+
+
+
+
+
+
+
+610695.9420089822 5035939.010844626 578.648071289063 610703.5371131136 5035944.614331181 578.648071289063 610695.9420089822 5035939.010844626 573.996765136719 610695.9420089822 5035939.010844626 578.648071289063
+
+
+
+
+
+
+
+
+610703.7530999134 5035944.1915058745 578.835571289063 610703.5371131136 5035944.614331181 578.713562011719 610703.5371131136 5035944.614331181 578.648071289063 610703.7530999134 5035944.1915058745 578.835571289063
+
+
+
+
+
+
+
+
+610703.7530999134 5035944.1915058745 578.835571289063 610703.5371131136 5035944.614331181 578.840942382813 610703.5371131136 5035944.614331181 578.713562011719 610703.7530999134 5035944.1915058745 578.835571289063
+
+
+
+
+
+
+
+
+610703.5371131136 5035944.614331181 578.648071289063 610695.9420089822 5035939.010844626 578.648071289063 610703.7530999134 5035944.1915058745 578.835571289063 610703.5371131136 5035944.614331181 578.648071289063
+
+
+
+
+
+
+
+
+610703.7530999134 5035944.1915058745 578.835571289063 610695.9420089822 5035939.010844626 578.648071289063 610696.1905264247 5035938.610470531 578.835571289063 610703.7530999134 5035944.1915058745 578.835571289063
+
+
+
+
+
+
+
+
+610703.7530999134 5035944.1915058745 578.835571289063 610696.1905264247 5035938.610470531 578.835571289063 610696.2016912752 5035938.599727995 578.839050292969 610703.7530999134 5035944.1915058745 578.835571289063
+
+
+
+
+
+
+
+
+610733.181859054 5035938.39824457 583.6851196289069 610733.181859054 5035938.39824457 578.840942382813 610716.9284778136 5035953.886182148 578.840942382813 610733.181859054 5035938.39824457 583.6851196289069
+
+
+
+
+
+
+
+
+610733.181859054 5035938.39824457 578.840942382813 610733.181859054 5035938.39824457 573.996765136719 610716.9284778136 5035953.886182148 578.840942382813 610733.181859054 5035938.39824457 578.840942382813
+
+
+
+
+
+
+
+
+610716.9284778136 5035953.886182148 578.840942382813 610733.181859054 5035938.39824457 573.996765136719 610716.5712022368 5035954.229941277 573.996765136719 610716.9284778136 5035953.886182148 578.840942382813
+
+
+
+
+
+
+
+
+610753.0128684435 5035914.845466099 588.529296875 610733.181859054 5035938.39824457 588.529296875 610734.9514596879 5035901.520172936 588.529296875 610753.0128684435 5035914.845466099 588.529296875
+
+
+
+
+
+
+
+
+610733.181859054 5035938.39824457 588.529296875 610713.8311757242 5035924.120491701 588.529296875 610734.9514596879 5035901.520172936 588.529296875 610733.181859054 5035938.39824457 588.529296875
+
+
+
+
+
+
+
+
+610701.6014704753 5035968.504367453 588.529296875 610694.2664484897 5035963.091453249 588.529296875 610733.181859054 5035938.39824457 588.529296875 610701.6014704753 5035968.504367453 588.529296875
+
+
+
+
+
+
+
+
+610733.181859054 5035938.39824457 588.529296875 610694.2664484897 5035963.091453249 588.529296875 610713.8311757242 5035924.120491701 588.529296875 610733.181859054 5035938.39824457 588.529296875
+
+
+
+
+
+
+
+
+610703.7530999134 5035944.1915058745 578.835571289063 610696.2016912752 5035938.599727995 578.839050292969 610703.7644574965 5035944.1698274845 578.840942382813 610703.7530999134 5035944.1915058745 578.835571289063
+
+
+
+
+
+
+
+
+610696.2016912752 5035938.599727995 578.840942382813 610703.7644574965 5035944.1698274845 578.840942382813 610696.2016912752 5035938.599727995 578.839050292969 610696.2016912752 5035938.599727995 578.840942382813
+
+
+
+
+
+
+
+
+610713.8311757242 5035924.120491701 578.840942382813 610713.8311757242 5035924.120491701 583.6851196289069 610703.7644574965 5035944.1698274845 578.840942382813 610713.8311757242 5035924.120491701 578.840942382813
+
+
+
+
+
+
+
+
+610713.8311757242 5035924.120491701 583.6851196289069 610713.8311757242 5035924.120491701 588.529296875 610694.2664484897 5035963.091453249 588.529296875 610713.8311757242 5035924.120491701 583.6851196289069
+
+
+
+
+
+
+
+
+610713.8311757242 5035924.120491701 583.6851196289069 610694.2664484897 5035963.091453249 588.529296875 610694.2664484897 5035963.091453249 583.6851196289069 610713.8311757242 5035924.120491701 583.6851196289069
+
+
+
+
+
+
+
+
+610716.5712022368 5035954.229941277 578.840942382813 610716.9284778136 5035953.886182148 578.840942382813 610716.5712022368 5035954.229941277 573.996765136719 610716.5712022368 5035954.229941277 578.840942382813
+
+
+
+
+
+
+
+
+610716.5712022368 5035954.229941277 578.840942382813 610716.5712022368 5035954.229941277 573.996765136719 610703.5371131136 5035944.614331181 578.648071289063 610716.5712022368 5035954.229941277 578.840942382813
+
+
+
+
+
+
+
+
+610703.5371131136 5035944.614331181 578.713562011719 610716.5712022368 5035954.229941277 578.840942382813 610703.5371131136 5035944.614331181 578.648071289063 610703.5371131136 5035944.614331181 578.713562011719
+
+
+
+
+
+
+
+
+610703.5371131136 5035944.614331181 578.840942382813 610716.5712022368 5035954.229941277 578.840942382813 610703.5371131136 5035944.614331181 578.713562011719 610703.5371131136 5035944.614331181 578.840942382813
+
+
+
+
+
+
+
+
+610703.7530999134 5035944.1915058745 578.835571289063 610703.7644574965 5035944.1698274845 578.840942382813 610703.5371131136 5035944.614331181 578.840942382813 610703.7530999134 5035944.1915058745 578.835571289063
+
+
+
+
+
+
+
+
+610701.6014704753 5035968.504367453 588.529296875 610733.181859054 5035938.39824457 588.529296875 610701.6014704753 5035968.504367453 583.6851196289069 610701.6014704753 5035968.504367453 588.529296875
+
+
+
+
+
+
+
+
+610733.181859054 5035938.39824457 588.529296875 610733.181859054 5035938.39824457 583.6851196289069 610701.6014704753 5035968.504367453 583.6851196289069 610733.181859054 5035938.39824457 588.529296875
+
+
+
+
+
+
+
+
+610733.181859054 5035938.39824457 583.6851196289069 610716.9284778136 5035953.886182148 578.840942382813 610701.6014704753 5035968.504367453 583.6851196289069 610733.181859054 5035938.39824457 583.6851196289069
+
+
+
+
+
+
+
+
+610716.9284778136 5035953.886182148 578.840942382813 610716.5712022368 5035954.229941277 578.840942382813 610701.6014704753 5035968.504367453 583.6851196289069 610716.9284778136 5035953.886182148 578.840942382813
+
+
+
+
+
+
+
+
+610701.6014704753 5035968.504367453 583.6851196289069 610716.5712022368 5035954.229941277 578.840942382813 610701.6014704753 5035968.504367453 578.840942382813 610701.6014704753 5035968.504367453 583.6851196289069
+
+
+
+
+
+
+
+
+610694.2664484897 5035963.091453249 588.529296875 610701.6014704753 5035968.504367453 588.529296875 610694.2664484897 5035963.091453249 583.6851196289069 610694.2664484897 5035963.091453249 588.529296875
+
+
+
+
+
+
+
+
+610694.2664484897 5035963.091453249 583.6851196289069 610701.6014704753 5035968.504367453 583.6851196289069 610694.2664484897 5035963.091453249 578.840942382813 610694.2664484897 5035963.091453249 583.6851196289069
+
+
+
+
+
+
+
+
+610701.6014704753 5035968.504367453 588.529296875 610701.6014704753 5035968.504367453 583.6851196289069 610694.2664484897 5035963.091453249 583.6851196289069 610701.6014704753 5035968.504367453 588.529296875
+
+
+
+
+
+
+
+
+610701.6014704753 5035968.504367453 583.6851196289069 610701.6014704753 5035968.504367453 578.840942382813 610694.2664484897 5035963.091453249 578.840942382813 610701.6014704753 5035968.504367453 583.6851196289069
+
+
+
+
+
+
+
+
+610703.5371131136 5035944.614331181 578.840942382813 610703.7644574965 5035944.1698274845 578.840942382813 610694.2664484897 5035963.091453249 583.6851196289069 610703.5371131136 5035944.614331181 578.840942382813
+
+
+
+
+
+
+
+
+610703.7644574965 5035944.1698274845 578.840942382813 610713.8311757242 5035924.120491701 583.6851196289069 610694.2664484897 5035963.091453249 583.6851196289069 610703.7644574965 5035944.1698274845 578.840942382813
+
+
+
+
+
+
+
+
+610703.5371131136 5035944.614331181 578.840942382813 610694.2664484897 5035963.091453249 583.6851196289069 610694.2664484897 5035963.091453249 578.840942382813 610703.5371131136 5035944.614331181 578.840942382813
+
+
+
+
+
+
+
+
+
+
+
+
+residential
+1996
+7.002624511718977
+1
+5
+
+
+
+
+
+
+
+
+610730.4983665772 5035898.236443731 573.996704101563 610730.4983665772 5035898.236443731 566.994079589844 610753.0132540688 5035914.823594236 566.994079589844 610730.4983665772 5035898.236443731 573.996704101563
+
+
+
+
+
+
+
+
+610753.0132540688 5035914.823594236 573.996704101563 610730.4983665772 5035898.236443731 573.996704101563 610753.0132540688 5035914.823594236 566.994079589844 610753.0132540688 5035914.823594236 573.996704101563
+
+
+
+
+
+
+
+
+610753.0132540688 5035914.823594236 566.994079589844 610733.1708869145 5035938.398051152 566.994079589844 610753.0132540688 5035914.823594236 573.996704101563 610753.0132540688 5035914.823594236 566.994079589844
+
+
+
+
+
+
+
+
+610753.0132540688 5035914.823594236 573.996704101563 610733.1708869145 5035938.398051152 566.994079589844 610733.1708869145 5035938.398051152 573.996704101563 610753.0132540688 5035914.823594236 573.996704101563
+
+
+
+
+
+
+
+
+610733.1708869145 5035938.398051152 566.994079589844 610753.0132540688 5035914.823594236 566.994079589844 610730.4983665772 5035898.236443731 566.994079589844 610733.1708869145 5035938.398051152 566.994079589844
+
+
+
+
+
+
+
+
+610733.1708869145 5035938.398051152 566.994079589844 610730.4983665772 5035898.236443731 566.994079589844 610709.4004183351 5035920.81530393 566.994079589844 610733.1708869145 5035938.398051152 566.994079589844
+
+
+
+
+
+
+
+
+610716.9173129515 5035953.896924622 566.994079589844 610709.4004183351 5035920.81530393 566.994079589844 610696.1799397165 5035938.5884054005 566.994079589844 610716.9173129515 5035953.896924622 566.994079589844
+
+
+
+
+
+
+
+
+610716.9173129515 5035953.896924622 566.994079589844 610733.1708869145 5035938.398051152 566.994079589844 610709.4004183351 5035920.81530393 566.994079589844 610716.9173129515 5035953.896924622 566.994079589844
+
+
+
+
+
+
+
+
+610733.1708869145 5035938.398051152 573.996704101563 610730.4983665772 5035898.236443731 573.996704101563 610753.0132540688 5035914.823594236 573.996704101563 610733.1708869145 5035938.398051152 573.996704101563
+
+
+
+
+
+
+
+
+610733.1708869145 5035938.398051152 573.996704101563 610709.4004183351 5035920.81530393 573.996704101563 610730.4983665772 5035898.236443731 573.996704101563 610733.1708869145 5035938.398051152 573.996704101563
+
+
+
+
+
+
+
+
+610716.9173129515 5035953.896924622 573.996704101563 610696.1799397165 5035938.5884054005 573.996704101563 610709.4004183351 5035920.81530393 573.996704101563 610716.9173129515 5035953.896924622 573.996704101563
+
+
+
+
+
+
+
+
+610716.9173129515 5035953.896924622 573.996704101563 610709.4004183351 5035920.81530393 573.996704101563 610733.1708869145 5035938.398051152 573.996704101563 610716.9173129515 5035953.896924622 573.996704101563
+
+
+
+
+
+
+
+
+610730.4983665772 5035898.236443731 566.994079589844 610709.4004183351 5035920.81530393 573.996704101563 610709.4004183351 5035920.81530393 566.994079589844 610730.4983665772 5035898.236443731 566.994079589844
+
+
+
+
+
+
+
+
+610730.4983665772 5035898.236443731 566.994079589844 610730.4983665772 5035898.236443731 573.996704101563 610709.4004183351 5035920.81530393 573.996704101563 610730.4983665772 5035898.236443731 566.994079589844
+
+
+
+
+
+
+
+
+610733.1708869145 5035938.398051152 573.996704101563 610733.1708869145 5035938.398051152 566.994079589844 610716.9173129515 5035953.896924622 566.994079589844 610733.1708869145 5035938.398051152 573.996704101563
+
+
+
+
+
+
+
+
+610716.9173129515 5035953.896924622 573.996704101563 610733.1708869145 5035938.398051152 573.996704101563 610716.9173129515 5035953.896924622 566.994079589844 610716.9173129515 5035953.896924622 573.996704101563
+
+
+
+
+
+
+
+
+610709.4004183351 5035920.81530393 566.994079589844 610696.1799397165 5035938.5884054005 573.996704101563 610696.1799397165 5035938.5884054005 566.994079589844 610709.4004183351 5035920.81530393 566.994079589844
+
+
+
+
+
+
+
+
+610709.4004183351 5035920.81530393 566.994079589844 610709.4004183351 5035920.81530393 573.996704101563 610696.1799397165 5035938.5884054005 573.996704101563 610709.4004183351 5035920.81530393 566.994079589844
+
+
+
+
+
+
+
+
+610716.9173129515 5035953.896924622 573.996704101563 610716.9173129515 5035953.896924622 566.994079589844 610696.1799397165 5035938.5884054005 566.994079589844 610716.9173129515 5035953.896924622 573.996704101563
+
+
+
+
+
+
+
+
+610696.1799397165 5035938.5884054005 573.996704101563 610716.9173129515 5035953.896924622 573.996704101563 610696.1799397165 5035938.5884054005 566.994079589844 610696.1799397165 5035938.5884054005 573.996704101563
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+residential
+1996
+24.220886230468977
+5
+3.4
+
+
+
+
+
+
+
+
+610778.5757756741 5035838.250034396 598.217651367188 610798.1650870934 5035852.6964745615 593.373474121094 610778.5757756741 5035838.250034396 593.373474121094 610778.5757756741 5035838.250034396 598.217651367188
+
+
+
+
+
+
+
+
+610798.1650870934 5035852.6964745615 598.217651367188 610798.1650870934 5035852.6964745615 593.373474121094 610778.5757756741 5035838.250034396 598.217651367188 610798.1650870934 5035852.6964745615 598.217651367188
+
+
+
+
+
+
+
+
+610812.6156817194 5035835.524813268 593.373474121094 610798.1650870934 5035852.6964745615 593.373474121094 610812.6156817194 5035835.524813268 598.217651367188 610812.6156817194 5035835.524813268 593.373474121094
+
+
+
+
+
+
+
+
+610812.6156817194 5035835.524813268 588.529296875 610798.1650870934 5035852.6964745615 588.529296875 610812.6156817194 5035835.524813268 593.373474121094 610812.6156817194 5035835.524813268 588.529296875
+
+
+
+
+
+
+
+
+610812.6156817194 5035835.524813268 598.217651367188 610798.1650870934 5035852.6964745615 593.373474121094 610798.1650870934 5035852.6964745615 598.217651367188 610812.6156817194 5035835.524813268 598.217651367188
+
+
+
+
+
+
+
+
+610812.6156817194 5035835.524813268 593.373474121094 610798.1650870934 5035852.6964745615 588.529296875 610798.1650870934 5035852.6964745615 593.373474121094 610812.6156817194 5035835.524813268 593.373474121094
+
+
+
+
+
+
+
+
+610796.093459915 5035775.995860917 598.217651367188 610796.093459915 5035775.995860917 593.373474121094 610812.6156817194 5035835.524813268 593.373474121094 610796.093459915 5035775.995860917 598.217651367188
+
+
+
+
+
+
+
+
+610796.093459915 5035775.995860917 593.373474121094 610796.093459915 5035775.995860917 588.529296875 610812.6156817194 5035835.524813268 588.529296875 610796.093459915 5035775.995860917 593.373474121094
+
+
+
+
+
+
+
+
+610812.6156817194 5035835.524813268 598.217651367188 610796.093459915 5035775.995860917 598.217651367188 610812.6156817194 5035835.524813268 593.373474121094 610812.6156817194 5035835.524813268 598.217651367188
+
+
+
+
+
+
+
+
+610812.6156817194 5035835.524813268 593.373474121094 610796.093459915 5035775.995860917 593.373474121094 610812.6156817194 5035835.524813268 588.529296875 610812.6156817194 5035835.524813268 593.373474121094
+
+
+
+
+
+
+
+
+610778.6192792265 5035838.272680501 588.529296875 610784.3296125665 5035829.392075743 588.529296875 610778.5757756741 5035838.250034396 588.529296875 610778.6192792265 5035838.272680501 588.529296875
+
+
+
+
+
+
+
+
+610812.6156817194 5035835.524813268 588.529296875 610796.093459915 5035775.995860917 588.529296875 610818.6731258357 5035836.83501248 588.529296875 610812.6156817194 5035835.524813268 588.529296875
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 588.529296875 610798.1650870934 5035852.6964745615 588.529296875 610812.6156817194 5035835.524813268 588.529296875 610818.6731258357 5035836.83501248 588.529296875
+
+
+
+
+
+
+
+
+610796.093459915 5035775.995860917 588.529296875 610734.2943063623 5035773.177748277 588.529296875 610800.2212214476 5035770.347264212 588.529296875 610796.093459915 5035775.995860917 588.529296875
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 588.529296875 610796.093459915 5035775.995860917 588.529296875 610800.2212214476 5035770.347264212 588.529296875 610818.6731258357 5035836.83501248 588.529296875
+
+
+
+
+
+
+
+
+610734.538063405 5035778.651829647 588.529296875 610734.2943063623 5035773.177748277 588.529296875 610796.093459915 5035775.995860917 588.529296875 610734.538063405 5035778.651829647 588.529296875
+
+
+
+
+
+
+
+
+610782.6784284493 5035879.454642432 588.529296875 610761.9515425221 5035864.167794568 588.529296875 610798.1650870934 5035852.6964745615 588.529296875 610782.6784284493 5035879.454642432 588.529296875
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 588.529296875 610782.6784284493 5035879.454642432 588.529296875 610798.1650870934 5035852.6964745615 588.529296875 610818.6731258357 5035836.83501248 588.529296875
+
+
+
+
+
+
+
+
+610798.1650870934 5035852.6964745615 588.529296875 610761.9515425221 5035864.167794568 588.529296875 610778.6192792265 5035838.272680501 588.529296875 610798.1650870934 5035852.6964745615 588.529296875
+
+
+
+
+
+
+
+
+610778.5757756741 5035838.250034396 593.373474121094 610778.6192792265 5035838.272680501 588.529296875 610778.5757756741 5035838.250034396 588.529296875 610778.5757756741 5035838.250034396 593.373474121094
+
+
+
+
+
+
+
+
+610798.1650870934 5035852.6964745615 593.373474121094 610778.6192792265 5035838.272680501 588.529296875 610778.5757756741 5035838.250034396 593.373474121094 610798.1650870934 5035852.6964745615 593.373474121094
+
+
+
+
+
+
+
+
+610798.1650870934 5035852.6964745615 593.373474121094 610798.1650870934 5035852.6964745615 588.529296875 610778.6192792265 5035838.272680501 588.529296875 610798.1650870934 5035852.6964745615 593.373474121094
+
+
+
+
+
+
+
+
+610735.6689161435 5035804.160897724 598.217651367188 610734.538063405 5035778.651829647 598.217651367188 610776.8375347028 5035802.381591275 598.217651367188 610735.6689161435 5035804.160897724 598.217651367188
+
+
+
+
+
+
+
+
+610812.6156817194 5035835.524813268 598.217651367188 610776.8375347028 5035802.381591275 598.217651367188 610796.093459915 5035775.995860917 598.217651367188 610812.6156817194 5035835.524813268 598.217651367188
+
+
+
+
+
+
+
+
+610776.8375347028 5035802.381591275 598.217651367188 610734.538063405 5035778.651829647 598.217651367188 610796.093459915 5035775.995860917 598.217651367188 610776.8375347028 5035802.381591275 598.217651367188
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 598.217651367188 610776.8375347028 5035802.381591275 598.217651367188 610812.6156817194 5035835.524813268 598.217651367188 610784.3296125665 5035829.392075743 598.217651367188
+
+
+
+
+
+
+
+
+610798.1650870934 5035852.6964745615 598.217651367188 610778.5757756741 5035838.250034396 598.217651367188 610784.3296125665 5035829.392075743 598.217651367188 610798.1650870934 5035852.6964745615 598.217651367188
+
+
+
+
+
+
+
+
+610798.1650870934 5035852.6964745615 598.217651367188 610784.3296125665 5035829.392075743 598.217651367188 610812.6156817194 5035835.524813268 598.217651367188 610798.1650870934 5035852.6964745615 598.217651367188
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 593.373474121094 610778.5757756741 5035838.250034396 598.217651367188 610778.5757756741 5035838.250034396 593.373474121094 610784.3296125665 5035829.392075743 593.373474121094
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 588.529296875 610784.3296125665 5035829.392075743 593.373474121094 610778.5757756741 5035838.250034396 588.529296875 610784.3296125665 5035829.392075743 588.529296875
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 593.373474121094 610784.3296125665 5035829.392075743 598.217651367188 610778.5757756741 5035838.250034396 598.217651367188 610784.3296125665 5035829.392075743 593.373474121094
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 593.373474121094 610778.5757756741 5035838.250034396 593.373474121094 610778.5757756741 5035838.250034396 588.529296875 610784.3296125665 5035829.392075743 593.373474121094
+
+
+
+
+
+
+
+
+610734.538063405 5035778.651829647 598.217651367188 610734.538063405 5035778.651829647 593.373474121094 610796.093459915 5035775.995860917 593.373474121094 610734.538063405 5035778.651829647 598.217651367188
+
+
+
+
+
+
+
+
+610734.538063405 5035778.651829647 593.373474121094 610734.538063405 5035778.651829647 588.529296875 610796.093459915 5035775.995860917 588.529296875 610734.538063405 5035778.651829647 593.373474121094
+
+
+
+
+
+
+
+
+610796.093459915 5035775.995860917 598.217651367188 610734.538063405 5035778.651829647 598.217651367188 610796.093459915 5035775.995860917 593.373474121094 610796.093459915 5035775.995860917 598.217651367188
+
+
+
+
+
+
+
+
+610796.093459915 5035775.995860917 593.373474121094 610734.538063405 5035778.651829647 593.373474121094 610796.093459915 5035775.995860917 588.529296875 610796.093459915 5035775.995860917 593.373474121094
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 583.6851196289069 610782.6784284493 5035879.454642432 583.6851196289069 610818.6731258357 5035836.83501248 588.529296875 610818.6731258357 5035836.83501248 583.6851196289069
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 578.840942382813 610782.6784284493 5035879.454642432 578.840942382813 610818.6731258357 5035836.83501248 583.6851196289069 610818.6731258357 5035836.83501248 578.840942382813
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 573.996765136719 610782.6784284493 5035879.454642432 573.996765136719 610818.6731258357 5035836.83501248 578.840942382813 610818.6731258357 5035836.83501248 573.996765136719
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 588.529296875 610782.6784284493 5035879.454642432 583.6851196289069 610782.6784284493 5035879.454642432 588.529296875 610818.6731258357 5035836.83501248 588.529296875
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 583.6851196289069 610782.6784284493 5035879.454642432 578.840942382813 610782.6784284493 5035879.454642432 583.6851196289069 610818.6731258357 5035836.83501248 583.6851196289069
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 578.840942382813 610782.6784284493 5035879.454642432 573.996765136719 610782.6784284493 5035879.454642432 578.840942382813 610818.6731258357 5035836.83501248 578.840942382813
+
+
+
+
+
+
+
+
+610782.6784284493 5035879.454642432 588.529296875 610782.6784284493 5035879.454642432 583.6851196289069 610761.9515425221 5035864.167794568 583.6851196289069 610782.6784284493 5035879.454642432 588.529296875
+
+
+
+
+
+
+
+
+610782.6784284493 5035879.454642432 583.6851196289069 610782.6784284493 5035879.454642432 578.840942382813 610761.9515425221 5035864.167794568 578.840942382813 610782.6784284493 5035879.454642432 583.6851196289069
+
+
+
+
+
+
+
+
+610782.6784284493 5035879.454642432 578.840942382813 610782.6784284493 5035879.454642432 573.996765136719 610761.9515425221 5035864.167794568 578.840942382813 610782.6784284493 5035879.454642432 578.840942382813
+
+
+
+
+
+
+
+
+610761.9515425221 5035864.167794568 588.529296875 610782.6784284493 5035879.454642432 588.529296875 610761.9515425221 5035864.167794568 583.6851196289069 610761.9515425221 5035864.167794568 588.529296875
+
+
+
+
+
+
+
+
+610761.9515425221 5035864.167794568 583.6851196289069 610782.6784284493 5035879.454642432 583.6851196289069 610761.9515425221 5035864.167794568 578.840942382813 610761.9515425221 5035864.167794568 583.6851196289069
+
+
+
+
+
+
+
+
+610778.6192792265 5035838.272680501 588.529296875 610761.9515425221 5035864.167794568 588.529296875 610761.9515425221 5035864.167794568 583.6851196289069 610778.6192792265 5035838.272680501 588.529296875
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 583.6851196289069 610784.3296125665 5035829.392075743 588.529296875 610778.6192792265 5035838.272680501 588.529296875 610784.3296125665 5035829.392075743 583.6851196289069
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 583.6851196289069 610778.6192792265 5035838.272680501 588.529296875 610761.9515425221 5035864.167794568 583.6851196289069 610784.3296125665 5035829.392075743 583.6851196289069
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 598.217651367188 610784.3296125665 5035829.392075743 593.373474121094 610776.8375347028 5035802.381591275 593.373474121094 610784.3296125665 5035829.392075743 598.217651367188
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 593.373474121094 610784.3296125665 5035829.392075743 588.529296875 610776.8375347028 5035802.381591275 588.529296875 610784.3296125665 5035829.392075743 593.373474121094
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 588.529296875 610784.3296125665 5035829.392075743 583.6851196289069 610776.8375347028 5035802.381591275 588.529296875 610784.3296125665 5035829.392075743 588.529296875
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 583.6851196289069 610784.3296125665 5035829.392075743 578.840942382813 610776.8375347028 5035802.381591275 578.840942382813 610784.3296125665 5035829.392075743 583.6851196289069
+
+
+
+
+
+
+
+
+610776.8375347028 5035802.381591275 598.217651367188 610784.3296125665 5035829.392075743 598.217651367188 610776.8375347028 5035802.381591275 593.373474121094 610776.8375347028 5035802.381591275 598.217651367188
+
+
+
+
+
+
+
+
+610776.8375347028 5035802.381591275 593.373474121094 610784.3296125665 5035829.392075743 593.373474121094 610776.8375347028 5035802.381591275 588.529296875 610776.8375347028 5035802.381591275 593.373474121094
+
+
+
+
+
+
+
+
+610776.8375347028 5035802.381591275 588.529296875 610784.3296125665 5035829.392075743 583.6851196289069 610776.8375347028 5035802.381591275 583.6851196289069 610776.8375347028 5035802.381591275 588.529296875
+
+
+
+
+
+
+
+
+610776.8375347028 5035802.381591275 583.6851196289069 610784.3296125665 5035829.392075743 583.6851196289069 610776.8375347028 5035802.381591275 578.840942382813 610776.8375347028 5035802.381591275 583.6851196289069
+
+
+
+
+
+
+
+
+610735.6689161435 5035804.160897724 598.217651367188 610735.6689161435 5035804.160897724 593.373474121094 610734.538063405 5035778.651829647 593.373474121094 610735.6689161435 5035804.160897724 598.217651367188
+
+
+
+
+
+
+
+
+610735.6689161435 5035804.160897724 593.373474121094 610735.6689161435 5035804.160897724 588.529296875 610734.538063405 5035778.651829647 588.529296875 610735.6689161435 5035804.160897724 593.373474121094
+
+
+
+
+
+
+
+
+610735.6689161435 5035804.160897724 588.529296875 610735.6689161435 5035804.160897724 583.6851196289069 610734.538063405 5035778.651829647 588.529296875 610735.6689161435 5035804.160897724 588.529296875
+
+
+
+
+
+
+
+
+610734.538063405 5035778.651829647 598.217651367188 610735.6689161435 5035804.160897724 598.217651367188 610734.538063405 5035778.651829647 593.373474121094 610734.538063405 5035778.651829647 598.217651367188
+
+
+
+
+
+
+
+
+610734.538063405 5035778.651829647 593.373474121094 610735.6689161435 5035804.160897724 593.373474121094 610734.538063405 5035778.651829647 588.529296875 610734.538063405 5035778.651829647 593.373474121094
+
+
+
+
+
+
+
+
+610776.8375347028 5035802.381591275 598.217651367188 610776.8375347028 5035802.381591275 593.373474121094 610735.6689161435 5035804.160897724 593.373474121094 610776.8375347028 5035802.381591275 598.217651367188
+
+
+
+
+
+
+
+
+610776.8375347028 5035802.381591275 593.373474121094 610776.8375347028 5035802.381591275 588.529296875 610735.6689161435 5035804.160897724 588.529296875 610776.8375347028 5035802.381591275 593.373474121094
+
+
+
+
+
+
+
+
+610776.8375347028 5035802.381591275 588.529296875 610776.8375347028 5035802.381591275 583.6851196289069 610735.6689161435 5035804.160897724 588.529296875 610776.8375347028 5035802.381591275 588.529296875
+
+
+
+
+
+
+
+
+610776.8375347028 5035802.381591275 583.6851196289069 610776.8375347028 5035802.381591275 578.840942382813 610735.6689161435 5035804.160897724 578.840942382813 610776.8375347028 5035802.381591275 583.6851196289069
+
+
+
+
+
+
+
+
+610735.6689161435 5035804.160897724 598.217651367188 610776.8375347028 5035802.381591275 598.217651367188 610735.6689161435 5035804.160897724 593.373474121094 610735.6689161435 5035804.160897724 598.217651367188
+
+
+
+
+
+
+
+
+610735.6689161435 5035804.160897724 593.373474121094 610776.8375347028 5035802.381591275 593.373474121094 610735.6689161435 5035804.160897724 588.529296875 610735.6689161435 5035804.160897724 593.373474121094
+
+
+
+
+
+
+
+
+610735.6689161435 5035804.160897724 588.529296875 610776.8375347028 5035802.381591275 583.6851196289069 610735.6689161435 5035804.160897724 583.6851196289069 610735.6689161435 5035804.160897724 588.529296875
+
+
+
+
+
+
+
+
+610735.6689161435 5035804.160897724 583.6851196289069 610776.8375347028 5035802.381591275 583.6851196289069 610735.6689161435 5035804.160897724 578.840942382813 610735.6689161435 5035804.160897724 583.6851196289069
+
+
+
+
+
+
+
+
+610800.2212214476 5035770.347264212 588.529296875 610800.2212214476 5035770.347264212 583.6851196289069 610818.6731258357 5035836.83501248 583.6851196289069 610800.2212214476 5035770.347264212 588.529296875
+
+
+
+
+
+
+
+
+610800.2212214476 5035770.347264212 583.6851196289069 610800.2212214476 5035770.347264212 578.840942382813 610818.6731258357 5035836.83501248 578.840942382813 610800.2212214476 5035770.347264212 583.6851196289069
+
+
+
+
+
+
+
+
+610800.2212214476 5035770.347264212 578.840942382813 610800.2212214476 5035770.347264212 573.996765136719 610818.6731258357 5035836.83501248 573.996765136719 610800.2212214476 5035770.347264212 578.840942382813
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 588.529296875 610800.2212214476 5035770.347264212 588.529296875 610818.6731258357 5035836.83501248 583.6851196289069 610818.6731258357 5035836.83501248 588.529296875
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 583.6851196289069 610800.2212214476 5035770.347264212 583.6851196289069 610818.6731258357 5035836.83501248 578.840942382813 610818.6731258357 5035836.83501248 583.6851196289069
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 578.840942382813 610800.2212214476 5035770.347264212 578.840942382813 610818.6731258357 5035836.83501248 573.996765136719 610818.6731258357 5035836.83501248 578.840942382813
+
+
+
+
+
+
+
+
+610757.530966894 5035860.906479697 578.840942382813 610761.9515425221 5035864.167794568 578.840942382813 610757.530966894 5035860.906479697 573.996765136719 610757.530966894 5035860.906479697 578.840942382813
+
+
+
+
+
+
+
+
+610761.9515425221 5035864.167794568 578.840942382813 610782.6784284493 5035879.454642432 573.996765136719 610757.530966894 5035860.906479697 573.996765136719 610761.9515425221 5035864.167794568 578.840942382813
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 578.840942382813 610761.9515425221 5035864.167794568 583.6851196289069 610761.9515425221 5035864.167794568 578.840942382813 610784.3296125665 5035829.392075743 578.840942382813
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 578.840942382813 610784.3296125665 5035829.392075743 583.6851196289069 610761.9515425221 5035864.167794568 583.6851196289069 610784.3296125665 5035829.392075743 578.840942382813
+
+
+
+
+
+
+
+
+610734.2943063623 5035773.177748277 588.529296875 610734.2943063623 5035773.177748277 583.6851196289069 610800.2212214476 5035770.347264212 583.6851196289069 610734.2943063623 5035773.177748277 588.529296875
+
+
+
+
+
+
+
+
+610734.2943063623 5035773.177748277 583.6851196289069 610734.2943063623 5035773.177748277 578.840942382813 610800.2212214476 5035770.347264212 578.840942382813 610734.2943063623 5035773.177748277 583.6851196289069
+
+
+
+
+
+
+
+
+610734.2943063623 5035773.177748277 578.840942382813 610734.2943063623 5035773.177748277 573.996765136719 610800.2212214476 5035770.347264212 573.996765136719 610734.2943063623 5035773.177748277 578.840942382813
+
+
+
+
+
+
+
+
+610800.2212214476 5035770.347264212 588.529296875 610734.2943063623 5035773.177748277 588.529296875 610800.2212214476 5035770.347264212 583.6851196289069 610800.2212214476 5035770.347264212 588.529296875
+
+
+
+
+
+
+
+
+610800.2212214476 5035770.347264212 583.6851196289069 610734.2943063623 5035773.177748277 583.6851196289069 610800.2212214476 5035770.347264212 578.840942382813 610800.2212214476 5035770.347264212 583.6851196289069
+
+
+
+
+
+
+
+
+610800.2212214476 5035770.347264212 578.840942382813 610734.2943063623 5035773.177748277 578.840942382813 610800.2212214476 5035770.347264212 573.996765136719 610800.2212214476 5035770.347264212 578.840942382813
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 578.840942382813 610772.7202085907 5035808.0631751185 578.840942382813 610776.8375347028 5035802.381591275 578.840942382813 610784.3296125665 5035829.392075743 578.840942382813
+
+
+
+
+
+
+
+
+610772.7202085907 5035808.0631751185 578.840942382813 610735.6689161435 5035804.160897724 578.840942382813 610776.8375347028 5035802.381591275 578.840942382813 610772.7202085907 5035808.0631751185 578.840942382813
+
+
+
+
+
+
+
+
+610778.2721552142 5035828.081908587 578.840942382813 610772.7202085907 5035808.0631751185 578.840942382813 610784.3296125665 5035829.392075743 578.840942382813 610778.2721552142 5035828.081908587 578.840942382813
+
+
+
+
+
+
+
+
+610761.9515425221 5035864.167794568 578.840942382813 610757.530966894 5035860.906479697 578.840942382813 610778.2721552142 5035828.081908587 578.840942382813 610761.9515425221 5035864.167794568 578.840942382813
+
+
+
+
+
+
+
+
+610735.9011191447 5035809.667567344 578.840942382813 610735.6689161435 5035804.160897724 578.840942382813 610772.7202085907 5035808.0631751185 578.840942382813 610735.9011191447 5035809.667567344 578.840942382813
+
+
+
+
+
+
+
+
+610735.9011191447 5035809.667567344 578.840942382813 610734.2943063623 5035773.177748277 578.840942382813 610735.6689161435 5035804.160897724 578.840942382813 610735.9011191447 5035809.667567344 578.840942382813
+
+
+
+
+
+
+
+
+610784.3296125665 5035829.392075743 578.840942382813 610761.9515425221 5035864.167794568 578.840942382813 610778.2721552142 5035828.081908587 578.840942382813 610784.3296125665 5035829.392075743 578.840942382813
+
+
+
+
+
+
+
+
+610778.2721552142 5035828.081908587 573.996765136719 610757.530966894 5035860.906479697 578.840942382813 610757.530966894 5035860.906479697 573.996765136719 610778.2721552142 5035828.081908587 573.996765136719
+
+
+
+
+
+
+
+
+610778.2721552142 5035828.081908587 573.996765136719 610778.2721552142 5035828.081908587 578.840942382813 610757.530966894 5035860.906479697 578.840942382813 610778.2721552142 5035828.081908587 573.996765136719
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 573.996765136719 610800.2212214476 5035770.347264212 573.996765136719 610772.7202085907 5035808.0631751185 573.996765136719 610818.6731258357 5035836.83501248 573.996765136719
+
+
+
+
+
+
+
+
+610778.2721552142 5035828.081908587 573.996765136719 610818.6731258357 5035836.83501248 573.996765136719 610772.7202085907 5035808.0631751185 573.996765136719 610778.2721552142 5035828.081908587 573.996765136719
+
+
+
+
+
+
+
+
+610772.7202085907 5035808.0631751185 573.996765136719 610800.2212214476 5035770.347264212 573.996765136719 610734.2943063623 5035773.177748277 573.996765136719 610772.7202085907 5035808.0631751185 573.996765136719
+
+
+
+
+
+
+
+
+610735.9011191447 5035809.667567344 573.996765136719 610772.7202085907 5035808.0631751185 573.996765136719 610734.2943063623 5035773.177748277 573.996765136719 610735.9011191447 5035809.667567344 573.996765136719
+
+
+
+
+
+
+
+
+610782.6784284493 5035879.454642432 573.996765136719 610778.2721552142 5035828.081908587 573.996765136719 610757.530966894 5035860.906479697 573.996765136719 610782.6784284493 5035879.454642432 573.996765136719
+
+
+
+
+
+
+
+
+610782.6784284493 5035879.454642432 573.996765136719 610818.6731258357 5035836.83501248 573.996765136719 610778.2721552142 5035828.081908587 573.996765136719 610782.6784284493 5035879.454642432 573.996765136719
+
+
+
+
+
+
+
+
+610734.538063405 5035778.651829647 588.529296875 610735.6689161435 5035804.160897724 583.6851196289069 610734.2943063623 5035773.177748277 583.6851196289069 610734.538063405 5035778.651829647 588.529296875
+
+
+
+
+
+
+
+
+610734.2943063623 5035773.177748277 588.529296875 610734.538063405 5035778.651829647 588.529296875 610734.2943063623 5035773.177748277 583.6851196289069 610734.2943063623 5035773.177748277 588.529296875
+
+
+
+
+
+
+
+
+610772.7202085907 5035808.0631751185 578.840942382813 610772.7202085907 5035808.0631751185 573.996765136719 610735.9011191447 5035809.667567344 573.996765136719 610772.7202085907 5035808.0631751185 578.840942382813
+
+
+
+
+
+
+
+
+610735.9011191447 5035809.667567344 578.840942382813 610772.7202085907 5035808.0631751185 578.840942382813 610735.9011191447 5035809.667567344 573.996765136719 610735.9011191447 5035809.667567344 578.840942382813
+
+
+
+
+
+
+
+
+610778.2721552142 5035828.081908587 578.840942382813 610778.2721552142 5035828.081908587 573.996765136719 610772.7202085907 5035808.0631751185 573.996765136719 610778.2721552142 5035828.081908587 578.840942382813
+
+
+
+
+
+
+
+
+610772.7202085907 5035808.0631751185 578.840942382813 610778.2721552142 5035828.081908587 578.840942382813 610772.7202085907 5035808.0631751185 573.996765136719 610772.7202085907 5035808.0631751185 578.840942382813
+
+
+
+
+
+
+
+
+610735.6689161435 5035804.160897724 583.6851196289069 610735.6689161435 5035804.160897724 578.840942382813 610734.2943063623 5035773.177748277 578.840942382813 610735.6689161435 5035804.160897724 583.6851196289069
+
+
+
+
+
+
+
+
+610734.2943063623 5035773.177748277 583.6851196289069 610735.6689161435 5035804.160897724 583.6851196289069 610734.2943063623 5035773.177748277 578.840942382813 610734.2943063623 5035773.177748277 583.6851196289069
+
+
+
+
+
+
+
+
+610735.9011191447 5035809.667567344 578.840942382813 610735.9011191447 5035809.667567344 573.996765136719 610734.2943063623 5035773.177748277 573.996765136719 610735.9011191447 5035809.667567344 578.840942382813
+
+
+
+
+
+
+
+
+610734.2943063623 5035773.177748277 578.840942382813 610735.9011191447 5035809.667567344 578.840942382813 610734.2943063623 5035773.177748277 573.996765136719 610734.2943063623 5035773.177748277 578.840942382813
+
+
+
+
+
+
+
+
+
+
+
+
+residential
+1996
+7.002685546875
+1
+5
+
+
+
+
+
+
+
+
+610757.530966894 5035860.906479697 573.996765136719 610782.6784284493 5035879.454642432 566.994079589844 610757.530966894 5035860.906479697 566.994079589844 610757.530966894 5035860.906479697 573.996765136719
+
+
+
+
+
+
+
+
+610782.6784284493 5035879.454642432 573.996765136719 610782.6784284493 5035879.454642432 566.994079589844 610757.530966894 5035860.906479697 573.996765136719 610782.6784284493 5035879.454642432 573.996765136719
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 573.996765136719 610772.7202085907 5035808.0631751185 573.996765136719 610800.2212214476 5035770.347264212 573.996765136719 610818.6731258357 5035836.83501248 573.996765136719
+
+
+
+
+
+
+
+
+610778.2721552142 5035828.081908587 573.996765136719 610772.7202085907 5035808.0631751185 573.996765136719 610818.6731258357 5035836.83501248 573.996765136719 610778.2721552142 5035828.081908587 573.996765136719
+
+
+
+
+
+
+
+
+610772.7202085907 5035808.0631751185 573.996765136719 610734.2943063623 5035773.177748277 573.996765136719 610800.2212214476 5035770.347264212 573.996765136719 610772.7202085907 5035808.0631751185 573.996765136719
+
+
+
+
+
+
+
+
+610735.9011191447 5035809.667567344 573.996765136719 610734.2943063623 5035773.177748277 573.996765136719 610772.7202085907 5035808.0631751185 573.996765136719 610735.9011191447 5035809.667567344 573.996765136719
+
+
+
+
+
+
+
+
+610782.6784284493 5035879.454642432 573.996765136719 610757.530966894 5035860.906479697 573.996765136719 610778.2721552142 5035828.081908587 573.996765136719 610782.6784284493 5035879.454642432 573.996765136719
+
+
+
+
+
+
+
+
+610782.6784284493 5035879.454642432 573.996765136719 610778.2721552142 5035828.081908587 573.996765136719 610818.6731258357 5035836.83501248 573.996765136719 610782.6784284493 5035879.454642432 573.996765136719
+
+
+
+
+
+
+
+
+610778.2721552142 5035828.081908587 566.994079589844 610778.2721552142 5035828.081908587 573.996765136719 610757.530966894 5035860.906479697 566.994079589844 610778.2721552142 5035828.081908587 566.994079589844
+
+
+
+
+
+
+
+
+610778.2721552142 5035828.081908587 573.996765136719 610757.530966894 5035860.906479697 573.996765136719 610757.530966894 5035860.906479697 566.994079589844 610778.2721552142 5035828.081908587 573.996765136719
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 566.994079589844 610800.2212214476 5035770.347264212 566.994079589844 610772.7202085907 5035808.0631751185 566.994079589844 610818.6731258357 5035836.83501248 566.994079589844
+
+
+
+
+
+
+
+
+610778.2721552142 5035828.081908587 566.994079589844 610818.6731258357 5035836.83501248 566.994079589844 610772.7202085907 5035808.0631751185 566.994079589844 610778.2721552142 5035828.081908587 566.994079589844
+
+
+
+
+
+
+
+
+610772.7202085907 5035808.0631751185 566.994079589844 610800.2212214476 5035770.347264212 566.994079589844 610734.2943063623 5035773.177748277 566.994079589844 610772.7202085907 5035808.0631751185 566.994079589844
+
+
+
+
+
+
+
+
+610735.9011191447 5035809.667567344 566.994079589844 610772.7202085907 5035808.0631751185 566.994079589844 610734.2943063623 5035773.177748277 566.994079589844 610735.9011191447 5035809.667567344 566.994079589844
+
+
+
+
+
+
+
+
+610782.6784284493 5035879.454642432 566.994079589844 610778.2721552142 5035828.081908587 566.994079589844 610757.530966894 5035860.906479697 566.994079589844 610782.6784284493 5035879.454642432 566.994079589844
+
+
+
+
+
+
+
+
+610782.6784284493 5035879.454642432 566.994079589844 610818.6731258357 5035836.83501248 566.994079589844 610778.2721552142 5035828.081908587 566.994079589844 610782.6784284493 5035879.454642432 566.994079589844
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 566.994079589844 610782.6784284493 5035879.454642432 566.994079589844 610782.6784284493 5035879.454642432 573.996765136719 610818.6731258357 5035836.83501248 566.994079589844
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 566.994079589844 610782.6784284493 5035879.454642432 573.996765136719 610818.6731258357 5035836.83501248 573.996765136719 610818.6731258357 5035836.83501248 566.994079589844
+
+
+
+
+
+
+
+
+610772.7202085907 5035808.0631751185 573.996765136719 610778.2721552142 5035828.081908587 566.994079589844 610772.7202085907 5035808.0631751185 566.994079589844 610772.7202085907 5035808.0631751185 573.996765136719
+
+
+
+
+
+
+
+
+610778.2721552142 5035828.081908587 573.996765136719 610778.2721552142 5035828.081908587 566.994079589844 610772.7202085907 5035808.0631751185 573.996765136719 610778.2721552142 5035828.081908587 573.996765136719
+
+
+
+
+
+
+
+
+610735.9011191447 5035809.667567344 573.996765136719 610772.7202085907 5035808.0631751185 566.994079589844 610735.9011191447 5035809.667567344 566.994079589844 610735.9011191447 5035809.667567344 573.996765136719
+
+
+
+
+
+
+
+
+610772.7202085907 5035808.0631751185 573.996765136719 610772.7202085907 5035808.0631751185 566.994079589844 610735.9011191447 5035809.667567344 573.996765136719 610772.7202085907 5035808.0631751185 573.996765136719
+
+
+
+
+
+
+
+
+610818.6731258357 5035836.83501248 573.996765136719 610800.2212214476 5035770.347264212 566.994079589844 610818.6731258357 5035836.83501248 566.994079589844 610818.6731258357 5035836.83501248 573.996765136719
+
+
+
+
+
+
+
+
+610800.2212214476 5035770.347264212 573.996765136719 610800.2212214476 5035770.347264212 566.994079589844 610818.6731258357 5035836.83501248 573.996765136719 610800.2212214476 5035770.347264212 573.996765136719
+
+
+
+
+
+
+
+
+610734.2943063623 5035773.177748277 573.996765136719 610735.9011191447 5035809.667567344 566.994079589844 610734.2943063623 5035773.177748277 566.994079589844 610734.2943063623 5035773.177748277 573.996765136719
+
+
+
+
+
+
+
+
+610735.9011191447 5035809.667567344 573.996765136719 610735.9011191447 5035809.667567344 566.994079589844 610734.2943063623 5035773.177748277 573.996765136719 610735.9011191447 5035809.667567344 573.996765136719
+
+
+
+
+
+
+
+
+610800.2212214476 5035770.347264212 573.996765136719 610734.2943063623 5035773.177748277 566.994079589844 610800.2212214476 5035770.347264212 566.994079589844 610800.2212214476 5035770.347264212 573.996765136719
+
+
+
+
+
+
+
+
+610734.2943063623 5035773.177748277 573.996765136719 610734.2943063623 5035773.177748277 566.994079589844 610800.2212214476 5035770.347264212 573.996765136719 610734.2943063623 5035773.177748277 573.996765136719
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/tests_data/FZK_Haus_LoD_2.gml b/tests/tests_data/FZK_Haus_LoD_2.gml
new file mode 100644
index 0000000..eaea23f
--- /dev/null
+++ b/tests/tests_data/FZK_Haus_LoD_2.gml
@@ -0,0 +1,240 @@
+
+
+ AC14-FZK-Haus
+
+
+ 457842 5439083 111.8
+ 457854 5439093 118.317669
+
+
+
+
+ FZK-Haus (Forschungszentrum Karlsruhe, now KIT), created by Karl-Heinz
+ Haefele
+ AC14-FZK-Haus
+ 2017-01-23
+ entirelyAboveTerrain
+
+ 120.00
+
+
+ New Building
+
+
+ NO
+
+ 1000
+ 1000
+ 1000
+ 2020
+ 1030
+ 6.52
+ 2
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Outer Wall 1 (West)
+
+
+
+
+
+
+ 457842 5439088 118.317691453624
+ 457842 5439093 115.430940107676
+ 457842 5439093 111.8
+ 457842 5439083 111.8
+ 457842 5439083 115.430940107676
+ 457842 5439088 118.317691453624
+
+
+
+
+
+
+
+
+
+
+ Outer Wall 2 (South)
+
+
+
+
+
+
+ 457854 5439083 115.430940107676
+ 457842 5439083 115.430940107676
+ 457842 5439083 111.8
+ 457854 5439083 111.8
+ 457854 5439083 115.430940107676
+
+
+
+
+
+
+
+
+
+
+ Outer Wall 3 (East)
+
+
+
+
+
+
+ 457854 5439088 118.317691453624
+ 457854 5439083 115.430940107676
+ 457854 5439083 111.8
+ 457854 5439093 111.8
+ 457854 5439093 115.430940107676
+ 457854 5439088 118.317691453624
+
+
+
+
+
+
+
+
+
+
+ Roof 1 (North)
+
+
+
+
+
+
+ 457842 5439088 118.317691453624
+ 457854 5439088 118.317691453624
+ 457854 5439093 115.430940107676
+ 457842 5439093 115.430940107676
+ 457842 5439088 118.317691453624
+
+
+
+
+
+
+
+
+
+
+ Outer Wall 4 (North)
+
+
+
+
+
+
+ 457842 5439093 115.430940107676
+ 457854 5439093 115.430940107676
+ 457854 5439093 111.8
+ 457842 5439093 111.8
+ 457842 5439093 115.430940107676
+
+
+
+
+
+
+
+
+
+
+ Roof 2 (South)
+
+
+
+
+
+
+ 457854 5439083 115.430940107676
+ 457854 5439088 118.317691453624
+ 457842 5439088 118.317691453624
+ 457842 5439083 115.430940107676
+ 457854 5439083 115.430940107676
+
+
+
+
+
+
+
+
+
+
+ Bodenplatte
+ Base Surface
+
+
+
+
+
+
+ 457854 5439083 111.8
+ 457842 5439083 111.8
+ 457842 5439093 111.8
+ 457854 5439093 111.8
+ 457854 5439083 111.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Eggenstein-Leopoldshafen
+
+ 4711
+ Spöcker Straße
+
+
+ 76344
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/tests_data/eilat.geojson b/tests/tests_data/eilat.geojson
new file mode 100644
index 0000000..2e4efd3
--- /dev/null
+++ b/tests/tests_data/eilat.geojson
@@ -0,0 +1,177 @@
+{
+ "type": "FeatureCollection",
+ "features": [
+ {
+ "type": "Feature",
+ "id": 1,
+ "properties": {
+ "heightmax": 9,
+ "ANNEE_CONS": 1978,
+ "CODE_UTILI": "residential"
+ },
+ "geometry": {
+ "coordinates": [
+ [
+ [
+ 34.95217088371581,
+ 29.56694805860026
+ ],
+ [
+ 34.95262396587913,
+ 29.566952667742285
+ ],
+ [
+ 34.95261999147337,
+ 29.567024109421467
+ ],
+ [
+ 34.952169558914704,
+ 29.567019500282157
+ ],
+ [
+ 34.95217088371581,
+ 29.56694805860026
+ ]
+ ]
+ ],
+ "type": "Polygon"
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 3,
+ "properties": {
+ "heightmax": 16,
+ "ANNEE_CONS": 2012,
+ "CODE_UTILI": "dormitory"
+ },
+ "geometry": {
+ "coordinates": [
+ [
+ [
+ 34.95176644317411,
+ 29.56827388702702
+ ],
+ [
+ 34.95176550020565,
+ 29.568180388329026
+ ],
+ [
+ 34.95179850408434,
+ 29.568180388329026
+ ],
+ [
+ 34.95179850408434,
+ 29.5681303582886
+ ],
+ [
+ 34.95176644317411,
+ 29.5681303582886
+ ],
+ [
+ 34.95176644317411,
+ 29.568038499789708
+ ],
+ [
+ 34.951874884488376,
+ 29.568038499789708
+ ],
+ [
+ 34.951874884488376,
+ 29.568058183760357
+ ],
+ [
+ 34.95192391882168,
+ 29.568058183760357
+ ],
+ [
+ 34.951922032885705,
+ 29.56804178045124
+ ],
+ [
+ 34.95205216246262,
+ 29.568042600617147
+ ],
+ [
+ 34.952051219494166,
+ 29.568129538124154
+ ],
+ [
+ 34.95201821561636,
+ 29.5681303582886
+ ],
+ [
+ 34.95201821561636,
+ 29.568176287507143
+ ],
+ [
+ 34.95204839059062,
+ 29.568176287507143
+ ],
+ [
+ 34.95205027652662,
+ 29.56827552735433
+ ],
+ [
+ 34.95195503676348,
+ 29.568274707190284
+ ],
+ [
+ 34.95195597973188,
+ 29.56825830391628
+ ],
+ [
+ 34.951849424353696,
+ 29.56825830391628
+ ],
+ [
+ 34.951849424353696,
+ 29.568274707190284
+ ],
+ [
+ 34.95176644317411,
+ 29.56827388702702
+ ]
+ ]
+ ],
+ "type": "Polygon"
+ }
+ },
+ {
+ "type": "Feature",
+ "id": 2,
+ "properties": {
+ "heightmax": 24,
+ "ANNEE_CONS": 2002,
+ "CODE_UTILI": "Hotel employ"
+ },
+ "geometry": {
+ "coordinates": [
+ [
+ [
+ 34.94972280674813,
+ 29.566224752287738
+ ],
+ [
+ 34.94974316291999,
+ 29.56597561012454
+ ],
+ [
+ 34.94989147217407,
+ 29.565980668855033
+ ],
+ [
+ 34.94987402402688,
+ 29.566233605043536
+ ],
+ [
+ 34.94972280674813,
+ 29.566224752287738
+ ]
+ ]
+ ],
+ "type": "Polygon"
+ }
+ }
+ ]
+}
diff --git a/tests/tests_data/kelowna.obj b/tests/tests_data/kelowna.obj
new file mode 100644
index 0000000..ef0ebad
--- /dev/null
+++ b/tests/tests_data/kelowna.obj
@@ -0,0 +1,81 @@
+# https://github.com/mikedh/trimesh
+v 329238.00000000 5528272.00000000 0.00000000
+v 329238.00000000 5528272.00000000 3.79999995
+v 329254.12500000 5528263.00000000 0.00000000
+v 329254.12500000 5528263.00000000 3.79999995
+v 329245.12500000 5528267.50000000 4.93084002
+v 329246.15625000 5528272.50000000 0.00000000
+v 329246.15625000 5528272.50000000 3.79999995
+v 329229.15625000 5528271.00000000 0.00000000
+v 329229.15625000 5528271.00000000 3.79999995
+v 329242.18750000 5528267.00000000 5.29822016
+v 329238.31250000 5528266.50000000 4.68875980
+v 329229.31250000 5528269.50000000 0.00000000
+v 329229.31250000 5528269.50000000 3.79999995
+v 329244.34375000 5528267.00000000 4.99910021
+v 329242.34375000 5528267.00000000 5.30000019
+v 329233.34375000 5528276.00000000 0.00000000
+v 329233.34375000 5528276.00000000 3.79999995
+v 329247.34375000 5528262.50000000 0.00000000
+v 329247.34375000 5528262.50000000 3.79999995
+v 329242.40625000 5528257.50000000 0.00000000
+v 329242.40625000 5528257.50000000 3.79999995
+v 329231.50000000 5528270.50000000 4.31147003
+v 329253.53125000 5528273.00000000 0.00000000
+v 329253.53125000 5528273.00000000 3.79999995
+v 329241.71875000 5528276.50000000 0.00000000
+v 329241.71875000 5528276.50000000 3.79999995
+v 329233.81250000 5528270.50000000 4.68364000
+v 329248.81250000 5528267.50000000 4.92572021
+f 22 9 13
+f 28 4 24
+f 23 6 7
+f 7 24 23
+f 6 25 26
+f 26 7 6
+f 25 1 2
+f 2 26 25
+f 1 16 17
+f 17 2 1
+f 16 8 9
+f 9 17 16
+f 8 12 13
+f 13 9 8
+f 12 20 21
+f 21 13 12
+f 20 18 19
+f 19 21 20
+f 18 3 4
+f 4 19 18
+f 3 23 24
+f 24 4 3
+f 6 23 3
+f 6 3 18
+f 6 18 20
+f 6 20 12
+f 6 12 8
+f 8 16 1
+f 6 8 1
+f 1 25 6
+f 24 7 14
+f 24 14 5
+f 5 28 24
+f 7 26 15
+f 15 14 7
+f 26 2 11
+f 26 11 10
+f 10 15 26
+f 2 17 27
+f 27 11 2
+f 17 9 22
+f 22 27 17
+f 21 10 11
+f 13 21 11
+f 13 11 27
+f 27 22 13
+f 21 19 5
+f 21 5 14
+f 21 14 15
+f 15 10 21
+f 19 4 28
+f 28 5 19
\ No newline at end of file
diff --git a/tests/tests_data/levis.geojson b/tests/tests_data/levis.geojson
new file mode 100644
index 0000000..04ed34e
--- /dev/null
+++ b/tests/tests_data/levis.geojson
@@ -0,0 +1,73 @@
+{
+ "type": "FeatureCollection",
+ "features": [
+ {
+ "type": "Feature",
+ "id": 1,
+ "properties": {
+ "OBJECTID_12": 1,
+ "gml_id": 1,
+ "citygml_me": 20,
+ "Z_Min": 46.1162,
+ "Z_Max": 66.1162,
+ "ANNEE_CONS": 2023,
+ "CODE_UTILI": 1000
+ },
+ "geometry": {
+ "coordinates": [
+ [
+ [
+ -71.16553932594044,
+ 46.7895775031096
+ ],
+ [
+ -71.16535210635354,
+ 46.78972033813616
+ ],
+ [
+ -71.1654671126711,
+ 46.78979908036044
+ ],
+ [
+ -71.16525314742928,
+ 46.78995473325631
+ ],
+ [
+ -71.16480114585448,
+ 46.7896544143249
+ ],
+ [
+ -71.16486533542763,
+ 46.789394380725696
+ ],
+ [
+ -71.16467544127534,
+ 46.78927901330414
+ ],
+ [
+ -71.16454171299826,
+ 46.78930465053031
+ ],
+ [
+ -71.16445612690187,
+ 46.789766118513455
+ ],
+ [
+ -71.16519698155322,
+ 46.79023673853192
+ ],
+ [
+ -71.16583887727946,
+ 46.78976794972763
+ ],
+ [
+ -71.16553932594044,
+ 46.7895775031096
+ ]
+ ]
+ ],
+ "type": "Polygon"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tests/tests_data/one_building_in_kelowna.gml b/tests/tests_data/one_building_in_kelowna.gml
new file mode 100644
index 0000000..6036f4e
--- /dev/null
+++ b/tests/tests_data/one_building_in_kelowna.gml
@@ -0,0 +1,409 @@
+
+
+
+
+ 326011.03601000085 5526048.416990001 -1.6000000000058208
+ 329466.6600299999 5529018.72205 9.80000000000291
+
+
+
+
+
+ 291
+
+
+ m2
+
+ residential
+ 1996
+ 5.3
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329231.5010599997 5528270.404139999 4.311470000000554 329229.15295 5528271.14002 3.8000000000029104 329229.30395000055 5528269.304020001 3.8000000000029104 329231.5010599997 5528270.404139999 4.311470000000554
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329248.8121399991 5528267.658840001 4.925719999999274 329254.11205999926 5528262.99903 3.8000000000029104 329253.52796000056 5528272.956 3.8000000000029104 329248.8121399991 5528267.658840001 4.925719999999274
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329246.16602000035 5528272.533020001 0 329246.16602000035 5528272.533020001 3.8000000000029104 329253.52796000056 5528272.956 3.8000000000029104 329253.52796000056 5528272.956 0 329246.16602000035 5528272.533020001 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329241.7199700009 5528276.307010001 0 329241.7199700009 5528276.307010001 3.8000000000029104 329246.16602000035 5528272.533020001 3.8000000000029104 329246.16602000035 5528272.533020001 0 329241.7199700009 5528276.307010001 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329237.9890100006 5528272.159 0 329237.9890100006 5528272.159 3.8000000000029104 329241.7199700009 5528276.307010001 3.8000000000029104 329241.7199700009 5528276.307010001 0 329237.9890100006 5528272.159 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329233.3360600006 5528276.213989999 0 329233.3360600006 5528276.213989999 3.8000000000029104 329237.9890100006 5528272.159 3.8000000000029104 329237.9890100006 5528272.159 0 329233.3360600006 5528276.213989999 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329229.15295 5528271.14002 0 329229.15295 5528271.14002 3.8000000000029104 329233.3360600006 5528276.213989999 3.8000000000029104 329233.3360600006 5528276.213989999 0 329229.15295 5528271.14002 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329229.30395000055 5528269.304020001 0 329229.30395000055 5528269.304020001 3.8000000000029104 329229.15295 5528271.14002 3.8000000000029104 329229.15295 5528271.14002 0 329229.30395000055 5528269.304020001 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329242.40003000014 5528257.71503 0 329242.40003000014 5528257.71503 3.8000000000029104 329229.30395000055 5528269.304020001 3.8000000000029104 329229.30395000055 5528269.304020001 0 329242.40003000014 5528257.71503 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329247.3289800007 5528262.52503 0 329247.3289800007 5528262.52503 3.8000000000029104 329242.40003000014 5528257.71503 3.8000000000029104 329242.40003000014 5528257.71503 0 329247.3289800007 5528262.52503 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329254.11205999926 5528262.99903 0 329254.11205999926 5528262.99903 3.8000000000029104 329247.3289800007 5528262.52503 3.8000000000029104 329247.3289800007 5528262.52503 0 329254.11205999926 5528262.99903 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329253.52796000056 5528272.956 0 329253.52796000056 5528272.956 3.8000000000029104 329254.11205999926 5528262.99903 3.8000000000029104 329254.11205999926 5528262.99903 0 329253.52796000056 5528272.956 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329253.52796000056 5528272.956 0 329254.11205999926 5528262.99903 0 329247.3289800007 5528262.52503 0 329242.40003000014 5528257.71503 0 329229.30395000055 5528269.304020001 0 329229.15295 5528271.14002 0 329233.3360600006 5528276.213989999 0 329237.9890100006 5528272.159 0 329241.7199700009 5528276.307010001 0 329246.16602000035 5528272.533020001 0 329253.52796000056 5528272.956 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329246.16602000035 5528272.533020001 3.8000000000029104 329244.33748999983 5528267.074109999 4.999100000000908 329245.1323099993 5528267.42457 4.930840000000899 329248.8121399991 5528267.658840001 4.925719999999274 329253.52796000056 5528272.956 3.8000000000029104 329246.16602000035 5528272.533020001 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329241.7199700009 5528276.307010001 3.8000000000029104 329242.3462899998 5528267.00502 5.30000000000291 329244.33748999983 5528267.074109999 4.999100000000908 329246.16602000035 5528272.533020001 3.8000000000029104 329241.7199700009 5528276.307010001 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329237.9890100006 5528272.159 3.8000000000029104 329238.32637000084 5528266.609999999 4.6887600000045495 329242.1777599994 5528266.829500001 5.298219999996945 329242.3462899998 5528267.00502 5.30000000000291 329241.7199700009 5528276.307010001 3.8000000000029104 329237.9890100006 5528272.159 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329233.3360600006 5528276.213989999 3.8000000000029104 329233.80010999925 5528270.5848900005 4.683640000002924 329238.32637000084 5528266.609999999 4.6887600000045495 329237.9890100006 5528272.159 3.8000000000029104 329233.3360600006 5528276.213989999 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329229.15295 5528271.14002 3.8000000000029104 329231.5010599997 5528270.404139999 4.311470000000554 329233.80010999925 5528270.5848900005 4.683640000002924 329233.3360600006 5528276.213989999 3.8000000000029104 329229.15295 5528271.14002 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329242.40003000014 5528257.71503 3.8000000000029104 329242.1777599994 5528266.829500001 5.298219999996945 329238.32637000084 5528266.609999999 4.6887600000045495 329233.80010999925 5528270.5848900005 4.683640000002924 329231.5010599997 5528270.404139999 4.311470000000554 329229.30395000055 5528269.304020001 3.8000000000029104 329242.40003000014 5528257.71503 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329247.3289800007 5528262.52503 3.8000000000029104 329245.1323099993 5528267.42457 4.930840000000899 329244.33748999983 5528267.074109999 4.999100000000908 329242.3462899998 5528267.00502 5.30000000000291 329242.1777599994 5528266.829500001 5.298219999996945 329242.40003000014 5528257.71503 3.8000000000029104 329247.3289800007 5528262.52503 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 329254.11205999926 5528262.99903 3.8000000000029104 329248.8121399991 5528267.658840001 4.925719999999274 329245.1323099993 5528267.42457 4.930840000000899 329247.3289800007 5528262.52503 3.8000000000029104 329254.11205999926 5528262.99903 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/tests_data/one_building_in_kelowna_alkis.gml b/tests/tests_data/one_building_in_kelowna_alkis.gml
new file mode 100644
index 0000000..05926e5
--- /dev/null
+++ b/tests/tests_data/one_building_in_kelowna_alkis.gml
@@ -0,0 +1,409 @@
+
+
+
+
+326011.03601000085 5526048.416990001 -1.6000000000058208
+329466.6600299999 5529018.72205 9.80000000000291
+
+
+
+
+
+291
+
+
+m2
+
+1996
+residential
+5.3
+1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329231.5010599997 5528270.404139999 4.311470000000554 329229.15295 5528271.14002 3.8000000000029104 329229.30395000055 5528269.304020001 3.8000000000029104 329231.5010599997 5528270.404139999 4.311470000000554
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329248.8121399991 5528267.658840001 4.925719999999274 329254.11205999926 5528262.99903 3.8000000000029104 329253.52796000056 5528272.956 3.8000000000029104 329248.8121399991 5528267.658840001 4.925719999999274
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329246.16602000035 5528272.533020001 0 329246.16602000035 5528272.533020001 3.8000000000029104 329253.52796000056 5528272.956 3.8000000000029104 329253.52796000056 5528272.956 0 329246.16602000035 5528272.533020001 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329241.7199700009 5528276.307010001 0 329241.7199700009 5528276.307010001 3.8000000000029104 329246.16602000035 5528272.533020001 3.8000000000029104 329246.16602000035 5528272.533020001 0 329241.7199700009 5528276.307010001 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329237.9890100006 5528272.159 0 329237.9890100006 5528272.159 3.8000000000029104 329241.7199700009 5528276.307010001 3.8000000000029104 329241.7199700009 5528276.307010001 0 329237.9890100006 5528272.159 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329233.3360600006 5528276.213989999 0 329233.3360600006 5528276.213989999 3.8000000000029104 329237.9890100006 5528272.159 3.8000000000029104 329237.9890100006 5528272.159 0 329233.3360600006 5528276.213989999 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329229.15295 5528271.14002 0 329229.15295 5528271.14002 3.8000000000029104 329233.3360600006 5528276.213989999 3.8000000000029104 329233.3360600006 5528276.213989999 0 329229.15295 5528271.14002 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329229.30395000055 5528269.304020001 0 329229.30395000055 5528269.304020001 3.8000000000029104 329229.15295 5528271.14002 3.8000000000029104 329229.15295 5528271.14002 0 329229.30395000055 5528269.304020001 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329242.40003000014 5528257.71503 0 329242.40003000014 5528257.71503 3.8000000000029104 329229.30395000055 5528269.304020001 3.8000000000029104 329229.30395000055 5528269.304020001 0 329242.40003000014 5528257.71503 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329247.3289800007 5528262.52503 0 329247.3289800007 5528262.52503 3.8000000000029104 329242.40003000014 5528257.71503 3.8000000000029104 329242.40003000014 5528257.71503 0 329247.3289800007 5528262.52503 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329254.11205999926 5528262.99903 0 329254.11205999926 5528262.99903 3.8000000000029104 329247.3289800007 5528262.52503 3.8000000000029104 329247.3289800007 5528262.52503 0 329254.11205999926 5528262.99903 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329253.52796000056 5528272.956 0 329253.52796000056 5528272.956 3.8000000000029104 329254.11205999926 5528262.99903 3.8000000000029104 329254.11205999926 5528262.99903 0 329253.52796000056 5528272.956 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329253.52796000056 5528272.956 0 329254.11205999926 5528262.99903 0 329247.3289800007 5528262.52503 0 329242.40003000014 5528257.71503 0 329229.30395000055 5528269.304020001 0 329229.15295 5528271.14002 0 329233.3360600006 5528276.213989999 0 329237.9890100006 5528272.159 0 329241.7199700009 5528276.307010001 0 329246.16602000035 5528272.533020001 0 329253.52796000056 5528272.956 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329246.16602000035 5528272.533020001 3.8000000000029104 329244.33748999983 5528267.074109999 4.999100000000908 329245.1323099993 5528267.42457 4.930840000000899 329248.8121399991 5528267.658840001 4.925719999999274 329253.52796000056 5528272.956 3.8000000000029104 329246.16602000035 5528272.533020001 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329241.7199700009 5528276.307010001 3.8000000000029104 329242.3462899998 5528267.00502 5.30000000000291 329244.33748999983 5528267.074109999 4.999100000000908 329246.16602000035 5528272.533020001 3.8000000000029104 329241.7199700009 5528276.307010001 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329237.9890100006 5528272.159 3.8000000000029104 329238.32637000084 5528266.609999999 4.6887600000045495 329242.1777599994 5528266.829500001 5.298219999996945 329242.3462899998 5528267.00502 5.30000000000291 329241.7199700009 5528276.307010001 3.8000000000029104 329237.9890100006 5528272.159 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329233.3360600006 5528276.213989999 3.8000000000029104 329233.80010999925 5528270.5848900005 4.683640000002924 329238.32637000084 5528266.609999999 4.6887600000045495 329237.9890100006 5528272.159 3.8000000000029104 329233.3360600006 5528276.213989999 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329229.15295 5528271.14002 3.8000000000029104 329231.5010599997 5528270.404139999 4.311470000000554 329233.80010999925 5528270.5848900005 4.683640000002924 329233.3360600006 5528276.213989999 3.8000000000029104 329229.15295 5528271.14002 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329242.40003000014 5528257.71503 3.8000000000029104 329242.1777599994 5528266.829500001 5.298219999996945 329238.32637000084 5528266.609999999 4.6887600000045495 329233.80010999925 5528270.5848900005 4.683640000002924 329231.5010599997 5528270.404139999 4.311470000000554 329229.30395000055 5528269.304020001 3.8000000000029104 329242.40003000014 5528257.71503 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329247.3289800007 5528262.52503 3.8000000000029104 329245.1323099993 5528267.42457 4.930840000000899 329244.33748999983 5528267.074109999 4.999100000000908 329242.3462899998 5528267.00502 5.30000000000291 329242.1777599994 5528266.829500001 5.298219999996945 329242.40003000014 5528257.71503 3.8000000000029104 329247.3289800007 5528262.52503 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+329254.11205999926 5528262.99903 3.8000000000029104 329248.8121399991 5528267.658840001 4.925719999999274 329245.1323099993 5528267.42457 4.930840000000899 329247.3289800007 5528262.52503 3.8000000000029104 329254.11205999926 5528262.99903 3.8000000000029104
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/tests_data/one_building_in_kelowna_sra_SW.out b/tests/tests_data/one_building_in_kelowna_sra_SW.out
new file mode 100644
index 0000000..bc60e9c
--- /dev/null
+++ b/tests/tests_data/one_building_in_kelowna_sra_SW.out
@@ -0,0 +1,8761 @@
+#0:BLD109438:2 0:BLD109438:3 0:BLD109438:4 0:BLD109438:5 0:BLD109438:6 0:BLD109438:7 0:BLD109438:8 0:BLD109438:9 0:BLD109438:10 0:BLD109438:11 0:BLD109438:0 0:BLD109438:1 0:BLD109438:13 0:BLD109438:14 0:BLD109438:15 0:BLD109438:16 0:BLD109438:17 0:BLD109438:18 0:BLD109438:19 0:BLD109438:20
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+45 49 39 42 45 47 108 463 380 302 86 196 68 127 65 121 65 152 231 213
+105 113 93 101 107 117 376 820 783 428 311 443 231 316 226 318 228 431 530 522
+134 140 120 127 140 170 641 897 1000 331 488 555 336 411 364 412 369 627 685 708
+151 154 139 140 164 286 858 818 1075 204 606 576 393 437 458 439 464 741 732 790
+95 95 88 86 108 252 471 315 488 112 331 272 218 222 261 222 264 382 346 386
+82 80 79 73 101 304 467 209 410 89 296 204 179 168 230 168 233 332 273 320
+55 53 55 48 88 298 391 95 288 57 207 104 104 95 151 95 157 227 159 205
+18 17 19 15 58 145 164 23 84 18 70 33 34 32 43 32 50 74 38 60
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+35 39 30 34 35 37 59 155 131 110 63 93 58 74 56 73 56 81 103 98
+89 96 78 85 90 101 293 620 592 332 251 348 193 255 189 256 191 339 413 407
+110 115 98 103 114 139 462 641 711 252 364 411 260 311 279 312 282 461 501 517
+103 104 94 95 111 174 435 417 536 137 339 325 240 260 270 261 273 402 398 425
+112 111 105 102 128 314 599 398 623 132 415 339 268 273 323 273 328 481 435 487
+76 75 72 69 89 123 150 107 138 81 175 158 154 152 163 152 164 182 171 180
+45 43 43 40 54 71 80 54 69 46 98 88 88 86 92 86 93 100 93 98
+14 13 13 12 17 22 23 15 19 14 29 26 26 26 28 26 28 29 27 28
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+15 15 13 14 15 15 16 16 16 16 28 28 28 28 28 28 28 28 28 28
+23 23 20 21 23 23 24 24 24 24 43 43 43 43 43 43 43 43 43 43
+55 56 49 52 56 61 68 71 73 64 111 113 108 110 109 110 109 114 115 116
+72 73 67 67 77 89 106 104 112 85 157 156 148 150 151 150 151 163 163 165
+75 75 69 68 85 158 265 189 273 88 211 182 155 157 176 157 178 237 219 239
+61 60 58 55 75 167 241 124 214 66 173 131 119 115 142 115 144 190 162 184
+54 52 54 47 81 235 305 87 228 55 182 106 105 98 140 98 145 197 146 181
+8 8 7 7 9 10 10 8 9 8 16 15 15 15 15 15 15 16 15 16
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+59 65 51 56 59 61 141 633 516 415 119 272 94 176 91 169 91 210 320 294
+114 125 100 111 116 131 443 990 941 516 364 527 268 372 261 374 264 510 633 623
+154 163 138 147 161 198 741 1046 1161 394 576 657 400 488 432 489 437 738 807 832
+178 183 165 166 195 335 1000 961 1256 246 726 692 478 531 553 533 560 883 874 941
+174 174 167 159 206 580 1162 759 1213 214 767 614 467 477 581 479 590 902 810 914
+142 137 145 126 190 696 1102 464 967 161 658 429 364 337 493 338 502 750 602 720
+63 60 64 55 97 267 344 103 258 65 216 130 129 121 169 120 174 233 176 214
+25 23 27 21 71 172 194 32 103 24 94 49 51 48 63 48 71 99 57 83
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+31 34 26 29 31 32 51 139 117 99 51 79 47 61 45 60 45 67 88 83
+60 65 53 57 61 68 129 230 221 143 133 164 115 134 114 135 114 160 184 182
+65 68 58 61 68 82 177 233 253 118 160 175 129 144 134 144 135 190 203 207
+83 84 75 76 89 127 252 244 303 110 223 216 174 184 188 184 190 255 253 267
+94 94 87 85 106 190 312 226 322 110 266 233 202 204 225 204 227 295 275 298
+84 82 81 75 105 267 399 193 353 92 278 204 183 175 224 175 227 308 260 299
+52 51 50 47 64 88 100 64 85 53 115 101 101 98 107 98 108 118 108 115
+20 20 19 18 26 35 37 22 29 20 41 36 36 35 39 35 39 42 38 40
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+56 62 48 54 56 58 127 563 459 373 112 248 91 163 87 157 87 192 290 267
+100 110 88 98 101 115 312 660 627 363 284 389 225 291 220 292 222 377 456 449
+136 144 122 130 142 175 520 720 792 306 450 504 338 394 358 395 361 556 601 618
+115 116 105 106 123 172 329 320 393 151 314 306 253 266 271 266 273 354 352 370
+77 77 73 71 85 105 128 111 129 87 174 167 160 160 165 160 166 181 176 181
+54 52 51 48 60 71 79 66 75 57 114 108 107 106 110 106 110 116 113 116
+30 29 29 27 34 39 41 34 38 31 61 58 58 58 60 58 60 62 60 61
+12 11 11 10 14 16 17 13 15 12 24 22 23 22 23 22 23 24 23 24
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+55 60 47 53 55 57 118 510 416 340 109 231 90 155 86 150 86 181 268 248
+86 94 76 84 88 98 232 465 443 267 228 299 188 233 185 233 186 290 344 339
+84 87 75 78 87 104 265 359 393 166 235 260 183 209 192 210 193 284 306 314
+98 100 89 91 105 149 291 283 349 130 269 262 214 226 230 226 232 306 304 319
+105 105 98 96 119 210 344 251 356 123 299 264 230 232 255 232 258 332 310 335
+94 92 90 85 114 234 331 179 297 102 269 214 199 193 229 193 231 292 256 285
+96 89 106 82 173 670 891 198 653 100 468 223 220 194 336 193 349 516 355 464
+56 52 55 48 191 521 593 62 290 55 229 97 98 96 125 96 157 246 113 194
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+29 31 24 27 29 30 62 270 220 180 49 114 40 73 37 71 37 87 133 122
+66 70 57 62 67 73 192 407 386 226 166 230 130 171 127 171 128 222 271 266
+107 112 96 101 112 135 409 572 628 241 340 384 252 297 267 297 270 424 461 474
+149 153 138 139 163 259 687 668 857 207 544 524 384 419 432 420 437 647 643 686
+139 139 133 127 163 347 624 435 650 171 489 416 345 350 399 351 403 555 511 562
+113 110 112 101 145 390 588 279 522 125 410 298 266 254 328 254 333 455 383 441
+93 87 98 80 153 534 704 172 520 95 395 207 205 183 294 183 303 432 308 392
+45 36 56 34 198 537 612 65 303 40 247 96 102 93 141 93 170 266 124 210
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+63 69 54 61 63 65 147 733 593 484 129 310 101 197 95 190 95 235 365 334
+129 139 114 124 131 143 437 982 927 527 383 546 291 396 282 398 285 525 648 636
+159 169 143 152 166 203 750 1077 1186 415 596 684 420 510 450 512 455 762 836 860
+181 185 167 169 197 327 1010 984 1279 249 742 712 491 546 566 548 574 902 896 963
+185 185 178 169 217 625 1274 837 1338 227 841 675 509 522 635 524 645 991 892 1006
+157 152 159 139 207 822 1317 545 1158 177 772 496 415 383 571 384 582 883 706 849
+108 98 119 91 197 822 1099 230 803 111 562 255 252 215 397 215 413 622 421 557
+47 38 59 35 218 601 686 69 337 42 272 101 107 98 152 97 185 292 133 229
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+25 26 22 24 25 25 27 30 29 29 47 49 47 48 47 48 47 48 49 49
+55 58 49 53 55 59 69 80 79 71 112 117 109 112 109 112 109 116 120 119
+77 81 70 73 80 90 112 125 129 101 168 173 160 164 161 164 162 176 180 181
+88 90 81 82 94 113 146 143 159 109 201 199 186 189 190 189 191 211 211 215
+89 88 83 81 99 127 161 137 163 101 206 196 186 187 193 187 194 216 210 217
+78 77 75 71 91 124 151 109 140 84 181 164 160 158 169 158 170 188 177 186
+56 55 54 51 69 96 110 70 93 58 126 110 110 107 117 107 118 129 118 125
+28 28 26 25 37 52 56 30 42 28 57 48 49 47 53 47 53 58 51 55
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+38 43 33 37 38 40 60 164 137 119 69 102 65 81 62 80 62 88 112 106
+60 64 52 56 61 67 127 234 222 146 131 164 114 134 112 134 112 159 184 182
+65 68 59 62 67 74 86 92 95 80 137 139 132 134 133 134 133 141 143 144
+83 85 77 78 89 105 131 129 142 101 187 185 174 177 178 177 178 195 195 199
+105 105 98 96 120 244 434 306 452 126 341 292 243 247 280 247 283 386 357 391
+55 54 53 50 62 73 81 68 77 59 118 112 111 110 114 110 114 120 117 120
+102 94 112 87 180 693 920 208 676 106 494 241 238 204 359 204 371 543 377 490
+64 60 63 55 206 551 626 72 310 63 256 111 113 110 147 110 180 274 134 219
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+64 70 55 61 63 66 142 744 598 495 131 318 104 202 96 195 96 239 372 340
+130 139 114 125 131 143 434 992 933 537 388 555 295 403 286 405 288 531 656 643
+160 170 144 153 167 203 747 1085 1189 423 601 693 426 519 456 521 461 769 845 869
+181 186 167 169 197 319 1003 984 1274 248 744 717 495 551 569 553 577 904 900 966
+179 179 171 163 208 579 1174 779 1236 218 792 641 489 501 603 503 613 930 840 944
+153 148 154 136 199 763 1217 512 1073 171 730 477 403 374 546 374 556 832 670 801
+108 99 117 92 193 825 1103 228 806 111 564 256 253 209 400 209 415 625 423 560
+68 63 67 58 228 619 704 75 345 66 282 116 118 115 158 115 196 302 143 239
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+60 68 51 59 59 63 122 555 449 377 122 258 104 174 96 169 96 200 298 274
+100 110 88 98 101 113 279 588 554 337 278 372 228 287 223 288 224 359 430 422
+142 152 128 137 148 185 447 613 664 296 436 482 350 395 364 396 366 520 559 570
+167 173 155 157 184 282 678 668 841 240 584 568 434 468 478 469 483 682 680 720
+164 164 158 150 195 400 705 501 736 206 579 498 418 425 478 425 483 653 605 661
+133 133 119 123 143 251 343 201 311 135 328 279 266 262 292 262 294 348 316 341
+81 82 75 75 101 162 193 102 155 83 181 150 150 145 164 145 165 188 166 180
+44 46 38 41 58 92 100 46 69 46 89 72 74 71 81 71 82 91 77 85
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+26 27 23 25 26 27 29 32 31 31 50 52 50 51 50 51 50 51 52 52
+110 121 96 107 111 124 369 843 790 462 334 476 258 348 249 350 251 455 562 551
+169 179 152 161 176 213 796 1167 1274 455 645 745 458 558 488 560 494 825 908 933
+185 190 171 173 201 320 999 985 1270 254 755 729 508 564 581 566 589 914 910 975
+185 184 176 169 215 582 1171 783 1234 226 807 658 506 519 619 520 628 943 855 958
+159 154 162 142 211 732 1152 501 1018 180 726 491 422 395 555 396 564 822 671 793
+112 102 122 95 197 772 1026 229 753 115 553 271 268 223 404 223 416 609 423 549
+72 67 71 62 232 619 703 80 347 71 292 123 125 123 169 122 207 312 155 250
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+65 73 57 63 65 68 138 744 595 501 135 325 112 209 99 202 99 244 378 345
+133 143 117 128 134 146 430 994 931 545 397 566 307 415 296 417 298 539 666 652
+164 174 147 157 171 207 745 1092 1190 433 614 708 441 534 469 536 475 781 859 882
+186 191 171 174 202 319 1002 991 1276 255 760 735 513 569 586 571 593 920 917 982
+188 188 179 172 218 616 1264 840 1333 229 854 692 526 540 650 541 660 1003 907 1020
+165 160 167 147 216 835 1333 560 1176 186 806 529 447 415 604 416 615 919 741 885
+118 109 129 100 212 919 1227 251 896 122 634 291 287 230 453 230 467 701 476 629
+79 74 77 68 261 701 796 87 390 77 327 133 135 132 187 132 230 349 170 278
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+28 29 24 26 27 28 31 34 33 33 53 55 53 54 52 54 52 54 55 55
+59 63 52 57 60 64 75 88 87 78 121 127 118 122 118 122 118 126 130 130
+87 91 78 82 91 108 219 293 314 157 223 244 187 206 193 207 194 260 277 282
+103 105 94 95 111 159 369 366 457 140 317 310 239 257 262 257 264 369 368 389
+129 128 121 117 147 339 645 444 678 154 479 402 323 330 382 331 387 551 505 559
+100 98 97 89 124 350 533 249 473 109 364 262 233 221 290 221 294 406 340 393
+110 102 119 94 191 769 1021 223 748 113 547 266 263 213 399 213 410 603 417 543
+75 70 75 65 243 642 728 84 359 74 308 129 131 128 181 127 220 328 165 264
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+33 37 28 31 33 35 51 151 125 111 55 87 51 67 48 66 48 73 96 90
+94 103 83 92 95 106 237 490 460 291 250 327 211 259 206 259 207 314 373 366
+81 85 72 76 84 100 206 276 296 148 206 225 171 190 177 190 178 240 257 261
+102 104 93 95 110 151 296 294 358 137 282 277 227 239 243 240 244 320 319 335
+104 103 96 94 117 204 336 248 350 122 297 263 229 232 254 232 256 329 309 333
+94 92 90 84 114 233 330 180 297 101 271 216 201 195 230 195 233 293 258 287
+75 72 77 66 113 299 383 122 289 77 256 162 162 145 206 145 210 274 212 254
+42 38 46 35 120 288 325 53 171 40 164 80 84 79 112 78 126 173 102 145
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+44 50 38 43 44 46 76 312 252 219 81 156 73 111 66 108 66 123 176 163
+75 82 66 72 76 84 176 356 334 215 185 241 159 192 155 193 156 231 273 268
+90 95 81 85 94 111 224 299 319 163 231 253 195 215 201 215 202 268 286 291
+91 92 82 83 97 134 269 267 326 122 249 244 198 209 212 210 214 283 283 297
+108 107 101 98 123 244 434 309 454 129 350 301 253 257 288 257 291 394 366 400
+86 85 82 77 105 218 310 168 279 93 250 198 183 178 212 178 214 271 238 265
+63 61 61 56 87 194 243 91 188 64 179 124 124 114 150 114 152 190 153 178
+35 33 37 30 90 207 232 43 125 34 124 65 68 64 88 63 97 130 81 110
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+21 22 19 20 22 22 23 24 24 24 41 41 41 41 40 41 40 41 42 41
+42 43 37 40 42 44 48 51 50 48 82 83 81 82 81 82 81 83 84 84
+59 61 53 56 61 65 73 76 78 69 120 122 117 119 118 119 118 123 124 125
+69 70 64 65 73 81 93 92 97 80 146 145 140 141 142 141 142 150 150 151
+87 87 82 80 97 121 149 129 151 100 201 193 184 185 190 185 191 210 204 210
+53 52 50 48 58 66 71 62 68 56 109 105 104 103 106 103 106 111 108 110
+59 57 57 52 72 96 108 72 92 60 131 116 116 114 123 113 123 134 124 130
+30 29 29 27 39 52 55 33 43 30 64 55 56 54 60 54 60 64 58 62
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+17 17 15 16 17 17 18 18 18 18 32 32 32 32 32 32 32 32 32 32
+41 42 37 39 41 43 46 49 49 47 80 81 79 80 79 80 79 81 82 82
+53 55 48 50 55 58 63 66 66 61 107 108 104 106 105 106 105 109 110 110
+60 61 55 56 63 68 75 74 77 67 122 122 119 119 120 119 120 124 124 125
+43 43 39 39 45 47 49 47 49 45 84 83 82 82 83 82 83 85 84 85
+54 53 51 49 60 68 74 64 71 57 113 109 108 107 110 107 110 115 112 115
+36 35 34 32 41 46 48 40 44 37 73 70 70 69 72 69 72 74 72 73
+26 25 26 22 56 118 131 31 74 26 76 44 46 43 58 43 62 79 53 69
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+60 67 52 58 59 62 105 530 421 368 121 256 111 177 93 172 93 197 291 267
+127 140 111 124 128 142 425 1023 948 569 405 586 320 430 306 432 309 553 688 671
+170 180 152 162 177 212 724 1079 1164 445 628 726 464 556 489 558 494 791 871 891
+193 198 177 180 209 315 981 982 1253 264 777 756 538 595 608 597 615 933 933 995
+186 186 177 170 215 540 1070 730 1130 226 780 649 511 523 612 524 620 903 825 917
+144 140 143 128 184 542 829 383 735 160 577 416 369 350 459 351 466 643 540 623
+97 92 101 85 153 474 615 167 457 100 383 224 225 192 301 193 306 415 309 381
+49 43 57 40 157 382 431 65 223 46 214 96 102 94 145 93 162 225 129 187
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+15 16 14 14 16 16 16 16 16 16 29 29 29 29 29 29 29 29 29 29
+36 37 33 34 37 38 40 42 42 41 70 71 70 70 69 70 69 71 72 72
+27 27 24 25 27 27 28 28 28 28 50 50 50 50 50 50 50 50 50 50
+63 64 58 59 66 72 80 79 82 71 130 130 126 127 127 127 127 133 133 134
+51 50 47 47 54 57 61 58 60 54 101 100 98 98 99 98 99 102 101 102
+36 35 33 33 38 40 41 38 40 37 69 68 68 68 68 68 68 70 69 69
+66 65 65 59 83 114 130 83 110 68 151 132 132 129 141 129 141 155 142 150
+36 35 35 32 47 65 69 39 52 36 76 65 66 64 71 64 72 77 69 74
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+40 44 35 39 40 42 47 58 55 54 79 84 79 81 78 81 78 82 85 85
+68 73 61 66 69 74 89 110 107 94 143 151 139 144 138 144 138 149 156 155
+68 70 61 64 70 76 87 93 94 82 140 143 136 139 137 139 137 145 147 147
+58 59 53 54 61 65 71 70 72 64 117 117 114 115 115 115 115 119 119 120
+59 59 55 54 63 69 74 70 74 64 120 118 116 116 117 116 118 122 121 122
+53 52 50 48 58 65 70 62 67 56 109 105 104 104 106 104 106 111 108 110
+41 39 39 36 46 53 56 46 51 42 84 79 79 78 81 78 82 85 82 84
+24 23 23 21 29 34 35 26 30 24 49 45 46 45 47 45 48 50 47 48
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+21 21 18 19 21 21 22 23 22 23 39 39 39 39 39 39 39 39 39 39
+44 46 39 42 45 47 50 54 53 51 86 88 86 87 85 87 85 88 90 89
+52 53 47 49 53 56 60 62 63 59 103 104 101 102 101 102 101 104 105 105
+57 58 52 53 60 64 69 68 70 63 115 115 112 113 113 113 113 117 117 118
+47 47 43 43 50 52 55 53 54 50 93 92 91 91 92 91 92 94 93 94
+40 40 37 37 43 46 47 44 46 42 79 78 77 77 78 77 78 80 79 80
+18 17 16 16 18 19 19 18 18 18 33 33 33 33 33 33 33 33 33 33
+13 13 12 12 14 15 15 14 14 13 26 25 25 25 25 25 25 26 25 25
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 1 1 1 1 1 1 25 16 21 1 8 1 3 1 2 1 2 8 7
+83 94 72 82 82 86 142 818 643 572 180 395 167 272 132 263 132 299 450 410
+142 159 124 141 143 160 455 1106 1019 627 460 658 371 490 354 493 357 618 766 746
+190 202 170 183 197 237 772 1158 1241 493 701 808 529 628 554 630 560 874 961 981
+210 215 193 196 227 333 1027 1036 1314 286 842 823 595 654 666 656 674 1004 1006 1070
+209 209 199 191 241 609 1211 827 1281 254 898 750 592 607 707 608 716 1038 950 1054
+183 178 184 163 236 820 1284 558 1134 205 847 586 510 479 657 480 668 954 786 921
+138 128 150 118 242 972 1280 268 931 142 716 361 363 285 535 287 546 785 551 709
+102 95 105 88 312 786 882 113 433 100 414 171 174 170 265 170 308 435 238 357
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+2 2 2 2 2 2 2 30 20 25 2 10 2 5 2 3 2 4 11 8
+81 92 70 80 81 84 138 826 647 579 177 397 165 272 129 263 129 299 451 411
+152 165 134 147 153 166 462 1135 1044 645 473 677 383 506 365 508 368 635 787 766
+192 205 172 185 200 240 775 1164 1247 499 709 818 538 637 563 640 568 884 972 991
+208 213 191 194 225 328 1023 1034 1311 283 840 822 593 653 664 655 672 1002 1005 1068
+217 217 206 198 249 646 1302 885 1378 262 957 796 625 641 750 642 760 1109 1014 1126
+190 184 190 169 244 879 1383 593 1220 212 904 620 537 504 698 505 709 1019 837 984
+142 131 154 121 248 989 1300 271 944 146 734 373 375 295 550 298 561 803 566 726
+75 63 94 59 312 812 914 101 443 68 417 146 156 142 263 142 303 440 228 355
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+9 11 7 9 9 9 10 67 45 57 12 28 12 18 11 15 11 16 30 25
+76 89 65 76 74 78 127 636 501 453 165 329 157 236 129 230 129 255 370 340
+143 160 125 142 144 160 432 1039 955 599 454 639 373 484 357 486 359 600 739 720
+194 206 174 186 201 239 814 1237 1325 520 737 855 553 660 579 663 585 924 1019 1040
+221 227 203 207 239 348 1110 1124 1427 300 911 892 641 707 719 709 727 1089 1092 1161
+213 213 203 195 245 614 1221 835 1291 258 916 767 608 623 724 624 733 1057 969 1073
+173 168 176 154 228 585 869 425 773 195 667 503 456 437 548 438 554 734 628 713
+131 125 130 115 181 412 512 185 393 134 398 282 282 259 338 259 342 421 343 395
+60 61 54 55 83 129 139 64 96 62 125 100 103 98 114 98 115 128 108 120
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+9 11 7 8 9 9 10 80 53 68 12 31 12 19 11 16 11 16 34 28
+91 104 79 91 90 94 144 778 610 554 199 403 190 289 155 280 156 311 453 416
+147 168 129 148 147 167 377 832 767 504 435 577 375 459 363 460 365 546 653 638
+193 210 174 189 202 252 591 841 893 425 625 698 514 579 530 580 533 740 799 812
+219 228 204 207 242 353 795 804 987 324 764 752 596 637 644 638 649 877 879 923
+206 206 200 189 245 496 879 633 922 260 760 661 558 568 633 568 639 853 794 864
+187 180 191 166 247 665 997 477 884 210 750 559 504 482 611 482 619 828 705 804
+158 149 157 138 217 476 587 221 453 161 471 339 340 314 402 314 407 496 408 467
+73 67 75 62 128 229 250 84 155 71 198 137 143 135 168 135 174 202 158 184
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+8 9 6 7 7 7 9 54 36 46 10 23 10 15 10 13 10 13 25 21
+56 64 47 54 55 57 85 367 291 267 109 200 105 149 89 145 90 158 223 206
+87 96 77 85 88 97 192 400 370 251 222 287 195 233 190 234 190 272 321 314
+114 120 102 108 118 140 316 448 475 230 329 367 272 305 280 306 282 388 419 425
+141 145 129 132 152 214 516 522 646 195 474 466 363 390 395 391 398 548 550 578
+167 167 158 153 192 431 816 570 860 202 652 556 455 465 529 465 535 743 686 753
+181 176 181 162 231 766 1187 522 1048 201 811 572 503 475 638 475 648 908 755 878
+139 129 150 119 238 861 1121 248 815 142 669 362 365 296 513 299 522 727 524 660
+86 72 111 68 360 922 1034 114 495 77 484 167 181 163 311 163 355 509 268 412
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+24 25 21 23 24 25 26 27 27 27 45 46 45 46 45 46 45 46 47 46
+26 27 24 25 27 27 28 28 28 28 50 50 50 50 50 50 50 50 50 50
+34 34 31 32 35 36 36 36 36 36 65 65 64 64 64 64 64 65 65 65
+63 64 58 59 66 71 77 76 79 70 128 128 125 125 126 125 126 130 130 131
+62 62 57 57 66 72 77 73 77 67 126 124 122 122 123 122 123 128 127 128
+51 50 48 46 55 60 63 57 61 53 103 100 99 99 101 99 101 104 102 103
+57 55 56 51 68 84 91 67 81 58 124 114 114 112 119 112 119 126 119 124
+28 27 28 25 34 40 41 31 36 28 58 54 54 53 56 53 57 59 55 57
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+2 2 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
+25 25 22 23 25 25 26 28 27 27 46 47 46 47 46 47 46 47 48 47
+72 77 63 70 72 77 92 112 109 98 149 158 146 151 145 151 145 156 162 161
+128 136 114 122 132 158 344 485 513 256 371 412 311 346 319 347 321 434 467 474
+97 99 88 89 104 141 280 283 341 132 273 269 220 233 235 233 236 309 310 323
+101 101 94 92 115 200 329 245 343 120 298 265 231 234 256 234 258 330 310 333
+94 92 90 84 115 235 332 180 297 102 279 223 208 201 238 201 240 301 265 294
+74 71 73 65 104 226 279 104 213 76 215 153 153 141 183 141 185 227 185 213
+36 35 36 32 46 58 61 40 49 36 77 68 70 68 74 68 74 78 72 76
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+9 12 8 9 9 9 11 82 53 70 12 34 13 21 12 18 12 17 36 30
+51 59 43 50 51 52 73 269 215 201 98 163 96 127 85 125 85 132 178 166
+79 87 69 76 80 87 150 284 264 190 183 225 166 190 162 191 163 215 248 243
+104 110 94 100 108 123 163 191 197 146 239 248 225 233 226 233 227 254 262 263
+180 186 166 169 195 277 714 726 902 252 656 646 497 536 542 537 547 762 765 806
+222 223 215 204 261 587 1103 773 1162 277 907 777 640 653 740 653 748 1029 953 1044
+183 178 182 164 231 792 1231 531 1083 202 841 591 520 490 661 490 671 942 781 910
+143 133 154 123 237 733 939 237 686 146 614 365 369 314 488 316 496 661 496 606
+87 77 105 71 257 580 642 111 330 81 367 174 189 170 271 169 292 381 239 324
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+8 10 6 8 8 8 9 41 28 36 11 21 11 15 11 14 11 13 22 19
+51 58 43 49 51 53 75 344 270 253 98 186 96 138 80 134 80 145 206 189
+101 111 88 98 101 111 229 503 462 313 271 357 238 288 230 288 231 337 401 391
+78 81 70 74 80 88 102 110 112 96 165 168 159 163 160 162 160 170 173 174
+74 75 65 67 78 109 290 295 368 99 235 231 171 187 189 187 191 279 280 297
+81 81 76 74 88 101 116 105 116 90 176 171 166 166 170 166 170 180 177 181
+65 63 61 58 71 81 89 76 85 68 136 130 129 128 132 128 132 138 134 137
+50 48 48 45 57 66 70 57 64 51 104 98 98 97 101 97 101 106 101 104
+24 23 23 21 28 31 31 26 28 24 48 46 46 45 47 45 47 49 47 48
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+5 5 4 5 5 5 5 5 5 5 9 9 9 9 9 9 9 9 9 9
+38 41 34 37 38 39 43 49 47 47 74 77 74 75 73 75 73 76 78 77
+73 78 64 71 73 78 92 112 109 98 151 160 148 153 147 153 148 158 164 163
+55 56 50 52 56 59 63 65 65 62 109 110 107 108 107 108 107 110 111 111
+81 82 74 75 85 94 108 107 113 93 171 171 165 166 167 166 167 176 176 178
+80 80 75 74 87 100 113 104 114 89 174 169 164 165 168 165 168 178 175 178
+60 59 57 55 66 74 79 70 76 63 124 120 119 118 121 118 121 126 123 125
+49 47 47 43 55 63 66 54 61 49 100 95 95 94 97 94 97 101 97 100
+31 30 31 28 38 44 45 34 39 31 65 59 60 59 62 59 63 65 61 63
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+9 9 8 8 9 9 9 9 9 9 16 16 16 16 16 16 16 16 16 16
+63 74 54 63 62 65 89 319 254 242 130 207 129 165 115 162 115 170 224 209
+116 130 102 115 117 128 260 568 520 358 320 416 283 339 273 340 274 392 465 454
+191 203 171 183 197 233 666 1009 1068 465 672 770 533 618 551 620 556 818 896 910
+235 241 215 219 252 350 1055 1079 1354 314 935 921 686 748 757 750 765 1100 1106 1168
+235 235 223 215 268 641 1252 862 1320 281 997 846 686 701 803 702 813 1139 1050 1155
+208 202 208 186 264 869 1336 581 1174 230 947 676 601 568 753 568 764 1054 880 1019
+160 149 175 137 280 992 1278 268 918 164 789 435 443 362 613 365 624 854 620 776
+102 86 138 81 412 1009 1120 133 526 92 562 196 226 192 383 192 424 586 324 480
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+7 7 6 6 7 7 7 7 7 7 12 12 12 12 12 12 12 12 12 12
+45 48 39 44 44 46 50 61 57 58 87 92 87 89 86 89 86 89 93 92
+77 85 67 75 77 84 146 282 260 189 178 222 162 187 158 187 158 211 244 239
+151 161 135 145 156 187 428 619 652 319 468 524 390 438 400 439 402 551 595 603
+206 214 191 195 225 316 673 685 832 297 687 679 551 585 589 586 593 779 782 817
+173 172 157 158 184 281 431 331 447 190 449 412 374 377 401 377 403 485 462 489
+135 135 137 132 142 192 232 168 218 137 486 462 456 453 469 453 470 495 480 492
+126 126 116 115 160 274 326 155 256 128 302 243 244 234 271 233 273 314 272 300
+106 92 134 86 328 735 810 135 406 97 468 212 238 208 349 207 373 485 303 411
+35 26 43 25 128 221 213 36 63 26 115 64 69 64 84 64 93 113 69 84
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+7 7 6 6 7 7 7 7 7 7 12 12 12 12 12 12 12 12 12 12
+41 44 36 40 41 42 46 53 51 51 80 83 80 81 79 81 79 82 84 84
+75 84 66 73 76 83 143 277 255 186 175 218 159 183 155 184 155 207 239 234
+98 104 89 95 101 114 143 163 167 132 220 227 210 216 211 216 211 231 237 238
+110 113 102 104 118 141 182 183 201 139 260 259 241 245 246 245 246 273 273 278
+159 159 151 146 183 358 630 454 660 192 560 491 419 425 471 426 476 625 584 633
+86 84 82 76 106 218 306 164 273 93 255 203 189 183 217 183 220 276 242 269
+112 106 117 98 176 459 574 167 422 114 413 268 271 239 341 241 345 440 343 407
+65 59 74 55 151 303 330 78 179 62 219 122 134 120 176 120 184 226 157 197
+27 18 37 18 104 180 173 28 54 18 97 51 58 51 73 51 79 96 58 72
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+5 7 4 5 5 5 6 60 38 52 6 24 7 14 6 12 6 11 25 20
+54 62 46 52 53 55 75 360 279 268 106 199 106 150 88 147 88 155 220 202
+79 87 69 77 80 87 168 367 335 234 201 263 178 214 172 214 173 247 294 286
+99 105 90 95 102 115 144 164 168 133 222 229 212 218 213 218 213 233 239 240
+111 114 102 104 118 142 182 183 201 139 261 260 242 246 247 246 248 274 274 279
+112 112 106 103 125 161 203 174 206 130 271 258 245 246 254 246 255 283 275 284
+166 162 166 149 212 583 869 402 765 183 670 500 455 434 549 435 556 736 627 713
+173 160 192 148 303 995 1269 279 910 176 822 473 483 403 650 407 661 885 654 807
+106 90 143 84 371 851 936 137 451 95 519 210 245 205 378 205 407 538 322 450
+36 26 47 25 159 282 270 37 71 25 136 67 74 67 95 67 107 133 74 94
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+20 27 16 21 19 19 22 231 145 202 24 92 26 56 23 45 23 41 98 79
+103 118 88 103 101 105 140 818 627 605 241 462 241 346 195 338 195 356 510 467
+169 190 147 168 169 186 455 1153 1041 695 553 769 474 600 451 602 454 713 874 848
+221 234 197 212 228 266 807 1251 1320 566 828 954 654 763 676 765 681 1011 1112 1128
+247 253 226 231 265 361 1092 1121 1403 327 994 981 737 802 810 804 818 1165 1171 1236
+249 248 235 227 282 669 1301 894 1371 294 1061 904 739 754 861 755 870 1208 1115 1224
+221 215 220 197 278 914 1396 601 1221 242 1013 727 651 616 811 616 823 1124 940 1086
+171 159 188 147 302 1049 1340 271 953 174 848 474 486 400 664 404 676 914 667 831
+107 92 148 86 417 987 1086 136 503 97 572 203 247 199 406 199 440 593 338 489
+89 181 23 146 161 308 293 83 44 196 112 117 91 115 78 115 95 110 92 81
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+24 33 20 25 24 24 26 292 181 255 28 115 31 69 28 56 28 50 123 99
+105 120 90 104 103 107 141 896 683 662 251 497 252 369 201 360 200 379 550 502
+134 147 118 130 135 145 362 950 856 568 437 617 372 476 352 478 354 570 703 681
+116 121 102 108 119 137 419 653 690 294 413 479 323 379 334 380 337 508 561 569
+192 196 175 178 205 279 819 840 1050 255 749 739 559 607 613 608 618 876 881 928
+222 222 210 203 252 578 1107 764 1164 263 918 786 648 660 750 661 758 1041 963 1055
+87 85 84 78 100 123 140 112 132 93 196 184 181 179 188 179 188 201 193 200
+118 111 124 103 186 476 592 172 433 120 435 284 289 256 360 257 365 461 361 427
+60 56 69 51 144 290 315 71 166 58 206 110 123 108 164 108 172 211 145 184
+22 18 27 17 76 130 124 22 40 18 73 40 45 40 56 40 61 72 45 55
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+9 9 8 9 9 9 9 10 9 10 17 17 17 17 17 17 17 17 17 17
+46 49 40 44 45 46 51 60 57 57 88 93 88 90 87 90 87 90 94 93
+91 100 81 90 91 99 122 160 153 135 197 212 191 200 190 200 190 208 219 217
+62 63 56 58 63 66 71 73 74 69 122 124 120 122 121 121 121 124 125 125
+124 127 114 116 132 162 218 220 245 159 301 300 276 282 283 282 284 319 320 326
+70 70 65 64 74 81 87 82 87 75 143 141 138 138 140 138 140 145 144 145
+107 105 105 97 127 173 209 151 193 115 261 237 231 228 244 228 245 270 254 267
+88 85 88 78 112 156 176 109 146 90 207 180 181 176 194 176 195 212 194 206
+30 28 29 26 34 38 39 31 35 29 60 56 57 56 58 56 58 60 57 59
+9 8 9 8 11 13 13 9 11 9 18 16 17 16 18 16 18 18 17 18
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+3 3 2 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5
+26 27 23 25 26 27 28 29 28 29 49 50 49 50 49 50 49 50 50 50
+70 75 62 68 71 75 85 99 96 90 144 150 141 145 141 145 141 148 153 152
+99 104 89 95 102 113 139 156 159 130 218 225 209 215 210 215 211 228 234 234
+106 109 98 100 113 132 163 163 176 130 244 243 229 233 233 233 233 254 254 258
+93 93 87 85 102 119 137 123 137 104 206 200 194 194 198 194 199 212 208 212
+108 106 106 98 129 175 211 152 194 116 264 239 233 231 247 230 248 273 257 270
+58 55 56 51 66 76 81 65 74 58 121 113 114 112 117 112 117 122 117 120
+34 32 33 30 40 46 47 36 41 33 69 64 65 64 67 64 68 70 66 68
+11 10 11 9 14 16 16 11 13 10 22 19 20 19 21 19 21 21 20 21
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+7 7 6 7 7 7 7 7 7 7 13 13 13 13 13 13 13 13 13 13
+32 33 29 31 32 33 34 37 36 36 61 62 61 62 61 62 61 62 63 62
+73 81 63 71 73 80 137 272 248 184 169 213 154 179 150 179 150 200 233 228
+223 242 200 218 231 278 682 1020 1069 514 772 871 641 725 657 726 661 912 992 1003
+245 254 227 231 267 370 908 931 1144 345 912 902 715 765 770 766 776 1045 1050 1100
+263 263 249 241 299 641 1186 828 1242 311 1036 898 755 767 861 767 869 1163 1081 1177
+242 234 242 216 305 917 1372 604 1197 265 1054 776 706 671 860 671 871 1158 980 1120
+190 176 211 163 339 1118 1413 285 996 192 929 534 550 460 739 464 750 997 736 908
+121 103 174 97 466 1070 1166 151 529 109 641 229 295 224 472 224 502 662 386 548
+75 92 49 84 255 446 422 76 73 97 190 115 105 114 122 114 151 185 106 121
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+29 43 25 33 30 30 33 356 218 315 36 148 43 94 35 78 35 66 157 126
+72 85 61 72 71 73 95 430 331 329 156 266 157 209 132 207 132 211 289 267
+166 186 145 165 166 181 422 1091 978 669 545 753 475 594 451 596 454 695 849 822
+235 250 210 226 242 281 792 1227 1288 578 863 987 698 804 717 806 723 1038 1138 1152
+263 269 241 246 281 374 1066 1095 1361 344 1024 1013 781 843 850 845 857 1187 1194 1255
+264 263 249 241 298 671 1267 874 1328 310 1088 937 781 795 898 795 907 1227 1137 1242
+236 229 235 210 295 910 1365 592 1188 257 1043 765 695 660 850 660 861 1147 969 1109
+185 172 206 159 328 1052 1324 274 933 187 885 517 533 449 708 452 719 948 704 864
+121 103 172 97 449 1012 1100 150 501 108 619 232 296 224 463 224 489 638 379 531
+73 81 56 74 261 452 427 73 77 84 200 114 107 114 129 114 159 194 108 127
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+39 61 34 48 40 40 44 573 347 508 50 236 62 148 49 122 49 99 250 200
+130 150 112 131 127 132 162 1067 805 802 330 624 334 473 264 467 263 477 683 624
+191 214 167 190 191 208 496 1308 1170 800 651 903 566 711 537 714 540 832 1018 986
+245 260 220 235 253 292 842 1313 1378 613 920 1055 743 857 763 860 769 1109 1216 1231
+278 285 255 260 297 393 1140 1172 1459 361 1099 1087 837 904 912 906 919 1274 1282 1347
+279 279 264 255 315 716 1357 933 1422 326 1167 1005 837 852 963 852 973 1317 1220 1332
+249 241 248 222 311 978 1467 628 1274 271 1122 820 746 707 913 707 925 1233 1040 1192
+195 181 218 168 350 1136 1429 286 1001 197 954 553 572 481 762 484 774 1021 756 930
+128 109 187 102 489 1103 1196 158 537 115 673 247 321 237 504 237 531 693 409 575
+83 97 58 88 297 516 486 83 82 101 224 127 117 126 142 126 178 218 119 140
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+30 41 25 33 29 30 34 218 139 196 39 105 45 75 38 67 38 57 110 92
+55 60 48 54 54 56 63 78 73 73 109 116 109 112 107 112 107 112 117 116
+68 72 60 65 68 71 79 90 88 83 136 141 135 137 134 137 134 140 144 143
+90 94 82 87 93 101 118 128 130 112 193 197 187 191 187 191 188 199 203 203
+100 102 92 94 106 120 142 142 151 119 222 221 211 214 214 214 214 229 230 232
+75 75 70 69 80 88 95 89 94 81 155 152 150 150 152 150 152 157 156 157
+69 68 65 63 76 84 90 79 86 72 143 138 137 136 140 136 140 145 142 144
+62 59 60 55 71 82 87 69 79 63 130 122 122 121 126 121 126 131 126 130
+39 37 39 34 47 54 55 42 48 38 81 74 76 74 79 74 79 81 77 79
+17 16 17 15 23 29 28 17 21 16 35 30 31 30 33 30 34 35 31 33
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+40 61 34 49 39 39 44 481 292 430 53 212 67 141 52 120 52 96 223 181
+110 133 94 113 107 112 146 837 632 636 281 508 284 391 228 389 228 392 553 507
+177 199 155 177 177 193 428 1096 980 684 579 787 511 630 486 632 488 727 881 854
+235 250 211 226 243 279 772 1198 1255 572 864 987 706 809 723 811 729 1034 1132 1145
+266 272 244 248 284 374 1042 1071 1328 345 1028 1017 793 853 860 855 866 1186 1193 1251
+281 281 265 257 316 711 1336 918 1397 327 1168 1008 846 859 969 859 978 1314 1219 1329
+251 243 249 224 312 968 1443 616 1250 272 1121 824 753 714 918 714 929 1230 1039 1188
+198 184 222 170 356 1127 1409 282 982 199 957 562 582 494 770 496 781 1022 760 931
+131 112 193 105 494 1095 1181 160 525 117 679 257 337 241 518 240 540 697 417 580
+76 76 70 70 337 586 549 76 92 77 255 121 119 121 158 121 200 247 119 153
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+22 23 19 21 21 21 23 25 24 25 40 42 41 41 40 41 40 41 42 41
+55 59 48 54 54 56 61 75 70 71 107 113 107 110 106 110 106 110 115 113
+65 68 58 63 66 68 75 83 82 78 130 134 128 131 128 131 128 133 136 135
+74 76 66 70 75 80 87 91 92 85 148 151 146 148 146 147 146 151 153 153
+172 174 157 160 181 231 362 367 427 224 446 444 392 406 407 406 409 484 485 500
+176 175 163 161 192 288 425 328 437 198 471 433 397 400 424 400 427 505 482 508
+174 169 175 156 222 557 801 375 697 189 673 518 481 461 567 461 573 730 629 708
+192 178 215 165 342 1047 1303 270 907 193 901 537 557 477 729 478 740 960 719 876
+134 114 199 108 501 1102 1185 162 523 120 689 266 349 246 531 246 550 707 424 589
+77 75 74 69 360 625 583 77 96 76 271 123 122 123 167 123 213 262 122 160
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+43 67 36 54 42 42 48 503 304 453 58 229 78 156 57 136 57 105 240 195
+123 150 105 128 119 125 163 941 707 719 326 581 329 451 263 450 263 449 632 578
+182 210 158 185 181 200 388 894 802 584 552 714 501 593 482 594 484 666 787 765
+170 180 152 164 175 203 398 568 590 324 497 548 434 475 441 476 443 567 607 612
+169 173 155 158 181 239 433 441 524 230 497 493 420 439 442 440 444 549 551 571
+174 174 166 159 200 381 649 465 674 208 619 547 476 482 531 482 535 684 641 691
+206 199 210 183 267 629 891 431 777 225 779 608 569 547 662 547 669 840 730 816
+132 125 143 115 218 572 702 180 497 133 522 336 346 306 434 306 439 551 428 508
+83 75 100 70 193 360 383 96 201 78 279 160 184 154 235 154 239 284 203 250
+38 30 50 28 169 286 267 38 67 30 147 66 77 68 105 67 120 143 75 99
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+15 15 13 14 15 15 15 16 16 16 28 28 28 28 28 28 28 28 28 28
+55 60 48 54 54 56 62 74 70 71 108 114 108 111 107 111 107 111 116 114
+103 116 90 103 103 112 180 349 317 245 254 309 237 268 230 268 231 292 334 327
+240 254 214 230 247 284 695 1055 1101 535 821 926 688 775 702 777 707 964 1048 1058
+289 296 265 270 308 398 1009 1035 1272 371 1048 1038 831 886 892 888 898 1194 1200 1254
+302 301 285 276 338 709 1284 891 1336 349 1178 1028 879 890 993 890 1002 1314 1224 1327
+267 258 266 238 332 948 1386 606 1198 288 1130 848 784 746 939 746 950 1230 1049 1189
+211 196 239 181 382 1163 1440 292 995 212 1008 603 627 539 819 539 830 1072 803 978
+142 121 215 114 528 1140 1220 171 533 127 726 290 384 264 571 264 584 743 452 621
+86 84 83 78 411 708 657 86 105 86 311 137 136 137 191 137 245 299 136 181
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+52 84 44 68 50 51 57 616 369 558 72 288 103 201 71 178 71 133 301 246
+147 171 126 149 143 149 181 1106 827 851 393 694 396 541 312 543 311 536 751 688
+208 234 181 208 207 225 499 1326 1177 833 712 970 632 779 600 781 603 892 1083 1048
+265 281 237 254 273 311 845 1318 1378 637 984 1121 812 926 831 929 836 1170 1279 1291
+302 308 276 281 321 414 1142 1173 1452 383 1165 1153 910 975 982 977 989 1336 1343 1407
+303 302 285 277 339 739 1360 933 1414 349 1233 1071 910 923 1034 922 1044 1379 1281 1392
+268 260 266 239 331 998 1468 623 1263 289 1181 878 810 769 977 769 988 1288 1093 1244
+194 180 218 167 344 990 1218 265 844 194 875 537 558 485 718 485 728 928 704 849
+132 114 195 107 459 967 1031 157 457 119 634 271 353 247 507 246 516 648 404 545
+80 75 82 70 398 683 632 80 103 76 305 130 132 130 188 130 241 293 131 177
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+51 80 43 65 50 50 57 503 304 458 75 250 102 181 74 164 73 125 260 216
+143 167 122 146 139 144 176 1015 759 785 377 652 382 513 304 515 304 507 704 646
+199 224 174 199 199 216 464 1219 1081 772 671 907 599 733 570 735 572 835 1009 977
+253 268 226 243 260 297 781 1213 1266 595 922 1047 766 870 783 872 788 1091 1191 1202
+287 293 263 268 305 395 1056 1084 1339 366 1092 1081 859 918 925 920 931 1248 1255 1312
+289 288 272 264 323 690 1255 864 1303 332 1154 1005 859 870 972 870 981 1287 1197 1299
+258 250 256 230 319 931 1358 582 1168 278 1110 831 770 732 923 732 934 1208 1028 1167
+207 192 235 178 368 1023 1252 284 868 207 920 574 597 522 760 522 770 974 744 893
+149 125 220 118 495 1015 1078 178 488 131 691 314 399 287 560 286 569 705 451 597
+65 46 93 44 414 718 660 62 118 45 323 112 131 115 205 115 254 310 127 189
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+18 18 16 17 17 18 18 19 19 19 33 33 33 33 33 33 33 33 33 33
+37 38 33 35 37 38 39 42 41 41 70 71 70 71 70 71 70 71 72 71
+54 56 48 51 54 56 59 62 61 61 104 106 104 105 103 105 103 106 107 107
+70 72 63 66 72 75 80 83 83 79 139 140 137 138 137 138 137 141 142 142
+107 109 98 100 113 128 150 149 158 126 237 236 226 228 229 228 229 244 244 247
+130 129 124 119 146 188 236 200 238 150 322 306 292 293 303 293 304 336 327 337
+124 120 122 111 149 205 245 173 224 132 309 279 273 269 289 269 290 320 300 315
+155 148 163 137 233 482 571 199 416 156 497 360 370 341 433 341 437 518 426 485
+90 81 110 75 209 381 400 102 208 84 301 177 204 169 257 169 261 306 221 269
+41 35 50 32 149 241 223 40 63 35 139 71 81 72 106 72 118 135 78 100
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+57 94 49 76 55 56 63 605 361 554 86 301 122 220 80 198 80 148 312 258
+149 175 128 153 145 151 183 1045 778 813 400 684 406 541 325 544 325 533 736 676
+209 235 182 209 208 226 473 1247 1104 796 704 947 633 769 602 772 604 871 1050 1017
+251 265 224 240 258 294 738 1139 1186 572 893 1010 750 846 765 848 769 1049 1142 1152
+266 272 243 248 283 365 911 933 1145 341 970 961 775 825 830 827 836 1100 1106 1154
+269 268 254 246 302 613 1081 751 1118 310 1026 901 779 788 875 788 882 1137 1061 1147
+201 194 203 179 256 663 946 426 813 217 813 624 584 558 687 558 694 879 756 850
+145 136 159 125 239 552 662 195 469 145 535 363 376 339 456 339 461 561 446 520
+113 101 151 94 314 609 641 129 304 104 444 230 279 214 370 214 375 451 306 389
+64 47 92 45 397 679 620 61 114 46 313 110 130 112 203 112 249 299 124 186
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+25 27 22 24 25 25 26 29 28 29 47 49 47 48 47 48 47 48 49 48
+91 111 78 95 89 92 117 314 249 259 197 267 199 231 182 232 182 229 280 264
+152 173 133 153 152 165 305 721 642 479 457 590 419 493 402 495 404 548 647 628
+240 255 215 231 247 282 681 1042 1084 534 836 942 707 794 720 796 725 977 1061 1070
+305 311 279 284 324 409 954 976 1188 384 1050 1040 854 904 909 905 915 1180 1186 1234
+321 320 302 293 358 673 1140 807 1175 366 1131 1004 882 891 978 890 986 1242 1166 1252
+270 259 277 239 351 909 1291 581 1109 294 1126 864 811 774 953 774 962 1215 1046 1175
+192 183 201 169 287 574 675 244 493 193 605 445 457 423 531 423 536 628 521 590
+136 118 178 110 339 620 649 158 332 122 495 286 334 272 422 271 428 501 359 440
+30 28 31 26 43 54 51 30 36 29 61 52 55 52 59 52 59 61 54 57
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+26 27 23 25 25 26 27 30 28 30 48 50 48 49 48 49 48 49 50 49
+94 115 80 98 92 95 121 482 366 385 225 348 229 287 196 287 196 282 371 344
+205 230 179 204 204 221 457 1228 1083 786 699 940 630 765 599 768 601 863 1041 1007
+286 301 255 273 294 331 851 1326 1380 660 1046 1184 879 992 895 994 901 1229 1339 1350
+324 330 296 302 343 435 1144 1172 1445 403 1225 1212 975 1039 1046 1041 1053 1391 1398 1460
+314 313 295 287 350 718 1272 875 1313 357 1218 1068 925 935 1039 935 1047 1348 1257 1359
+278 270 275 249 341 1010 1460 608 1245 297 1218 913 852 809 1018 809 1029 1321 1124 1274
+209 194 239 180 376 1024 1239 278 845 208 930 583 611 534 773 534 783 980 750 897
+91 83 114 77 215 388 405 103 207 85 308 180 210 171 264 171 267 311 225 274
+50 42 63 39 212 346 315 48 77 42 186 85 98 86 136 86 156 179 93 126
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+74 128 63 104 71 72 80 795 468 734 122 409 174 304 105 280 105 204 423 350
+169 200 145 176 165 171 206 1172 868 921 466 788 476 629 382 631 383 615 845 776
+220 248 192 221 220 237 478 1269 1119 819 744 992 675 813 642 816 644 913 1095 1060
+294 310 263 281 302 340 863 1344 1397 672 1073 1213 904 1019 921 1021 927 1257 1368 1380
+336 342 306 312 355 447 1161 1188 1463 414 1257 1244 1005 1069 1077 1072 1083 1424 1430 1493
+337 335 316 308 373 776 1380 944 1423 381 1323 1159 1004 1014 1128 1014 1138 1465 1366 1476
+309 300 307 276 379 1014 1438 628 1229 330 1253 961 903 862 1062 861 1072 1350 1162 1305
+237 219 275 203 438 1230 1489 313 1005 235 1106 683 718 624 916 623 928 1167 885 1065
+169 142 261 135 583 1170 1224 197 532 148 804 367 473 327 657 326 668 816 522 690
+87 62 129 60 497 830 750 82 149 60 406 150 181 153 277 153 330 388 168 251
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+77 133 65 108 73 74 83 796 468 738 128 417 182 312 109 290 109 210 430 356
+151 186 128 161 146 151 192 1109 817 871 431 739 442 587 354 589 354 573 793 726
+233 261 203 233 232 250 505 1362 1199 879 799 1068 725 875 690 878 692 981 1178 1140
+296 312 265 283 304 341 857 1334 1386 671 1076 1215 910 1023 926 1026 932 1259 1369 1380
+336 342 306 312 355 446 1150 1176 1447 413 1255 1242 1007 1070 1078 1072 1084 1419 1426 1487
+180 179 172 165 205 361 580 418 594 210 604 541 484 488 530 488 534 658 620 662
+131 127 130 117 158 218 260 181 236 139 330 297 291 287 308 286 310 341 320 336
+167 156 190 145 294 734 879 220 602 166 690 449 470 416 582 416 589 724 563 665
+83 79 86 73 120 164 168 89 120 81 190 157 164 156 178 156 179 191 168 181
+41 40 42 36 65 85 79 41 50 41 85 69 74 69 80 69 81 84 72 78
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+17 17 15 16 17 17 17 17 17 18 31 31 31 31 31 31 31 31 31 31
+44 45 38 41 43 44 46 50 48 49 82 85 82 83 82 83 82 83 85 84
+105 115 92 104 104 112 134 170 162 149 226 241 222 230 220 230 220 236 248 246
+170 182 152 165 175 203 353 489 504 304 478 520 429 462 434 463 435 533 567 570
+118 121 110 112 126 144 171 171 182 142 269 268 255 259 259 259 260 279 279 282
+191 189 178 174 211 314 454 347 461 215 526 484 448 450 477 450 480 561 535 563
+151 147 150 136 185 278 344 219 306 160 401 351 343 336 368 336 370 417 385 409
+136 128 152 119 229 521 617 178 429 136 506 343 358 322 433 322 438 529 420 489
+126 112 171 104 344 640 663 142 314 115 485 263 317 244 411 244 416 490 340 425
+50 43 64 40 212 342 308 48 75 43 186 84 98 85 138 85 157 178 92 126
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+69 111 57 88 64 65 75 471 287 442 119 281 151 222 107 213 106 166 288 246
+149 190 126 163 143 149 194 783 589 631 392 596 400 496 345 497 345 485 632 587
+206 240 179 213 204 225 385 852 759 588 612 766 572 656 551 657 552 715 828 806
+237 251 212 229 244 279 507 718 740 431 693 757 618 669 625 670 628 777 828 833
+197 202 181 185 211 278 485 492 581 267 592 587 508 529 532 530 534 648 650 672
+238 237 230 217 276 486 768 555 784 283 817 732 657 661 719 661 723 887 836 892
+181 176 181 162 227 419 550 297 478 192 561 465 448 434 499 434 502 592 529 576
+130 125 133 115 176 262 293 158 230 130 327 272 277 266 302 266 304 335 297 321
+114 113 114 103 182 275 281 120 179 116 273 209 223 208 250 207 252 274 229 254
+57 58 55 52 104 143 132 57 68 61 123 93 101 94 113 93 115 121 98 109
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+65 109 55 87 62 63 71 515 307 483 114 296 151 230 98 221 98 166 303 256
+110 136 93 116 107 110 139 596 445 480 276 433 283 356 240 357 240 347 460 425
+55 56 49 51 55 56 59 61 60 60 104 106 104 105 104 105 104 105 107 106
+98 101 88 93 100 107 121 130 131 117 205 209 200 203 200 203 200 210 213 214
+63 63 57 58 64 66 69 68 69 66 121 121 120 120 120 120 120 122 122 122
+191 190 182 174 219 404 658 465 671 224 678 603 537 540 591 540 595 740 694 744
+275 267 273 246 337 892 1249 536 1058 292 1113 857 812 773 949 773 958 1195 1029 1153
+222 206 259 191 405 1033 1228 287 825 220 965 619 653 575 813 574 823 1011 781 926
+152 131 228 124 487 936 966 171 422 136 670 328 414 295 558 294 566 676 446 576
+57 48 73 45 192 295 266 54 82 48 186 97 114 99 149 99 162 179 107 137
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+58 94 48 74 55 55 63 382 232 361 97 228 124 181 86 176 85 135 233 199
+139 176 118 151 134 140 178 745 557 602 363 560 372 464 319 465 319 452 593 549
+194 219 169 195 193 208 373 932 821 625 609 787 563 661 539 663 541 727 857 832
+260 274 232 249 267 301 673 1023 1058 545 886 989 765 848 776 850 780 1019 1101 1108
+230 236 212 216 247 330 742 755 921 308 847 839 694 733 738 734 742 949 953 991
+136 135 130 124 157 261 397 291 403 160 426 384 348 350 378 350 380 460 435 462
+177 171 179 157 226 506 689 324 587 189 646 511 489 469 560 469 565 689 601 667
+113 107 121 98 174 323 372 143 268 112 342 254 263 243 303 243 306 354 294 332
+100 90 127 84 235 409 418 110 212 93 333 200 234 190 289 190 293 336 245 296
+81 61 119 58 407 656 583 74 129 59 345 135 169 139 251 139 288 328 153 224
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+54 77 45 61 51 52 59 191 129 183 92 147 103 127 88 125 87 108 149 134
+110 136 94 117 106 110 138 356 281 300 244 324 248 285 229 285 229 279 337 319
+164 187 144 166 164 176 277 575 514 409 448 547 423 477 410 478 411 513 586 571
+180 192 161 174 185 214 401 575 592 340 547 600 485 528 491 528 493 615 657 661
+162 166 149 152 174 231 405 410 485 221 493 489 423 440 443 440 445 541 542 560
+267 266 258 244 310 584 958 669 975 315 1000 888 791 795 872 795 878 1091 1023 1096
+306 297 303 273 373 888 1213 548 1030 324 1138 897 857 821 986 821 994 1213 1057 1173
+234 215 280 199 433 1039 1224 308 821 230 1001 657 693 615 851 615 861 1045 815 960
+178 152 281 144 609 1171 1200 200 506 156 830 396 508 351 690 350 700 836 544 708
+93 68 138 65 442 703 624 84 146 65 384 157 196 161 286 161 324 366 178 256
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+36 38 31 34 35 35 37 42 40 43 66 69 67 68 66 68 66 67 69 69
+79 88 68 79 76 79 89 115 106 109 157 170 158 164 155 164 155 163 172 169
+36 36 32 34 37 37 37 37 37 38 67 68 67 68 67 68 67 68 68 68
+38 38 35 35 39 39 40 39 39 40 72 72 71 71 71 71 71 72 72 72
+43 43 39 40 44 45 45 45 45 45 81 81 81 81 81 81 81 82 82 82
+104 104 98 96 113 127 140 129 139 114 225 220 215 215 219 215 219 230 226 230
+96 94 93 87 108 125 135 113 127 101 209 199 197 196 203 196 203 212 205 210
+80 76 79 71 93 108 113 88 101 80 170 159 160 157 165 157 166 172 164 169
+63 58 64 54 79 93 94 66 77 60 133 119 123 119 128 119 129 133 124 129
+48 45 50 41 74 94 88 46 56 46 99 80 86 81 94 81 95 98 84 91
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+47 68 38 53 45 45 51 177 116 170 76 128 87 109 71 108 71 91 130 116
+100 126 85 107 97 100 126 414 315 343 235 338 241 288 215 289 215 281 355 332
+121 139 105 123 120 130 197 385 345 281 309 373 294 328 285 329 286 351 398 388
+134 143 121 131 138 155 194 226 229 184 313 325 299 309 301 309 301 329 338 339
+138 142 129 131 148 175 217 217 236 172 333 331 311 317 317 317 318 347 347 353
+134 134 129 122 156 259 392 286 396 158 425 383 348 349 377 349 380 458 432 460
+131 126 131 117 158 207 240 174 218 138 323 294 290 285 305 285 306 332 313 327
+72 69 70 64 82 92 95 78 87 72 149 141 142 140 145 140 145 150 144 148
+51 48 50 44 59 66 66 52 58 49 102 95 97 95 100 95 100 102 97 100
+20 19 19 17 23 24 24 20 21 19 38 36 37 36 38 36 38 38 37 37
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+6 12 5 7 5 5 6 41 19 46 7 20 8 14 7 11 7 8 19 14
+77 136 64 107 72 73 83 564 333 538 144 344 189 273 121 270 119 201 350 298
+162 206 137 179 156 162 202 1018 744 824 465 749 482 614 404 616 404 591 793 730
+228 257 200 229 228 244 435 1143 999 767 756 980 702 825 671 827 672 902 1066 1033
+249 263 222 238 255 287 616 929 958 507 838 931 731 806 741 807 744 956 1030 1036
+199 204 183 186 214 283 572 579 698 266 681 674 571 598 602 599 605 755 757 785
+180 179 173 164 208 361 560 400 566 211 606 543 491 493 536 493 539 655 617 657
+223 214 227 198 285 694 945 414 793 237 887 692 664 633 766 633 772 945 819 912
+236 219 282 204 439 1060 1239 296 815 232 1013 660 701 619 862 619 872 1055 820 966
+179 154 287 145 617 1164 1180 197 488 158 832 401 517 357 696 356 706 836 545 708
+100 75 161 72 589 941 823 90 159 72 477 162 218 168 345 167 397 450 189 298
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 3 0 1 0 0 0 16 6 19 0 6 1 3 0 2 0 0 6 3
+108 192 91 155 102 103 115 808 474 773 216 506 284 405 181 402 178 300 515 439
+200 258 168 225 190 199 251 1122 826 916 563 869 581 724 499 726 499 698 917 849
+254 298 220 264 250 276 454 1020 902 717 774 962 730 832 704 834 705 896 1034 1006
+197 207 177 189 202 228 349 465 475 313 512 549 472 500 476 501 477 559 588 590
+213 215 194 197 223 286 455 457 535 275 590 585 519 536 539 537 541 637 639 657
+202 200 190 184 225 336 478 361 480 227 570 524 488 489 519 489 522 606 577 607
+194 190 190 175 237 393 497 282 430 201 545 464 453 441 495 440 498 569 516 555
+171 168 175 155 242 400 450 201 332 173 465 370 381 360 424 359 426 476 412 452
+129 128 133 118 215 325 327 133 200 131 332 252 272 252 305 252 307 332 277 307
+63 63 64 59 97 123 114 62 71 65 153 129 137 130 147 130 147 151 134 142
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+2 2 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
+27 28 24 26 27 27 28 29 29 30 50 51 51 51 50 51 50 51 51 51
+51 53 45 48 50 51 53 58 56 57 96 99 96 97 96 97 96 97 99 98
+70 72 62 66 70 72 77 82 81 80 136 139 135 137 135 137 135 138 140 140
+83 85 75 78 85 88 94 98 98 93 165 167 163 165 163 165 163 168 169 169
+90 91 83 84 94 99 107 106 108 99 183 183 179 180 180 180 180 186 186 187
+51 51 47 47 53 54 55 53 54 53 97 97 97 97 97 97 97 98 97 98
+101 98 97 91 114 131 141 118 133 105 219 208 207 205 212 205 213 222 215 220
+124 117 130 108 166 229 248 147 199 123 307 262 268 258 287 258 289 311 282 300
+60 56 60 52 72 83 83 62 71 57 123 113 116 113 120 113 120 123 116 120
+29 27 29 25 35 39 38 28 31 27 56 51 53 52 55 52 55 56 53 54
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+7 12 5 8 6 6 7 25 14 28 9 17 10 14 9 12 9 10 16 13
+61 89 50 71 57 58 66 210 140 205 106 168 120 146 101 146 101 124 169 153
+152 197 128 170 145 151 191 707 528 587 400 585 412 498 364 499 365 481 613 572
+222 252 194 225 221 236 354 718 639 523 604 725 576 642 559 642 559 682 771 753
+265 281 237 256 272 310 545 770 789 473 789 858 711 766 718 767 721 876 931 935
+396 399 359 366 414 488 965 971 1161 458 1212 1200 1039 1082 1089 1083 1093 1324 1327 1370
+340 338 331 311 396 692 1068 756 1074 398 1196 1073 976 978 1062 978 1069 1289 1214 1292
+309 296 319 273 399 961 1292 561 1078 329 1249 979 944 901 1085 901 1093 1326 1151 1279
+251 228 304 212 455 944 1081 323 727 243 971 675 713 643 847 643 855 1004 806 929
+184 157 284 148 575 1036 1038 199 446 161 782 409 512 376 667 375 675 783 531 671
+109 80 169 77 500 768 667 96 162 77 440 181 239 187 345 187 378 417 210 301
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+16 45 12 21 14 14 15 154 64 175 18 73 24 50 18 37 18 20 68 48
+113 211 95 169 106 107 119 855 494 824 235 546 310 439 197 441 192 326 553 472
+192 250 163 219 184 191 236 1185 859 969 571 905 595 749 505 751 506 717 954 879
+268 300 235 268 267 285 487 1289 1122 876 894 1147 837 975 800 977 802 1057 1242 1204
+355 369 317 336 363 396 867 1325 1364 714 1228 1362 1076 1183 1089 1186 1094 1398 1503 1512
+409 412 371 378 427 513 1151 1158 1410 471 1406 1390 1180 1235 1245 1237 1251 1554 1557 1614
+409 406 379 373 442 831 1357 918 1365 443 1466 1303 1175 1178 1290 1177 1299 1588 1488 1591
+342 332 335 305 407 1030 1386 579 1153 357 1330 1042 1006 958 1157 958 1165 1411 1225 1361
+271 252 332 234 516 1204 1386 332 895 266 1167 767 820 725 1002 725 1012 1211 944 1109
+197 168 320 159 668 1222 1220 212 499 172 896 447 573 406 759 405 769 896 593 761
+116 86 192 83 652 1015 874 102 175 82 535 185 261 192 405 191 452 503 220 344
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+15 27 11 17 13 13 14 61 31 69 18 38 21 31 18 27 18 20 36 29
+75 118 61 93 69 70 80 315 199 307 141 241 164 206 132 206 130 170 244 217
+123 156 105 134 119 123 153 388 303 333 281 370 287 328 266 328 266 319 383 362
+244 274 213 245 243 259 429 1085 947 748 782 990 735 848 704 850 706 915 1068 1036
+330 345 295 314 338 371 728 1073 1102 614 1048 1151 933 1014 942 1016 946 1178 1259 1265
+377 381 343 349 395 472 943 946 1136 439 1189 1176 1018 1059 1067 1061 1072 1301 1302 1346
+261 259 254 238 304 517 780 556 782 305 888 799 731 733 793 733 798 954 899 955
+213 206 217 190 271 533 691 339 582 223 718 586 570 549 638 549 643 754 668 731
+238 218 294 203 448 966 1103 300 723 231 971 659 702 628 842 627 851 1004 795 924
+141 124 195 116 357 601 598 150 286 127 499 299 355 286 437 286 442 498 362 437
+91 73 131 69 365 548 474 82 126 72 332 151 195 155 269 155 290 315 172 236
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+21 70 17 31 20 20 20 229 92 263 23 108 33 75 23 56 23 27 101 70
+121 233 102 186 113 114 127 920 527 892 260 597 343 482 220 484 214 360 604 515
+202 265 171 233 193 200 247 1180 855 973 598 929 623 775 536 778 536 741 976 902
+285 318 249 285 284 302 497 1287 1120 886 929 1179 874 1010 837 1012 839 1089 1271 1233
+357 371 319 338 365 398 816 1225 1258 682 1181 1302 1046 1142 1058 1144 1062 1333 1428 1435
+461 462 416 424 477 548 1090 1091 1306 510 1396 1381 1204 1250 1260 1252 1264 1520 1522 1570
+518 514 469 472 540 818 1192 868 1191 540 1427 1310 1220 1222 1303 1221 1309 1512 1441 1514
+419 408 403 376 482 1026 1328 620 1118 435 1378 1124 1096 1053 1227 1053 1234 1447 1283 1401
+285 257 356 240 539 1144 1300 360 852 274 1162 793 845 757 1011 756 1021 1200 953 1105
+210 177 324 168 637 1116 1106 224 480 181 871 474 587 446 751 445 760 869 600 748
+116 86 188 83 564 857 735 101 169 82 484 188 262 195 383 194 417 456 223 328
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+2 2 1 1 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
+49 53 42 48 47 47 50 61 56 61 92 97 93 95 91 95 91 93 97 96
+45 46 40 42 45 45 46 48 48 49 84 85 84 84 83 84 83 84 85 85
+86 90 76 82 86 89 96 106 104 101 171 176 169 172 169 172 169 174 178 177
+86 88 78 81 88 92 98 101 101 96 172 174 170 172 170 172 170 175 176 176
+93 94 85 87 96 102 109 108 110 101 188 188 184 185 185 185 186 191 191 192
+93 93 87 86 99 107 113 106 112 99 192 188 186 186 188 186 188 194 192 194
+87 85 83 79 95 104 109 96 104 90 179 173 173 172 176 172 176 181 177 180
+75 72 72 67 85 93 96 80 88 75 153 146 147 145 150 145 150 154 149 152
+58 54 57 50 68 75 75 59 65 55 116 108 110 108 114 108 114 116 111 114
+35 32 36 30 44 49 47 34 38 32 69 62 65 63 68 63 68 69 64 66
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+4 4 3 4 4 4 4 4 4 4 7 7 7 7 7 7 7 7 7 7
+51 56 44 50 49 49 52 64 59 64 95 101 97 99 95 99 95 97 102 100
+95 107 81 96 91 94 106 142 129 135 192 209 193 201 189 201 189 199 211 207
+95 111 82 97 94 103 154 310 275 229 243 296 231 260 224 260 224 276 316 307
+68 68 61 63 69 71 73 74 74 72 130 131 129 130 130 130 130 131 132 132
+74 74 67 68 76 78 81 80 81 78 144 144 142 142 142 142 143 145 145 145
+74 73 68 68 77 80 83 79 81 77 144 143 142 142 143 142 143 145 144 145
+134 129 138 118 175 323 409 209 344 141 427 350 342 330 382 329 384 448 397 433
+156 146 180 135 262 490 547 187 371 153 523 380 401 367 465 367 468 536 441 499
+104 95 127 88 211 326 321 108 174 97 299 203 231 201 270 200 272 298 233 268
+60 55 65 51 95 118 107 57 69 57 127 102 111 104 121 104 121 124 107 115
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+30 90 23 43 27 27 28 242 100 279 34 127 51 95 35 79 35 42 119 87
+112 211 92 165 103 104 119 682 399 668 239 481 299 399 216 400 211 312 485 420
+199 264 168 232 190 196 241 1020 743 853 566 847 589 718 519 720 519 686 886 822
+278 311 243 279 277 294 458 1114 972 786 862 1073 818 932 787 934 788 995 1149 1116
+326 352 293 320 336 386 739 1079 1106 633 1096 1200 980 1063 990 1064 994 1226 1309 1315
+391 403 363 368 423 532 900 897 1052 501 1199 1186 1051 1086 1094 1087 1098 1295 1296 1334
+202 201 196 184 234 404 609 425 606 233 700 628 576 577 625 577 629 750 706 751
+302 288 313 266 391 839 1084 493 899 317 1123 901 880 842 994 842 999 1181 1036 1140
+232 212 284 197 421 818 915 287 606 223 862 610 648 588 760 587 767 885 717 819
+211 177 313 167 577 965 946 222 434 180 800 467 565 453 701 452 708 795 570 693
+131 100 196 95 476 692 592 113 178 96 454 221 292 229 387 229 404 432 256 338
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+34 118 27 53 30 30 32 319 127 371 39 165 62 123 39 103 39 49 154 111
+116 220 95 172 106 107 122 700 408 688 249 499 312 415 228 416 222 324 502 436
+220 294 186 260 210 217 266 1145 831 959 639 956 666 812 587 814 587 774 999 927
+304 338 267 303 304 321 508 1305 1133 911 989 1242 937 1073 898 1075 900 1147 1332 1292
+408 420 364 383 417 444 847 1245 1275 721 1275 1392 1145 1238 1156 1240 1160 1421 1513 1520
+465 465 419 427 481 553 1087 1082 1296 511 1423 1407 1233 1278 1289 1279 1294 1546 1546 1594
+470 466 430 428 498 870 1345 915 1337 497 1548 1391 1279 1278 1387 1278 1395 1657 1561 1657
+389 378 376 348 453 1125 1476 599 1210 402 1481 1170 1143 1088 1302 1088 1309 1560 1359 1503
+303 281 384 261 597 1316 1482 356 927 294 1301 864 933 826 1127 825 1139 1340 1049 1226
+223 190 378 180 773 1362 1329 232 523 193 1020 520 670 494 874 493 885 1013 675 860
+138 102 246 99 772 1162 976 117 196 97 633 214 338 222 509 222 545 591 270 420
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+37 159 30 67 35 35 35 436 165 509 41 220 77 163 42 136 42 57 204 144
+137 267 114 212 127 128 142 907 518 893 305 637 390 527 278 529 270 406 641 553
+215 291 183 258 206 213 258 1205 866 1008 650 991 680 837 596 839 596 794 1036 959
+296 329 259 295 295 312 484 1207 1049 851 939 1170 892 1016 857 1019 858 1083 1252 1216
+379 392 339 358 388 417 821 1222 1252 696 1239 1357 1109 1202 1119 1204 1123 1386 1479 1486
+239 245 222 225 257 340 604 601 718 316 793 783 685 710 717 711 720 863 863 891
+375 372 348 341 407 673 1001 699 992 405 1181 1068 990 989 1067 989 1072 1258 1189 1258
+359 348 350 321 423 925 1187 526 981 371 1243 1005 986 944 1107 944 1112 1303 1148 1258
+224 204 272 190 396 727 805 274 539 215 787 570 605 552 701 552 707 806 660 748
+158 144 190 134 307 459 448 163 251 147 447 317 355 316 408 315 411 444 355 403
+108 85 158 81 370 529 450 94 141 83 357 180 239 187 310 186 321 339 208 270
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+25 49 19 30 23 22 24 89 46 103 32 62 40 53 32 51 32 36 60 50
+81 98 68 86 76 76 84 128 107 129 155 177 160 169 154 169 154 161 177 171
+65 68 57 62 64 65 68 76 73 75 124 128 124 126 123 126 123 126 129 128
+132 146 115 133 130 139 166 216 204 191 292 313 287 299 284 299 284 305 321 318
+151 161 136 148 155 173 215 249 252 205 358 371 343 354 344 354 345 374 385 386
+160 165 150 152 172 205 257 255 279 200 400 397 374 380 381 380 382 417 417 424
+140 139 135 129 157 186 214 186 211 155 330 318 309 309 317 309 318 339 331 339
+143 137 145 127 173 222 251 182 225 148 353 321 319 314 335 314 336 360 340 354
+141 131 162 122 230 391 429 168 296 137 434 327 344 319 392 318 395 443 371 414
+113 102 139 94 229 346 337 115 182 104 323 221 251 221 293 220 295 320 251 289
+99 86 118 81 226 302 263 91 116 86 254 169 199 173 233 173 237 245 183 213
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+42 178 34 77 39 39 40 448 169 526 48 237 94 181 49 161 49 70 220 158
+142 281 119 223 132 133 148 913 520 904 322 658 411 548 304 549 295 426 660 571
+219 299 186 267 209 216 260 1192 855 1003 662 1000 694 848 612 850 611 804 1043 966
+302 335 265 301 301 318 495 1277 1104 897 991 1240 943 1076 904 1079 906 1146 1327 1288
+417 428 373 391 426 453 875 1298 1328 744 1345 1469 1209 1307 1220 1309 1224 1499 1596 1603
+510 508 457 466 524 586 1081 1070 1270 542 1464 1447 1288 1329 1340 1330 1345 1576 1574 1619
+477 473 435 434 503 834 1243 856 1228 501 1484 1343 1248 1246 1343 1246 1350 1577 1491 1576
+428 418 409 384 487 1085 1382 599 1137 441 1465 1189 1169 1119 1310 1119 1315 1532 1353 1480
+323 299 407 278 617 1262 1400 374 879 313 1291 885 953 852 1133 852 1143 1323 1052 1215
+238 201 394 191 771 1311 1265 245 512 203 1023 549 696 543 888 541 898 1013 693 866
+150 109 268 106 754 1108 922 124 205 103 640 234 376 251 537 250 559 598 299 442
+0 0 14 0 320 421 284 0 0 0 93 0 0 0 31 0 70 63 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+47 199 38 87 43 43 44 477 180 562 56 260 111 203 57 186 57 83 242 176
+152 309 127 244 141 142 158 1003 566 997 351 725 452 604 337 605 327 468 727 628
+232 319 197 287 222 228 274 1292 922 1089 716 1085 752 920 663 923 662 870 1132 1047
+319 352 279 316 318 334 520 1368 1180 960 1063 1332 1011 1155 969 1158 971 1229 1425 1382
+415 426 371 390 424 450 832 1215 1242 715 1291 1404 1168 1257 1178 1259 1182 1431 1519 1525
+512 510 459 468 526 588 1073 1060 1258 544 1464 1446 1291 1331 1343 1332 1347 1573 1572 1616
+508 504 460 463 530 849 1241 864 1223 529 1510 1374 1284 1282 1376 1282 1382 1598 1515 1597
+430 420 411 386 488 1081 1371 593 1126 442 1465 1190 1172 1122 1311 1122 1316 1530 1352 1477
+328 304 415 283 628 1269 1403 377 877 318 1304 897 967 865 1146 865 1157 1335 1064 1227
+240 202 398 192 774 1308 1257 245 508 205 1025 554 702 553 892 552 902 1014 696 868
+152 111 273 107 758 1107 917 125 204 104 643 236 385 257 547 255 564 600 305 448
+0 0 14 0 309 404 271 0 0 0 91 0 0 0 30 0 70 62 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+52 212 42 96 46 46 48 485 185 572 64 274 126 218 65 206 65 95 255 188
+154 319 125 249 139 140 160 987 558 984 357 726 457 607 350 608 341 473 727 629
+242 333 206 298 231 239 287 1236 888 1049 724 1071 758 916 675 919 674 868 1114 1034
+338 371 296 334 337 354 525 1300 1126 929 1061 1308 1014 1146 975 1148 976 1212 1393 1353
+449 458 401 418 458 480 846 1214 1239 734 1328 1437 1211 1296 1220 1298 1223 1462 1547 1552
+540 537 483 492 552 599 1011 997 1165 561 1416 1401 1271 1305 1314 1305 1318 1508 1506 1544
+524 519 472 477 542 816 1151 823 1132 541 1444 1327 1251 1248 1329 1249 1335 1519 1447 1517
+421 411 403 378 479 1012 1269 568 1045 433 1383 1135 1120 1074 1245 1074 1249 1441 1280 1393
+327 303 409 282 609 1184 1300 375 821 316 1240 869 935 842 1097 841 1107 1267 1020 1168
+242 203 390 193 738 1223 1171 246 488 205 984 550 687 556 862 554 872 972 679 837
+155 112 272 109 713 1030 853 127 204 105 619 243 389 266 537 265 548 580 310 442
+53 36 76 36 364 459 323 35 49 30 186 76 90 81 126 80 164 155 80 88
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+47 164 37 79 42 41 44 347 138 410 59 208 107 169 61 165 60 84 195 147
+134 259 109 202 121 122 139 725 420 725 296 559 368 474 295 475 289 378 559 489
+227 311 193 277 217 224 270 1043 757 892 648 934 677 807 610 809 609 766 970 903
+317 350 278 315 316 333 480 1112 968 810 948 1153 910 1020 878 1021 879 1073 1223 1190
+339 365 304 332 348 397 693 981 1001 609 1080 1170 983 1053 991 1055 994 1191 1262 1267
+380 390 353 357 409 513 849 838 984 477 1170 1155 1033 1064 1073 1065 1077 1258 1256 1292
+292 288 283 265 335 552 798 555 784 328 974 879 819 817 882 817 886 1034 976 1032
+316 305 326 281 403 740 916 451 756 325 1029 852 843 811 931 811 936 1070 955 1035
+226 211 260 196 363 590 637 262 441 220 683 527 555 516 623 516 627 694 589 652
+175 157 213 147 340 497 478 176 266 160 490 350 393 354 450 353 453 486 390 441
+107 92 130 87 242 318 274 97 122 92 271 180 217 188 252 187 254 262 197 228
+33 27 38 26 98 117 89 27 32 25 79 53 59 54 69 54 75 73 54 58
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+36 69 27 43 32 31 33 113 60 131 46 86 59 75 47 75 47 53 82 69
+92 112 76 98 85 85 94 148 122 150 175 202 182 193 175 193 175 183 202 194
+150 197 126 171 143 147 180 441 340 390 353 455 363 410 340 410 339 394 468 444
+211 246 184 220 209 225 331 709 620 526 624 752 601 669 581 670 581 702 796 775
+220 237 197 216 226 260 445 627 639 395 694 751 633 677 637 678 639 764 809 812
+228 234 212 214 246 325 521 513 606 302 716 706 630 650 656 650 658 771 770 792
+221 218 213 201 252 372 504 371 494 247 644 590 558 556 592 557 595 677 644 676
+124 119 122 111 143 168 181 145 167 128 279 262 262 259 270 258 271 283 272 280
+190 184 210 170 288 451 485 214 342 189 535 424 444 417 492 416 495 542 467 512
+147 140 165 128 253 356 342 148 207 144 368 280 307 283 342 283 344 365 304 336
+93 88 101 80 174 220 192 89 103 92 203 153 172 157 192 157 193 197 161 178
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+37 105 28 54 32 32 34 202 86 238 42 127 71 105 44 105 43 58 119 92
+66 106 53 82 62 62 69 222 142 224 118 187 136 164 118 164 117 138 187 168
+112 148 93 128 106 109 135 344 263 304 258 340 267 304 248 304 247 291 350 331
+152 178 131 159 149 161 230 439 388 336 408 483 395 434 384 435 384 453 508 496
+262 282 235 256 269 307 549 788 804 482 860 934 781 839 787 840 789 951 1010 1013
+257 263 238 241 277 361 628 617 736 330 852 839 742 767 775 767 778 921 919 948
+287 284 280 261 333 573 840 570 821 325 1015 909 846 842 914 843 919 1079 1014 1076
+373 362 363 334 435 981 1232 509 996 383 1329 1073 1062 1014 1190 1013 1194 1386 1219 1335
+292 270 374 252 559 1060 1152 331 715 281 1113 780 843 758 988 758 997 1135 912 1044
+228 194 377 184 719 1181 1117 228 449 196 944 523 661 538 829 536 838 930 645 798
+146 109 268 105 705 1007 821 120 186 104 594 224 382 257 526 256 532 559 296 425
+34 504 31 10 415 527 349 640 103 899 125 286 81 216 49 204 104 95 229 108
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+62 253 49 119 54 54 57 525 197 627 77 318 165 259 87 260 78 125 296 222
+156 334 128 260 141 142 160 971 541 979 374 739 476 623 374 625 371 486 738 640
+239 336 203 303 228 235 279 1199 854 1028 726 1068 765 919 683 921 682 866 1107 1028
+339 372 298 335 339 354 526 1352 1162 966 1117 1380 1070 1210 1028 1213 1029 1276 1468 1425
+441 450 394 411 450 472 862 1260 1285 746 1389 1506 1264 1356 1274 1357 1277 1532 1624 1629
+525 522 470 479 538 607 1113 1090 1301 552 1552 1531 1371 1412 1426 1413 1431 1666 1662 1709
+529 524 476 481 547 852 1211 841 1183 545 1529 1396 1317 1313 1404 1313 1410 1608 1527 1604
+460 450 434 414 511 1085 1341 582 1093 471 1496 1232 1223 1172 1355 1172 1358 1554 1382 1501
+344 319 446 298 667 1270 1377 385 844 332 1332 931 1008 906 1183 905 1193 1358 1089 1248
+249 211 419 200 798 1308 1232 249 489 212 1047 578 733 596 920 594 930 1030 714 883
+168 123 312 119 802 1139 925 135 211 115 681 258 442 299 604 298 612 640 342 488
+62 39 99 39 430 532 365 37 55 31 221 84 105 90 154 90 198 183 89 100
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+57 196 45 99 50 50 53 381 151 455 75 246 139 205 84 205 77 110 230 178
+151 306 123 239 136 137 155 819 467 829 351 651 434 556 350 557 348 442 649 568
+222 306 188 273 212 218 261 937 680 813 621 877 651 766 590 767 589 725 906 846
+202 236 176 212 199 214 299 562 496 434 547 641 531 580 516 581 517 603 672 656
+274 296 246 269 281 322 533 740 753 477 845 911 776 826 781 827 783 926 977 981
+506 504 454 462 519 572 928 908 1058 532 1332 1317 1204 1232 1242 1233 1246 1413 1410 1444
+527 523 474 480 544 813 1128 799 1099 542 1453 1336 1268 1263 1344 1263 1349 1522 1450 1518
+284 270 298 250 369 742 917 409 741 293 1018 827 822 785 916 785 920 1060 935 1021
+279 252 373 236 555 1026 1107 324 685 263 1091 766 829 747 970 746 979 1110 892 1021
+229 193 375 183 695 1121 1053 227 432 194 921 526 658 541 815 540 823 906 639 781
+160 118 293 114 737 1037 840 129 198 111 631 246 415 287 562 285 569 593 324 455
+65 41 108 40 483 595 405 38 57 32 242 87 109 93 166 93 217 199 92 104
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+35 39 29 35 33 33 34 41 37 43 63 67 64 66 63 66 63 64 67 65
+101 126 83 109 93 94 104 167 136 170 195 226 203 216 194 216 194 204 226 217
+158 210 133 182 150 154 188 456 351 407 376 482 388 436 363 436 363 418 495 469
+309 341 270 307 307 323 449 1000 870 745 905 1086 875 970 845 972 846 1014 1146 1116
+358 371 320 339 366 393 695 1000 1019 608 1124 1216 1027 1099 1035 1100 1037 1237 1308 1313
+225 231 210 212 244 317 523 512 607 290 722 711 634 653 660 654 663 777 775 798
+308 304 300 280 356 627 922 612 895 346 1125 1004 936 931 1013 932 1019 1195 1121 1190
+304 289 318 267 393 821 1016 434 815 313 1124 907 902 860 1009 860 1013 1170 1028 1125
+252 228 334 213 495 897 964 290 598 238 959 679 735 663 856 662 864 976 787 898
+242 205 401 194 745 1200 1123 239 451 206 979 554 697 572 866 570 875 962 675 828
+160 118 284 114 684 953 771 128 194 110 599 248 404 288 537 286 544 564 319 439
+43 29 64 28 182 220 154 28 37 26 119 59 75 64 97 64 110 104 62 71
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+17 18 15 16 17 17 17 18 18 18 32 32 32 32 32 32 32 32 32 32
+31 31 27 29 30 31 31 32 31 32 56 57 57 57 56 57 56 57 57 57
+84 91 74 83 82 84 90 105 99 103 164 172 165 169 163 169 163 168 173 171
+109 115 96 106 108 112 123 139 135 132 221 230 220 224 219 224 219 226 232 231
+118 123 107 113 121 128 140 148 148 138 247 251 243 246 243 246 243 252 255 255
+112 112 103 104 116 123 132 130 134 122 230 229 225 226 226 226 226 233 233 234
+126 125 119 116 137 152 165 150 161 135 273 266 262 262 267 262 267 277 273 277
+111 107 107 100 124 138 144 123 135 113 235 225 225 223 230 223 230 238 231 235
+75 72 72 67 83 88 89 78 83 74 149 144 145 143 147 143 148 150 146 148
+51 49 49 45 56 59 58 51 54 49 98 94 96 94 97 94 97 98 95 97
+26 25 25 23 28 29 29 25 26 25 49 47 48 47 48 47 49 49 47 48
+13 11 13 10 16 17 15 11 12 11 24 21 22 22 23 21 23 23 21 22
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+46 132 35 71 40 40 42 233 98 280 54 158 95 133 62 133 55 77 148 117
+92 175 75 135 85 85 94 418 243 426 194 340 234 293 193 294 192 236 338 298
+88 118 73 101 84 86 104 286 214 254 197 268 206 237 189 237 189 225 276 259
+160 185 139 165 159 169 250 581 501 428 499 610 482 540 463 541 464 565 646 627
+322 336 288 306 329 357 661 972 990 575 1082 1175 984 1056 991 1058 994 1196 1268 1273
+360 363 328 333 378 465 869 845 1022 413 1211 1191 1057 1090 1104 1091 1108 1308 1303 1344
+409 404 378 372 439 755 1106 727 1069 433 1374 1234 1158 1151 1247 1152 1253 1453 1367 1446
+360 349 352 321 425 972 1203 467 954 368 1324 1065 1062 1010 1189 1010 1193 1377 1207 1323
+292 270 399 252 603 1127 1205 324 715 280 1174 813 889 794 1045 793 1054 1194 951 1094
+236 202 413 192 783 1268 1176 232 446 203 1013 557 714 578 895 576 904 993 684 848
+139 107 260 103 653 907 725 114 164 102 549 209 365 253 492 251 498 515 280 394
+53 33 97 32 399 486 324 31 44 27 199 67 89 73 140 73 179 163 71 82
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+81 338 65 168 71 70 74 639 234 776 105 419 233 348 136 349 109 179 389 297
+182 390 152 308 167 168 185 1044 577 1067 456 844 565 722 453 725 450 569 839 733
+260 376 222 341 249 255 298 1286 905 1116 811 1187 863 1029 772 1031 771 964 1226 1139
+349 381 306 344 349 363 522 1329 1137 965 1154 1413 1113 1249 1070 1252 1071 1307 1496 1452
+452 460 404 421 461 481 851 1232 1254 743 1420 1532 1301 1389 1310 1391 1314 1556 1644 1649
+534 531 478 488 547 619 1095 1062 1267 558 1574 1551 1402 1439 1454 1440 1460 1681 1676 1721
+511 506 462 465 531 843 1192 808 1151 528 1531 1394 1320 1313 1408 1314 1413 1607 1523 1601
+424 413 405 380 484 1068 1308 522 1042 432 1471 1198 1197 1142 1331 1142 1334 1526 1348 1469
+325 302 435 281 645 1168 1243 358 746 312 1242 877 955 859 1113 859 1122 1262 1016 1160
+245 208 414 197 759 1206 1116 239 440 209 992 565 714 586 882 585 891 972 683 836
+165 123 311 119 763 1054 839 131 192 116 649 250 435 303 582 302 589 607 334 466
+50 31 90 31 351 426 283 30 41 27 179 62 83 68 129 68 162 147 66 77
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+18 19 16 17 18 18 19 19 19 20 34 34 34 34 34 34 34 34 34 34
+44 46 39 42 43 43 45 48 46 49 81 84 82 83 81 83 81 82 84 83
+71 74 62 68 70 71 74 81 78 80 135 139 135 137 134 137 134 136 139 138
+92 95 82 88 92 94 100 108 105 105 181 185 180 182 179 182 180 183 187 186
+121 125 110 116 124 131 143 151 151 141 253 257 249 252 249 252 249 258 261 261
+78 78 71 72 80 82 84 83 84 82 151 150 149 150 150 149 150 151 151 152
+87 87 81 80 91 95 98 94 96 91 172 170 169 169 170 169 171 173 172 173
+63 62 58 58 66 67 68 65 66 64 121 119 119 119 120 119 120 121 120 121
+109 99 134 92 193 312 329 124 214 103 335 247 266 244 304 243 306 340 280 315
+99 87 132 81 214 310 289 97 147 88 283 190 222 194 258 194 260 278 214 248
+61 51 83 47 164 214 176 53 66 51 156 88 119 97 144 96 145 148 101 124
+25 19 35 18 95 112 78 18 22 18 62 33 40 35 51 35 58 54 34 38
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+23 23 20 22 22 22 23 24 23 25 41 42 42 42 42 42 42 42 42 42
+60 64 52 58 58 58 61 70 65 71 111 117 113 115 111 115 111 113 117 115
+88 94 77 86 86 87 93 108 102 107 171 179 172 176 170 176 170 174 180 178
+78 79 69 73 78 79 82 86 85 85 149 152 149 150 149 150 149 151 152 152
+63 63 57 59 64 65 66 66 66 66 120 120 119 120 119 120 119 120 120 120
+68 68 62 63 70 71 72 71 71 71 130 130 129 129 129 129 129 130 130 130
+87 87 81 80 91 95 98 93 96 91 172 170 169 169 170 169 171 173 172 173
+93 91 88 84 100 107 110 99 105 95 188 182 182 181 185 181 185 189 185 187
+80 76 76 71 88 94 95 82 88 78 159 152 154 152 156 152 157 159 155 157
+60 56 57 52 67 71 70 59 63 57 116 110 112 110 114 110 115 116 112 114
+23 22 22 21 25 25 25 23 24 23 44 42 43 43 43 43 43 43 43 43
+7 6 6 6 7 7 7 6 7 6 13 12 12 12 12 12 13 12 12 12
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+27 90 21 47 24 24 25 154 61 188 33 105 63 89 41 89 34 50 98 77
+50 52 43 47 48 49 50 55 53 56 92 95 93 94 92 94 92 93 95 94
+48 48 42 45 48 48 49 50 49 50 89 90 89 89 89 89 89 89 90 90
+144 167 125 149 143 152 216 469 406 355 424 511 411 457 397 457 397 475 538 523
+162 174 145 158 166 189 324 459 467 289 520 562 476 508 479 509 480 571 604 606
+116 118 107 108 125 165 273 264 316 148 362 355 316 325 330 325 331 391 389 401
+79 78 72 73 82 84 86 83 85 81 153 152 151 151 152 151 152 154 153 154
+91 88 85 82 97 103 106 96 101 92 181 177 177 176 179 176 179 182 179 181
+70 68 66 63 76 80 80 72 75 69 137 133 134 132 135 132 135 137 134 136
+53 51 51 47 58 61 61 53 56 51 102 98 100 98 101 98 101 102 99 101
+45 41 45 38 54 58 54 42 46 41 86 79 82 80 85 80 85 85 80 83
+25 19 36 18 96 112 78 19 22 19 62 33 40 35 52 35 58 54 34 38
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+93 334 74 178 81 80 84 568 216 695 132 412 253 352 168 353 139 202 385 304
+184 392 150 308 165 165 186 936 522 968 458 802 557 696 457 698 454 555 796 700
+273 387 233 350 261 267 310 1131 806 999 797 1116 844 984 766 986 765 924 1147 1072
+302 334 264 302 300 314 445 1114 951 820 1002 1219 970 1084 933 1086 934 1129 1287 1250
+361 373 323 341 369 394 647 906 920 576 1092 1170 1010 1071 1016 1072 1018 1187 1248 1251
+306 312 285 287 330 419 669 647 764 380 970 954 863 885 896 886 899 1036 1031 1060
+469 464 429 426 495 825 1171 765 1121 489 1512 1366 1295 1285 1385 1285 1391 1589 1498 1579
+400 389 386 358 466 936 1118 471 890 406 1310 1083 1087 1040 1197 1040 1200 1352 1203 1303
+173 157 213 146 294 458 477 192 316 163 530 405 433 401 486 400 489 535 450 499
+125 111 142 103 188 236 223 121 155 113 289 238 255 240 275 240 277 286 251 269
+83 70 112 65 206 263 216 72 88 69 211 130 168 141 198 141 199 201 146 172
+35 26 51 25 118 137 96 25 30 25 84 47 59 51 73 50 80 75 49 55
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+11 11 10 11 11 11 12 11 11 12 21 21 21 21 21 21 21 21 21 21
+45 46 39 42 44 44 45 48 47 49 82 84 83 84 82 84 82 83 84 84
+35 35 31 32 35 35 36 35 35 36 65 65 65 65 65 65 65 65 65 65
+59 59 53 55 59 60 61 62 61 62 111 111 111 111 110 111 110 111 112 112
+109 112 99 103 112 116 124 128 128 122 221 224 218 220 219 220 219 224 226 226
+89 89 81 82 91 94 97 96 97 93 173 173 171 172 172 172 172 174 174 175
+91 90 84 84 95 99 102 98 100 95 180 178 177 177 178 177 178 181 180 181
+152 144 154 134 182 222 240 179 214 154 362 333 334 328 348 328 349 367 348 361
+135 124 143 115 174 213 217 144 178 128 314 278 286 277 301 277 302 315 291 305
+109 97 119 91 151 180 172 106 129 98 240 206 218 208 231 208 232 238 215 227
+32 30 31 28 35 37 36 31 32 30 60 57 59 58 60 58 60 60 58 59
+24 20 26 19 33 35 30 20 22 20 43 37 41 38 43 38 43 42 38 40
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+24 24 21 22 23 23 24 25 24 26 43 44 44 44 44 44 44 44 44 44
+50 52 44 48 49 49 51 55 53 56 93 96 94 95 93 95 93 94 96 95
+44 44 39 41 44 45 45 46 45 46 82 83 82 82 82 82 82 82 83 83
+147 175 126 156 144 155 214 408 357 321 404 474 394 431 383 431 383 445 496 484
+89 90 80 83 91 93 96 98 98 96 174 175 172 173 172 173 172 175 176 176
+181 186 171 172 195 230 280 273 298 220 456 452 429 434 437 434 438 472 471 478
+180 177 178 165 208 260 305 249 295 199 465 439 427 425 443 425 444 478 462 476
+172 162 180 151 215 280 310 211 269 174 442 397 398 389 420 389 421 450 420 440
+96 91 94 85 109 120 121 99 109 93 198 186 189 186 194 186 194 198 190 195
+66 62 64 58 75 81 79 65 70 63 130 122 125 123 128 123 128 129 124 127
+104 97 124 91 189 230 194 97 108 99 275 218 245 226 265 226 266 267 229 247
+26 22 28 20 36 39 33 22 24 22 47 40 44 41 46 41 46 45 41 43
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+61 149 46 91 52 52 54 221 102 268 86 182 127 161 98 161 89 108 172 144
+95 155 75 124 85 85 95 274 177 285 185 269 209 243 185 243 185 208 267 244
+114 157 94 136 107 110 134 333 252 303 269 351 281 317 261 317 260 300 359 339
+141 163 122 146 139 147 207 454 391 346 419 503 407 451 393 452 393 467 529 514
+235 252 210 230 241 272 454 637 647 408 766 824 706 751 710 751 712 835 881 883
+216 221 203 203 235 310 474 456 538 281 694 682 619 634 642 634 644 741 737 757
+302 297 287 274 337 613 886 552 840 325 1125 1001 944 935 1020 936 1025 1188 1110 1179
+596 593 533 543 621 1094 1259 607 1031 606 1592 1383 1390 1345 1491 1344 1493 1630 1492 1583
+329 305 473 285 698 1235 1283 352 729 314 1314 923 1019 912 1186 911 1196 1331 1066 1217
+255 216 433 205 752 1136 1025 242 407 216 974 579 727 606 880 605 888 950 683 822
+173 130 343 126 801 1070 827 135 184 123 677 261 468 331 614 330 621 627 350 482
+54 35 96 34 271 316 207 33 42 32 156 65 90 71 127 70 146 132 68 79
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+10 66 7 18 8 7 8 61 10 93 9 37 15 31 10 22 10 10 30 18
+111 447 88 236 96 94 99 725 259 899 164 537 332 461 218 462 177 260 499 393
+211 466 175 370 192 193 211 1082 590 1132 548 953 669 832 550 833 546 661 943 830
+292 429 250 391 280 285 326 1293 903 1149 910 1287 969 1134 876 1136 874 1058 1321 1231
+395 423 348 384 395 408 537 1310 1119 984 1255 1503 1222 1352 1179 1354 1179 1397 1578 1534
+536 536 478 491 546 553 866 1199 1216 774 1523 1621 1423 1499 1430 1500 1433 1640 1715 1719
+665 656 588 602 669 705 1082 1039 1203 650 1664 1644 1535 1561 1575 1561 1579 1743 1736 1771
+635 631 558 578 634 928 1224 847 1168 639 1687 1562 1505 1496 1583 1496 1588 1750 1672 1740
+491 482 465 443 558 1148 1357 536 1064 499 1618 1341 1352 1292 1486 1291 1489 1667 1484 1605
+377 352 534 329 779 1356 1402 399 800 362 1460 1039 1143 1027 1323 1026 1334 1477 1191 1355
+269 229 504 218 910 1401 1254 254 449 229 1152 646 838 683 1033 681 1043 1120 779 956
+172 131 361 127 861 1150 882 135 182 124 712 259 486 338 645 336 652 657 357 500
+73 45 143 44 421 491 316 41 55 38 231 86 125 94 184 94 215 191 90 107
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+9 49 5 14 6 6 6 45 8 68 8 28 12 24 8 18 8 8 23 14
+34 36 29 33 33 33 33 37 35 38 62 64 63 63 62 63 62 62 64 63
+113 219 91 173 102 102 113 447 259 469 254 411 301 364 255 364 254 297 406 362
+241 346 204 311 229 234 272 924 658 829 693 951 734 847 670 848 669 793 974 912
+290 323 253 291 288 301 397 868 748 668 863 1020 842 924 815 925 815 953 1067 1039
+356 368 318 337 364 388 601 820 831 543 1038 1106 969 1021 974 1022 976 1119 1171 1174
+319 325 297 299 344 433 671 644 758 391 1000 983 896 917 929 918 932 1063 1057 1086
+202 198 202 184 237 313 380 295 365 224 558 520 504 501 527 501 529 577 553 574
+128 123 125 115 145 164 172 142 159 130 279 265 265 262 272 262 272 281 272 278
+96 91 94 85 109 119 120 99 108 93 196 186 188 185 193 185 193 197 189 193
+69 64 67 60 78 84 82 67 73 65 135 127 130 127 133 127 133 134 129 132
+39 36 38 34 44 46 44 37 39 36 74 70 72 70 73 70 73 73 70 72
+13 12 12 11 15 15 14 12 13 12 24 23 23 23 24 23 24 24 23 23
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2
+39 42 34 38 38 37 38 44 41 46 71 74 72 74 71 74 71 72 74 73
+53 56 47 51 52 52 54 58 56 60 99 102 100 101 99 101 99 100 102 101
+124 141 106 128 118 121 135 177 160 173 253 275 256 266 251 266 251 261 277 271
+99 103 88 95 99 102 107 115 113 113 196 200 195 197 194 197 194 198 201 201
+169 180 153 166 173 190 225 252 253 218 396 407 384 393 384 393 385 410 419 419
+146 151 138 138 161 214 329 315 372 192 472 463 419 429 435 429 437 504 501 516
+160 156 161 144 193 303 404 275 382 180 526 473 451 447 482 447 485 551 518 547
+170 160 187 148 235 394 457 222 362 171 551 456 461 441 506 441 508 566 504 545
+221 199 301 186 424 684 701 240 427 205 766 564 615 560 701 559 706 773 635 713
+266 225 471 214 816 1222 1089 249 415 225 1045 615 780 648 945 646 953 1016 726 875
+198 146 403 143 908 1197 914 151 205 137 773 304 541 388 705 386 712 713 403 550
+110 96 206 92 680 783 505 95 99 94 367 157 198 158 288 158 344 305 157 171
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+17 103 10 31 12 11 12 93 15 142 14 58 25 50 15 38 15 15 48 29
+121 480 96 258 103 102 107 739 262 924 189 571 363 494 247 496 206 286 530 422
+220 490 182 389 199 199 218 1082 587 1142 575 982 699 862 579 863 575 687 969 856
+301 444 258 406 289 294 334 1283 893 1151 938 1311 999 1162 906 1164 904 1083 1343 1253
+409 436 360 396 410 421 539 1293 1103 983 1281 1524 1252 1377 1209 1379 1209 1419 1594 1551
+558 556 498 509 568 571 863 1178 1192 777 1543 1634 1450 1520 1456 1521 1459 1651 1722 1725
+704 692 619 635 704 729 1071 1026 1176 676 1681 1662 1567 1589 1603 1590 1606 1750 1743 1774
+661 658 577 603 655 933 1201 839 1142 663 1695 1578 1529 1518 1600 1518 1604 1751 1678 1741
+507 498 483 458 581 1145 1336 536 1043 515 1629 1360 1375 1315 1504 1315 1508 1675 1496 1613
+380 354 546 331 789 1346 1377 399 776 364 1461 1046 1155 1039 1331 1037 1341 1477 1193 1354
+293 248 543 237 950 1426 1265 274 461 247 1205 696 893 736 1089 734 1098 1170 826 1003
+207 152 418 148 926 1213 924 156 212 142 794 320 561 405 726 403 733 733 419 567
+114 98 217 94 685 786 505 97 101 96 373 160 206 161 297 161 351 311 161 176
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+21 128 12 40 14 14 14 115 17 176 17 72 31 62 18 48 18 18 59 36
+123 488 98 264 105 104 109 739 262 927 197 579 371 503 254 504 215 293 538 429
+225 517 184 408 201 201 222 1124 606 1190 598 1024 729 899 603 899 599 714 1010 891
+342 488 294 446 329 335 376 1318 928 1189 1014 1386 1076 1238 983 1240 981 1157 1417 1327
+350 381 307 345 349 361 476 1185 1005 895 1155 1384 1127 1246 1086 1248 1087 1284 1451 1410
+439 448 393 410 448 467 770 1093 1107 685 1386 1482 1288 1363 1295 1364 1298 1500 1575 1578
+414 415 376 381 431 523 908 860 1040 456 1374 1348 1224 1253 1271 1254 1276 1465 1455 1496
+896 897 737 820 818 897 990 843 962 859 1574 1555 1546 1544 1558 1543 1559 1582 1571 1581
+403 392 402 361 490 930 1082 447 842 408 1321 1098 1112 1062 1218 1062 1222 1357 1210 1306
+291 261 426 245 610 1017 1037 313 596 268 1119 803 886 798 1020 797 1028 1129 913 1035
+254 216 464 206 801 1191 1054 237 391 216 1016 595 759 629 920 627 928 986 702 847
+218 160 453 156 1004 1312 993 164 221 148 855 339 603 433 781 431 789 787 446 607
+132 74 288 75 797 916 574 65 91 58 428 145 234 159 349 159 401 350 152 188
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+24 150 14 47 15 15 15 134 19 206 18 84 36 72 20 57 19 19 68 41
+121 458 95 252 103 101 107 679 244 853 196 543 355 474 248 476 214 282 506 406
+182 403 148 318 163 163 180 840 460 892 465 778 561 686 469 687 466 549 767 679
+213 311 180 279 202 207 240 791 560 717 613 834 650 746 594 747 593 697 852 798
+463 480 410 437 467 474 558 1133 986 903 1239 1424 1218 1313 1184 1315 1185 1343 1477 1444
+421 430 376 393 430 448 692 951 962 626 1238 1316 1159 1219 1165 1220 1167 1330 1391 1394
+481 479 432 440 495 563 874 831 976 508 1350 1329 1231 1254 1269 1255 1272 1422 1414 1447
+488 483 443 443 510 800 1065 700 1003 503 1465 1337 1286 1275 1363 1275 1368 1524 1444 1512
+442 431 434 397 527 972 1122 477 877 447 1391 1168 1182 1133 1289 1132 1293 1428 1279 1376
+339 314 490 294 702 1173 1192 356 672 323 1284 925 1021 920 1174 919 1182 1296 1050 1189
+249 211 444 201 755 1109 979 231 372 211 960 573 725 605 873 603 880 931 670 804
+138 106 228 101 440 559 433 108 138 102 417 218 318 252 388 252 391 389 257 318
+61 42 102 40 225 255 168 39 47 38 151 76 104 82 134 82 144 131 79 91
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+15 52 9 22 11 10 11 47 13 70 14 35 20 31 14 27 14 14 30 21
+67 135 49 91 55 55 58 175 92 214 95 164 125 150 103 149 99 110 156 135
+90 102 76 92 84 84 90 115 103 119 170 185 175 180 170 180 170 174 184 180
+95 102 83 93 93 94 100 114 108 114 185 193 186 190 184 190 184 188 194 192
+95 98 85 91 95 97 102 108 106 106 186 190 186 188 185 188 185 188 191 190
+89 89 80 83 90 92 95 96 96 94 172 173 171 171 171 171 171 173 174 174
+84 84 76 77 86 88 90 88 89 87 161 161 160 160 161 160 161 162 162 162
+73 72 66 67 75 76 77 75 76 75 139 138 138 138 138 138 138 139 139 139
+67 66 62 61 70 72 72 69 70 68 128 127 127 127 128 127 128 129 128 128
+84 80 80 75 92 97 97 85 90 82 166 159 161 159 163 159 164 166 161 164
+97 88 101 82 122 137 131 93 107 88 201 181 189 183 197 182 197 200 186 193
+39 37 38 34 44 45 44 37 39 37 73 70 72 70 73 70 73 73 70 72
+32 27 35 25 44 46 39 27 29 27 58 50 55 52 57 52 58 56 51 53
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+4 4 4 4 4 4 4 4 4 4 8 8 8 8 8 8 8 8 8 8
+20 20 17 18 20 19 20 20 20 20 36 36 36 36 36 36 36 36 36 36
+45 46 40 43 45 45 46 48 47 49 84 85 84 85 84 85 84 84 85 85
+91 96 80 88 89 90 95 107 102 107 176 183 177 180 175 180 175 178 183 181
+149 163 131 149 147 154 174 211 200 196 322 340 320 329 317 329 317 332 345 341
+207 225 187 206 212 240 309 371 373 296 542 566 519 537 520 537 521 570 589 589
+226 232 214 213 248 324 480 457 538 291 732 718 658 672 681 672 683 776 771 792
+167 164 163 152 187 217 240 207 232 179 393 377 371 369 380 369 381 400 390 398
+142 135 141 126 163 187 195 158 178 142 316 297 298 294 307 294 307 318 306 314
+153 139 167 129 204 252 253 160 200 142 364 318 330 318 349 317 350 364 333 351
+92 83 94 78 112 124 119 88 99 83 187 170 176 171 183 171 183 185 174 180
+43 40 42 37 49 51 48 40 43 40 81 76 79 77 80 77 80 80 77 78
+16 15 15 14 18 18 17 14 15 14 29 27 28 28 29 28 29 29 28 28
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+4 4 4 4 4 4 4 4 4 4 8 8 8 8 8 8 8 8 8 8
+36 38 31 35 35 35 36 39 37 40 66 68 66 67 66 67 66 66 68 67
+38 38 33 35 37 37 38 39 38 39 69 70 69 70 69 70 69 69 70 70
+32 32 29 29 32 32 32 32 32 32 59 59 59 59 59 59 59 59 59 59
+32 32 29 30 33 33 33 32 32 33 60 60 60 60 60 60 60 60 60 60
+42 42 38 39 43 43 43 42 42 43 78 78 78 78 78 78 78 78 78 78
+155 156 144 145 163 178 196 192 201 173 342 339 331 333 334 333 334 348 347 350
+154 151 148 140 169 190 206 182 199 163 344 333 329 328 335 328 336 349 342 348
+145 138 144 128 167 192 201 161 183 145 324 304 306 301 315 301 315 327 314 322
+122 113 124 105 146 165 166 125 143 115 262 241 246 241 255 240 255 262 248 255
+99 89 102 83 123 138 132 94 107 89 203 183 191 185 199 184 199 202 188 195
+68 60 72 56 89 96 87 60 68 59 133 117 125 120 131 120 131 131 120 125
+25 18 43 17 101 114 73 17 19 17 56 23 36 25 49 25 53 47 24 29
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+16 88 9 33 10 10 10 76 12 118 12 51 26 45 13 39 13 12 42 27
+30 31 26 28 29 29 30 31 30 32 54 55 55 55 54 55 54 54 55 55
+44 45 39 41 43 43 44 46 45 47 81 82 81 82 81 82 81 81 82 82
+131 183 107 160 121 124 149 355 267 331 315 403 330 368 308 368 307 347 409 387
+77 89 66 79 77 80 107 229 196 180 211 254 207 229 199 229 199 235 265 258
+254 273 228 249 260 292 459 630 637 420 819 875 764 806 767 807 769 884 927 929
+219 223 205 205 237 306 473 447 531 271 719 705 644 658 668 658 670 764 758 779
+163 159 166 147 199 308 399 269 373 182 537 484 465 460 496 460 498 561 527 555
+170 161 191 148 242 432 497 209 378 170 596 485 495 469 547 469 549 613 538 586
+192 172 276 161 388 616 618 202 358 177 684 500 551 499 629 499 633 688 562 632
+157 133 260 125 420 594 520 143 216 133 535 337 416 354 491 354 495 518 384 452
+152 115 290 111 593 752 564 117 147 111 520 238 383 289 480 287 485 478 291 378
+91 54 196 54 462 519 320 49 61 48 260 97 163 106 228 106 247 215 100 127
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+54 335 27 123 29 30 29 284 35 453 33 188 90 163 35 145 35 35 152 92
+144 561 114 315 123 120 126 777 270 990 263 655 440 578 316 579 291 350 609 492
+232 554 190 439 207 207 227 1110 587 1197 634 1061 771 939 643 939 639 746 1043 922
+324 480 278 438 311 315 352 1263 872 1156 1004 1369 1069 1227 975 1230 974 1139 1394 1305
+448 469 395 428 450 459 548 1261 1075 989 1350 1579 1328 1445 1285 1447 1286 1476 1641 1599
+652 637 581 585 662 649 879 1138 1147 810 1614 1688 1542 1598 1546 1599 1549 1700 1756 1758
+832 813 721 745 818 799 1057 1011 1123 761 1735 1722 1663 1677 1686 1676 1689 1779 1773 1793
+778 777 659 711 742 963 1156 850 1097 768 1736 1651 1621 1612 1671 1611 1675 1773 1719 1764
+560 554 543 509 657 1145 1294 567 1008 569 1666 1422 1444 1387 1560 1386 1566 1704 1540 1645
+405 380 592 355 833 1347 1346 417 745 389 1500 1099 1215 1099 1386 1097 1395 1512 1235 1390
+307 260 591 249 989 1427 1235 281 440 258 1240 735 941 782 1132 780 1142 1198 856 1029
+216 157 454 154 952 1211 895 159 206 147 814 345 588 431 750 429 757 744 432 577
+128 71 298 72 703 782 480 62 81 59 385 131 238 144 338 144 365 315 136 178
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+62 372 30 141 32 32 32 310 38 501 37 210 105 183 41 168 39 38 170 103
+147 569 116 321 124 122 128 778 269 993 274 663 449 586 323 588 303 357 616 499
+234 561 192 444 209 209 228 1106 585 1197 641 1067 779 947 650 947 646 753 1048 927
+327 485 280 442 313 318 354 1259 869 1155 1012 1375 1078 1235 984 1237 982 1146 1400 1310
+453 474 401 432 456 464 549 1256 1070 989 1359 1585 1338 1453 1295 1455 1296 1483 1646 1605
+669 652 596 598 680 663 883 1132 1140 816 1626 1696 1556 1610 1561 1611 1563 1707 1761 1763
+541 537 483 493 552 616 927 875 1023 556 1479 1457 1363 1384 1400 1385 1404 1550 1540 1573
+438 433 404 398 466 743 974 623 905 455 1368 1245 1203 1190 1275 1190 1280 1421 1343 1408
+335 322 363 297 454 831 951 378 717 336 1180 970 991 942 1089 941 1094 1211 1071 1160
+256 233 375 218 527 840 837 265 471 238 933 681 754 682 861 681 866 939 765 862
+253 214 469 204 771 1099 950 230 353 213 969 587 744 623 888 621 895 936 677 808
+222 161 467 157 968 1226 903 161 209 150 829 356 602 442 765 440 772 757 440 588
+155 83 376 85 867 959 585 71 95 67 471 154 295 170 419 170 447 384 160 214
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+70 400 33 158 35 35 34 327 41 537 40 228 118 199 47 188 42 42 185 113
+154 583 121 332 130 127 134 784 273 1003 292 680 465 603 339 604 323 372 632 514
+237 568 194 450 211 211 230 1104 582 1197 648 1074 787 955 659 954 655 759 1055 934
+329 489 282 446 316 320 356 1254 864 1154 1019 1380 1085 1241 991 1244 989 1151 1404 1315
+457 476 403 434 459 467 549 1249 1064 987 1363 1588 1343 1458 1301 1460 1301 1486 1648 1606
+658 642 586 589 668 654 872 1122 1130 807 1615 1685 1545 1599 1550 1600 1552 1696 1750 1752
+848 828 734 759 831 808 1051 1004 1111 771 1739 1728 1674 1687 1696 1686 1698 1780 1774 1792
+797 796 671 729 754 966 1144 848 1085 785 1739 1661 1634 1626 1681 1625 1684 1773 1723 1764
+574 570 562 524 680 1142 1280 577 997 584 1674 1437 1461 1405 1573 1405 1579 1710 1551 1651
+412 386 604 361 843 1346 1336 422 736 396 1508 1112 1230 1114 1399 1113 1407 1520 1245 1398
+305 257 554 245 894 1260 1088 277 414 255 1135 702 880 743 1044 741 1052 1097 803 951
+219 158 444 154 895 1126 829 158 204 147 780 352 574 429 722 427 728 713 424 559
+160 85 390 88 860 947 577 73 98 69 473 158 308 178 430 176 451 387 164 222
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+75 404 34 166 36 36 36 323 43 539 43 233 127 205 52 199 45 44 190 118
+152 585 120 333 128 126 132 777 268 997 296 677 464 602 339 603 328 370 629 512
+237 572 194 454 212 211 231 1095 576 1191 652 1074 790 957 662 956 658 761 1054 934
+330 491 283 447 317 321 356 1245 857 1149 1022 1381 1088 1243 995 1246 993 1152 1403 1314
+456 476 403 434 459 467 545 1238 1054 982 1362 1584 1343 1456 1301 1458 1301 1483 1643 1602
+417 440 373 402 426 464 810 1188 1200 725 1561 1677 1448 1537 1455 1538 1459 1695 1785 1787
+677 667 596 611 678 709 986 934 1063 657 1606 1588 1512 1529 1543 1529 1546 1664 1655 1682
+680 677 588 620 666 900 1091 777 1027 680 1628 1534 1503 1493 1558 1492 1562 1668 1608 1657
+526 518 535 477 657 1137 1280 541 978 533 1651 1396 1423 1362 1543 1361 1550 1689 1517 1625
+420 395 594 369 818 1272 1259 428 711 404 1451 1090 1200 1093 1353 1092 1361 1462 1211 1350
+315 266 612 255 1004 1425 1221 286 433 264 1255 754 962 802 1151 800 1160 1210 870 1041
+223 160 469 156 956 1202 878 160 205 150 820 360 599 442 757 440 764 747 432 579
+148 79 360 81 766 839 510 69 89 65 424 144 285 164 394 163 405 347 149 203
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+11 11 10 10 11 11 11 11 11 11 20 20 20 20 20 20 20 20 20 20
+59 66 50 60 55 54 56 69 62 73 106 114 110 113 107 112 107 108 113 111
+115 137 95 123 105 105 113 160 136 167 221 247 229 239 221 239 221 227 245 238
+153 181 129 164 144 147 166 237 207 232 324 360 330 346 321 346 321 337 362 353
+180 203 157 186 175 185 218 287 267 261 414 446 412 428 406 428 406 431 454 448
+196 211 178 194 200 222 268 306 308 261 482 498 466 478 467 478 468 500 513 514
+159 160 148 149 167 182 199 194 202 176 348 346 338 340 341 340 342 355 354 357
+157 154 151 143 173 193 207 184 200 166 350 339 335 334 342 334 342 355 348 353
+185 173 213 160 269 452 510 223 385 183 633 520 532 505 585 505 588 648 572 620
+132 121 136 113 161 183 182 134 155 124 287 262 270 263 280 262 280 287 270 279
+102 91 106 85 126 140 133 96 109 91 208 188 196 190 204 190 204 206 192 199
+77 66 82 62 101 110 98 67 75 65 149 131 140 134 147 134 147 146 134 139
+55 40 85 38 145 156 106 38 42 38 112 68 92 73 108 73 109 100 69 79
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+60 264 28 119 30 29 30 208 36 349 36 160 95 142 45 142 38 37 132 86
+155 593 122 341 131 128 134 768 261 991 310 684 474 610 349 611 344 379 635 518
+239 579 196 460 214 213 232 1077 565 1178 658 1075 797 960 670 960 666 765 1054 935
+332 496 285 451 318 322 357 1228 843 1139 1028 1381 1095 1247 1002 1249 1000 1155 1402 1314
+456 476 403 434 459 467 538 1218 1036 973 1361 1579 1344 1455 1303 1457 1303 1479 1636 1595
+673 655 599 601 683 666 867 1102 1108 808 1621 1687 1557 1607 1561 1608 1563 1696 1747 1748
+853 832 736 762 835 810 1039 991 1092 775 1734 1724 1675 1686 1695 1686 1697 1772 1766 1783
+808 809 677 739 760 965 1127 839 1067 796 1737 1664 1641 1632 1684 1632 1687 1767 1721 1758
+422 409 456 378 567 984 1108 453 832 424 1420 1183 1210 1154 1321 1153 1328 1453 1293 1393
+278 254 422 238 588 925 910 285 498 259 1033 756 841 759 958 758 964 1039 847 953
+183 153 327 146 517 715 613 164 240 153 650 409 509 432 600 431 605 627 463 545
+152 113 276 108 519 639 472 112 138 108 471 243 361 282 440 281 444 433 275 348
+123 68 279 69 548 595 363 61 76 59 321 123 231 142 307 141 308 267 127 169
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+62 245 31 117 33 33 33 192 40 321 43 156 98 140 54 140 46 45 131 89
+103 240 76 160 84 82 86 289 136 364 174 294 226 270 186 270 185 195 278 240
+127 213 99 175 111 110 122 321 206 347 261 361 293 333 264 333 263 286 356 326
+162 235 135 208 152 154 180 476 344 448 426 551 449 503 417 504 416 470 558 527
+399 425 351 387 399 409 478 1064 905 853 1193 1385 1179 1276 1142 1277 1142 1296 1434 1397
+226 243 202 222 231 258 406 565 568 375 757 808 708 747 711 747 712 815 855 856
+143 144 132 134 150 159 170 166 172 156 302 300 295 296 297 296 297 306 305 307
+142 140 135 130 153 166 175 160 170 148 303 295 293 292 297 292 298 306 301 305
+197 183 212 171 253 326 349 231 294 194 516 460 467 454 492 454 494 523 486 509
+180 160 207 150 256 325 321 184 239 163 450 382 402 383 430 383 431 449 403 428
+100 90 104 85 124 136 129 95 107 90 205 185 193 187 201 187 201 203 190 196
+75 65 80 61 97 105 94 65 73 64 146 129 137 131 143 131 143 143 131 136
+56 40 88 38 148 159 106 38 42 38 112 67 93 73 109 73 110 100 68 79
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+82 361 38 168 39 38 39 278 47 474 50 223 136 199 68 200 55 53 185 122
+145 531 110 312 118 115 121 668 229 867 282 607 425 543 317 544 312 340 563 461
+223 542 183 431 199 198 215 984 514 1082 613 995 742 891 626 891 622 710 974 865
+301 459 257 417 288 292 324 1119 764 1044 945 1270 1008 1148 922 1150 920 1060 1288 1206
+383 412 336 375 383 393 466 1119 941 886 1229 1442 1215 1322 1174 1324 1174 1343 1496 1455
+770 735 684 675 781 742 866 1022 1025 822 1591 1631 1553 1583 1555 1583 1557 1636 1666 1667
+250 254 234 234 270 342 497 466 548 303 790 774 717 730 740 730 743 832 825 846
+206 200 207 186 240 297 340 271 321 222 538 506 497 493 515 493 517 551 531 547
+197 183 212 171 253 323 346 230 291 193 514 459 465 453 490 452 492 520 483 506
+181 161 208 151 257 326 321 184 240 164 452 384 404 385 432 385 434 451 405 430
+156 133 186 124 242 293 265 141 176 133 359 292 319 298 345 298 346 352 306 328
+78 68 83 63 102 110 98 67 76 66 151 133 142 136 149 136 149 148 135 141
+57 41 90 39 150 160 107 39 43 39 114 69 95 75 112 75 112 102 70 81
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+66 247 33 122 35 34 35 191 42 322 46 161 103 145 59 145 50 48 135 93
+148 535 112 316 120 117 123 664 228 864 289 611 431 548 323 549 319 346 567 465
+187 376 149 305 163 162 179 617 353 677 448 668 522 608 455 608 453 503 656 592
+268 384 227 346 254 258 290 807 574 761 739 955 781 874 724 875 723 815 967 912
+358 387 314 352 356 367 428 896 766 730 1031 1187 1021 1099 990 1100 990 1114 1226 1197
+474 477 424 438 483 493 657 841 845 617 1225 1281 1172 1214 1175 1215 1177 1289 1332 1333
+142 146 135 134 158 205 297 279 327 181 455 445 410 418 425 418 426 482 477 490
+160 157 153 146 175 195 208 185 201 168 355 344 340 339 347 339 347 359 352 358
+116 112 111 105 126 135 138 122 130 116 237 229 230 228 234 228 234 238 233 236
+167 149 185 140 225 275 271 169 211 152 398 347 362 347 383 347 384 397 362 381
+110 98 116 91 139 155 146 102 117 97 227 203 213 205 222 205 222 224 208 216
+60 54 60 50 71 74 69 54 58 53 113 104 108 105 111 105 112 111 105 108
+39 33 42 31 51 52 45 32 35 32 70 62 67 64 70 64 70 68 62 65
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+3 3 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6
+16 16 14 14 16 16 16 16 16 16 29 29 29 29 29 29 29 29 29 29
+37 37 33 34 37 37 37 37 37 38 67 68 68 68 67 68 67 67 68 68
+105 149 86 130 99 100 115 288 209 273 249 322 263 295 244 295 243 274 326 307
+91 106 77 94 90 94 119 245 209 199 244 290 242 264 233 264 233 268 301 292
+144 149 131 138 147 154 166 173 174 164 302 306 298 301 298 301 298 307 310 310
+121 123 112 112 131 169 253 235 280 148 380 372 342 348 354 348 355 403 399 410
+137 133 140 122 168 257 324 213 297 150 445 400 388 382 413 382 415 463 434 457
+156 147 186 135 235 396 442 185 326 154 551 448 461 437 508 437 511 563 494 536
+149 130 199 121 266 379 369 151 230 132 444 340 373 343 415 342 417 443 372 411
+133 111 193 104 279 363 314 117 158 110 363 255 301 266 341 266 343 351 278 314
+69 61 72 57 86 91 83 61 67 60 133 120 126 122 131 122 131 130 121 125
+30 26 30 24 35 36 32 25 27 25 53 49 51 50 53 50 53 52 49 50
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+14 14 12 13 14 13 14 14 14 14 25 25 25 25 25 25 25 25 25 25
+16 16 14 14 16 16 16 16 16 16 29 29 29 29 29 29 29 29 29 29
+83 149 65 118 74 74 79 230 139 253 159 235 185 214 162 214 161 177 230 208
+101 144 83 126 95 96 110 278 202 265 238 310 253 283 234 284 233 263 314 295
+113 132 96 118 111 116 147 293 250 240 307 360 304 331 294 331 294 335 373 363
+121 130 108 118 124 139 206 279 280 194 363 387 340 358 341 359 342 390 408 409
+88 88 81 82 91 92 94 92 93 92 170 170 169 169 170 169 170 171 171 171
+109 108 101 100 114 119 122 116 119 112 217 214 213 213 215 213 215 218 216 218
+82 80 76 75 86 88 89 84 86 83 159 156 156 156 158 156 158 159 157 158
+199 176 279 164 374 544 529 201 315 179 637 483 532 487 595 486 599 636 531 588
+107 96 112 90 134 148 139 100 113 95 220 198 207 200 215 200 216 218 203 210
+73 64 76 60 92 98 89 64 71 63 140 126 133 128 138 128 139 138 128 132
+65 46 101 44 162 172 115 44 48 44 128 78 108 86 126 86 125 114 80 92
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+75 275 35 140 37 36 37 207 44 355 47 178 115 161 66 162 53 51 149 103
+154 590 120 349 128 126 131 711 227 934 317 667 475 601 357 602 352 379 618 508
+135 279 108 224 119 119 129 451 253 500 318 481 374 438 324 437 323 358 471 424
+225 342 189 307 211 214 243 749 517 708 663 876 706 797 650 798 648 736 886 831
+137 165 116 147 131 141 181 338 292 282 377 437 374 404 362 404 362 408 452 440
+142 153 127 139 146 162 257 362 363 239 479 513 448 473 450 474 451 517 543 544
+158 162 151 149 175 227 324 303 355 200 509 497 461 469 476 469 478 536 531 545
+175 171 175 157 207 341 440 269 398 188 617 552 535 527 572 527 574 641 600 632
+165 154 198 143 248 412 457 193 336 162 578 472 487 461 535 461 538 590 519 562
+162 144 235 134 319 473 457 163 262 146 537 400 444 404 501 403 503 537 442 493
+294 248 591 238 931 1275 1065 262 370 246 1153 709 902 757 1067 755 1075 1106 803 953
+185 130 347 126 631 763 550 128 158 124 564 291 435 339 530 337 534 516 324 412
+96 58 188 57 327 347 214 54 62 54 216 102 171 120 213 119 210 185 104 132
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+117 469 51 236 52 51 52 345 62 604 71 302 193 273 106 274 82 77 252 171
+178 670 139 399 148 145 152 797 255 1049 370 762 547 688 415 689 410 438 706 583
+261 632 213 507 232 231 249 1083 560 1208 722 1144 869 1033 739 1032 735 826 1118 996
+355 534 305 486 341 345 376 1210 825 1146 1087 1434 1159 1307 1066 1309 1064 1207 1449 1361
+502 513 445 469 507 512 550 1190 1013 980 1424 1627 1414 1515 1374 1517 1374 1530 1675 1636
+781 745 694 684 793 754 892 1073 1075 848 1683 1729 1640 1675 1642 1675 1643 1734 1770 1770
+970 941 824 860 933 868 1032 987 1059 850 1775 1771 1751 1755 1759 1754 1761 1791 1788 1795
+885 890 724 813 809 976 1094 847 1038 868 1754 1707 1695 1688 1722 1687 1724 1772 1742 1766
+633 634 631 582 750 1120 1211 620 946 648 1690 1491 1520 1470 1613 1469 1619 1716 1580 1664
+442 418 654 391 886 1326 1280 444 696 427 1544 1169 1294 1180 1451 1178 1459 1549 1286 1429
+336 284 667 272 1041 1417 1182 299 415 281 1296 806 1021 860 1202 858 1211 1243 909 1074
+280 187 582 184 1090 1323 937 183 230 174 945 451 715 539 885 537 892 857 509 671
+203 101 489 104 897 952 557 86 109 83 519 180 388 236 514 233 504 426 186 268
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+39 93 22 57 25 24 24 74 29 118 34 72 54 67 40 67 37 36 64 50
+100 242 73 162 81 79 83 276 123 355 169 286 221 264 182 264 180 188 269 232
+237 553 192 446 210 208 226 924 485 1032 634 990 759 897 649 896 646 721 967 864
+272 407 230 368 257 261 291 866 600 825 795 1038 846 949 780 950 779 878 1048 986
+272 307 236 278 268 278 332 703 596 578 813 942 807 871 782 872 782 879 972 947
+300 315 268 288 306 330 481 652 653 453 930 985 880 921 882 922 884 990 1033 1033
+346 348 318 320 365 444 670 621 738 387 1110 1088 1014 1030 1046 1031 1049 1167 1156 1184
+200 195 201 180 237 378 480 300 435 214 688 618 601 592 640 592 643 713 668 703
+230 215 279 200 347 570 628 267 461 225 821 675 696 660 763 660 767 837 738 799
+220 194 327 182 441 649 625 221 354 197 754 565 627 570 705 570 709 753 622 693
+193 158 328 150 488 646 545 167 230 156 621 411 503 435 581 434 585 598 455 525
+167 119 285 114 484 575 420 117 143 113 458 262 366 296 434 295 437 422 285 348
+96 60 170 58 278 293 185 55 63 55 200 107 164 124 198 123 197 175 109 133
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+15 16 14 14 15 15 15 16 15 16 28 28 28 28 28 28 28 28 28 28
+50 53 43 49 48 47 48 54 51 57 90 94 92 94 91 94 91 91 94 92
+108 187 83 153 93 92 102 270 169 298 215 303 246 280 219 280 218 236 297 271
+130 186 105 164 118 121 142 329 243 318 314 398 332 368 310 368 309 343 402 380
+137 145 121 133 136 139 150 167 161 162 280 289 279 284 277 284 277 285 291 290
+151 156 137 144 154 161 174 182 182 173 318 323 314 318 314 318 314 324 327 327
+158 159 147 148 166 178 191 186 193 173 340 338 332 333 335 333 335 345 344 347
+140 137 132 128 150 160 167 153 162 145 293 286 285 284 288 284 288 295 291 294
+94 92 88 85 99 103 104 96 100 94 184 180 181 180 182 180 182 184 182 183
+124 115 125 108 145 160 158 124 138 117 260 242 248 243 255 243 255 259 247 254
+95 86 96 81 112 120 115 89 98 86 188 174 180 176 186 176 186 187 177 182
+170 119 309 115 540 645 463 117 142 114 493 266 388 307 466 306 470 452 293 366
+167 87 381 88 675 712 418 76 92 74 404 153 310 198 402 196 394 336 157 220
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+18 18 15 16 17 17 17 18 17 19 32 32 32 32 32 32 32 32 32 32
+39 41 35 37 39 38 39 41 40 43 72 73 72 73 72 73 72 72 73 73
+92 100 78 92 87 86 91 108 99 112 172 183 176 180 172 180 172 174 182 179
+62 63 56 58 62 62 63 65 64 66 116 118 117 117 116 117 116 117 118 117
+86 87 77 81 86 87 89 92 91 92 164 166 164 165 164 165 164 165 167 166
+107 108 97 100 108 111 114 116 116 114 209 210 208 209 208 209 208 210 211 211
+182 187 174 172 202 260 363 339 395 229 587 574 535 543 552 544 554 617 611 626
+78 77 71 72 80 82 82 80 81 80 149 148 148 148 148 148 148 149 149 149
+113 110 108 102 122 130 131 118 124 113 229 222 223 221 226 221 226 229 225 228
+91 87 87 81 100 104 104 91 96 89 179 173 175 173 178 173 178 179 175 177
+92 84 92 79 108 115 110 87 95 84 182 169 174 170 179 170 179 180 171 176
+51 48 50 44 58 60 57 47 50 47 96 91 94 92 95 92 95 95 91 93
+17 16 16 15 18 18 17 16 16 16 31 30 30 30 30 30 30 30 30 30
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+9 9 8 8 9 9 9 9 9 9 17 17 17 17 17 17 17 17 17 17
+32 32 28 30 32 31 32 33 32 34 58 59 59 59 58 59 58 58 59 59
+58 60 51 55 57 57 58 62 60 63 108 110 109 110 108 110 108 108 110 109
+82 84 72 78 81 81 84 89 86 90 155 158 155 157 154 157 154 156 158 157
+78 79 70 73 79 80 81 82 82 83 149 150 149 149 148 149 148 149 150 150
+89 89 80 82 90 91 93 93 93 93 170 171 169 170 169 170 169 171 171 171
+93 93 85 86 96 97 99 97 98 97 180 180 179 179 179 179 179 181 181 181
+84 83 77 77 86 88 89 86 87 86 161 160 160 159 160 159 160 161 161 161
+42 41 38 38 42 43 43 42 42 42 78 77 77 77 77 77 77 78 77 78
+92 88 88 82 101 106 105 92 97 90 181 175 177 175 180 175 180 181 177 179
+97 88 98 83 115 124 118 91 100 88 194 179 185 180 191 180 191 192 182 187
+70 62 71 58 84 88 81 61 67 60 132 120 126 122 130 122 131 130 122 125
+26 24 25 22 29 30 28 23 25 23 47 45 46 45 47 45 47 47 45 46
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+35 87 19 53 21 20 21 66 25 109 29 66 49 62 36 62 32 31 58 45
+68 198 49 124 55 54 56 222 83 293 110 211 156 193 122 193 120 126 196 163
+107 185 81 151 91 90 99 262 164 292 210 296 241 274 214 273 213 230 290 264
+115 166 94 146 107 108 124 299 216 289 276 353 292 325 272 325 271 301 356 335
+130 154 111 139 127 133 165 319 271 267 358 415 356 385 345 385 345 387 428 417
+196 211 176 193 200 223 326 442 442 312 628 668 595 623 596 624 597 671 701 701
+175 178 164 163 190 245 369 340 408 211 606 592 548 557 567 558 569 639 632 649
+148 143 153 132 182 273 335 220 304 160 480 433 423 416 449 416 450 497 466 490
+120 116 115 108 131 139 141 125 133 120 245 237 238 236 242 236 242 246 240 244
+126 117 127 109 147 161 159 125 139 118 263 245 251 246 258 246 259 262 250 257
+185 150 294 142 423 545 458 157 210 148 544 375 450 395 512 394 515 524 408 465
+147 105 236 100 380 444 325 103 123 100 369 223 302 250 352 249 354 341 240 286
+118 69 225 68 367 383 233 63 72 63 251 123 204 149 250 148 247 216 125 159
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+111 376 49 207 51 49 50 265 60 474 72 256 174 235 107 236 87 81 216 153
+72 159 52 109 59 58 60 174 83 226 107 178 139 165 115 165 115 118 167 144
+227 524 183 424 200 198 214 827 433 936 599 918 714 837 615 836 612 675 895 802
+317 486 271 441 302 305 334 1019 692 982 959 1251 1025 1148 945 1150 943 1056 1261 1185
+416 441 366 402 416 424 461 1016 856 846 1234 1417 1230 1320 1193 1321 1192 1326 1456 1420
+564 559 503 512 574 573 736 941 940 703 1445 1506 1393 1437 1395 1438 1396 1510 1557 1557
+695 684 609 627 693 711 903 854 947 671 1543 1529 1480 1491 1501 1490 1503 1581 1573 1592
+658 656 570 601 648 889 1046 722 965 664 1635 1539 1518 1504 1572 1504 1576 1669 1607 1654
+368 353 428 327 521 828 897 395 657 366 1224 1028 1061 1011 1149 1010 1154 1243 1111 1191
+175 154 257 144 343 491 467 173 267 156 572 431 479 437 536 436 539 569 472 524
+154 126 254 119 370 479 400 131 175 125 464 313 381 331 437 330 439 446 343 393
+158 112 252 106 400 466 341 109 132 106 393 241 323 268 375 268 378 364 258 306
+142 79 283 79 464 485 289 71 82 71 309 142 249 177 308 176 304 264 145 189
+41 21 66 21 88 83 44 18 20 19 52 36 45 37 53 37 53 43 36 37
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+95 283 45 163 48 46 47 203 57 354 68 201 142 186 94 186 80 75 172 127
+185 667 143 415 152 148 155 739 228 990 388 753 558 688 433 689 428 448 698 582
+263 626 214 508 232 230 248 992 509 1126 717 1104 858 1006 737 1006 733 808 1076 962
+350 532 301 484 336 339 367 1104 750 1068 1055 1370 1126 1259 1039 1260 1037 1159 1379 1297
+539 541 479 496 547 549 560 1158 987 982 1467 1655 1463 1556 1424 1557 1424 1561 1695 1658
+686 665 611 610 697 678 815 1000 998 784 1578 1630 1535 1572 1536 1572 1538 1633 1672 1672
+879 857 753 784 855 820 976 930 1002 797 1684 1678 1653 1658 1663 1657 1665 1704 1700 1710
+824 829 681 757 765 933 1038 798 978 818 1678 1628 1618 1610 1646 1609 1648 1696 1664 1688
+594 593 615 545 728 1059 1129 589 870 607 1614 1422 1456 1406 1543 1405 1548 1634 1504 1583
+427 401 640 375 853 1232 1171 424 632 409 1469 1122 1244 1137 1386 1136 1393 1466 1225 1354
+332 280 661 268 996 1318 1080 291 383 277 1241 791 996 846 1160 844 1168 1187 880 1030
+301 192 629 189 1119 1328 918 186 228 179 969 474 746 568 915 566 922 876 528 688
+244 116 571 120 973 1014 577 97 121 94 580 204 448 286 578 283 568 478 209 311
+41 0 103 2 149 136 47 0 0 0 30 0 16 0 32 0 33 11 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+148 502 64 281 66 63 64 347 76 629 98 346 238 319 148 320 121 111 292 209
+171 539 126 349 136 132 138 589 204 787 335 617 466 567 370 567 366 381 574 484
+222 465 177 381 194 193 208 698 384 789 546 803 640 738 560 738 557 606 783 708
+275 409 228 368 253 257 293 757 536 737 759 965 806 893 750 894 748 827 971 917
+328 377 283 342 320 334 394 727 625 624 910 1035 909 969 883 970 883 972 1061 1036
+398 419 357 384 406 437 590 765 763 570 1151 1211 1102 1145 1103 1145 1105 1214 1260 1259
+304 311 291 287 334 423 575 537 623 375 978 958 899 912 925 912 928 1023 1014 1037
+424 413 410 382 476 685 821 551 748 444 1261 1158 1138 1123 1194 1123 1198 1295 1229 1279
+291 269 348 250 421 612 655 335 497 280 920 778 803 767 865 767 869 931 836 893
+253 233 360 218 443 614 582 247 360 237 783 620 676 627 740 626 743 776 666 724
+198 169 316 163 401 507 427 172 220 171 617 470 538 488 591 488 593 599 499 548
+145 116 180 108 243 271 216 115 130 116 293 229 263 240 286 240 287 280 236 255
+75 59 89 54 114 117 89 57 60 58 129 105 120 111 128 111 128 123 106 113
+20 14 23 13 29 28 19 15 14 15 27 22 26 24 27 24 27 25 22 23
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+60 162 30 97 33 31 32 116 38 201 43 116 84 108 58 109 51 48 100 75
+109 309 79 203 86 84 88 334 125 445 192 346 263 319 211 319 209 216 322 272
+136 292 106 236 118 117 126 438 237 498 322 486 382 445 331 444 329 360 473 425
+175 272 145 243 162 164 186 524 361 511 497 646 532 594 491 595 490 546 650 611
+158 187 136 169 154 161 195 418 349 349 481 562 481 520 464 520 464 521 579 563
+200 215 179 197 204 226 325 440 438 314 638 677 606 634 607 634 608 679 709 709
+237 241 223 222 257 327 488 449 536 281 831 812 756 768 781 769 783 873 864 886
+276 268 270 247 316 545 695 397 617 289 1042 933 912 896 972 896 976 1079 1008 1062
+286 270 355 251 436 710 768 314 546 280 1041 858 891 844 973 844 977 1057 934 1008
+267 239 419 225 560 814 768 262 409 243 953 712 797 723 895 722 900 948 782 870
+296 247 565 236 837 1093 895 256 333 244 1048 682 849 728 983 726 989 1003 753 874
+282 182 558 178 955 1123 779 176 215 169 850 439 666 518 806 516 811 771 484 615
+212 103 478 105 797 827 470 88 106 86 485 179 379 249 483 247 477 402 183 268
+75 50 130 45 182 169 85 74 59 74 93 81 82 73 95 73 95 78 82 75
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+178 609 74 342 74 72 73 409 86 758 113 417 287 385 177 386 144 130 350 249
+200 739 155 464 165 160 167 798 236 1078 430 828 618 759 481 760 476 495 767 640
+275 646 223 526 243 241 258 990 509 1132 742 1128 886 1033 765 1033 760 832 1098 985
+379 578 327 527 365 368 394 1170 790 1140 1142 1476 1221 1361 1128 1362 1126 1251 1484 1397
+548 548 487 502 556 558 563 1141 973 978 1474 1657 1473 1562 1435 1563 1435 1564 1694 1657
+866 812 769 744 880 821 900 1039 1036 875 1721 1752 1697 1719 1697 1718 1698 1752 1775 1774
+862 841 739 769 840 811 963 918 989 787 1671 1663 1638 1643 1648 1642 1650 1691 1687 1697
+792 795 659 726 742 918 1024 777 960 789 1657 1601 1591 1582 1622 1581 1624 1676 1640 1667
+573 571 606 525 718 1043 1107 572 843 585 1593 1398 1434 1384 1522 1383 1527 1612 1480 1559
+424 397 640 372 848 1211 1143 419 615 405 1456 1115 1237 1132 1376 1130 1382 1450 1214 1339
+360 306 724 293 1079 1413 1149 316 405 302 1345 865 1086 926 1261 924 1269 1285 958 1117
+327 206 665 203 1142 1342 924 198 243 190 1007 510 786 607 954 604 961 911 563 723
+254 119 587 123 976 1011 569 99 123 97 588 208 458 298 586 295 578 485 212 320
+88 54 158 49 222 206 99 83 65 82 105 88 92 78 108 78 108 87 89 81
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+183 618 75 350 76 73 74 412 87 768 118 425 294 393 183 394 150 135 357 255
+204 752 159 474 168 163 170 805 236 1090 440 842 631 773 492 774 487 505 779 651
+285 693 233 564 253 251 268 1063 536 1219 790 1211 948 1107 816 1108 811 888 1177 1054
+385 587 333 535 372 374 400 1172 792 1146 1155 1489 1235 1375 1142 1376 1140 1264 1497 1409
+559 556 498 509 568 569 571 1140 973 982 1486 1666 1486 1573 1448 1574 1448 1574 1702 1665
+462 486 414 446 471 505 777 1120 1113 744 1680 1790 1593 1671 1594 1672 1597 1793 1876 1875
+973 944 823 862 933 863 973 935 984 857 1702 1702 1698 1699 1699 1698 1700 1706 1706 1707
+837 843 687 769 772 927 1018 796 961 831 1666 1625 1617 1610 1640 1609 1642 1681 1654 1675
+589 588 616 541 728 1041 1100 585 844 602 1597 1411 1446 1397 1530 1396 1535 1615 1488 1564
+435 409 649 383 856 1212 1142 430 620 417 1468 1132 1253 1149 1389 1148 1396 1461 1228 1352
+342 288 648 275 948 1227 1002 298 378 284 1195 788 976 841 1124 839 1131 1144 866 1001
+297 191 556 187 916 1067 744 184 226 176 840 458 670 532 800 530 805 765 499 620
+216 109 438 110 697 720 417 91 112 90 460 198 370 261 458 259 453 389 202 276
+76 27 128 28 171 157 73 17 22 18 88 46 74 53 90 52 91 68 45 50
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+21 21 18 20 21 20 20 21 21 22 38 38 38 38 38 38 38 38 38 38
+61 66 52 60 58 57 58 67 62 71 110 116 113 115 111 115 111 111 115 113
+120 139 100 126 110 109 116 152 133 161 228 249 236 244 229 244 229 232 247 241
+193 285 159 255 178 180 205 492 352 485 503 634 534 589 498 589 497 545 636 602
+197 222 171 204 190 199 229 296 273 276 450 483 450 466 443 466 443 466 489 482
+213 228 193 210 216 236 275 310 309 274 515 531 503 514 503 514 503 532 544 544
+221 224 210 208 238 273 315 302 326 257 556 549 530 534 539 534 539 571 567 575
+169 165 162 154 184 202 212 190 204 175 371 359 357 356 363 356 364 374 367 372
+160 151 159 141 183 204 208 169 188 156 350 331 334 329 343 329 343 352 339 346
+195 171 227 160 275 336 322 189 240 171 478 409 433 412 460 412 462 475 428 452
+103 93 105 87 123 131 124 96 105 92 205 189 196 191 202 191 202 203 192 197
+73 65 74 60 87 90 83 64 69 63 137 125 132 127 135 127 136 134 127 130
+82 54 128 52 188 194 124 51 55 51 150 92 130 106 149 105 149 134 93 109
+23 17 27 15 33 31 22 17 16 17 32 27 31 28 33 28 33 30 27 28
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+117 357 50 209 53 51 51 237 61 440 79 250 177 233 115 233 100 90 212 154
+119 378 87 246 95 92 96 397 132 539 224 416 315 383 249 383 246 254 385 323
+149 284 116 235 129 127 137 396 230 451 331 470 383 436 340 436 338 362 458 417
+138 201 111 177 124 126 147 329 241 326 334 419 355 390 331 390 331 361 421 398
+151 161 134 149 149 153 165 187 179 182 313 325 313 319 310 319 310 319 327 325
+167 173 152 161 170 178 193 204 204 193 358 364 353 358 353 358 354 364 369 369
+90 90 82 82 97 123 182 167 199 106 291 284 263 267 272 268 273 306 303 311
+169 162 175 150 207 303 365 240 328 180 546 494 485 477 513 477 515 563 529 554
+236 215 285 201 346 497 527 269 397 225 746 630 652 623 703 622 706 754 677 723
+271 236 391 222 502 691 649 262 384 238 857 664 733 674 809 674 813 849 717 787
+261 214 407 203 558 698 581 221 280 212 739 531 627 558 703 557 707 712 570 638
+174 125 273 119 416 475 344 122 141 120 419 268 352 297 403 296 405 389 284 330
+167 93 299 92 452 465 279 82 95 82 331 171 277 211 329 210 328 288 175 219
+110 49 193 49 267 245 114 49 50 50 127 81 108 79 131 79 132 99 81 80
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+55 119 30 79 33 32 32 87 38 145 48 96 75 91 57 91 54 51 84 68
+73 164 52 114 59 57 59 170 79 225 109 180 142 167 118 167 117 119 168 145
+129 254 101 208 112 110 119 356 202 407 286 414 334 383 294 383 293 315 403 365
+249 390 208 351 232 234 260 736 500 725 727 939 779 867 720 868 719 794 943 886
+250 287 215 262 244 253 295 648 537 547 787 913 788 849 761 850 761 847 938 911
+335 349 300 320 341 362 507 693 687 495 1056 1117 1010 1052 1010 1053 1011 1118 1164 1162
+237 240 223 221 256 325 478 440 523 280 833 815 762 773 785 773 788 874 865 886
+199 193 201 178 236 367 451 278 402 210 683 616 605 594 641 594 643 704 661 693
+235 218 296 203 362 564 602 262 430 226 834 690 718 680 781 680 785 844 747 805
+247 216 393 204 519 739 689 239 369 218 881 659 739 671 827 670 832 872 720 800
+221 179 409 171 588 755 612 185 240 175 739 490 606 523 696 522 701 706 536 618
+303 190 596 186 984 1141 782 182 220 177 881 465 699 548 839 546 845 799 509 640
+242 114 533 117 857 881 492 96 116 95 531 197 420 284 529 282 525 441 205 298
+130 52 234 52 325 298 133 52 52 53 144 84 120 83 150 83 150 108 85 84
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+192 606 79 356 80 77 78 391 91 744 132 428 304 398 196 399 171 152 361 262
+214 786 166 505 176 171 178 814 234 1115 467 876 664 808 522 809 516 530 810 679
+298 721 243 590 264 261 278 1069 534 1239 823 1248 986 1146 851 1147 846 920 1211 1086
+403 614 349 559 390 391 415 1173 791 1158 1192 1525 1275 1413 1182 1415 1179 1298 1529 1441
+429 480 372 441 420 434 491 1211 989 1012 1479 1728 1483 1603 1429 1604 1429 1598 1776 1724
+478 502 427 460 486 519 780 1123 1112 760 1721 1831 1637 1714 1637 1715 1640 1831 1914 1912
+1192 1145 984 1043 1114 971 1036 1002 1028 993 1851 1862 1888 1882 1874 1881 1875 1831 1836 1824
+1075 1101 832 1000 917 967 994 887 967 1049 1711 1745 1750 1754 1733 1752 1733 1704 1725 1709
+721 737 692 675 803 1032 1070 691 873 751 1634 1513 1537 1505 1592 1504 1595 1645 1563 1611
+438 414 610 386 786 1063 1000 433 578 422 1339 1064 1165 1080 1274 1079 1280 1329 1141 1240
+342 288 628 274 897 1143 929 296 367 283 1141 771 945 821 1079 819 1085 1092 840 961
+330 207 630 203 1020 1178 810 198 241 190 930 505 745 591 888 588 894 846 550 683
+263 124 560 127 886 910 510 103 126 101 565 220 451 311 561 309 558 472 229 325
+128 54 226 54 312 286 130 54 54 55 145 88 123 87 151 87 151 112 88 88
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+15 31 5 22 5 5 5 9 5 33 6 16 11 15 7 15 7 6 12 7
+118 357 49 211 51 49 50 230 59 437 78 248 176 231 114 231 102 90 209 152
+113 324 82 218 89 87 90 332 121 451 202 358 277 332 223 332 221 226 332 282
+100 182 77 149 87 86 92 245 146 280 199 281 230 261 204 261 203 217 274 249
+140 204 112 181 125 127 147 328 240 327 338 423 359 394 336 395 335 365 424 401
+266 322 227 295 255 268 328 628 529 542 796 913 798 854 772 855 772 851 935 910
+275 296 246 271 280 307 408 528 524 404 807 850 775 804 774 805 775 850 883 882
+386 389 359 359 411 483 632 592 673 437 1098 1080 1027 1038 1050 1038 1053 1139 1130 1151
+441 430 424 397 491 654 753 538 689 458 1192 1109 1097 1083 1141 1083 1144 1218 1164 1204
+476 467 512 430 609 849 890 486 681 480 1307 1149 1181 1139 1250 1139 1254 1318 1212 1275
+424 397 650 372 853 1193 1114 417 593 404 1460 1122 1246 1141 1381 1140 1387 1447 1215 1337
+349 295 695 283 1006 1292 1039 303 374 291 1260 828 1032 886 1188 884 1195 1203 908 1050
+311 191 627 188 1029 1190 807 183 220 178 912 475 723 564 869 561 875 825 521 657
+249 113 562 117 902 925 508 96 114 96 548 192 432 288 545 285 542 452 202 300
+142 46 265 48 367 333 140 41 44 42 152 75 123 77 159 77 159 109 75 76
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+16 16 15 15 16 16 16 17 16 17 30 30 30 30 30 30 30 30 30 30
+33 33 29 31 33 33 33 34 33 34 60 61 61 61 60 61 60 60 61 61
+103 186 79 153 89 88 94 249 149 285 205 288 236 268 210 268 209 223 281 255
+128 187 102 165 114 115 134 301 219 300 304 383 324 357 302 357 302 329 384 363
+151 160 133 147 148 152 163 183 176 179 309 321 309 315 307 315 307 315 323 320
+139 142 126 132 141 146 153 157 157 153 282 285 280 282 280 282 280 285 287 287
+145 146 134 135 151 157 164 161 164 155 299 298 294 295 296 295 296 301 301 302
+151 145 157 134 186 271 324 212 290 161 485 439 432 424 456 424 458 500 469 492
+150 135 182 126 224 323 341 169 253 141 469 391 407 387 440 387 442 473 421 452
+176 153 264 144 345 477 444 169 250 155 570 432 483 440 537 440 540 563 469 519
+240 197 457 188 654 836 673 203 255 194 816 540 671 578 770 576 775 779 590 681
+324 199 646 195 1048 1208 820 190 228 185 936 494 745 584 893 582 899 847 541 678
+264 120 583 123 926 948 521 101 121 100 572 206 453 306 568 304 566 474 219 318
+153 53 281 54 389 353 150 49 51 50 166 86 137 87 173 87 174 121 86 87
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+25 54 7 38 7 7 7 13 7 58 9 25 18 25 10 25 10 9 19 10
+183 550 76 330 77 74 75 346 88 669 133 394 285 369 189 370 174 153 334 246
+159 487 116 329 125 121 126 494 167 676 309 547 424 508 341 508 338 344 508 430
+166 310 129 259 142 140 151 415 243 477 366 511 422 476 376 477 375 398 498 454
+201 299 165 268 184 186 210 493 352 492 521 652 554 609 517 609 516 561 654 618
+202 240 173 219 196 204 243 476 399 412 592 682 595 637 575 638 575 634 698 679
+173 192 155 175 176 199 270 352 348 270 526 557 504 525 503 525 504 556 580 579
+231 235 218 216 250 310 428 397 463 273 748 733 690 699 709 699 711 780 773 790
+220 211 230 196 270 385 457 305 410 233 712 647 638 627 672 627 674 731 689 720
+504 496 544 457 649 911 954 510 722 509 1408 1236 1271 1226 1347 1225 1351 1420 1304 1372
+422 396 628 370 815 1119 1044 415 572 403 1392 1083 1198 1102 1319 1101 1325 1378 1167 1277
+366 310 716 297 1025 1307 1049 318 386 306 1292 859 1065 919 1221 917 1228 1233 938 1080
+356 215 713 212 1151 1325 896 206 247 199 1028 542 820 642 982 639 989 930 594 743
+282 128 608 132 955 977 538 107 129 106 601 225 479 329 596 327 596 500 238 340
+163 57 298 59 413 374 159 53 55 55 177 92 147 93 186 93 186 130 92 93
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+25 53 7 37 7 7 7 13 7 56 9 25 18 24 10 25 10 9 18 10
+201 605 81 364 82 79 80 376 93 735 145 433 313 405 206 406 192 167 366 268
+216 788 167 517 176 171 178 792 226 1097 472 874 668 808 528 810 523 533 807 677
+296 720 242 591 262 259 275 1036 512 1212 818 1233 981 1136 849 1137 844 911 1195 1072
+397 616 343 560 383 384 408 1138 762 1135 1178 1504 1263 1397 1170 1398 1168 1279 1506 1419
+427 484 369 446 417 431 486 1184 962 1000 1472 1718 1479 1597 1425 1599 1425 1587 1762 1710
+469 493 419 452 477 509 754 1091 1075 747 1698 1807 1621 1695 1619 1696 1622 1805 1887 1883
+1140 1098 946 1000 1072 951 1019 984 1013 965 1818 1825 1845 1841 1835 1839 1836 1802 1805 1797
+1026 1049 804 953 892 990 1040 881 997 1010 1773 1781 1781 1781 1779 1780 1779 1773 1777 1774
+632 636 642 584 759 1022 1062 621 828 651 1603 1442 1476 1434 1546 1432 1550 1614 1506 1569
+425 399 627 373 811 1105 1031 417 569 406 1384 1082 1194 1100 1313 1099 1319 1369 1163 1271
+316 264 633 253 907 1159 925 271 332 261 1135 747 932 801 1071 799 1078 1082 817 944
+324 200 622 196 981 1124 766 191 229 185 896 491 722 574 858 572 863 813 534 658
+269 125 562 128 872 890 493 104 126 103 561 222 450 316 556 313 556 470 234 325
+157 55 284 57 393 355 151 50 53 51 173 90 144 92 181 92 181 128 90 91
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+7 12 3 9 4 3 3 6 4 13 5 8 7 8 5 8 5 5 7 5
+87 200 44 132 48 46 47 135 55 239 77 159 124 151 93 151 90 83 139 111
+162 491 118 335 127 123 128 491 168 675 314 552 430 513 347 514 344 349 512 434
+241 529 192 438 210 207 221 737 386 859 611 893 721 827 631 828 628 673 867 782
+339 516 288 468 322 324 348 911 621 911 960 1214 1026 1131 954 1132 952 1038 1215 1147
+222 263 190 241 215 223 263 551 456 474 686 795 690 741 666 742 666 736 813 790
+193 208 172 191 196 215 300 409 403 301 619 657 592 618 592 618 593 656 684 683
+561 556 499 510 569 613 793 744 837 567 1411 1392 1341 1352 1363 1351 1366 1450 1441 1462
+686 687 585 628 664 845 944 698 874 692 1543 1479 1470 1458 1505 1458 1507 1565 1522 1554
+520 513 566 473 678 960 1003 525 750 527 1487 1300 1340 1290 1421 1289 1426 1499 1373 1447
+96 92 91 85 104 108 107 95 100 93 187 181 183 181 186 181 186 187 182 185
+47 46 44 43 49 50 49 46 47 47 88 87 87 87 88 87 88 88 87 87
+87 76 91 71 108 113 101 74 81 73 165 148 158 152 163 152 164 161 150 155
+59 49 63 46 75 76 63 46 49 46 103 91 98 94 102 94 102 99 91 94
+16 14 17 13 20 19 16 12 13 13 27 24 26 25 27 25 27 26 24 24
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+2 2 1 1 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
+18 18 16 16 17 17 17 18 17 18 32 32 32 32 32 32 32 32 32 32
+141 366 102 260 110 106 111 365 145 495 258 425 339 398 281 398 279 282 396 342
+193 380 150 318 164 162 174 508 286 590 447 631 519 588 460 589 458 487 614 558
+129 189 103 167 115 116 134 298 216 300 306 385 327 359 305 359 304 330 385 364
+218 259 187 237 211 219 258 543 448 469 678 785 682 733 658 734 658 727 804 781
+259 278 231 256 263 287 381 498 492 383 771 813 741 770 740 770 741 811 843 842
+287 292 274 270 314 397 545 506 590 349 980 960 904 916 929 916 931 1022 1013 1035
+279 268 291 249 339 504 605 386 538 294 963 873 861 846 908 846 912 989 931 974
+277 252 345 235 418 611 641 307 466 262 932 782 813 774 878 774 882 939 839 898
+203 173 280 162 354 468 436 191 269 173 592 465 512 473 561 473 563 584 498 543
+162 136 187 127 228 258 229 139 165 132 349 296 321 303 340 303 341 341 305 322
+148 116 181 109 232 252 201 114 128 113 291 234 266 245 286 244 286 279 240 256
+88 67 103 63 129 130 99 64 68 65 149 123 140 129 148 129 149 141 124 130
+81 31 133 31 176 159 73 24 27 25 94 51 81 57 97 57 97 74 51 55
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+2 2 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4
+32 33 27 30 30 30 30 32 31 34 56 58 57 58 56 58 56 56 57 57
+65 70 55 64 61 60 62 71 65 75 117 123 120 122 118 122 118 118 122 120
+119 208 90 174 99 97 107 267 164 307 237 326 272 305 244 306 243 256 318 291
+244 370 200 332 222 224 251 610 427 614 654 822 698 767 651 768 649 705 822 776
+258 306 221 280 249 259 303 603 503 526 771 886 776 830 750 831 750 824 906 881
+130 141 115 128 132 145 198 267 262 200 390 414 374 390 373 390 374 413 432 431
+305 307 283 283 324 391 552 510 597 344 995 975 921 932 945 932 948 1036 1026 1048
+245 236 246 219 287 450 547 331 483 256 863 781 770 756 813 756 816 888 834 874
+218 201 278 187 343 527 555 238 388 208 787 651 680 644 739 643 742 794 703 757
+211 183 333 172 432 597 550 200 297 184 725 546 612 558 682 557 685 713 593 655
+228 183 426 175 595 750 600 187 235 179 750 505 623 540 711 538 715 716 548 628
+276 171 519 167 801 910 619 163 193 160 734 411 597 479 705 477 710 668 446 543
+251 116 523 118 804 819 448 98 115 98 516 206 414 291 509 289 512 431 217 296
+214 63 402 66 561 503 200 57 60 58 225 101 184 103 238 103 238 159 100 102
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+51 113 11 79 11 10 10 22 11 118 13 49 34 48 14 48 14 13 34 15
+244 718 96 438 96 92 93 427 108 864 182 517 377 486 252 487 246 211 437 321
+231 837 179 559 188 182 189 820 234 1146 508 926 715 860 568 861 562 569 854 719
+292 702 237 579 257 254 269 980 482 1155 796 1189 953 1099 828 1101 823 882 1151 1034
+386 604 332 549 370 372 394 1075 717 1082 1135 1444 1219 1345 1130 1346 1128 1229 1443 1360
+551 561 491 519 560 560 562 1052 893 936 1442 1606 1450 1527 1413 1528 1413 1517 1633 1598
+864 806 768 739 880 826 866 980 973 862 1672 1694 1658 1672 1656 1671 1657 1693 1708 1708
+1068 1032 892 940 1013 914 985 951 982 923 1747 1752 1765 1762 1757 1761 1758 1736 1739 1733
+969 988 766 898 855 956 1004 849 961 959 1707 1709 1708 1708 1709 1706 1709 1710 1709 1710
+686 697 675 639 796 1031 1063 667 845 713 1639 1500 1531 1494 1591 1492 1595 1647 1554 1609
+512 496 715 462 911 1202 1122 508 642 508 1556 1251 1366 1271 1484 1270 1490 1537 1331 1438
+377 321 709 306 990 1242 995 327 386 316 1264 865 1058 922 1201 920 1207 1208 935 1065
+317 188 642 185 1010 1151 768 180 211 176 897 476 719 564 860 562 865 810 521 647
+315 139 662 143 1017 1034 561 115 139 114 650 254 521 364 642 361 646 541 268 369
+238 70 449 73 627 561 221 64 67 66 250 111 205 112 264 112 265 176 111 112
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+57 126 12 90 11 11 11 24 12 132 14 54 38 53 15 53 15 14 38 16
+246 719 95 440 96 92 93 424 108 862 183 517 378 486 253 487 247 211 436 321
+220 791 164 532 172 167 173 770 222 1083 473 870 669 807 531 809 525 531 801 672
+306 718 249 595 270 267 282 991 494 1169 822 1214 980 1125 854 1127 849 907 1176 1058
+392 611 338 555 377 378 401 1074 718 1084 1144 1450 1228 1353 1140 1354 1137 1237 1449 1367
+246 293 210 268 237 246 289 533 449 472 692 789 697 742 675 743 675 736 805 784
+241 260 215 238 244 267 356 473 465 362 736 777 708 736 707 736 708 775 807 805
+311 314 291 290 333 402 547 509 587 358 984 965 914 925 937 925 939 1022 1014 1034
+343 332 339 307 393 593 709 445 629 357 1139 1039 1026 1009 1079 1009 1082 1169 1103 1151
+362 335 434 313 527 760 793 388 579 347 1168 991 1030 983 1106 982 1110 1177 1058 1128
+219 187 304 175 382 501 465 206 287 187 640 505 556 514 608 514 610 631 540 587
+229 184 370 175 497 611 497 188 234 180 652 468 556 494 622 493 625 625 500 559
+90 78 94 73 112 116 104 76 84 75 170 153 163 157 169 156 169 167 155 160
+41 37 41 34 47 47 43 35 37 35 73 68 72 70 73 69 73 72 68 70
+26 20 28 19 34 32 25 19 19 19 40 35 39 36 40 36 40 38 35 36
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2
+12 12 11 11 12 12 12 12 12 12 22 22 22 22 22 22 22 22 22 22
+68 74 58 67 64 62 64 74 68 79 121 128 125 127 122 127 122 122 127 125
+103 113 87 103 97 96 100 118 108 124 192 204 197 201 193 201 193 194 203 199
+131 143 114 131 126 126 134 157 146 159 258 272 262 267 258 267 258 262 272 268
+153 162 135 150 151 154 164 184 177 181 313 324 314 319 311 319 311 318 326 324
+168 173 152 161 170 177 189 199 198 190 354 360 351 354 350 354 351 360 364 363
+175 175 162 163 183 194 206 201 207 189 376 374 368 369 370 369 371 380 379 382
+116 115 108 107 121 125 127 121 124 119 230 227 227 226 228 226 228 230 229 230
+165 156 164 146 188 207 210 172 190 160 359 340 344 339 352 338 353 360 347 355
+150 137 154 128 179 198 192 145 164 137 319 293 303 295 313 295 313 317 300 309
+129 113 136 106 161 174 161 115 129 110 262 235 248 239 257 239 258 258 240 248
+100 85 107 80 128 134 117 82 91 81 189 167 180 172 187 172 188 185 170 176
+34 31 33 29 38 38 35 30 32 31 61 58 60 59 61 59 61 60 58 59
+81 30 136 30 182 163 72 24 26 25 92 47 79 53 95 53 96 71 47 50
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+14 25 6 19 6 6 6 9 6 26 8 15 13 15 9 15 9 8 13 9
+71 144 38 100 42 41 41 99 48 170 65 118 95 113 75 113 74 69 105 86
+96 197 66 147 73 70 74 192 96 257 146 225 184 212 157 212 156 157 210 184
+101 111 86 101 96 94 98 116 107 122 189 201 194 198 190 198 190 192 199 196
+119 127 104 117 115 116 121 138 130 140 231 241 234 238 231 238 231 234 241 238
+93 94 84 87 94 94 96 99 97 99 178 180 178 179 178 179 178 179 180 180
+87 87 79 81 88 89 90 90 90 90 166 166 166 166 166 166 166 166 167 167
+131 131 120 122 135 139 143 141 143 137 262 261 259 260 260 260 260 264 263 264
+146 144 138 134 155 164 168 156 163 150 302 296 296 295 299 294 299 304 300 303
+110 106 103 99 116 121 121 111 116 109 216 211 212 211 214 211 214 216 213 215
+75 73 70 68 79 81 80 75 77 74 143 140 141 140 142 140 142 143 141 142
+123 98 190 92 258 314 257 100 125 95 320 226 271 240 305 239 306 306 242 272
+60 55 58 52 67 68 64 55 58 54 111 105 109 107 110 106 111 110 106 108
+59 50 62 46 73 74 63 46 50 47 103 92 99 95 103 95 103 100 92 95
+17 15 17 14 20 19 17 13 14 14 28 26 28 27 29 27 29 28 26 27
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+4 4 4 4 4 4 4 4 4 4 8 8 8 8 8 8 8 8 8 8
+14 14 13 13 14 14 14 14 14 14 26 26 26 26 26 26 26 26 26 26
+19 19 17 17 19 19 19 19 19 19 35 35 35 35 35 35 35 35 35 35
+41 41 37 38 42 42 42 41 41 42 76 77 76 77 76 76 76 76 77 77
+83 83 74 77 83 84 85 86 85 87 157 158 157 157 156 157 156 157 158 158
+137 139 124 129 139 142 148 152 151 149 275 278 273 275 273 275 273 278 280 279
+139 139 127 129 143 148 153 150 152 146 280 279 276 277 278 277 278 282 281 282
+100 99 92 92 104 106 107 103 105 102 195 193 193 193 194 192 194 195 194 195
+178 166 179 156 206 231 234 186 209 171 397 372 378 371 388 371 389 398 382 391
+173 154 187 145 220 249 240 166 194 154 387 347 362 350 378 350 379 385 357 371
+115 103 118 97 138 147 138 105 115 101 229 210 219 213 226 213 226 226 213 219
+142 112 169 105 211 227 184 109 123 108 276 226 255 236 271 236 272 265 231 246
+115 73 173 70 238 240 152 67 73 68 201 129 178 149 200 148 201 181 132 150
+34 25 38 24 46 43 31 24 24 24 50 43 48 45 51 45 51 47 42 44
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+66 145 14 108 13 12 12 27 13 151 15 63 44 62 17 62 17 15 44 18
+226 643 86 401 86 82 84 368 97 765 166 462 340 436 229 436 224 190 389 286
+77 222 53 152 59 57 59 212 75 298 127 230 178 214 142 214 140 141 211 177
+98 218 75 177 83 82 87 289 149 344 219 332 265 307 229 307 227 243 320 286
+191 307 156 275 174 175 194 511 344 521 534 683 576 637 533 637 532 578 682 641
+508 536 451 497 513 516 527 1023 854 911 1397 1569 1408 1489 1369 1489 1369 1474 1595 1558
+623 609 555 558 635 625 722 894 881 732 1481 1531 1449 1483 1447 1483 1448 1527 1565 1562
+611 605 541 554 617 655 839 789 883 610 1527 1509 1458 1469 1480 1469 1483 1566 1557 1577
+581 578 512 529 585 811 931 630 842 590 1537 1444 1433 1417 1483 1416 1486 1566 1504 1549
+483 473 536 436 643 899 930 490 689 486 1407 1228 1268 1220 1345 1219 1349 1414 1295 1364
+386 356 589 334 755 1016 934 374 505 361 1287 1001 1111 1022 1221 1020 1226 1267 1074 1174
+340 286 643 273 887 1102 877 290 341 281 1132 777 951 830 1077 828 1083 1081 838 953
+281 173 504 169 745 836 570 164 195 161 710 420 589 482 686 480 689 649 450 536
+292 134 576 136 854 862 472 111 132 111 573 252 470 341 568 339 572 484 262 345
+230 58 418 63 567 502 194 37 45 39 239 91 197 111 252 110 253 168 89 98
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+71 156 15 116 14 14 14 29 14 162 17 68 48 67 19 67 19 17 48 20
+242 665 95 420 96 92 93 383 108 788 188 489 366 463 252 464 247 212 415 311
+243 839 179 570 188 182 189 793 231 1125 512 922 719 860 574 861 568 570 849 716
+315 767 256 635 277 274 289 1031 498 1232 864 1282 1036 1189 900 1191 895 953 1238 1112
+421 659 365 599 407 408 428 1123 745 1145 1224 1544 1315 1444 1222 1445 1219 1318 1540 1453
+628 625 565 579 646 642 623 1024 887 940 1481 1612 1490 1551 1460 1551 1460 1539 1631 1603
+1024 926 910 848 1047 954 918 965 961 916 1721 1711 1727 1721 1727 1719 1727 1711 1703 1704
+1259 1205 1031 1095 1170 995 991 969 962 1036 1769 1787 1838 1827 1813 1825 1813 1729 1738 1718
+1124 1161 858 1051 947 971 977 911 958 1107 1708 1765 1771 1779 1743 1778 1741 1695 1731 1705
+827 867 761 790 879 1058 1078 785 903 884 1731 1652 1671 1649 1705 1647 1707 1735 1683 1713
+525 512 751 476 954 1253 1159 521 650 524 1633 1312 1436 1335 1559 1334 1565 1611 1394 1506
+394 338 797 323 1110 1386 1094 343 395 333 1405 949 1174 1018 1335 1015 1343 1339 1028 1175
+398 233 781 230 1187 1336 890 221 261 215 1083 598 882 702 1042 700 1049 980 647 792
+347 148 730 152 1096 1105 589 122 145 122 701 278 566 397 695 395 699 584 292 401
+270 75 501 80 687 610 236 67 71 69 283 119 235 133 299 131 301 200 118 121
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+78 170 16 127 15 14 14 31 15 175 18 74 52 72 21 73 20 18 51 21
+242 662 95 420 96 92 93 378 108 783 188 488 366 462 253 463 247 212 414 310
+236 796 167 545 176 169 176 748 223 1068 483 872 679 813 542 814 536 537 802 675
+312 765 254 633 275 271 286 1023 491 1225 859 1274 1030 1183 895 1185 890 946 1230 1105
+415 656 360 596 402 402 422 1115 737 1139 1215 1535 1307 1436 1214 1437 1211 1309 1531 1444
+626 625 563 579 644 640 622 1021 884 939 1479 1610 1489 1550 1458 1550 1458 1537 1629 1601
+1017 920 904 842 1040 949 914 963 959 913 1716 1706 1721 1716 1721 1714 1721 1707 1700 1700
+1262 1208 1033 1097 1173 998 992 970 963 1039 1770 1788 1840 1829 1815 1826 1814 1730 1739 1718
+1184 1227 893 1110 982 983 977 936 966 1163 1724 1799 1807 1818 1769 1816 1767 1706 1754 1719
+723 742 696 679 815 1014 1036 700 842 758 1637 1524 1550 1520 1599 1518 1602 1642 1567 1611
+479 458 701 428 892 1178 1086 472 602 468 1525 1213 1334 1236 1453 1235 1459 1503 1293 1401
+357 302 729 289 1014 1267 997 306 357 297 1279 860 1067 923 1216 921 1223 1218 932 1067
+368 216 716 213 1083 1217 811 205 242 201 990 551 809 646 954 643 960 897 595 726
+331 144 680 148 1012 1019 547 119 142 119 659 272 536 381 654 379 658 551 285 384
+253 73 463 77 628 557 218 64 68 66 267 116 223 131 282 129 283 192 115 118
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+4 4 3 3 4 4 4 4 4 4 7 7 7 7 7 7 7 7 7 7
+164 425 67 275 69 66 67 247 78 501 126 313 237 297 166 298 163 141 266 201
+132 307 91 226 99 96 100 292 128 401 224 355 289 335 244 335 242 242 331 288
+284 672 229 557 248 244 258 887 435 1062 756 1112 903 1034 788 1036 783 831 1074 966
+382 595 328 540 366 367 388 987 660 1010 1087 1366 1167 1280 1086 1281 1083 1168 1362 1285
+576 592 515 549 588 587 582 1036 879 941 1464 1619 1476 1548 1440 1548 1440 1532 1641 1607
+978 891 870 816 1001 921 905 975 969 907 1720 1720 1720 1720 1719 1718 1719 1720 1719 1719
+1207 1158 994 1053 1129 977 995 970 974 1009 1778 1792 1832 1823 1812 1821 1812 1747 1754 1738
+1239 1288 928 1164 1016 1029 1031 972 1015 1216 1831 1908 1916 1928 1878 1926 1876 1813 1862 1827
+846 893 758 813 869 1006 1019 799 881 911 1662 1616 1627 1614 1647 1613 1648 1664 1634 1651
+532 521 730 484 918 1184 1098 530 640 534 1569 1282 1393 1304 1503 1302 1508 1548 1355 1455
+395 339 768 324 1059 1312 1039 343 395 334 1352 930 1139 994 1289 992 1296 1291 1002 1138
+391 231 749 227 1124 1259 842 218 258 213 1038 585 851 683 1001 681 1007 942 631 766
+340 147 699 151 1037 1043 559 122 144 122 676 280 550 392 671 389 675 565 292 394
+263 72 484 77 651 576 222 62 66 64 273 113 227 131 288 129 289 194 113 116
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+4 4 3 3 4 4 4 4 4 4 7 7 7 7 7 7 7 7 7 7
+30 32 26 29 29 29 29 31 30 33 54 56 55 55 54 55 54 54 55 55
+74 81 62 74 69 67 69 81 74 87 132 140 136 139 133 139 133 133 138 136
+65 67 57 62 64 64 65 69 66 70 121 123 122 123 121 123 121 121 123 122
+85 87 76 81 84 85 86 91 88 92 161 164 162 163 161 163 161 162 164 163
+101 103 90 95 101 102 104 108 106 108 193 196 194 195 193 195 193 195 196 196
+155 171 137 157 156 174 230 303 296 239 461 489 445 463 444 463 444 486 507 505
+207 212 198 196 228 280 365 343 390 253 656 644 610 617 625 617 626 681 676 689
+161 158 153 147 173 184 190 174 183 165 340 333 332 330 336 330 336 342 337 341
+170 156 216 145 264 391 406 183 285 161 585 486 509 482 551 482 553 588 522 561
+247 217 418 205 540 745 676 233 341 219 914 685 773 702 861 701 865 897 742 822
+198 160 387 153 535 666 523 162 197 157 662 443 551 476 629 475 633 630 480 551
+131 105 150 99 183 194 161 101 114 100 251 211 234 220 247 219 248 242 215 227
+197 99 362 98 522 524 294 87 98 88 371 185 312 237 369 236 371 319 191 238
+100 38 161 38 207 185 83 30 33 31 113 61 100 71 118 70 118 89 60 65
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+17 30 6 24 7 6 6 11 7 31 9 18 15 18 10 18 10 9 14 10
+79 153 42 109 46 44 45 103 52 178 73 129 105 124 84 124 83 77 114 94
+142 361 98 262 106 102 105 338 134 474 249 409 330 385 273 385 271 271 379 327
+224 490 176 409 192 189 200 629 325 752 553 797 654 744 575 745 572 603 770 696
+368 598 315 542 350 351 372 1007 658 1035 1092 1389 1179 1298 1092 1299 1089 1178 1384 1302
+396 446 347 413 393 399 426 861 707 769 1159 1320 1172 1246 1135 1247 1135 1229 1342 1306
+257 277 229 254 260 281 376 518 504 394 826 876 797 829 794 830 795 870 907 904
+655 646 575 592 657 669 801 764 828 641 1439 1428 1395 1402 1408 1401 1410 1464 1458 1471
+475 469 433 431 497 720 837 543 749 486 1392 1293 1282 1265 1335 1265 1338 1421 1356 1403
+641 647 652 594 772 1003 1028 631 801 663 1606 1458 1493 1452 1556 1451 1559 1612 1513 1570
+418 390 634 365 807 1075 984 406 533 397 1381 1084 1199 1106 1312 1105 1318 1359 1158 1261
+317 253 602 243 821 1015 802 256 316 244 1051 720 884 770 1002 768 1007 1002 775 882
+318 192 576 187 842 938 635 181 215 177 804 476 668 547 777 545 781 733 508 605
+269 126 512 127 742 744 410 106 124 106 512 239 426 316 509 314 512 435 247 318
+214 57 379 61 495 437 171 39 45 40 221 89 186 112 233 111 234 160 87 96
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+3 3 2 2 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5
+18 18 16 17 18 18 18 18 18 19 33 33 33 33 33 33 33 33 33 33
+53 55 46 50 51 50 51 55 52 57 95 98 96 97 95 97 95 95 97 96
+67 69 59 63 66 65 66 70 68 72 123 126 125 126 124 126 124 124 126 125
+120 182 97 161 110 110 122 276 194 285 286 361 308 338 286 338 285 307 360 339
+152 188 127 171 142 149 179 323 271 292 412 473 417 445 403 445 403 438 482 468
+179 198 159 182 180 201 263 346 337 275 537 569 519 540 517 540 518 565 589 587
+156 159 148 147 171 210 277 260 296 189 488 479 453 459 465 459 466 508 504 514
+134 132 125 123 141 147 150 141 146 137 271 267 266 265 268 265 268 272 269 271
+191 178 196 167 226 256 260 201 229 183 440 409 416 407 429 407 430 441 420 432
+114 108 110 101 126 132 130 112 119 109 226 216 220 217 224 217 224 226 219 222
+185 146 277 138 361 432 353 148 184 141 477 353 414 372 458 371 460 458 374 413
+132 90 196 86 272 299 215 87 100 86 276 185 238 204 268 204 269 256 194 220
+143 79 239 77 334 335 197 70 78 71 255 143 219 174 253 173 254 223 146 175
+128 40 219 41 283 250 103 31 34 32 134 61 115 74 141 74 141 100 60 65
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+88 191 18 147 16 15 15 34 16 196 19 82 59 81 23 82 22 19 57 23
+250 673 95 433 95 91 92 370 106 789 189 492 371 467 256 468 250 212 416 310
+236 788 162 544 169 163 169 723 212 1048 470 854 666 798 530 799 525 522 783 658
+294 719 237 595 256 252 266 933 445 1128 798 1179 958 1097 834 1099 829 877 1137 1021
+347 569 296 515 329 329 351 947 617 977 1029 1310 1112 1225 1030 1226 1027 1110 1305 1227
+449 497 396 461 449 454 474 943 775 847 1287 1458 1302 1381 1262 1382 1262 1361 1481 1443
+623 607 555 556 634 624 695 840 826 714 1406 1448 1383 1410 1380 1410 1381 1443 1474 1471
+1018 985 854 897 974 881 929 902 921 892 1635 1640 1656 1653 1648 1651 1649 1622 1625 1618
+785 791 648 722 734 873 938 747 881 789 1585 1549 1546 1539 1565 1538 1566 1597 1573 1590
+608 611 624 561 738 958 980 602 764 626 1535 1390 1424 1385 1486 1383 1489 1540 1443 1499
+211 178 293 167 364 471 432 195 267 177 609 483 532 493 580 492 582 599 514 558
+308 256 582 244 793 975 771 259 306 251 1013 700 856 748 966 746 971 966 753 853
+309 187 564 183 825 918 619 177 208 174 779 458 648 528 754 526 758 710 490 585
+149 82 249 80 347 348 204 73 81 74 267 151 229 183 265 182 266 233 154 184
+72 34 106 34 133 120 60 30 31 31 86 55 79 62 89 62 89 73 55 58
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+92 198 19 153 17 16 16 36 17 203 20 86 62 85 25 86 24 20 60 25
+234 616 91 399 92 87 89 340 102 720 182 455 346 433 242 434 237 202 386 291
+246 803 167 557 175 168 174 734 219 1064 484 873 683 816 546 817 540 537 801 674
+279 668 224 554 242 238 251 860 415 1041 743 1092 889 1017 775 1019 771 814 1053 946
+320 525 270 474 300 300 322 866 565 895 940 1198 1017 1120 941 1121 939 1014 1193 1121
+457 499 404 462 458 462 479 885 739 804 1230 1379 1243 1312 1208 1312 1208 1294 1398 1365
+670 646 597 592 683 666 720 846 833 738 1424 1459 1406 1428 1403 1427 1404 1454 1480 1477
+294 298 275 275 315 376 508 477 547 339 947 931 884 894 904 894 906 983 975 994
+239 230 242 213 281 404 473 308 421 249 774 708 701 689 736 689 738 792 749 780
+227 207 279 193 337 478 493 243 357 214 734 621 647 617 695 616 698 738 662 706
+390 360 594 338 754 1002 915 377 497 365 1289 1011 1120 1033 1226 1032 1231 1268 1081 1177
+319 266 627 254 857 1058 832 269 316 261 1089 745 917 798 1039 797 1044 1039 803 914
+105 71 162 66 232 255 180 68 77 68 217 138 184 155 211 154 212 200 145 169
+285 127 562 129 819 820 442 108 124 108 548 242 452 329 545 327 548 461 251 330
+249 68 451 72 587 518 200 58 62 59 256 106 216 129 270 128 271 185 106 109
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+74 157 16 122 14 14 14 29 14 161 17 69 50 69 21 69 20 17 48 21
+145 355 61 236 64 60 61 203 71 414 113 265 204 252 146 253 143 124 226 173
+103 206 69 157 76 73 76 193 98 263 154 235 195 223 166 223 165 165 219 193
+126 221 94 186 103 101 109 265 161 313 249 339 286 319 257 319 256 266 328 301
+145 215 114 191 127 127 145 314 226 325 344 428 369 403 344 403 344 368 427 403
+151 188 126 171 142 148 178 320 268 291 410 471 416 444 402 444 401 436 479 465
+187 202 166 186 189 205 275 384 372 293 604 643 583 608 581 608 581 637 666 663
+136 138 127 127 147 179 241 226 260 161 428 420 397 402 407 402 408 445 442 451
+139 134 140 123 165 238 280 181 248 144 441 400 396 389 417 389 418 451 425 444
+137 126 168 116 205 290 299 148 216 130 427 358 374 356 403 356 405 429 383 410
+155 130 217 122 274 355 325 143 197 130 445 349 386 356 423 356 425 438 372 406
+145 114 221 107 292 349 284 115 143 110 373 271 321 286 357 286 359 357 288 320
+134 92 199 87 275 301 216 88 101 87 279 188 242 208 272 207 273 259 197 223
+103 62 157 60 215 215 133 57 62 58 173 107 152 125 172 125 173 154 109 126
+71 32 107 31 134 120 59 26 28 27 83 50 74 57 85 57 86 68 49 52
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+4 4 4 4 4 4 4 4 4 4 8 8 8 8 8 8 8 8 8 8
+33 34 28 31 31 31 31 33 32 35 58 60 59 60 58 60 58 58 59 59
+103 205 69 157 76 73 76 192 98 262 154 234 194 222 166 222 165 164 219 192
+122 214 90 180 100 97 105 256 155 303 238 326 275 307 246 307 245 255 316 289
+111 116 97 107 108 108 112 123 118 125 212 219 214 217 212 217 212 214 219 217
+133 164 112 149 128 132 154 288 237 261 361 417 366 392 353 392 353 384 424 411
+215 233 191 214 217 235 322 461 445 345 732 781 707 737 703 738 704 774 810 806
+352 353 323 325 369 429 592 555 639 387 1122 1104 1050 1062 1073 1062 1075 1162 1154 1175
+350 342 335 315 386 579 683 428 605 361 1140 1047 1038 1021 1086 1021 1089 1166 1105 1149
+390 373 463 346 558 797 822 403 589 384 1254 1075 1117 1069 1193 1068 1197 1259 1140 1209
+301 269 473 253 601 805 731 286 392 271 1022 790 880 808 969 807 973 1004 847 927
+246 196 455 187 614 752 594 198 243 190 785 544 664 581 750 580 754 749 584 661
+180 125 262 119 353 386 281 120 138 119 380 267 333 291 371 291 373 355 278 311
+137 85 201 82 269 269 170 78 85 79 236 156 210 178 235 177 236 213 158 179
+71 32 107 31 134 120 58 26 28 27 82 49 74 56 85 56 85 67 48 51
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+52 110 12 86 11 10 10 21 11 112 13 49 36 49 16 49 15 13 35 16
+189 480 74 316 76 72 73 264 84 559 146 356 273 340 192 340 189 161 302 229
+128 342 84 244 91 88 91 312 115 447 214 368 293 346 238 346 236 234 339 288
+249 564 196 470 213 209 222 709 354 858 629 910 747 850 655 851 652 685 877 791
+363 586 310 530 345 345 366 946 620 982 1049 1325 1132 1243 1051 1244 1049 1127 1318 1242
+440 489 388 453 440 444 464 874 724 795 1211 1363 1226 1296 1190 1296 1189 1275 1383 1348
+883 817 787 748 905 850 855 955 944 872 1659 1673 1652 1661 1650 1660 1651 1671 1681 1680
+1100 1060 916 963 1045 930 974 946 963 945 1732 1740 1763 1758 1752 1756 1752 1714 1718 1709
+1146 1185 873 1072 967 1009 1023 937 997 1132 1795 1845 1850 1858 1825 1856 1824 1783 1815 1792
+686 699 678 641 796 1000 1020 671 815 716 1622 1496 1526 1492 1580 1491 1583 1626 1543 1591
+471 450 696 420 879 1153 1055 463 582 459 1510 1205 1325 1229 1441 1228 1447 1487 1281 1386
+361 306 700 292 950 1165 919 309 358 301 1219 845 1033 904 1165 902 1171 1164 908 1028
+365 216 684 212 1000 1109 742 204 239 200 940 546 779 632 909 630 914 854 584 700
+322 141 634 143 919 918 493 118 137 119 618 274 510 372 614 370 618 520 283 373
+284 67 512 74 656 576 217 45 53 48 284 104 238 139 300 138 302 202 102 112
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+107 227 22 176 20 19 19 40 20 231 23 99 71 98 29 98 28 23 69 30
+256 666 98 435 98 93 95 359 109 774 197 492 375 469 263 470 257 218 417 313
+141 357 94 260 102 98 101 325 128 463 240 397 321 375 265 375 263 261 368 316
+132 229 98 193 108 105 113 272 166 322 260 352 298 333 268 333 267 278 341 313
+288 476 241 429 267 267 289 768 500 799 837 1067 906 998 838 999 836 901 1061 997
+383 443 335 411 378 384 412 849 688 764 1147 1312 1164 1239 1125 1240 1124 1217 1333 1295
+472 498 421 458 477 505 696 1039 1000 759 1706 1819 1648 1719 1640 1720 1641 1801 1885 1876
+1238 1185 1018 1076 1160 1001 1022 995 1001 1030 1836 1849 1890 1881 1871 1879 1870 1804 1810 1794
+1131 1167 864 1056 957 1003 1018 930 992 1117 1784 1831 1836 1843 1813 1841 1811 1773 1803 1782
+810 849 753 774 871 1040 1055 776 882 867 1714 1635 1654 1632 1687 1631 1689 1716 1664 1694
+521 508 746 473 938 1217 1116 517 629 519 1612 1306 1427 1330 1543 1329 1549 1589 1382 1488
+401 345 806 331 1100 1351 1062 349 398 341 1407 969 1190 1039 1345 1036 1352 1343 1043 1184
+415 240 801 237 1178 1307 868 227 265 222 1096 623 904 728 1059 725 1065 993 669 809
+372 156 753 160 1098 1097 581 130 152 130 724 308 594 427 720 425 724 606 319 428
+310 85 557 90 717 632 244 74 78 76 317 133 269 164 335 162 336 231 132 136
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+122 262 23 203 21 21 21 44 21 267 24 112 80 111 31 111 30 24 76 32
+277 730 103 476 103 97 99 387 113 848 208 534 405 508 281 509 275 231 450 336
+176 504 116 358 124 119 123 454 155 659 314 548 435 515 352 515 348 345 503 427
+161 274 120 234 132 128 138 323 200 382 325 433 370 410 335 410 334 346 420 387
+263 423 215 380 238 238 263 656 440 682 728 920 786 863 729 863 728 781 914 861
+432 484 380 448 430 435 456 866 714 789 1198 1352 1214 1284 1177 1285 1177 1262 1371 1336
+816 765 727 700 834 794 821 945 931 845 1627 1653 1614 1630 1612 1629 1612 1649 1667 1665
+1250 1196 1028 1085 1170 1008 1025 998 1002 1037 1841 1854 1897 1888 1878 1886 1877 1808 1814 1798
+917 934 732 849 824 931 977 823 931 915 1674 1667 1666 1664 1670 1663 1671 1677 1672 1675
+390 373 461 346 555 789 812 402 584 384 1246 1071 1113 1065 1187 1064 1191 1252 1135 1202
+377 346 583 325 739 982 892 362 479 351 1266 991 1099 1012 1204 1011 1209 1245 1059 1154
+317 264 624 253 847 1039 817 267 314 260 1080 743 913 797 1032 795 1038 1031 800 908
+327 195 611 190 890 985 659 184 215 182 837 488 695 565 810 563 814 761 522 625
+321 139 633 141 917 916 489 117 136 118 615 272 508 370 612 368 615 517 281 371
+315 72 570 79 729 640 238 48 56 51 313 110 262 151 331 149 333 221 108 119
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+36 69 12 55 12 11 11 19 12 71 15 36 29 36 17 36 17 15 28 17
+180 434 74 292 77 72 73 242 86 503 144 329 256 315 185 315 182 157 281 216
+198 536 131 387 139 134 139 483 175 697 351 595 477 560 391 561 387 384 548 468
+229 476 176 400 191 187 200 582 310 703 543 765 637 718 564 719 561 586 738 670
+209 319 169 286 188 188 209 472 328 491 531 661 570 622 532 623 531 567 657 621
+202 252 169 231 189 197 235 414 346 380 553 632 561 597 543 597 543 586 641 623
+213 237 189 218 214 237 306 403 391 326 641 679 621 645 619 646 619 672 701 698
+160 161 148 149 166 173 180 177 181 170 332 331 327 328 329 328 329 335 334 336
+165 157 171 146 200 279 323 218 289 173 520 475 470 463 494 462 495 532 503 524
+195 175 238 163 286 390 401 212 299 181 602 513 534 510 572 510 574 605 545 580
+448 425 626 396 782 1005 923 438 539 433 1338 1088 1186 1107 1281 1106 1286 1318 1150 1236
+279 222 528 213 709 868 684 225 275 215 912 630 772 674 871 673 876 870 677 767
+307 185 559 181 807 892 601 176 204 173 768 457 641 525 744 523 748 700 487 579
+274 126 518 127 741 739 403 107 123 108 514 243 429 321 512 319 514 437 251 322
+236 62 415 66 528 464 180 43 50 45 241 95 205 126 254 125 255 176 93 102
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+120 257 23 198 21 20 20 43 20 260 23 109 78 108 31 108 30 23 74 31
+247 628 96 415 97 92 93 336 107 727 193 468 359 447 254 447 249 212 397 301
+259 815 169 572 177 170 176 726 220 1069 490 881 693 826 554 827 549 542 806 678
+316 758 255 629 276 272 285 947 453 1156 840 1224 1004 1144 877 1146 872 916 1178 1061
+421 661 365 599 407 407 425 1039 686 1083 1182 1475 1272 1389 1185 1390 1182 1263 1467 1385
+604 612 543 567 621 618 603 894 784 846 1340 1440 1351 1396 1326 1396 1326 1381 1451 1429
+831 775 741 709 851 807 815 911 899 835 1575 1591 1567 1577 1565 1576 1565 1588 1600 1598
+598 591 528 541 603 620 745 714 774 594 1355 1345 1311 1319 1325 1318 1327 1381 1376 1389
+485 479 439 440 504 691 789 541 713 495 1333 1249 1240 1226 1284 1225 1287 1356 1301 1341
+419 404 484 374 581 811 834 429 607 415 1288 1117 1158 1111 1230 1111 1235 1294 1179 1245
+352 321 543 301 687 912 828 337 448 324 1176 920 1021 941 1119 940 1123 1156 984 1072
+359 304 708 291 960 1175 924 307 355 299 1231 852 1043 912 1177 910 1183 1175 915 1037
+403 235 770 231 1124 1243 828 222 260 218 1054 608 873 707 1020 704 1025 957 651 783
+366 155 728 158 1054 1052 559 129 151 129 705 307 581 422 701 419 705 592 318 423
+307 72 551 79 704 617 232 49 57 51 307 110 258 152 325 150 326 219 108 119
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+128 273 25 210 22 22 22 46 22 277 25 117 84 116 35 116 33 25 80 35
+273 705 103 464 104 98 99 371 114 815 209 520 398 496 279 497 273 231 440 331
+270 835 176 588 184 177 183 742 228 1093 507 906 715 850 574 851 567 561 830 699
+319 766 258 636 279 275 288 953 455 1165 848 1235 1013 1154 886 1156 881 924 1188 1070
+430 670 373 607 417 417 434 1045 693 1091 1196 1489 1287 1403 1200 1404 1197 1278 1480 1399
+694 686 629 638 721 714 678 1010 885 957 1530 1637 1542 1590 1515 1590 1515 1575 1650 1625
+1113 986 993 903 1148 1039 952 965 962 955 1765 1735 1780 1761 1781 1759 1781 1740 1717 1719
+1019 984 856 895 977 883 933 906 925 892 1647 1651 1667 1664 1660 1662 1660 1635 1637 1631
+1007 1033 785 937 879 922 938 860 914 1001 1624 1656 1659 1664 1643 1662 1642 1616 1637 1622
+745 769 712 703 830 1010 1025 722 842 787 1654 1555 1579 1552 1621 1551 1624 1657 1592 1630
+494 477 716 444 899 1170 1070 487 599 487 1550 1250 1369 1274 1482 1273 1488 1526 1324 1428
+391 336 776 321 1051 1286 1012 339 387 332 1351 938 1148 1004 1294 1002 1300 1291 1008 1141
+420 247 790 243 1148 1268 848 233 273 228 1087 635 904 735 1052 732 1058 989 678 812
+368 156 730 159 1056 1054 560 130 152 130 708 310 584 424 705 422 708 595 321 426
+336 94 599 99 770 679 263 82 87 85 347 146 296 183 366 181 367 254 145 149
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+134 286 24 219 22 21 21 46 21 290 24 120 85 119 34 119 32 24 81 34
+247 628 95 415 95 90 92 332 105 726 191 465 358 445 252 446 247 210 394 298
+254 759 166 538 174 167 172 673 216 990 469 826 655 777 528 778 523 516 758 641
+311 753 251 625 271 267 280 936 444 1145 829 1210 992 1131 866 1133 861 904 1165 1047
+405 649 349 588 389 389 407 1026 670 1073 1157 1454 1249 1367 1160 1368 1158 1239 1445 1362
+629 644 566 599 647 644 626 1007 863 944 1484 1615 1499 1558 1467 1559 1467 1538 1631 1600
+1065 950 950 870 1097 1000 931 962 957 939 1738 1717 1748 1735 1749 1734 1749 1721 1704 1706
+1372 1305 1118 1183 1273 1065 1048 1024 1012 1106 1888 1906 1970 1956 1942 1953 1941 1839 1847 1824
+1238 1288 928 1162 1021 1026 1023 979 1010 1219 1821 1900 1907 1920 1867 1918 1865 1801 1852 1816
+898 960 799 873 911 1043 1053 848 914 980 1744 1711 1719 1709 1733 1708 1734 1745 1723 1736
+559 553 768 514 959 1225 1127 559 656 568 1652 1363 1478 1386 1587 1385 1593 1629 1435 1534
+411 356 820 340 1112 1359 1070 359 407 352 1431 994 1216 1064 1370 1062 1377 1367 1068 1208
+427 248 822 244 1201 1327 882 234 274 230 1126 647 932 754 1089 751 1095 1022 693 835
+392 163 781 167 1132 1129 598 135 159 135 755 327 622 450 751 447 756 633 338 451
+332 93 589 98 758 668 259 81 86 83 343 144 293 182 362 180 363 252 144 147
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+123 260 24 199 22 21 21 44 21 263 24 111 80 111 34 111 33 25 76 34
+270 691 102 456 102 97 98 362 112 798 206 510 391 487 275 488 269 227 431 325
+265 815 172 575 179 172 178 719 222 1064 493 881 696 827 558 828 552 544 806 679
+311 750 251 622 271 266 279 929 441 1138 825 1204 987 1125 862 1127 857 899 1158 1041
+422 683 365 618 407 407 425 1084 702 1135 1220 1536 1318 1444 1224 1445 1221 1307 1526 1438
+438 541 378 504 424 434 481 1129 885 1011 1495 1745 1524 1636 1463 1638 1462 1598 1774 1716
+836 780 746 713 856 813 829 950 935 859 1642 1665 1631 1646 1629 1645 1629 1661 1678 1676
+810 791 698 723 797 767 877 846 894 754 1578 1573 1556 1560 1562 1559 1564 1591 1588 1595
+458 451 419 415 481 671 771 520 694 468 1307 1220 1211 1196 1256 1195 1259 1331 1274 1315
+474 462 532 427 635 872 894 480 661 475 1395 1223 1264 1217 1337 1217 1341 1400 1286 1352
+345 313 534 294 675 897 813 330 439 316 1158 906 1005 926 1102 925 1106 1139 968 1055
+297 245 572 235 770 941 741 248 292 241 987 685 838 733 945 731 950 943 735 833
+306 184 560 179 807 890 599 175 203 172 769 457 642 526 745 524 749 701 487 579
+302 133 580 135 834 832 448 114 130 114 570 262 474 350 568 348 571 482 270 351
+206 56 355 60 454 399 157 41 46 43 211 86 181 114 223 113 224 156 84 92
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+33 65 8 50 8 7 7 14 8 66 10 31 23 31 12 31 12 10 22 12
+76 147 38 106 42 40 41 93 47 169 66 119 98 115 77 115 76 69 105 86
+254 795 164 559 171 164 170 698 211 1038 472 852 671 800 536 801 530 523 779 655
+230 546 181 453 196 192 203 673 323 826 590 865 708 808 617 809 614 643 831 747
+211 360 173 323 191 191 210 572 368 600 610 787 665 735 613 736 611 659 781 732
+245 304 208 280 234 241 276 553 447 503 733 846 746 797 719 798 718 779 859 833
+237 256 210 235 238 256 340 486 466 374 781 833 757 789 753 790 753 823 861 856
+159 160 147 149 165 172 178 175 179 169 329 328 324 325 326 325 326 332 331 333
+160 153 166 142 194 270 313 212 280 168 505 461 457 449 479 449 481 517 488 509
+132 127 125 118 142 149 149 134 141 130 266 258 260 258 263 257 263 266 261 264
+321 277 456 261 567 732 669 299 400 277 966 770 847 786 922 785 926 951 818 886
+305 242 560 232 746 907 719 245 300 234 970 680 827 726 929 725 934 927 729 822
+308 192 514 186 715 785 544 180 215 176 725 463 618 520 704 519 708 667 488 565
+279 135 497 134 698 697 389 115 132 116 515 267 437 337 513 336 515 444 273 338
+282 75 488 80 625 549 215 50 59 53 293 117 250 157 308 156 310 216 115 126
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+66 129 18 99 18 17 17 30 18 130 22 63 48 62 27 62 26 22 46 27
+100 215 46 150 50 48 48 126 55 247 82 167 133 161 101 161 99 88 144 114
+122 280 80 208 87 84 87 251 108 358 192 310 253 293 211 293 210 207 287 248
+126 221 93 186 102 99 107 258 156 308 245 333 282 315 253 315 252 261 322 295
+295 488 247 440 273 273 294 767 498 806 847 1077 918 1010 850 1011 847 909 1069 1005
+582 612 522 569 596 594 588 993 838 926 1439 1583 1456 1521 1420 1522 1420 1498 1600 1566
+680 653 606 598 694 677 715 837 820 747 1417 1449 1402 1422 1399 1421 1399 1443 1466 1463
+823 802 706 732 806 756 806 784 803 756 1402 1403 1405 1405 1404 1404 1404 1400 1400 1399
+797 806 651 734 737 796 820 733 792 799 1390 1391 1390 1390 1390 1389 1390 1390 1390 1390
+248 228 312 212 377 543 560 265 398 235 851 718 750 714 806 714 809 855 767 818
+100 96 95 89 108 112 110 99 103 97 195 189 191 189 194 189 194 194 190 192
+143 124 153 117 181 195 178 125 142 121 292 261 277 266 288 266 288 288 266 276
+151 104 222 98 300 327 236 99 114 98 315 218 275 239 308 238 309 294 227 255
+160 88 259 86 355 355 210 78 87 79 281 164 244 197 280 196 281 247 167 198
+174 52 293 54 375 331 134 39 44 41 183 80 158 104 192 103 193 138 78 85
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+3 3 2 2 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5
+29 30 26 28 28 28 28 30 29 31 52 54 53 53 52 53 52 52 53 53
+91 187 59 140 66 64 66 169 82 238 128 202 166 191 140 191 139 137 187 162
+88 94 76 86 85 84 86 97 91 101 164 171 167 169 164 169 164 165 170 168
+132 142 114 131 126 126 132 154 143 157 256 269 260 266 256 265 256 260 269 265
+155 195 129 178 145 151 180 323 267 298 418 481 425 453 410 454 410 443 488 473
+144 157 127 144 145 157 202 277 266 221 426 454 413 430 411 431 411 448 469 466
+176 177 163 164 183 192 202 199 203 189 373 372 367 368 369 368 369 377 377 379
+152 146 154 135 180 253 296 197 264 158 477 437 432 425 453 425 455 488 462 481
+152 136 185 127 224 307 316 165 234 141 465 394 410 391 440 391 442 467 419 447
+187 161 282 151 355 469 426 174 241 161 593 460 512 471 563 470 566 583 493 539
+205 165 400 158 541 663 520 167 202 162 680 464 573 498 650 497 653 648 500 569
+171 106 303 102 435 478 325 102 116 101 411 247 344 283 398 282 400 375 263 311
+123 65 208 63 293 292 168 59 64 60 213 114 182 142 212 142 213 185 117 143
+43 33 48 31 56 53 40 30 31 31 66 57 64 60 66 60 66 62 56 58
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+20 38 6 29 6 6 6 10 6 39 8 20 16 20 10 20 10 8 15 10
+76 147 38 106 42 40 41 92 47 168 66 119 98 115 77 115 76 69 105 86
+191 522 123 376 131 126 130 459 163 676 330 568 455 536 370 536 367 362 522 444
+111 204 83 170 93 91 96 240 139 289 216 300 252 283 224 283 223 232 290 263
+134 201 105 178 117 116 132 287 203 301 311 390 335 367 312 367 311 332 387 365
+126 157 106 143 121 124 144 273 222 250 340 395 347 371 334 372 334 362 401 388
+127 138 111 126 128 138 179 248 238 196 376 401 365 380 362 380 363 396 415 413
+79 78 72 73 80 81 81 80 80 81 149 149 149 149 149 149 149 150 150 150
+153 147 155 136 181 254 297 198 266 159 480 439 435 428 456 428 457 491 465 484
+412 396 476 367 570 795 816 423 597 408 1270 1102 1142 1097 1213 1096 1217 1275 1163 1228
+445 421 653 393 820 1073 978 435 546 429 1418 1137 1248 1159 1354 1158 1360 1396 1206 1303
+270 222 510 212 683 832 658 224 266 217 878 613 747 655 841 653 845 839 657 742
+276 167 500 163 714 786 532 158 185 156 691 417 579 477 669 475 673 631 443 524
+251 117 460 117 654 653 359 101 114 102 462 226 388 293 460 292 462 395 232 294
+183 55 307 57 396 349 142 41 45 43 193 84 167 110 203 109 204 146 82 89
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+21 40 7 31 7 7 7 11 7 40 9 21 17 21 11 21 11 9 16 11
+68 136 33 97 36 35 35 83 40 156 57 108 87 104 68 104 67 60 94 76
+207 599 133 427 140 135 139 523 173 777 365 644 511 606 412 607 408 402 590 498
+180 378 138 317 150 147 156 454 237 553 415 590 490 554 433 555 430 449 569 514
+227 382 186 343 206 206 226 596 385 627 645 826 701 774 647 774 646 694 820 769
+160 202 133 184 149 155 185 334 276 308 434 499 441 471 426 471 425 460 506 491
+168 188 149 172 169 186 240 322 310 261 501 533 487 506 484 506 484 526 551 547
+213 217 200 200 229 273 370 354 403 251 701 692 655 663 670 664 671 728 724 737
+177 169 184 157 215 296 344 235 309 186 563 515 510 502 535 502 536 575 545 567
+220 201 271 188 326 460 474 235 344 208 719 610 636 606 682 606 684 722 650 691
+211 181 311 170 389 511 465 195 268 181 656 513 569 524 623 524 626 645 548 597
+190 151 318 143 419 505 405 152 187 147 542 389 466 413 521 412 523 520 414 463
+152 104 225 99 304 331 239 100 115 99 320 221 279 242 312 241 313 298 230 259
+122 74 181 71 244 243 152 67 73 68 206 132 182 153 205 152 206 184 134 153
+79 36 117 35 147 131 65 30 31 31 93 56 84 65 96 65 96 77 55 59
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+109 227 21 167 19 18 18 38 19 229 22 97 71 97 33 97 31 22 67 32
+268 686 98 452 99 93 95 350 108 789 198 499 382 477 267 478 261 218 420 314
+243 740 156 523 163 156 162 642 201 962 441 792 626 744 501 745 496 488 724 609
+309 756 249 626 268 264 277 925 433 1140 821 1201 985 1123 859 1125 854 893 1154 1036
+402 650 346 588 385 385 403 1017 658 1069 1146 1443 1239 1357 1151 1359 1148 1227 1432 1349
+572 599 512 557 584 583 577 944 802 886 1376 1508 1393 1452 1360 1452 1360 1430 1523 1492
+697 667 622 610 712 692 724 845 827 759 1432 1462 1418 1437 1415 1436 1415 1456 1478 1475
+882 856 753 781 860 798 858 835 857 798 1511 1512 1516 1515 1514 1514 1514 1509 1509 1508
+846 858 685 781 775 847 879 771 845 846 1499 1497 1497 1497 1498 1495 1498 1499 1498 1499
+685 700 661 641 772 938 953 669 785 717 1538 1440 1463 1437 1505 1436 1507 1541 1476 1514
+430 404 646 378 813 1075 977 419 536 411 1411 1122 1236 1145 1346 1144 1352 1389 1194 1294
+316 264 593 252 793 964 765 267 313 259 1029 725 879 774 987 772 992 986 776 874
+313 190 572 185 819 901 611 181 210 178 790 474 661 544 765 541 769 721 504 597
+312 137 591 139 847 846 457 117 134 118 586 272 488 363 583 361 586 497 281 364
+252 69 429 73 555 485 193 48 55 51 264 107 226 144 277 142 278 196 105 115
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+93 193 19 141 17 16 16 34 17 194 20 84 61 84 30 84 28 20 58 29
+183 437 73 295 75 71 72 234 83 501 141 326 253 312 182 312 179 153 277 211
+185 469 120 345 128 123 127 413 160 603 316 524 425 495 351 496 348 343 483 415
+249 575 196 478 212 208 219 696 340 856 625 905 746 848 653 849 649 678 870 784
+231 369 188 332 207 207 229 553 371 582 617 778 667 732 619 732 618 660 773 727
+307 378 262 349 294 302 342 679 548 622 912 1050 929 991 896 992 895 968 1065 1033
+672 646 599 592 686 670 708 839 820 747 1416 1451 1401 1423 1398 1422 1398 1444 1470 1466
+303 308 283 284 323 376 503 482 544 349 956 945 898 909 916 909 918 991 986 1002
+439 432 403 398 463 624 712 500 647 450 1207 1132 1123 1111 1162 1110 1165 1228 1179 1214
+354 336 420 312 504 713 734 368 532 346 1136 977 1014 972 1082 971 1085 1141 1035 1096
+253 218 382 205 480 636 577 235 325 218 820 641 711 654 780 654 783 806 685 747
+211 168 378 160 502 609 485 170 208 164 647 456 552 486 621 485 624 619 488 549
+292 178 520 173 738 812 554 168 197 165 724 443 609 504 702 503 705 662 470 553
+369 156 716 159 1033 1032 551 131 152 131 703 313 582 426 700 424 703 593 324 428
+304 75 528 81 684 597 230 52 60 54 311 116 264 161 328 159 329 226 113 124
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+90 186 18 136 17 16 16 33 17 188 20 81 59 81 29 81 27 20 56 28
+263 675 96 444 97 91 93 342 106 775 193 488 374 467 260 468 255 212 411 307
+258 800 165 565 172 165 171 692 212 1042 471 854 673 802 537 803 532 522 780 654
+315 798 255 659 274 269 282 977 447 1209 856 1263 1032 1180 896 1182 891 933 1213 1086
+388 639 333 578 370 370 389 1005 645 1059 1123 1422 1217 1335 1127 1337 1125 1204 1411 1327
+534 572 476 532 542 542 545 938 785 876 1344 1489 1363 1427 1327 1428 1326 1403 1505 1471
+577 567 514 520 588 584 652 824 799 702 1376 1428 1354 1385 1349 1385 1348 1417 1455 1450
+584 577 518 529 591 611 763 735 804 585 1422 1413 1369 1379 1386 1379 1388 1455 1451 1466
+543 539 481 494 550 707 791 583 728 552 1344 1277 1269 1257 1303 1257 1306 1362 1319 1350
+563 561 582 516 686 884 904 561 708 575 1436 1301 1333 1296 1390 1295 1393 1440 1350 1402
+372 342 551 320 692 911 829 358 465 347 1195 951 1047 970 1140 969 1145 1177 1012 1096
+352 299 696 286 937 1143 904 302 349 294 1211 843 1030 902 1161 900 1167 1159 906 1025
+391 231 752 227 1091 1202 806 219 254 215 1034 601 858 697 1000 694 1006 940 643 772
+364 153 708 156 1023 1023 546 129 150 130 695 309 575 421 692 418 695 586 319 423
+299 73 522 79 677 591 227 51 58 53 304 111 257 156 321 154 323 220 109 119
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+123 258 22 187 21 20 20 41 20 259 23 108 78 108 35 108 33 23 73 34
+265 676 98 446 98 93 94 343 107 776 195 491 376 470 263 470 257 214 413 309
+228 715 145 502 152 146 150 617 187 931 413 755 593 709 472 710 466 458 688 576
+235 522 184 435 199 195 206 628 316 770 571 819 678 768 595 769 592 618 788 711
+368 556 314 503 350 350 369 823 560 865 959 1182 1029 1117 962 1118 960 1019 1173 1111
+524 544 468 503 533 533 533 768 675 734 1146 1233 1157 1196 1135 1196 1135 1181 1243 1222
+840 773 751 707 864 813 764 759 759 767 1328 1310 1335 1325 1337 1323 1336 1314 1300 1302
+634 625 557 572 637 631 714 694 730 619 1266 1262 1242 1247 1250 1246 1251 1280 1278 1285
+635 635 546 581 623 743 805 643 755 643 1363 1319 1314 1307 1337 1306 1338 1375 1347 1367
+522 517 542 476 639 819 838 524 660 530 1328 1202 1232 1198 1285 1197 1288 1332 1249 1297
+418 391 607 366 760 996 909 406 515 398 1318 1058 1160 1078 1259 1077 1264 1298 1123 1212
+371 317 709 302 951 1157 920 320 367 313 1239 874 1060 933 1190 931 1195 1188 936 1055
+283 173 509 168 724 797 543 164 192 161 708 431 595 492 686 490 689 648 458 539
+316 140 594 142 851 851 463 119 138 120 595 280 497 371 592 369 595 506 288 373
+212 61 358 64 461 404 164 45 50 46 223 93 192 124 234 123 235 167 92 100
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+66 136 14 99 13 12 12 25 13 137 15 60 44 60 22 60 21 15 42 21
+67 135 33 96 36 35 35 82 40 154 56 107 87 103 67 103 66 60 93 75
+146 369 93 268 101 97 100 324 125 475 235 398 320 375 262 375 260 256 365 312
+190 430 146 357 159 156 165 518 257 638 457 665 546 622 478 623 475 496 639 574
+209 344 170 308 188 188 207 523 344 551 571 727 620 682 573 683 572 613 721 677
+189 237 160 218 180 185 213 426 342 390 553 641 564 603 542 604 542 588 650 630
+237 257 210 236 238 256 337 490 467 381 784 838 761 794 756 794 757 826 866 861
+249 253 232 233 265 315 441 423 483 290 851 841 795 806 813 806 814 885 881 897
+317 309 306 285 354 514 605 395 542 328 1026 946 936 923 978 922 981 1048 997 1034
+246 227 309 211 373 541 559 263 399 234 853 721 752 716 808 716 811 858 770 821
+234 202 362 191 456 609 552 218 306 203 781 605 674 619 741 618 744 767 649 709
+304 253 581 241 779 950 754 256 301 248 1009 705 859 754 967 752 972 966 757 855
+341 206 637 201 917 1011 684 195 227 192 881 523 735 602 853 599 857 803 558 664
+341 147 657 149 948 949 510 125 144 125 651 295 540 397 647 395 650 550 305 400
+308 75 539 82 700 612 236 52 60 55 317 116 268 162 334 161 335 230 113 124
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+99 205 20 149 18 17 17 35 18 206 21 88 65 88 31 88 29 21 61 30
+232 577 87 384 88 82 83 297 97 662 170 420 323 402 227 402 222 186 354 266
+198 491 128 362 137 131 135 431 171 629 336 552 449 522 373 523 370 364 509 438
+243 504 185 423 201 196 209 600 317 731 566 796 665 749 588 749 585 609 767 695
+292 465 238 418 262 262 289 694 465 731 783 985 847 927 786 928 784 837 978 921
+285 363 241 334 268 278 327 619 503 569 834 959 850 906 819 907 818 884 973 943
+303 338 270 311 304 333 433 601 574 481 971 1035 945 983 938 984 939 1021 1068 1061
+1210 1151 998 1044 1139 955 882 866 827 990 1498 1515 1586 1569 1558 1567 1556 1446 1451 1427
+1124 1160 854 1049 947 870 824 885 838 1102 1441 1538 1550 1566 1499 1563 1496 1414 1476 1431
+656 668 613 611 712 829 841 641 721 683 1363 1298 1313 1296 1341 1295 1342 1365 1322 1347
+469 450 635 418 788 1009 929 461 558 459 1365 1126 1219 1144 1310 1143 1315 1347 1185 1268
+316 264 590 252 789 960 765 267 313 260 1028 726 879 774 986 772 991 986 777 875
+276 173 474 167 664 731 506 163 193 161 668 420 566 474 648 472 651 614 444 517
+186 109 290 106 395 395 240 100 108 101 332 207 292 242 331 241 332 296 211 243
+122 48 190 48 240 213 99 39 42 40 141 77 126 93 146 93 147 114 76 82
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+3 3 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6
+15 15 13 14 15 15 15 15 15 15 27 27 27 27 27 27 27 27 27 27
+35 35 31 32 34 34 34 35 35 36 63 64 64 64 63 64 63 63 64 64
+64 66 56 60 63 62 63 67 65 69 118 120 119 120 118 120 118 118 120 119
+100 104 88 96 98 98 101 109 105 111 190 196 192 194 190 194 190 192 195 194
+111 114 99 105 111 112 115 120 118 121 215 218 215 217 214 217 214 216 219 218
+95 96 86 89 97 97 99 99 99 99 183 183 182 183 182 183 182 183 184 184
+168 169 155 157 174 182 190 187 191 180 352 351 346 347 348 347 348 355 355 356
+167 164 158 153 179 190 196 181 190 172 354 346 345 344 349 344 350 356 351 355
+158 150 154 141 175 188 189 163 175 154 333 319 322 318 328 318 328 333 324 329
+152 139 155 131 178 193 188 147 163 140 319 297 306 298 314 298 315 318 302 310
+210 170 266 160 326 375 320 172 208 166 477 389 432 402 464 402 465 464 403 431
+182 126 265 120 355 387 283 121 140 120 387 273 339 297 377 296 379 362 284 317
+195 116 302 112 410 411 252 106 114 107 349 220 308 256 348 255 349 312 224 258
+169 61 269 62 341 302 135 47 52 49 193 100 171 123 201 122 201 154 98 106
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+105 219 20 158 18 18 18 36 18 220 20 91 66 91 30 91 28 20 62 29
+270 689 99 453 99 94 95 347 109 790 196 498 381 476 265 477 260 216 418 313
+269 824 171 580 178 171 176 711 220 1071 485 877 692 824 552 825 546 537 800 672
+311 764 251 631 270 265 279 931 435 1151 822 1205 988 1127 860 1129 855 894 1157 1039
+415 665 358 601 399 399 416 1030 669 1085 1163 1460 1257 1375 1168 1376 1165 1243 1449 1366
+643 657 580 611 664 659 638 1006 861 952 1486 1614 1503 1560 1471 1560 1471 1538 1628 1598
+860 796 769 728 884 837 838 959 941 880 1658 1678 1649 1661 1646 1661 1646 1673 1688 1686
+1112 1065 929 968 1062 934 979 954 968 944 1748 1754 1780 1774 1769 1772 1769 1730 1731 1723
+1044 1070 814 970 911 960 983 891 955 1030 1714 1742 1746 1750 1731 1748 1730 1706 1724 1711
+767 795 715 726 831 997 1013 737 848 812 1650 1566 1586 1563 1621 1562 1623 1653 1598 1630
+506 491 711 457 888 1155 1061 501 612 502 1551 1266 1377 1287 1486 1286 1491 1530 1338 1436
+392 338 768 323 1035 1265 1006 343 390 335 1350 947 1151 1011 1294 1009 1300 1294 1016 1147
+400 239 766 234 1113 1230 830 227 264 222 1065 623 884 720 1029 717 1034 969 667 798
+370 157 722 160 1047 1050 564 133 154 133 716 320 591 433 711 431 714 605 331 438
+338 80 596 88 777 681 262 55 64 58 348 124 293 175 367 173 369 251 121 133
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+52 103 12 75 12 11 11 21 12 104 15 47 36 47 19 47 18 15 34 19
+174 394 75 272 78 73 74 218 87 450 144 306 243 294 180 294 178 155 263 206
+191 435 125 327 133 127 132 385 168 553 317 500 412 475 347 475 344 340 463 403
+225 443 170 373 185 181 193 523 287 634 501 696 585 656 521 657 518 538 671 611
+277 427 224 383 248 247 273 621 427 653 709 883 764 833 712 834 710 756 877 828
+349 418 298 385 335 344 386 678 563 630 929 1053 945 1000 915 1001 914 979 1066 1037
+286 318 254 293 286 313 408 570 544 456 915 977 890 927 884 928 885 963 1008 1001
+163 164 150 152 169 176 184 181 184 174 339 338 334 335 335 335 336 342 342 343
+137 135 128 126 144 149 152 144 148 140 276 273 272 271 274 271 274 278 275 277
+224 205 240 192 278 329 335 238 285 212 556 506 518 504 539 504 540 558 525 544
+134 125 133 117 152 162 158 131 141 126 273 258 264 259 270 259 270 272 262 267
+134 118 140 111 164 176 163 119 133 115 271 245 258 249 267 249 267 267 250 258
+56 53 53 49 61 62 59 52 55 53 104 100 103 101 104 101 104 103 101 102
+74 61 78 57 93 93 78 57 61 57 129 114 124 118 128 118 129 124 114 118
+30 25 30 23 35 34 28 22 23 23 48 44 47 45 49 45 49 47 44 45
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+4 4 3 3 4 4 4 4 4 4 7 7 7 7 7 7 7 7 7 7
+31 32 26 29 29 29 29 31 30 33 54 56 55 56 54 55 54 54 55 55
+68 73 57 67 64 62 63 72 67 78 121 127 124 126 122 126 122 121 126 124
+103 112 87 103 96 95 98 116 106 122 190 202 195 199 191 199 191 192 200 197
+74 75 66 69 73 73 74 77 75 78 138 140 138 139 138 139 138 138 140 139
+88 89 79 83 88 89 90 92 91 93 167 169 168 168 167 168 167 168 169 169
+98 99 89 91 99 100 102 102 102 103 188 189 188 189 188 189 188 189 190 190
+129 129 118 119 132 135 139 137 138 134 255 255 253 253 253 253 254 256 256 257
+114 113 106 105 119 122 123 118 121 117 224 222 222 222 223 222 223 225 224 225
+146 140 140 131 160 169 171 150 160 144 302 291 293 290 298 290 298 302 295 299
+133 124 131 116 151 160 157 130 140 125 271 256 262 257 268 257 268 270 260 265
+59 57 55 53 62 63 62 58 59 58 111 109 110 109 111 109 111 111 109 110
+280 173 504 169 719 795 545 164 193 162 708 433 594 492 685 490 689 649 460 541
+209 103 373 102 531 533 301 92 102 92 390 201 330 254 387 253 389 337 206 257
+266 69 464 74 604 531 210 49 56 51 279 106 236 146 293 144 295 205 104 114
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+25 47 7 35 7 7 7 12 7 48 9 23 18 23 11 23 10 9 17 11
+64 129 32 92 35 33 33 78 38 147 53 101 82 98 64 98 63 56 88 71
+46 47 40 44 45 44 45 48 46 49 83 85 84 85 84 85 84 84 85 84
+119 211 87 177 96 93 101 245 146 295 227 312 263 295 235 295 234 243 301 275
+76 77 68 72 76 76 77 80 78 81 142 145 143 144 142 144 142 143 145 144
+79 80 71 74 80 80 81 82 81 83 150 151 150 151 150 150 150 150 151 151
+400 412 356 378 404 417 513 724 691 578 1176 1246 1147 1189 1140 1190 1140 1229 1281 1273
+302 305 279 281 318 370 537 519 595 342 1053 1042 983 998 1005 998 1007 1096 1092 1111
+370 363 350 334 403 577 679 453 613 382 1152 1069 1057 1043 1101 1043 1104 1177 1123 1163
+239 220 298 205 360 526 546 257 391 227 830 702 730 696 785 696 788 835 750 799
+444 421 644 393 808 1066 978 435 554 428 1415 1138 1245 1158 1351 1157 1357 1395 1208 1304
+361 308 732 295 993 1224 970 312 360 305 1288 890 1090 952 1232 950 1238 1233 959 1088
+384 231 743 226 1083 1202 812 219 255 215 1035 603 857 697 999 694 1005 943 646 775
+364 156 712 159 1036 1042 562 132 154 132 711 318 586 430 705 427 709 601 330 436
+362 85 644 94 843 741 285 57 68 60 376 132 315 187 396 185 398 271 129 142
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+59 121 12 87 12 11 11 21 11 122 14 52 38 52 18 52 17 14 36 18
+212 536 78 352 79 75 76 272 87 615 150 383 293 367 203 367 199 165 322 240
+214 649 136 454 143 137 141 561 176 843 375 683 537 641 428 642 423 416 623 522
+101 231 76 187 84 82 87 280 138 346 220 333 268 310 231 310 230 241 319 284
+84 135 67 118 76 76 83 204 135 215 199 258 217 241 200 241 199 215 256 239
+157 199 130 181 146 152 181 329 271 305 422 487 430 459 414 459 414 448 494 478
+165 185 146 169 165 182 235 320 306 260 490 524 477 497 473 497 474 516 541 537
+171 176 162 162 186 223 293 285 318 210 534 529 500 507 510 507 511 555 554 563
+174 166 179 154 209 289 337 234 306 184 551 506 499 492 523 492 525 564 535 557
+154 138 185 129 225 310 321 169 241 144 474 403 418 400 449 399 450 476 429 457
+155 142 159 133 184 200 194 150 168 142 329 305 314 306 323 306 324 327 311 319
+135 119 142 112 166 179 165 121 135 116 274 248 261 252 270 252 271 270 252 261
+188 120 329 116 470 520 360 115 133 114 460 284 387 321 445 320 447 422 301 353
+111 68 167 64 227 228 143 62 67 62 189 119 166 138 188 138 188 169 121 139
+255 73 435 77 565 499 205 51 59 53 277 115 237 154 290 152 291 209 114 124
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+79 162 16 116 15 14 14 27 14 163 17 69 50 69 23 69 22 17 47 22
+274 715 97 464 96 91 92 355 105 821 187 504 381 481 260 482 254 208 421 309
+269 843 175 585 183 176 181 727 219 1094 491 892 702 838 560 838 554 544 814 682
+273 714 219 585 235 231 243 880 395 1094 743 1117 904 1040 780 1042 775 814 1070 954
+407 678 351 612 390 390 408 1077 684 1136 1184 1507 1286 1414 1189 1416 1186 1271 1496 1405
+429 539 369 502 414 423 470 1125 871 1015 1462 1717 1494 1609 1431 1611 1430 1565 1744 1685
+471 499 418 459 474 500 673 1048 991 790 1693 1818 1643 1717 1630 1719 1630 1789 1881 1867
+1283 1217 1059 1104 1209 1020 1030 1003 1002 1039 1852 1862 1913 1901 1894 1899 1893 1814 1817 1800
+1206 1244 915 1124 1013 1015 1018 967 1001 1174 1805 1870 1879 1889 1845 1887 1843 1786 1828 1797
+719 737 684 674 801 987 1009 696 831 753 1627 1523 1546 1518 1591 1517 1593 1631 1562 1602
+477 458 660 427 823 1071 989 470 582 468 1441 1178 1279 1197 1380 1196 1385 1422 1245 1336
+364 311 662 296 885 1080 869 316 364 308 1172 838 1005 890 1124 888 1129 1126 896 1005
+257 163 448 158 635 703 488 155 182 152 636 397 537 448 616 447 619 585 421 492
+151 95 219 91 291 293 188 87 95 88 264 178 236 201 263 201 263 239 181 203
+57 41 66 38 78 73 52 38 39 39 82 69 79 73 83 73 83 77 68 71
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+3 3 2 2 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5
+21 21 18 19 21 20 20 21 21 22 38 38 38 38 38 38 38 38 38 38
+59 62 50 57 56 55 56 62 58 65 105 109 107 109 106 109 106 105 108 107
+67 70 59 64 66 65 67 71 68 73 124 127 126 127 125 127 125 125 127 126
+130 141 112 130 124 124 131 153 142 156 253 267 257 263 253 263 253 257 266 262
+101 103 90 95 101 102 104 108 106 108 193 196 194 195 193 195 193 195 196 196
+89 89 80 82 90 90 92 92 91 92 169 169 169 169 168 169 169 169 170 170
+105 105 96 97 108 109 111 109 110 109 204 204 203 203 203 203 203 204 204 205
+175 171 166 160 188 202 209 191 202 180 376 367 366 364 371 364 371 379 373 378
+88 87 81 81 92 93 94 89 91 89 169 167 168 167 168 167 169 169 168 169
+138 117 192 109 243 316 292 129 178 116 396 311 343 317 376 317 378 390 332 362
+133 118 140 110 163 175 163 119 133 115 270 244 257 248 266 248 266 266 249 257
+107 91 113 85 134 139 123 88 97 87 202 180 193 185 200 185 201 197 182 189
+149 82 244 80 340 342 204 74 82 75 267 153 230 185 265 184 266 235 157 187
+287 81 510 86 674 596 239 69 74 72 311 126 263 164 326 162 327 230 126 130
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+37 76 8 54 7 7 7 13 7 77 9 33 24 33 11 33 11 9 23 11
+88 195 38 132 41 39 40 109 45 224 63 141 110 135 80 135 79 68 120 92
+91 187 59 139 66 64 66 168 82 238 126 200 164 190 138 190 137 135 185 161
+110 204 82 169 92 90 95 239 138 289 212 297 248 279 220 279 219 228 286 260
+143 216 112 191 125 124 141 308 217 324 334 419 360 394 335 394 334 356 415 391
+156 197 129 180 145 151 180 329 270 304 418 484 426 456 410 456 410 445 491 475
+261 284 232 261 263 282 356 487 466 396 767 816 748 777 743 777 743 805 841 836
+874 847 749 773 856 790 863 843 868 788 1528 1529 1529 1529 1528 1528 1529 1529 1529 1529
+827 834 678 760 767 867 923 778 881 824 1576 1557 1554 1551 1564 1549 1565 1583 1570 1580
+617 622 604 570 712 894 917 608 746 637 1462 1350 1374 1344 1423 1343 1425 1467 1393 1436
+449 426 673 398 850 1140 1047 440 577 433 1501 1193 1311 1214 1429 1214 1435 1480 1272 1379
+378 326 746 311 1012 1251 998 331 379 323 1325 923 1123 985 1267 983 1273 1270 994 1125
+331 202 638 197 935 1043 708 193 224 189 894 521 739 601 862 599 867 815 560 671
+268 117 536 119 792 800 432 103 116 104 531 231 435 315 526 313 529 448 241 322
+188 49 338 52 448 396 156 42 45 43 198 74 166 100 208 99 209 144 74 78
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+64 132 14 94 13 12 12 23 13 133 15 57 42 57 19 57 19 15 39 19
+199 491 76 324 77 72 73 255 85 564 141 353 270 337 189 338 185 155 297 222
+243 738 155 514 162 155 161 641 201 961 429 779 613 732 489 732 483 475 711 596
+287 696 229 572 247 242 255 854 403 1054 740 1092 892 1019 775 1021 771 807 1048 940
+327 526 276 473 306 306 327 810 532 852 894 1130 968 1062 898 1063 896 958 1122 1056
+364 425 317 393 359 364 391 742 605 684 1001 1139 1018 1080 984 1081 984 1057 1154 1122
+485 486 432 445 492 497 562 718 694 614 1172 1222 1152 1182 1146 1182 1147 1211 1248 1242
+772 753 669 688 764 722 796 779 805 717 1398 1397 1390 1392 1392 1391 1392 1404 1403 1406
+684 684 580 625 660 759 815 678 774 688 1375 1344 1339 1334 1356 1333 1357 1385 1365 1380
+606 609 595 558 701 883 907 597 737 623 1443 1330 1355 1325 1403 1324 1406 1449 1373 1418
+537 529 715 490 889 1144 1065 536 643 542 1559 1296 1396 1314 1497 1313 1503 1541 1364 1455
+391 339 755 323 1022 1261 1011 344 393 336 1345 945 1144 1006 1287 1004 1294 1291 1016 1146
+390 239 752 234 1102 1231 838 227 266 223 1062 622 879 716 1024 713 1030 969 667 799
+382 165 764 168 1127 1139 618 139 163 138 769 337 630 458 762 455 765 649 352 470
+322 95 571 100 759 674 274 83 89 86 354 149 300 188 370 186 372 264 148 152
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+52 105 12 75 11 11 11 20 11 106 14 46 34 46 17 46 16 14 33 17
+232 592 85 385 86 81 82 301 94 682 161 421 320 402 220 403 216 179 353 262
+241 734 153 510 161 154 159 639 200 957 425 774 608 726 484 727 479 471 706 592
+284 693 226 569 244 239 252 853 401 1052 734 1086 886 1014 769 1015 764 802 1043 934
+389 645 334 581 371 371 390 1026 656 1079 1118 1425 1215 1336 1123 1338 1120 1202 1415 1329
+381 486 326 453 365 375 421 1042 803 936 1329 1572 1359 1468 1300 1470 1299 1427 1598 1541
+1351 1139 1215 1050 1411 1234 1025 929 941 1007 1832 1739 1869 1815 1877 1812 1876 1761 1691 1702
+1761 1629 1408 1475 1592 1192 976 948 859 1256 1769 1797 1967 1926 1906 1921 1902 1645 1652 1598
+1606 1687 1145 1510 1224 981 859 1058 910 1516 1652 1871 1906 1939 1791 1935 1783 1584 1726 1620
+1046 1155 809 1042 883 840 828 934 855 1167 1475 1607 1580 1613 1523 1611 1520 1468 1558 1506
+420 371 593 349 742 973 901 401 539 372 1299 1040 1138 1058 1238 1057 1243 1282 1107 1197
+351 280 575 267 755 917 749 285 353 269 1024 747 883 788 983 787 987 986 795 885
+325 209 540 202 755 839 594 197 238 191 786 507 669 566 762 564 766 727 536 619
+255 125 466 125 672 680 385 110 124 110 493 249 414 317 489 315 491 426 258 324
+177 55 302 57 395 352 149 42 47 43 197 86 168 111 205 110 206 150 85 92
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+60 124 12 88 12 11 11 21 11 125 14 53 38 53 17 52 16 14 36 17
+245 639 87 412 87 83 84 321 96 737 164 447 337 426 228 427 223 183 373 274
+248 788 158 542 165 158 163 686 204 1030 443 823 642 771 507 771 502 493 749 625
+263 626 208 515 225 220 233 771 369 948 665 980 800 915 696 916 692 726 941 844
+169 271 136 241 152 151 167 409 274 430 433 553 470 518 435 519 434 466 549 515
+153 194 127 176 142 148 177 325 267 300 410 475 418 447 402 447 402 436 482 466
+279 299 247 274 281 298 399 612 579 466 962 1034 933 976 926 977 926 1017 1071 1063
+192 196 179 181 205 244 342 334 379 229 645 639 601 610 614 610 615 672 670 682
+118 116 108 108 122 125 127 122 125 120 231 229 229 228 230 228 230 232 231 232
+185 170 238 158 293 451 475 203 332 176 702 583 608 577 659 577 662 707 628 675
+160 135 221 127 277 361 335 150 208 135 463 366 402 373 440 372 442 456 391 425
+202 162 359 154 481 594 478 165 204 159 628 441 533 469 600 468 603 602 474 535
+296 187 547 182 795 890 613 179 209 176 777 466 646 532 750 530 754 712 499 591
+286 132 554 133 814 825 456 114 131 114 568 262 468 347 562 345 565 483 273 356
+82 28 139 28 184 164 71 24 25 24 86 36 73 47 90 46 90 65 36 39
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+49 99 11 71 11 10 10 19 11 101 13 44 32 44 15 43 15 13 30 15
+222 571 81 370 82 78 79 291 90 658 152 403 305 385 209 385 204 169 338 249
+217 648 139 450 147 141 146 568 183 844 378 683 538 641 429 642 425 418 624 524
+231 513 180 424 195 191 203 627 315 766 552 800 658 748 576 749 573 599 769 693
+197 327 160 292 177 177 196 508 332 534 535 689 583 644 538 645 536 577 684 641
+253 319 216 294 242 249 285 600 478 545 771 899 787 845 756 845 755 823 913 883
+200 220 177 201 201 217 296 450 426 344 693 747 671 703 666 704 666 734 774 768
+69 71 64 65 75 93 142 138 160 86 261 258 240 244 246 244 247 274 274 279
+538 534 479 489 548 728 838 604 773 548 1418 1341 1327 1315 1369 1315 1372 1443 1393 1431
+173 156 206 145 249 345 361 192 273 162 535 457 473 453 507 452 509 539 487 517
+169 143 232 134 290 379 351 158 219 143 488 388 425 394 464 394 466 482 414 449
+348 297 709 285 970 1214 968 302 352 294 1265 867 1063 927 1206 925 1212 1212 938 1068
+280 175 528 171 775 869 596 168 196 165 747 441 618 506 720 504 724 683 473 565
+292 135 566 136 833 845 468 116 134 116 582 269 480 355 576 353 579 496 280 366
+226 62 402 66 532 473 192 45 51 47 247 95 207 127 258 126 259 182 94 103
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+52 107 11 75 11 10 10 19 11 108 13 46 33 46 15 45 15 13 32 15
+258 690 88 439 87 83 84 343 96 797 163 472 352 450 233 451 227 184 392 283
+250 794 160 544 167 160 166 695 208 1040 448 830 647 777 511 778 506 498 756 631
+303 783 244 639 263 258 271 981 444 1211 816 1230 994 1144 857 1146 852 897 1180 1052
+404 676 348 609 387 386 405 1094 694 1148 1176 1506 1279 1410 1180 1412 1177 1266 1495 1403
+432 541 372 503 417 427 474 1148 890 1030 1466 1727 1497 1615 1433 1617 1433 1572 1755 1694
+476 504 423 463 479 505 683 1072 1013 806 1702 1830 1649 1726 1636 1727 1637 1800 1895 1881
+1312 1240 1083 1126 1234 1029 1035 1008 1005 1046 1866 1875 1932 1918 1911 1916 1910 1824 1826 1808
+1209 1243 920 1123 1017 1015 1020 967 1003 1167 1808 1871 1882 1890 1849 1888 1847 1789 1829 1799
+894 948 778 862 892 1036 1053 829 921 963 1737 1701 1709 1699 1725 1697 1726 1739 1716 1730
+555 549 745 510 930 1210 1130 555 675 564 1642 1359 1465 1377 1575 1376 1580 1624 1433 1532
+410 359 799 342 1088 1354 1089 365 415 357 1436 1004 1217 1068 1372 1066 1378 1378 1082 1223
+403 248 794 243 1179 1327 904 237 278 231 1131 653 930 754 1088 751 1094 1031 704 847
+372 163 751 166 1120 1138 622 138 162 137 764 332 623 452 755 449 759 646 348 467
+312 93 562 98 755 674 277 82 87 84 348 146 293 182 364 180 366 259 145 149
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+43 88 10 62 9 9 9 16 9 89 11 38 28 38 13 38 13 11 26 13
+243 633 88 407 88 83 85 322 97 731 163 444 334 423 226 423 221 182 371 272
+243 736 157 509 164 158 163 649 206 962 430 779 612 730 488 731 482 476 712 597
+259 524 197 437 213 208 223 633 341 765 588 827 690 777 611 778 608 634 798 724
+312 468 253 420 280 280 310 680 477 711 775 960 832 905 777 906 775 825 954 902
+670 663 608 616 697 690 658 944 833 902 1419 1513 1430 1472 1407 1473 1407 1457 1523 1501
+558 549 497 503 568 565 624 783 759 678 1281 1329 1261 1290 1256 1290 1256 1318 1354 1348
+366 371 338 342 386 440 599 587 658 418 1132 1123 1064 1079 1084 1079 1086 1174 1172 1190
+326 318 313 293 361 572 707 438 635 339 1191 1092 1073 1058 1127 1058 1131 1224 1160 1208
+199 179 237 167 285 394 413 221 314 187 619 530 548 525 586 525 589 623 564 599
+221 188 302 177 373 487 453 208 288 188 644 516 564 525 613 524 616 636 550 594
+252 208 368 195 457 551 458 211 257 210 647 500 571 521 623 520 626 626 526 573
+117 98 128 92 153 161 140 95 106 93 224 196 212 202 222 201 222 218 199 207
+45 41 44 38 51 51 47 39 41 39 81 76 79 77 81 77 81 80 76 78
+21 18 20 17 23 23 20 17 18 17 35 33 35 34 35 34 35 34 33 33
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2
+27 27 23 25 26 25 25 27 26 28 47 49 48 48 48 48 48 47 48 48
+64 68 54 62 60 58 60 68 63 73 113 119 116 118 114 118 114 114 118 116
+99 108 84 98 93 91 95 112 102 118 182 193 187 191 184 191 183 185 192 189
+94 98 83 90 93 93 95 102 99 104 179 183 180 182 179 182 179 180 183 182
+113 116 101 107 112 114 117 124 121 124 219 224 220 222 219 222 219 221 224 223
+126 128 114 119 127 130 134 137 136 135 249 251 248 249 248 249 248 251 252 252
+148 148 136 138 152 158 164 162 164 157 301 301 298 298 299 298 299 304 304 304
+140 138 131 129 148 154 158 149 154 144 285 281 280 280 283 280 283 287 284 286
+115 112 108 104 122 126 127 117 121 114 227 222 223 222 225 222 225 227 224 226
+88 85 83 80 94 97 96 88 91 87 170 166 168 166 169 166 169 170 167 169
+112 102 113 96 131 139 132 104 113 101 223 207 214 209 220 209 220 220 209 215
+23 23 21 21 24 24 24 23 23 23 43 43 43 43 43 43 43 43 43 43
+30 28 28 26 32 32 30 27 28 28 54 52 53 52 54 52 54 53 52 53
+22 19 22 18 25 25 22 18 19 18 37 35 37 36 38 36 38 36 35 35
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+5 9 2 7 2 2 2 3 2 9 3 5 5 5 3 5 3 3 4 3
+50 104 23 72 26 24 25 62 28 120 38 79 63 76 47 76 46 41 68 54
+52 55 45 50 50 49 50 55 52 57 94 97 95 96 94 96 94 94 96 95
+90 97 77 88 85 84 87 100 93 104 166 174 170 173 167 173 167 168 173 171
+236 427 195 382 215 215 235 718 444 753 721 953 792 885 723 886 721 785 946 881
+239 301 204 277 229 236 269 596 470 537 747 877 762 820 730 821 730 800 891 861
+161 180 142 165 161 178 231 318 304 257 475 509 461 481 458 481 458 501 526 522
+166 169 154 156 177 211 307 301 344 199 573 568 531 540 544 541 545 599 598 609
+342 334 326 308 376 581 714 453 645 355 1197 1101 1082 1068 1135 1068 1138 1229 1167 1215
+144 134 179 124 220 338 358 159 255 139 513 428 445 423 482 423 484 518 461 495
+222 194 339 182 430 588 545 212 308 195 750 581 643 591 709 591 713 740 625 685
+152 123 261 116 352 438 356 126 156 121 453 318 383 337 432 336 434 435 342 386
+189 125 329 120 476 536 377 121 141 119 473 294 397 331 457 330 459 436 313 367
+225 112 422 111 623 635 361 98 112 98 445 215 369 278 440 276 442 382 224 287
+225 65 399 69 532 478 200 46 54 48 255 104 214 134 265 133 266 191 102 112
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+34 68 8 48 8 7 7 13 8 69 10 30 22 30 11 30 11 10 21 11
+243 661 83 417 82 78 79 331 90 767 147 446 329 424 214 425 209 168 369 264
+112 315 73 216 79 76 78 282 98 412 175 320 250 299 198 299 196 194 292 244
+121 215 89 179 99 96 104 256 153 305 231 320 269 301 240 301 239 248 309 282
+139 210 109 185 121 121 138 305 216 319 322 407 348 382 323 382 322 345 404 380
+243 305 208 281 234 240 273 605 478 544 757 889 772 832 740 832 740 811 904 873
+226 246 200 226 227 244 327 489 465 376 749 806 726 760 720 760 721 793 835 829
+434 435 392 399 448 484 666 653 730 463 1255 1247 1186 1202 1207 1202 1209 1299 1297 1315
+648 647 558 592 636 773 860 676 810 653 1446 1395 1384 1377 1412 1376 1414 1464 1431 1456
+693 706 643 646 753 929 956 668 803 721 1526 1435 1454 1429 1493 1428 1496 1532 1472 1508
+432 408 651 381 828 1131 1052 425 580 415 1476 1164 1280 1183 1401 1182 1407 1458 1248 1358
+324 274 636 262 873 1100 885 280 334 271 1146 788 961 839 1090 837 1096 1099 853 970
+400 255 758 249 1122 1270 879 243 289 237 1100 652 909 745 1059 742 1065 1009 701 836
+325 152 635 154 947 968 543 129 153 128 667 306 547 404 658 402 662 569 321 420
+304 78 559 85 753 676 274 52 63 55 339 124 280 165 355 163 356 247 122 134
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 2 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0
+238 648 81 408 80 77 77 326 88 753 142 436 321 414 208 415 202 163 361 257
+242 803 162 538 169 163 169 715 205 1057 447 835 648 780 510 781 504 498 762 634
+315 784 254 638 274 269 284 995 463 1217 826 1237 1001 1151 865 1153 860 907 1189 1063
+409 626 353 565 394 394 412 976 654 1017 1082 1352 1164 1272 1084 1273 1082 1157 1344 1269
+446 499 393 462 446 450 468 887 728 813 1190 1348 1208 1280 1170 1280 1170 1255 1366 1330
+832 773 744 708 854 812 819 953 934 868 1617 1642 1606 1621 1603 1621 1603 1636 1655 1652
+192 196 179 180 205 243 346 340 386 230 643 638 598 608 611 608 613 672 671 682
+448 441 410 406 471 650 768 537 707 460 1283 1202 1186 1174 1230 1173 1233 1312 1259 1299
+233 215 275 200 332 476 502 257 377 224 747 639 660 632 707 632 710 754 682 724
+242 211 360 198 455 619 576 231 333 212 797 621 685 632 754 631 757 787 668 730
+154 122 230 115 302 368 307 126 159 119 402 296 347 311 385 310 387 388 315 350
+57 53 54 50 62 63 60 53 55 53 105 101 103 102 105 102 105 104 102 103
+86 52 134 49 192 196 122 48 52 49 148 86 127 102 146 102 147 131 88 105
+60 28 93 27 121 111 56 24 25 24 73 42 64 48 75 48 75 60 42 44
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+15 15 14 14 15 15 15 15 15 16 28 28 28 28 28 28 28 28 28 28
+34 34 30 31 33 33 33 34 34 35 61 62 62 62 61 62 61 61 62 62
+44 44 39 41 44 44 44 45 44 46 81 82 81 82 81 82 81 81 82 81
+169 269 137 240 152 152 169 416 280 434 431 553 468 517 432 517 431 465 549 515
+205 260 174 239 196 202 234 512 406 460 633 744 645 696 619 696 618 679 757 731
+558 552 497 505 567 567 654 881 848 727 1416 1485 1387 1429 1381 1429 1381 1470 1521 1514
+522 518 466 476 532 555 740 726 802 535 1376 1369 1311 1326 1330 1326 1333 1418 1416 1433
+507 502 455 461 520 679 784 577 729 517 1309 1240 1225 1215 1263 1215 1266 1333 1289 1323
+428 415 462 383 555 789 830 442 632 428 1266 1111 1141 1101 1209 1100 1213 1276 1173 1234
+447 426 628 397 791 1058 993 442 580 434 1404 1132 1231 1148 1337 1147 1343 1389 1205 1301
+364 314 709 300 976 1233 997 321 380 311 1289 890 1082 947 1226 945 1232 1237 964 1095
+339 217 651 212 973 1108 767 208 246 203 946 553 778 634 909 632 914 866 597 716
+300 141 598 143 902 925 519 121 142 121 626 281 511 374 617 372 621 533 296 391
+257 67 475 73 645 581 237 47 55 49 289 107 238 140 302 138 303 211 105 116
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+25 52 6 36 6 5 5 10 6 53 7 23 16 22 8 22 8 7 16 8
+149 373 59 241 61 58 58 201 68 433 100 261 197 249 135 249 132 111 220 162
+169 572 112 378 117 113 117 513 145 758 303 582 447 542 348 543 343 340 530 438
+223 565 176 457 190 187 197 726 334 888 577 881 706 817 606 818 602 638 846 753
+241 430 199 384 220 221 241 731 457 762 727 961 798 891 729 892 726 792 955 890
+207 262 176 241 198 204 237 517 411 464 638 750 650 701 623 702 623 684 763 737
+216 236 192 217 218 235 318 479 455 365 725 780 701 735 696 735 696 768 809 804
+290 295 268 271 306 352 508 500 567 334 955 948 891 906 910 906 912 995 994 1011
+344 337 327 311 378 555 675 449 616 358 1117 1033 1015 1003 1061 1003 1064 1146 1092 1134
+515 508 538 468 645 913 961 520 737 522 1474 1305 1338 1294 1412 1293 1416 1486 1373 1440
+407 381 602 356 765 1046 979 400 550 388 1364 1078 1182 1094 1294 1093 1299 1349 1155 1257
+308 260 558 247 760 955 778 266 323 257 1012 711 854 753 963 751 968 972 766 865
+172 134 217 125 278 305 241 131 148 131 347 274 315 289 340 288 341 332 282 304
+31 29 29 27 33 33 32 28 29 29 56 54 55 54 56 54 56 55 54 54
+16 15 15 14 18 17 16 14 14 14 28 26 28 27 28 27 28 27 26 27
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+19 38 5 27 5 5 5 8 5 39 6 17 13 17 7 17 7 6 12 7
+193 522 69 328 69 66 67 270 77 609 118 353 260 335 169 335 165 134 293 209
+216 736 142 487 149 143 148 664 187 978 394 755 579 703 451 704 446 442 688 569
+211 550 167 443 180 177 187 714 323 874 555 857 682 793 583 794 579 615 823 730
+285 476 238 427 264 264 286 784 507 816 809 1047 880 976 810 977 808 876 1041 975
+458 512 404 475 459 462 480 955 777 867 1260 1436 1279 1359 1236 1360 1236 1333 1457 1417
+364 379 323 347 368 382 480 683 654 541 1062 1130 1033 1074 1027 1074 1027 1115 1165 1158
+295 299 272 276 311 357 514 506 574 339 964 957 900 914 918 915 921 1005 1004 1021
+332 325 317 300 366 548 671 441 613 347 1108 1023 1004 992 1051 992 1055 1139 1084 1127
+546 542 556 498 665 923 970 547 756 556 1493 1334 1364 1323 1434 1322 1438 1504 1398 1461
+448 425 653 397 828 1130 1061 442 600 434 1481 1177 1287 1194 1406 1193 1412 1465 1260 1368
+366 316 707 301 976 1239 1005 323 386 313 1294 893 1084 948 1228 946 1235 1241 967 1099
+354 226 698 221 1058 1212 836 217 257 212 1018 585 831 673 977 671 982 932 635 765
+283 137 552 138 833 857 488 118 139 117 588 271 481 356 580 354 583 504 286 373
+245 71 445 76 604 547 231 48 58 49 285 115 236 145 296 143 297 212 113 125
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+10 19 3 14 4 3 3 5 4 20 5 10 8 10 5 10 5 5 8 5
+115 264 51 175 54 51 52 152 60 306 86 195 151 186 109 186 107 94 167 128
+116 273 78 195 85 82 85 252 108 355 182 298 241 281 200 281 198 197 276 238
+188 417 145 340 159 156 165 528 267 638 438 646 525 602 457 603 455 480 623 559
+305 533 257 478 284 284 306 914 575 950 918 1207 1005 1120 920 1122 917 1000 1200 1120
+437 495 384 458 436 440 462 947 766 855 1233 1414 1252 1334 1209 1335 1208 1309 1436 1394
+360 388 319 356 362 388 556 911 861 660 1387 1504 1337 1407 1326 1409 1327 1479 1565 1553
+786 767 683 701 779 742 900 883 941 730 1626 1622 1589 1597 1598 1597 1601 1649 1648 1658
+560 555 497 509 568 785 931 651 861 569 1554 1463 1442 1429 1493 1429 1497 1588 1529 1574
+459 447 506 413 615 933 992 473 733 460 1495 1291 1330 1277 1419 1276 1424 1510 1374 1455
+504 489 704 455 889 1198 1130 501 656 500 1589 1283 1394 1300 1513 1299 1519 1573 1367 1476
+383 333 749 318 1038 1323 1073 341 408 331 1375 946 1149 1004 1304 1002 1311 1319 1026 1167
+364 232 734 228 1122 1290 888 223 265 218 1072 608 871 702 1027 699 1033 980 661 802
+325 149 680 152 1050 1082 603 128 151 127 708 296 568 407 696 404 700 598 315 429
+260 80 492 84 684 621 260 70 75 72 305 127 251 149 318 147 319 225 126 130
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+172 490 57 300 56 54 55 249 62 575 89 314 224 296 137 297 133 105 257 176
+191 655 127 430 134 129 133 597 168 874 347 669 511 622 397 623 392 390 609 503
+200 465 156 377 170 167 177 597 293 723 484 725 584 673 506 674 503 532 697 624
+333 558 282 501 313 313 335 939 603 974 962 1249 1048 1163 964 1164 961 1044 1242 1163
+430 494 378 458 428 433 457 1004 802 899 1282 1484 1303 1395 1254 1396 1254 1367 1509 1463
+500 501 445 459 508 512 606 827 796 673 1307 1376 1277 1318 1270 1319 1271 1361 1412 1405
+680 669 598 613 683 676 870 855 930 658 1592 1586 1534 1547 1550 1547 1553 1629 1628 1643
+645 643 560 588 638 829 960 707 896 651 1602 1527 1509 1498 1552 1498 1555 1631 1582 1620
+531 525 554 483 667 969 1026 536 782 539 1561 1375 1409 1362 1491 1361 1496 1575 1451 1525
+419 394 630 369 805 1116 1050 413 581 401 1445 1133 1245 1150 1368 1149 1374 1430 1219 1330
+336 287 672 275 938 1204 974 295 362 285 1234 836 1024 890 1167 888 1174 1182 911 1041
+374 243 716 238 1082 1243 867 234 280 226 1059 620 868 709 1016 706 1022 972 671 804
+326 155 655 157 1002 1034 587 131 158 130 698 310 566 413 687 411 691 595 328 436
+198 58 365 62 499 454 193 41 49 43 232 94 192 116 242 115 243 173 93 102
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+124 304 51 196 54 51 52 171 60 356 84 214 162 204 111 204 109 93 181 134
+91 233 61 160 67 65 67 216 84 306 137 239 188 224 152 224 151 150 220 186
+100 186 75 151 85 83 88 230 132 274 189 270 222 252 196 252 195 205 261 236
+180 283 146 251 162 162 181 442 301 457 456 582 493 544 456 544 455 492 580 545
+144 182 122 166 139 143 167 369 293 328 432 512 440 477 421 477 421 466 522 504
+170 191 150 175 171 189 249 344 331 275 507 543 491 513 487 513 488 536 563 559
+150 155 142 143 163 198 269 266 297 189 471 467 437 445 447 445 448 492 492 501
+224 218 224 201 260 375 458 312 420 238 736 678 664 656 697 656 699 758 720 749
+490 483 497 444 593 811 853 497 676 496 1304 1168 1193 1158 1253 1157 1256 1314 1224 1278
+251 220 390 207 500 701 658 243 367 222 889 681 755 692 836 691 841 878 738 812
+241 200 487 192 684 884 714 206 263 198 887 591 730 631 837 629 842 849 647 744
+252 162 518 158 805 932 640 157 184 154 752 416 605 483 719 481 723 686 455 557
+289 134 615 137 964 997 557 117 137 116 641 262 511 363 629 360 633 541 280 386
+233 66 454 71 639 582 240 57 62 59 272 104 220 123 283 121 285 196 104 108
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+202 577 69 352 68 65 66 298 75 678 110 376 270 355 166 355 162 130 310 213
+199 720 138 464 145 140 145 663 179 963 378 735 560 682 433 684 428 427 669 553
+254 670 203 537 218 214 228 892 402 1083 683 1061 841 979 718 981 713 761 1019 905
+322 552 272 495 302 302 325 955 607 986 955 1252 1043 1162 956 1163 954 1040 1246 1164
+282 344 242 317 273 280 316 716 568 635 878 1032 893 963 857 964 856 943 1051 1016
+227 247 201 227 228 246 336 505 482 382 754 812 728 763 722 764 723 800 843 838
+238 243 221 224 253 301 445 439 502 285 826 820 765 779 783 779 785 865 864 880
+170 164 174 152 204 287 346 243 319 184 546 502 491 485 516 485 517 562 534 556
+288 272 333 252 407 620 664 314 492 282 975 830 856 819 920 818 923 986 889 947
+223 196 337 184 431 601 566 216 323 198 760 586 648 595 716 594 720 752 634 696
+288 242 538 231 746 956 780 249 313 239 988 679 823 720 935 718 940 948 737 839
+191 130 334 125 495 568 404 126 150 124 495 305 412 343 476 342 479 458 328 385
+281 135 583 136 909 942 533 117 138 116 617 262 495 356 606 354 610 524 280 379
+191 53 363 57 504 460 193 39 45 40 223 84 180 104 232 102 233 162 83 92
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+175 474 66 294 67 64 64 255 74 558 109 323 237 305 154 306 149 124 269 192
+193 629 131 415 139 134 139 585 177 841 349 655 504 609 396 610 391 391 599 499
+264 649 210 523 227 223 237 859 405 1037 677 1030 824 953 709 955 704 750 991 884
+337 582 286 523 317 318 341 1024 647 1056 1015 1335 1109 1238 1016 1239 1013 1108 1329 1241
+351 440 301 408 338 348 396 1045 810 912 1248 1492 1271 1383 1213 1385 1213 1352 1524 1468
+622 606 555 555 634 625 706 923 895 771 1476 1539 1448 1486 1442 1486 1443 1526 1573 1567
+229 234 213 216 244 290 431 425 487 274 793 787 734 748 751 748 753 831 830 846
+189 184 189 170 220 331 411 272 376 202 652 597 583 576 614 576 616 672 637 665
+271 255 317 236 389 604 649 297 477 265 945 800 825 789 890 788 893 957 860 918
+166 142 227 133 287 384 364 161 229 143 491 387 423 392 464 392 466 486 416 453
+145 116 216 109 289 358 301 120 156 114 384 280 328 293 366 293 368 371 299 334
+122 100 137 94 167 179 153 98 111 96 237 203 222 209 234 209 234 230 207 217
+97 75 114 70 142 145 112 71 76 72 169 139 158 146 168 146 168 160 140 148
+43 32 50 29 60 57 41 30 30 31 64 53 61 56 64 56 64 60 53 55
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+152 406 59 253 60 58 59 223 68 479 97 279 205 264 135 264 131 110 233 168
+180 605 124 395 131 126 131 566 167 814 328 625 478 580 373 581 369 369 571 474
+217 425 165 351 180 176 190 538 299 637 477 675 558 631 494 632 492 517 653 593
+176 277 143 246 159 160 178 441 301 454 448 575 485 536 448 536 447 485 573 538
+146 156 129 143 143 146 156 176 169 174 297 309 298 304 296 304 296 302 310 308
+151 156 136 144 153 158 167 175 174 170 311 316 309 312 309 312 309 315 319 319
+159 160 147 149 165 173 183 180 184 172 334 333 328 329 330 329 330 337 337 339
+123 121 114 113 128 133 135 129 132 126 244 242 241 241 242 240 243 245 244 245
+132 127 125 119 143 151 153 136 144 131 269 261 262 260 266 260 266 270 264 267
+104 99 100 93 113 119 118 103 109 101 205 198 201 198 203 198 204 205 200 203
+66 63 62 59 70 72 71 64 66 64 125 121 123 122 124 122 124 124 122 123
+61 56 58 52 67 69 65 56 59 56 113 107 110 108 112 108 112 112 108 110
+87 56 135 53 195 202 129 52 57 52 157 94 134 110 154 109 155 140 97 114
+47 21 75 21 102 94 47 19 20 19 57 32 49 36 58 35 59 46 31 34
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+70 167 31 106 33 32 32 98 37 197 46 116 87 110 60 110 58 50 98 72
+54 57 46 52 51 50 51 57 54 60 96 100 98 100 97 100 97 97 100 98
+91 99 78 90 86 85 88 103 95 108 168 178 172 176 169 176 169 170 177 174
+74 76 66 70 74 74 75 79 77 80 139 142 140 141 139 141 139 140 142 141
+117 146 99 132 113 117 137 276 224 246 314 370 319 345 306 345 306 338 377 365
+246 266 219 244 248 267 370 566 540 421 835 901 805 845 799 846 800 889 938 931
+134 137 124 126 144 172 243 240 272 164 420 417 389 396 398 396 399 440 440 448
+234 228 231 211 269 436 557 349 507 249 889 810 789 779 834 779 837 919 868 908
+380 366 420 338 511 779 837 402 627 378 1231 1060 1089 1046 1165 1045 1170 1246 1131 1201
+409 384 598 359 765 1067 1014 405 575 392 1376 1082 1185 1096 1301 1095 1307 1364 1166 1271
+224 183 409 175 568 732 601 190 250 180 752 515 624 545 710 544 714 722 560 638
+284 188 558 183 867 1010 707 183 218 178 833 474 674 544 796 543 801 764 518 627
+246 122 506 123 798 832 477 107 125 106 544 231 435 313 533 311 536 463 247 334
+176 56 341 59 482 443 190 48 52 49 212 89 171 99 220 98 220 156 89 92
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+136 388 48 233 49 48 48 210 55 461 71 250 177 235 108 235 103 84 206 141
+126 390 87 256 94 91 94 371 120 527 215 402 309 374 243 374 240 241 368 307
+246 626 196 501 212 209 221 851 396 1023 644 997 789 919 674 921 670 718 960 853
+349 591 298 532 330 331 354 1053 673 1079 1037 1362 1131 1262 1037 1263 1034 1133 1358 1269
+480 525 425 486 482 486 502 1056 859 941 1347 1545 1364 1455 1318 1456 1317 1432 1572 1528
+736 701 657 642 752 727 785 980 957 842 1590 1640 1566 1597 1562 1597 1563 1631 1668 1663
+953 918 814 838 927 834 953 933 973 830 1698 1697 1691 1693 1691 1691 1693 1702 1702 1703
+550 545 488 500 558 740 873 636 816 559 1429 1352 1332 1322 1376 1321 1379 1459 1410 1449
+391 377 428 348 520 791 851 412 641 389 1251 1079 1108 1064 1185 1064 1189 1266 1151 1221
+193 169 279 158 357 495 470 188 279 171 622 483 530 489 586 488 588 616 522 572
+226 185 411 176 573 740 609 192 254 182 759 519 629 549 716 548 720 729 565 644
+185 128 324 123 488 565 405 125 148 122 488 298 403 335 468 334 470 451 321 379
+126 75 216 73 323 336 207 69 77 69 250 136 210 165 246 165 247 220 142 173
+54 25 85 25 114 106 55 22 23 22 68 40 60 45 70 44 70 56 40 43
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+203 600 70 355 70 67 68 322 78 714 107 388 274 364 165 365 155 126 319 218
+204 768 151 488 158 153 158 732 195 1046 405 793 600 734 463 735 457 459 724 597
+277 724 223 578 241 237 252 997 457 1198 744 1162 915 1069 780 1071 775 832 1118 992
+372 626 319 563 354 355 378 1124 719 1149 1105 1450 1204 1343 1104 1344 1101 1207 1446 1351
+415 501 358 463 403 414 465 1186 932 1030 1415 1681 1436 1560 1374 1561 1374 1530 1718 1658
+464 492 412 451 469 497 704 1116 1065 807 1664 1797 1600 1683 1589 1684 1591 1773 1872 1860
+235 240 219 221 251 299 450 444 509 283 819 812 756 770 774 771 777 859 858 875
+299 292 288 269 334 500 622 414 573 315 994 916 895 884 939 885 942 1025 974 1014
+283 267 325 247 398 618 669 311 498 278 963 818 842 805 907 805 910 976 879 938
+331 304 494 284 636 899 856 327 484 309 1142 886 974 898 1076 897 1081 1133 959 1052
+306 260 580 248 817 1063 874 269 347 258 1083 735 894 779 1021 777 1027 1040 803 918
+231 156 437 151 678 792 560 151 181 148 661 384 537 437 631 436 635 608 418 502
+242 121 500 122 798 834 481 106 125 105 542 227 431 309 530 308 533 461 243 332
+205 70 397 73 563 520 228 62 66 63 250 112 202 119 258 117 259 185 112 114
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+118 300 51 187 53 50 51 176 60 355 80 211 157 199 107 199 102 89 178 131
+153 428 108 291 115 111 116 413 150 577 269 469 369 438 299 439 296 297 434 368
+201 493 158 394 172 169 180 676 323 808 505 782 618 720 528 721 525 564 754 670
+296 478 248 428 276 277 301 825 544 841 823 1067 892 990 821 991 819 895 1064 997
+544 557 486 515 555 554 553 924 793 848 1265 1393 1275 1334 1245 1335 1245 1321 1411 1383
+946 856 846 786 972 897 852 907 901 875 1583 1575 1587 1582 1587 1581 1587 1577 1570 1571
+628 620 555 568 634 636 837 824 902 618 1505 1499 1442 1456 1459 1456 1462 1546 1545 1562
+538 533 480 489 550 765 924 647 860 548 1502 1410 1385 1373 1438 1373 1441 1539 1480 1527
+457 446 490 412 596 922 995 474 749 460 1459 1260 1293 1243 1382 1242 1387 1477 1345 1425
+448 427 619 398 788 1085 1040 446 614 437 1414 1132 1229 1144 1342 1143 1347 1405 1214 1315
+261 213 480 204 674 875 723 222 298 210 896 610 740 645 845 644 850 861 666 761
+271 181 537 177 851 999 702 177 211 172 811 455 652 524 773 522 778 744 500 609
+246 124 504 125 804 842 488 108 128 106 550 233 439 316 538 314 541 469 249 339
+163 48 311 51 435 402 175 34 41 35 195 78 156 90 201 89 202 143 77 85
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+60 122 31 82 35 34 34 81 40 143 49 95 76 91 58 91 57 52 83 67
+75 167 52 116 59 57 59 163 75 222 106 176 140 165 116 165 115 116 163 140
+89 203 67 159 76 75 79 277 139 331 188 298 232 273 197 273 195 211 286 253
+333 548 283 492 314 315 339 977 636 994 960 1254 1042 1162 958 1163 955 1047 1252 1171
+270 329 230 301 259 268 313 687 554 603 826 970 836 903 803 904 803 888 991 958
+586 575 523 527 597 592 672 862 840 721 1358 1414 1330 1365 1326 1365 1327 1404 1445 1441
+746 728 650 666 740 698 791 776 808 692 1371 1370 1356 1360 1360 1359 1361 1381 1381 1385
+306 299 301 276 350 504 619 428 574 326 984 908 888 878 930 878 933 1014 965 1004
+269 250 306 232 370 536 577 304 447 262 835 718 737 708 789 707 792 846 768 815
+284 249 399 234 508 701 671 279 408 252 902 709 774 717 851 716 855 895 765 834
+212 174 335 164 454 577 486 181 237 171 620 447 525 468 589 467 592 599 481 538
+101 86 108 81 130 139 122 85 95 83 195 172 184 176 192 176 193 190 175 182
+65 54 69 50 84 85 72 51 55 51 115 100 109 104 114 104 114 111 101 105
+17 14 17 14 20 19 17 13 14 14 28 26 28 27 28 27 29 28 26 27
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+7 6 6 6 7 7 7 7 7 7 12 12 12 12 12 12 12 12 12 12
+24 24 22 23 24 24 24 25 24 25 45 45 45 45 45 45 45 45 45 45
+26 26 23 24 26 26 26 26 26 26 48 48 48 48 48 48 48 48 48 48
+85 88 75 81 84 84 87 93 90 94 161 165 162 164 161 164 161 162 165 164
+93 95 83 88 93 94 97 100 99 100 179 181 179 180 178 180 178 180 182 181
+84 91 73 82 85 92 128 191 184 142 254 275 243 256 241 256 242 272 288 286
+134 137 124 125 144 173 247 244 278 165 420 416 387 394 396 394 397 441 440 449
+174 169 173 156 202 311 395 259 363 186 607 554 539 532 569 532 571 628 594 621
+292 276 344 256 427 720 790 322 572 287 1116 930 959 913 1043 913 1048 1133 1010 1085
+182 161 282 151 369 535 511 180 285 164 652 492 546 499 610 498 614 647 539 597
+192 158 333 150 466 604 503 164 220 156 617 425 511 448 581 447 585 593 463 526
+241 163 493 158 799 944 663 159 189 155 748 408 595 472 710 471 715 684 451 556
+100 60 177 58 276 290 178 56 62 56 202 102 166 128 198 127 199 177 107 135
+48 23 75 23 101 94 50 20 22 20 62 37 54 41 63 41 63 52 37 40
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+162 503 56 287 56 54 54 279 63 605 76 315 217 294 125 294 113 92 258 172
+181 730 139 453 146 141 146 718 184 1017 370 751 559 691 426 692 419 425 685 562
+263 692 212 549 228 225 239 988 455 1176 709 1122 874 1028 742 1029 737 798 1081 957
+270 446 226 399 251 252 276 804 526 814 773 1016 840 939 770 940 768 846 1015 949
+347 399 302 367 342 349 385 892 717 776 1069 1254 1082 1168 1039 1169 1039 1151 1281 1241
+358 373 318 342 362 379 511 757 729 565 1118 1198 1078 1128 1072 1128 1073 1185 1245 1238
+516 513 461 471 527 552 767 755 841 531 1374 1366 1299 1316 1320 1316 1323 1422 1421 1441
+849 852 700 778 788 902 992 819 951 833 1652 1623 1614 1610 1632 1609 1633 1665 1646 1662
+493 484 517 446 629 979 1062 506 806 498 1545 1339 1370 1319 1464 1318 1469 1566 1428 1512
+382 357 588 334 768 1117 1071 381 585 363 1396 1071 1181 1083 1312 1082 1319 1388 1167 1285
+348 300 667 286 956 1259 1042 311 407 298 1266 851 1038 901 1190 899 1197 1217 934 1072
+313 210 636 206 1030 1219 860 205 248 198 977 537 778 620 928 618 934 895 594 729
+250 125 528 127 864 910 529 109 131 107 580 232 456 322 565 320 569 492 250 349
+186 68 363 70 518 483 217 63 66 64 229 110 184 111 236 111 237 171 109 111
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+18 18 16 17 17 17 17 18 17 18 32 32 32 32 32 32 32 32 32 32
+22 22 20 21 22 22 22 22 22 23 41 41 41 41 41 41 41 41 41 41
+118 208 88 170 98 96 105 268 162 310 228 318 263 297 235 297 234 247 309 282
+207 329 169 293 188 189 213 564 382 571 552 717 597 664 550 664 549 602 716 671
+127 156 108 141 123 127 152 303 249 267 342 402 346 374 332 374 332 369 411 398
+123 135 108 122 125 136 187 268 259 203 364 392 349 367 347 367 347 388 409 407
+408 410 370 377 424 471 719 708 811 445 1302 1293 1209 1231 1236 1231 1240 1362 1360 1385
+272 266 265 245 308 504 655 411 601 289 1022 931 904 893 957 893 960 1060 1001 1048
+262 247 309 229 385 648 714 293 520 258 995 828 854 812 929 812 933 1012 901 969
+210 187 332 176 437 644 617 209 338 191 780 585 650 592 728 591 732 775 642 713
+222 182 397 174 562 736 614 191 260 180 746 507 614 535 702 534 706 718 555 634
+189 132 348 127 550 649 466 129 154 126 536 312 434 354 511 353 514 495 341 410
+174 94 351 93 573 604 357 84 97 84 391 166 310 223 381 222 383 334 177 241
+177 64 347 66 497 464 209 59 62 60 217 103 174 105 224 105 225 162 103 105
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+158 491 57 276 57 55 56 280 65 593 79 311 214 289 125 290 112 94 255 172
+182 719 140 445 147 143 148 718 188 1010 368 745 554 685 423 686 416 423 681 560
+238 590 190 470 205 203 216 846 406 999 614 959 750 879 640 880 636 689 926 822
+351 590 300 531 333 334 359 1122 721 1129 1056 1401 1150 1290 1051 1292 1049 1161 1401 1308
+487 519 431 479 491 494 511 1121 916 979 1383 1594 1396 1495 1348 1496 1347 1478 1627 1581
+438 466 390 427 443 473 696 1102 1059 778 1595 1726 1525 1609 1517 1610 1519 1707 1804 1794
+991 953 845 870 960 855 989 968 1013 850 1758 1757 1750 1752 1751 1751 1752 1762 1762 1764
+352 346 333 319 385 599 765 497 706 369 1201 1103 1075 1063 1131 1063 1135 1241 1179 1229
+433 420 466 388 570 913 998 454 750 434 1427 1222 1253 1202 1346 1201 1351 1449 1312 1396
+352 326 500 305 645 914 881 351 516 333 1158 908 991 917 1092 916 1097 1153 982 1074
+236 198 434 188 622 820 683 206 280 196 817 549 669 581 767 579 772 786 603 693
+185 130 342 125 545 645 464 127 152 124 530 307 428 348 504 347 507 489 336 404
+80 53 124 50 187 196 128 50 54 50 149 87 126 102 146 102 147 133 90 108
+140 48 275 50 392 367 165 42 46 43 171 78 135 82 176 82 176 126 78 81
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+51 106 27 70 31 29 30 73 35 127 42 83 65 78 50 78 48 45 72 58
+68 152 47 104 54 52 54 154 70 207 95 160 126 149 103 149 102 104 148 127
+67 70 58 64 65 65 66 72 69 75 124 128 125 127 124 127 124 125 128 126
+75 77 67 71 74 75 76 80 78 81 141 144 142 143 141 143 141 142 144 143
+93 95 83 87 93 94 96 100 98 100 178 180 178 179 177 179 177 179 181 180
+148 153 134 142 150 156 166 175 174 168 307 313 305 308 304 308 304 312 316 315
+107 107 97 99 109 112 114 113 114 111 209 208 207 207 207 207 208 210 210 210
+91 90 83 84 94 96 97 94 95 93 176 175 174 174 175 174 175 176 175 176
+127 119 145 109 180 276 302 147 229 124 400 336 345 329 374 329 376 407 364 390
+126 118 125 110 145 157 155 126 138 120 262 246 251 247 257 247 258 261 251 256
+107 97 108 91 127 136 130 100 110 96 214 197 205 199 211 199 211 212 201 206
+87 76 91 71 108 114 103 75 83 74 167 150 159 153 165 153 165 164 152 158
+58 49 62 46 75 76 65 46 50 46 104 91 99 94 103 94 103 101 92 96
+20 16 22 15 26 25 20 15 16 15 32 28 31 30 32 29 32 31 28 29
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+97 288 38 162 40 38 39 172 45 350 52 183 126 170 76 170 68 59 151 104
+105 304 75 197 82 80 83 308 110 424 174 321 245 297 194 297 192 195 296 248
+125 283 97 223 107 105 113 403 206 472 284 441 345 404 295 404 293 318 427 379
+119 213 97 187 109 110 124 420 268 421 351 485 386 441 348 441 347 392 485 449
+390 432 341 397 387 394 427 991 804 854 1178 1377 1188 1282 1144 1283 1143 1268 1410 1366
+589 579 525 531 599 595 711 947 924 756 1450 1520 1412 1457 1408 1457 1409 1511 1563 1558
+783 763 680 698 774 728 861 844 891 719 1498 1495 1472 1478 1479 1477 1480 1515 1514 1521
+784 785 656 717 741 864 964 786 923 774 1582 1544 1532 1527 1554 1526 1556 1599 1575 1595
+575 572 565 526 679 1005 1086 572 856 586 1587 1408 1434 1389 1516 1388 1521 1608 1488 1562
+426 404 618 377 806 1166 1127 427 640 412 1462 1138 1246 1149 1377 1147 1384 1457 1236 1356
+337 290 652 277 951 1271 1058 302 409 288 1254 829 1018 879 1174 877 1181 1206 917 1059
+295 201 611 197 1021 1223 868 197 240 190 956 511 752 593 905 591 911 876 571 709
+248 124 550 126 937 995 580 108 131 105 606 221 466 318 588 316 592 511 240 351
+145 55 284 57 407 383 177 50 53 51 180 90 143 92 185 92 185 135 90 91
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+156 514 55 278 55 53 54 300 63 627 75 318 213 294 119 294 102 87 259 172
+178 705 137 430 144 140 145 725 190 1010 357 735 541 673 410 675 403 414 673 551
+257 668 208 528 224 222 237 997 471 1170 691 1102 851 1005 720 1006 715 782 1065 942
+348 580 297 523 331 332 358 1138 736 1135 1050 1398 1142 1285 1043 1286 1040 1158 1400 1307
+413 451 362 415 411 418 448 1059 858 908 1253 1465 1262 1363 1215 1364 1214 1349 1500 1454
+576 569 513 521 586 584 720 988 963 769 1494 1573 1449 1500 1444 1501 1446 1563 1623 1617
+687 675 604 619 689 682 908 891 979 661 1599 1591 1530 1546 1550 1546 1553 1642 1641 1659
+730 729 621 667 704 872 1006 777 956 726 1628 1567 1548 1540 1584 1540 1587 1656 1616 1648
+548 543 547 499 661 1002 1089 551 850 557 1575 1385 1411 1365 1499 1364 1504 1597 1470 1548
+417 394 608 368 796 1159 1122 418 635 403 1445 1120 1227 1130 1360 1129 1366 1441 1219 1339
+360 312 697 298 1020 1367 1141 325 441 310 1346 890 1092 942 1260 940 1268 1295 985 1138
+313 213 653 209 1102 1324 940 209 256 200 1029 545 806 634 972 631 979 942 611 761
+259 128 584 131 1005 1070 624 111 136 108 643 227 491 331 623 329 628 541 248 367
+124 49 240 50 342 323 151 44 47 45 155 80 125 82 159 82 160 118 80 82
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+52 135 24 79 26 25 25 87 30 165 33 91 66 85 43 85 40 36 77 56
+74 250 53 152 59 58 59 259 79 359 118 247 179 225 135 225 133 137 225 183
+95 207 72 161 81 80 86 298 156 347 199 313 243 286 207 286 206 224 303 269
+277 443 233 397 259 261 287 830 553 827 780 1025 844 944 775 945 773 857 1027 961
+404 440 354 404 402 409 440 996 814 856 1185 1379 1193 1285 1150 1286 1150 1274 1412 1370
+361 376 321 345 366 384 547 827 800 592 1184 1273 1133 1190 1128 1191 1130 1263 1329 1323
+379 381 345 350 395 450 718 705 818 421 1273 1262 1172 1195 1202 1196 1206 1338 1336 1363
+401 395 372 363 429 637 802 542 747 417 1247 1154 1124 1113 1178 1113 1182 1287 1227 1276
+302 288 348 266 433 744 827 336 609 300 1134 945 971 925 1057 924 1062 1156 1029 1107
+328 302 477 283 625 910 882 329 507 308 1126 870 953 877 1058 876 1063 1124 948 1043
+294 250 546 238 797 1065 893 262 359 248 1052 700 855 740 985 738 991 1013 774 892
+236 165 410 159 647 768 564 162 201 156 654 393 532 440 622 438 626 607 428 508
+213 109 473 111 818 872 512 96 116 95 525 190 402 273 508 271 512 443 206 302
+95 35 169 37 233 220 108 24 31 25 122 61 100 70 124 69 125 95 61 68
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+108 383 35 197 36 36 35 226 40 473 39 221 140 202 69 202 56 46 177 111
+144 529 106 324 113 110 114 554 157 766 269 553 405 505 308 506 302 312 506 415
+223 530 177 421 193 190 204 789 394 916 560 874 680 798 581 799 577 630 846 753
+275 424 230 379 257 259 285 770 525 765 740 958 796 886 734 887 733 808 961 902
+391 426 343 391 389 396 428 932 768 803 1115 1291 1121 1205 1083 1206 1082 1196 1322 1284
+499 500 445 458 507 513 642 872 851 677 1300 1371 1259 1305 1255 1305 1257 1363 1416 1412
+642 632 566 579 646 647 858 842 925 627 1495 1488 1429 1444 1448 1444 1451 1537 1536 1553
+572 568 505 521 576 750 891 664 841 579 1411 1339 1316 1307 1358 1307 1361 1443 1396 1434
+357 343 397 317 492 830 922 389 687 356 1272 1069 1096 1047 1189 1047 1194 1295 1160 1244
+277 252 450 237 604 926 897 279 478 257 1102 817 910 825 1026 824 1032 1100 905 1011
+256 216 475 206 697 936 786 227 316 215 915 605 741 640 856 638 861 882 670 775
+229 161 443 156 741 891 642 158 193 153 704 387 557 444 666 443 670 648 431 529
+92 54 187 53 325 347 209 51 56 51 208 82 161 112 202 111 203 177 87 123
+29 21 34 19 44 42 29 22 21 22 42 34 39 36 42 36 42 39 34 35
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+14 14 12 13 14 13 14 14 14 14 25 25 25 25 25 25 25 25 25 25
+26 26 23 24 25 25 25 26 26 26 47 47 47 47 47 47 47 47 47 47
+52 53 46 49 51 51 52 54 53 55 95 97 96 97 95 97 95 96 97 96
+107 114 93 105 103 104 109 125 118 126 206 215 208 212 206 212 206 209 215 213
+128 135 114 125 127 130 138 152 147 150 258 266 258 262 256 262 256 261 267 266
+144 148 130 137 145 151 161 169 168 162 297 302 294 297 294 297 294 301 305 304
+66 68 61 62 72 93 153 150 177 85 246 243 221 226 228 227 229 262 262 269
+152 149 143 139 163 175 184 169 179 158 323 316 314 313 318 313 318 326 322 326
+62 61 56 57 63 64 64 62 63 62 116 116 116 116 116 115 116 116 116 116
+161 144 269 135 368 573 555 162 292 147 655 474 532 478 606 478 610 654 530 597
+225 190 436 181 650 882 739 200 285 189 842 544 674 577 784 575 790 810 607 707
+208 146 433 142 753 913 652 145 174 140 689 356 534 416 648 414 653 630 403 506
+36 32 36 30 42 42 39 31 33 31 65 61 63 62 65 62 65 64 61 62
+99 42 187 42 267 253 123 38 40 38 125 69 100 71 127 71 128 96 69 70
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+118 420 41 214 42 42 42 257 48 522 52 249 159 227 82 228 67 58 201 129
+167 666 129 398 136 133 138 713 190 981 332 701 509 638 382 639 375 389 642 524
+92 168 71 134 80 79 85 234 138 267 174 253 203 234 178 234 178 191 247 223
+73 75 65 69 72 73 74 78 76 79 137 140 138 139 137 139 137 138 140 139
+90 92 81 85 90 91 94 97 96 97 173 175 173 174 172 174 172 174 176 175
+117 119 106 111 119 122 127 130 130 128 233 235 232 233 231 233 232 235 237 237
+138 139 127 129 143 150 157 155 159 149 285 284 280 281 281 281 282 288 287 289
+129 126 128 116 151 228 290 196 270 140 414 376 364 360 386 360 387 430 406 425
+182 170 210 158 261 419 465 214 353 179 622 520 533 509 580 508 583 634 566 608
+223 199 341 187 454 682 664 226 375 202 817 614 678 618 762 618 766 816 677 752
+218 180 381 171 554 740 627 190 270 178 734 493 597 519 687 518 691 708 544 625
+161 117 279 112 454 543 401 116 141 113 449 265 362 297 426 296 429 416 291 347
+108 62 230 61 408 437 263 58 65 58 258 99 197 134 249 133 251 218 104 149
+81 32 155 33 221 210 101 28 30 29 101 53 80 56 103 56 103 76 53 55
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+101 344 38 176 39 38 39 216 45 427 50 209 136 191 74 192 62 55 171 113
+157 613 120 366 128 125 130 664 182 909 308 648 470 590 353 591 347 361 594 486
+235 597 189 470 205 203 218 936 456 1081 623 1003 766 910 646 911 642 710 972 860
+341 560 291 505 324 326 354 1160 758 1139 1034 1386 1121 1267 1022 1268 1020 1147 1392 1299
+472 492 416 452 474 479 501 1158 954 984 1365 1584 1369 1474 1322 1476 1322 1468 1624 1578
+718 689 640 632 731 708 824 1055 1037 853 1624 1687 1584 1626 1582 1626 1583 1681 1728 1724
+952 918 815 840 924 835 1000 978 1036 825 1749 1748 1728 1733 1734 1732 1735 1764 1763 1769
+920 924 749 843 838 952 1057 873 1017 889 1740 1713 1704 1700 1721 1699 1722 1754 1736 1751
+670 676 623 619 741 1065 1150 644 936 688 1677 1516 1537 1497 1612 1496 1616 1699 1591 1658
+457 437 645 407 851 1256 1227 460 703 447 1547 1204 1314 1212 1457 1210 1464 1549 1313 1442
+349 301 673 287 1010 1376 1160 316 446 299 1325 860 1061 910 1234 908 1242 1276 961 1117
+263 184 553 180 978 1192 855 182 223 174 898 459 692 537 843 535 850 821 522 658
+234 118 542 121 975 1048 621 103 128 100 609 211 455 298 587 296 591 510 223 337
+95 54 177 52 256 245 125 63 58 64 124 87 103 82 126 82 126 99 87 83
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+126 456 46 226 46 45 45 287 53 569 60 273 174 249 90 250 74 65 222 144
+164 656 127 388 135 131 136 719 195 982 325 694 500 630 373 632 367 384 637 519
+246 633 199 498 216 213 229 1009 490 1162 662 1072 815 971 686 972 682 757 1040 919
+336 551 287 498 319 322 350 1156 757 1132 1022 1373 1108 1254 1010 1255 1008 1136 1380 1288
+459 480 405 441 461 466 492 1155 951 976 1346 1567 1350 1456 1302 1458 1302 1452 1609 1562
+530 529 472 485 539 542 713 998 977 743 1455 1541 1400 1458 1397 1458 1399 1535 1599 1595
+676 665 595 610 678 679 921 901 997 653 1589 1581 1514 1531 1536 1531 1539 1638 1636 1655
+665 662 576 606 654 856 1023 758 968 667 1609 1529 1501 1492 1549 1492 1552 1645 1593 1636
+513 506 519 466 632 1005 1110 525 861 520 1549 1343 1368 1318 1464 1317 1469 1576 1438 1524
+451 430 639 401 846 1256 1229 454 702 440 1538 1193 1303 1200 1447 1199 1454 1541 1303 1433
+311 266 604 254 913 1250 1055 280 402 265 1192 767 950 812 1108 810 1116 1148 859 1003
+276 193 588 189 1053 1288 924 190 235 182 961 484 736 568 901 566 908 879 553 702
+217 110 514 113 941 1013 600 97 120 94 577 194 427 275 555 272 559 482 204 313
+88 45 167 44 239 229 115 47 46 47 113 73 92 71 115 71 115 89 73 72
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+103 366 39 181 41 39 40 235 47 458 53 221 142 202 75 202 63 56 181 119
+142 510 105 307 112 109 114 563 170 765 262 545 395 495 298 496 294 307 501 410
+159 349 125 276 137 136 147 534 283 609 371 574 446 523 382 523 380 418 558 498
+124 137 106 125 118 119 128 157 144 158 245 261 249 255 244 255 244 250 261 257
+155 169 136 155 151 157 173 206 195 198 328 345 328 336 324 336 324 336 349 345
+102 103 92 96 104 106 109 110 110 109 199 200 198 199 198 199 198 200 201 201
+128 128 117 119 132 137 143 141 144 136 259 259 255 256 256 256 257 261 261 262
+138 134 139 123 166 246 311 216 291 152 444 404 390 386 414 386 415 461 436 457
+164 154 190 142 237 393 440 194 332 162 573 475 487 464 532 463 534 585 520 561
+230 204 329 191 435 640 627 234 374 208 776 593 650 597 725 596 729 776 651 719
+248 210 455 200 682 929 789 222 318 209 892 583 715 615 831 614 836 861 650 755
+242 172 493 167 876 1071 775 170 210 163 809 419 624 487 759 485 765 742 475 597
+152 82 353 83 652 703 420 75 88 74 399 139 296 192 383 190 386 334 145 218
+72 30 139 31 198 190 93 27 29 28 90 51 71 52 92 52 92 69 51 52
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+36 106 17 56 19 18 18 73 22 133 24 69 47 64 29 64 26 25 58 41
+109 373 80 224 87 85 89 416 132 561 191 396 286 359 216 360 213 224 364 299
+88 190 68 147 77 76 82 293 157 333 184 294 224 266 190 266 189 209 285 253
+178 303 148 270 165 167 188 655 428 636 542 745 590 675 534 676 533 608 750 697
+394 424 345 387 392 400 436 1075 881 895 1213 1427 1214 1318 1169 1319 1168 1316 1469 1424
+655 637 584 584 666 653 803 1058 1041 822 1582 1655 1533 1582 1531 1583 1533 1651 1706 1702
+676 665 595 610 678 679 920 898 995 653 1575 1566 1500 1517 1523 1517 1526 1623 1621 1641
+525 521 471 478 539 768 959 669 901 537 1468 1369 1336 1325 1394 1325 1398 1512 1449 1501
+336 322 368 297 457 773 867 372 656 335 1163 977 998 954 1085 954 1090 1187 1063 1141
+323 297 478 278 643 978 959 327 541 304 1166 882 971 887 1089 886 1095 1169 973 1080
+268 228 501 217 758 1039 882 241 348 227 989 640 789 676 919 674 926 954 716 835
+257 182 533 177 962 1182 855 180 224 172 882 448 676 523 827 521 833 809 512 647
+186 98 442 99 826 893 533 87 106 84 502 171 369 235 482 233 485 419 177 270
+57 23 96 24 131 125 66 15 20 15 75 41 62 47 76 47 76 61 41 46
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+98 378 36 178 37 37 37 248 43 479 45 220 135 199 65 199 52 47 178 113
+128 547 99 312 105 103 107 624 167 847 252 574 402 516 291 517 287 304 525 423
+236 580 191 456 207 205 221 945 475 1075 618 994 755 899 638 899 634 707 966 856
+295 485 251 437 279 282 310 1058 697 1024 907 1228 981 1116 893 1118 891 1013 1237 1153
+378 410 331 373 376 384 423 1071 876 884 1190 1407 1191 1295 1145 1297 1145 1296 1450 1405
+516 516 460 473 525 530 714 998 981 731 1433 1519 1374 1433 1372 1433 1374 1515 1580 1576
+362 365 331 335 379 439 691 674 785 406 1168 1156 1070 1092 1100 1092 1103 1231 1228 1254
+310 304 296 280 345 549 720 469 670 329 1062 968 936 926 991 926 995 1104 1044 1093
+252 239 285 221 356 603 680 291 513 250 895 745 762 726 831 726 835 915 814 877
+283 259 424 242 573 880 865 288 486 264 1038 779 859 783 967 782 973 1041 862 960
+284 241 515 230 778 1064 908 255 367 240 1021 667 817 703 950 701 956 986 745 865
+240 171 507 167 936 1154 835 170 210 162 847 419 643 493 791 491 798 774 483 616
+182 96 436 98 823 892 533 85 105 83 497 168 362 229 476 227 480 414 173 265
+28 0 80 2 120 115 45 0 0 0 25 0 11 0 26 0 26 10 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+97 371 37 174 38 37 38 248 45 471 49 219 136 198 67 199 55 51 178 115
+156 592 116 347 123 120 126 680 203 915 295 638 453 576 336 577 332 351 586 477
+241 607 195 477 212 210 227 1012 504 1149 644 1050 791 947 665 947 661 741 1021 902
+288 474 245 428 273 275 304 1053 694 1015 892 1212 965 1100 878 1101 875 998 1222 1138
+375 407 328 370 373 381 421 1073 879 883 1185 1402 1184 1289 1139 1291 1138 1291 1446 1402
+700 675 624 619 713 691 827 1056 1043 837 1594 1658 1550 1594 1549 1594 1550 1656 1703 1701
+1001 962 852 880 965 855 995 971 1019 848 1732 1733 1725 1727 1727 1726 1728 1738 1737 1739
+1011 1019 806 928 892 924 971 872 948 959 1640 1654 1658 1659 1651 1658 1651 1636 1645 1637
+500 492 498 453 605 946 1047 513 826 507 1446 1259 1280 1235 1367 1235 1372 1472 1347 1425
+351 326 479 304 635 937 923 357 552 334 1141 887 966 891 1072 890 1077 1145 970 1066
+282 240 510 228 773 1060 907 254 367 238 1014 660 809 696 942 694 948 979 739 859
+243 174 486 169 882 1085 793 173 216 164 815 419 625 487 763 485 769 749 478 602
+165 89 387 90 733 795 479 80 97 78 446 157 326 208 427 206 430 373 162 240
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+51 176 22 85 23 23 23 122 28 223 29 107 68 97 37 97 32 30 88 59
+74 233 54 139 60 59 61 269 94 357 117 244 174 220 131 220 130 137 225 184
+124 290 99 226 109 108 117 478 247 540 297 482 363 434 306 434 304 341 469 415
+262 406 221 365 247 249 278 843 575 813 743 986 798 900 732 902 730 824 994 931
+310 346 269 314 306 315 360 850 704 703 942 1109 940 1022 905 1023 905 1024 1144 1110
+388 400 346 366 395 412 578 813 801 585 1136 1211 1083 1134 1082 1135 1084 1208 1265 1262
+380 382 346 351 396 466 788 766 907 423 1326 1310 1203 1230 1240 1230 1244 1404 1399 1432
+228 223 223 205 262 446 600 376 557 246 859 774 744 736 794 736 798 897 843 888
+191 180 225 166 288 532 609 227 448 189 768 623 638 604 706 604 710 788 691 752
+160 144 242 134 332 517 509 164 287 147 588 432 480 434 544 434 548 590 483 541
+124 103 179 96 257 338 296 110 152 102 339 239 281 249 318 248 320 329 261 295
+146 114 205 108 316 374 293 114 136 111 347 237 293 255 332 254 334 329 253 287
+158 88 333 88 612 664 409 79 97 76 396 161 298 202 380 200 383 337 166 229
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+38 133 17 63 18 18 18 93 21 169 23 81 52 73 28 73 25 23 67 45
+92 333 69 192 75 74 77 392 125 523 159 352 247 316 181 316 179 191 323 262
+141 314 112 246 123 123 133 512 273 576 332 527 401 476 341 476 339 379 514 457
+68 103 56 89 64 65 74 206 143 199 162 219 174 198 159 198 158 181 221 206
+128 151 110 135 126 131 161 379 313 310 386 463 384 422 369 423 369 424 479 464
+241 259 215 236 246 268 414 610 601 417 812 876 766 810 765 810 767 875 923 921
+120 124 112 113 131 173 295 286 343 155 462 456 411 422 427 422 428 495 493 507
+131 129 130 118 154 236 306 206 286 143 421 381 367 363 390 363 392 438 413 434
+101 95 112 87 143 237 268 121 204 100 318 261 266 253 293 253 295 326 287 312
+129 114 172 106 229 331 328 134 207 116 388 298 325 299 362 298 364 389 327 361
+58 50 94 46 148 203 175 53 75 51 175 110 137 117 161 116 163 169 125 147
+97 75 141 71 228 273 211 76 91 74 232 148 191 162 220 161 222 218 160 186
+61 43 95 41 159 171 115 41 46 42 123 72 101 80 119 80 120 110 73 87
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+26 90 12 43 13 12 12 64 15 115 16 55 35 50 19 50 17 17 46 31
+109 432 84 244 90 88 92 518 157 689 203 463 321 414 233 415 230 247 425 343
+212 536 172 418 187 186 201 931 468 1046 568 940 699 843 585 843 581 658 915 807
+319 511 273 462 304 307 338 1175 783 1120 983 1335 1060 1209 965 1211 962 1103 1348 1258
+215 251 185 226 210 220 267 649 536 528 685 818 682 747 655 748 655 752 847 820
+379 391 338 358 385 404 602 873 861 601 1191 1276 1128 1187 1128 1188 1130 1275 1340 1337
+655 645 578 592 659 671 935 909 1019 638 1569 1559 1484 1503 1511 1503 1514 1624 1621 1644
+792 791 666 724 750 927 1085 839 1037 779 1701 1637 1614 1607 1652 1606 1655 1730 1690 1724
+583 580 563 533 681 1079 1200 580 951 594 1643 1437 1458 1409 1555 1408 1561 1674 1535 1623
+424 401 607 374 823 1275 1262 431 714 410 1500 1140 1250 1143 1403 1142 1411 1511 1260 1399
+323 277 621 264 976 1368 1171 294 439 275 1262 792 988 837 1166 835 1174 1219 899 1060
+256 184 539 179 1033 1289 941 183 232 172 928 447 696 528 863 526 871 850 521 672
+184 98 430 100 836 912 556 86 110 83 506 180 365 229 482 227 486 423 186 269
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+82 346 32 152 34 34 34 245 40 448 42 199 118 178 53 178 45 43 161 101
+131 528 102 297 109 107 111 643 197 852 252 574 398 514 289 515 284 307 528 426
+167 396 134 310 147 146 159 682 354 762 422 687 514 617 433 617 430 486 670 593
+250 405 211 365 236 238 268 945 630 897 773 1057 833 954 757 956 755 870 1069 996
+330 364 288 330 327 337 389 943 783 767 1023 1208 1017 1108 979 1110 979 1116 1249 1212
+260 281 232 257 265 293 517 817 806 513 1051 1145 979 1045 979 1046 981 1146 1218 1215
+160 164 149 150 173 227 396 383 461 202 628 618 558 572 579 573 581 672 669 688
+194 189 198 175 234 347 443 308 416 215 635 579 558 553 591 553 594 660 624 654
+240 224 276 208 343 556 628 294 485 237 825 689 702 671 765 671 769 843 753 810
+170 152 236 142 319 481 477 176 288 155 560 423 464 424 521 424 524 562 468 520
+121 102 197 96 303 416 360 109 157 103 385 251 306 264 357 263 359 372 281 327
+115 88 187 83 324 395 300 89 108 86 315 184 251 205 297 204 299 293 204 245
+105 62 236 62 465 508 313 58 68 57 280 105 203 129 267 128 269 235 108 152
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+57 253 22 107 23 24 23 181 27 330 25 140 80 124 32 125 27 26 113 68
+100 406 77 225 83 82 85 502 157 664 184 436 297 388 213 389 209 228 400 321
+178 433 144 338 158 157 170 763 392 851 462 761 565 681 473 681 470 535 742 655
+273 444 233 401 259 262 293 1068 710 1009 863 1186 930 1068 844 1070 842 974 1200 1117
+80 93 68 82 79 82 102 225 188 184 215 258 213 235 205 235 205 237 268 259
+144 160 128 145 147 168 245 335 332 243 434 466 410 432 410 432 411 467 491 491
+184 188 171 172 198 250 392 380 447 228 620 611 559 572 578 572 580 658 656 672
+306 301 293 277 342 557 742 478 692 326 1059 960 924 914 982 914 986 1103 1041 1093
+254 241 288 223 365 668 768 296 575 254 967 791 808 767 890 767 895 992 875 949
+217 195 324 183 445 700 695 226 396 199 802 593 655 594 743 594 748 807 662 742
+209 175 378 166 591 827 714 188 284 174 766 486 602 512 707 511 713 741 550 646
+170 127 319 122 600 746 555 127 158 122 552 284 420 328 514 326 519 508 325 409
+129 74 290 74 570 624 386 67 82 65 348 132 252 161 331 159 334 292 137 189
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+79 369 31 153 32 33 32 268 38 482 38 206 117 182 46 183 40 39 165 100
+145 576 113 321 121 119 124 721 233 947 279 637 439 569 319 570 314 342 588 475
+228 570 185 444 201 200 217 1032 525 1147 614 1022 754 913 629 912 625 715 998 880
+315 496 269 449 300 304 336 1190 799 1121 973 1326 1046 1197 951 1199 949 1096 1343 1253
+431 455 379 414 432 440 494 1199 1000 968 1306 1534 1296 1410 1250 1411 1250 1423 1587 1542
+620 608 553 558 631 622 820 1095 1088 804 1567 1646 1503 1560 1504 1560 1506 1648 1709 1707
+809 790 703 724 799 768 1011 981 1077 741 1695 1687 1631 1645 1652 1645 1654 1737 1734 1751
+775 774 655 708 738 929 1101 839 1051 763 1701 1629 1602 1595 1645 1594 1649 1733 1688 1726
+561 557 546 511 664 1087 1219 564 962 571 1632 1414 1434 1383 1538 1382 1545 1667 1520 1613
+412 388 592 362 812 1282 1275 420 719 397 1481 1114 1224 1116 1381 1115 1389 1496 1239 1382
+314 269 602 257 966 1368 1179 287 435 267 1242 768 963 812 1142 810 1151 1201 878 1041
+244 177 513 173 1022 1286 946 178 227 166 908 425 672 505 841 502 848 831 500 653
+173 93 423 95 867 951 583 82 105 78 503 169 353 209 477 207 481 417 176 254
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+71 345 28 141 30 30 30 254 35 453 34 191 106 168 41 167 36 36 154 92
+137 518 106 292 114 112 117 657 220 857 257 580 401 518 293 519 287 315 536 435
+217 525 176 410 192 191 208 953 494 1054 572 944 699 844 585 843 581 665 923 816
+301 465 257 421 287 290 323 1108 752 1041 910 1234 976 1114 889 1116 887 1024 1251 1169
+418 444 368 404 419 427 488 1192 995 957 1284 1513 1273 1387 1227 1389 1227 1403 1567 1522
+578 572 516 524 588 586 802 1090 1084 780 1532 1617 1463 1524 1464 1524 1466 1620 1685 1684
+750 735 656 674 746 737 1002 970 1079 704 1665 1655 1587 1604 1612 1604 1614 1715 1712 1733
+725 723 621 662 701 914 1103 819 1049 719 1679 1595 1564 1555 1614 1555 1617 1717 1664 1708
+543 537 532 494 649 1084 1222 551 960 552 1618 1393 1413 1361 1520 1360 1527 1654 1502 1599
+403 379 582 354 802 1276 1271 413 715 388 1464 1096 1206 1097 1363 1096 1371 1479 1222 1365
+309 264 593 253 958 1363 1177 283 433 263 1229 755 950 799 1129 797 1138 1188 866 1029
+237 173 499 169 1004 1268 934 174 222 162 888 410 654 490 821 487 829 813 486 638
+166 89 405 92 842 927 570 79 102 75 486 164 336 198 457 196 464 402 170 243
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+24 103 11 44 12 11 12 79 14 136 14 60 35 53 16 53 15 15 49 31
+68 175 50 108 56 55 57 216 93 276 102 196 143 178 112 178 110 119 183 154
+99 194 79 152 88 88 95 325 186 356 210 324 248 292 213 292 212 238 318 284
+116 166 94 145 106 109 129 312 230 296 273 353 288 323 268 323 267 301 357 337
+167 197 144 177 163 172 220 468 396 379 489 578 484 529 467 529 467 536 600 582
+256 277 229 253 262 292 419 566 564 408 758 808 717 753 718 753 719 811 849 849
+285 289 263 265 303 369 586 564 665 334 929 916 840 858 868 859 871 985 980 1005
+205 201 203 185 240 379 498 331 467 224 692 626 602 595 640 595 643 722 680 715
+250 235 284 218 358 641 738 301 560 249 925 758 773 735 851 735 856 949 838 909
+185 166 267 155 369 580 579 193 337 170 657 485 535 486 607 485 611 661 543 609
+120 101 171 94 253 338 300 109 152 101 333 232 272 241 311 240 313 324 255 289
+99 79 142 74 235 285 223 80 96 78 243 155 199 169 230 168 231 229 169 196
+53 36 102 34 205 225 145 34 39 34 126 55 92 62 119 61 121 107 56 72
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+5 5 4 4 5 5 5 5 5 5 9 9 9 9 9 9 9 9 9 9
+35 37 31 34 34 34 35 37 36 39 64 66 65 65 64 65 64 64 65 65
+39 40 35 37 39 39 40 40 40 41 72 73 72 73 72 73 72 72 73 73
+48 49 43 45 49 49 49 50 49 50 90 91 90 90 90 90 90 90 91 91
+60 61 54 56 61 61 62 63 62 63 114 114 114 114 113 114 113 114 114 114
+66 67 60 62 67 68 69 69 69 69 126 126 125 126 125 126 125 126 126 126
+65 64 59 60 66 66 67 66 66 66 122 122 121 122 122 122 122 122 122 122
+100 98 96 89 116 189 253 164 236 108 318 284 271 268 292 268 293 334 312 330
+98 93 107 85 139 237 272 120 208 98 310 252 256 243 284 243 286 319 280 305
+220 200 333 187 470 766 766 230 427 205 847 613 681 613 780 612 785 855 693 783
+216 184 396 175 643 917 797 197 304 184 820 505 632 533 752 531 758 794 579 688
+189 141 394 137 814 1033 765 143 180 135 710 319 518 385 654 383 661 650 384 507
+136 76 323 77 689 762 472 68 86 65 396 138 269 160 368 159 377 328 143 198
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+54 282 24 110 26 26 26 219 31 377 29 156 82 137 31 131 31 30 126 75
+136 539 107 297 115 112 118 720 241 930 252 611 412 541 294 542 282 322 565 455
+202 486 165 380 180 180 196 932 486 1018 537 898 656 798 547 798 543 630 880 777
+273 417 232 377 259 263 297 1036 709 961 827 1129 884 1014 806 1016 804 935 1147 1071
+387 416 340 378 387 397 472 1138 956 900 1199 1416 1184 1293 1142 1295 1142 1315 1471 1430
+520 520 464 477 529 535 766 1050 1050 728 1438 1523 1364 1426 1367 1427 1369 1530 1595 1595
+488 486 438 446 501 563 882 847 991 513 1414 1396 1295 1319 1332 1320 1336 1488 1482 1514
+321 316 305 291 356 610 833 521 778 341 1151 1036 993 982 1061 982 1066 1203 1131 1192
+302 289 325 267 407 726 834 347 640 303 1045 866 880 840 965 839 970 1073 953 1029
+313 289 454 270 633 1019 1021 325 580 296 1149 849 935 848 1064 847 1070 1161 952 1069
+163 137 249 129 379 521 460 148 215 136 501 338 403 352 465 351 468 487 376 432
+114 91 159 86 262 318 252 92 111 90 279 183 230 198 264 197 266 264 198 228
+62 46 93 44 161 175 121 45 50 45 131 82 107 87 126 87 127 118 84 95
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+34 158 17 64 18 18 18 126 22 212 22 92 50 81 23 77 23 23 75 47
+91 277 68 162 75 74 77 364 143 464 148 317 222 283 167 283 161 181 296 243
+118 240 94 188 105 105 114 428 242 464 267 421 317 378 271 378 270 307 414 370
+149 224 125 198 140 143 166 516 362 479 413 558 440 502 402 503 402 465 567 530
+163 182 142 166 159 168 194 247 231 227 363 389 362 374 357 374 357 377 395 390
+145 151 132 140 148 157 172 184 184 171 311 317 306 310 306 310 306 317 322 322
+122 124 113 114 133 180 315 300 365 156 462 453 405 416 423 417 424 497 494 510
+168 164 166 151 196 327 441 283 412 183 590 529 505 500 542 500 544 618 579 612
+138 128 155 119 196 317 361 175 283 137 442 366 372 355 408 355 410 454 403 435
+135 122 189 113 266 421 422 142 248 125 460 337 371 336 424 336 426 464 379 426
+199 167 354 159 574 820 717 181 282 167 737 457 569 481 676 480 681 714 524 620
+169 128 327 123 663 842 631 129 164 122 591 278 437 331 546 329 551 544 331 430
+86 53 179 53 374 415 264 49 60 48 228 94 159 104 211 103 217 192 98 124
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+42 232 20 88 22 23 22 187 27 315 25 129 65 112 26 105 26 26 104 62
+120 471 94 258 101 100 104 652 222 835 215 540 359 475 254 476 240 282 500 401
+197 479 161 374 176 175 192 953 499 1034 528 898 648 794 537 794 533 625 882 776
+304 443 259 401 291 295 331 1079 754 996 881 1184 936 1068 858 1069 856 992 1204 1129
+415 438 366 399 417 426 493 1015 874 822 1127 1298 1113 1200 1081 1201 1081 1220 1343 1311
+610 598 544 549 621 611 783 990 993 745 1420 1479 1365 1410 1368 1410 1370 1486 1532 1532
+552 547 492 502 562 618 959 918 1071 564 1526 1507 1403 1428 1442 1429 1446 1604 1596 1630
+536 531 480 488 550 837 1093 730 1029 548 1553 1429 1381 1370 1455 1370 1461 1610 1532 1598
+442 431 450 397 557 1032 1189 475 915 447 1488 1240 1259 1203 1377 1202 1384 1528 1362 1469
+393 369 551 344 766 1230 1238 406 710 378 1393 1039 1140 1037 1292 1036 1300 1408 1162 1300
+260 221 484 211 803 1162 1015 239 378 221 1022 617 779 651 934 650 941 990 715 855
+205 151 361 145 686 864 658 152 200 142 650 338 494 389 604 388 609 603 391 489
+120 73 227 72 449 498 323 67 84 64 300 142 219 155 280 155 288 259 147 180
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+20 48 13 26 14 14 14 42 18 62 20 37 27 34 21 34 21 21 33 26
+90 173 67 120 74 73 77 213 116 260 143 222 177 206 151 206 149 158 212 188
+129 213 102 173 114 114 126 335 216 357 264 367 296 337 266 337 265 290 362 332
+53 53 47 49 53 53 54 55 55 56 99 100 99 99 99 99 99 99 100 100
+29 28 26 26 29 29 29 28 28 29 53 53 53 53 53 53 53 53 53 53
+126 130 114 120 129 134 144 150 150 143 260 264 257 259 257 259 257 264 267 267
+68 68 62 63 69 70 71 70 70 70 129 129 128 128 128 128 128 129 129 129
+61 60 55 56 62 63 63 62 62 62 114 114 114 114 114 114 114 114 114 114
+68 67 63 62 71 73 73 70 71 69 130 129 129 129 130 129 130 131 130 130
+28 28 25 26 28 28 28 28 28 28 52 52 52 52 52 52 52 52 52 52
+42 41 39 38 44 45 45 42 43 42 79 78 78 78 79 78 79 79 78 79
+22 22 20 20 23 23 23 22 22 22 41 41 41 41 41 41 41 41 41 41
+27 24 28 22 34 35 31 23 25 23 50 45 47 46 49 46 49 48 45 46
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+4 4 3 3 4 4 4 4 4 4 7 7 7 7 7 7 7 7 7 7
+40 93 29 58 34 33 35 122 58 152 55 106 76 95 60 95 58 65 99 84
+71 77 61 70 68 68 72 83 78 85 133 140 135 138 133 138 133 135 140 138
+96 102 83 94 93 94 100 115 109 114 186 194 187 191 185 191 185 189 195 193
+44 44 39 40 44 44 45 44 44 45 81 82 81 81 81 81 81 81 82 82
+116 124 103 112 119 134 208 287 290 194 343 368 318 337 319 338 320 372 392 393
+203 206 188 189 218 291 521 494 604 249 780 764 685 703 715 704 718 839 832 859
+120 117 117 107 140 226 302 198 283 131 384 343 328 324 352 324 353 403 377 399
+154 145 171 134 218 396 460 191 351 154 542 439 447 424 495 424 498 558 490 534
+261 240 382 224 543 895 904 275 512 246 982 712 787 709 902 708 909 993 806 911
+245 208 455 198 770 1125 986 226 363 208 973 578 735 611 886 610 893 943 675 811
+181 137 369 132 793 1021 766 139 179 130 685 295 491 361 627 359 634 628 364 487
+26 18 60 17 151 169 106 17 19 18 75 23 44 25 66 24 70 60 23 32
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+25 143 14 52 15 16 15 121 18 197 17 80 38 69 18 62 18 17 65 39
+83 251 63 145 69 68 72 353 141 443 130 294 201 260 149 261 141 165 275 225
+142 250 112 201 125 125 139 428 264 455 304 445 348 404 307 403 305 341 439 399
+124 178 103 156 117 119 140 408 293 374 321 430 339 386 311 387 311 361 438 411
+137 164 117 146 133 143 192 363 316 292 374 438 368 400 356 400 357 409 456 444
+200 215 179 196 205 230 383 544 550 348 676 727 626 664 629 665 630 735 775 776
+216 220 200 201 232 313 582 549 678 263 867 848 757 779 792 779 795 935 927 958
+219 215 213 197 252 484 692 408 643 238 896 791 750 740 813 740 817 945 879 935
+383 371 393 342 486 902 1044 425 807 386 1283 1065 1080 1031 1184 1031 1190 1319 1173 1268
+299 276 446 259 642 1079 1093 314 607 284 1170 839 930 835 1073 834 1080 1185 955 1084
+228 194 411 184 692 1008 887 211 336 194 877 526 664 555 798 554 805 850 612 734
+146 112 285 108 615 793 598 114 145 108 531 232 382 282 486 281 492 488 285 379
+75 47 153 46 343 385 247 43 53 42 203 84 135 92 183 91 193 171 87 108
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+21 122 12 43 13 12 13 105 16 169 15 69 33 60 16 53 16 16 56 34
+77 293 59 158 65 65 67 436 155 549 123 339 217 294 149 295 136 170 314 250
+86 185 69 142 78 78 85 377 208 401 193 331 236 291 195 290 194 230 326 287
+258 380 219 343 246 250 286 1037 723 937 787 1084 836 966 761 968 759 899 1108 1035
+350 380 307 345 349 361 461 1070 913 825 1087 1286 1064 1167 1029 1169 1029 1199 1343 1307
+217 234 194 213 222 251 388 526 532 356 668 714 623 658 626 658 628 722 757 758
+60 62 56 56 66 92 165 156 192 78 225 219 194 200 203 200 204 244 242 250
+97 95 93 86 113 188 256 164 239 105 308 272 259 256 280 256 281 324 302 321
+127 120 140 111 180 348 408 158 309 127 461 367 374 353 418 353 420 476 414 454
+137 124 203 116 298 503 511 146 286 128 522 365 407 363 474 363 478 527 419 480
+161 137 276 130 462 670 593 149 236 138 587 358 447 377 535 376 539 569 414 494
+135 104 222 99 428 542 419 106 135 101 406 217 310 247 377 246 381 379 250 310
+68 43 154 42 378 426 270 40 48 39 205 74 126 80 180 80 193 169 77 97
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+8 31 5 13 6 6 6 27 8 42 8 20 12 18 8 17 8 8 17 12
+52 109 38 70 44 43 45 147 74 179 70 127 93 115 75 115 73 81 121 103
+107 175 84 141 94 94 106 288 187 304 212 301 239 274 213 274 213 236 298 273
+187 271 157 241 176 180 213 674 482 610 530 715 560 641 513 642 513 600 731 686
+298 330 260 298 296 309 403 901 772 694 911 1077 891 977 862 979 862 1005 1125 1096
+506 508 452 465 516 524 786 1061 1075 707 1405 1487 1321 1385 1328 1386 1330 1502 1566 1569
+616 609 546 558 622 663 975 929 1071 610 1527 1508 1418 1439 1453 1439 1456 1595 1587 1617
+584 580 517 532 589 853 1095 754 1036 591 1543 1430 1386 1375 1453 1375 1458 1595 1524 1585
+461 451 455 415 557 1037 1200 493 935 467 1476 1234 1250 1195 1365 1195 1371 1516 1355 1460
+353 328 504 306 721 1202 1222 370 693 337 1314 953 1050 948 1206 946 1214 1330 1080 1221
+281 237 507 226 866 1272 1124 261 422 236 1099 652 827 688 998 687 1007 1066 764 919
+197 145 396 142 872 1133 857 149 198 136 748 312 530 385 682 383 691 688 392 530
+112 63 261 64 645 730 462 56 76 51 349 121 210 134 303 133 327 286 127 161
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+17 89 10 32 11 11 11 80 14 124 14 53 26 46 15 40 15 15 44 28
+83 266 63 150 70 69 72 399 157 495 128 317 209 277 150 278 138 171 296 240
+181 404 148 318 162 162 180 869 477 917 467 792 566 696 470 696 467 556 782 692
+224 327 190 295 213 217 252 919 644 823 681 943 722 837 657 839 655 782 965 902
+276 308 241 278 274 286 391 945 804 711 914 1096 891 986 859 987 859 1019 1151 1119
+308 322 276 294 315 341 548 756 768 488 957 1022 889 940 895 940 897 1035 1086 1088
+146 147 135 136 154 168 184 180 188 163 319 317 309 311 312 311 312 325 324 327
+143 140 144 128 174 273 361 243 339 160 466 418 400 395 428 395 430 488 458 484
+141 131 156 121 198 330 380 181 299 141 451 371 376 359 414 359 416 464 411 445
+119 110 122 103 144 166 167 124 143 113 259 237 243 237 252 237 253 259 245 253
+96 86 100 80 121 137 131 92 106 86 199 178 186 179 194 179 194 197 183 190
+37 35 36 32 41 43 41 35 37 35 69 66 68 66 69 66 69 69 67 68
+38 27 58 26 114 127 87 26 30 26 82 47 62 50 76 50 79 73 48 55
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+6 21 4 9 5 5 5 20 6 29 6 15 9 13 7 12 7 7 13 9
+62 177 47 102 53 52 55 265 111 326 88 209 139 183 102 183 95 115 196 160
+47 48 41 44 46 46 47 50 49 51 86 88 87 88 86 88 86 87 88 88
+91 125 76 107 87 89 105 276 205 251 209 278 220 250 203 250 202 236 285 268
+111 128 95 114 110 116 158 311 271 243 295 349 288 316 279 317 279 327 366 356
+283 297 253 271 289 317 558 798 814 483 976 1049 897 955 904 956 906 1066 1123 1127
+156 159 145 145 169 226 377 355 431 194 538 525 472 484 493 485 495 577 572 591
+308 304 294 279 345 611 853 524 798 330 1109 989 941 930 1013 931 1018 1166 1090 1155
+359 347 371 320 463 941 1109 409 846 363 1302 1057 1072 1017 1189 1017 1195 1344 1181 1287
+322 298 473 279 690 1181 1206 340 672 306 1259 893 991 887 1148 886 1157 1276 1024 1166
+267 226 503 216 890 1333 1179 249 420 226 1111 632 819 671 1002 669 1011 1077 754 920
+189 140 393 137 913 1198 906 144 192 132 759 292 523 369 687 367 697 695 378 526
+100 81 213 78 597 676 437 79 85 77 320 135 190 137 269 137 299 265 136 152
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+12 68 8 24 9 9 9 63 11 96 11 40 19 35 12 29 12 12 34 21
+95 329 75 183 82 81 85 522 200 643 154 407 263 353 185 354 166 214 381 307
+104 238 85 184 95 95 104 545 297 571 263 468 324 406 264 406 262 320 463 406
+190 277 161 249 181 185 217 816 574 724 584 816 618 721 560 722 559 675 838 782
+295 326 258 295 293 307 419 979 841 734 950 1134 924 1020 893 1022 893 1058 1191 1159
+462 468 413 429 472 488 815 1138 1162 701 1437 1532 1331 1407 1340 1408 1343 1555 1629 1635
+415 416 377 382 432 528 903 847 1027 455 1342 1314 1195 1222 1242 1223 1246 1431 1419 1461
+569 565 507 518 579 895 1188 783 1120 579 1618 1482 1427 1415 1509 1415 1515 1682 1596 1669
+454 444 449 409 553 1111 1303 493 1004 460 1546 1270 1286 1225 1419 1224 1425 1594 1410 1529
+352 327 515 306 753 1297 1327 371 738 336 1378 975 1082 968 1255 967 1264 1397 1119 1277
+267 226 502 216 896 1348 1195 250 424 226 1116 630 819 669 1005 667 1014 1082 755 923
+187 139 389 135 915 1205 913 143 191 130 756 286 517 363 682 361 693 693 373 522
+96 79 201 77 586 664 431 77 83 76 310 132 180 134 257 134 290 256 133 146
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+20 78 14 31 15 15 15 74 19 109 20 51 29 45 21 40 21 21 44 31
+101 380 80 206 87 86 91 626 232 770 162 472 297 407 201 408 177 238 441 351
+200 438 166 349 182 182 201 1012 560 1054 526 901 636 787 526 787 523 632 893 789
+275 393 235 357 264 269 309 1210 852 1067 867 1213 917 1070 832 1072 830 1004 1247 1165
+366 395 322 358 366 379 516 1233 1059 915 1190 1420 1154 1276 1115 1278 1116 1325 1493 1454
+474 479 424 439 484 499 821 1133 1159 702 1434 1525 1330 1403 1339 1405 1342 1550 1621 1627
+568 563 506 517 578 652 1043 981 1165 578 1574 1546 1429 1456 1476 1457 1480 1661 1649 1690
+538 534 483 490 553 882 1187 768 1117 551 1592 1449 1392 1379 1478 1379 1484 1659 1570 1646
+438 427 435 393 536 1101 1297 481 996 443 1521 1241 1257 1195 1391 1195 1398 1569 1383 1504
+341 316 501 296 737 1279 1312 361 729 325 1349 949 1053 941 1225 940 1235 1367 1092 1248
+255 215 464 205 826 1241 1104 238 402 215 1032 588 759 623 929 621 938 1002 703 857
+177 131 355 127 829 1093 832 135 182 123 691 269 474 336 624 334 634 635 346 480
+91 52 210 53 580 665 424 46 64 42 299 102 165 112 247 112 277 242 107 130
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+3 3 2 2 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5
+20 20 17 18 19 19 20 20 20 20 36 36 36 36 36 36 36 36 36 36
+58 61 50 56 56 56 58 65 62 66 107 111 108 110 107 110 107 108 111 110
+100 109 87 99 97 99 107 128 120 126 198 209 200 205 197 205 197 203 210 208
+74 75 66 69 74 75 78 80 79 79 141 142 140 141 140 141 140 142 143 143
+130 135 118 125 133 141 155 163 164 152 275 280 270 274 271 274 271 281 284 285
+137 139 128 129 145 157 172 168 175 153 297 295 288 290 291 290 291 302 302 304
+150 147 145 137 167 192 211 184 205 161 344 331 326 325 334 325 334 350 342 349
+60 59 55 55 62 63 64 61 62 61 114 112 113 112 113 112 113 114 113 113
+44 43 40 40 45 46 46 44 45 44 82 81 81 81 82 81 82 82 81 82
+37 36 34 33 39 40 39 37 38 36 69 68 68 68 69 68 69 69 68 69
+28 24 46 22 109 142 110 24 29 24 85 34 58 42 76 42 78 78 43 59
+8 7 7 7 8 9 8 7 8 7 15 14 14 14 15 14 15 14 14 14
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+9 52 6 18 7 7 7 51 10 75 9 32 15 27 10 22 10 10 27 17
+99 365 79 199 86 85 89 629 238 766 155 465 288 398 193 399 168 233 435 346
+174 381 144 304 159 159 175 927 515 956 459 802 557 696 458 697 455 558 797 702
+275 386 235 351 264 270 311 1233 874 1077 869 1219 916 1072 831 1074 829 1010 1255 1173
+368 396 324 359 368 382 530 1254 1083 922 1195 1428 1156 1280 1118 1282 1119 1335 1504 1465
+476 481 426 440 486 501 838 1150 1180 702 1440 1531 1331 1406 1342 1407 1345 1558 1630 1637
+566 561 505 515 576 656 1059 992 1184 577 1578 1548 1427 1454 1476 1455 1480 1668 1655 1697
+545 540 488 496 559 896 1210 781 1140 557 1605 1459 1399 1386 1488 1386 1493 1674 1582 1661
+366 354 374 326 467 1026 1224 422 928 370 1385 1106 1121 1060 1255 1059 1261 1433 1248 1369
+290 267 424 250 630 1101 1133 310 633 275 1147 800 889 792 1038 791 1046 1163 925 1060
+222 189 404 180 738 1121 1001 209 359 189 912 508 663 540 818 538 826 886 614 754
+109 86 189 82 425 557 431 88 112 84 368 165 262 195 335 194 340 341 201 266
+49 31 99 30 275 317 205 29 37 27 146 57 84 62 121 62 136 120 59 69
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+8 41 5 14 6 6 6 41 8 60 8 25 12 22 8 18 8 8 21 14
+92 327 73 180 80 79 83 573 221 694 141 421 261 360 176 361 152 212 395 315
+199 423 165 340 182 183 202 1037 582 1064 521 901 629 783 519 783 516 631 896 792
+243 343 208 310 233 239 278 1128 800 979 777 1098 819 962 741 964 740 907 1133 1057
+313 343 275 311 313 327 476 1156 998 837 1069 1288 1030 1147 994 1149 995 1202 1361 1325
+189 202 170 184 195 222 395 549 566 330 647 694 589 628 595 629 597 710 747 751
+142 145 134 133 157 212 328 308 369 184 455 444 401 410 418 410 420 487 482 498
+143 140 144 128 174 279 374 248 351 160 467 417 397 392 427 392 429 491 459 487
+110 105 117 96 152 276 325 141 252 111 352 282 286 271 319 271 321 364 317 348
+102 92 130 85 187 294 302 112 190 95 309 226 246 224 282 223 284 312 255 287
+85 74 117 68 193 273 248 81 119 75 239 154 186 160 218 160 220 233 176 205
+58 48 82 44 162 207 165 49 60 48 148 82 112 91 137 90 139 139 93 114
+29 21 44 20 98 111 76 20 24 20 67 38 48 40 59 40 64 59 39 43
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 7 0 2 0 0 0 7 1 11 0 4 1 3 0 2 0 0 3 1
+66 235 52 127 58 57 60 421 164 509 94 298 180 253 118 254 101 145 279 221
+107 227 88 178 98 99 109 564 318 577 263 468 320 403 261 403 259 322 466 409
+218 300 186 270 209 215 253 906 655 788 649 897 680 791 620 792 620 750 925 867
+283 313 248 283 283 297 430 988 859 720 924 1106 890 988 862 989 862 1035 1168 1138
+325 337 291 308 333 362 656 915 945 534 1094 1171 998 1062 1009 1064 1011 1198 1259 1266
+280 283 258 259 299 404 741 683 852 330 1036 1007 897 922 942 923 946 1119 1106 1145
+331 326 313 300 367 610 835 534 785 353 1069 959 914 904 980 904 985 1122 1052 1112
+268 253 291 235 369 767 915 342 699 270 1029 818 828 782 929 782 933 1065 925 1017
+203 183 286 171 422 720 744 222 433 189 758 535 590 529 686 529 691 768 615 702
+169 144 287 136 519 785 705 160 268 145 647 370 475 391 581 390 587 629 443 539
+75 61 115 57 248 322 254 62 78 60 220 109 161 125 201 124 204 206 129 164
+28 20 49 19 140 161 107 19 22 18 76 33 45 35 62 35 70 63 34 38
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+51 100 38 66 44 44 46 150 80 177 70 127 92 114 75 113 72 83 122 104
+88 154 71 122 81 81 90 327 201 333 183 290 212 256 182 256 181 214 290 260
+108 144 89 124 101 105 130 319 246 284 254 330 263 297 245 297 245 285 339 321
+127 137 113 125 126 133 149 173 167 162 269 281 266 273 264 273 264 276 285 283
+135 140 122 129 138 148 165 175 176 160 290 295 283 288 284 288 284 297 301 301
+229 232 212 213 246 335 591 546 677 277 817 794 708 728 744 728 747 882 871 902
+180 176 179 164 210 270 320 253 306 198 474 444 432 429 449 429 451 488 469 485
+142 134 155 123 198 343 402 188 316 144 458 374 378 360 418 360 420 473 417 453
+113 104 115 97 138 160 162 118 138 107 247 224 230 224 239 224 240 247 232 241
+55 52 53 48 61 64 63 54 57 52 106 101 103 101 104 101 105 105 102 104
+32 30 30 27 36 37 36 30 32 29 59 56 58 57 59 57 59 59 57 58
+10 9 10 9 12 13 12 9 10 9 19 18 18 18 19 18 19 19 18 18
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+98 357 78 195 85 85 89 680 265 813 146 479 285 404 185 405 155 233 450 356
+159 336 131 268 145 145 163 873 496 884 412 729 498 628 407 628 405 506 728 641
+233 317 199 286 224 229 270 1049 758 901 720 1012 754 885 685 887 684 842 1046 979
+300 329 263 298 300 315 460 1039 909 751 967 1154 929 1030 900 1032 901 1084 1221 1191
+295 308 264 281 303 333 639 898 933 503 1045 1121 945 1010 956 1011 959 1151 1212 1220
+272 274 251 252 290 399 740 679 851 322 1016 986 875 899 921 900 925 1099 1086 1126
+181 177 177 163 212 396 566 342 529 199 679 595 561 553 611 554 615 720 666 712
+119 112 129 103 167 295 347 158 272 121 383 309 312 296 347 296 349 395 346 378
+206 189 294 176 443 780 809 224 460 195 795 548 608 541 714 540 720 806 637 734
+89 78 120 72 198 282 258 85 126 78 249 163 194 169 228 168 230 244 185 215
+73 60 112 56 244 319 253 61 77 59 216 108 157 121 197 121 200 202 126 161
+46 28 93 27 299 350 227 25 35 23 150 55 78 60 116 60 137 121 58 67
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+48 115 36 68 42 42 44 196 92 231 61 144 94 125 69 124 63 81 137 112
+40 69 32 54 37 37 41 156 96 158 78 129 91 112 77 112 76 93 129 114
+132 178 112 157 127 131 157 517 382 446 365 500 379 441 348 441 347 421 517 486
+159 182 139 163 158 169 257 556 488 403 503 603 482 536 467 537 467 566 639 623
+78 83 69 75 81 94 199 287 300 153 294 320 259 281 263 282 264 331 352 354
+133 134 123 124 140 153 168 164 172 148 287 285 278 280 281 280 281 293 292 295
+118 115 114 105 139 234 322 206 302 129 375 331 313 309 339 309 341 397 368 393
+154 145 168 134 213 370 434 204 342 155 495 404 408 389 451 389 453 511 450 490
+223 205 334 192 517 947 986 243 542 212 939 628 704 619 837 618 845 953 741 863
+191 163 336 155 639 990 893 182 321 164 779 421 556 448 694 447 701 758 518 643
+120 93 240 90 656 890 686 96 129 89 504 170 320 209 444 208 456 463 224 332
+54 52 96 49 412 481 316 52 52 52 192 86 95 85 139 85 175 155 86 85
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+73 211 57 122 63 63 67 392 170 462 105 284 177 242 124 243 109 151 269 218
+173 346 142 279 157 158 179 904 526 906 439 760 524 656 433 656 431 536 761 674
+219 290 186 260 210 216 258 889 657 762 633 869 658 765 603 766 602 733 899 845
+251 288 219 259 249 269 407 867 766 628 810 964 776 860 753 861 754 908 1020 997
+271 289 244 264 280 321 558 748 778 452 891 950 811 862 821 863 824 975 1022 1029
+260 264 243 243 283 382 621 574 700 322 861 836 753 772 788 772 791 923 912 943
+345 341 326 313 381 660 920 575 864 367 1142 1016 964 954 1040 954 1045 1202 1123 1191
+273 258 293 239 372 780 935 356 718 276 1031 817 825 780 928 779 932 1069 927 1020
+226 203 310 190 457 775 806 251 480 210 819 581 637 573 739 573 745 829 667 759
+181 153 293 144 536 816 741 172 292 153 672 386 492 407 603 406 608 655 463 563
+106 83 175 79 411 547 430 86 113 80 353 161 245 182 317 181 324 328 191 253
+36 22 67 22 221 261 171 20 28 18 112 44 60 48 87 48 103 92 46 53
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+11 11 10 11 11 11 12 11 11 12 21 21 21 21 21 21 21 21 21 21
+55 58 48 53 54 54 56 63 60 64 103 107 104 106 103 106 103 104 107 106
+23 23 21 21 24 24 24 23 23 23 43 43 43 43 43 43 43 43 43 43
+21 21 19 19 21 21 21 21 21 21 39 39 39 39 39 39 39 39 39 39
+43 42 38 39 43 44 44 43 43 44 79 79 79 79 79 79 79 79 80 80
+43 43 39 40 44 44 44 44 44 44 80 80 80 80 80 80 80 81 80 81
+24 24 21 22 24 24 24 24 24 24 44 44 44 44 44 44 44 44 44 44
+24 24 21 22 24 24 24 24 24 24 44 44 44 44 44 44 44 44 44 44
+27 27 25 25 28 28 28 28 28 28 51 51 51 51 51 51 51 51 51 51
+53 50 51 46 59 62 61 52 56 50 102 97 99 97 100 97 101 101 98 100
+17 16 16 15 18 18 18 17 17 16 31 31 31 31 31 31 31 31 31 31
+9 8 9 7 11 12 11 8 8 8 16 15 15 15 16 15 16 16 15 15
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+87 309 70 171 77 77 81 652 263 766 124 438 251 365 157 366 129 208 413 325
+154 311 127 250 141 142 160 872 506 865 396 707 475 603 388 604 386 491 709 625
+221 294 189 264 214 220 262 1043 763 878 688 974 716 846 650 848 649 812 1012 948
+290 318 254 287 290 306 489 1153 1013 799 1007 1219 956 1073 926 1075 927 1144 1300 1268
+253 265 227 242 261 292 548 748 783 423 858 917 773 825 784 826 786 946 993 1002
+154 156 143 143 167 235 403 368 458 192 527 510 453 465 477 466 479 570 562 584
+138 135 134 124 162 300 429 261 402 152 492 429 403 397 441 398 443 523 483 517
+112 106 120 97 156 283 335 151 263 114 358 287 289 274 323 274 325 371 323 355
+98 89 122 82 180 291 303 109 190 92 298 214 233 211 269 211 271 301 244 277
+86 76 114 70 193 278 256 83 124 77 242 156 187 162 220 162 222 237 179 209
+88 70 158 67 432 587 458 73 96 68 334 125 213 143 293 142 302 308 155 224
+35 31 59 30 297 352 231 31 33 30 131 54 60 55 89 55 117 103 55 56
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+76 267 61 147 67 67 71 581 236 679 103 381 215 316 132 317 108 178 360 282
+157 313 131 255 146 147 164 914 531 902 408 733 490 624 399 626 396 509 736 649
+249 327 214 296 241 248 294 1228 898 1026 795 1133 826 980 748 982 748 942 1180 1104
+280 308 246 278 280 296 484 1145 1008 787 987 1197 934 1051 904 1053 906 1124 1279 1248
+326 338 293 309 335 367 723 995 1046 539 1134 1213 1017 1088 1033 1090 1037 1253 1317 1328
+327 329 300 302 347 470 858 780 980 376 1149 1111 988 1014 1040 1015 1045 1242 1225 1271
+362 357 340 328 398 751 1085 648 1017 384 1293 1135 1070 1056 1165 1056 1171 1369 1270 1355
+288 276 294 255 369 869 1056 363 803 292 1114 868 876 824 995 824 999 1159 996 1104
+259 238 378 223 588 1086 1139 285 635 246 1069 712 795 699 948 699 957 1085 843 982
+196 166 343 158 685 1084 986 188 346 166 825 424 574 455 728 453 736 804 537 677
+134 98 258 95 728 999 778 104 149 92 556 194 343 221 483 220 500 511 243 363
+1 0 32 1 346 420 261 0 0 0 95 0 3 0 38 0 77 59 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+73 255 59 141 65 65 69 571 233 664 99 370 206 305 126 306 102 171 350 274
+174 338 145 277 161 162 181 1003 587 986 450 804 538 685 439 687 436 561 809 715
+245 319 210 288 236 244 290 1218 894 1013 780 1115 810 963 733 965 733 928 1162 1088
+280 307 246 277 280 296 488 1140 1008 780 979 1186 925 1040 896 1042 897 1116 1269 1239
+335 347 301 317 345 376 767 1060 1118 559 1193 1277 1065 1142 1083 1143 1086 1322 1390 1403
+403 403 366 370 421 556 1009 916 1149 446 1355 1311 1170 1200 1231 1202 1236 1461 1441 1494
+436 430 402 395 468 866 1246 749 1169 456 1491 1314 1240 1225 1347 1225 1353 1576 1465 1560
+369 357 367 329 453 1105 1347 452 1024 375 1417 1105 1114 1048 1265 1048 1270 1473 1268 1404
+292 268 431 251 677 1269 1334 320 737 277 1236 814 911 798 1092 797 1103 1255 970 1134
+217 182 391 174 799 1280 1165 209 397 182 955 475 654 512 839 510 848 931 612 779
+136 99 266 97 772 1065 830 106 154 93 581 198 352 222 502 220 520 534 246 374
+0 0 25 0 327 398 248 0 0 0 87 0 1 0 33 0 70 54 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+79 272 64 152 71 70 74 625 258 723 108 403 224 332 136 333 111 187 382 299
+172 330 144 272 159 161 180 1002 589 981 443 796 530 677 432 678 429 555 802 708
+243 314 208 284 235 243 289 1224 902 1013 776 1112 804 958 728 960 728 925 1160 1086
+314 341 276 309 315 332 529 1180 1050 815 1038 1245 982 1098 954 1100 955 1176 1329 1299
+390 399 349 365 400 428 813 1094 1152 602 1262 1343 1137 1211 1154 1212 1158 1388 1453 1467
+388 389 353 357 407 547 1009 913 1151 433 1339 1293 1149 1180 1211 1181 1217 1447 1426 1481
+375 370 351 340 412 797 1166 688 1092 398 1364 1191 1119 1104 1223 1105 1230 1447 1339 1432
+329 316 330 292 410 1021 1250 414 948 334 1295 1001 1009 947 1151 947 1156 1348 1155 1283
+288 264 426 248 672 1269 1337 318 739 273 1228 804 901 787 1083 786 1093 1247 961 1126
+207 174 375 166 782 1263 1151 200 386 175 927 450 628 487 811 485 820 903 588 753
+109 82 200 79 570 785 616 87 123 78 435 160 268 175 377 173 391 401 193 285
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+25 53 19 33 22 22 23 100 51 115 32 72 47 62 35 62 32 42 69 57
+68 104 55 83 63 64 72 228 151 224 126 194 142 170 124 170 124 147 195 177
+82 103 69 88 80 82 101 273 212 232 185 249 189 219 175 219 175 213 259 244
+117 135 101 120 116 128 191 346 314 255 318 372 303 333 296 334 297 355 395 387
+155 164 139 149 160 186 339 449 473 260 498 531 446 476 454 477 455 550 577 583
+135 138 127 126 150 210 334 306 374 175 430 416 372 381 391 381 393 464 457 474
+136 133 135 122 165 276 378 246 355 153 441 389 367 363 399 363 401 467 434 462
+130 123 139 113 180 326 388 178 306 133 418 336 338 321 377 321 379 433 378 414
+154 141 209 131 321 570 600 173 353 146 568 388 428 381 505 381 510 576 454 524
+122 106 183 99 348 537 494 119 200 107 428 243 310 256 382 255 386 419 295 360
+85 67 140 63 379 518 410 70 96 65 300 125 192 133 262 133 271 278 145 204
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+78 264 63 149 70 70 74 645 270 739 104 406 220 331 130 332 107 185 385 301
+172 323 144 267 160 161 181 1025 608 993 442 801 527 677 428 679 426 558 808 714
+245 311 210 281 237 245 294 1255 932 1029 783 1124 808 965 731 967 731 937 1176 1102
+289 316 254 286 290 307 489 1039 932 719 920 1097 870 969 847 971 848 1040 1171 1146
+143 154 129 140 149 178 296 377 397 236 432 458 391 415 397 415 398 474 495 499
+153 156 144 143 170 237 375 343 420 198 489 472 424 434 445 434 447 526 519 538
+154 150 153 138 186 309 423 277 398 172 500 442 418 413 452 413 455 528 491 523
+93 89 95 81 126 249 301 126 233 95 294 229 230 217 262 217 263 306 263 292
+68 65 65 60 75 80 81 70 75 67 135 129 130 129 133 129 133 135 131 133
+83 74 107 68 187 274 255 81 123 75 234 149 179 155 212 154 214 230 173 202
+36 31 48 28 116 155 126 32 39 31 94 47 64 49 83 49 86 88 52 68
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+43 106 34 64 39 39 41 233 109 265 52 151 88 126 59 126 53 78 144 116
+117 201 96 163 108 110 126 549 342 532 267 447 309 384 260 385 259 325 452 404
+191 243 164 218 186 192 232 1011 752 823 611 887 630 757 569 759 569 737 930 870
+199 227 174 204 198 215 329 614 558 442 582 678 553 608 541 608 542 648 720 707
+237 247 213 225 244 277 622 862 920 424 915 983 801 866 818 867 821 1027 1083 1096
+309 311 284 285 329 452 812 731 921 358 1051 1013 899 923 949 924 953 1138 1120 1164
+176 172 176 159 212 350 478 314 450 197 570 505 478 472 517 473 519 601 560 596
+284 273 288 251 359 840 1027 371 787 289 1060 824 829 780 942 780 946 1103 948 1051
+194 176 265 164 407 727 768 220 453 182 728 496 547 487 646 486 652 737 582 672
+84 76 90 71 115 137 132 83 100 77 181 156 165 158 175 157 175 180 163 172
+44 39 46 36 59 67 61 40 45 39 86 74 79 75 83 75 84 84 76 80
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+35 79 27 49 32 32 34 171 83 192 43 112 67 94 47 94 44 60 108 88
+84 143 69 115 79 80 90 406 253 392 182 315 212 268 176 268 175 225 318 283
+186 234 159 209 180 186 228 935 701 760 575 824 590 706 535 707 535 689 864 810
+316 343 278 310 317 336 573 1283 1152 858 1080 1304 1011 1139 983 1141 985 1235 1401 1371
+348 358 312 327 358 391 814 1100 1173 564 1210 1291 1072 1149 1093 1151 1097 1346 1412 1428
+337 338 309 310 357 481 843 760 952 386 1096 1057 942 966 993 967 997 1183 1164 1209
+207 203 200 187 240 509 767 439 716 226 836 714 663 653 736 653 741 895 819 885
+211 200 223 185 284 646 792 293 607 215 809 625 628 590 717 590 720 843 721 802
+189 171 257 160 399 720 763 214 448 177 713 482 532 472 631 472 637 723 568 658
+163 138 265 131 546 878 810 159 295 139 654 332 448 353 573 352 580 639 425 538
+110 80 192 77 571 796 631 86 129 75 431 163 257 172 367 172 385 399 188 279
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+71 232 58 133 64 64 68 626 268 707 93 378 194 303 111 299 95 166 360 280
+165 301 139 251 155 156 176 1023 615 977 424 777 503 652 402 654 400 540 788 696
+238 295 204 265 231 239 289 1256 942 1014 761 1098 780 937 706 939 706 917 1154 1082
+316 343 279 310 318 336 580 1293 1164 860 1081 1306 1010 1138 982 1141 984 1238 1404 1375
+393 402 353 368 404 435 894 1197 1277 615 1324 1409 1174 1257 1198 1259 1202 1469 1539 1557
+440 439 398 403 458 615 1134 1015 1288 480 1459 1404 1246 1279 1316 1280 1322 1578 1553 1614
+419 414 389 380 454 885 1304 771 1223 442 1480 1288 1206 1190 1323 1191 1330 1573 1453 1557
+351 338 349 311 430 1127 1394 458 1059 357 1391 1061 1066 998 1226 998 1231 1452 1236 1380
+276 252 406 236 659 1284 1368 309 757 261 1202 764 859 743 1047 742 1058 1222 928 1099
+201 167 353 159 775 1280 1179 196 394 167 907 419 596 451 784 449 795 886 563 733
+118 85 220 82 725 1024 809 92 141 79 518 173 286 182 430 181 457 476 198 317
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+68 220 56 126 62 62 65 611 264 687 89 364 182 289 103 284 90 157 347 269
+111 200 92 163 104 105 119 669 406 637 269 497 319 415 253 416 252 344 504 445
+231 284 198 255 224 232 282 1233 928 990 738 1068 755 909 684 911 683 892 1124 1054
+308 335 272 303 310 329 577 1282 1157 847 1061 1283 988 1116 962 1118 964 1218 1382 1354
+382 391 343 357 392 425 888 1188 1271 602 1301 1385 1149 1232 1173 1234 1178 1446 1516 1534
+425 425 386 390 445 606 1130 1008 1284 468 1436 1380 1220 1253 1291 1254 1297 1557 1530 1593
+407 402 379 369 444 877 1299 764 1218 430 1459 1265 1182 1166 1300 1167 1307 1553 1431 1536
+344 331 343 305 423 1122 1391 454 1056 350 1375 1044 1049 981 1209 981 1214 1436 1220 1365
+260 237 368 221 588 1120 1193 293 677 246 1065 691 771 672 932 671 941 1082 832 978
+193 160 321 152 682 1113 1030 189 366 160 811 395 544 419 705 418 714 794 517 663
+112 80 198 78 615 866 689 87 135 74 456 168 261 177 380 177 403 421 189 288
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+37 101 29 59 34 34 36 268 122 300 43 158 80 126 48 123 44 71 151 118
+97 155 80 127 90 91 105 433 278 412 213 349 242 299 203 300 202 258 354 318
+119 147 102 129 116 120 150 510 393 415 325 452 331 390 304 391 304 384 474 447
+253 278 222 250 254 272 471 1005 912 669 839 1009 782 880 762 881 763 960 1086 1065
+295 306 265 279 304 340 705 937 1004 480 1015 1080 894 959 913 960 917 1130 1184 1200
+277 279 255 256 297 418 747 668 846 327 938 901 796 817 843 818 847 1018 1000 1042
+168 165 165 151 200 362 518 321 486 186 577 502 470 464 515 464 518 614 567 608
+243 233 249 215 314 780 966 334 737 248 951 723 726 679 836 679 840 993 844 944
+182 168 260 156 425 826 883 206 496 174 762 483 542 468 662 468 669 775 588 697
+99 91 109 84 153 198 189 98 127 92 226 183 197 184 214 184 215 224 194 210
+64 52 90 48 217 295 240 54 73 51 189 100 130 104 166 104 173 178 108 138
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+55 164 45 96 50 50 53 477 212 532 70 278 135 218 77 211 71 119 266 207
+155 274 131 230 146 147 167 995 606 936 394 734 466 610 364 612 362 509 747 659
+225 274 193 245 219 227 278 1231 932 979 723 1049 736 889 666 891 666 877 1107 1039
+254 279 224 251 255 273 494 1080 979 706 876 1061 811 919 790 921 792 1009 1146 1123
+301 312 271 285 311 347 753 1007 1083 498 1072 1142 938 1009 960 1011 964 1199 1258 1275
+235 237 217 217 253 375 707 626 807 283 860 822 717 738 764 739 768 940 922 964
+174 171 171 157 206 406 597 356 560 193 647 556 517 510 572 510 576 692 635 684
+183 174 192 161 246 595 739 261 564 187 720 545 547 512 631 512 635 753 638 715
+194 178 272 166 443 856 916 220 519 184 794 507 568 492 691 491 698 808 616 728
+165 139 277 132 621 1032 959 163 326 140 721 332 469 350 620 349 630 706 446 583
+99 72 179 69 619 884 704 78 121 67 434 147 229 154 350 154 379 399 161 259
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+61 188 50 110 56 55 59 580 256 643 78 331 154 256 84 245 79 136 317 245
+154 269 130 226 145 147 166 998 611 935 390 730 461 606 357 608 355 506 744 657
+222 268 190 239 216 224 275 1227 932 970 712 1037 724 876 655 878 655 867 1095 1028
+298 323 263 292 300 319 584 1281 1165 830 1033 1251 954 1082 930 1084 932 1192 1354 1328
+365 375 328 342 376 411 894 1188 1281 582 1269 1350 1110 1194 1137 1196 1142 1418 1486 1507
+402 402 366 369 422 595 1135 1003 1292 448 1399 1339 1174 1208 1249 1209 1255 1524 1495 1560
+385 380 361 349 424 869 1305 757 1223 409 1421 1222 1136 1120 1257 1120 1264 1518 1394 1502
+326 314 327 289 406 1111 1390 446 1054 333 1334 1000 1002 934 1164 934 1170 1397 1178 1325
+255 232 374 218 622 1247 1340 290 743 242 1133 701 792 676 977 675 988 1154 866 1034
+182 151 314 144 723 1217 1131 179 373 152 832 366 529 387 710 385 723 815 504 667
+101 72 184 70 654 938 748 80 126 67 453 150 233 158 361 158 394 416 165 266
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+27 48 21 33 25 24 26 102 57 112 35 71 45 60 36 59 35 43 69 58
+75 85 63 76 71 72 79 107 94 106 144 158 147 153 143 152 143 148 158 155
+136 168 116 146 132 137 176 413 335 344 327 415 329 370 311 371 311 369 432 413
+145 164 127 147 145 160 245 424 393 304 395 456 373 408 367 409 367 440 486 479
+104 107 94 98 107 114 124 129 130 119 215 218 211 213 212 213 212 220 221 222
+140 142 131 131 151 176 207 198 215 164 328 323 310 313 316 313 317 339 336 342
+123 121 118 112 137 159 177 153 171 132 277 266 261 261 268 260 269 283 276 282
+87 84 83 78 96 105 109 95 103 88 179 172 172 170 175 170 175 180 175 179
+86 80 86 75 103 119 121 91 105 83 183 168 171 167 177 167 178 184 174 179
+49 46 49 43 58 63 62 49 54 47 98 91 93 91 96 91 96 98 93 95
+21 20 21 18 25 27 26 20 22 20 41 38 39 38 40 38 40 40 38 39
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+13 13 12 12 13 13 13 13 13 14 24 24 24 24 24 24 24 24 24 24
+47 50 41 46 46 47 49 55 52 55 89 92 89 91 88 91 88 90 92 91
+79 84 69 77 77 80 86 100 95 97 155 162 155 158 154 158 154 158 163 162
+66 68 60 62 67 69 71 74 73 73 128 130 127 128 127 128 127 129 130 130
+92 94 83 86 94 99 106 108 109 102 185 187 182 184 183 184 183 188 189 190
+90 90 83 83 94 99 105 102 105 97 182 181 178 178 179 178 179 184 183 184
+108 106 102 99 118 132 143 128 139 115 232 225 222 221 226 221 226 235 231 235
+92 89 89 83 103 115 121 102 113 94 193 185 185 183 189 183 189 195 189 193
+75 71 74 66 87 98 100 79 89 74 156 146 148 145 152 145 152 156 149 153
+75 67 102 62 209 332 312 75 127 68 246 133 171 137 215 137 219 242 166 206
+28 25 29 23 36 40 37 26 29 25 54 48 51 49 53 49 53 53 49 51
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+14 14 12 13 13 13 14 14 14 14 25 25 25 25 25 25 25 25 25 25
+47 50 41 46 46 47 49 55 52 55 89 92 89 91 88 91 88 90 92 91
+79 84 69 77 77 80 86 100 96 97 155 162 155 158 153 158 153 158 163 162
+102 108 91 99 102 108 120 135 133 125 211 218 208 212 207 212 208 216 222 221
+68 69 62 63 70 71 74 74 74 73 131 132 130 131 131 131 131 132 133 133
+72 72 66 67 75 77 80 78 80 76 141 140 139 139 140 139 140 142 142 142
+138 135 132 124 162 380 595 328 555 152 583 485 442 435 502 435 506 632 570 624
+262 251 266 232 336 924 1164 375 884 268 1085 804 804 748 941 747 946 1139 955 1079
+207 189 297 177 502 1017 1101 238 615 197 906 554 626 530 777 530 787 925 690 828
+140 119 232 113 558 951 891 139 291 121 631 268 390 279 532 278 544 619 374 503
+82 59 139 57 501 724 583 65 103 55 347 123 177 129 271 129 300 319 135 204
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+19 20 16 18 19 18 19 20 20 21 35 36 35 35 35 35 35 35 35 35
+72 102 59 83 68 69 81 240 168 226 138 204 150 178 131 178 131 160 207 190
+60 72 51 61 60 62 78 226 180 182 133 184 134 158 123 158 123 158 195 184
+219 240 193 216 220 238 473 1036 950 649 786 962 716 820 698 822 700 919 1050 1030
+163 171 146 155 169 199 451 595 648 285 591 631 507 549 521 550 524 669 703 715
+143 144 132 132 156 246 474 415 542 179 533 506 433 448 467 448 469 589 576 605
+197 194 193 178 234 482 725 423 679 219 758 644 596 587 664 587 668 814 743 805
+198 190 204 175 261 670 842 288 643 203 783 584 583 544 681 544 685 822 692 780
+183 168 254 157 423 839 908 212 518 175 756 472 529 452 651 451 659 771 581 693
+141 119 219 112 492 821 772 141 277 119 573 270 370 278 489 277 499 563 358 465
+71 52 112 49 356 510 415 57 89 48 265 110 148 115 213 115 232 246 120 167
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+13 13 11 12 13 13 13 13 13 14 24 24 24 24 24 24 24 24 24 24
+48 51 41 46 46 47 50 56 53 56 89 93 90 92 89 92 89 91 93 93
+76 81 67 74 75 77 83 96 92 93 149 156 149 152 148 152 148 152 157 156
+117 126 104 115 117 126 147 175 171 156 254 266 249 256 248 256 248 263 273 271
+127 133 116 122 132 146 172 184 190 158 286 291 275 281 277 281 278 296 300 302
+119 120 111 111 127 142 161 154 165 135 262 259 251 253 255 253 255 269 267 270
+106 104 100 96 115 130 141 125 137 112 227 220 217 216 221 216 221 231 226 230
+68 66 64 61 73 78 80 72 76 69 135 131 131 130 133 130 133 135 133 134
+51 50 48 46 56 59 59 53 56 51 100 97 97 96 99 96 99 100 98 99
+52 48 53 45 64 72 71 52 59 49 106 97 100 97 103 97 104 106 99 103
+42 37 50 34 114 153 129 38 47 37 107 68 78 69 94 69 99 102 71 83
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+7 7 6 7 7 7 7 7 7 7 13 13 13 13 13 13 13 13 13 13
+27 27 24 25 27 27 27 28 28 28 50 50 50 50 50 50 50 50 50 50
+118 141 101 122 116 121 153 663 514 510 353 521 353 434 319 435 319 437 556 522
+121 137 106 122 122 135 215 369 345 258 326 378 305 336 300 336 301 366 406 400
+150 159 136 145 157 190 329 406 437 241 446 469 397 421 406 422 407 492 511 519
+167 169 155 154 182 302 628 543 724 206 689 649 548 569 595 569 599 767 747 789
+144 141 142 131 167 215 257 204 247 159 363 339 329 327 343 327 344 374 359 372
+134 128 137 118 168 226 255 170 220 137 335 298 298 291 316 291 317 343 318 335
+111 104 118 96 152 201 210 124 164 108 265 227 234 224 251 224 252 268 241 257
+80 73 85 68 118 151 146 80 102 75 177 146 156 147 168 147 169 176 154 166
+30 27 32 25 44 52 47 28 33 28 60 51 54 51 58 51 58 59 52 55
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+10 10 9 9 10 10 10 10 10 10 18 18 18 18 18 18 18 18 18 18
+41 43 36 39 40 41 42 46 45 47 76 79 77 78 76 78 76 77 79 78
+70 74 62 68 69 71 77 87 83 84 137 142 137 140 136 139 136 140 143 142
+99 112 86 99 100 111 180 314 295 217 262 307 243 270 239 270 240 297 331 326
+97 101 86 91 101 120 225 282 306 156 278 294 241 259 248 259 249 311 325 330
+102 103 94 94 112 164 282 249 317 127 311 295 257 265 275 265 276 340 333 349
+103 101 101 92 125 223 318 201 299 116 326 280 261 257 288 257 290 349 320 345
+91 87 93 79 124 249 306 132 241 94 284 218 218 205 249 205 251 297 254 283
+96 89 99 83 123 153 159 105 130 93 217 192 196 190 207 190 208 218 201 211
+45 42 45 39 53 59 58 45 50 43 90 83 85 83 88 83 88 90 85 88
+15 14 14 13 17 18 18 14 15 14 28 26 27 26 28 26 28 28 27 27
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+17 29 13 20 15 15 17 78 42 83 22 48 27 39 22 36 22 26 47 39
+56 77 46 62 53 54 63 208 144 192 100 157 109 134 93 134 92 120 161 146
+126 150 108 130 123 129 168 624 492 481 354 505 352 425 322 426 322 430 538 508
+159 176 140 157 161 176 334 671 624 426 514 620 467 531 458 532 459 597 677 666
+138 145 124 131 144 172 344 436 475 228 441 467 382 411 393 411 395 495 517 526
+146 147 135 134 160 242 433 380 489 182 491 467 405 417 434 418 436 539 527 553
+185 182 180 167 219 469 716 412 672 205 720 607 557 549 626 549 631 777 706 768
+56 55 52 51 59 62 63 58 61 57 108 106 106 106 107 106 107 108 107 108
+98 91 113 84 174 298 321 113 207 94 292 206 222 200 259 200 262 297 239 274
+55 50 67 45 134 211 201 56 90 51 157 89 110 91 137 90 139 155 108 132
+36 30 48 28 147 210 174 32 44 30 114 57 68 59 92 58 101 107 61 77
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+10 19 8 13 9 9 10 63 32 67 12 35 16 27 12 24 12 16 34 27
+30 48 25 39 29 29 34 216 137 194 64 134 76 107 53 107 53 90 139 122
+38 44 32 37 37 39 51 177 140 137 91 133 90 110 82 111 82 112 142 134
+128 141 112 126 129 141 270 537 501 340 401 485 364 414 357 415 358 468 531 523
+43 44 38 40 45 54 127 165 182 76 144 155 120 132 124 132 125 167 176 179
+75 76 68 68 82 124 223 195 252 93 227 214 183 189 198 189 199 252 245 259
+71 70 66 63 83 163 243 144 227 78 221 185 170 167 191 167 193 240 217 237
+105 100 108 92 143 281 345 152 273 108 329 256 255 241 290 241 292 344 295 328
+90 84 104 77 162 281 303 105 194 87 269 188 203 182 238 181 240 274 219 252
+58 53 60 49 76 91 89 58 69 54 122 107 112 107 118 107 118 121 111 117
+30 25 38 23 95 132 111 27 36 25 82 47 55 48 69 48 74 78 50 60
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+30 73 24 45 28 28 30 317 152 335 34 155 55 109 35 92 34 52 151 114
+95 146 80 121 90 92 108 587 381 528 215 401 246 327 184 328 183 282 414 368
+202 238 173 209 197 207 272 1239 970 931 649 962 641 794 579 796 580 809 1032 970
+271 294 239 265 273 296 616 1299 1210 791 959 1171 862 991 844 994 847 1129 1287 1266
+259 269 234 245 269 309 772 1007 1112 439 975 1038 822 895 851 896 855 1112 1166 1190
+307 308 282 283 329 525 1078 928 1234 360 1190 1122 953 987 1033 988 1039 1319 1285 1355
+295 291 282 267 337 785 1234 685 1157 321 1205 1005 915 900 1038 900 1046 1307 1181 1291
+229 219 234 202 299 849 1086 349 830 235 955 692 688 637 817 637 824 1009 837 954
+201 183 288 171 513 1108 1219 237 680 191 929 536 610 499 781 499 792 954 692 848
+95 83 142 78 360 626 597 97 199 84 398 165 235 167 327 166 338 392 230 314
+55 48 78 45 412 615 503 51 66 47 247 85 100 87 167 86 205 226 88 124
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+35 90 29 55 34 34 35 433 205 455 40 205 66 141 41 115 40 63 200 150
+114 181 96 151 108 110 130 831 532 740 274 544 319 437 225 438 224 374 565 498
+115 138 98 119 112 118 157 449 365 351 290 389 287 335 268 336 268 341 412 393
+144 160 127 143 145 161 279 503 474 332 415 488 381 425 376 426 377 474 529 522
+153 161 138 146 160 193 378 472 516 250 482 508 418 448 430 448 432 540 562 572
+108 110 101 100 121 179 301 265 336 139 334 317 277 285 296 285 298 365 357 374
+118 115 115 106 142 253 360 229 340 133 372 321 299 295 330 295 332 398 366 394
+101 97 100 90 118 141 153 119 139 103 226 210 210 206 217 206 218 229 219 226
+62 59 60 55 71 79 80 66 73 61 127 119 121 119 124 119 124 127 122 125
+40 37 39 35 47 52 51 40 45 38 79 74 76 74 78 74 78 79 75 78
+12 11 12 10 14 15 15 12 13 11 23 21 22 22 23 22 23 23 22 22
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+13 22 10 15 12 12 13 67 37 70 16 39 20 30 16 27 16 20 38 31
+40 55 33 44 39 40 46 170 117 154 71 119 78 99 64 99 63 88 123 111
+111 130 95 112 109 114 154 658 519 491 328 491 323 402 291 403 291 412 529 497
+101 111 89 98 103 112 208 396 372 252 293 352 265 301 260 301 261 341 386 380
+95 99 85 89 99 119 227 282 308 152 270 284 232 249 239 250 240 303 316 323
+100 100 91 91 109 163 282 247 317 124 301 285 247 254 264 254 266 331 323 339
+97 96 95 87 118 215 310 194 292 110 306 261 241 238 268 238 270 328 300 325
+110 105 113 96 149 292 360 160 287 113 343 267 266 252 302 251 305 359 309 343
+93 87 107 80 166 288 313 109 202 91 278 195 210 188 246 188 248 284 227 261
+51 46 62 42 126 200 193 52 85 48 146 82 101 83 126 83 129 145 100 123
+27 22 36 21 125 182 152 24 34 22 89 41 49 42 68 42 77 83 44 56
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+35 88 29 54 34 34 35 477 228 497 40 217 63 145 40 113 40 61 213 158
+126 192 107 165 121 123 142 970 624 856 306 621 356 494 242 496 241 424 646 569
+195 230 168 202 191 201 277 1239 979 918 628 937 615 767 555 770 556 790 1010 950
+263 286 232 257 266 289 625 1304 1222 780 937 1146 834 963 818 966 821 1109 1265 1247
+321 331 289 302 333 377 948 1222 1356 525 1176 1248 988 1075 1024 1077 1030 1342 1405 1435
+347 349 319 320 371 587 1199 1029 1370 402 1304 1228 1043 1079 1131 1081 1138 1447 1409 1486
+330 325 314 299 375 871 1371 765 1288 359 1319 1099 998 982 1134 982 1143 1433 1294 1416
+280 268 285 247 362 1114 1440 439 1100 288 1224 871 863 794 1037 794 1046 1298 1067 1225
+215 195 309 182 558 1228 1362 259 764 204 1013 574 654 528 846 527 858 1043 750 925
+143 117 234 111 642 1153 1106 147 345 118 699 254 383 257 559 256 584 690 378 539
+73 74 77 68 416 617 513 74 77 75 257 118 118 117 172 117 215 237 116 139
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+33 79 27 49 32 32 33 446 215 463 37 201 56 132 37 101 37 56 197 146
+123 185 104 158 117 119 138 953 615 837 295 603 342 478 230 480 230 411 629 554
+192 226 165 198 188 198 276 1230 974 906 616 921 602 752 543 755 543 777 995 936
+257 280 227 252 260 283 622 1292 1214 768 919 1125 815 943 801 946 803 1090 1245 1227
+311 321 280 293 322 367 936 1204 1340 511 1148 1218 959 1046 996 1048 1002 1311 1373 1404
+336 338 309 309 360 577 1187 1016 1356 391 1276 1200 1015 1051 1103 1053 1110 1418 1380 1458
+324 319 309 293 369 862 1361 759 1279 353 1298 1079 979 963 1114 963 1123 1412 1274 1395
+276 264 281 243 358 1100 1424 436 1089 284 1203 854 845 778 1018 778 1027 1277 1049 1205
+215 194 306 181 554 1220 1356 260 764 203 1003 568 647 521 837 521 849 1035 744 917
+139 113 226 108 625 1126 1083 144 338 115 679 246 369 249 540 248 566 670 365 522
+70 73 69 68 384 571 477 73 71 75 237 114 111 113 157 113 198 219 112 129
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+30 64 25 41 29 29 31 333 165 344 35 154 49 104 35 81 35 49 152 114
+95 135 79 112 90 92 111 452 311 403 206 337 225 283 183 283 183 255 349 316
+140 166 121 145 138 145 195 510 422 397 352 458 346 398 326 399 326 408 485 464
+162 180 143 161 164 182 294 486 464 332 437 500 405 444 401 444 402 490 538 532
+188 197 171 180 197 239 418 505 551 294 550 574 485 514 498 515 500 607 628 639
+207 209 193 192 227 340 589 515 661 259 675 642 561 577 599 577 603 738 721 756
+191 188 187 173 227 391 553 356 523 213 595 520 486 481 532 481 535 634 587 629
+156 150 160 138 208 446 559 230 442 160 524 403 400 377 459 377 463 550 470 525
+178 162 242 151 429 919 1022 216 589 170 770 450 506 415 647 415 655 793 579 707
+86 75 110 70 229 374 362 89 156 76 280 156 191 157 240 157 247 278 190 236
+31 27 34 25 83 114 99 29 35 26 78 52 57 53 67 53 71 75 54 61
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+6 6 5 6 6 6 6 6 6 6 11 11 11 11 11 11 11 11 11 11
+36 37 31 34 35 36 37 41 39 41 67 69 67 68 66 68 66 67 69 68
+57 60 51 55 57 58 62 68 66 66 110 114 110 112 110 112 110 112 115 114
+90 94 80 86 91 96 107 120 118 110 185 191 182 186 182 186 182 190 194 194
+104 107 94 98 107 117 134 139 143 123 222 225 215 218 217 218 217 228 231 232
+92 93 86 86 98 106 116 112 117 102 193 191 187 188 189 187 189 196 195 197
+106 104 101 96 118 138 154 133 150 114 236 227 222 221 228 221 228 241 235 241
+95 91 93 84 110 132 143 112 130 97 210 196 195 193 202 192 203 213 204 210
+70 66 69 61 83 98 101 75 88 68 148 136 138 135 143 135 144 149 141 146
+47 43 48 40 60 71 70 47 56 44 97 86 89 86 94 86 94 97 89 93
+16 15 17 14 24 29 26 16 18 16 32 27 29 27 31 27 31 32 28 30
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+3 3 2 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5
+33 34 29 31 32 33 34 36 35 37 61 63 61 62 61 62 61 62 63 62
+36 36 32 34 36 37 37 38 38 38 67 68 67 68 67 68 67 68 68 68
+43 43 39 40 44 44 45 45 45 45 81 82 81 81 81 81 81 82 82 82
+43 43 39 40 44 45 45 45 45 45 81 81 81 81 81 81 81 82 82 82
+80 80 74 74 84 89 95 92 96 87 162 161 158 159 159 159 160 164 163 165
+94 93 89 86 103 116 127 113 123 100 201 195 192 191 196 191 196 205 200 204
+78 76 77 69 105 225 283 117 224 81 239 178 176 165 206 165 208 252 212 240
+56 53 54 50 64 71 72 59 65 55 113 107 108 107 111 106 111 114 110 112
+57 53 66 48 129 203 198 59 93 54 159 97 113 98 138 97 142 157 113 136
+21 17 25 16 69 98 84 18 26 17 59 34 39 35 48 35 52 56 36 43
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+22 45 19 29 22 22 23 279 140 284 25 121 33 77 25 55 25 34 120 89
+92 131 78 111 89 90 105 688 453 596 208 424 238 334 161 335 160 292 445 393
+73 87 62 74 72 76 106 265 221 205 161 216 157 184 148 184 148 190 230 219
+92 102 80 90 93 104 180 305 292 202 239 280 217 242 215 243 216 274 305 302
+108 114 97 102 113 140 260 315 346 174 311 326 269 288 277 288 279 349 362 370
+113 115 106 105 126 190 321 281 358 145 347 329 286 294 306 295 308 381 372 390
+120 119 115 108 142 293 446 263 421 134 417 349 318 313 359 313 362 452 409 447
+82 79 83 72 111 233 292 124 232 85 252 190 188 177 218 177 220 266 225 253
+172 157 235 146 435 979 1098 210 627 164 785 437 496 395 650 395 659 812 579 719
+64 57 80 53 181 306 298 66 119 58 211 109 135 109 176 109 183 209 135 173
+17 14 20 13 60 87 74 15 21 14 49 27 31 28 39 28 43 46 29 34
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+5 5 4 5 5 5 5 5 5 5 9 9 9 9 9 9 9 9 9 9
+34 35 29 32 33 34 35 38 37 38 63 65 63 64 63 64 63 63 65 64
+61 65 54 59 61 63 68 76 74 73 120 124 119 122 119 122 119 122 125 124
+49 52 42 46 50 54 106 198 188 122 130 158 114 132 113 132 113 154 176 173
+94 97 83 87 98 118 232 283 313 149 263 277 224 241 231 241 233 298 310 317
+103 104 96 95 115 174 298 260 333 132 314 297 257 264 276 265 278 346 337 355
+127 125 122 114 150 306 464 276 438 141 436 366 334 329 376 329 379 473 429 468
+172 165 176 152 229 648 842 278 653 178 694 494 487 450 586 450 592 739 608 698
+75 70 84 64 134 243 269 89 173 73 220 149 160 142 192 141 194 226 177 207
+50 45 65 42 189 340 332 52 108 47 194 73 102 74 151 74 160 192 103 148
+13 11 16 10 78 120 101 12 17 11 48 20 23 20 32 20 39 44 21 26
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+17 30 13 20 16 16 17 193 99 195 20 83 24 53 20 38 20 25 83 62
+68 93 57 77 66 67 79 441 297 381 138 271 155 215 110 215 110 190 285 253
+74 87 63 74 73 77 108 267 223 205 162 216 158 185 148 185 149 191 231 221
+87 91 78 84 88 93 105 117 116 107 179 185 176 180 176 180 176 184 189 188
+137 144 124 131 144 177 322 387 425 217 398 416 346 369 357 369 358 443 459 468
+179 181 167 165 197 315 587 506 664 226 623 586 500 517 541 517 545 690 671 708
+186 183 179 168 218 544 880 483 829 206 777 632 564 554 653 554 660 854 762 843
+191 182 195 168 253 739 965 312 748 197 787 556 547 504 662 504 669 839 687 792
+127 117 159 109 280 592 663 155 395 123 498 298 331 275 419 275 425 514 380 461
+72 64 94 60 232 404 396 76 146 65 265 127 159 127 215 127 225 263 161 212
+26 17 38 17 183 283 238 21 36 16 114 43 52 45 73 45 91 104 48 60
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+17 31 14 21 17 17 18 210 108 211 21 89 24 56 20 38 20 25 89 66
+106 148 90 127 102 104 121 908 598 774 243 530 280 409 177 410 176 357 560 492
+175 204 151 179 172 182 292 1206 972 860 558 848 532 679 479 681 479 717 927 873
+236 257 209 231 239 263 630 1281 1221 731 852 1050 738 865 728 868 731 1026 1176 1162
+284 294 256 267 296 344 943 1198 1350 476 1074 1138 875 962 916 964 922 1242 1301 1335
+283 285 261 261 306 521 1105 936 1266 338 1110 1034 858 892 943 893 950 1246 1208 1284
+269 265 259 244 313 777 1256 692 1184 297 1119 914 817 803 944 802 953 1229 1100 1215
+245 234 251 216 323 1067 1410 417 1085 254 1111 763 749 684 922 684 932 1189 962 1119
+186 168 258 157 495 1160 1313 232 747 177 899 479 549 425 735 424 746 935 654 823
+115 93 179 88 558 1045 1024 122 306 94 586 200 285 201 442 201 474 581 290 436
+0 0 3 0 244 403 334 0 2 0 89 0 0 0 21 0 55 75 0 7
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+14 24 12 17 14 14 15 161 84 162 17 69 20 44 17 30 17 21 69 52
+91 125 78 107 88 90 106 737 490 627 203 433 232 335 151 336 151 295 458 403
+155 181 133 158 152 161 259 1003 813 716 473 710 450 570 407 572 408 604 775 731
+231 251 204 226 234 258 626 1268 1211 720 834 1030 721 846 711 849 714 1008 1155 1142
+277 287 250 261 289 337 935 1186 1339 466 1053 1117 855 941 896 943 902 1221 1279 1313
+297 299 274 274 321 552 1183 1000 1356 354 1175 1094 904 941 996 942 1003 1323 1281 1363
+267 263 256 241 310 771 1247 689 1177 295 1105 902 804 791 931 790 940 1215 1086 1200
+218 208 223 192 289 902 1189 367 920 226 944 655 642 589 786 589 795 1009 820 951
+139 128 177 119 319 695 784 172 465 134 571 333 371 303 477 303 483 592 432 528
+97 81 143 76 418 774 760 104 241 82 449 172 230 172 344 172 367 445 235 340
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+10 17 8 12 10 10 11 107 57 107 13 46 15 30 13 21 13 15 47 35
+77 104 64 87 74 75 91 524 356 447 160 318 179 250 126 250 126 222 335 298
+138 163 119 142 136 144 226 742 609 538 385 553 369 453 339 455 339 478 599 569
+178 194 157 174 180 200 424 801 768 476 565 682 497 572 492 573 494 669 757 750
+251 260 226 237 262 308 812 1021 1151 418 915 968 747 820 782 821 787 1058 1106 1135
+187 189 174 173 206 341 668 571 760 235 682 638 537 556 586 557 589 761 739 783
+219 216 211 198 257 597 949 538 897 244 852 702 630 620 723 619 730 934 839 923
+202 193 207 178 269 816 1074 339 835 209 853 595 583 535 712 535 720 912 743 861
+118 109 142 101 244 500 562 145 345 114 430 267 293 248 365 248 370 445 335 401
+72 63 92 59 227 398 392 76 147 65 260 128 156 129 210 128 221 259 158 209
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+5 7 4 5 5 5 5 27 15 26 6 14 7 10 6 9 6 7 14 12
+28 29 25 27 28 29 30 32 31 32 53 54 53 54 53 54 53 54 55 54
+17 17 15 15 17 17 17 17 17 17 31 31 31 31 31 31 31 31 31 31
+53 54 48 50 54 56 58 60 59 58 103 104 102 103 102 103 102 104 104 104
+55 55 50 51 56 58 60 60 60 59 106 106 105 105 105 105 105 107 107 107
+59 59 54 54 61 63 66 64 65 62 114 114 113 113 113 113 113 115 115 115
+57 56 52 52 60 62 64 61 63 59 111 109 109 109 110 109 110 111 111 111
+48 47 45 44 52 54 55 51 54 49 94 92 92 92 93 92 93 95 93 94
+84 79 97 73 167 338 380 102 236 83 286 178 195 165 243 165 246 296 223 267
+86 72 123 68 381 715 706 92 218 74 401 149 197 149 301 149 324 398 203 300
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2
+42 54 35 44 41 42 50 239 166 204 72 140 79 110 58 110 58 99 148 132
+96 110 83 96 95 100 162 553 454 395 259 384 245 309 223 310 223 329 420 397
+125 135 110 121 128 141 342 681 653 383 425 527 363 429 359 430 360 518 596 589
+243 252 220 229 254 300 849 1072 1215 414 926 982 744 821 782 823 788 1080 1131 1163
+281 283 260 259 305 536 1168 985 1341 338 1127 1045 855 892 947 893 954 1274 1233 1314
+266 262 256 241 310 805 1323 723 1251 295 1133 916 809 795 946 795 956 1252 1115 1238
+179 172 183 158 239 715 945 304 737 186 742 517 505 464 617 464 625 794 647 749
+126 116 154 108 273 587 665 157 404 122 488 291 321 266 409 266 414 506 373 454
+51 47 57 43 114 184 182 53 85 48 140 87 98 87 120 87 124 140 100 120
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+2 2 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
+45 57 38 47 44 45 54 243 170 208 77 145 84 115 64 114 64 104 153 137
+85 98 73 84 85 89 142 451 373 324 216 316 205 255 188 256 188 272 345 327
+196 213 174 192 199 221 536 1053 1013 594 682 839 585 687 579 689 581 826 945 936
+100 105 90 95 106 131 251 301 334 160 284 297 241 259 250 260 252 320 333 340
+142 143 132 131 156 260 514 438 584 178 504 470 392 407 430 407 432 565 548 582
+155 153 150 140 184 431 688 391 652 174 601 492 439 432 507 432 512 661 592 654
+95 92 95 84 127 261 330 145 266 99 289 221 218 206 251 206 254 305 260 292
+76 72 83 66 133 245 274 91 180 75 222 151 162 143 193 143 195 229 181 210
+58 52 73 48 195 352 349 62 124 53 215 100 120 100 168 100 179 214 124 169
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+47 59 39 48 45 46 56 252 177 214 80 151 87 119 67 118 67 109 160 143
+110 127 95 110 109 115 194 673 554 475 308 461 290 368 263 369 264 395 506 478
+98 105 86 94 99 110 222 400 387 241 275 330 241 276 239 277 240 325 367 364
+133 138 120 125 139 170 409 506 571 221 445 469 363 398 380 398 383 513 536 551
+143 144 132 132 157 263 521 444 592 179 507 473 394 409 432 409 435 570 552 587
+195 192 188 176 229 567 923 515 874 218 788 639 565 556 658 556 665 870 776 860
+170 163 172 150 226 706 940 295 734 176 717 491 478 437 591 437 599 770 623 726
+157 142 210 133 416 1018 1171 201 678 151 759 388 443 338 609 338 621 795 547 698
+97 78 145 74 495 962 957 106 281 80 507 171 224 172 365 171 400 505 237 370
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 1 0 0 0 0 0 16 8 16 0 5 0 3 0 1 0 1 5 4
+88 116 75 99 86 87 103 843 566 699 187 452 213 333 136 329 136 298 484 423
+167 188 144 166 165 174 300 1126 925 785 498 759 465 600 420 603 421 648 837 790
+214 233 190 209 218 242 628 1253 1208 689 777 966 657 781 650 784 654 952 1095 1085
+257 267 232 243 269 319 938 1181 1344 441 993 1053 788 874 831 876 838 1164 1220 1257
+275 277 255 254 300 537 1187 998 1364 333 1114 1030 836 873 930 874 937 1266 1223 1307
+261 257 251 236 305 811 1346 735 1276 291 1123 902 791 778 931 777 941 1246 1106 1232
+221 210 227 194 295 1029 1385 404 1077 230 1024 683 662 599 834 600 845 1105 883 1038
+159 143 211 134 418 1021 1176 206 686 153 763 391 445 341 612 341 624 799 551 702
+91 74 134 70 446 865 863 100 261 76 461 163 207 163 333 163 365 460 221 339
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 1 0 0 0 0 0 9 5 9 0 3 0 2 0 1 0 0 3 2
+80 107 67 89 77 79 98 657 449 545 165 366 184 275 130 271 130 250 391 345
+118 138 102 121 117 124 204 620 517 443 319 454 302 371 279 372 280 396 495 471
+149 163 131 146 151 170 370 682 661 398 467 563 406 469 403 470 405 557 630 625
+159 166 144 151 167 207 468 572 644 263 521 547 431 468 450 469 453 597 621 638
+169 171 157 156 187 306 586 502 664 214 584 546 460 476 501 477 505 653 634 672
+149 147 144 135 178 388 610 357 579 168 540 447 400 395 458 395 463 592 533 586
+120 116 121 107 159 315 399 182 325 125 363 283 278 264 318 264 320 382 330 367
+130 120 161 111 296 673 772 166 467 126 536 302 336 273 440 273 447 558 402 498
+49 44 58 40 142 253 253 52 99 45 162 84 96 84 129 84 136 162 100 131
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+9 9 8 9 9 9 9 9 9 9 17 17 17 17 17 17 17 17 17 17
+32 33 29 30 32 33 34 34 34 34 60 61 60 61 60 61 60 61 61 61
+49 50 44 46 50 51 54 55 55 54 95 96 94 95 94 95 94 96 96 96
+56 57 51 52 58 60 62 62 63 60 109 109 108 108 108 108 108 110 110 111
+60 60 55 56 63 66 69 67 69 64 118 118 116 116 117 116 117 119 119 120
+68 67 63 62 73 79 84 78 82 72 138 135 134 134 136 133 136 140 138 140
+42 41 38 38 44 46 47 44 45 42 80 79 79 78 79 78 79 81 80 80
+42 41 40 38 47 52 54 45 49 42 85 80 81 80 83 80 83 85 82 84
+17 16 16 15 19 20 20 17 18 17 33 31 32 31 32 31 32 33 32 32
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+19 20 17 18 19 19 20 20 20 21 36 36 36 36 36 36 36 36 36 36
+49 51 43 46 49 50 53 59 57 57 94 97 94 95 93 95 93 96 98 97
+69 73 60 64 70 77 147 251 244 154 165 197 144 165 144 165 144 195 220 218
+92 96 82 86 97 121 237 283 316 147 256 268 215 232 224 232 225 291 302 310
+84 85 77 77 93 146 260 225 292 108 245 230 194 201 211 201 213 274 266 282
+91 90 87 83 102 120 135 117 132 99 202 194 189 189 195 189 195 207 202 206
+51 50 48 46 55 59 62 56 59 52 102 99 99 98 100 98 100 102 100 102
+59 56 63 51 105 203 230 72 150 59 171 111 119 104 146 104 148 177 136 162
+31 29 31 27 39 47 47 32 38 30 63 57 58 57 61 56 61 63 59 61
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+44 55 37 45 43 44 53 294 206 244 74 160 80 119 61 117 61 110 171 151
+148 172 128 150 146 156 300 1126 930 768 457 719 420 556 376 558 377 610 800 754
+204 221 180 199 207 232 620 1222 1185 661 732 914 612 733 607 735 611 905 1042 1034
+169 175 152 159 177 215 570 706 803 285 592 625 473 522 498 523 502 692 723 745
+181 183 168 167 198 345 720 610 825 225 670 621 507 529 562 530 567 760 735 784
+222 219 214 201 262 677 1123 624 1069 249 922 740 647 636 762 636 770 1025 910 1014
+170 163 174 150 229 700 940 309 742 178 704 483 467 426 579 427 586 759 614 717
+81 77 91 70 158 330 377 102 240 80 275 169 183 157 230 156 234 286 215 258
+40 38 40 35 56 73 73 42 53 39 85 72 75 72 80 71 81 85 76 81
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+15 18 12 15 14 15 18 99 70 82 23 52 26 39 19 38 19 36 56 50
+51 57 43 49 51 54 82 212 180 154 103 145 97 118 91 119 91 127 158 151
+86 93 75 83 87 99 179 295 288 186 216 252 192 216 191 216 192 250 279 277
+189 197 171 178 198 241 663 823 938 322 681 721 540 598 571 600 575 799 836 862
+152 153 140 140 166 292 612 518 701 190 564 522 425 444 472 444 475 640 619 661
+132 130 126 119 156 355 569 330 543 148 481 393 348 343 403 343 407 531 475 525
+89 86 89 79 118 248 318 140 259 93 269 204 199 188 232 188 234 285 242 273
+82 77 95 71 175 401 463 102 285 81 309 173 190 156 252 156 257 324 232 289
+58 50 75 46 245 479 484 64 159 51 254 101 117 101 183 101 201 255 128 192
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+74 94 64 80 73 74 88 792 540 642 143 392 160 274 110 262 109 252 425 370
+153 172 133 152 152 160 300 1102 915 749 449 701 411 543 369 546 370 598 781 738
+199 216 176 194 203 227 628 1238 1204 661 722 906 597 720 593 723 597 898 1037 1029
+240 249 217 226 251 302 939 1177 1348 419 937 994 726 812 772 815 778 1111 1165 1204
+259 261 240 239 283 525 1191 1000 1375 318 1062 977 777 815 873 817 881 1217 1174 1259
+244 240 236 221 288 794 1343 736 1281 275 1068 846 731 719 871 719 882 1194 1054 1181
+205 195 211 180 277 1006 1377 407 1081 215 967 631 604 542 776 543 787 1052 832 988
+148 133 193 124 403 1057 1239 197 731 142 748 352 403 302 580 302 596 789 528 689
+81 64 117 61 424 858 869 92 267 66 428 148 174 148 293 147 329 430 194 313
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+58 72 49 61 57 58 69 510 353 415 106 262 116 187 87 179 87 174 283 248
+54 61 47 52 55 57 88 221 189 160 110 153 104 126 97 126 97 135 167 160
+81 88 71 77 82 93 171 282 276 176 201 235 177 200 177 200 177 234 261 259
+86 89 77 80 90 113 227 270 303 137 236 247 196 212 204 212 206 269 280 287
+232 234 215 214 254 461 1017 857 1171 287 914 842 675 707 755 708 762 1044 1008 1080
+203 200 196 183 240 619 1030 577 984 229 831 665 579 570 683 570 691 926 822 917
+183 174 191 160 253 754 1017 347 808 193 765 527 508 465 628 465 636 825 670 780
+119 109 141 101 256 578 670 156 420 116 465 268 292 244 380 244 388 486 354 435
+42 38 49 35 124 226 229 46 92 39 141 74 82 74 110 74 117 142 87 115
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+54 67 46 57 53 54 65 617 422 496 95 289 107 195 73 184 73 181 316 273
+105 117 91 103 104 110 214 787 654 530 301 480 273 367 244 369 244 408 538 508
+150 162 132 145 153 170 465 907 884 484 518 651 427 516 425 518 427 647 748 742
+221 229 199 208 231 280 870 1089 1249 387 854 907 658 738 701 740 707 1015 1065 1101
+219 220 203 202 239 445 1005 845 1161 271 883 812 644 676 725 677 731 1015 978 1050
+194 191 187 175 229 610 1028 571 982 219 812 645 557 549 663 549 671 908 803 899
+153 147 155 135 204 678 925 294 733 160 655 435 417 377 529 377 536 712 568 670
+136 123 175 115 366 973 1146 182 682 132 681 317 362 272 525 273 541 721 480 629
+70 64 83 60 304 615 626 75 192 66 303 117 126 117 205 116 233 305 141 223
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+59 73 51 62 58 59 70 686 470 550 104 320 117 214 83 201 82 201 350 303
+137 154 119 136 136 144 286 1066 887 714 405 648 365 494 325 496 327 551 728 687
+193 209 171 188 196 221 629 1237 1207 651 698 881 571 694 568 697 572 876 1014 1007
+232 241 210 219 244 294 940 1177 1352 410 911 968 698 785 744 787 751 1087 1141 1181
+248 250 230 229 271 514 1188 997 1375 306 1029 944 742 781 839 783 847 1187 1143 1229
+235 232 227 213 278 786 1344 736 1286 266 1040 818 700 689 841 689 852 1168 1029 1156
+177 170 181 156 237 891 1233 366 973 186 838 537 511 455 665 456 675 915 719 859
+141 127 182 118 387 1046 1236 191 737 136 725 331 377 282 554 283 572 768 508 669
+92 85 104 79 362 725 739 96 232 87 364 152 158 151 248 151 282 366 176 271
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+64 79 55 67 63 65 77 741 510 592 114 346 126 231 93 215 93 218 379 328
+141 158 123 140 140 148 293 1067 891 715 410 652 370 497 330 500 331 555 731 691
+188 204 167 183 191 216 621 1219 1190 639 680 860 554 675 552 678 556 855 992 985
+227 236 206 215 239 289 932 1166 1341 403 894 951 682 768 728 770 735 1069 1122 1162
+242 244 225 223 265 506 1174 986 1361 300 1008 924 724 763 820 764 828 1164 1122 1207
+186 184 178 168 219 626 1077 589 1032 209 817 640 545 536 658 536 666 920 809 911
+150 144 152 132 201 666 914 295 727 158 640 424 405 365 515 366 522 697 555 656
+82 77 91 71 157 337 391 105 253 81 278 169 181 157 230 157 235 290 217 262
+29 27 32 24 72 128 131 32 58 28 84 48 52 48 67 48 71 84 55 70
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+14 14 12 13 14 14 14 15 14 15 26 26 26 26 26 26 26 26 26 26
+34 35 31 32 34 35 37 38 38 38 65 66 65 66 65 65 65 66 67 66
+63 65 56 60 64 67 74 79 79 74 125 128 124 125 123 125 124 128 130 130
+76 78 70 72 79 86 97 99 102 89 159 160 154 156 155 156 155 163 164 165
+87 87 81 81 93 106 122 116 125 99 188 186 179 180 182 180 183 194 192 195
+73 72 68 66 79 89 98 88 96 78 153 148 146 146 149 145 149 156 153 155
+67 65 64 60 76 90 97 79 90 69 143 135 134 132 138 132 138 145 140 144
+43 41 42 38 50 58 61 48 54 43 90 83 84 83 87 83 87 90 86 89
+16 15 16 14 19 21 21 17 18 16 32 30 31 30 31 30 32 32 31 32
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+29 35 24 28 29 29 36 187 134 152 43 95 45 69 38 65 38 66 103 91
+41 46 35 39 41 43 70 183 156 129 82 118 76 95 71 95 71 104 130 124
+61 64 53 56 62 69 137 233 229 139 141 170 121 140 121 140 121 170 192 191
+102 105 91 95 106 131 310 376 426 166 307 323 247 271 260 271 262 358 373 385
+182 184 169 168 200 364 806 681 930 228 699 643 510 535 573 536 578 803 774 831
+142 140 136 128 168 409 677 390 650 161 542 436 379 374 446 374 451 604 537 598
+95 92 94 85 126 319 427 167 346 100 324 232 223 207 270 207 273 349 288 332
+65 61 71 56 140 352 415 82 258 65 246 123 136 109 192 109 198 261 179 230
+24 22 26 20 62 112 114 26 50 23 69 38 41 38 54 38 57 69 44 57
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+58 70 50 60 57 58 69 715 494 566 96 319 106 205 82 185 82 197 352 303
+136 152 118 134 135 143 293 1061 888 703 390 629 348 475 309 477 311 536 710 670
+183 199 162 178 186 211 625 1224 1198 634 662 841 533 654 531 657 535 839 975 969
+221 230 200 209 233 283 934 1170 1347 397 873 929 658 745 705 747 712 1050 1103 1143
+236 239 219 218 260 502 1183 994 1374 295 991 906 702 742 800 744 808 1150 1107 1194
+222 219 215 201 264 766 1328 731 1277 253 995 777 656 646 796 646 806 1124 987 1113
+185 177 191 163 252 967 1353 410 1076 196 894 566 534 472 702 474 714 982 768 922
+130 117 164 109 356 1007 1203 180 728 126 678 295 336 251 508 252 527 722 470 628
+82 76 89 70 323 666 686 86 225 78 321 135 139 135 212 135 244 325 152 241
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+53 64 46 54 53 54 64 682 472 538 85 297 93 187 73 167 73 181 329 283
+141 157 122 139 140 148 299 1055 886 700 395 631 353 478 315 480 317 539 711 672
+184 200 163 180 187 213 597 1145 1122 602 639 803 519 631 518 634 522 802 927 922
+202 210 183 191 212 259 848 1061 1221 363 786 837 592 670 635 672 641 946 994 1031
+217 220 202 201 239 443 999 846 1157 273 856 786 618 651 698 652 705 987 952 1023
+205 202 199 186 245 658 1121 632 1079 235 861 681 581 573 696 574 705 967 855 959
+136 130 137 120 182 580 799 272 642 143 560 375 357 323 451 324 458 610 489 577
+83 78 92 72 158 343 400 109 263 82 283 173 184 161 234 161 239 296 222 269
+37 32 44 30 134 267 275 42 105 33 143 65 71 65 102 65 112 144 77 112
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+17 20 14 16 17 17 21 100 73 81 24 52 26 37 23 35 23 36 56 50
+36 37 32 34 36 37 39 41 40 40 68 69 68 68 67 68 67 69 70 70
+68 72 59 63 69 77 151 253 248 151 160 191 139 159 138 159 139 191 215 214
+87 91 78 81 92 115 233 276 310 139 237 248 196 212 205 212 206 271 282 290
+84 85 78 78 90 103 118 113 122 96 183 180 173 175 176 175 177 188 186 189
+81 80 77 74 90 107 122 105 119 89 179 172 167 167 172 167 172 184 179 183
+69 67 67 62 80 97 107 84 98 72 151 141 140 138 145 138 145 154 147 152
+48 46 48 43 59 71 76 54 65 48 103 94 95 93 99 93 99 104 98 102
+22 21 22 19 29 35 36 23 28 22 46 40 42 40 44 40 44 46 42 44
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+6 6 5 6 6 6 6 6 6 6 11 11 11 11 11 11 11 11 11 11
+35 36 31 33 35 36 38 40 40 40 67 68 67 67 66 67 66 68 69 69
+54 56 48 51 55 57 62 65 65 62 106 108 105 106 105 106 105 108 110 110
+77 79 70 73 80 88 100 103 107 91 162 163 156 158 157 158 158 166 168 169
+82 83 76 76 88 100 115 109 118 94 178 175 169 170 172 170 172 182 181 184
+79 78 75 72 88 103 117 101 114 86 173 166 162 162 166 162 167 177 173 177
+67 65 65 60 77 93 102 81 94 70 146 136 135 133 140 133 140 148 142 147
+40 38 38 35 46 53 55 43 49 40 81 76 76 75 79 75 79 82 78 81
+21 20 21 18 26 32 33 22 26 20 43 38 39 38 41 38 41 43 39 41
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+7 7 6 7 7 7 7 7 7 7 13 13 13 13 13 13 13 13 13 13
+29 29 26 27 29 30 31 32 31 31 54 55 54 55 54 55 54 55 55 55
+33 33 30 31 34 34 35 35 35 35 63 63 62 62 62 62 62 63 63 63
+37 37 34 34 38 39 40 39 40 39 71 71 70 70 70 70 70 71 71 71
+34 34 31 32 35 36 36 36 36 36 65 65 64 64 64 64 64 65 65 65
+20 20 18 18 20 20 20 20 20 20 37 37 37 37 37 37 37 37 37 37
+31 30 29 28 33 34 34 32 33 32 59 58 58 58 59 58 59 59 59 59
+17 17 16 15 18 18 18 18 18 17 32 32 32 32 32 32 32 32 32 32
+8 8 8 7 9 9 9 8 9 8 16 15 15 15 15 15 15 16 15 15
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+12 13 11 12 12 12 13 13 13 13 23 23 23 23 23 23 23 23 23 23
+35 37 31 34 36 37 39 41 41 40 68 69 68 68 67 68 67 69 70 70
+34 34 31 32 35 35 36 37 37 36 64 65 64 64 64 64 64 65 65 65
+29 29 26 26 29 30 30 30 30 30 54 54 54 54 54 54 54 54 54 54
+53 53 49 49 55 58 61 60 61 57 104 104 102 103 103 103 103 106 105 106
+37 36 33 33 38 39 40 39 39 38 70 69 69 69 69 69 69 70 70 70
+18 18 17 17 19 19 19 19 19 19 34 34 34 34 34 34 34 34 34 34
+14 14 13 13 15 15 15 15 15 15 27 27 27 27 27 27 27 27 27 27
+7 7 6 6 7 8 8 7 7 7 13 13 13 13 13 13 13 13 13 13
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+11 11 10 10 11 11 11 11 11 11 20 20 20 20 20 20 20 20 20 20
+33 34 29 31 33 34 35 37 37 37 62 63 62 63 62 62 62 63 64 64
+63 66 57 61 64 69 77 85 85 77 129 133 126 129 126 129 127 133 135 135
+56 57 51 53 58 61 66 66 68 63 112 112 110 111 110 111 110 113 114 114
+74 75 69 69 79 88 99 95 101 83 156 155 150 151 152 151 152 160 159 161
+72 71 68 66 79 91 102 90 100 78 154 149 146 146 149 146 149 158 154 157
+71 69 69 64 84 105 118 89 107 74 159 147 145 143 151 143 152 163 154 160
+53 51 52 47 66 86 93 61 78 53 116 103 104 101 110 101 111 118 109 115
+26 25 25 23 36 48 49 27 35 26 54 45 47 45 51 45 51 54 48 51
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+33 38 28 31 33 33 40 390 274 304 43 158 46 93 41 79 41 94 177 151
+122 135 106 119 121 128 283 1012 853 658 336 562 292 413 257 415 258 477 642 606
+169 184 149 164 172 196 613 1196 1176 606 603 777 473 592 473 595 477 778 911 906
+207 216 187 196 218 269 923 1159 1336 383 815 871 600 686 647 688 654 993 1046 1086
+221 223 205 204 243 480 1166 987 1365 280 930 848 642 683 738 685 746 1090 1049 1135
+208 205 202 188 249 742 1314 733 1275 240 939 726 601 593 739 594 749 1070 937 1063
+171 163 177 150 234 930 1327 422 1070 183 835 518 479 420 644 422 655 926 719 870
+115 104 139 96 311 945 1150 165 717 113 611 250 280 217 442 217 464 656 419 569
+70 65 70 60 262 565 590 73 217 67 260 116 117 116 163 115 192 265 121 199
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+31 37 27 30 31 32 39 328 233 256 43 137 45 83 41 71 41 84 153 132
+84 95 72 82 84 89 183 595 504 392 213 341 188 256 168 257 169 293 387 366
+113 122 100 109 115 131 299 528 520 296 323 393 272 319 272 320 274 394 447 445
+107 111 96 100 112 139 275 326 365 168 290 303 243 262 253 262 255 330 342 352
+150 152 140 139 167 283 572 495 658 196 512 476 386 404 428 405 431 582 565 603
+149 147 144 135 179 429 716 425 696 172 561 453 390 386 459 386 464 628 560 624
+120 116 122 106 162 437 601 238 494 128 439 309 293 271 360 271 365 477 392 454
+67 64 68 59 107 212 247 84 173 67 189 129 134 123 161 123 164 197 156 182
+20 19 21 17 69 144 151 23 62 19 70 32 34 32 47 32 53 72 36 56
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+12 14 10 11 12 12 14 78 57 62 16 37 16 25 15 23 15 25 40 36
+44 49 38 42 45 47 77 190 164 133 84 120 77 95 72 96 72 106 133 127
+39 40 33 35 40 44 99 175 172 98 92 114 75 90 75 91 76 115 132 132
+50 51 45 47 52 54 57 57 58 55 98 98 97 97 97 97 97 99 100 100
+56 56 52 52 59 63 67 65 68 61 112 112 110 110 111 110 111 114 114 114
+44 44 41 41 47 49 51 49 51 47 87 86 85 85 86 85 86 88 87 88
+33 32 30 30 35 36 37 35 36 34 63 62 62 62 63 62 63 64 63 63
+23 22 22 21 25 26 27 24 25 23 45 43 43 43 44 43 44 45 44 44
+9 8 8 8 9 10 10 9 9 8 17 16 16 16 16 16 16 17 16 16
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+20 23 17 19 20 20 25 248 175 192 25 96 26 54 24 44 24 56 109 93
+67 74 58 65 67 71 147 476 404 312 160 262 140 194 125 195 125 224 299 283
+71 76 62 67 72 82 158 260 257 156 168 199 145 166 145 166 146 200 224 223
+113 116 101 105 118 145 441 549 630 199 382 408 285 324 306 325 309 464 488 507
+146 148 135 135 160 297 685 586 800 186 550 504 387 410 441 411 445 641 619 667
+86 85 81 77 100 193 300 193 292 98 251 211 188 186 213 186 215 276 251 275
+74 72 72 66 95 210 281 128 235 78 217 162 155 146 183 146 185 233 197 224
+41 40 41 36 71 159 189 53 129 42 121 71 75 67 97 67 100 127 94 115
+19 18 20 16 48 92 96 21 46 18 56 32 34 32 43 32 46 57 36 48
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+9 9 8 9 9 9 9 9 9 10 17 17 17 17 17 17 17 17 17 17
+29 30 26 27 29 30 31 33 33 32 55 56 55 56 55 56 55 56 57 56
+34 34 30 32 34 35 37 37 37 36 64 65 64 64 64 64 64 65 65 65
+72 74 65 68 75 82 94 98 101 85 151 152 146 148 147 148 147 155 157 158
+67 68 62 62 71 78 87 84 89 75 139 138 134 135 136 135 136 142 142 143
+74 73 70 67 82 97 111 96 108 81 162 155 151 151 156 151 156 166 162 166
+40 39 37 36 43 46 48 43 46 41 79 76 76 76 77 76 77 79 78 79
+23 22 21 20 24 26 26 24 25 23 44 42 42 42 43 42 43 44 43 43
+16 15 15 14 20 24 25 17 20 15 32 28 29 28 31 28 31 32 30 31
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+34 39 30 32 35 35 41 558 392 427 44 203 44 105 42 79 42 111 232 195
+110 122 96 107 110 116 271 981 828 629 297 516 252 370 219 372 220 435 595 560
+107 115 95 102 109 123 352 667 657 345 334 427 263 327 263 328 266 429 500 498
+94 97 84 87 98 122 248 295 331 148 250 262 207 224 216 224 218 287 298 307
+121 122 112 112 133 219 435 379 500 156 386 360 293 306 323 307 326 439 426 454
+117 115 111 105 138 293 474 295 463 134 386 319 279 277 321 277 325 428 386 426
+99 95 98 88 130 329 452 191 375 105 334 240 227 211 275 212 279 362 300 346
+73 69 79 63 145 372 451 99 300 73 275 148 157 139 214 138 221 293 208 262
+38 30 49 28 174 385 407 48 172 31 183 77 84 75 117 75 135 189 89 145
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+15 17 13 13 16 16 18 228 161 175 17 80 17 40 16 30 16 43 92 77
+33 36 28 31 34 35 61 161 138 110 63 94 57 73 53 73 53 83 106 101
+56 58 48 51 57 63 131 222 219 129 124 152 104 123 105 123 105 152 174 173
+50 51 44 45 52 63 154 188 214 81 128 136 98 110 105 110 105 154 161 167
+71 71 63 64 76 136 307 265 359 89 226 207 156 166 179 167 181 267 257 278
+33 33 30 30 38 97 168 98 164 37 109 84 68 68 84 68 86 125 109 124
+58 56 55 52 66 78 86 69 80 60 124 116 115 114 119 114 119 126 121 125
+40 39 40 35 68 154 185 51 127 41 117 69 72 65 93 65 96 123 91 112
+19 18 20 16 47 91 96 22 48 18 57 34 36 34 44 34 47 58 38 49
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+7 9 6 7 7 8 9 92 65 71 10 35 10 19 9 15 9 20 39 34
+62 69 53 60 62 66 134 423 360 278 141 231 123 171 110 171 110 198 264 249
+93 99 82 88 95 105 346 681 670 337 306 404 231 299 231 300 234 406 481 479
+73 74 64 66 76 92 303 381 438 131 235 254 167 195 182 195 184 293 310 323
+71 71 64 64 77 123 239 209 274 90 196 183 148 155 163 155 165 225 218 233
+69 68 63 61 80 160 254 162 249 78 196 162 141 140 163 140 164 218 197 217
+57 55 55 51 65 77 85 68 79 59 122 115 114 112 117 112 117 124 119 123
+38 36 37 33 44 53 57 42 50 38 79 73 73 72 76 72 76 80 76 78
+15 14 14 13 19 23 24 16 19 14 30 27 27 26 29 26 29 30 28 29
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+5 5 5 5 5 6 6 5 5 6 10 10 10 10 10 10 10 10 10 10
+31 32 27 29 31 32 34 36 36 35 59 60 59 60 59 59 59 60 61 61
+65 69 56 61 66 75 147 243 240 145 150 179 128 148 128 148 129 179 202 202
+78 81 70 73 82 102 215 258 290 126 205 216 167 182 175 182 176 238 248 256
+84 85 77 77 92 143 267 236 305 107 236 221 183 190 200 191 201 267 260 276
+160 158 153 145 190 543 970 559 953 185 675 523 428 425 527 425 535 773 679 770
+114 110 114 101 152 520 747 273 616 122 473 304 279 250 368 251 374 525 415 496
+75 70 82 65 184 615 764 104 494 75 375 141 156 130 259 130 276 407 254 352
+20 19 20 17 88 205 219 22 91 19 85 33 35 33 48 33 59 88 36 66
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+6 6 5 6 6 6 6 6 6 6 11 11 11 11 11 11 11 11 11 11
+15 15 13 14 15 15 16 15 15 16 28 28 28 28 28 28 28 28 28 28
+19 19 17 18 20 20 20 20 20 20 36 36 36 36 36 36 36 36 36 36
+33 33 29 30 33 34 35 35 35 34 62 62 61 61 61 61 61 62 62 62
+30 29 27 27 30 31 31 31 31 31 56 56 55 56 56 56 56 56 56 56
+61 60 55 54 70 145 235 148 230 68 171 139 119 119 139 119 141 192 172 191
+33 32 30 29 41 120 169 67 140 35 102 66 61 55 79 55 80 113 89 107
+17 17 16 15 34 99 122 22 81 18 59 24 26 23 42 23 44 64 41 56
+13 12 13 11 16 20 21 14 17 13 27 24 24 24 26 24 26 27 25 26
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+2 2 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
+29 30 26 27 29 30 32 34 33 33 55 56 55 56 55 56 55 56 57 57
+52 54 47 49 53 56 62 67 67 62 104 106 102 104 102 104 102 106 108 108
+51 52 47 48 53 56 60 61 62 57 102 102 100 101 100 101 100 104 104 104
+65 65 60 60 69 76 85 82 86 72 134 133 129 130 131 130 131 137 137 138
+36 36 33 33 37 39 40 38 39 37 69 68 68 68 68 68 68 69 69 69
+51 50 49 46 58 67 73 61 68 54 108 103 102 101 105 101 105 110 106 109
+36 35 35 32 43 51 54 41 48 36 76 70 70 69 73 69 73 77 73 75
+13 12 14 11 35 71 75 15 37 13 39 22 23 22 29 22 31 40 24 34
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+5 5 5 5 5 6 6 5 6 6 10 10 10 10 10 10 10 10 10 10
+28 29 25 27 29 29 31 33 32 32 54 55 54 55 54 55 54 55 56 56
+49 50 44 46 49 52 57 61 61 57 96 98 95 96 95 96 95 98 100 100
+20 20 18 19 21 21 21 21 21 21 38 38 38 38 38 38 38 38 38 38
+57 58 53 53 60 65 71 69 72 63 116 116 113 113 114 113 114 119 118 119
+45 44 41 41 47 50 53 50 52 47 88 87 86 86 87 86 87 89 88 89
+27 27 25 25 29 30 30 29 30 28 52 51 51 51 52 51 52 52 52 52
+18 17 17 16 19 20 20 19 20 18 34 34 34 34 34 34 34 35 34 34
+6 6 6 6 7 8 8 7 7 6 13 12 12 12 12 12 12 13 12 13
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+3 3 2 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5
+18 18 16 17 18 19 19 19 19 19 34 34 34 34 34 34 34 34 34 34
+30 31 27 28 31 32 33 33 33 33 58 58 57 58 57 57 57 58 58 58
+39 39 34 35 40 49 129 160 181 65 102 109 76 87 82 87 82 124 131 136
+45 45 39 40 48 80 170 149 198 56 124 114 87 93 99 93 100 146 141 152
+159 157 152 144 189 546 990 576 978 185 675 522 422 420 523 420 531 777 682 775
+130 125 131 115 174 704 1039 360 859 140 611 371 331 290 459 292 467 687 531 647
+92 84 105 77 235 824 1036 138 679 92 501 185 203 173 342 173 364 547 339 473
+39 35 38 33 164 395 424 42 182 37 160 67 69 67 88 67 109 167 70 125
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+3 3 2 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5
+18 18 16 16 18 18 18 19 18 19 33 33 33 33 33 33 33 33 33 33
+30 31 27 28 31 32 33 33 33 33 58 58 57 58 57 57 57 58 58 58
+122 127 110 115 128 162 414 512 580 214 381 405 296 331 314 331 317 453 475 491
+158 160 146 146 174 334 832 722 986 205 625 572 421 452 487 454 493 741 716 776
+133 132 126 120 155 475 878 506 869 153 574 437 346 345 437 345 444 665 581 664
+127 122 129 112 172 641 941 340 781 138 569 356 320 284 433 285 441 638 499 603
+71 66 75 61 133 354 435 99 299 71 262 142 149 136 201 136 209 280 200 251
+25 22 28 20 72 150 160 31 81 23 89 50 53 49 66 49 71 91 57 76
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+13 15 11 13 13 14 17 167 120 128 18 60 18 30 17 24 17 33 68 58
+60 66 52 58 61 64 153 544 460 346 143 263 115 182 99 183 100 220 307 289
+113 122 100 109 116 131 414 806 794 405 363 479 276 355 276 357 279 481 570 567
+147 152 132 138 154 190 693 886 1017 289 552 598 388 456 424 457 429 690 733 763
+164 166 152 151 180 353 903 784 1074 213 666 609 442 477 515 478 522 794 767 833
+141 139 134 128 165 489 897 523 890 163 597 459 366 365 458 365 465 690 605 689
+119 114 120 105 159 564 826 306 688 128 507 322 291 260 389 261 395 567 446 537
+76 70 83 65 162 489 610 112 411 76 329 153 162 145 239 145 251 355 238 314
+26 20 32 19 114 266 287 34 131 22 122 52 57 51 76 51 87 127 61 99
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2
+12 12 11 11 12 13 13 13 13 13 23 23 23 23 23 23 23 23 23 23
+22 22 20 20 22 22 23 23 23 23 41 41 41 41 41 41 41 41 41 41
+15 15 13 13 15 15 15 15 14 15 27 27 27 27 27 27 27 27 27 27
+44 44 40 41 46 48 51 50 51 47 87 86 85 85 86 85 86 88 87 88
+39 38 35 35 40 43 44 42 44 40 75 74 74 74 74 73 74 76 75 76
+21 20 19 19 22 22 22 21 22 21 39 39 39 39 39 39 39 39 39 39
+15 15 14 13 16 16 16 15 16 15 28 28 28 28 28 28 28 28 28 28
+3 3 2 2 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+4 5 4 4 4 5 6 25 18 19 7 12 7 8 6 8 6 9 13 12
+30 32 25 28 30 32 66 212 180 138 58 102 47 72 42 72 42 86 119 112
+87 93 76 83 89 100 269 501 494 264 243 312 192 239 192 240 194 314 367 365
+154 160 138 145 161 201 735 943 1083 308 582 632 408 480 445 482 451 729 775 808
+153 155 141 141 167 333 881 768 1054 197 631 576 410 445 482 447 489 759 733 798
+111 110 104 100 129 368 674 397 670 128 444 342 272 272 340 272 345 513 450 513
+70 68 66 62 88 296 434 165 363 74 256 162 145 130 195 131 199 287 226 272
+56 53 57 49 120 421 533 78 356 57 252 95 103 91 171 91 182 276 172 240
+13 13 14 12 83 219 238 15 101 13 78 25 26 25 37 25 48 82 27 59
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+6 7 5 6 6 6 8 33 25 26 9 16 9 12 9 11 9 12 18 16
+35 38 30 32 35 37 63 160 139 110 62 92 55 71 51 71 51 81 103 99
+59 62 52 55 60 67 138 234 231 136 134 163 113 132 113 132 114 163 185 185
+92 95 82 86 96 118 244 294 329 147 241 253 198 216 207 216 209 278 290 298
+100 101 92 92 109 165 306 275 352 128 280 265 221 230 239 230 241 315 308 326
+79 78 74 71 91 176 282 186 279 90 226 190 166 166 189 166 191 251 229 251
+80 78 77 71 99 214 293 142 251 85 228 174 165 157 193 157 195 247 211 238
+80 74 88 68 183 632 801 124 539 81 394 159 169 151 273 151 289 431 274 377
+17 15 19 14 57 127 138 21 67 15 63 31 34 31 42 31 47 66 36 53
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+11 12 9 10 11 11 13 117 85 90 14 42 14 22 14 18 14 24 48 41
+67 73 58 64 67 71 176 640 541 404 159 301 124 205 107 205 108 250 354 332
+130 141 114 126 132 151 519 1032 1014 509 438 589 324 428 324 430 328 592 707 704
+172 180 156 163 182 227 870 1124 1290 359 677 739 468 555 513 557 519 854 911 949
+187 191 174 174 207 418 1122 982 1346 247 803 734 519 564 611 567 620 967 935 1017
+177 176 172 161 213 673 1268 740 1266 211 820 624 486 485 618 487 629 955 835 955
+123 119 123 109 162 730 1105 382 922 133 611 356 308 267 445 268 455 695 530 655
+98 93 99 86 194 702 891 129 604 99 430 170 180 166 294 166 314 471 299 411
+41 39 39 36 150 367 398 43 181 41 150 71 71 70 84 70 103 158 72 120
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+9 10 8 8 9 9 12 89 65 68 13 33 13 18 12 16 12 20 38 32
+51 55 44 48 51 53 132 480 406 303 114 220 87 148 75 148 75 181 259 242
+85 91 75 81 87 97 281 537 528 277 243 319 187 238 187 239 189 320 378 376
+91 94 82 85 95 118 297 370 418 158 263 281 204 229 217 229 218 315 331 342
+103 104 94 94 112 184 388 347 455 133 321 301 237 250 264 251 266 371 361 386
+100 99 93 90 114 212 335 225 333 113 285 244 216 216 242 216 245 314 288 314
+81 80 77 74 97 140 171 113 153 86 189 167 163 160 174 160 175 197 182 193
+60 57 59 53 89 189 229 78 168 61 167 114 116 110 139 110 142 176 139 163
+8 8 8 7 10 12 12 9 10 8 17 16 16 16 17 16 17 17 16 17
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+4 4 3 4 4 4 4 4 4 4 7 7 7 7 7 7 7 7 7 7
+10 10 9 9 10 10 10 10 10 10 18 18 18 18 18 18 18 18 18 18
+37 38 33 35 37 39 41 43 43 41 71 72 70 71 70 71 70 72 73 73
+40 40 36 37 41 43 45 45 46 43 77 78 76 77 77 77 77 78 78 79
+43 43 38 38 46 75 166 148 195 54 118 109 82 88 93 88 94 139 135 146
+34 34 31 31 36 37 38 37 38 36 66 65 65 65 65 65 65 66 66 66
+55 53 52 49 62 76 85 67 79 57 118 110 109 108 113 108 113 120 116 119
+78 72 85 66 173 606 773 126 526 79 379 155 163 148 262 148 277 416 266 364
+17 15 19 14 42 83 90 21 49 16 53 33 35 32 41 32 44 55 37 47
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+2 2 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4
+16 17 15 15 17 17 17 17 17 18 31 31 31 31 31 31 31 31 31 31
+38 39 34 35 38 40 42 44 44 42 73 74 72 73 72 73 72 74 75 75
+111 115 99 104 116 144 437 556 633 209 358 388 263 303 283 304 286 441 468 485
+68 68 63 63 72 82 95 91 98 78 145 143 137 139 140 139 140 149 148 150
+98 97 92 89 112 208 328 222 327 112 280 240 212 212 238 212 240 308 283 309
+76 75 74 68 97 262 376 163 320 82 254 178 164 152 204 153 207 280 230 268
+54 52 53 48 80 174 211 71 155 55 150 101 103 98 125 98 127 159 125 147
+14 13 15 12 50 117 128 17 62 13 54 26 27 25 34 25 39 57 29 45
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+4 5 4 4 4 5 6 20 16 16 7 11 7 8 6 8 6 8 12 11
+39 43 34 37 39 41 69 167 145 116 72 103 65 82 62 82 62 91 114 109
+70 75 62 66 71 80 154 255 251 153 162 192 140 160 140 160 141 193 216 216
+88 90 78 81 91 113 284 354 400 152 249 267 193 216 205 217 206 298 315 325
+107 108 98 98 116 172 319 290 368 137 295 281 234 244 253 245 255 332 326 344
+105 104 98 95 119 219 344 235 344 119 297 256 227 227 254 227 256 327 301 327
+66 64 63 59 82 182 253 122 218 70 187 140 131 124 155 124 157 203 172 196
+54 52 53 47 79 171 208 71 153 54 148 100 102 97 123 97 126 157 124 145
+26 24 27 22 106 268 294 30 136 25 108 48 49 47 59 47 73 114 50 86
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 1 1 1 1 1 1 25 17 18 1 7 1 2 1 2 1 3 8 7
+51 57 44 49 51 54 98 267 230 180 105 158 92 122 87 122 87 138 178 169
+62 66 54 58 63 71 141 236 233 140 140 169 120 139 120 139 120 169 192 191
+119 125 108 113 125 158 411 517 584 218 368 395 284 320 302 320 304 442 466 481
+139 140 128 128 150 219 397 363 457 177 383 366 309 321 332 321 334 428 420 442
+97 96 91 88 109 150 199 155 197 109 230 213 201 201 212 201 213 242 232 242
+85 84 80 77 100 148 184 119 165 89 196 172 168 165 180 165 181 205 189 201
+46 44 44 41 57 77 86 55 72 46 100 88 88 86 94 86 94 102 94 99
+16 17 15 16 18 22 22 16 19 17 39 37 37 37 38 37 38 39 37 38
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+36 38 32 35 36 38 42 50 48 46 71 74 70 72 70 72 70 73 76 75
+38 39 34 35 38 40 43 45 44 43 73 74 72 73 72 73 72 74 75 75
+55 56 50 52 57 61 68 70 72 64 112 113 109 110 109 110 109 114 115 116
+62 62 57 57 66 73 83 80 85 70 130 128 124 125 126 125 126 133 132 134
+61 60 57 55 66 77 86 77 85 66 129 125 122 122 125 122 125 132 130 132
+23 23 21 21 24 25 25 24 25 24 44 44 44 44 44 43 44 44 44 44
+25 25 24 23 29 32 33 28 31 26 51 49 49 48 50 48 50 52 50 51
+4 4 3 3 4 4 4 4 4 4 8 7 7 7 7 7 7 8 7 7
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+2 2 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4
+7 7 6 7 7 7 7 7 7 7 13 13 13 13 13 13 13 13 13 13
+57 61 51 55 58 63 74 86 85 74 119 123 115 119 115 119 116 123 127 127
+61 63 56 58 64 70 81 84 87 74 128 130 124 126 125 126 125 132 133 134
+57 57 52 53 60 66 73 71 74 63 117 116 112 113 114 113 114 119 119 120
+77 76 72 70 86 108 131 110 130 86 174 165 159 159 164 159 165 181 175 181
+62 60 59 55 72 92 107 80 98 65 138 127 124 123 130 123 131 142 134 140
+43 41 41 38 53 70 77 51 65 43 93 83 83 81 88 81 88 95 88 92
+12 12 12 11 16 22 23 13 17 12 25 22 22 22 24 21 24 26 23 24
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+7 8 6 6 7 7 9 90 65 69 9 29 9 13 9 11 9 15 34 28
+75 82 66 73 75 79 216 846 710 530 177 369 128 240 116 238 116 299 439 409
+140 149 124 134 143 158 528 1065 1042 530 437 595 321 429 320 431 324 594 714 710
+165 173 149 157 174 218 861 1134 1295 367 648 715 439 529 483 531 489 827 888 925
+181 185 169 169 202 391 1059 948 1282 245 755 697 489 535 574 537 582 912 886 962
+169 167 163 153 201 650 1259 751 1273 202 787 598 454 456 585 458 595 927 811 930
+141 135 145 124 192 833 1285 470 1088 156 712 422 359 316 517 317 529 813 626 770
+91 82 102 76 211 849 1104 169 759 92 508 187 192 177 335 177 358 563 348 490
+46 46 39 42 162 420 464 45 214 47 160 74 73 75 83 74 104 170 72 128
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+50 56 43 48 50 53 97 269 231 181 103 157 90 120 86 120 86 137 177 168
+99 108 87 96 101 115 277 506 496 279 271 339 222 267 222 268 223 339 392 390
+141 149 128 134 149 189 566 729 825 281 478 519 354 408 380 409 384 586 624 646
+109 111 100 101 119 192 406 370 480 145 340 321 253 268 280 268 283 392 384 410
+84 83 78 76 95 180 291 198 292 96 237 202 176 176 199 176 201 263 241 264
+80 78 76 71 98 209 290 146 253 85 226 174 163 156 191 156 193 245 210 237
+65 62 64 57 93 197 240 87 180 66 179 126 127 121 151 121 154 189 152 176
+22 20 22 19 45 86 94 25 54 21 61 42 43 41 49 41 51 63 45 55
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+11 11 10 10 11 12 12 12 12 12 21 21 21 21 21 21 21 21 21 21
+47 49 40 43 48 53 112 197 193 113 98 123 81 97 80 97 81 123 142 142
+55 56 50 51 57 61 69 71 73 64 112 113 108 110 109 110 109 114 115 116
+51 51 47 47 53 58 63 61 64 56 103 102 100 100 100 100 101 104 104 105
+29 29 26 26 30 31 31 31 31 30 55 55 54 54 55 54 55 55 55 55
+33 33 31 30 36 38 40 37 39 34 66 64 64 63 64 63 64 66 65 66
+39 38 38 35 48 62 68 47 58 40 85 76 77 75 81 75 81 87 81 85
+19 20 17 18 26 39 41 20 28 20 36 30 30 29 33 29 34 37 32 35
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+18 19 16 17 19 19 20 20 20 20 35 35 35 35 35 35 35 35 35 35
+55 58 49 52 55 60 70 80 79 70 112 116 109 112 109 112 109 116 119 119
+38 39 35 36 39 41 43 43 44 42 74 75 73 74 74 74 74 75 76 76
+54 55 50 50 57 62 69 67 70 60 111 110 107 108 108 107 108 113 112 113
+53 52 49 48 57 63 70 64 69 57 109 106 104 104 106 104 106 111 109 111
+20 20 18 18 21 21 22 21 21 21 38 38 38 38 38 38 38 38 38 38
+24 24 23 22 27 30 32 27 30 25 49 47 47 46 48 46 48 50 48 49
+12 11 11 10 15 20 21 13 16 12 24 21 21 21 23 21 23 24 22 23
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+13 14 12 12 13 14 14 14 14 14 25 25 25 25 25 25 25 25 25 25
+31 32 28 29 31 32 34 35 35 34 59 60 59 59 59 59 59 60 61 61
+70 71 61 64 72 87 242 311 350 127 194 211 144 166 154 166 156 238 254 263
+83 84 75 76 90 146 331 302 395 108 255 240 182 195 205 195 207 300 293 314
+83 83 77 75 95 246 455 285 462 96 295 232 183 184 226 185 230 343 304 345
+87 85 86 78 112 289 420 193 364 95 293 210 192 181 236 181 239 322 269 310
+69 65 73 60 142 577 756 125 527 71 346 132 134 125 229 125 245 385 240 336
+31 29 31 27 151 419 468 35 214 30 149 55 56 55 69 55 91 161 57 116
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+27 28 23 25 27 28 30 33 32 31 51 53 51 52 51 52 51 52 53 53
+54 57 49 52 55 60 70 80 80 70 112 116 109 112 109 112 109 116 120 119
+75 78 68 71 78 89 111 120 126 96 164 167 155 159 157 159 157 172 175 176
+72 73 67 67 78 90 109 105 114 85 159 157 149 151 152 151 152 164 164 166
+37 37 34 34 39 41 43 41 42 39 72 71 71 71 71 71 71 73 72 73
+23 22 21 21 24 24 25 24 24 23 43 43 43 43 43 43 43 43 43 43
+34 33 33 31 41 50 54 40 48 35 73 67 67 66 70 66 70 74 70 73
+17 18 15 16 23 34 37 18 26 18 34 28 29 28 31 28 31 34 30 32
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+61 66 53 58 61 64 163 632 529 400 132 276 98 180 94 176 94 222 327 304
+121 129 107 116 123 136 449 918 894 462 368 506 270 363 268 365 271 503 608 603
+154 162 139 146 162 201 803 1073 1221 356 595 663 400 487 440 489 446 765 826 859
+166 170 154 154 183 356 1039 944 1275 222 709 657 444 493 528 495 536 868 847 921
+163 162 157 148 193 611 1198 731 1223 196 748 573 432 436 555 438 564 882 777 889
+124 119 125 109 165 669 1042 400 892 137 585 356 302 270 427 271 437 668 520 635
+75 69 80 64 154 630 828 140 580 76 383 147 149 140 254 140 271 426 268 373
+41 39 37 36 149 397 444 42 209 41 152 69 69 69 79 69 99 164 69 123
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+4 4 4 4 4 4 4 4 4 4 8 8 8 8 8 8 8 8 8 8
+32 33 29 30 32 34 35 37 36 35 61 62 61 61 61 61 61 62 63 63
+45 45 40 42 46 48 52 53 54 50 88 89 86 87 87 87 87 90 90 90
+43 43 39 39 44 47 50 49 50 46 84 83 82 82 82 82 83 85 84 85
+46 46 43 42 49 54 58 54 57 50 93 91 90 90 91 90 91 95 94 95
+43 42 40 39 47 54 58 50 55 45 88 85 84 83 86 83 86 90 87 89
+42 41 40 37 51 67 75 50 64 43 91 81 81 79 86 79 86 93 86 90
+17 18 15 16 23 34 36 18 26 18 34 28 29 28 31 28 31 34 30 32
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+67 74 59 65 67 71 196 810 674 509 149 337 106 213 102 207 102 267 403 374
+133 142 117 127 135 149 506 1049 1019 527 408 568 297 404 294 407 298 564 685 679
+159 167 143 151 167 208 839 1127 1281 376 620 693 416 508 457 509 463 798 864 898
+176 180 163 164 194 374 1097 1003 1350 238 753 699 473 525 561 527 570 922 900 979
+150 149 143 136 177 534 1041 643 1065 180 658 510 387 392 492 393 501 775 685 781
+126 121 126 111 166 720 1135 429 974 139 619 369 308 274 446 274 456 711 550 676
+80 73 87 68 162 627 824 153 582 82 398 166 168 157 271 157 288 441 285 389
+28 25 28 24 128 356 400 31 186 27 130 50 51 49 62 49 81 141 52 104
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+66 73 58 64 66 70 193 804 668 506 146 333 104 210 100 203 100 263 399 369
+132 141 117 127 134 148 502 1046 1015 526 406 566 295 402 292 405 295 560 682 676
+158 167 143 151 166 207 835 1125 1277 377 617 691 414 506 455 507 461 795 861 894
+175 179 162 163 193 371 1092 1002 1346 237 749 697 471 523 559 526 567 918 897 975
+168 167 162 153 200 630 1245 767 1277 204 776 597 447 454 575 455 585 918 809 925
+138 132 140 121 186 799 1261 480 1083 154 693 415 346 308 500 309 511 796 616 757
+89 81 99 75 191 823 1090 182 767 91 498 185 187 175 326 175 350 556 347 487
+47 46 41 43 175 481 540 47 253 48 177 77 76 77 86 77 112 192 75 143
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+68 76 59 66 68 72 166 617 516 397 146 286 116 194 113 189 113 233 334 312
+86 94 76 83 88 100 219 395 385 227 221 274 186 220 185 221 186 273 314 311
+143 152 130 137 151 192 571 750 843 300 483 529 358 415 383 415 387 594 635 656
+141 145 131 132 156 256 567 528 681 196 473 449 348 371 387 372 390 550 541 577
+138 137 129 125 155 302 507 348 517 158 416 356 307 309 348 309 351 464 427 467
+108 106 104 97 132 266 369 196 327 116 305 242 228 220 261 220 263 329 288 320
+73 70 72 64 102 213 261 100 200 74 200 143 143 138 169 138 172 211 172 198
+26 24 27 22 51 99 108 30 64 25 72 50 51 49 58 49 61 74 54 66
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+13 14 12 12 13 14 14 14 14 14 25 25 25 25 25 25 25 25 25 25
+45 48 41 43 46 49 55 61 60 55 91 94 89 91 89 91 89 94 96 95
+29 29 26 27 29 30 31 31 31 31 55 55 54 55 54 54 54 55 55 55
+60 61 55 56 64 71 80 78 83 68 125 124 120 121 122 121 122 129 128 130
+63 62 59 57 69 81 93 82 92 69 135 131 127 127 130 127 130 139 136 139
+57 55 54 51 65 81 93 73 87 60 124 116 114 113 118 113 119 128 122 126
+40 39 39 36 49 63 70 48 60 41 87 78 79 77 83 77 83 89 83 87
+5 5 5 5 6 6 7 6 6 5 11 10 10 10 10 10 10 11 10 11
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+63 69 55 61 63 66 182 776 642 490 136 318 98 199 95 191 95 249 381 352
+121 129 107 116 123 135 451 948 917 481 365 512 267 364 263 366 266 505 616 610
+158 168 143 152 167 211 739 993 1119 364 580 645 407 486 441 488 446 732 790 818
+194 200 182 182 218 396 1080 1003 1327 275 790 742 524 575 607 577 615 953 935 1010
+180 179 176 164 220 577 1083 698 1111 226 752 605 480 485 584 487 592 871 782 878
+146 139 153 128 204 731 1135 465 983 166 678 436 375 343 508 343 518 769 613 736
+77 71 82 65 148 599 793 147 564 78 378 154 156 145 255 145 271 420 271 371
+22 18 28 17 84 209 235 32 119 20 102 48 51 46 64 46 73 108 56 87
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+37 41 32 35 37 39 72 221 187 149 68 114 59 84 57 82 57 96 130 123
+100 109 88 97 102 115 378 790 763 404 305 427 225 305 222 307 224 421 514 508
+153 161 138 145 161 199 799 1089 1231 373 590 665 396 486 434 487 440 762 828 859
+170 174 157 158 187 350 1049 973 1300 230 720 674 454 505 537 508 545 883 866 940
+150 149 142 136 175 542 1082 675 1115 179 672 520 388 395 498 396 507 796 705 804
+135 130 137 120 181 768 1221 472 1055 151 673 407 338 303 486 304 497 774 602 737
+80 73 86 68 154 603 798 155 570 82 389 165 167 155 266 155 282 431 283 382
+39 36 37 33 143 390 441 42 211 38 154 68 68 67 80 67 101 167 69 127
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+24 26 20 22 24 25 44 123 104 84 40 64 35 48 34 47 34 55 73 69
+47 50 41 43 48 53 110 197 192 116 99 125 82 99 82 99 82 123 144 142
+61 62 53 56 63 76 174 223 247 107 148 161 116 131 122 131 123 177 189 194
+67 68 60 61 72 108 221 208 263 88 177 170 133 142 146 142 148 205 203 215
+52 52 49 48 56 62 69 63 68 57 107 105 103 103 105 103 105 109 108 110
+89 87 87 80 113 329 498 221 435 97 321 222 197 185 251 185 255 359 295 346
+79 75 78 69 109 225 276 109 213 81 216 156 157 151 184 151 187 228 187 214
+21 18 23 17 49 103 115 26 65 19 67 41 43 40 51 40 54 70 47 61
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+15 16 14 14 15 16 16 17 16 17 29 29 29 29 29 29 29 29 29 29
+34 35 30 32 34 36 38 40 39 38 65 66 65 65 64 65 65 66 67 67
+45 46 41 42 46 49 53 54 55 51 89 90 87 88 88 88 88 91 91 91
+50 51 46 47 53 57 62 61 63 56 101 101 99 99 99 99 100 103 103 104
+52 52 49 48 56 62 69 63 68 57 107 105 103 103 105 103 105 109 108 110
+34 33 31 31 36 39 41 37 39 35 66 65 64 64 65 64 65 67 66 67
+47 46 46 43 58 80 90 58 76 49 104 92 92 89 97 89 98 107 98 104
+9 8 9 8 11 12 13 10 11 9 18 17 17 16 17 16 18 18 17 18
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+18 19 16 17 18 19 20 21 20 20 35 35 35 35 35 35 35 35 36 35
+31 32 28 29 31 32 34 35 35 34 59 60 59 59 59 59 59 60 61 61
+68 71 62 65 71 79 96 104 107 86 146 149 140 143 141 143 141 152 155 156
+74 74 66 67 79 117 235 223 280 97 197 189 151 160 165 160 166 227 224 237
+72 72 68 66 80 98 119 103 119 82 162 155 149 149 154 149 154 168 164 168
+63 62 60 56 77 172 246 125 218 68 178 135 124 119 147 119 149 195 167 189
+43 42 42 38 67 207 269 68 197 44 146 77 77 73 108 73 113 160 114 145
+26 24 26 22 112 318 361 30 171 25 121 46 47 46 59 46 77 132 49 99
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+48 53 41 46 48 50 114 437 362 285 94 194 75 129 73 125 73 155 227 211
+47 49 42 45 47 50 57 63 63 58 94 97 92 94 92 94 92 97 99 99
+76 78 67 70 79 95 202 258 284 131 190 205 155 171 161 171 162 223 236 242
+54 55 50 51 57 63 69 68 71 61 111 111 108 108 109 108 109 114 114 115
+107 107 100 97 121 216 350 250 358 124 303 264 232 233 258 234 260 335 312 337
+78 76 74 69 96 348 546 224 476 84 308 195 165 151 227 151 232 352 279 337
+62 59 60 54 85 187 233 87 179 63 171 119 119 114 143 114 145 181 146 170
+13 12 13 11 34 79 89 16 47 13 42 23 24 23 29 23 32 45 26 37
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+52 56 45 49 52 54 142 627 515 401 105 254 78 159 75 151 75 196 304 280
+97 104 85 93 98 110 369 794 763 408 294 420 214 296 210 298 213 411 507 500
+83 85 73 77 86 104 318 429 478 173 248 277 179 212 192 212 194 311 336 347
+114 116 104 105 123 197 473 448 577 153 375 358 269 290 301 291 305 442 437 466
+120 119 113 109 138 338 634 418 655 143 444 362 289 293 348 294 353 513 464 518
+80 79 77 72 100 308 472 207 413 87 294 199 175 163 226 163 230 330 269 318
+68 65 70 60 110 341 443 115 326 70 255 140 140 132 192 131 199 278 201 253
+18 16 19 15 42 93 104 22 57 17 56 33 35 32 41 32 44 59 37 50
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+10 10 8 9 10 10 23 89 74 58 17 37 13 24 13 23 13 29 44 41
+70 76 62 67 71 80 180 340 328 195 173 221 143 174 142 175 143 218 255 252
+130 137 117 123 136 168 518 701 781 284 432 480 318 373 339 373 343 536 578 596
+165 169 152 154 181 325 980 926 1225 225 685 647 438 488 514 490 521 839 826 894
+168 168 162 153 200 582 1158 742 1202 207 748 591 447 456 562 457 572 881 787 892
+140 135 143 124 188 742 1179 477 1027 158 674 423 355 324 495 324 506 772 610 739
+96 87 106 80 186 777 1037 202 748 98 504 210 210 192 344 192 363 560 367 497
+70 72 56 65 179 472 533 64 262 73 201 105 103 107 112 106 140 216 101 170
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+38 41 32 35 38 40 88 349 288 228 70 150 56 99 54 95 54 118 177 164
+86 93 75 82 87 97 291 612 586 324 243 338 184 245 180 246 182 330 403 398
+82 85 73 77 86 103 265 351 388 158 230 252 177 202 187 203 188 278 298 306
+108 109 98 100 115 146 212 205 240 134 253 248 225 230 233 230 234 272 270 279
+114 113 104 104 124 179 255 198 259 127 269 247 229 230 243 230 245 288 274 289
+80 79 77 72 98 206 292 154 260 86 228 178 165 159 192 159 194 248 215 241
+32 31 31 29 37 43 46 37 42 33 67 63 63 62 65 62 65 68 65 67
+22 20 24 18 51 108 121 28 69 21 71 43 45 42 54 42 57 74 49 64
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+26 27 23 25 26 27 29 33 32 31 50 52 50 51 49 51 49 51 52 52
+52 55 47 50 53 57 66 76 76 67 107 111 105 107 104 107 104 111 114 114
+32 33 29 30 33 34 35 35 35 35 62 62 61 61 61 61 61 62 62 62
+83 84 76 77 89 106 136 132 147 101 187 185 173 176 177 176 178 196 196 200
+82 82 77 75 91 117 147 124 148 93 189 180 171 171 178 171 178 198 192 198
+56 55 54 51 64 78 89 72 84 60 123 115 113 113 117 113 118 126 121 125
+52 51 50 47 64 90 102 64 86 53 115 101 101 98 107 98 108 118 108 115
+28 30 24 27 38 59 64 30 44 30 55 44 45 44 50 44 50 56 47 52
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
diff --git a/tests/tests_data/pluto_building.gml b/tests/tests_data/pluto_building.gml
new file mode 100644
index 0000000..400eaec
--- /dev/null
+++ b/tests/tests_data/pluto_building.gml
@@ -0,0 +1,420 @@
+
+
+ Gowanus 2050 Best Practice Scenario
+
+
+ 299606.4441129853 55348.37638737355 0
+ 301879.9050504853 57594.05119206105 62.04879541695123
+
+
+
+
+
+
+
+
+
+
+
+
+ 301010.4314176728 57301.3749225298 10.786276534199727 301004.1125700165 57288.87345768605 10.786276534199727 301024.4275114228 57311.0624225298 10.786276534199727 301010.4314176728 57301.3749225298 10.786276534199727
+
+
+
+
+
+
+
+
+ 301014.183859079 57308.78849674855 10.786276534199727 301010.4314176728 57301.3749225298 10.786276534199727 301024.4275114228 57311.0624225298 10.786276534199727 301014.183859079 57308.78849674855 10.786276534199727
+
+
+
+
+
+
+
+
+ 301004.1125700165 57288.87345768605 10.786276534199727 300992.0398161103 57285.56779362355 10.786276534199727 301000.3254606415 57281.3758990923 10.786276534199727 301004.1125700165 57288.87345768605 10.786276534199727
+
+
+
+
+
+
+
+
+ 301024.4275114228 57311.0624225298 10.786276534199727 301004.1125700165 57288.87345768605 10.786276534199727 301004.5266325165 57271.70548893605 10.786276534199727 301024.4275114228 57311.0624225298 10.786276534199727
+
+
+
+
+
+
+
+
+ 301000.3254606415 57281.3758990923 10.786276534199727 300997.2820036103 57275.3758990923 10.786276534199727 301004.5266325165 57271.70548893605 10.786276534199727 301000.3254606415 57281.3758990923 10.786276534199727
+
+
+
+
+
+
+
+
+ 301004.1125700165 57288.87345768605 10.786276534199727 301000.3254606415 57281.3758990923 10.786276534199727 301004.5266325165 57271.70548893605 10.786276534199727 301004.1125700165 57288.87345768605 10.786276534199727
+
+
+
+
+
+
+
+
+ 301017.183859079 57314.7147662798 10.786276534199727 301014.183859079 57308.78849674855 10.786276534199727 301024.4275114228 57311.0624225298 10.786276534199727 301017.183859079 57314.7147662798 10.786276534199727
+
+
+
+
+
+
+
+
+ 301005.9055387665 57312.9716022173 10.786276534199727 301002.1530973603 57305.55900456105 10.786276534199727 301014.183859079 57308.78849674855 10.786276534199727 301005.9055387665 57312.9716022173 10.786276534199727
+
+
+
+
+
+
+
+
+ 300995.8337614228 57293.0555865923 10.786276534199727 300992.0398161103 57285.56779362355 10.786276534199727 301004.1125700165 57288.87345768605 10.786276534199727 300995.8337614228 57293.0555865923 10.786276534199727
+
+
+
+
+
+
+
+
+ 301014.183859079 57308.78849674855 10.786276534199727 301002.1530973603 57305.55900456105 10.786276534199727 301010.4314176728 57301.3749225298 10.786276534199727 301014.183859079 57308.78849674855 10.786276534199727
+
+
+
+
+
+
+
+
+ 301005.9055387665 57312.9716022173 10.786276534199727 301005.9055387665 57312.9716022173 0.0 301002.1530973603 57305.55900456105 10.786276534199727 301005.9055387665 57312.9716022173 10.786276534199727
+
+
+
+
+
+
+
+
+ 301002.1530973603 57305.55900456105 10.786276534199727 301005.9055387665 57312.9716022173 0.0 301002.1530973603 57305.55900456105 0.0 301002.1530973603 57305.55900456105 10.786276534199727
+
+
+
+
+
+
+
+
+ 301017.183859079 57314.7147662798 0.0 301024.4275114228 57311.0624225298 0.0 301014.183859079 57308.78849674855 0.0 301017.183859079 57314.7147662798 0.0
+
+
+
+
+
+
+
+
+ 301005.9055387665 57312.9716022173 0.0 301014.183859079 57308.78849674855 0.0 301002.1530973603 57305.55900456105 0.0 301005.9055387665 57312.9716022173 0.0
+
+
+
+
+
+
+
+
+ 300995.8337614228 57293.0555865923 0.0 301004.1125700165 57288.87345768605 0.0 300992.0398161103 57285.56779362355 0.0 300995.8337614228 57293.0555865923 0.0
+
+
+
+
+
+
+
+
+ 301014.183859079 57308.78849674855 0.0 301010.4314176728 57301.3749225298 0.0 301002.1530973603 57305.55900456105 0.0 301014.183859079 57308.78849674855 0.0
+
+
+
+
+
+
+
+
+ 301010.4314176728 57301.3749225298 0.0 301024.4275114228 57311.0624225298 0.0 301004.1125700165 57288.87345768605 0.0 301010.4314176728 57301.3749225298 0.0
+
+
+
+
+
+
+
+
+ 301014.183859079 57308.78849674855 0.0 301024.4275114228 57311.0624225298 0.0 301010.4314176728 57301.3749225298 0.0 301014.183859079 57308.78849674855 0.0
+
+
+
+
+
+
+
+
+ 301024.4275114228 57311.0624225298 0.0 301004.5266325165 57271.70548893605 0.0 301004.1125700165 57288.87345768605 0.0 301024.4275114228 57311.0624225298 0.0
+
+
+
+
+
+
+
+
+ 301004.1125700165 57288.87345768605 0.0 301000.3254606415 57281.3758990923 0.0 300992.0398161103 57285.56779362355 0.0 301004.1125700165 57288.87345768605 0.0
+
+
+
+
+
+
+
+
+ 301000.3254606415 57281.3758990923 0.0 301004.5266325165 57271.70548893605 0.0 300997.2820036103 57275.3758990923 0.0 301000.3254606415 57281.3758990923 0.0
+
+
+
+
+
+
+
+
+ 301004.1125700165 57288.87345768605 0.0 301004.5266325165 57271.70548893605 0.0 301000.3254606415 57281.3758990923 0.0 301004.1125700165 57288.87345768605 0.0
+
+
+
+
+
+
+
+
+ 301014.183859079 57308.78849674855 10.786276534199727 301014.183859079 57308.78849674855 0.0 301005.9055387665 57312.9716022173 10.786276534199727 301014.183859079 57308.78849674855 10.786276534199727
+
+
+
+
+
+
+
+
+ 301005.9055387665 57312.9716022173 10.786276534199727 301014.183859079 57308.78849674855 0.0 301005.9055387665 57312.9716022173 0.0 301005.9055387665 57312.9716022173 10.786276534199727
+
+
+
+
+
+
+
+
+ 301017.183859079 57314.7147662798 10.786276534199727 301017.183859079 57314.7147662798 0.0 301014.183859079 57308.78849674855 10.786276534199727 301017.183859079 57314.7147662798 10.786276534199727
+
+
+
+
+
+
+
+
+ 301014.183859079 57308.78849674855 10.786276534199727 301017.183859079 57314.7147662798 0.0 301014.183859079 57308.78849674855 0.0 301014.183859079 57308.78849674855 10.786276534199727
+
+
+
+
+
+
+
+
+ 301002.1530973603 57305.55900456105 10.786276534199727 301002.1530973603 57305.55900456105 0.0 301010.4314176728 57301.3749225298 10.786276534199727 301002.1530973603 57305.55900456105 10.786276534199727
+
+
+
+
+
+
+
+
+ 301010.4314176728 57301.3749225298 10.786276534199727 301002.1530973603 57305.55900456105 0.0 301010.4314176728 57301.3749225298 0.0 301010.4314176728 57301.3749225298 10.786276534199727
+
+
+
+
+
+
+
+
+ 301024.4275114228 57311.0624225298 10.786276534199727 301024.4275114228 57311.0624225298 0.0 301017.183859079 57314.7147662798 10.786276534199727 301024.4275114228 57311.0624225298 10.786276534199727
+
+
+
+
+
+
+
+
+ 301017.183859079 57314.7147662798 10.786276534199727 301024.4275114228 57311.0624225298 0.0 301017.183859079 57314.7147662798 0.0 301017.183859079 57314.7147662798 10.786276534199727
+
+
+
+
+
+
+
+
+ 301004.5266325165 57271.70548893605 10.786276534199727 301004.5266325165 57271.70548893605 0.0 301024.4275114228 57311.0624225298 10.786276534199727 301004.5266325165 57271.70548893605 10.786276534199727
+
+
+
+
+
+
+
+
+ 301024.4275114228 57311.0624225298 10.786276534199727 301004.5266325165 57271.70548893605 0.0 301024.4275114228 57311.0624225298 0.0 301024.4275114228 57311.0624225298 10.786276534199727
+
+
+
+
+
+
+
+
+ 300997.2820036103 57275.3758990923 10.786276534199727 300997.2820036103 57275.3758990923 0.0 301004.5266325165 57271.70548893605 10.786276534199727 300997.2820036103 57275.3758990923 10.786276534199727
+
+
+
+
+
+
+
+
+ 301004.5266325165 57271.70548893605 10.786276534199727 300997.2820036103 57275.3758990923 0.0 301004.5266325165 57271.70548893605 0.0 301004.5266325165 57271.70548893605 10.786276534199727
+
+
+
+
+
+
+
+
+ 301010.4314176728 57301.3749225298 10.786276534199727 301010.4314176728 57301.3749225298 0.0 301004.1125700165 57288.87345768605 10.786276534199727 301010.4314176728 57301.3749225298 10.786276534199727
+
+
+
+
+
+
+
+
+ 301004.1125700165 57288.87345768605 10.786276534199727 301010.4314176728 57301.3749225298 0.0 301004.1125700165 57288.87345768605 0.0 301004.1125700165 57288.87345768605 10.786276534199727
+
+
+
+
+
+
+
+
+ 301004.1125700165 57288.87345768605 10.786276534199727 301004.1125700165 57288.87345768605 0.0 300995.8337614228 57293.0555865923 10.786276534199727 301004.1125700165 57288.87345768605 10.786276534199727
+
+
+
+
+
+
+
+
+ 300995.8337614228 57293.0555865923 10.786276534199727 301004.1125700165 57288.87345768605 0.0 300995.8337614228 57293.0555865923 0.0 300995.8337614228 57293.0555865923 10.786276534199727
+
+
+
+
+
+
+
+
+ 301000.3254606415 57281.3758990923 10.786276534199727 301000.3254606415 57281.3758990923 0.0 300997.2820036103 57275.3758990923 10.786276534199727 301000.3254606415 57281.3758990923 10.786276534199727
+
+
+
+
+
+
+
+
+ 300997.2820036103 57275.3758990923 10.786276534199727 301000.3254606415 57281.3758990923 0.0 300997.2820036103 57275.3758990923 0.0 300997.2820036103 57275.3758990923 10.786276534199727
+
+
+
+
+
+
+
+
+ 300995.8337614228 57293.0555865923 10.786276534199727 300995.8337614228 57293.0555865923 0.0 300992.0398161103 57285.56779362355 10.786276534199727 300995.8337614228 57293.0555865923 10.786276534199727
+
+
+
+
+
+
+
+
+ 300992.0398161103 57285.56779362355 10.786276534199727 300995.8337614228 57293.0555865923 0.0 300992.0398161103 57285.56779362355 0.0 300992.0398161103 57285.56779362355 10.786276534199727
+
+
+
+
+
+
+
+
+ 300992.0398161103 57285.56779362355 10.786276534199727 300992.0398161103 57285.56779362355 0.0 301000.3254606415 57281.3758990923 10.786276534199727 300992.0398161103 57285.56779362355 10.786276534199727
+
+
+
+
+
+
+
+
+ 301000.3254606415 57281.3758990923 10.786276534199727 300992.0398161103 57285.56779362355 0.0 301000.3254606415 57281.3758990923 0.0 301000.3254606415 57281.3758990923 10.786276534199727
+
+
+
+
+
+
+
+
+ 1965
+ W4
+
+
+
\ No newline at end of file
diff --git a/tests/tests_data/test.geojson b/tests/tests_data/test.geojson
new file mode 100644
index 0000000..39e320b
--- /dev/null
+++ b/tests/tests_data/test.geojson
@@ -0,0 +1 @@
+{"type": "FeatureCollection", "features": [{"type": "Feature", "id": 1, "geometry": {"type": "Polygon", "coordinates": [[[-73.58041417568059, 45.49764113660836], [-73.58043210090233, 45.49764939355464], [-73.58043812505389, 45.49765216533153], [-73.58044414920609, 45.497654937108095], [-73.58045522645047, 45.497643483290055], [-73.58046039454494, 45.49763813457615], [-73.58046556263851, 45.49763278586197], [-73.58046731940954, 45.49763096963899], [-73.58046837569874, 45.497631443112695], [-73.58047458446856, 45.49762459092546], [-73.58047710119774, 45.49762181763267], [-73.58047961792668, 45.497619044339814], [-73.58047934905329, 45.497618923950135], [-73.5804790801799, 45.49761880356047], [-73.58048954414282, 45.497607987260714], [-73.58049287242406, 45.49760454751109], [-73.58049620070491, 45.49760110776142], [-73.58030119628617, 45.497508498087804], [-73.58029784855013, 45.497511757876744], [-73.58026340519585, 45.49749487401405], [-73.58023482852495, 45.497500527114255], [-73.58023846427437, 45.497519871207935], [-73.58022467137708, 45.49753369800162], [-73.58021087847304, 45.4975475247936], [-73.58024507714809, 45.497563293037274], [-73.58025024985044, 45.49756568298851], [-73.5802554225532, 45.49756807293951], [-73.58030361564374, 45.49759024722043], [-73.58034770519933, 45.49761054369337], [-73.58039179478655, 45.497630840149206], [-73.58041417568059, 45.49764113660836]]]}, "properties": {"OBJECTID_12": 1, "gml_id": "1340908", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 21.824, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "2783.169", "parcelle": " ", "OBJECTID": 778, "gml_id_1": "ebc7f916-d094-4de0-8c35-fc18eb8622f2", "gml_pare_1": "1340908", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "229.287", "FID_": 0, "Join_Count": 2, "TARGET_FID": 779, "gml_id_12": "1340908", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 21.824, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "2783.169", "Field": 0, "Field1": 0, "OBJECTID_1": 778, "gml_id_12_": "ebc7f916-d094-4de0-8c35-fc18eb8622f2", "gml_pare_3": "1340908", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "229.287", "cityGML_hi": 0, "Z_Min": 49.0745, "Z_Max": 69.165, "Shape_Leng": 59.5328348388, "ID_UEV": "01002777", "CIVIQUE_DE": " 1460", "CIVIQUE_FI": " 1460", "NOM_RUE": "rue Sherbrooke Ouest (MTL+MTO+WMT)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 1, "ANNEE_CONS": 1885, "CODE_UTILI": "5010", "LIBELLE_UT": "Immeuble commercial", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-57-1941-6-000-0000", "SUPERFICIE": 193, "SUPERFIC_1": 609, "NO_ARROND_": "REM19", "Shape_Le_1": 0.000764524473662, "Shape_Ar_1": 2.21628798868e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 59.53283483882735, "Shape_Area": 161.83671944596372}}, {"type": "Feature", "id": 2, "geometry": {"type": "Polygon", "coordinates": [[[-73.57983293175002, 45.49768418792749], [-73.57988299478886, 45.49770770184612], [-73.57987444688511, 45.49771631933112], [-73.57986589897874, 45.4977249368155], [-73.57989400442865, 45.4977388332491], [-73.5799221098924, 45.49775272967573], [-73.57996464588562, 45.49777379225035], [-73.5800114873555, 45.49772695856106], [-73.58001337692374, 45.49772403274434], [-73.58002372352, 45.49771158065326], [-73.57997377599757, 45.49768836366396], [-73.57997699554191, 45.497684915007106], [-73.57996891710309, 45.49768168122446], [-73.58001203415056, 45.49763421125227], [-73.5800237211254, 45.49763310975479], [-73.58003540809983, 45.497632008256126], [-73.58003843462382, 45.49762779486531], [-73.5800586413064, 45.49763883978816], [-73.58006902830654, 45.49763685734999], [-73.58007941530593, 45.497634874910936], [-73.58008512530917, 45.4976371925054], [-73.58011852332075, 45.49760265106696], [-73.58012141009918, 45.49760366136672], [-73.58012429687773, 45.49760467166638], [-73.58021730322469, 45.49750983661196], [-73.58023846427437, 45.497519871207935], [-73.58023482852495, 45.497500527114255], [-73.58026340519585, 45.49749487401405], [-73.58026543717902, 45.497493135887176], [-73.58023226310907, 45.49747803281433], [-73.58022096787025, 45.49749006266433], [-73.5802096726266, 45.49750209251325], [-73.58020000432282, 45.49749746330521], [-73.58020295907204, 45.497494079616594], [-73.58019598163615, 45.49749126350431], [-73.58018900420097, 45.4974884473916], [-73.58017559824007, 45.497481905937164], [-73.58017296099679, 45.49748451733602], [-73.58010849803175, 45.497453656518125], [-73.58010999915835, 45.49745202044865], [-73.58011150028489, 45.497450384379164], [-73.5801040813135, 45.49744749208417], [-73.58009666234283, 45.49744459978872], [-73.58008289756135, 45.4974376536451], [-73.58008174786045, 45.49743897632209], [-73.58008059816082, 45.4974402998989], [-73.58007239721384, 45.4974363733294], [-73.58006419626933, 45.49743244765915], [-73.57996868909309, 45.49752964373216], [-73.5799714683216, 45.49753151346204], [-73.57993688140664, 45.49756683855426], [-73.57994341177368, 45.497570199400855], [-73.57992321204678, 45.49759117090436], [-73.57992188066632, 45.49759069941776], [-73.57992054928589, 45.4975902279312], [-73.57983293175002, 45.49768418792749]]]}, "properties": {"OBJECTID_12": 2, "gml_id": "1340974", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 21.644, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "8410.522", "parcelle": " ", "OBJECTID": 779, "gml_id_1": "96e73b07-262d-43a8-84ce-608133b39f16", "gml_pare_1": "1340974", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "553.859", "FID_": 0, "Join_Count": 3, "TARGET_FID": 780, "gml_id_12": "1340974", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 21.644, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "8410.522", "Field": 0, "Field1": 0, "OBJECTID_1": 779, "gml_id_12_": "96e73b07-262d-43a8-84ce-608133b39f16", "gml_pare_3": "1340974", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "553.859", "cityGML_hi": 0, "Z_Min": 47.8179, "Z_Max": 69.462, "Shape_Leng": 124.143194192, "ID_UEV": "01002773", "CIVIQUE_DE": " 1438", "CIVIQUE_FI": " 1438", "NOM_RUE": "rue Sherbrooke Ouest (MTL+MTO+WMT)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 2, "ANNEE_CONS": 1885, "CODE_UTILI": "1000", "LIBELLE_UT": "Logement", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-57-4570-0-000-0000", "SUPERFICIE": 249, "SUPERFIC_1": 506, "NO_ARROND_": "REM19", "Shape_Le_1": 0.000997036390488, "Shape_Ar_1": 2.85432763043e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 124.143194192441, "Shape_Area": 464.3009460293119}}, {"type": "Feature", "id": 3, "geometry": {"type": "Polygon", "coordinates": [[[-73.58027133757318, 45.49778253958501], [-73.58029012091339, 45.4977913628521], [-73.58030531916779, 45.497798505928216], [-73.58031919454406, 45.49778416165715], [-73.58032294575167, 45.49778028519085], [-73.5803239370267, 45.49778092788226], [-73.58032868649482, 45.49778260725071], [-73.58035123655425, 45.497758871501716], [-73.58034693486053, 45.49775714682708], [-73.58034559351022, 45.4977568679191], [-73.58034881064437, 45.49775353713306], [-73.5803511232103, 45.49775115091962], [-73.58034376740876, 45.497747727688], [-73.58033641160816, 45.49774430445582], [-73.58023858400132, 45.49769876012238], [-73.5801407565522, 45.49765321570472], [-73.58012849724439, 45.49766577712958], [-73.58011623793112, 45.4976783385531], [-73.58012118770385, 45.49769495520085], [-73.58011416146232, 45.49770285176125], [-73.58011049504559, 45.49770697561838], [-73.58018191512001, 45.49774053018273], [-73.58025333527925, 45.497774084702165], [-73.58026233642553, 45.497778312143936], [-73.58027133757318, 45.49778253958501]]]}, "properties": {"OBJECTID_12": 3, "gml_id": "1340910", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 21.916, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "2257.436", "parcelle": " ", "OBJECTID": 780, "gml_id_1": "8222a1c7-e161-421a-8478-22d2a116e0b4", "gml_pare_1": "1340910", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "144.697", "FID_": 0, "Join_Count": 2, "TARGET_FID": 781, "gml_id_12": "1340910", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 21.916, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "2257.436", "Field": 0, "Field1": 0, "OBJECTID_1": 780, "gml_id_12_": "8222a1c7-e161-421a-8478-22d2a116e0b4", "gml_pare_3": "1340910", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "144.697", "cityGML_hi": 0, "Z_Min": 48.9834, "Z_Max": 67.617, "Shape_Leng": 52.2836566341, "ID_UEV": "01002775", "CIVIQUE_DE": " 1448", "CIVIQUE_FI": " 1448", "NOM_RUE": "rue Sherbrooke Ouest (MTL+MTO+WMT)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 1, "ANNEE_CONS": 1885, "CODE_UTILI": "5010", "LIBELLE_UT": "Immeuble commercial", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-57-3057-9-000-0000", "SUPERFICIE": 167, "SUPERFIC_1": 354, "NO_ARROND_": "REM19", "Shape_Le_1": 0.00074417728925, "Shape_Ar_1": 1.92186900974e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 52.28365663409477, "Shape_Area": 123.24449716965384}}, {"type": "Feature", "id": 4, "geometry": {"type": "Polygon", "coordinates": [[[-73.58033641160816, 45.49774430445582], [-73.58034376740876, 45.497747727688], [-73.5803511232103, 45.49775115091962], [-73.58035790116986, 45.49774413636653], [-73.58036467912778, 45.49773712181308], [-73.58036844437973, 45.49773322823833], [-73.58036943437362, 45.49773387003041], [-73.5803741966345, 45.497735549387926], [-73.58039673386065, 45.497711813638816], [-73.58039244496449, 45.49771008895686], [-73.58039109337624, 45.49770980825692], [-73.58039462737088, 45.497706155102385], [-73.58039622443148, 45.497704498265314], [-73.58040994643537, 45.497690307064396], [-73.58041445272148, 45.49768564809902], [-73.58041544271505, 45.49768628989075], [-73.58041782384414, 45.497687129568575], [-73.58042020497331, 45.49768796924638], [-73.58043147356958, 45.497676101367745], [-73.58044274216114, 45.49766423348799], [-73.5804384532672, 45.49766250880776], [-73.58043777747288, 45.49766236800813], [-73.58043710167988, 45.49766222810832], [-73.58044057178164, 45.49765863798647], [-73.58044414920609, 45.497654937108095], [-73.58043812505389, 45.49765216533153], [-73.58043210090233, 45.49764939355464], [-73.58041417568059, 45.49764113660836], [-73.58039179478655, 45.497630840149206], [-73.58034770519933, 45.49761054369337], [-73.58030361564374, 45.49759024722043], [-73.5802554225532, 45.49756807293951], [-73.5802379041298, 45.49758493932583], [-73.58023068869622, 45.4975812280381], [-73.58022347326362, 45.497577516749864], [-73.58019381582531, 45.497606044634786], [-73.58018811159256, 45.497603286118064], [-73.5801824073604, 45.497600527601115], [-73.58013161464174, 45.497648956857425], [-73.5801407565522, 45.49765321570472], [-73.58023858400132, 45.49769876012238], [-73.58033641160816, 45.49774430445582]]]}, "properties": {"OBJECTID_12": 4, "gml_id": "1340909", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 21.918, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "4628.589", "parcelle": " ", "OBJECTID": 781, "gml_id_1": "7361d073-8a4e-4cde-9045-f00174037b93", "gml_pare_1": "1340909", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "299.868", "FID_": 0, "Join_Count": 2, "TARGET_FID": 782, "gml_id_12": "1340909", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 21.918, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "4628.589", "Field": 0, "Field1": 0, "OBJECTID_1": 781, "gml_id_12_": "7361d073-8a4e-4cde-9045-f00174037b93", "gml_pare_3": "1340909", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "299.868", "cityGML_hi": 0, "Z_Min": 48.9809, "Z_Max": 68.706, "Shape_Leng": 68.6309905336, "ID_UEV": "01002775", "CIVIQUE_DE": " 1448", "CIVIQUE_FI": " 1448", "NOM_RUE": "rue Sherbrooke Ouest (MTL+MTO+WMT)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 1, "ANNEE_CONS": 1885, "CODE_UTILI": "5010", "LIBELLE_UT": "Immeuble commercial", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-57-3057-9-000-0000", "SUPERFICIE": 167, "SUPERFIC_1": 354, "NO_ARROND_": "REM19", "Shape_Le_1": 0.00074417728925, "Shape_Ar_1": 1.92186900974e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 68.63099053361788, "Shape_Area": 255.162393537897}}, {"type": "Feature", "id": 5, "geometry": {"type": "Polygon", "coordinates": [[[-73.57987280223287, 45.49780197663469], [-73.57989410857009, 45.497812471912496], [-73.5799154149152, 45.4978229671863], [-73.57991587587279, 45.49782319632402], [-73.57991633683041, 45.497823425461746], [-73.57994396849938, 45.497837029765], [-73.57994983287693, 45.49783992315832], [-73.57995569725507, 45.49784281655128], [-73.57999583877229, 45.49786259401303], [-73.58000874551566, 45.49786894687061], [-73.58001902738776, 45.49787401478859], [-73.5801510016764, 45.49793903497323], [-73.58015255099711, 45.497939794254236], [-73.58015410031787, 45.497940553535265], [-73.58015964461515, 45.49794329416885], [-73.580163524261, 45.49794515412329], [-73.58021253545378, 45.49789446749787], [-73.58020911673718, 45.49789281418553], [-73.58020029465442, 45.49788854612092], [-73.58005728487048, 45.497819331455986], [-73.58002896209338, 45.497805628681455], [-73.58001106161767, 45.497796768759315], [-73.5799931611476, 45.49778790883436], [-73.57996464588562, 45.49777379225035], [-73.57994337788503, 45.49776326096506], [-73.5799221098924, 45.49775272967573], [-73.57989400442865, 45.4977388332491], [-73.57986589897874, 45.4977249368155], [-73.57986299879909, 45.497723499092736], [-73.57986009861956, 45.49772206136999], [-73.57980521410511, 45.497772688960225], [-73.57981413841381, 45.49777689399493], [-73.57981665544915, 45.4977743096838], [-73.57987280223287, 45.49780197663469]]]}, "properties": {"OBJECTID_12": 5, "gml_id": "1340975", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 26.973, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "4615.644", "parcelle": " ", "OBJECTID": 783, "gml_id_1": "5d841c7d-db0a-496c-aa5b-ff010accb222", "gml_pare_1": "1340975", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "233.090", "FID_": 0, "Join_Count": 2, "TARGET_FID": 784, "gml_id_12": "1340975", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 26.973, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "4615.644", "Field": 0, "Field1": 0, "OBJECTID_1": 783, "gml_id_12_": "5d841c7d-db0a-496c-aa5b-ff010accb222", "gml_pare_3": "1340975", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "233.090", "cityGML_hi": 0, "Z_Min": 47.9028, "Z_Max": 74.876, "Shape_Leng": 81.7235184451, "ID_UEV": "01002773", "CIVIQUE_DE": " 1438", "CIVIQUE_FI": " 1438", "NOM_RUE": "rue Sherbrooke Ouest (MTL+MTO+WMT)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 2, "ANNEE_CONS": 1885, "CODE_UTILI": "1000", "LIBELLE_UT": "Logement", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-57-4570-0-000-0000", "SUPERFICIE": 249, "SUPERFIC_1": 506, "NO_ARROND_": "REM19", "Shape_Le_1": 0.000997036390488, "Shape_Ar_1": 2.85432763043e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 81.72351844511994, "Shape_Area": 226.8688400309068}}, {"type": "Feature", "id": 6, "geometry": {"type": "Polygon", "coordinates": [[[-73.58020029465442, 45.49788854612092], [-73.58020470569565, 45.497890680153304], [-73.58020911673718, 45.49789281418553], [-73.58021253545378, 45.49789446749787], [-73.58022877454545, 45.4978776740024], [-73.580230355015, 45.49787604057531], [-73.58023193420492, 45.49787440714907], [-73.58023292932299, 45.49787505253807], [-73.58023531045096, 45.49787588772046], [-73.58023769157896, 45.497876722902824], [-73.58026022893152, 45.497852996179574], [-73.58025592722062, 45.49785126250309], [-73.58025458714808, 45.49785098359313], [-73.5802576496991, 45.497847814890285], [-73.58025809687858, 45.497847351156395], [-73.58025854405807, 45.49784688742253], [-73.58027411873532, 45.49783077826882], [-73.58027633675611, 45.49782848660698], [-73.58027683239438, 45.49782880840284], [-73.58027732803141, 45.49782912929881], [-73.58028209028483, 45.497830799661735], [-73.58029335894497, 45.497818936296206], [-73.58030462760044, 45.49780707292953], [-73.58030033869983, 45.49780534824416], [-73.58029965906428, 45.4978052065466], [-73.58029897814917, 45.49780506484989], [-73.58030104413092, 45.4978029334667], [-73.58030310883294, 45.49780080208443], [-73.58030421400039, 45.49779965400631], [-73.58030531916779, 45.497798505928216], [-73.58029012091339, 45.4977913628521], [-73.58027133757318, 45.49778253958501], [-73.58026233642553, 45.497778312143936], [-73.58025333527925, 45.497774084702165], [-73.58018191512001, 45.49774053018273], [-73.58011049504559, 45.49770697561838], [-73.58005920141883, 45.49768195092396], [-73.58001546938262, 45.497728845444165], [-73.5800114873555, 45.49772695856106], [-73.57996464588562, 45.49777379225035], [-73.5799931611476, 45.49778790883436], [-73.58002896209338, 45.497805628681455], [-73.58005728487048, 45.497819331455986], [-73.58020029465442, 45.49788854612092]]]}, "properties": {"OBJECTID_12": 6, "gml_id": "1340973", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 22.324, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "5526.970", "parcelle": " ", "OBJECTID": 784, "gml_id_1": "cee7bddb-ab30-4184-aaad-071dc8a493dd", "gml_pare_1": "1340973", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "344.679", "FID_": 0, "Join_Count": 2, "TARGET_FID": 785, "gml_id_12": "1340973", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 22.324, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "5526.970", "Field": 0, "Field1": 0, "OBJECTID_1": 784, "gml_id_12_": "cee7bddb-ab30-4184-aaad-071dc8a493dd", "gml_pare_3": "1340973", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "344.679", "cityGML_hi": 0, "Z_Min": 48.5686, "Z_Max": 68.604, "Shape_Leng": 74.7024378907, "ID_UEV": "01002773", "CIVIQUE_DE": " 1438", "CIVIQUE_FI": " 1438", "NOM_RUE": "rue Sherbrooke Ouest (MTL+MTO+WMT)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 2, "ANNEE_CONS": 1885, "CODE_UTILI": "1000", "LIBELLE_UT": "Logement", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-57-4570-0-000-0000", "SUPERFICIE": 249, "SUPERFIC_1": 506, "NO_ARROND_": "REM19", "Shape_Le_1": 0.000997036390488, "Shape_Ar_1": 2.85432763043e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 74.70243789066224, "Shape_Area": 300.3128592870276}}, {"type": "Feature", "id": 8, "geometry": {"type": "Polygon", "coordinates": [[[-73.57951109372742, 45.49797740161985], [-73.5795154252114, 45.49797302536288], [-73.57952250596712, 45.497976502829886], [-73.5795258025052, 45.49797318011049], [-73.57952723636215, 45.49797372801708], [-73.5795289514519, 45.497974086760586], [-73.57953069177773, 45.49797419353016], [-73.57953223985594, 45.49797407547255], [-73.57953359578782, 45.497973804575274], [-73.57953408818886, 45.49797364675974], [-73.57953458058988, 45.49797348894419], [-73.57953564193629, 45.497973011287854], [-73.57953672859472, 45.49797233564821], [-73.57953788096579, 45.49797289274911], [-73.57970940276014, 45.4978001291146], [-73.57975656339444, 45.49775262042428], [-73.57968090322977, 45.49771547367498], [-73.57963739684415, 45.497759299424665], [-73.57963374256275, 45.49776298233438], [-73.57952818975889, 45.49786930045622], [-73.57952481016481, 45.49787269972034], [-73.57952143057031, 45.497876098984314], [-73.57950823165471, 45.49788939886833], [-73.57949503273288, 45.49790269875081], [-73.5794800321942, 45.497917804072586], [-73.57946503164756, 45.497932909392325], [-73.57946222064952, 45.49793574585649], [-73.57948812364579, 45.49794846962509], [-73.57948731962531, 45.4979499549272], [-73.5794871296316, 45.49795133182075], [-73.57948733601646, 45.49795251047276], [-73.5794878108513, 45.49795350896919], [-73.57948816335764, 45.49795395864589], [-73.57948851586393, 45.4979544083226], [-73.57948946386242, 45.4979552175225], [-73.57949047539473, 45.4979557117328], [-73.57948878239833, 45.49795741361608], [-73.57948708940182, 45.497959115499384], [-73.57949283850887, 45.49796193700876], [-73.57949067276019, 45.49796412063761], [-73.57948850701138, 45.497966304266455], [-73.57951109372742, 45.49797740161985]]]}, "properties": {"OBJECTID_12": 8, "gml_id": "1340981", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 19.833, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "3138.930", "parcelle": " ", "OBJECTID": 1050, "gml_id_1": "b2437d15-0f9d-4af9-8ae5-dd5d201128a7", "gml_pare_1": "1340981", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "221.093", "FID_": 0, "Join_Count": 1, "TARGET_FID": 1052, "gml_id_12": "1340981", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 19.833, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "3138.930", "Field": 0, "Field1": 0, "OBJECTID_1": 1050, "gml_id_12_": "b2437d15-0f9d-4af9-8ae5-dd5d201128a7", "gml_pare_3": "1340981", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "221.093", "cityGML_hi": 0, "Z_Min": 46.3931, "Z_Max": 66.226, "Shape_Leng": 76.8106772684, "ID_UEV": "01036804", "CIVIQUE_DE": " 2170", "CIVIQUE_FI": " 2170", "NOM_RUE": "rue Bishop (MTL)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 1, "ANNEE_CONS": 1900, "CODE_UTILI": "6000", "LIBELLE_UT": "Immeuble \u00e0 bureaux", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-57-7770-3-000-0000", "SUPERFICIE": 259, "SUPERFIC_1": 490, "NO_ARROND_": "REM19", "Shape_Le_1": 0.00093336765858, "Shape_Ar_1": 3.0845126501e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 76.81067726839883, "Shape_Area": 220.5412075100958}}, {"type": "Feature", "id": 9, "geometry": {"type": "Polygon", "coordinates": [[[-73.57938148575774, 45.49789949328572], [-73.57938505429556, 45.49790124550157], [-73.57938759058709, 45.49789868818189], [-73.57939012687844, 45.49789613086214], [-73.5795114087957, 45.497773973664174], [-73.57955974509859, 45.4977252944393], [-73.57956286932851, 45.49772683099649], [-73.57956562282082, 45.49772405755894], [-73.57964521844113, 45.497643888972846], [-73.57956635744928, 45.497605169651614], [-73.57948122283224, 45.49769091207221], [-73.57953219634075, 45.497715946247425], [-73.57950942730618, 45.49773888112614], [-73.57948665825312, 45.49776181600022], [-73.57946779765572, 45.49775255173118], [-73.5794529249259, 45.49776753098267], [-73.5794380521882, 45.49778251023223], [-73.5794031991453, 45.49776539243639], [-73.57935742452761, 45.49781149626111], [-73.57931164983522, 45.49785760006716], [-73.57931042303355, 45.497858707727076], [-73.5793091962319, 45.49785981538704], [-73.5793064876179, 45.49786266977316], [-73.5793241663915, 45.497871349990795], [-73.57932313525795, 45.497872385527465], [-73.5793365732836, 45.497878985549114], [-73.57935001131231, 45.49788558556917], [-73.57936344933792, 45.497892181088396], [-73.57937688736664, 45.4978987766061], [-73.57937740229337, 45.49789825883794], [-73.57937791722013, 45.4978977410698], [-73.57938148575774, 45.49789949328572]]]}, "properties": {"OBJECTID_12": 9, "gml_id": "1340983", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 19.431, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "3266.741", "parcelle": " ", "OBJECTID": 1052, "gml_id_1": "7e974d1b-2927-4864-a418-1c7293308ab5", "gml_pare_1": "1340983", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "228.251", "FID_": 0, "Join_Count": 2, "TARGET_FID": 1054, "gml_id_12": "1340983", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 19.431, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "3266.741", "Field": 0, "Field1": 0, "OBJECTID_1": 1052, "gml_id_12_": "7e974d1b-2927-4864-a418-1c7293308ab5", "gml_pare_3": "1340983", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "228.251", "cityGML_hi": 0, "Z_Min": 45.7957, "Z_Max": 63.513, "Shape_Leng": 95.7443169372, "ID_UEV": "01036800", "CIVIQUE_DE": " 2150", "CIVIQUE_FI": " 2150", "NOM_RUE": "rue Bishop (MTL)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 1, "ANNEE_CONS": 1900, "CODE_UTILI": "6000", "LIBELLE_UT": "Immeuble \u00e0 bureaux", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-57-8961-7-000-0000", "SUPERFICIE": 280, "SUPERFIC_1": 665, "NO_ARROND_": "REM19", "Shape_Le_1": 0.000986139567008, "Shape_Ar_1": 3.23120258539e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 95.74431693720996, "Shape_Area": 218.19171039698008}}, {"type": "Feature", "id": 10, "geometry": {"type": "Polygon", "coordinates": [[[-73.57917935756979, 45.49776572778646], [-73.57917213839988, 45.49777301252861], [-73.57916139265382, 45.49778382710295], [-73.57915631877064, 45.49778893453445], [-73.57916608963761, 45.49779373203033], [-73.57918463777067, 45.49780283819319], [-73.57920318335066, 45.497811944354844], [-73.57921072501661, 45.4978156473825], [-73.579220941478, 45.49782066322677], [-73.57923114897817, 45.49782567457711], [-73.57923389931885, 45.49782702513492], [-73.5792389731858, 45.497821908701546], [-73.57924492103257, 45.49781592061259], [-73.57925086887815, 45.49780993252337], [-73.57925833082611, 45.49780241364841], [-73.5793348923839, 45.497725297856135], [-73.5793462897126, 45.497713816928176], [-73.57935470994548, 45.497705343546414], [-73.57935747564652, 45.4977067003895], [-73.57940993907073, 45.49765386108062], [-73.57939653309744, 45.497647274542715], [-73.57938312712723, 45.49764068800324], [-73.57938965629212, 45.49763410560552], [-73.57937045005214, 45.49762467958845], [-73.5793639080908, 45.49763126199399], [-73.57935818462715, 45.49762844945861], [-73.57930572117805, 45.49768128874398], [-73.57930772503039, 45.497682272681935], [-73.57930972888272, 45.497683256619894], [-73.5793013214417, 45.4976917299895], [-73.57929592304279, 45.497697168795185], [-73.57929052464284, 45.49770260760065], [-73.57925792522492, 45.49768659500404], [-73.57925494172528, 45.49768959805404], [-73.57925195822533, 45.49769260110396], [-73.57917935756979, 45.49776572778646]]]}, "properties": {"OBJECTID_12": 10, "gml_id": "1340985", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 18.372, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "2219.559", "parcelle": " ", "OBJECTID": 1053, "gml_id_1": "b779a31f-02ef-4678-a57f-c388c7760100", "gml_pare_1": "1340985", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "159.143", "FID_": 0, "Join_Count": 2, "TARGET_FID": 1055, "gml_id_12": "1340985", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 18.372, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "2219.559", "Field": 0, "Field1": 0, "OBJECTID_1": 1053, "gml_id_12_": "b779a31f-02ef-4678-a57f-c388c7760100", "gml_pare_3": "1340985", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "159.143", "cityGML_hi": 0, "Z_Min": 45.223, "Z_Max": 61.553, "Shape_Leng": 65.1742766185, "ID_UEV": "01036796", "CIVIQUE_DE": " 2110", "CIVIQUE_FI": " 2130", "NOM_RUE": "rue Bishop (MTL)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 1, "ANNEE_CONS": 1900, "CODE_UTILI": "6000", "LIBELLE_UT": "Immeuble \u00e0 bureaux", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-67-0153-8-000-0000", "SUPERFICIE": 285, "SUPERFIC_1": 398, "NO_ARROND_": "REM19", "Shape_Le_1": 0.000986262845564, "Shape_Ar_1": 3.23976569507e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 65.17427661846392, "Shape_Area": 150.771154101762}}, {"type": "Feature", "id": 11, "geometry": {"type": "Polygon", "coordinates": [[[-73.57925833082611, 45.49780241364841], [-73.57925086887815, 45.49780993252337], [-73.5792389731858, 45.497821908701546], [-73.57923389931885, 45.49782702513492], [-73.5792380926954, 45.49782908646827], [-73.5792422873518, 45.49783114780058], [-73.57925126949104, 45.497835555303936], [-73.57926025163171, 45.49783996280667], [-73.57928392660385, 45.497851590358124], [-73.57928592405783, 45.49785256980165], [-73.5792961162062, 45.497857574857875], [-73.57930130191184, 45.497860122315686], [-73.5793064876179, 45.49786266977316], [-73.5793091962319, 45.49785981538704], [-73.57931164983522, 45.49785760006716], [-73.5794031991453, 45.49776539243639], [-73.5794096005585, 45.49775894510306], [-73.57941600197024, 45.497752497769405], [-73.579417640913, 45.49775330648953], [-73.57942061148255, 45.49775476217153], [-73.57945587670994, 45.49771923879925], [-73.57945291893667, 45.49771778310934], [-73.57940588915585, 45.4976946898204], [-73.57936219090806, 45.497738704566], [-73.5793348923839, 45.497725297856135], [-73.57925833082611, 45.49780241364841]]]}, "properties": {"OBJECTID_12": 11, "gml_id": "1340984", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 18.457, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "1847.282", "parcelle": " ", "OBJECTID": 1054, "gml_id_1": "2ca1aceb-43c6-4430-b90c-6d6fad2fcc4e", "gml_pare_1": "1340984", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "130.466", "FID_": 0, "Join_Count": 2, "TARGET_FID": 1056, "gml_id_12": "1340984", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 18.457, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "1847.282", "Field": 0, "Field1": 0, "OBJECTID_1": 1054, "gml_id_12_": "2ca1aceb-43c6-4430-b90c-6d6fad2fcc4e", "gml_pare_3": "1340984", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "130.466", "cityGML_hi": 0, "Z_Min": 45.4996, "Z_Max": 62.479, "Shape_Leng": 54.2327049658, "ID_UEV": "01036800", "CIVIQUE_DE": " 2150", "CIVIQUE_FI": " 2150", "NOM_RUE": "rue Bishop (MTL)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 1, "ANNEE_CONS": 1900, "CODE_UTILI": "6000", "LIBELLE_UT": "Immeuble \u00e0 bureaux", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-57-8961-7-000-0000", "SUPERFICIE": 280, "SUPERFIC_1": 665, "NO_ARROND_": "REM19", "Shape_Le_1": 0.000986139567008, "Shape_Ar_1": 3.23120258539e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 54.23270496582495, "Shape_Area": 123.4302126118902}}, {"type": "Feature", "id": 12, "geometry": {"type": "Polygon", "coordinates": [[[-73.57945149010348, 45.49793915473101], [-73.57945502047383, 45.497935600591106], [-73.57945748913181, 45.49793681276347], [-73.57945995778985, 45.49793802493576], [-73.57946108986009, 45.49793688584562], [-73.57946222064952, 45.49793574585649], [-73.57946503164756, 45.497932909392325], [-73.5794800321942, 45.497917804072586], [-73.57949503273288, 45.49790269875081], [-73.57950823165471, 45.49788939886833], [-73.57952143057031, 45.497876098984314], [-73.57952481016481, 45.49787269972034], [-73.57952818975889, 45.49786930045622], [-73.57963374256275, 45.49776298233438], [-73.57963739684415, 45.497759299424665], [-73.57956562282082, 45.49772405755894], [-73.5795624921933, 45.497722521006246], [-73.57955974509859, 45.4977252944393], [-73.57953557695755, 45.497749634054365], [-73.5795114087957, 45.497773973664174], [-73.57945076790263, 45.49783505227953], [-73.57939012687844, 45.49789613086214], [-73.57938759058709, 45.49789868818189], [-73.57938505429556, 45.49790124550157], [-73.57941717242674, 45.49791701633786], [-73.5794136407655, 45.497920563278754], [-73.57943256542505, 45.497929854507255], [-73.57944202776348, 45.49793450461953], [-73.57945149010348, 45.49793915473101]]]}, "properties": {"OBJECTID_12": 12, "gml_id": "1340982", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 19.113, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "2931.350", "parcelle": " ", "OBJECTID": 1056, "gml_id_1": "384b2b1c-2e25-4f6a-b082-d272dba3453f", "gml_pare_1": "1340982", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "191.404", "FID_": 0, "Join_Count": 2, "TARGET_FID": 1058, "gml_id_12": "1340982", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 19.113, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "2931.350", "Field": 0, "Field1": 0, "OBJECTID_1": 1056, "gml_id_12_": "384b2b1c-2e25-4f6a-b082-d272dba3453f", "gml_pare_3": "1340982", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "191.404", "cityGML_hi": 0, "Z_Min": 46.1162, "Z_Max": 64.399, "Shape_Leng": 63.6906066955, "ID_UEV": "01036804", "CIVIQUE_DE": " 2170", "CIVIQUE_FI": " 2170", "NOM_RUE": "rue Bishop (MTL)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 1, "ANNEE_CONS": 1900, "CODE_UTILI": "6000", "LIBELLE_UT": "Immeuble \u00e0 bureaux", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-57-7770-3-000-0000", "SUPERFICIE": 259, "SUPERFIC_1": 490, "NO_ARROND_": "REM19", "Shape_Le_1": 0.00093336765858, "Shape_Ar_1": 3.0845126501e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 63.69060669550123, "Shape_Area": 174.69050030775531}}, {"type": "Feature", "id": 13, "geometry": {"type": "Polygon", "coordinates": [[[-73.57974780341223, 45.49754757007826], [-73.57984256629233, 45.49759340492552], [-73.57991780909609, 45.49751646063186], [-73.57994883758664, 45.49748472841364], [-73.57997986604235, 45.497452996186816], [-73.57999511408877, 45.497450213989595], [-73.58000727759342, 45.497437778623805], [-73.5800039502881, 45.49742836858517], [-73.58000774499132, 45.497424487599275], [-73.58001153969407, 45.497420606613304], [-73.58001533439626, 45.4974167256272], [-73.58000314365833, 45.49741082938919], [-73.58000403930937, 45.4974099127206], [-73.58000021089934, 45.497408061723114], [-73.57999475636936, 45.497405420001535], [-73.57998834154517, 45.49740232003162], [-73.57998492286497, 45.49740066671242], [-73.57998402593424, 45.49740158338177], [-73.57997832813383, 45.497398827549496], [-73.5799735592289, 45.4973815799774], [-73.57996222140854, 45.497376206847115], [-73.57995088359029, 45.4973708337157], [-73.5799390208309, 45.497372456338496], [-73.5799271593516, 45.49737407985903], [-73.57992400315722, 45.49737255323233], [-73.57992167774252, 45.49737490345247], [-73.57991904573784, 45.49737760482627], [-73.57991641373293, 45.49738030619999], [-73.57988529584178, 45.49741212845694], [-73.57985417791562, 45.49744395070526], [-73.5798485050039, 45.49744974966685], [-73.579842832091, 45.49745554862816], [-73.57982646497659, 45.4974722881688], [-73.5797992119665, 45.49750014838686], [-73.57979580608117, 45.49749849505307], [-73.57974780341223, 45.49754757007826]]]}, "properties": {"OBJECTID_12": 13, "gml_id": "1340977", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 21.21, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "3181.173", "parcelle": " ", "OBJECTID": 1061, "gml_id_1": "e7eeaef5-3bc6-408a-809f-d9443a8cfec4", "gml_pare_1": "1340977", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "231.998", "FID_": 0, "Join_Count": 1, "TARGET_FID": 1063, "gml_id_12": "1340977", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 21.21, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "3181.173", "Field": 0, "Field1": 0, "OBJECTID_1": 1061, "gml_id_12_": "e7eeaef5-3bc6-408a-809f-d9443a8cfec4", "gml_pare_3": "1340977", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "231.998", "cityGML_hi": 0, "Z_Min": 46.8229, "Z_Max": 65.582, "Shape_Leng": 67.6702949266, "ID_UEV": "01036895", "CIVIQUE_DE": " 2149", "CIVIQUE_FI": " 2149", "NOM_RUE": "rue Mackay (MTL)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 1, "ANNEE_CONS": 1885, "CODE_UTILI": "6000", "LIBELLE_UT": "Immeuble \u00e0 bureaux", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-57-5732-5-000-0000", "SUPERFICIE": 291, "SUPERFIC_1": 414, "NO_ARROND_": "REM19", "Shape_Le_1": 0.000915667266366, "Shape_Ar_1": 3.34774025218e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 67.67029492660554, "Shape_Area": 215.58319925217702}}, {"type": "Feature", "id": 14, "geometry": {"type": "Polygon", "coordinates": [[[-73.57983014021285, 45.49733857776713], [-73.57977053635722, 45.49739952085559], [-73.57976060876642, 45.49740967802941], [-73.57975996991772, 45.49741032636327], [-73.57975110280621, 45.49741940298288], [-73.57973674162459, 45.497434080467286], [-73.57974802838112, 45.49743954363995], [-73.57975931513982, 45.497445006811546], [-73.57973552465266, 45.497469337207946], [-73.57979580608117, 45.49749849505307], [-73.5797992119665, 45.49750014838686], [-73.57981283847491, 45.49748621827867], [-73.57982646497659, 45.4974722881688], [-73.579842832091, 45.49745554862816], [-73.57985417791562, 45.49744395070526], [-73.57991641373293, 45.49738030619999], [-73.57991904573784, 45.49737760482627], [-73.57992167774252, 45.49737490345247], [-73.57992400315722, 45.49737255323233], [-73.57989296746888, 45.497357542148215], [-73.57988819475113, 45.497340291875524], [-73.57986551914532, 45.49732954559678], [-73.5798417936395, 45.49733279172328], [-73.57983976164203, 45.497331808714165], [-73.57983772836512, 45.49733082570586], [-73.57983014021285, 45.49733857776713]]]}, "properties": {"OBJECTID_12": 14, "gml_id": "1340979", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 21.426, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "2521.567", "parcelle": " ", "OBJECTID": 1062, "gml_id_1": "5594988d-179a-4011-9e87-fc55190610dc", "gml_pare_1": "1340979", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "153.117", "FID_": 0, "Join_Count": 2, "TARGET_FID": 1064, "gml_id_12": "1340979", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 21.426, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "2521.567", "Field": 0, "Field1": 0, "OBJECTID_1": 1062, "gml_id_12_": "5594988d-179a-4011-9e87-fc55190610dc", "gml_pare_3": "1340979", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "153.117", "cityGML_hi": 0, "Z_Min": 46.6081, "Z_Max": 65.831, "Shape_Leng": 51.9099690826, "ID_UEV": "01036895", "CIVIQUE_DE": " 2149", "CIVIQUE_FI": " 2149", "NOM_RUE": "rue Mackay (MTL)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 1, "ANNEE_CONS": 1885, "CODE_UTILI": "6000", "LIBELLE_UT": "Immeuble \u00e0 bureaux", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-57-5732-5-000-0000", "SUPERFICIE": 291, "SUPERFIC_1": 414, "NO_ARROND_": "REM19", "Shape_Le_1": 0.000915667266366, "Shape_Ar_1": 3.34774025218e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 51.90996908257286, "Shape_Area": 138.5517090007147}}, {"type": "Feature", "id": 15, "geometry": {"type": "Polygon", "coordinates": [[[-73.57967911439258, 45.497381587781966], [-73.57966106069952, 45.4974000471778], [-73.5797350423044, 45.4974358183526], [-73.57973674162459, 45.497434080467286], [-73.57975110280621, 45.49741940298288], [-73.57975996991772, 45.49741032636327], [-73.57976060876642, 45.49740967802941], [-73.57977053635722, 45.49739952085559], [-73.57983014021285, 45.49733857776713], [-73.57983772836512, 45.49733082570586], [-73.57983144543297, 45.49732778502466], [-73.57983220948644, 45.49732700432584], [-73.57982836829243, 45.49732515333147], [-73.57982291377847, 45.49732251160167], [-73.57981745927776, 45.497319878869966], [-73.57981526979033, 45.49731881858383], [-73.57981308030296, 45.497317758297655], [-73.57981270210901, 45.497318144595035], [-73.57981232519586, 45.49731853179136], [-73.57980991163919, 45.49731736368042], [-73.5798074993634, 45.497316196468354], [-73.57980875324232, 45.49731525075593], [-73.57981000712124, 45.497314305043574], [-73.57981061320419, 45.49731039029827], [-73.57980714396133, 45.497302826832964], [-73.57980753113348, 45.497302455826684], [-73.57980715978543, 45.497302253621186], [-73.57980678843734, 45.49730205141573], [-73.57979851344422, 45.49729549733339], [-73.57979282981492, 45.497293701615604], [-73.57978714618723, 45.497291906797386], [-73.57978627548681, 45.4972914655821], [-73.57978581931181, 45.49729190142528], [-73.57978024567045, 45.49729188102247], [-73.57977467075081, 45.497291861520104], [-73.57977129427854, 45.49729290589765], [-73.57976791652783, 45.49729395117582], [-73.57976612963967, 45.497296194835144], [-73.57976493886902, 45.49729561976642], [-73.57976374809843, 45.49729504469771], [-73.57975995338074, 45.49729892117635], [-73.57975615866256, 45.49730279765487], [-73.57967911439258, 45.497381587781966]]]}, "properties": {"OBJECTID_12": 15, "gml_id": "1340980", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 21.293, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "1866.322", "parcelle": " ", "OBJECTID": 1067, "gml_id_1": "276abd9a-9946-4d8b-8177-d734e8ec19b7", "gml_pare_1": "1340980", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "122.382", "FID_": 0, "Join_Count": 2, "TARGET_FID": 1069, "gml_id_12": "1340980", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 21.293, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "1866.322", "Field": 0, "Field1": 0, "OBJECTID_1": 1067, "gml_id_12_": "276abd9a-9946-4d8b-8177-d734e8ec19b7", "gml_pare_3": "1340980", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "122.382", "cityGML_hi": 0, "Z_Min": 46.2361, "Z_Max": 65.772, "Shape_Leng": 44.2022513906, "ID_UEV": "01036891", "CIVIQUE_DE": " 2135", "CIVIQUE_FI": " 2135", "NOM_RUE": "rue Mackay (MTL)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 1, "ANNEE_CONS": 1889, "CODE_UTILI": "6000", "LIBELLE_UT": "Immeuble \u00e0 bureaux", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-57-7023-7-000-0000", "SUPERFICIE": 238, "SUPERFIC_1": 287, "NO_ARROND_": "REM19", "Shape_Le_1": 0.000884574343474, "Shape_Ar_1": 2.80211352203e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 44.20225139057528, "Shape_Area": 104.06763995868576}}, {"type": "Feature", "id": 16, "geometry": {"type": "MultiPolygon", "coordinates": [[[[-73.5792850543535, 45.497606679023576], [-73.57929811459073, 45.49761309484425], [-73.57931117483092, 45.497619510663434], [-73.57924482630267, 45.49768909666017], [-73.57925195822533, 45.49769260110396], [-73.57925494172528, 45.49768959805404], [-73.57925792522492, 45.49768659500404], [-73.57925510832071, 45.497685220197184], [-73.57946017299355, 45.49747151773975], [-73.5794326569038, 45.49745800322266], [-73.5792850543535, 45.497606679023576]]], [[[-73.5791134691732, 45.49777123549308], [-73.57915246432574, 45.497731057437555], [-73.57914894323693, 45.497729368170646], [-73.57913068501925, 45.4977481740632], [-73.57911242678945, 45.49776697995279], [-73.57901141637164, 45.497718494282914], [-73.57953047467159, 45.49718374366234], [-73.57963218879704, 45.497232570327874], [-73.57961114559149, 45.49725425324233], [-73.57961369997138, 45.497255479749235], [-73.57961625435132, 45.49725670625608], [-73.57963996788958, 45.497232276954406], [-73.57953314500816, 45.49718099727848], [-73.57953489541909, 45.49717919637148], [-73.57917999208591, 45.497008814490385], [-73.57882509089254, 45.496838431500166], [-73.57829772400852, 45.49738173316231], [-73.57865262702879, 45.49755211777352], [-73.579007532189, 45.497722501275554], [-73.57900893765013, 45.4977210515545], [-73.5791134691732, 45.49777123549308]]], [[[-73.57917213839988, 45.49777301252861], [-73.57918252258027, 45.49777810744639], [-73.57918974176204, 45.49777083170201], [-73.57917935756979, 45.49776572778646], [-73.57917213839988, 45.49777301252861]]]]}, "properties": {"OBJECTID_12": 16, "gml_id": "1340971", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 74.291, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "295828.067", "parcelle": " ", "OBJECTID": 1073, "gml_id_1": "aeeb9f89-ee59-429e-92e5-5d37a3217599", "gml_pare_1": "1340971", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "5031.989", "FID_": 0, "Join_Count": 2, "TARGET_FID": 1075, "gml_id_12": "1340971", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 74.291, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "295828.067", "Field": 0, "Field1": 0, "OBJECTID_1": 1073, "gml_id_12_": "aeeb9f89-ee59-429e-92e5-5d37a3217599", "gml_pare_3": "1340971", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "5031.989", "cityGML_hi": 0, "Z_Min": 42.7058, "Z_Max": 116.997, "Shape_Leng": 405.439930403, "ID_UEV": "01036796", "CIVIQUE_DE": " 2110", "CIVIQUE_FI": " 2130", "NOM_RUE": "rue Bishop (MTL)", "MUNICIPALI": "50", "ETAGE_HORS": 3, "NOMBRE_LOG": 1, "ANNEE_CONS": 1900, "CODE_UTILI": "6000", "LIBELLE_UT": "Immeuble \u00e0 bureaux", "CATEGORIE_": "R\u00e9gulier", "MATRICULE8": "9839-67-0153-8-000-0000", "SUPERFICIE": 285, "SUPERFIC_1": 398, "NO_ARROND_": "REM19", "Shape_Le_1": 0.000986262845564, "Shape_Ar_1": 3.23976569507e-08, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 405.439930402917, "Shape_Area": 4981.782847448918}}, {"type": "Feature", "id": 67, "geometry": {"type": "Polygon", "coordinates": [[[-73.58010292891963, 45.49799287036775], [-73.58011273680593, 45.49799752468131], [-73.58012031084986, 45.49798971412218], [-73.58012467974646, 45.49799190127798], [-73.58013996111403, 45.49797643123792], [-73.58013533883219, 45.49797421816498], [-73.580163524261, 45.49794515412329], [-73.58015964461515, 45.49794329416885], [-73.58015410031787, 45.497940553535265], [-73.58015255099711, 45.497939794254236], [-73.5801510016764, 45.49793903497323], [-73.58001902738776, 45.49787401478859], [-73.58001388645148, 45.49787148082968], [-73.58000874551566, 45.49786894687061], [-73.58000229214359, 45.49786577044202], [-73.57999583877229, 45.49786259401303], [-73.57995569725507, 45.49784281655128], [-73.57994983287693, 45.49783992315832], [-73.57994396849938, 45.497837029765], [-73.57991633683041, 45.497823425461746], [-73.57991587587279, 45.49782319632402], [-73.5799154149152, 45.4978229671863], [-73.57987280223287, 45.49780197663469], [-73.57981665544915, 45.4977743096838], [-73.57981413841381, 45.49777689399493], [-73.57978767638981, 45.4978032149227], [-73.5797612143412, 45.49782953584428], [-73.57976492760102, 45.4978313779316], [-73.5798290710499, 45.49786323259251], [-73.57989321457111, 45.49789508721708], [-73.57992789525107, 45.49791230846571], [-73.57996257595215, 45.49792952970371], [-73.57996346391319, 45.497928597743545], [-73.57996435187418, 45.49792766578335], [-73.58010292891963, 45.49799287036775]]]}, "properties": {"OBJECTID_12": 67, "gml_id": "1340976", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 19.382, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "4651.759", "parcelle": " ", "OBJECTID": 1286, "gml_id_1": "e517a034-8126-49b9-89d2-29935510f1b5", "gml_pare_1": "1340976", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "259.608", "FID_": 0, "Join_Count": 70, "TARGET_FID": 1288, "gml_id_12": "1340976", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 19.382, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "4651.759", "Field": 0, "Field1": 0, "OBJECTID_1": 1286, "gml_id_12_": "e517a034-8126-49b9-89d2-29935510f1b5", "gml_pare_3": "1340976", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "259.608", "cityGML_hi": 0, "Z_Min": 47.8483, "Z_Max": 67.23, "Shape_Leng": 81.988433275, "ID_UEV": "05240505", "CIVIQUE_DE": " 1420", "CIVIQUE_FI": " 1420", "NOM_RUE": "rue Sherbrooke Ouest (MTL+MTO+WMT)", "MUNICIPALI": "50", "ETAGE_HORS": 2, "NOMBRE_LOG": 1, "ANNEE_CONS": 1960, "CODE_UTILI": "1921", "LIBELLE_UT": "Stationnement int\u00e9rieur (condo)", "CATEGORIE_": "Condominium", "MATRICULE8": "9839-57-5991-7-000-0059", "SUPERFICIE": 2, "SUPERFIC_1": 417, "NO_ARROND_": "REM19", "Shape_Le_1": 0.00140439072469, "Shape_Ar_1": 1.1105277353e-07, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 81.98843327497843, "Shape_Area": 246.09568398597227}}, {"type": "Feature", "id": 68, "geometry": {"type": "Polygon", "coordinates": [[[-73.57964976661111, 45.497942971460205], [-73.57962425755655, 45.497969197201265], [-73.57962510262334, 45.49796960154196], [-73.57962594769015, 45.497970005882685], [-73.57956790220166, 45.49802967899225], [-73.57980654544164, 45.498144485574635], [-73.57981023943898, 45.49814626288509], [-73.57980717928245, 45.49814934428925], [-73.57993619589217, 45.49821272007089], [-73.57999882994953, 45.49814966014923], [-73.57999206284883, 45.49814633636552], [-73.57998529575022, 45.49814301348126], [-73.580065380923, 45.498060681940416], [-73.58005612479505, 45.49805622700149], [-73.58006709099395, 45.49804485608538], [-73.58007240631309, 45.49804312105965], [-73.58008211444711, 45.498031560257076], [-73.58008148515943, 45.49802992928109], [-73.58011273680593, 45.49799752468131], [-73.58010292891963, 45.49799287036775], [-73.57996435187418, 45.49792766578335], [-73.57996346391319, 45.497928597743545], [-73.57996257595215, 45.49792952970371], [-73.57992789525107, 45.49791230846571], [-73.57989321457111, 45.49789508721708], [-73.57976492760102, 45.4978313779316], [-73.5797077895784, 45.49789013263914], [-73.57967978268813, 45.49791892019202], [-73.579675275642, 45.497916745713354], [-73.57964976661111, 45.497942971460205]]]}, "properties": {"OBJECTID_12": 68, "gml_id": "PC-35007", "gml_parent": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_ta": "http://www.opengis.net/citygml/building/2.0", "citygml_fe": "cityObjectMember", "citygml__1": " ", "citygml__2": " ", "gml_descri": " ", "gml_name": " ", "citygml_cr": " ", "citygml_te": " ", "externalRe": " ", "external_1": " ", "external_2": " ", "citygml_ge": " ", "citygml_re": " ", "citygml__3": " ", "citygml_ap": " ", "citygml_cl": " ", "citygml__4": " ", "citygml_fu": " ", "citygml__5": " ", "citygml_us": " ", "citygml__6": " ", "citygml_ye": " ", "citygml__7": " ", "citygml_ro": " ", "citygml__8": " ", "citygml_me": 48.094, "citygml__9": "#m", "citygml_st": " ", "citygml_10": " ", "citygml_11": " ", "citygml_12": " ", "citygml_13": " ", "citygml_14": " ", "citygml_ou": " ", "citygml_in": " ", "citygml_bo": " ", "citygml_le": " ", "citygml_15": " ", "citygml_co": " ", "citygml_ad": " ", "Volume": "34105.224", "parcelle": " ", "OBJECTID": 1300, "gml_id_1": "3b092f68-5bb3-47d8-8cba-6388c31001e0", "gml_pare_1": "PC-35007", "citygml_16": "http://www.opengis.net/citygml/building/2.0", "citygml_17": "boundedBy", "citygml_18": " ", "citygml_19": " ", "gml_desc_1": " ", "gml_name_1": " ", "citygml_20": " ", "citygml_21": " ", "external_3": " ", "external_4": " ", "external_5": " ", "citygml_22": " ", "citygml_23": " ", "citygml_24": " ", "citygml_25": " ", "citygml_26": " ", "citygml_op": " ", "Area": "933.942", "FID_": 0, "Join_Count": 69, "TARGET_FID": 1302, "gml_id_12": "PC-35007", "gml_pare_2": "fme-gen-5fa2a82b-c38e-4bf0-9e8f-10a47b9f64f7", "citygml_27": "http://www.opengis.net/citygml/building/2.0", "citygml_28": "cityObjectMember", "citygml_29": " ", "citygml_30": " ", "gml_desc_2": " ", "gml_name_2": " ", "citygml_31": " ", "citygml_32": " ", "external_6": " ", "external_7": " ", "external_8": " ", "citygml_33": " ", "citygml_34": " ", "citygml_35": " ", "citygml_36": " ", "citygml_37": " ", "citygml_38": " ", "citygml_39": " ", "citygml_40": " ", "citygml_41": " ", "citygml_42": " ", "citygml_43": " ", "citygml_44": " ", "citygml_45": " ", "citygml_46": " ", "citygml_47": 48.094, "citygml_48": "#m", "citygml_49": " ", "citygml_50": " ", "citygml_51": " ", "citygml_52": " ", "citygml_53": " ", "citygml_54": " ", "citygml_55": " ", "citygml_56": " ", "citygml_57": " ", "citygml_58": " ", "citygml_59": " ", "citygml_60": " ", "citygml_61": " ", "Volume_1": "34105.224", "Field": 0, "Field1": 0, "OBJECTID_1": 1300, "gml_id_12_": "3b092f68-5bb3-47d8-8cba-6388c31001e0", "gml_pare_3": "PC-35007", "citygml_62": "http://www.opengis.net/citygml/building/2.0", "citygml_63": "boundedBy", "citygml_64": " ", "citygml_65": " ", "gml_desc_3": " ", "gml_name_3": " ", "citygml_66": " ", "citygml_67": " ", "external_9": " ", "externa_10": " ", "externa_11": " ", "citygml_68": " ", "citygml_69": " ", "citygml_70": " ", "citygml_71": " ", "citygml_72": " ", "citygml_73": " ", "Area_1": "933.942", "cityGML_hi": 0, "Z_Min": 47.4968, "Z_Max": 95.591, "Shape_Leng": 126.06526888, "ID_UEV": "05240505", "CIVIQUE_DE": " 1420", "CIVIQUE_FI": " 1420", "NOM_RUE": "rue Sherbrooke Ouest (MTL+MTO+WMT)", "MUNICIPALI": "50", "ETAGE_HORS": 2, "NOMBRE_LOG": 1, "ANNEE_CONS": 1960, "CODE_UTILI": "1921", "LIBELLE_UT": "Stationnement int\u00e9rieur (condo)", "CATEGORIE_": "Condominium", "MATRICULE8": "9839-57-5991-7-000-0059", "SUPERFICIE": 2, "SUPERFIC_1": 417, "NO_ARROND_": "REM19", "Shape_Le_1": 0.00140439072469, "Shape_Ar_1": 1.1105277353e-07, "Z_Min_1": null, "Z_Max_1": null, "Shape_Length": 126.0652688796645, "Shape_Area": 920.1220129190524}}]}
\ No newline at end of file
diff --git a/tests/tests_data/w2w_user_output.csv b/tests/tests_data/w2w_user_output.csv
new file mode 100644
index 0000000..bb3612f
--- /dev/null
+++ b/tests/tests_data/w2w_user_output.csv
@@ -0,0 +1,14 @@
+,Monthly HP Electricity Demand (kWh),Monthly Fuel Consumption of Auxiliary Heater (m3)
+Jan,1031544.62,24276356.0
+Feb,874352.562,19785768.0
+Mar,691775.25,117312.656
+Apr,280416.469,-0.0
+May,0.0,40314676.0
+Jun,0.0,5447721.0
+Jul,0.0,1187115.88
+Aug,0.0,1961530.88
+Sept,0.0,20623850.0
+Oct,191220.531,-0.0
+Nov,423974.062,-0.0
+Dec,848334.875,6793204.5
+Total,4341618.369,120507534.91600001
diff --git a/tests/tests_outputs/.gitignore b/tests/tests_outputs/.gitignore
new file mode 100644
index 0000000..e0a497a
--- /dev/null
+++ b/tests/tests_outputs/.gitignore
@@ -0,0 +1,3 @@
+# Except this file
+*
+!.gitignore
\ No newline at end of file