diff --git a/utilities/trunk/practices/deprecated/Presentation_Paradiseo_ArchiveTP.pdf b/utilities/trunk/practices/deprecated/Presentation_Paradiseo_ArchiveTP.pdf new file mode 100644 index 000000000..ad72042ce Binary files /dev/null and b/utilities/trunk/practices/deprecated/Presentation_Paradiseo_ArchiveTP.pdf differ diff --git a/utilities/trunk/practices/deprecated/TP_2_Paradiseo_Tabu_Search.pdf b/utilities/trunk/practices/deprecated/TP_2_Paradiseo_Tabu_Search.pdf new file mode 100644 index 000000000..cc709f421 Binary files /dev/null and b/utilities/trunk/practices/deprecated/TP_2_Paradiseo_Tabu_Search.pdf differ diff --git a/utilities/trunk/practices/deprecated/TP_3_Paradiseo_genetic_algorithm.pdf b/utilities/trunk/practices/deprecated/TP_3_Paradiseo_genetic_algorithm.pdf new file mode 100644 index 000000000..c4eff2111 Binary files /dev/null and b/utilities/trunk/practices/deprecated/TP_3_Paradiseo_genetic_algorithm.pdf differ diff --git a/utilities/trunk/practices/deprecated/tp_opti_18_02_2008.tgz b/utilities/trunk/practices/deprecated/tp_opti_18_02_2008.tgz new file mode 100644 index 000000000..dc254563c Binary files /dev/null and b/utilities/trunk/practices/deprecated/tp_opti_18_02_2008.tgz differ diff --git a/utilities/trunk/practices/deprecated/tp_opti_23_10_2007.tgz b/utilities/trunk/practices/deprecated/tp_opti_23_10_2007.tgz new file mode 100644 index 000000000..d86faccda Binary files /dev/null and b/utilities/trunk/practices/deprecated/tp_opti_23_10_2007.tgz differ diff --git a/utilities/trunk/practices/deprecated/tp_opti_gis_28092007.tgz b/utilities/trunk/practices/deprecated/tp_opti_gis_28092007.tgz new file mode 100644 index 000000000..7806d569a Binary files /dev/null and b/utilities/trunk/practices/deprecated/tp_opti_gis_28092007.tgz differ diff --git a/utilities/trunk/practices/paradiseo_practices_0208/CMakeLists.txt b/utilities/trunk/practices/paradiseo_practices_0208/CMakeLists.txt new file mode 100644 index 000000000..14e29c345 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/CMakeLists.txt @@ -0,0 +1,64 @@ + +###################################################################################### +### 1) Project properties +###################################################################################### + +# set the project name +PROJECT(paradisEO-practices) + +# check cmake version compatibility +CMAKE_MINIMUM_REQUIRED(VERSION 2.4 FATAL_ERROR) + +# regular expression checking +INCLUDE_REGULAR_EXPRESSION("^.*$" "^$") + +# set a language +ENABLE_LANGUAGE(CXX) +ENABLE_LANGUAGE(C) + +##################################################################################### + + +###################################################################################### +### 2) Include the main configuration variables +###################################################################################### + +# Need the config file whose full path is given thanks to the "config" variable +INCLUDE("install.cmake") + +###################################################################################### + + +###################################################################################### +### 3) Paths checking +###################################################################################### + +IF(WIN32) + SET (ABSOLUTE_PATH_REGEX "^[A-Z]:|^[a-z]:") +ELSE(WIN32) + SET (ABSOLUTE_PATH_REGEX "^/") +ENDIF(WIN32) + +SET(REQUIRED_PATHS "EO_SRC_DIR" "EO_BIN_DIR" "MO_SRC_DIR" "MO_BIN_DIR") +FOREACH (path ${REQUIRED_PATHS}) + IF(EXISTS ${${path}}) + MESSAGE (STATUS "Using ${path}=${${path}}") + ELSE(EXISTS ${${path}}) + MESSAGE (FATAL_ERROR "\n Cannot find \"${${path}}\". Please, fill \"${config}\" with a correct value") + ENDIF(EXISTS ${${path}}) + + IF(NOT ${${path}} MATCHES "${ABSOLUTE_PATH_REGEX}") + MESSAGE (FATAL_ERROR "${${path}} MUST BE an absolute path") + ENDIF(NOT ${${path}} MATCHES "${ABSOLUTE_PATH_REGEX}") +ENDFOREACH (path ${REQUIRED_PATHS}) +###################################################################################### + + +###################################################################################### +### 6) Where must cmake go now ? +###################################################################################### + +SUBDIRS(tsp lesson2 lesson3 lesson4 lesson5) + +###################################################################################### + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/README b/utilities/trunk/practices/paradiseo_practices_0208/README new file mode 100644 index 000000000..9e96f15ef --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/README @@ -0,0 +1,7 @@ + + +PARADISEO (PARallel and DIStributed Evolving Objects) is a white-box object-oriented framework dedicated to the flexible design of metaheursitics. Based on EO, this template-based, ANSI-C++ compliant computation library is portable across both Windows system and sequential platforms (Unix, Linux, MacOS, etc.). + +WEBSITE: http://paradiseo.gforge.inria.fr + + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/install.cmake b/utilities/trunk/practices/paradiseo_practices_0208/install.cmake new file mode 100644 index 000000000..6a7fb8271 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/install.cmake @@ -0,0 +1,61 @@ + +##################################################################################### +### Manage the build type +##################################################################################### +# the user should choose the build type on windows environments,excepted under cygwin (default=none) +SET(CMAKE_DEFAULT_BUILD_TYPE "Release" CACHE STRING "Variable that stores the default CMake build type" FORCE) + +FIND_PROGRAM(MEMORYCHECK_COMMAND + NAMES purify valgrind + PATHS + "/usr/local/bin /usr/bin [HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Purify\\Setup;InstallFolder]" + DOC "Path to the memory checking command, used for memory error detection.") +IF(NOT CMAKE_BUILD_TYPE) + SET( CMAKE_BUILD_TYPE + ${CMAKE_DEFAULT_BUILD_TYPE} CACHE STRING + "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." + FORCE) +ENDIF(NOT CMAKE_BUILD_TYPE) + +IF(WIN32 AND NOT CYGWIN) + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +ELSE(WIN32 AND NOT CYGWIN) + IF(CMAKE_COMPILER_IS_GNUCXX) + SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g -Wall -Wextra") + SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -O6") + ENDIF(CMAKE_COMPILER_IS_GNUCXX) +ENDIF(WIN32 AND NOT CYGWIN) + +IF(CMAKE_BUILD_TYPE MATCHES Debug) + ADD_DEFINITIONS(-DCMAKE_VERBOSE_MAKEFILE=ON) +ENDIF(CMAKE_BUILD_TYPE MATCHES Debug) + +##################################################################################### + + +########################################################################################################################################## +### ParadisEO Install Configuration +### The path to the modules EO and MO must be specified above. +########################################################################################################################################## + +SET(EO_SRC_DIR "E:\\temp\\ParadisEO\\paradiseo-eo" CACHE PATH "ParadisEO-EO source directory" FORCE) +SET(EO_BIN_DIR "E:\\temp\\ParadisEO\\paradiseo-eo\\build" CACHE PATH "ParadisEO-EO binary directory" FORCE) + +SET(MO_SRC_DIR "E:\\temp\\ParadisEO\\paradiseo-mo" CACHE PATH "ParadisMO-MO source directory" FORCE) +SET(MO_BIN_DIR "E:\\temp\\ParadisEO\\paradiseo-mo\\build" CACHE PATH "ParadisMO-MO binary directory" FORCE) + +########################################################################################################################################### + + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson1/lesson1.pdf b/utilities/trunk/practices/paradiseo_practices_0208/lesson1/lesson1.pdf new file mode 100644 index 000000000..5f1d939a6 Binary files /dev/null and b/utilities/trunk/practices/paradiseo_practices_0208/lesson1/lesson1.pdf differ diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson1/lesson1.tex b/utilities/trunk/practices/paradiseo_practices_0208/lesson1/lesson1.tex new file mode 100644 index 000000000..0785162dc --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/lesson1/lesson1.tex @@ -0,0 +1,216 @@ +\documentclass[a4paper]{article} + +\usepackage[english]{babel} +\usepackage{epsf} +\usepackage{amssymb} +\usepackage{here} +\usepackage{comment} +\usepackage{graphicx} + +\topmargin -2.5cm +\textheight 25,5cm +\textwidth 16cm +\oddsidemargin 0cm +\evensidemargin 0cm + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fichier entete +%\input /usr/local/home/gisEns/fseynhae/Ens/Entete.tex +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\begin{document} + +\textbf{ParadisEO Practices} {\copyright Franck Seynhaeve, +Jean-Charles Boisson, Thomas Legrand} \Large{\textbf{\\\\ +Lesson 1: Install ParadisEO and the practices}} + +\normalsize + + \vspace{-0,3cm} + +\section{The ParadisEO platform} + + \medskip + + ParadisEO\footnote{http$\,:$//paradiseo.gforge.inria.fr/} (PARallel and DIStributed Evolving Objects) is a white-box + object-oriented framework dedicated to the flexible design of metaheuristics. + Based on EO\footnote{\tt http$\,:$//eodev.sourceforge.net/} (Evolutionary Computation Framework), + this template-based, + ANSI-C++ compliant computation library is portable across both Windows + system and sequential platforms (Unix, Linux, MacOS, etc.). + + \smallskip + ParadisEO can be used under several environments as the build process (CMake) + is able to generate: + \begin{itemize} + \item[$\bullet$] Visual Studio 8 2005 (Win32 + Win64) projects + \item[$\bullet$] Visual Studio 7 .NET 2003 projects + \item[$\bullet$] Visual Studio 7 and 6 projects + \item[$\bullet$] NMake Makefiles + \item[$\bullet$] MinGW Makefiles + \item[$\bullet$] Borland Makefiles + \item[$\bullet$] KDevelop projects + \item[$\bullet$] Unix Makefiles + \item[$\bullet$] Xcode Projects + \item[$\bullet$] MSYS Makefiles + \item[$\bullet$] WMake Makefiles + \end{itemize} + + \smallskip + Paradiseo is composed of several packages that constitute a global framework. + + \begin{center} + \end{center} + + \begin{itemize} + \item[$\bullet$] Paradiseo-EO provides tools for the development of population-based metaheuristic: + \begin{itemize} + \item[$\ast$] Genetic algorithm + \item[$\ast$] Genetic programming + \item[$\ast$] Particle Swarm Optimization + \item[$\ast$] ... + \end{itemize} + \item[$\bullet$] Paradiseo-MO provides tools for the development of single solution-based metaheuristics: + \begin{itemize} + \item[$\ast$] Hill-Climbing + \item[$\ast$] Tabu Search + \item[$\ast$] Simulated annealing + \item[$\ast$] Incremental evaluation, partial neighbourhood + \item[$\ast$] ... + \end{itemize} + \item[$\bullet$] Paradiseo-MOEO provides tools for the design of Multi-objective metaheuristics: + \begin{itemize} + \item[$\ast$] MO fitness assignment shemes (the ones used in NSGA-II, IBEA ...) + \item[$\ast$] MO diversity assignment shemes (sharing, crowding) + \item[$\ast$] Elitism + \item[$\ast$] Performance metrics (contribution, entropy ...) + \item[$\ast$] Easy-to-use standard evolutionary algorithms (NSGA-II, IBEA ...) + \item[$\ast$] ... + \end{itemize} + \item[$\bullet$] Paradiseo-PEO provides tools for the design of parallel and distributed metaheuristics: + \begin{itemize} + \item[$\ast$] Parallel evaluation + \item[$\ast$] Parallel evaluation function + \item[$\ast$] Island model + \item[$\ast$] Cellular model + \end{itemize} + \end{itemize} + + \smallskip + Furthermore, Paradiseo also introduces tools for the design of distributed, hybrid and cooperative models: + \begin{itemize} + \item[$\bullet$] High level hybrid metaheuristics: coevolutionary and relay model + \item[$\bullet$] Low level hybrid metaheuristics: coevolutionary and relay model + \end{itemize} + + + +\section{Installation} + +\subsection{ParadisEO} + + The practices require ParadisEO to be installed on your + computer. You can easily process to the installation: + + \begin{itemize} + \item[$\bullet$] Make sure to have the following tools + available in your environment: + + \hspace{1cm}$\vartriangleright$ {\tt CMake} + \\\hspace*{1cm}$\vartriangleright$ {\tt Tar} or a similar extractor + + \item[$\bullet$] Download ParadisEO (choose the {\tt tar.gz} file) + from: + \\\hspace*{1cm}$\vartriangleright$ {\tt http$\,:$//www2.lifl.fr/OPAC/Paradiseo/licence/FrmDownload.php} + + \item[$\bullet$] Extract the content of the archive: + \\\hspace*{1cm}$\vartriangleright$ Put the archive {\tt + paradiseo-ix86-1.0.tar.gz} in the directory of your + choice. Let's suppose you put it in \textbf{{\tt + /home/me/software}} + \\\hspace*{1cm}$\vartriangleright$ Extract it by entering + the following line in a terminal: {\tt tar xzf paradiseo-ix86-1.0.tar.gz} + + \item[$\bullet$] Install it: + \\\hspace*{1cm}$\vartriangleright$ {\tt bash installParadiseo.sh} or {\tt sh + installParadiseo.sh} if your shell is a "sh" one + \\\hspace*{1cm}$\vartriangleright$ \textbf{Select your generator (Unix Makefiles recommended) } + \\\hspace*{1cm}$\vartriangleright$ \textbf{Select the minimum installation mode by choosing the \emph{basic install} } + + + \end{itemize} + + +\subsection{The archive dedicated to the practices} + + To start with the practices, you have to install the archive + called {\tt paradiseo\_practices\_0208.tgz} that you have been + given. This archive is also available for download at + {\tt http$\,:$//paradiseo.gforge.inria.fr}.\\\\ + \textbf{ Let's suppose you have installed ParadisEO + into the {\tt /home/me/software} directory. Each time + it appears, you are to replace this path with the one + corresponding to your ParadisEO installation directory. + } + \\\\When the archive has been extracted, please go in the + {\tt practices} directory and edit the {\tt install.cmake} + file: + + \begin{itemize} + \item[$\bullet$] Fill the {\tt EO\_SRC\_DIR} variable with the path to ParadisEO-EO : + + \hspace{1cm}{\tt /home/me/software/ParadisEO/paradiseo-eo} + \item[$\bullet$] Fill the {\tt EO\_BIN\_DIR} variable with the path to + ParadisEO-EO build directory : + + \hspace{1cm}{\tt /home/me/software/ParadisEO/paradiseo-eo/build} + \item[$\bullet$] Fill the {\tt MO\_SRC\_DIR} variable with the path to ParadisEO-MO : + + \hspace{1cm}{\tt /home/me/software/ParadisEO/paradiseo-mo} + \item[$\bullet$] Fill the {\tt MO\_BIN\_DIR} variable with the path to + ParadisEO-MO build directory : + + \hspace{1cm}{\tt /home/me/software/ParadisEO/paradiseo-mo/build} + \end{itemize} + + \medskip + Then, go in the {\tt build} directory and run : + + \hspace{1cm}{\tt cmake ../} + + \medskip + You can now compile the practices using: {\tt make} + + +\section{Archive content} + + At the top level of the {\tt practices} directory, you must have: + \begin{itemize} + + \item[$\bullet$] {\bf tsp/src}: Contains the sources required to solve the TSP + problem using ParadisEO. The associated benchmarks are in the + {\bf benchs} directory. + + \item[$\bullet$] {\bf lesson1}: ParadisEO installation practice, contains {\tt lesson1.pdf}. + + \item[$\bullet$] {\bf lesson2}: Contains an implementation of the Hill-Climbing + {\tt hill\_climbing.cpp} and the corresponding tutorial {\tt lesson2.pdf}. + + \item[$\bullet$] {\bf lesson3}: Contains an implementation of a tabu + search {\tt tabu\_search.cpp} and the corresponding tutorial {\tt lesson3.pdf}. + + \item[$\bullet$] {\bf lesson4}: Contains an implementation of the + Simulated Annealing {\tt simulated\_annealing.cpp} and the corresponding + tutorial {\tt lesson4.pdf}. + + \item[$\bullet$] {\bf lesson5}: Contains an implementation of a + genetic algorithm {\tt gen\_algo.cpp} . + + \item[$\bullet$] {\bf build}: Contains the built targets and + the executables (subdirectories {\bf lesson1}, + {\bf lesson2}, {\bf lesson3}, {\bf lesson4} and {\bf lesson5}). + + \end{itemize} + +\end{document} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson2/CMakeLists.txt b/utilities/trunk/practices/paradiseo_practices_0208/lesson2/CMakeLists.txt new file mode 100644 index 000000000..f4ee66b38 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/lesson2/CMakeLists.txt @@ -0,0 +1,41 @@ + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src/utils) +INCLUDE_DIRECTORIES(${MO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/tsp/src) +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${CMAKE_BINARY_DIR}/tsp/src) + +###################################################################################### + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(hill_climbing hill_climbing.cpp) + +ADD_DEPENDENCIES(hill_climbing tsp) +###################################################################################### + + +###################################################################################### +### 4) Link the librairies for your target(s) +###################################################################################### + +TARGET_LINK_LIBRARIES(hill_climbing tsp eo eoutils) + +###################################################################################### + + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson2/hill_climbing.cpp b/utilities/trunk/practices/paradiseo_practices_0208/lesson2/hill_climbing.cpp new file mode 100644 index 000000000..f9151b246 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/lesson2/hill_climbing.cpp @@ -0,0 +1,67 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "hill_climbing.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +int +main (int __argc, char * __argv []) +{ + if (__argc != 2) { + + std :: cerr << "Usage : ./hill_climbing [instance]" << std :: endl ; + return 1 ; + } + + srand (1000) ; + + Graph :: load (__argv [1]) ; // Instance + + Route route ; // Solution + + RouteInit init ; // Sol. Random Init. + init (route) ; + + RouteEval full_eval ; // Full. Eval. + full_eval (route) ; + + std :: cout << "[From] " << route << std :: endl ; + + /* Tools for an efficient (? :-)) + local search ! */ + + TwoOptInit two_opt_init ; // Init. + + TwoOptNext two_opt_next ; // Explorer. + + TwoOptIncrEval two_opt_incr_eval ; // Eff. eval. + + //moFirstImprSelect two_opt_select ; + moBestImprSelect two_opt_select ; + //moRandImprSelect two_opt_select ; + + moHC hill_climbing (two_opt_init, two_opt_next, two_opt_incr_eval, two_opt_select, full_eval) ; + hill_climbing (route) ; + + std :: cout << "[To] " << route << std :: endl ; + + return 0 ; +} + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson2/lesson2.pdf b/utilities/trunk/practices/paradiseo_practices_0208/lesson2/lesson2.pdf new file mode 100644 index 000000000..9218f1819 Binary files /dev/null and b/utilities/trunk/practices/paradiseo_practices_0208/lesson2/lesson2.pdf differ diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson2/lesson2.tex b/utilities/trunk/practices/paradiseo_practices_0208/lesson2/lesson2.tex new file mode 100644 index 000000000..d83af1849 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/lesson2/lesson2.tex @@ -0,0 +1,90 @@ +\documentclass[a4paper]{article} + +\usepackage[english]{babel} +\usepackage{epsf} +\usepackage{amssymb} +\usepackage{here} +\usepackage{comment} +\usepackage{graphicx} + +\topmargin -2.5cm +\textheight 25,5cm +\textwidth 16cm +\oddsidemargin 0cm +\evensidemargin 0cm + + +\begin{document} + +\textbf{ParadisEO Practices} {\copyright Franck Seynhaeve, +Jean-Charles Boisson, Thomas Legrand} \Large{\textbf{\\\\ +Lesson 2: Implement a Hill-Climbing using ParadisEO}} + +\normalsize + +\vspace{-0,3cm} + +\section{Example} + + The archive {\tt paradiseo\_practices\_0208.tgz} installed + on your computer contains a Hill-Climbing implemented using ParadisEO-MO~ + (see {\tt hill\_climbing} in the {\bf build/lesson2} directory). + + \medskip + To run it, please go in {\bf build/lesson2} and start the program {\tt hill\_climbing} by giving + one of the TSP instances located in {\bf tsp/benchs}. + + + \medskip + When entering {\tt ./hill\_climbing ../../tsp/benchs/berlin52.tsp}, you should end up with the + following outputs: + + \smallskip + \noindent + \texttt{>> Loading [../tsp/benchs/berlin52.tsp]}\\ + \texttt{[From] -29414 52 1 20 40 48 9 27 13 22 5 28 24 29 21 26 44 38 33 37 45 31 42 18 12 3 14}\\ + \texttt{36 30 6 51 32 17 11 0 34 4 10 4350 16 2 23 35 19 46 49 39 25 15 41 8 7 47}\\ + \texttt{[To] -8724 52 1 6 41 29 22 19 49 15 28 46 13 51 12 25 26 27 11 10 50 32 42 9 8 7 40 18}\\ + \texttt{44 2 16 20 30 17 21 0 31 48 35 3438 39 37 36 33 43 45 24 3 5 4 14 23 + 47} \\ + + The printed-out results show for the initial best solution and the final one~: + \\ \hspace*{1cm}-the length of the route + \\ \hspace*{1cm}-the number of cities + \\ \hspace*{1cm}-the route itself (notice that the city index starts from 0). + + +\section{Tabu search} + + Study the {\tt hill\_climbing.cpp} file located in the {\bf lesson2} directory + using~: + \begin{itemize} + \item[$\bullet$] the ParadisEO-MO API documentation available at~: + + \hspace{1cm}http$\,:$//paradiseo.gforge.inria.fr/addon/paradiseo-mo/doc/index.html + \item[$\bullet$] the source files located in the {\bf tsp/src/} directory + \end{itemize} + +\section{Customize the Hill CLimbing} + + Make a backup (copy) of the cpp file {\tt tabuhill\_climbing.cpp}. You can now modify the + original {\tt hill\_climbing.cpp} and use the existing makefiles to compile it. + + Edit and modify the {\tt hill\_climbing.cpp} file~: + \begin{itemize} + \item[$\bullet$] Try to tune a few parameters (random seed + and the move selector) and observe the changes on the final + solution. + + \end{itemize} + + \smallskip + To compile {\tt hill\_climbing.cpp}, you should use the + command {\tt make} from {\bf build/lesson2}. + + \medskip + Finally, test your modifications on several TSP instances ({\tt berlin52}, + {\tt eil101} ...) and compare the results you get. + + +\end{document} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson3/CMakeLists.txt b/utilities/trunk/practices/paradiseo_practices_0208/lesson3/CMakeLists.txt new file mode 100644 index 000000000..1b8507446 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/lesson3/CMakeLists.txt @@ -0,0 +1,41 @@ + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src/utils) +INCLUDE_DIRECTORIES(${MO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/tsp/src) +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${CMAKE_BINARY_DIR}/tsp/src) + +###################################################################################### + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(tabu_search tabu_search.cpp) + +ADD_DEPENDENCIES(tabu_search tsp) +###################################################################################### + + +###################################################################################### +### 4) Link the librairies for your target(s) +###################################################################################### + +TARGET_LINK_LIBRARIES(tabu_search tsp eo eoutils) + +###################################################################################### + + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson3/lesson3.pdf b/utilities/trunk/practices/paradiseo_practices_0208/lesson3/lesson3.pdf new file mode 100644 index 000000000..9df0feefe Binary files /dev/null and b/utilities/trunk/practices/paradiseo_practices_0208/lesson3/lesson3.pdf differ diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson3/lesson3.tex b/utilities/trunk/practices/paradiseo_practices_0208/lesson3/lesson3.tex new file mode 100644 index 000000000..96b45b032 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/lesson3/lesson3.tex @@ -0,0 +1,89 @@ +\documentclass[a4paper]{article} + +\usepackage[english]{babel} +\usepackage{epsf} +\usepackage{amssymb} +\usepackage{here} +\usepackage{comment} +\usepackage{graphicx} + +\topmargin -2.5cm +\textheight 25,5cm +\textwidth 16cm +\oddsidemargin 0cm +\evensidemargin 0cm + + + +\begin{document} + +\textbf{ParadisEO Practices} {\copyright Franck Seynhaeve, +Jean-Charles Boisson, Thomas Legrand} \Large{\textbf{\\\\ +Lesson 4: Implement a simulated annealing using ParadisEO}} + +\normalsize + +\vspace{-0,3cm} + +\section{Example} + + The archive {\tt paradiseo\_practices\_0208.tgz} installed + on your computer contains a simulated annealing implemented using ParadisEO-MO~ + (see {\tt simulated\_annealing} in the {\bf build/lesson4} directory). + + \medskip + To run it, please go in {\bf build/lesson4} and start the program {\tt simulated\_annealing} by giving + one of the TSP instances located in {\bf tsp/benchs}. + + + \medskip + When entering {\tt ./simulated\_annealing ../../tsp/benchs/berlin52.tsp}, you should end up with the + following outputs: + + \smallskip + \noindent + \texttt{>> Loading [../tsp/benchs/berlin52.tsp]}\\ + \texttt{[From] -29414 52 1 20 40 48 9 27 13 22 5 28 24 29 21 26 44 38 33 37 45 31 42 18 12 3 14}\\ + \texttt{36 30 6 51 32 17 11 0 34 4 10 4350 16 2 23 35 19 46 49 39 25 15 41 8 7 47}\\ + \texttt{[To] -8724 52 1 6 41 29 22 19 49 15 28 46 13 51 12 25 26 27 11 10 50 32 42 9 8 7 40 18}\\ + \texttt{44 2 16 20 30 17 21 0 31 48 35 3438 39 37 36 33 43 45 24 3 5 4 14 23 + 47} \\ + + The printed-out results show for the initial best solution and the final one~: + \\ \hspace*{1cm}-the length of the route + \\ \hspace*{1cm}-the number of cities + \\ \hspace*{1cm}-the route itself (notice that the city index starts from 0). + + +\section{Study the simulated annealing dedicated components} + + Study the {\tt simulated\_annealing.cpp} file located in the {\bf lesson4} directory + using~: + \begin{itemize} + \item[$\bullet$] the ParadisEO-MO API documentation available at~: + + \hspace{1cm}http$\,:$//paradiseo.gforge.inria.fr/addon/paradiseo-mo/doc/index.html + \item[$\bullet$] the source files located in the {\bf tsp/src/} directory + \end{itemize} + +\section{Customize the simulated annealing} + + Make a backup (copy) of the cpp file {\tt simulated\_annealing.cpp}. You can now modify the + original {\tt simulated\_annealing.cpp} and use the existing makefiles to compile it. + + Edit and modify the {\tt simulated\_annealing.cpp} file~: + \begin{itemize} + \item[$\bullet$] Change the cooling schedule components and parameters. + \item[$\bullet$] Customize the temperature decrease process and try to obtain another good solution. + \end{itemize} + + \smallskip + To compile {\tt simulated\_annealing.cpp},you should use the + command {\tt make} from {\bf build/lesson4}. + + \medskip + Finally, test your modifications on several TSP instances ({\tt berlin52}, + {\tt eil101} ...) and compare the results you get. + + +\end{document} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson3/tabu_search.cpp b/utilities/trunk/practices/paradiseo_practices_0208/lesson3/tabu_search.cpp new file mode 100644 index 000000000..13913bdb7 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/lesson3/tabu_search.cpp @@ -0,0 +1,70 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "tabu_search.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +int +main (int __argc, char * __argv []) +{ + if (__argc != 2) + { + std :: cerr << "Usage : ./tabu_search [instance]" << std :: endl ; + return 1 ; + } + + Graph :: load (__argv [1]) ; // Instance + + Route route ; // Solution + + RouteInit init ; // Sol. Random Init. + init (route) ; + + RouteEval full_eval ; // Full. Eval. + full_eval (route) ; + + std :: cout << "[From] " << route << std :: endl ; + + /* Tools for an efficient (? :-)) + local search ! */ + + TwoOptInit two_opt_init ; // Init. + + TwoOptNext two_opt_next ; // Explorer. + + TwoOptIncrEval two_opt_incr_eval ; // Eff. eval. + + TwoOptTabuList tabu_list ; // Tabu List + //moSimpleMoveTabuList tabu_list(10); + //moSimpleSolutionTabuList tabu_list(10); + + moNoAspirCrit aspir_crit ; // Aspiration Criterion + + moGenSolContinue cont (10000) ; // Continuator + + moTS tabu_search (two_opt_init, two_opt_next, two_opt_incr_eval, tabu_list, aspir_crit, cont, full_eval) ; + tabu_search (route) ; + + std :: cout << "[To] " << route << std :: endl ; + + return 0 ; +} + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson4/CMakeLists.txt b/utilities/trunk/practices/paradiseo_practices_0208/lesson4/CMakeLists.txt new file mode 100644 index 000000000..4aec076d2 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/lesson4/CMakeLists.txt @@ -0,0 +1,41 @@ + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src/utils) +INCLUDE_DIRECTORIES(${MO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/tsp/src) +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${CMAKE_BINARY_DIR}/tsp/src) + +###################################################################################### + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(simulated_annealing simulated_annealing.cpp) + +ADD_DEPENDENCIES(simulated_annealing tsp) +###################################################################################### + + +###################################################################################### +### 4) Link the librairies for your target(s) +###################################################################################### + +TARGET_LINK_LIBRARIES(simulated_annealing tsp eo eoutils) + +###################################################################################### + + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson4/lesson4.pdf b/utilities/trunk/practices/paradiseo_practices_0208/lesson4/lesson4.pdf new file mode 100644 index 000000000..aa3c1c388 Binary files /dev/null and b/utilities/trunk/practices/paradiseo_practices_0208/lesson4/lesson4.pdf differ diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson4/lesson4.tex b/utilities/trunk/practices/paradiseo_practices_0208/lesson4/lesson4.tex new file mode 100644 index 000000000..c9a58d4ed --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/lesson4/lesson4.tex @@ -0,0 +1,88 @@ +\documentclass[a4paper]{article} + +\usepackage[english]{babel} +\usepackage{epsf} +\usepackage{amssymb} +\usepackage{here} +\usepackage{comment} +\usepackage{graphicx} + +\topmargin -2.5cm +\textheight 25,5cm +\textwidth 16cm +\oddsidemargin 0cm +\evensidemargin 0cm + + +\begin{document} + +\textbf{ParadisEO Practices} {\copyright Franck Seynhaeve, +Jean-Charles Boisson, Thomas Legrand} \Large{\textbf{\\\\ +Lesson 4: Implement a tabu search using ParadisEO}} + +\normalsize + +\vspace{-0,3cm} + +\section{Example} + + The archive {\tt paradiseo\_practices\_0208.tgz} installed + on your computer contains a tabu search implemented using ParadisEO-MO~ + (see {\tt tabu\_search} in the {\bf build/lesson4} directory). + + \medskip + To run it, please go in {\bf build/lesso4} and start the program {\tt tabu\_search} by giving + one of the TSP instances located in {\bf tsp/benchs}. + + + \medskip + When entering {\tt ./tabu\_search ../../tsp/benchs/berlin52.tsp}, you should end up with the + following outputs: + + \smallskip + \noindent + \texttt{>> Loading [../tsp/benchs/berlin52.tsp]}\\ + \texttt{[From] -29414 52 1 20 40 48 9 27 13 22 5 28 24 29 21 26 44 38 33 37 45 31 42 18 12 3 14}\\ + \texttt{36 30 6 51 32 17 11 0 34 4 10 4350 16 2 23 35 19 46 49 39 25 15 41 8 7 47}\\ + \texttt{[To] -8724 52 1 6 41 29 22 19 49 15 28 46 13 51 12 25 26 27 11 10 50 32 42 9 8 7 40 18}\\ + \texttt{44 2 16 20 30 17 21 0 31 48 35 3438 39 37 36 33 43 45 24 3 5 4 14 23 47}\\ + + The printed-out results show for the initial best solution and the final one~: + \\ \hspace*{1cm}-the length of the route + \\ \hspace*{1cm}-the number of cities + \\ \hspace*{1cm}-the route itself (notice that the city index starts from 0). + + +\section{Study the tabu search dedicated components} + + Study the {\tt tabu\_search.cpp} file located in the {\bf lesson4} directory + using~: + \begin{itemize} + \item[$\bullet$] the ParadisEO-MO API documentation available at~: + + \hspace{1cm}http$\,:$//paradiseo.gforge.inria.fr/addon/paradiseo-mo/doc/index.html + \item[$\bullet$] the source files located in the {\bf tsp/src/} directory + \end{itemize} + +\section{Customize the tabu search} + + Make a backup (copy) of the cpp file {\tt tabu\_search.cpp}. You can now modify the + original {\tt tabu\_search.cpp} and use the existing makefiles to compile it. + + Edit and modify the {\tt tabu\_search.cpp} file~: + \begin{itemize} + \item[$\bullet$] Try to tune a few parameters of the tabu search. + \item[$\bullet$] Change the initialization of the solution by + modifying the file {\tt route\_init.cpp}. + \end{itemize} + + \smallskip + To compile {\tt tabu\_search.cpp},you should use the + command {\tt make} from {\bf build/lesson4}. + + \medskip + Finally, test your modifications on several TSP instances ({\tt berlin52}, + {\tt eil101} ...) and compare the results you get. + + +\end{document} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson4/simulated_annealing.cpp b/utilities/trunk/practices/paradiseo_practices_0208/lesson4/simulated_annealing.cpp new file mode 100644 index 000000000..b768b075b --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/lesson4/simulated_annealing.cpp @@ -0,0 +1,67 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "simulated_annealing.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include +#include +#include +#include + +#include +#include +#include + +int +main (int __argc, char * __argv []) +{ + if (__argc != 2) + { + std :: cerr << "Usage : ./simulated_annealing [instance]" << std :: endl ; + return 1 ; + } + + Graph :: load (__argv [1]) ; // Instance + + Route route ; // Solution + + RouteInit init ; // Sol. Random Init. + init (route) ; + + RouteEval full_eval ; // Full. Eval. + full_eval (route) ; + + std :: cout << "[From] " << route << std :: endl ; + + /* Tools for an efficient (? :-)) + local search ! */ + + TwoOptRand two_opt_rand ; // Route Random. Gen. + + TwoOptIncrEval two_opt_incr_eval ; // Eff. eval. + + TwoOpt move ; + + moExponentialCoolingSchedule cool_sched (0.1, 0.98) ; // Exponential Cooling Schedule + //moLinearCoolingSchedule cool_sched (0.1, 0.5) ; // Linear Cooling Schedule + + moGenSolContinue cont (1000) ; /* Temperature Descreasing + will occur each 1000 + iterations */ + + moSA simulated_annealing (two_opt_rand, two_opt_incr_eval, cont, 1000, cool_sched, full_eval) ; + simulated_annealing (route) ; + + std :: cout << "[To] " << route << std :: endl ; + + return 0 ; +} + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson5/CMakeLists.txt b/utilities/trunk/practices/paradiseo_practices_0208/lesson5/CMakeLists.txt new file mode 100644 index 000000000..d39d0287b --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/lesson5/CMakeLists.txt @@ -0,0 +1,41 @@ + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src/utils) +INCLUDE_DIRECTORIES(${MO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/tsp/src) +###################################################################################### + + +###################################################################################### +### 2) Specify where CMake can find the libraries +###################################################################################### + +LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${CMAKE_BINARY_DIR}/tsp/src) + +###################################################################################### + + +###################################################################################### +### 3) Define your target(s): just an executable here +###################################################################################### + +ADD_EXECUTABLE(gen_algo gen_algo.cpp) + +ADD_DEPENDENCIES(gen_algo tsp) +###################################################################################### + + +###################################################################################### +### 4) Link the librairies for your target(s) +###################################################################################### + +TARGET_LINK_LIBRARIES(gen_algo tsp eo eoutils) + +###################################################################################### + + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson5/gen_algo.cpp b/utilities/trunk/practices/paradiseo_practices_0208/lesson5/gen_algo.cpp new file mode 100644 index 000000000..4123c40b9 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/lesson5/gen_algo.cpp @@ -0,0 +1,64 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "gen_algo.cpp" + +#include +#include +#include +#include +#include + +#include "graph.h" +#include "route.h" +#include "route_init.h" +#include "route_eval.h" +#include "order_xover.h" +#include "partial_mapped_xover.h" +#include "city_swap.h" + +int main (int __argc, char * __argv []) { + + if (__argc != 2) { + + std :: cerr << "Usage : ./gen_algo [instance]" << std :: endl ; + return 1 ; + } + + Graph :: load (__argv [1]) ; // Instance + + RouteInit init ; // Sol. Random Init. + + RouteEval full_eval ; // Full Evaluator + + eoPop pop (100, init) ; // Population + apply (full_eval, pop) ; + + std :: cout << "[From] " << pop.best_element () << std :: endl ; + + eoGenContinue cont (1000) ; /* Continuator (A fixed number of + 1000 iterations */ + + eoStochTournamentSelect select_one ; // Selector + + eoSelectNumber select (select_one, 100) ; + + // OrderXover cross ; // Order Crossover + PartialMappedXover cross ; + + CitySwap mut ; // City Swap Mutator + + eoSGATransform transform (cross, 1, mut, 0.01) ; + + eoElitism merge (1) ; // Use of Elistism + + eoStochTournamentTruncate reduce (0.7) ; // Stoch. Replacement + + eoEasyEA ea (cont, full_eval, select, transform, merge, reduce) ; + + ea (pop) ; + + std :: cout << "[To] " << pop.best_element () << std :: endl ; + + return 0 ; +} + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson5/lesson5.pdf b/utilities/trunk/practices/paradiseo_practices_0208/lesson5/lesson5.pdf new file mode 100644 index 000000000..bfc63db27 Binary files /dev/null and b/utilities/trunk/practices/paradiseo_practices_0208/lesson5/lesson5.pdf differ diff --git a/utilities/trunk/practices/paradiseo_practices_0208/lesson5/lesson5.tex b/utilities/trunk/practices/paradiseo_practices_0208/lesson5/lesson5.tex new file mode 100644 index 000000000..f4f19fbbe --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/lesson5/lesson5.tex @@ -0,0 +1,93 @@ +\documentclass[a4paper]{article} + +\usepackage[english]{babel} +\usepackage{epsf} +\usepackage{amssymb} +\usepackage{here} +\usepackage{comment} +\usepackage{graphicx} + +\topmargin -2.5cm +\textheight 25,5cm +\textwidth 16cm +\oddsidemargin 0cm +\evensidemargin 0cm + + +\begin{document} + +\textbf{ParadisEO Practices} {\copyright Franck Seynhaeve, +Jean-Charles Boisson, Thomas Legrand} \Large{\textbf{\\\\ +Lesson 5: Implement a genetic algorithm using ParadisEO}} + +\normalsize + + \vspace{-0,3cm} + +\section{Example} + + The archive {\tt paradiseo\_practices\_0208.tgz} installed + on your computer contains a genetic algorithm implemented using ParadisEO-EO~ + (see {\tt gen\_algo} in the {\bf build/lesson5} directory). + + \medskip + To run it, please go in {\bf build/lesson5} and start the program {\tt gen\_algo} by giving + one of the TSP instances located in {\bf tsp/benchs}. + + \medskip + When entering {\tt ./gen\_algo ../../tsp/benchs/berlin52.tsp}, you should end up with the + following outputs: + + \smallskip + \noindent + \texttt{>> Loading [../tsp/benchs/berlin52.tsp]}\\ + \texttt{[From] -26461 52 39 12 29 44 2 26 13 40 7 35 14 28 25 41 6 51 10 50 45 19 0 38 15}\\ + \texttt{33 42 21 18 32 37 9 5 20 34 43 16 30 1 23 22 4 27 36 4946 47 48 11 17 8 31 24 3}\\ + \texttt{STOP in eoGenContinue: Reached maximum number of generations [1000/1000]}\\ + \texttt{[To] -13068 52 45 24 28 22 19 21 30 17 31 36 46 25 13 12 26 27 51 10 14 37 23 4 15 49}\\ + \texttt{20 2 8 42 50 11 47 39 38 35 34 44 18 40 9 7 32 3 5 33 16 41 6 1 29 0 48 + 43} \\ + + \medskip + + The printed-out results show for the initial best solution and the final one~: + \\ \hspace*{1cm}-the length of the route + \\ \hspace*{1cm}-the number of cities + \\ \hspace*{1cm}-the route itself (notice that the city index starts from 0). + + +\section{Study the genetic algorithm dedicated components} + + Study the {\tt gen\_algo.cpp} file located in the {\bf lesson5} directory + using~: + \begin{itemize} + \item[$\bullet$] the ParadisEO-EO API documentation available at~: + + \hspace{1cm}http$\,:$//eodev.sourceforge.net/eo/doc/html/index.html + + \item[$\bullet$] the source files located in the {\bf tsp/src/} directory + \end{itemize} + + +\section{Customize the GA} + + Make a backup (copy) of the cpp file {\tt gen\_algo.cpp}. You can now modify the + original {\tt gen\_algo.cpp} and use the existing makefiles to compile it. + + Edit and modify the {\tt gen\_algo.cpp} file~: + \begin{itemize} + \item[$\bullet$] Try to tune a few parameters of the GA + (selection criteria, stopping criteria ...). + \item[$\bullet$] Then, try to change the initialization of the population + by applying one of the local searches on each individual. + \end{itemize} + + \smallskip + To compile {\tt gen\_algo.cpp},you should use the + command {\tt make} from {\bf build/lesson5}. + + \medskip + Finally, test your modifications on several TSP instances ({\tt berlin52}, + {\tt eil101} ...) and compare the results you get. + +\end{document} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/CMakeLists.txt b/utilities/trunk/practices/paradiseo_practices_0208/tsp/CMakeLists.txt new file mode 100644 index 000000000..9271e43d4 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/CMakeLists.txt @@ -0,0 +1,9 @@ + +###################################################################################### +### 1) Where must cmake go now ? +###################################################################################### + +SUBDIRS(src) + +###################################################################################### + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/ali535.tsp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/ali535.tsp new file mode 100644 index 000000000..7fec4bf14 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/ali535.tsp @@ -0,0 +1,536 @@ +535 +36.49 7.49 +57.06 9.51 +30.22 48.14 +5.15 -3.56 +34.59 -106.37 +57.12 -2.12 +16.45 -99.45 +5.36 -0.1 +28.56 -13.36 +8.59 38.48 +12.5 45.02 +-34.48 138.38 +30.23 -9.33 +56.18 12.51 +36.4 -4.3 +40.38 8.17 +35.11 -3.5 +41.55 8.48 +-37.01 174.47 +38.17 -0.34 +36.42 3.13 +36.11 37.14 +35.14 -101.42 +31.58 35.59 +52.18 4.46 +61.1 -149.59 +39.57 32.41 +51.11 4.28 +17.08 -61.47 +43.37 13.22 +29.38 35.01 +59.39 17.55 +15.18 38.55 +-25.14 -57.31 +23.58 32.47 +37.54 23.44 +33.46 -84.31 +12.3 -70.01 +24.26 54.28 +36.55 30.48 +26.16 50.38 +40.29 50.01 +39.11 -76.4 +10.48 -74.52 +-16.11 -52.3 +10.25 45.01 +41.18 2.05 +32.22 -64.42 +41.56 -72.41 +40.39 17.57 +44.49 20.19 +9.21 34.31 +32.06 20.16 +52.29 13.24 +48.27 -4.25 +-19.48 3.45 +33.49 35.29 +54.39 -6.14 +35.48 -101.22 +4.24 18.31 +13.04 -59.3 +60.17 5.13 +44.48 -68.5 +33.14 44.14 +45.4 9.24 +33.34 -86.45 +52.27 -1.45 +42.33 9.29 +45.48 -108.37 +43.28 -1.32 +13.21 -16.4 +-3.19 29.19 +13.55 100.36 +12.38 -8.02 +55.44 9.09 +44.32 11.18 +12.57 77.4 +-15.41 34.58 +27.13 56.22 +-27.25 153.05 +44.5 -0.43 +4.42 -74.09 +50.47 -1.51 +19.05 72.52 +67.16 14.22 +42.22 -71 +53.03 8.48 +41.08 16.47 +46.55 7.3 +51.31 -2.35 +50.54 4.29 +-15.52 -47.55 +47.35 7.32 +48.1 16.13 +47.27 19.15 +-34.49 -58.32 +42.55 -78.38 +44.3 26.06 +49.27 2.07 +-4.15 15.15 +39.15 9.04 +30.08 31.24 +23.11 113.16 +33.33 -7.4 +-11.54 22.45 +4.49 -52.22 +52.13 0.11 +-35.19 149.12 +10.36 -66.59 +22.39 88.27 +52.5 -1.19 +49.01 2.33 +43.33 6.57 +45.4 -0.19 +39.37 19.55 +50.52 7.09 +41.59 -87.54 +41.48 12.36 +9.34 -13.37 +41.25 -81.51 +3.26 -76.25 +42.31 8.48 +-28.02 145.37 +7.11 79.53 +40.04 -83.04 +33.22 -7.35 +48.07 7.22 +44.22 28.29 +45.4 -0.19 +6.21 2.23 +55.37 12.39 +-33.58 18.36 +37.28 15.04 +10.27 -75.31 +-26.25 146.14 +39 17.05 +12.12 -68.57 +39.09 -84.2 +39.03 -84.2 +51.24 -3.12 +29.11 -81.03 +23.46 90.23 +14.45 42.59 +32.5 -96.51 +33.25 36.31 +-6.53 39.12 +42.34 18.16 +-29.58 30.57 +38.51 -77.02 +28.34 77.07 +39.46 -104.53 +32.46 -96.24 +26.16 50.1 +47.16 5.05 +33.52 10.47 +14.45 -17.3 +4.01 9.43 +19.08 30.26 +25.16 51.34 +49.22 0.1 +-8.45 115.1 +51.08 13.46 +-12.25 130.52 +42.14 -83.32 +42.13 -83.21 +53.26 -6.15 +51.17 6.45 +25.15 55.2 +0.03 32.26 +45.32 4.18 +55.57 -3.22 +51.27 5.23 +31.48 -106.16 +52.5 -1.19 +48.19 6.04 +40.07 33 +40.09 82.4 +40.42 -74.1 +50.44 -3.25 +-34.49 -58.32 +64.49 -147.51 +37.01 -7.58 +-11.35 27.31 +59.54 10.37 +41.49 12.15 +14.35 -61 +33.56 45.8 +-4.23 15.26 +43.49 11.12 +8.37 -13.12 +41.26 15.32 +50.02 8.34 +44.12 12.04 +-21.13 27.29 +28.27 -13.52 +53.29 -1 +-19.27 29.52 +54.23 18.28 +60.12 11.05 +24.57 10.1 +-22.5 -43.15 +55.52 -4.26 +45.22 5.2 +7.09 41.43 +44.25 8.5 +57.4 18.18 +41.54 2.46 +37.11 -3.47 +47 15.26 +51.09 -0.11 +14.34 -90.32 +46.14 6.07 +-2.09 -79.53 +52.28 9.42 +53.38 10 +60.19 24.58 +35.2 25.11 +30.2 120.51 +22.19 114.12 +31.4 6.09 +35.33 139.46 +21.2 -157.55 +29.59 -95.28 +38.57 -77.27 +43.06 -78.57 +38.52 1.22 +47.34 -97.27 +50.21 30.55 +-25.44 -54.28 +39.44 -86.17 +40.59 28.49 +38.17 27.1 +21.3 39.12 +49.13 -2.12 +40.38 -73.46 +11.33 43.1 +-6.09 106.51 +-26.08 28.15 +-3.22 36.38 +45.28 -73.44 +12.03 8.31 +34.34 69.12 +63.59 -22.37 +-1.58 30.08 +22.34 120.17 +24.54 67.09 +-6.18 155.43 +17.56 -76.48 +50.05 19.47 +15.36 32.33 +27.42 85.22 +3.08 101.33 +29.13 47.58 +-8.51 13.14 +10.36 -66.59 +36.04 -115.09 +33.56 -118.24 +53.52 -1.39 +48.58 2.27 +0.27 9.25 +34.52 33.38 +43.11 0 +59.49 30.17 +36.51 -2.22 +51.24 12.25 +51.25 12.14 +6.1 1.15 +40.46 -73.52 +33.57 -118.24 +50.38 5.27 +51.09 -0.11 +51.28 -0.27 +50.34 3.05 +-12.01 -77.07 +45.27 9.16 +38.46 -9.08 +46.13 14.28 +35.3 12.37 +48.14 14.11 +51.28 -0.27 +6.35 3.2 +27.56 -15.23 +-16.3 -68.11 +53.21 -2.53 +6.1 1.15 +51.53 -0.22 +-25.55 32.34 +-15.2 28.27 +4.27 114 +49.37 6.12 +-17.49 25.49 +25.41 32.43 +45.44 4.56 +13 80.11 +40.29 -3.34 +31.52 -4.13 +53.21 -2.16 +-3.04 -60 +10.34 -71.44 +-4.02 39.36 +46.22 15.47 +39.18 -94.44 +28.32 -81.2 +23.36 58.17 +44.25 8.5 +-37.44 144.54 +24.31 39.42 +-37.41 144.51 +19.26 -99.04 +12.07 -86.11 +2.01 45.19 +25.48 -80.17 +20.56 -89.41 +45.27 9.16 +35.45 10.45 +39.07 -94.36 +35.52 14.29 +4.11 73.32 +47.45 7.26 +55.33 13.22 +54.31 -1.25 +14.31 121.01 +55.58 37.25 +43.35 3.58 +-25.55 32.34 +-8.58 125.13 +43.26 5.13 +-20.26 57.41 +51.21 1.21 +44.53 -93.13 +53.52 27.33 +50.55 5.47 +29.59 -90.16 +-26.31 31.19 +48.08 11.42 +-34.5 -56.02 +45.38 8.43 +49.05 6.08 +-17.45 177.27 +40.53 14.18 +25.02 -77.28 +-1.19 36.56 +43.4 7.13 +55.02 -1.41 +45.56 6.06 +12.08 15.02 +32.56 129.56 +35.09 36.17 +13.29 2.1 +18.06 -15.57 +-13 28.39 +58.35 16.15 +35.45 140.23 +47.09 -1.36 +49.3 11.05 +52.41 1.17 +40.38 -73.46 +55.28 10.2 +46.26 30.41 +26.21 127.46 +35.26 -97.46 +40.54 9.31 +41.07 -95.55 +41.14 -8.41 +41.59 -87.54 +51.5 -8.29 +28.26 -81.19 +35.38 -0.37 +48.43 2.23 +34.47 135.27 +60.12 11.05 +51.12 2.52 +44.34 26.06 +12.21 -1.31 +43.26 -5.5 +18.34 -72.17 +48.43 2.23 +40.05 116.36 +-31.56 115.58 +4.52 7.02 +37.08 -76.3 +39.52 -75.15 +33.26 -112.01 +55.52 -4.26 +46.35 0.18 +40.3 -80.14 +-5.15 39.49 +39.33 2.44 +38.1 13.06 +11.33 104.51 +36.49 11.58 +-9.27 147.13 +10.36 -61.21 +9.05 -79.23 +50.06 14.16 +43.41 10.24 +42.26 14.11 +16.16 -61.32 +9.03 -79.24 +43.23 -0.25 +45.39 12.12 +31.37 -8.03 +34.03 -6.45 +-8.08 -34.55 +38.04 15.39 +64.08 -21.57 +16.54 96.09 +49.19 4.03 +36.23 28.07 +-29.43 -53.42 +-22.5 -43.15 +45.13 14.35 +44.01 12.37 +48.04 -1.44 +6.14 -10.22 +41.49 12.15 +14.1 145.15 +-32.55 -60.47 +51.57 4.26 +24.42 46.44 +33.37 73.06 +6.3 -58.15 +15.29 44.13 +13.42 -89.07 +32.44 -117.11 +-23 -47.08 +29.32 -98.28 +-17.56 31.06 +48.31 -24.8 +-33.23 -70.47 +42.54 -8.25 +33.14 44.14 +18.26 -69.4 +47.27 -122.18 +27 14.27 +37.33 126.48 +51.34 0.42 +-4.4 55.31 +37.37 -122.23 +31.12 121.2 +25.21 55.24 +16.45 -22.57 +1.21 103.54 +37.22 -121.56 +43.49 18.2 +9.58 -84.16 +9.59 -84.12 +18.26 -66.01 +40.31 22.58 +41.58 21.38 +40.53 -111.57 +36.58 -25.1 +52.42 -8.55 +42.42 23.24 +43.32 16.18 +-12.54 -38.2 +38.45 -90.22 +51.33 0.14 +59.39 17.55 +48.41 9.13 +38.54 16.15 +58.53 5.38 +55.58 37.25 +37.26 -5.54 +48.32 7.38 +52.22 13.3 +-33.56 151.1 +29.33 52.36 +47.48 13 +40.31 17.24 +41.19 69.24 +28.29 -16.2 +38.31 -28.43 +43.11 0 +28.29 -16.2 +14.02 -87.14 +52.29 13.24 +35.41 51.19 +41.2 19.47 +32.4 13.09 +43.37 1.23 +32.01 34.53 +22.49 5.27 +0.23 6.43 +35.43 -5.55 +-18.48 47.29 +33.56 8.06 +-24.42 -53.42 +25.04 121.33 +37.55 12.29 +51.23 -2.43 +45.12 7.39 +45.5 13.28 +45.39 12.12 +47.26 0.43 +36.18 -95.52 +36.51 10.14 +52.34 13.18 +35.33 139.46 +35.54 -83.53 +40.62 13.11 +-0.08 -78.29 +12.41 101.01 +13.45 -60.57 +44.55 4.58 +43.14 27.49 +45.3 12.21 +-23 -47.08 +48.07 16.33 +39.29 -0.29 +41.42 -4.51 +45.24 10.53 +38.57 -77.27 +52.1 20.58 +36.45 -6.04 +53.19 -113.35 +44.53 -63.31 +45.41 -74.02 +45.19 -75.4 +46.48 -71.24 +42.16 -82.58 +48.57 -54.34 +45.28 -73.44 +49.11 -123.1 +49.55 -97.14 +51.07 -114.01 +47.37 -52.45 +43.41 -79.38 +44.06 15.21 +45.45 16.04 +41.4 -1.03 +-6.13 39.13 +47.28 8.33 +51.33 0.14 +24.58 91.53 diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/berlin52.tsp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/berlin52.tsp new file mode 100644 index 000000000..9854458a9 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/berlin52.tsp @@ -0,0 +1,53 @@ +52 +565 575 +25 185 +345 750 +945 685 +845 655 +880 660 +25 230 +525 1000 +580 1175 +650 1130 +1605 620 +1220 580 +1465 200 +1530 5 +845 680 +725 370 +145 665 +415 635 +510 875 +560 365 +300 465 +520 585 +480 415 +835 625 +975 580 +1215 245 +1320 315 +1250 400 +660 180 +410 250 +420 555 +575 665 +1150 1160 +700 580 +685 595 +685 610 +770 610 +795 645 +720 635 +760 650 +475 960 +95 260 +875 920 +700 500 +555 815 +830 485 +1170 65 +830 610 +605 625 +595 360 +1340 725 +1740 245 diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/eil101.tsp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/eil101.tsp new file mode 100644 index 000000000..f12903349 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/eil101.tsp @@ -0,0 +1,102 @@ +101 +41 49 +35 17 +55 45 +55 20 +15 30 +25 30 +20 50 +10 43 +55 60 +30 60 +20 65 +50 35 +30 25 +15 10 +30 5 +10 20 +5 30 +20 40 +15 60 +45 65 +45 20 +45 10 +55 5 +65 35 +65 20 +45 30 +35 40 +41 37 +64 42 +40 60 +31 52 +35 69 +53 52 +65 55 +63 65 +2 60 +20 20 +5 5 +60 12 +40 25 +42 7 +24 12 +23 3 +11 14 +6 38 +2 48 +8 56 +13 52 +6 68 +47 47 +49 58 +27 43 +37 31 +57 29 +63 23 +53 12 +32 12 +36 26 +21 24 +17 34 +12 24 +24 58 +27 69 +15 77 +62 77 +49 73 +67 5 +56 39 +37 47 +37 56 +57 68 +47 16 +44 17 +46 13 +49 11 +49 42 +53 43 +61 52 +57 48 +56 37 +55 54 +15 47 +14 37 +11 31 +16 22 +4 18 +28 18 +26 52 +26 35 +31 67 +15 19 +22 22 +18 24 +26 27 +25 24 +22 27 +25 21 +19 21 +20 26 +18 18 +35 35 diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/pr2392.tsp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/pr2392.tsp new file mode 100644 index 000000000..010a2c7ec --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/pr2392.tsp @@ -0,0 +1,2393 @@ +2392 +1639 2156 +1875 2925 +2150 2925 +2425 2925 +2525 2675 +2525 2575 +2525 2375 +2525 2275 +2525 2175 +2786 2148 +2786 2249 +2786 2352 +2785 2451 +2785 2552 +2787 2651 +2925 2925 +3198 2925 +3475 2925 +3725 2925 +3675 2675 +3675 2575 +3675 2375 +3675 2275 +3675 2175 +4189 2156 +4190 2256 +4190 2355 +4189 2456 +4189 2556 +4190 2656 +4275 2975 +4425 2925 +4700 2925 +4975 2925 +5075 2675 +5075 2575 +5075 2375 +5075 2275 +5075 2175 +5336 2148 +5336 2249 +5336 2352 +5335 2451 +5335 2552 +5337 2651 +5475 2925 +5748 2925 +6025 2925 +6275 2925 +6225 2675 +6225 2575 +6225 2375 +6225 2275 +6225 2175 +6739 2156 +6740 2256 +6740 2355 +6739 2456 +6739 2556 +6740 2656 +6825 2975 +6975 2925 +7250 2925 +7525 2925 +7625 2675 +7625 2575 +7625 2375 +7625 2275 +7625 2175 +7886 2148 +7886 2249 +7886 2352 +7885 2451 +7885 2552 +7887 2651 +8025 2925 +8298 2925 +8575 2925 +8825 2925 +8775 2675 +8775 2575 +8775 2375 +8775 2275 +8775 2175 +9289 2156 +9290 2256 +9290 2355 +9289 2456 +9289 2556 +9290 2656 +9375 2975 +9525 2925 +9800 2925 +10075 2925 +10175 2675 +10175 2575 +10175 2375 +10175 2275 +10175 2175 +10436 2148 +10436 2249 +10436 2352 +10435 2451 +10435 2552 +10437 2651 +10575 2925 +10848 2925 +11125 2925 +11325 2175 +11325 2275 +11325 2375 +11325 2575 +11325 2675 +11375 2925 +11375 3125 +11400 3225 +11400 3325 +11400 3475 +11400 3625 +11300 3825 +11125 3825 +11125 3925 +11025 3975 +10925 3975 +10925 3875 +10550 3925 +10550 3725 +10550 3325 +10100 3325 +10100 3725 +10100 3925 +9725 3875 +9725 3975 +9625 3975 +9550 3875 +9425 3875 +9275 3900 +9250 3700 +9250 3575 +9250 3475 +9250 3375 +9250 3275 +8825 3125 +8850 3225 +8850 3325 +8850 3475 +8850 3625 +8750 3825 +8575 3825 +8575 3925 +8475 3975 +8375 3875 +8375 3975 +8400 4125 +8300 4175 +8400 4275 +8500 4175 +8675 4325 +8775 4425 +8825 4325 +9275 4275 +9375 4275 +9325 4375 +9400 4450 +9400 4550 +9325 4500 +9215 4560 +9215 4710 +9375 4775 +9215 4860 +9215 5010 +9215 5160 +9215 5310 +9215 5460 +9215 5610 +9475 5675 +9475 5525 +9475 5425 +9475 5275 +9475 5025 +9575 5075 +9725 5075 +9675 4975 +9575 4925 +9525 4775 +9600 4675 +9625 4775 +9775 4775 +9975 4600 +9875 4600 +9800 4525 +9700 4525 +9700 4425 +9800 4425 +9800 4325 +9700 4275 +9600 4175 +9700 4125 +9800 4175 +9875 4275 +9975 4275 +10075 4175 +10275 4175 +10375 4175 +10575 4175 +10675 4275 +10775 4275 +10850 4325 +10850 4425 +10850 4525 +10775 4575 +10675 4575 +10875 4775 +11025 4775 +11175 4725 +11050 4675 +10950 4500 +10950 4400 +10950 4275 +10850 4175 +10950 4125 +11050 4175 +11225 4325 +11375 4325 +11325 4425 +11325 4575 +11325 4675 +11325 4775 +11325 4925 +11450 4925 +11450 5075 +11422 5204 +11425 5325 +11325 5275 +11325 5375 +11175 5375 +11175 5275 +11125 5175 +11100 5025 +10975 4975 +10925 5075 +10950 5175 +10900 5275 +10900 5375 +10800 5175 +10525 5175 +10325 5175 +10325 5025 +10425 5075 +10475 4975 +10325 4875 +10175 4975 +10225 5075 +10125 5175 +9975 5175 +10050 5250 +10050 5350 +10025 5450 +10175 5450 +10325 5450 +10475 5450 +10575 5450 +10675 5450 +10525 6025 +10525 6125 +10675 6125 +10825 6025 +11025 6050 +11224 5908 +11400 5975 +11400 6375 +11400 6575 +11175 6575 +11025 6450 +10975 6675 +11075 6775 +10975 6875 +11175 6975 +11375 6975 +11325 7075 +11400 7150 +11125 7150 +10975 7150 +10875 7325 +10925 7425 +11075 7425 +11175 7475 +11075 7575 +11175 7625 +11175 7725 +11025 7725 +11025 7825 +11175 7825 +11325 7875 +11425 7925 +11425 8075 +11325 8075 +11275 8175 +11425 8225 +11425 8375 +11275 8325 +11175 8325 +11075 8225 +10975 8225 +10925 7975 +10775 7825 +10825 7600 +10725 7575 +10775 7425 +10675 7425 +10525 7425 +10525 7575 +10450 7750 +10300 7750 +10425 7875 +10525 7925 +10575 7825 +10625 7975 +10725 7975 +10725 8075 +10625 8125 +10525 8075 +10425 8025 +10425 8125 +10250 8225 +10150 8225 +10225 8125 +10275 7975 +10125 7975 +10000 7875 +10000 7775 +9825 7825 +9625 7725 +9475 7725 +9425 7625 +9575 7625 +9625 7475 +9725 7575 +9825 7475 +10025 7525 +9975 7425 +9925 7275 +9825 7075 +9625 7075 +9725 6975 +9875 6775 +9725 6775 +9575 6825 +9575 6675 +9725 6425 +9625 6200 +9725 6025 +9625 6000 +9225 6375 +9225 6525 +9375 6525 +9375 6675 +9225 6675 +9225 6875 +9225 7075 +9226 7259 +9225 7260 +9226 7409 +9225 7410 +9225 7560 +9226 7560 +9225 7710 +9225 7711 +9325 7825 +9225 7875 +9225 7975 +9225 8075 +9225 8175 +9225 8275 +9225 8375 +9225 8475 +9275 8825 +9475 8825 +9578 8820 +9847 8703 +9875 8825 +10025 8725 +10075 8825 +10175 8725 +10100 8575 +10250 8375 +10250 8475 +10250 8625 +10475 8775 +10575 8775 +10675 8775 +10775 8775 +10925 8775 +10875 8625 +10875 8525 +10975 8575 +11175 8475 +11275 8425 +11350 8575 +11450 8675 +11350 8775 +11325 9325 +11325 9425 +11325 9525 +11325 9725 +11325 9825 +11125 10075 +11375 10075 +11375 10275 +11400 10375 +11400 10475 +11400 10625 +11400 10775 +11300 10975 +11125 10975 +11125 11075 +11025 11125 +10925 11125 +10925 11025 +10550 10875 +10550 11075 +10275 11325 +10375 11325 +10575 11325 +10675 11425 +10775 11425 +10850 11475 +10850 11575 +10850 11675 +10775 11725 +10675 11725 +10875 11925 +11025 11925 +11175 11875 +11050 11825 +10950 11650 +10950 11550 +10950 11425 +10850 11325 +10950 11275 +11050 11325 +11225 11475 +11375 11475 +11325 11575 +11325 11725 +11325 11825 +11325 11925 +11325 12075 +11450 12075 +11450 12225 +11422 12354 +11425 12475 +11325 12425 +11325 12525 +11175 12525 +11175 12425 +11125 12325 +11100 12175 +10975 12125 +10925 12225 +10950 12325 +10900 12425 +10900 12525 +10800 12325 +10525 12325 +10425 12225 +10475 12125 +10325 12025 +10175 12125 +10225 12225 +10325 12175 +10325 12325 +10125 12325 +9975 12325 +10050 12400 +10050 12500 +10025 12600 +10175 12600 +10325 12600 +10475 12600 +10575 12600 +10675 12600 +10525 13175 +10525 13275 +10675 13275 +10825 13175 +11025 13200 +11224 13058 +11400 13125 +11400 13525 +11400 13725 +11175 13725 +11025 13600 +10975 13825 +11075 13925 +10975 14025 +11175 14125 +11375 14125 +11325 14225 +11400 14300 +11125 14300 +10975 14300 +10875 14475 +10925 14575 +10825 14750 +10725 14725 +10775 14575 +10675 14575 +10525 14575 +10525 14725 +10450 14900 +10300 14900 +10425 15025 +10425 15175 +10425 15275 +10525 15225 +10625 15275 +10725 15225 +10725 15125 +10625 15125 +10525 15075 +10575 14975 +10775 14975 +10925 15125 +11025 14975 +11025 14875 +11075 14725 +11075 14575 +11175 14625 +11175 14775 +11175 14875 +11175 14975 +11325 15025 +11425 15075 +11425 15225 +11325 15225 +11275 15325 +11425 15375 +11425 15525 +11350 15725 +11450 15825 +11350 15925 +11175 15625 +11275 15575 +11275 15475 +11175 15475 +11075 15375 +10975 15375 +10875 15675 +10975 15725 +10875 15775 +10925 15925 +10775 15925 +10675 15925 +10575 15925 +10475 15925 +10250 15775 +10175 15875 +10075 15975 +9875 15975 +9847 15853 +10025 15875 +10100 15725 +10250 15625 +10250 15525 +10250 15375 +10150 15375 +10225 15275 +10275 15125 +10125 15125 +10000 15025 +10000 14925 +9825 14975 +9625 14875 +9475 14875 +9425 14775 +9575 14775 +9625 14625 +9725 14725 +9825 14625 +10025 14675 +9975 14575 +9925 14425 +9825 14225 +9625 14225 +9725 14125 +9875 13925 +9725 13925 +9575 13975 +9575 13825 +9725 13575 +9625 13350 +9725 13175 +9625 13150 +9225 13525 +9225 13675 +9375 13675 +9375 13825 +9225 13825 +9225 14025 +9225 14225 +9226 14409 +9225 14410 +9226 14559 +9225 14560 +9225 14710 +9226 14710 +9225 14860 +9225 14861 +9325 14975 +9225 15025 +9225 15125 +9225 15225 +9225 15325 +9225 15425 +9225 15525 +9225 15625 +9578 15970 +9475 15975 +9275 15975 +8900 15825 +8800 15925 +8800 15725 +8725 15575 +8625 15625 +8425 15725 +8325 15675 +8325 15775 +8375 15925 +8225 15925 +8125 15925 +8025 15925 +7925 15925 +7700 15775 +7700 15625 +7700 15525 +7550 15725 +7625 15875 +7525 15975 +7475 15875 +7325 15975 +7297 15853 +7028 15970 +6925 15975 +6725 15975 +6675 15625 +6675 15525 +6675 15425 +6675 15325 +6675 15225 +6675 15125 +6675 15025 +6775 14975 +6675 14861 +6675 14860 +6676 14710 +6675 14710 +6675 14560 +6676 14559 +6675 14410 +6676 14409 +6675 14225 +6675 14025 +6675 13825 +6825 13825 +6825 13675 +6675 13675 +6675 13525 +7075 13150 +7175 13175 +7075 13350 +7175 13575 +7025 13825 +7025 13975 +7175 13925 +7325 13925 +7175 14125 +7075 14225 +7275 14225 +7375 14425 +7425 14575 +7475 14675 +7275 14625 +7175 14725 +7075 14625 +7025 14775 +6875 14775 +6925 14875 +7075 14875 +7275 14975 +7450 14925 +7450 15025 +7575 15125 +7725 15125 +7675 15275 +7600 15375 +7700 15375 +7875 15275 +7875 15175 +7975 15225 +8075 15275 +8175 15225 +8175 15125 +8075 15125 +8025 14975 +7975 15075 +7875 15025 +7750 14900 +7900 14900 +7975 14725 +7975 14575 +8125 14575 +8225 14575 +8175 14725 +8275 14750 +8225 14975 +8375 15125 +8425 15375 +8525 15375 +8625 15475 +8725 15475 +8875 15525 +8875 15375 +8725 15325 +8775 15225 +8875 15225 +8875 15075 +8775 15025 +8625 14975 +8475 14975 +8475 14875 +8625 14875 +8625 14775 +8525 14725 +8625 14625 +8525 14575 +8375 14575 +8325 14475 +8425 14300 +8575 14300 +8850 14300 +8775 14225 +8825 14125 +8625 14125 +8425 14025 +8525 13925 +8425 13825 +8475 13600 +8625 13725 +8850 13725 +8850 13525 +8850 13125 +8674 13058 +8475 13200 +8275 13175 +8125 13275 +7975 13275 +7975 13175 +8125 12600 +8025 12600 +7925 12600 +7775 12600 +7625 12600 +7475 12600 +7500 12500 +7500 12400 +7425 12325 +7575 12325 +7675 12225 +7625 12125 +7775 12025 +7925 12125 +7875 12225 +7775 12175 +7775 12325 +7975 12325 +8250 12325 +8350 12525 +8350 12425 +8400 12325 +8375 12225 +8425 12125 +8550 12175 +8575 12325 +8625 12425 +8625 12525 +8775 12525 +8775 12425 +8875 12475 +8872 12354 +8900 12225 +8900 12075 +8775 12075 +8775 11925 +8775 11825 +8775 11725 +8775 11575 +8825 11475 +8675 11475 +8500 11325 +8400 11275 +8300 11325 +8400 11425 +8400 11550 +8400 11650 +8500 11825 +8625 11875 +8475 11925 +8325 11925 +8125 11725 +8225 11725 +8300 11675 +8300 11575 +8300 11475 +8225 11425 +8125 11425 +8025 11325 +7825 11325 +7725 11325 +7525 11325 +7425 11425 +7325 11425 +7250 11325 +7150 11275 +7050 11325 +7150 11425 +7250 11475 +7250 11575 +7150 11575 +7150 11675 +7250 11675 +7325 11750 +7425 11750 +7225 11925 +7075 11925 +7050 11825 +6975 11925 +7025 12075 +7125 12125 +7175 12225 +7025 12225 +6925 12175 +6925 12425 +6925 12575 +6925 12675 +6925 12825 +6665 12760 +6665 12610 +6665 12460 +6665 12310 +6665 12160 +6665 12010 +6825 11925 +6665 11860 +6665 11710 +6775 11650 +6850 11700 +6850 11600 +6775 11525 +6825 11425 +6725 11425 +6275 11475 +6225 11575 +6125 11475 +5950 11325 +5850 11425 +5750 11325 +5850 11275 +5825 11125 +5825 11025 +5925 11125 +6025 11075 +6025 10975 +6200 10975 +6300 10775 +6300 10625 +6300 10475 +6300 10375 +6275 10275 +6700 10425 +6700 10525 +6700 10625 +6700 10725 +6700 10850 +6725 11050 +6875 11025 +7000 11025 +7075 11125 +7175 11125 +7175 11025 +7550 11075 +7550 10875 +7550 10475 +8000 10475 +8000 10875 +8000 11075 +8375 11025 +8375 11125 +8475 11125 +8575 11075 +8575 10975 +8750 10975 +8850 10775 +8850 10625 +8850 10475 +8850 10375 +8825 10275 +9250 10425 +9250 10525 +9250 10625 +9250 10725 +9250 10850 +9275 11050 +9425 11025 +9550 11025 +9625 11125 +9725 11025 +9725 11125 +9700 11275 +9800 11325 +9700 11425 +9600 11325 +9375 11425 +9275 11425 +9325 11525 +9400 11600 +9400 11700 +9325 11650 +9215 11710 +9215 11860 +9375 11925 +9215 12010 +9215 12160 +9215 12310 +9215 12460 +9215 12610 +9215 12760 +9475 12825 +9475 12675 +9475 12575 +9475 12425 +9475 12175 +9575 12225 +9725 12225 +9675 12125 +9575 12075 +9525 11925 +9600 11825 +9625 11925 +9775 11925 +9975 11750 +9875 11750 +9800 11675 +9700 11675 +9700 11575 +9800 11575 +9800 11475 +9875 11425 +9975 11425 +10075 11325 +10100 11075 +10100 10875 +10100 10475 +10550 10475 +10848 10075 +10575 10075 +10437 9801 +10435 9702 +10435 9601 +10436 9502 +10436 9399 +10436 9298 +10175 9325 +10175 9425 +10175 9525 +10175 9725 +10175 9825 +10075 10075 +9800 10075 +9525 10075 +9375 10125 +9290 9806 +9289 9706 +9289 9606 +9290 9505 +9290 9406 +9289 9306 +8775 9325 +8775 9425 +8775 9525 +8775 9725 +8775 9825 +8825 10075 +8575 10075 +8298 10075 +8025 10075 +7887 9801 +7885 9702 +7885 9601 +7886 9502 +7886 9399 +7886 9298 +7625 9325 +7625 9425 +7625 9525 +7625 9725 +7625 9825 +7525 10075 +7250 10075 +6975 10075 +6825 10125 +6740 9806 +6739 9706 +6739 9606 +6740 9505 +6740 9406 +6739 9306 +7028 8820 +6925 8825 +6725 8825 +6675 8475 +6675 8375 +6675 8275 +6675 8175 +6675 8075 +6675 7975 +6675 7875 +6775 7825 +6675 7711 +6675 7710 +6676 7560 +6675 7560 +6675 7410 +6676 7409 +6675 7260 +6676 7259 +6675 7075 +6675 6875 +6675 6675 +6825 6675 +6825 6525 +6675 6525 +6675 6375 +7075 6000 +7175 6025 +7075 6200 +7175 6425 +7025 6675 +7025 6825 +7175 6775 +7325 6775 +7175 6975 +7075 7075 +7275 7075 +7375 7275 +7425 7425 +7475 7525 +7275 7475 +7175 7575 +7075 7475 +7025 7625 +6875 7625 +6925 7725 +7075 7725 +7275 7825 +7450 7775 +7450 7875 +7575 7975 +7725 7975 +7675 8125 +7600 8225 +7700 8225 +7700 8375 +7700 8475 +7550 8575 +7475 8725 +7297 8703 +7325 8825 +7525 8825 +7625 8725 +7700 8625 +7925 8775 +8025 8775 +8125 8775 +8225 8775 +8375 8775 +8325 8625 +8425 8575 +8325 8525 +8425 8225 +8525 8225 +8625 8325 +8725 8325 +8725 8425 +8625 8475 +8800 8775 +8900 8675 +8800 8575 +8875 8375 +8875 8225 +8725 8175 +8775 8075 +8875 8075 +8875 7925 +8775 7875 +8625 7825 +8625 7725 +8625 7625 +8625 7475 +8525 7425 +8525 7575 +8475 7725 +8475 7825 +8375 7975 +8225 7825 +8025 7825 +7975 7925 +8075 7975 +8175 7975 +8175 8075 +8075 8125 +7975 8075 +7875 8125 +7875 8025 +7875 7875 +7750 7750 +7900 7750 +7975 7575 +7975 7425 +8125 7425 +8225 7425 +8175 7575 +8275 7600 +8375 7425 +8325 7325 +8425 7150 +8575 7150 +8850 7150 +8775 7075 +8825 6975 +8625 6975 +8425 6875 +8525 6775 +8425 6675 +8475 6450 +8625 6575 +8850 6575 +8850 6375 +8850 5975 +8674 5908 +8475 6050 +8275 6025 +8125 6125 +7975 6125 +7975 6025 +8125 5450 +8025 5450 +7925 5450 +7775 5450 +7625 5450 +7475 5450 +7500 5350 +7500 5250 +7425 5175 +7575 5175 +7675 5075 +7625 4975 +7775 4875 +7925 4975 +7875 5075 +7775 5025 +7775 5175 +7975 5175 +8250 5175 +8350 5375 +8350 5275 +8400 5175 +8375 5075 +8425 4975 +8550 5025 +8575 5175 +8625 5275 +8625 5375 +8775 5375 +8775 5275 +8875 5325 +8872 5204 +8900 5075 +8900 4925 +8775 4925 +8775 4775 +8775 4675 +8775 4575 +8625 4725 +8500 4675 +8475 4775 +8325 4775 +8125 4575 +8225 4575 +8300 4525 +8400 4500 +8400 4400 +8300 4425 +8300 4325 +8225 4275 +8125 4275 +8025 4175 +8000 3925 +8000 3725 +8000 3325 +7550 3325 +7550 3725 +7550 3925 +7825 4175 +7725 4175 +7525 4175 +7425 4275 +7325 4275 +7250 4325 +7250 4425 +7150 4425 +7150 4525 +7250 4525 +7325 4600 +7425 4600 +7225 4775 +7075 4775 +7050 4675 +6975 4775 +7025 4925 +7125 4975 +7175 5075 +7025 5075 +6925 5025 +6925 5275 +6925 5425 +6925 5525 +6925 5675 +6665 5610 +6665 5460 +6665 5310 +6665 5160 +6665 5010 +6665 4860 +6825 4775 +6665 4710 +6665 4560 +6775 4500 +6850 4550 +6850 4450 +6775 4375 +6725 4275 +6825 4275 +7050 4175 +7150 4275 +7250 4175 +7150 4125 +7175 3975 +7175 3875 +7075 3975 +7000 3875 +6875 3875 +6725 3900 +6700 3700 +6700 3575 +6700 3475 +6700 3375 +6700 3275 +6275 3125 +6300 3225 +6300 3325 +6300 3475 +6300 3625 +6200 3825 +6025 3825 +6025 3925 +5925 3975 +5825 3975 +5825 3875 +5450 3925 +5450 3725 +5450 3325 +5000 3325 +5000 3725 +5000 3925 +4625 3875 +4625 3975 +4525 3975 +4450 3875 +4325 3875 +4175 3900 +4150 3700 +4150 3575 +4150 3475 +4150 3375 +4150 3275 +3725 3125 +3750 3225 +3750 3325 +3750 3475 +3750 3625 +3650 3825 +3475 3825 +3475 3925 +3375 3975 +3275 3875 +3275 3975 +3300 4125 +3200 4175 +3300 4275 +3400 4175 +3575 4325 +3675 4425 +3725 4325 +4175 4275 +4275 4275 +4225 4375 +4300 4450 +4300 4550 +4225 4500 +4115 4560 +4115 4710 +4275 4775 +4115 4860 +4115 5010 +4115 5160 +4115 5310 +4115 5460 +4115 5610 +4375 5675 +4375 5525 +4375 5425 +4375 5275 +4375 5025 +4475 5075 +4625 5075 +4575 4975 +4475 4925 +4425 4775 +4500 4675 +4525 4775 +4675 4775 +4875 4600 +4775 4600 +4700 4525 +4600 4525 +4600 4425 +4700 4425 +4700 4325 +4600 4275 +4500 4175 +4600 4125 +4700 4175 +4775 4275 +4875 4275 +4975 4175 +5175 4175 +5275 4175 +5475 4175 +5575 4275 +5675 4275 +5750 4325 +5750 4425 +5750 4525 +5675 4575 +5575 4575 +5775 4775 +5925 4775 +6075 4725 +5950 4675 +5850 4500 +5850 4400 +5850 4275 +5750 4175 +5850 4125 +5950 4175 +6125 4325 +6275 4325 +6225 4425 +6225 4575 +6225 4675 +6225 4775 +6225 4925 +6350 4925 +6350 5075 +6322 5204 +6325 5325 +6225 5275 +6225 5375 +6075 5375 +6075 5275 +6025 5175 +6000 5025 +5875 4975 +5825 5075 +5850 5175 +5800 5275 +5800 5375 +5700 5175 +5425 5175 +5325 5075 +5375 4975 +5225 4875 +5075 4975 +5125 5075 +5225 5025 +5225 5175 +5025 5175 +4875 5175 +4950 5250 +4950 5350 +4925 5450 +5075 5450 +5225 5450 +5375 5450 +5475 5450 +5575 5450 +5425 6025 +5425 6125 +5575 6125 +5725 6025 +5925 6050 +6124 5908 +6300 5975 +6300 6375 +6300 6575 +6075 6575 +5925 6450 +5875 6675 +5975 6775 +5875 6875 +6075 6975 +6275 6975 +6225 7075 +6300 7150 +6025 7150 +5875 7150 +5775 7325 +5825 7425 +5975 7425 +6075 7475 +5975 7575 +6075 7625 +6075 7725 +5925 7725 +5925 7825 +6075 7825 +6225 7875 +6325 7925 +6325 8075 +6225 8075 +6175 8175 +6325 8225 +6325 8375 +6175 8325 +6075 8325 +5975 8225 +5875 8225 +5825 7975 +5675 7825 +5725 7600 +5625 7575 +5675 7425 +5575 7425 +5425 7425 +5425 7575 +5350 7750 +5200 7750 +5325 7875 +5475 7825 +5425 7925 +5525 7975 +5625 7975 +5625 8075 +5525 8125 +5425 8075 +5325 8025 +5325 8125 +5150 8225 +5050 8225 +5125 8125 +5175 7975 +5025 7975 +4900 7875 +4900 7775 +4725 7825 +4525 7725 +4375 7725 +4325 7625 +4475 7625 +4525 7475 +4625 7575 +4725 7475 +4925 7525 +4875 7425 +4825 7275 +4725 7075 +4525 7075 +4625 6975 +4775 6775 +4625 6775 +4475 6825 +4475 6675 +4625 6425 +4525 6200 +4625 6025 +4525 6000 +4125 6375 +4125 6525 +4275 6525 +4275 6675 +4125 6675 +4125 6875 +4125 7075 +4126 7259 +4125 7260 +4126 7409 +4125 7410 +4125 7560 +4126 7560 +4125 7710 +4125 7711 +4225 7825 +4125 7875 +4125 7975 +4125 8075 +4125 8175 +4125 8275 +4125 8375 +4125 8475 +4175 8825 +4375 8825 +4478 8820 +4747 8703 +4775 8825 +4925 8725 +4975 8825 +5075 8725 +5000 8575 +5150 8375 +5150 8475 +5150 8625 +5375 8775 +5475 8775 +5575 8775 +5675 8775 +5825 8775 +5775 8625 +5775 8525 +5875 8575 +6075 8475 +6175 8425 +6250 8575 +6350 8675 +6250 8775 +6225 9325 +6225 9425 +6225 9525 +6225 9725 +6225 9825 +6275 10075 +6025 10075 +5748 10075 +5475 10075 +5337 9801 +5335 9702 +5335 9601 +5336 9502 +5336 9399 +5336 9298 +5075 9325 +5075 9425 +5075 9525 +5075 9725 +5075 9825 +4975 10075 +4700 10075 +4425 10075 +4275 10125 +4190 9806 +4189 9706 +4189 9606 +4190 9505 +4190 9406 +4189 9306 +3675 9325 +3675 9425 +3675 9525 +3675 9725 +3675 9825 +3725 10075 +3475 10075 +3198 10075 +2925 10075 +2787 9801 +2785 9702 +2785 9601 +2786 9502 +2786 9399 +2786 9298 +2525 9325 +2525 9425 +2525 9525 +2525 9725 +2525 9825 +2425 10075 +2150 10075 +2450 10475 +2900 10475 +2900 10875 +2900 11075 +3275 11025 +3275 11125 +3375 11125 +3475 11075 +3475 10975 +3650 10975 +3750 10775 +3750 10625 +3750 10475 +3750 10375 +3725 10275 +4150 10425 +4150 10525 +4150 10625 +4150 10725 +4150 10850 +4175 11050 +4325 11025 +4450 11025 +4525 11125 +4625 11025 +4625 11125 +4600 11275 +4700 11325 +4600 11425 +4500 11325 +4275 11425 +4175 11425 +4225 11525 +4300 11600 +4300 11700 +4225 11650 +4115 11710 +4115 11860 +4275 11925 +4115 12010 +4115 12160 +4115 12310 +4115 12460 +4115 12610 +4115 12760 +4375 12825 +4375 12675 +4375 12575 +4375 12425 +4375 12175 +4475 12225 +4625 12225 +4575 12125 +4475 12075 +4425 11925 +4500 11825 +4525 11925 +4675 11925 +4875 11750 +4775 11750 +4700 11675 +4600 11675 +4600 11575 +4700 11575 +4700 11475 +4775 11425 +4875 11425 +4975 11325 +5175 11325 +5275 11325 +5000 11075 +5000 10875 +5000 10475 +5450 10475 +5450 10875 +5450 11075 +5475 11325 +5575 11425 +5675 11425 +5750 11475 +5750 11575 +5850 11550 +5850 11650 +5750 11675 +5675 11725 +5575 11725 +5775 11925 +5925 11925 +5950 11825 +6075 11875 +6225 11725 +6225 11825 +6225 11925 +6225 12075 +6350 12075 +6350 12225 +6322 12354 +6325 12475 +6225 12425 +6225 12525 +6075 12525 +6075 12425 +6025 12325 +6000 12175 +5875 12125 +5825 12225 +5850 12325 +5800 12425 +5800 12525 +5700 12325 +5425 12325 +5325 12225 +5375 12125 +5225 12025 +5075 12125 +5125 12225 +5225 12175 +5225 12325 +5025 12325 +4875 12325 +4950 12400 +4950 12500 +4925 12600 +5075 12600 +5225 12600 +5375 12600 +5475 12600 +5575 12600 +5425 13175 +5425 13275 +5575 13275 +5725 13175 +5925 13200 +6124 13058 +6300 13125 +6300 13525 +6300 13725 +6075 13725 +5925 13600 +5875 13825 +5975 13925 +5875 14025 +6075 14125 +6275 14125 +6225 14225 +6300 14300 +6025 14300 +5875 14300 +5775 14475 +5825 14575 +5725 14750 +5625 14725 +5675 14575 +5575 14575 +5425 14575 +5425 14725 +5350 14900 +5200 14900 +5325 15025 +5325 15175 +5325 15275 +5425 15225 +5525 15275 +5625 15225 +5625 15125 +5525 15125 +5425 15075 +5475 14975 +5675 14975 +5825 15125 +5925 14975 +5925 14875 +5975 14725 +5975 14575 +6075 14625 +6075 14775 +6075 14875 +6075 14975 +6225 15025 +6325 15075 +6325 15225 +6225 15225 +6175 15325 +6325 15375 +6325 15525 +6250 15725 +6350 15825 +6250 15925 +6075 15625 +6175 15575 +6175 15475 +6075 15475 +5975 15375 +5875 15375 +5775 15675 +5875 15725 +5775 15775 +5825 15925 +5675 15925 +5575 15925 +5475 15925 +5375 15925 +5150 15775 +5075 15875 +4975 15975 +4775 15975 +4747 15853 +4925 15875 +5000 15725 +5150 15625 +5150 15525 +5150 15375 +5050 15375 +5125 15275 +5175 15125 +5025 15125 +4900 15025 +4900 14925 +4725 14975 +4525 14875 +4375 14875 +4325 14775 +4475 14775 +4525 14625 +4625 14725 +4725 14625 +4925 14675 +4875 14575 +4825 14425 +4725 14225 +4525 14225 +4625 14125 +4775 13925 +4625 13925 +4475 13975 +4475 13825 +4625 13575 +4525 13350 +4625 13175 +4525 13150 +4125 13525 +4125 13675 +4275 13675 +4275 13825 +4125 13825 +4125 14025 +4125 14225 +4126 14409 +4125 14410 +4126 14559 +4125 14560 +4125 14710 +4126 14710 +4125 14860 +4125 14861 +4225 14975 +4125 15025 +4125 15125 +4125 15225 +4125 15325 +4125 15425 +4125 15525 +4125 15625 +4478 15970 +4375 15975 +4175 15975 +3800 15825 +3700 15925 +3700 15725 +3625 15575 +3525 15625 +3325 15725 +3225 15675 +3225 15775 +3275 15925 +3125 15925 +3025 15925 +2925 15925 +2825 15925 +2600 15775 +2600 15625 +2600 15525 +2450 15725 +2525 15875 +2425 15975 +2375 15875 +2225 15975 +2197 15853 +1928 15970 +1825 15975 +1625 15975 +1575 15625 +1575 15525 +1575 15425 +1575 15325 +1575 15225 +1575 15125 +1575 15025 +1675 14975 +1575 14861 +1575 14860 +1575 14710 +1576 14710 +1575 14560 +1576 14559 +1575 14410 +1576 14409 +1575 14225 +1575 14025 +1575 13825 +1725 13825 +1725 13675 +1575 13675 +1575 13525 +1975 13150 +2075 13175 +1975 13350 +2075 13575 +1925 13825 +1925 13975 +2075 13925 +2225 13925 +2075 14125 +1975 14225 +2175 14225 +2275 14425 +2325 14575 +2375 14675 +2175 14625 +2075 14725 +1975 14625 +1925 14775 +1775 14775 +1825 14875 +1975 14875 +2175 14975 +2350 14925 +2350 15025 +2475 15125 +2625 15125 +2575 15275 +2500 15375 +2600 15375 +2775 15275 +2775 15175 +2875 15225 +2975 15275 +3075 15225 +3075 15125 +2975 15125 +2925 14975 +2875 15075 +2775 15025 +2650 14900 +2800 14900 +2875 14725 +2875 14575 +3025 14575 +3125 14575 +3075 14725 +3175 14750 +3125 14975 +3275 15125 +3325 15375 +3425 15375 +3525 15475 +3625 15475 +3775 15525 +3775 15375 +3625 15325 +3675 15225 +3775 15225 +3775 15075 +3675 15025 +3525 14975 +3375 14975 +3375 14875 +3525 14875 +3525 14775 +3425 14725 +3525 14625 +3425 14575 +3275 14575 +3225 14475 +3325 14300 +3475 14300 +3750 14300 +3675 14225 +3725 14125 +3525 14125 +3325 14025 +3425 13925 +3325 13825 +3375 13600 +3525 13725 +3750 13725 +3750 13525 +3750 13125 +3574 13058 +3375 13200 +3175 13175 +3025 13275 +2875 13275 +2875 13175 +3025 12600 +2925 12600 +2825 12600 +2675 12600 +2525 12600 +2375 12600 +2400 12500 +2400 12400 +2325 12325 +2475 12325 +2575 12225 +2525 12125 +2675 12025 +2825 12125 +2775 12225 +2675 12175 +2675 12325 +2875 12325 +3150 12325 +3250 12525 +3250 12425 +3300 12325 +3275 12225 +3325 12125 +3450 12175 +3475 12325 +3525 12425 +3525 12525 +3675 12525 +3675 12425 +3775 12475 +3772 12354 +3800 12225 +3800 12075 +3675 12075 +3675 11925 +3675 11825 +3675 11725 +3675 11575 +3725 11475 +3575 11475 +3400 11325 +3300 11275 +3200 11325 +3300 11425 +3300 11550 +3300 11650 +3400 11825 +3525 11875 +3375 11925 +3225 11925 +3025 11725 +3125 11725 +3200 11675 +3200 11575 +3200 11475 +3125 11425 +3025 11425 +2925 11325 +2725 11325 +2625 11325 +2450 10875 +2450 11075 +2425 11325 +2325 11425 +2225 11425 +2150 11475 +2150 11575 +2050 11575 +2050 11675 +2150 11675 +2225 11750 +2325 11750 +2125 11925 +1975 11925 +1950 11825 +1875 11925 +1925 12075 +2025 12125 +2075 12225 +1925 12225 +1825 12175 +1825 12425 +1825 12575 +1825 12675 +1825 12825 +1565 12760 +1565 12610 +1565 12460 +1565 12310 +1565 12160 +1565 12010 +1725 11925 +1565 11860 +1565 11710 +1675 11650 +1750 11700 +1750 11600 +1675 11525 +1625 11425 +1725 11425 +1950 11325 +2050 11425 +2150 11325 +2050 11275 +2075 11125 +2075 11025 +1975 11125 +1900 11025 +1775 11025 +1625 11050 +1600 10850 +1600 10725 +1600 10625 +1600 10525 +1600 10425 +1725 10125 +1875 10075 +1640 9806 +1639 9706 +1639 9606 +1640 9505 +1640 9406 +1639 9306 +1928 8820 +1825 8825 +1625 8825 +1575 8475 +1575 8375 +1575 8275 +1575 8175 +1575 8075 +1575 7975 +1575 7875 +1675 7825 +1575 7711 +1575 7710 +1576 7560 +1575 7560 +1575 7410 +1576 7409 +1575 7260 +1576 7259 +1575 7075 +1575 6875 +1575 6675 +1725 6675 +1725 6525 +1575 6525 +1575 6375 +1975 6000 +2075 6025 +1975 6200 +2075 6425 +1925 6675 +1925 6825 +2075 6775 +2225 6775 +2075 6975 +1975 7075 +2175 7075 +2275 7275 +2325 7425 +2375 7525 +2175 7475 +2075 7575 +1975 7475 +1925 7625 +1775 7625 +1825 7725 +1975 7725 +2175 7825 +2350 7775 +2350 7875 +2475 7975 +2625 7975 +2575 8125 +2500 8225 +2600 8225 +2600 8375 +2600 8475 +2450 8575 +2375 8725 +2197 8703 +2225 8825 +2425 8825 +2525 8725 +2600 8625 +2825 8775 +2925 8775 +3025 8775 +3125 8775 +3275 8775 +3225 8625 +3325 8575 +3225 8525 +3325 8225 +3425 8225 +3525 8325 +3625 8325 +3625 8425 +3525 8475 +3700 8775 +3800 8675 +3700 8575 +3775 8375 +3775 8225 +3625 8175 +3675 8075 +3775 8075 +3775 7925 +3675 7875 +3525 7825 +3525 7725 +3525 7625 +3525 7475 +3425 7425 +3425 7575 +3375 7725 +3375 7825 +3275 7975 +3125 7825 +2925 7825 +2875 7925 +2975 7975 +3075 7975 +3075 8075 +2975 8125 +2875 8075 +2775 8125 +2775 8025 +2775 7875 +2650 7750 +2800 7750 +2875 7575 +2875 7425 +3025 7425 +3125 7425 +3075 7575 +3175 7600 +3275 7425 +3225 7325 +3325 7150 +3475 7150 +3750 7150 +3675 7075 +3725 6975 +3525 6975 +3325 6875 +3425 6775 +3325 6675 +3375 6450 +3525 6575 +3750 6575 +3750 6375 +3750 5975 +3574 5908 +3375 6050 +3175 6025 +3025 6125 +2875 6125 +2875 6025 +3025 5450 +2925 5450 +2825 5450 +2675 5450 +2525 5450 +2375 5450 +2400 5350 +2400 5250 +2325 5175 +2475 5175 +2575 5075 +2525 4975 +2675 4875 +2825 4975 +2775 5075 +2675 5025 +2675 5175 +2875 5175 +3150 5175 +3250 5375 +3250 5275 +3300 5175 +3275 5075 +3325 4975 +3450 5025 +3475 5175 +3525 5275 +3525 5375 +3675 5375 +3675 5275 +3775 5325 +3772 5204 +3800 5075 +3800 4925 +3675 4925 +3675 4775 +3675 4675 +3675 4575 +3525 4725 +3400 4675 +3375 4775 +3225 4775 +3025 4575 +3125 4575 +3200 4525 +3300 4500 +3300 4400 +3200 4425 +3200 4325 +3125 4275 +3025 4275 +2925 4175 +2900 3925 +2900 3725 +2900 3325 +2450 3325 +2450 3725 +2450 3925 +2725 4175 +2625 4175 +2425 4175 +2325 4275 +2225 4275 +2150 4325 +2150 4425 +2050 4425 +2050 4525 +2150 4525 +2225 4600 +2325 4600 +2125 4775 +1975 4775 +1950 4675 +1875 4775 +1925 4925 +2025 4975 +2075 5075 +1925 5075 +1825 5025 +1825 5275 +1825 5425 +1825 5525 +1825 5675 +1565 5610 +1565 5460 +1565 5310 +1565 5160 +1565 5010 +1565 4860 +1725 4775 +1565 4710 +1565 4560 +1675 4500 +1750 4550 +1750 4450 +1675 4375 +1625 4275 +1725 4275 +1950 4175 +2050 4275 +2150 4175 +2050 4125 +2075 3975 +2075 3875 +1975 3975 +1900 3875 +1775 3875 +1625 3900 +1600 3700 +1600 3575 +1600 3475 +1600 3375 +1600 3275 +1725 2975 +1640 2656 +1639 2556 +1639 2456 +1640 2355 +1640 2256 diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/readme b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/readme new file mode 100644 index 000000000..7203e5789 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/readme @@ -0,0 +1,35 @@ +NAME : eil101 +COMMENT : 101-city problem (Christofides/Eilon) +TYPE : TSP +DIMENSION : 101 +EDGE_WEIGHT_TYPE : EUC_2D + +NAME: ali535 +TYPE: TSP +COMMENT: 535 Airports around the globe (Padberg/Rinaldi) +DIMENSION: 535 +EDGE_WEIGHT_TYPE: GEO +DISPLAY_DATA_TYPE: COORD_DISPLAY + +NAME : pr2392 +COMMENT : 2392-city problem (Padberg/Rinaldi) +TYPE : TSP +DIMENSION : 2392 +EDGE_WEIGHT_TYPE : EUC_2D + +NAME : rl5915 +COMMENT : 5915-city TSP (Reinelt) +TYPE : TSP +DIMENSION : 5915 +EDGE_WEIGHT_TYPE : EUC_2D + +NAME : usa13509 +COMMENT : Cities with population at least 500 in the continental US. +COMMENT : Contributed by David Applegate and Andre Rohe, based on the +COMMENT : data set "US.lat-long" from the ftp site ftp.cs.toronto.edu. +COMMENT : The file US.lat-long.Z can be found in the directory /doc/geography. +TYPE : TSP +DIMENSION : 13509 +EDGE_WEIGHT_TYPE : EUC_2D + + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/rl5915.tsp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/rl5915.tsp new file mode 100644 index 000000000..9eda5f662 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/rl5915.tsp @@ -0,0 +1,5916 @@ +5915 +18192 8954 +18192 9856 +18192 11319 +18272 8624 +18416 7348 +18416 8294 +1200 7370 +1200 8184 +1200 10912 +1200 11440 +17904 572 +17904 2684 +17904 6908 +17904 7348 +17904 8624 +8272 308 +8272 2068 +8272 2508 +8272 3080 +8272 3608 +8272 5302 +8336 7260 +8464 7260 +8496 9548 +8496 10582 +8496 11440 +15888 9064 +15888 9504 +15888 10252 +15888 11000 +15936 8184 +16048 8184 +16208 8184 +16336 572 +16336 1012 +16336 1452 +16336 2992 +16336 4818 +16336 6028 +16336 7348 +1040 7370 +1040 8184 +1040 10912 +1040 11440 +4464 308 +4640 308 +4816 308 +4944 308 +5168 308 +5440 308 +5616 308 +5728 308 +5808 3080 +5808 3608 +5808 4664 +5808 5368 +5808 6072 +5808 7128 +5936 9658 +5936 11286 +16848 572 +16848 1452 +16848 2992 +16848 4708 +16848 6028 +16848 7348 +16848 8514 +16848 9284 +16848 9922 +16848 11198 +8240 7480 +8400 9548 +8400 10582 +8400 11440 +1520 9152 +1520 10912 +1520 11440 +1584 6446 +1584 7590 +1584 8294 +5168 11440 +5280 11440 +5456 11440 +5584 11440 +5712 11440 +2672 6336 +2784 6556 +2976 6556 +3104 6556 +3264 6556 +3360 6556 +3600 6556 +3856 6556 +3920 6556 +4016 6556 +4144 6556 +4208 6556 +4352 6556 +4464 6556 +4560 6556 +4688 6556 +4720 7260 +4720 8140 +4720 9702 +4720 10582 +4720 11132 +17008 572 +17008 1452 +17008 2992 +17008 5874 +17008 7348 +17072 8096 +17136 8096 +17280 8096 +17456 8096 +17520 8404 +17520 8954 +17520 10142 +17520 11319 +880 7370 +880 8184 +880 11440 +4144 4840 +4144 7700 +4304 8360 +4416 8360 +4576 8360 +4656 8360 +4864 8360 +5040 8360 +5296 8360 +5456 8844 +5456 9812 +5520 3608 +5520 4664 +5520 5368 +5520 5918 +5520 6930 +16560 8954 +16560 9922 +16592 572 +16592 1452 +16592 2992 +16592 4818 +16592 6138 +16592 7348 +7728 7744 +7728 9548 +7728 10846 +7792 7040 +7856 7040 +7952 7040 +8016 308 +8016 2068 +8016 2508 +8016 3080 +8016 3608 +8016 4268 +8016 5852 +16272 9064 +16272 9504 +16272 9922 +16272 11000 +16640 8844 +16720 8844 +16784 6028 +16784 7348 +16784 8514 +464 11440 +528 8184 +640 8184 +784 7370 +784 7964 +7664 6446 +7664 8074 +7664 9548 +7664 10846 +7728 308 +7728 2068 +7728 2508 +7728 3080 +7728 3608 +7728 4048 +7728 4488 +5232 3608 +5232 4664 +5232 5368 +5232 5918 +5232 6776 +5520 7920 +3856 7480 +3920 7920 +4016 7920 +4176 9152 +4176 9922 +4176 10472 +4176 10912 +4176 11440 +5984 748 +6096 3080 +6096 3608 +6096 4664 +6160 5368 +6224 5368 +6320 5368 +6496 5368 +6608 5698 +6608 6336 +6608 7502 +6608 9064 +6608 10142 +6608 11022 +17200 5874 +17200 7348 +17200 9284 +17200 9922 +17200 11198 +17296 5192 +17440 5192 +17568 5192 +17616 572 +17616 2992 +7248 10362 +7248 11286 +7376 308 +7376 968 +7376 2068 +7376 2508 +7376 3080 +7376 3608 +7376 4488 +7376 5588 +7376 6556 +7376 7744 +1808 6446 +1840 7436 +1840 8404 +1840 9042 +1840 10912 +1840 11440 +12272 9878 +12464 9064 +12592 9064 +12736 9064 +12848 902 +12848 1980 +12848 2640 +12848 3168 +12848 3608 +12848 4158 +12848 5368 +12848 6556 +12848 6996 +12848 8008 +12848 8844 +1648 8404 +1648 9152 +1648 10912 +1648 11440 +1680 6446 +1680 7590 +6256 9658 +6256 11022 +16976 8514 +16976 9284 +16976 9922 +16976 11198 +17072 5720 +17136 5720 +17440 5720 +17600 5720 +11600 572 +11600 1760 +11600 3388 +11600 5258 +11600 6556 +11600 6996 +11600 7898 +11632 8602 +11632 9284 +11632 10208 +17376 10142 +17728 10142 +18416 10142 +18608 10142 +18704 10142 +18864 10142 +18992 10142 +19088 10142 +6224 968 +6224 3080 +6224 3608 +6224 4664 +6400 10912 +6768 10912 +6864 11286 +1936 6336 +1936 7436 +1968 8404 +1968 9152 +1968 10912 +1968 11440 +3984 8712 +4304 8932 +4416 8932 +4496 10802 +15440 1232 +15440 3608 +15440 4180 +15440 4818 +15536 5808 +15648 5808 +15760 5808 +15840 5808 +15936 5808 +16048 5808 +16208 5808 +5584 10252 +5728 10252 +6000 10252 +6064 10252 +6160 10252 +6320 968 +6320 3080 +6320 3608 +6320 4664 +6384 9548 +6384 10472 +16720 11198 +17088 11198 +17376 11198 +17728 11198 +18416 11198 +18608 11198 +18704 11198 +18848 11198 +15280 572 +15280 1232 +15280 3608 +15280 4180 +15280 4818 +15280 6138 +15280 7348 +15280 8228 +15280 9064 +15280 9504 +15280 10252 +15280 11000 +3472 7920 +3472 8712 +3472 9372 +3472 10472 +3472 10912 +3472 11440 +208 11440 +432 7964 +944 7964 +1104 7370 +1424 6446 +1424 7370 +1424 8294 +10096 4378 +10096 5478 +10096 6556 +10096 7480 +10096 8008 +10096 8602 +10096 9284 +10096 10318 +10096 11440 +10256 3608 +10336 3608 +10448 3608 +10544 3608 +10608 3608 +10672 3608 +10752 3608 +10864 3608 +10992 3608 +11088 3608 +11168 3608 +11280 3608 +11408 3608 +688 7370 +688 11440 +6160 968 +6496 968 +6592 968 +6736 968 +6848 968 +6944 968 +7104 968 +7232 968 +7552 968 +7600 308 +7600 2068 +7600 2508 +7600 3080 +7600 3608 +7600 4048 +7600 4488 +7632 5148 +7792 5148 +7856 5148 +7920 5148 +8112 5148 +8384 5148 +8464 5148 +8624 5148 +8800 5148 +8912 5148 +9216 5148 +9504 5148 +9616 5148 +9744 5148 +9888 5148 +9936 6556 +9936 7480 +9936 8382 +9936 9284 +9936 11440 +10032 572 +10032 1452 +10032 2728 +6496 7084 +6736 7084 +6768 9064 +6768 10142 +9936 572 +9936 1452 +5200 10032 +7408 10362 +7568 10692 +7856 10692 +7936 10692 +8032 10692 +8144 10692 +8224 10692 +8320 10692 +8784 10692 +8976 10692 +9408 10692 +10288 10692 +10400 10692 +10560 10692 +10704 10692 +10864 10692 +10960 10692 +11136 10692 +11264 10692 +11392 10692 +11472 10692 +11568 10692 +4880 9218 +4880 10032 +4880 10582 +4880 11132 +4944 3608 +4944 4664 +4944 5368 +4944 5918 +4944 6776 +4944 7436 +6944 308 +7104 308 +7232 308 +7792 308 +7856 308 +7920 308 +8128 308 +8384 308 +8464 308 +8528 308 +8592 308 +8688 308 +8800 308 +8912 308 +9008 308 +9104 308 +9200 308 +9232 1452 +9232 2288 +9232 3388 +9344 7260 +9456 8602 +9456 11440 +3568 7920 +3664 7920 +3728 7920 +8240 9548 +8240 11440 +9376 6776 +9776 572 +9776 1452 +9776 2508 +9776 3388 +6992 7854 +6992 9174 +6992 9812 +6992 10362 +7056 2068 +7056 3080 +7056 3608 +7056 4664 +7056 5588 +7056 6556 +14512 682 +14640 3608 +14640 4048 +14640 4598 +14640 6138 +14640 7568 +14640 8228 +14640 9064 +14640 9504 +14640 10252 +14640 11000 +14768 1012 +14848 1012 +14960 1012 +15376 1012 +15536 1012 +15664 1012 +15760 1012 +15840 1012 +15936 1012 +16048 1012 +16208 1012 +16464 1012 +16528 572 +14736 6138 +14736 7568 +14736 8228 +14736 9064 +14736 9504 +14736 10252 +14736 10890 +14768 4928 +14880 4928 +14976 4928 +15376 4928 +15536 4928 +15648 4928 +15760 4928 +15840 4928 +15936 4928 +16048 4928 +16208 4928 +16464 4928 +16704 4928 +13808 6028 +13808 6776 +13808 7788 +13808 8228 +13808 9504 +13808 10362 +13808 11110 +14032 4708 +14144 4708 +14320 4708 +14464 4708 +16944 4708 +3664 8712 +3728 9284 +3760 9702 +3760 10472 +3760 10912 +3760 11440 +3600 8712 +3600 9482 +4048 9812 +4336 9812 +4576 9812 +4656 9812 +4976 8844 +8976 8118 +8976 9394 +8976 11440 +10176 6556 +10304 6556 +10448 6556 +10576 6556 +10736 6556 +10832 6556 +10896 6556 +10976 6556 +11088 6556 +11168 6556 +11264 6556 +11424 6556 +11536 6556 +11664 6556 +11728 6556 +11792 6556 +11872 6556 +11968 6556 +12112 6556 +12272 6556 +12448 6556 +12608 6556 +12736 6556 +13008 6556 +13072 1012 +13072 1980 +13072 2640 +13072 3608 +13072 4268 +13072 5368 +13168 572 +13264 572 +13408 572 +13568 572 +13696 572 +14016 572 +14160 572 +14320 572 +15120 572 +15376 572 +10480 572 +10480 1452 +10480 6006 +7120 2508 +7120 3080 +7120 3608 +7120 4664 +7120 5588 +7120 6556 +7120 7744 +7120 9064 +7120 9812 +7120 10362 +7120 11286 +3728 8712 +4016 10472 +4016 10912 +4016 11440 +6480 9064 +6896 9064 +7248 2068 +7248 2508 +7248 3080 +7248 3608 +7248 4664 +7248 5588 +7248 6556 +7248 7480 +3920 8712 +5056 9372 +3536 9372 +3536 10472 +3536 10912 +3536 11440 +8784 8448 +10304 8448 +10560 8448 +10704 8448 +10768 8448 +10848 8448 +10976 8448 +11120 8448 +11264 8448 +11552 8448 +11760 8448 +11888 8448 +12080 8448 +12240 8448 +12720 572 +12720 1980 +12720 3718 +12720 5368 +12720 6996 +2800 7326 +2928 7700 +2992 7700 +3104 7700 +3264 7700 +4208 7700 +8112 2068 +8112 2508 +8112 3080 +8112 3608 +8112 4268 +8112 7480 +9584 2728 +9584 3388 +9840 2288 +11440 2288 +11728 2288 +11824 2288 +11984 2288 +12112 2288 +12256 2288 +12384 2288 +12464 2288 +12496 572 +12496 1232 +12608 1012 +5584 7920 +5680 7920 +5760 7920 +6896 7920 +7568 7920 +8144 7920 +8208 7920 +9136 7590 +10544 6116 +11088 6116 +11168 6116 +11264 6116 +11312 572 +11312 1496 +11312 5258 +10768 572 +10768 1342 +10768 4488 +10768 5038 +10768 5588 +10768 6996 +10768 9284 +10768 9878 +5584 8844 +5616 3080 +6160 3080 +6496 3080 +6608 3080 +6736 3080 +6848 3080 +6944 3080 +7792 3080 +7856 3080 +7920 3080 +8384 3080 +8464 3080 +8560 3080 +8688 3080 +8800 3080 +8912 3080 +9008 3080 +8688 2288 +8464 6116 +8528 2068 +8528 2508 +8528 3608 +8464 2068 +8464 2508 +8464 3608 +17456 572 +17456 2992 +17456 7238 +11728 2948 +11824 2948 +11984 2948 +12112 2948 +12256 2948 +12384 2948 +12464 2948 +12560 572 +12560 1980 +12560 2728 +17552 7238 +17632 8184 +17776 8184 +18080 8184 +18256 9064 +10448 10032 +10560 10032 +10704 10032 +10864 10032 +10976 10032 +11136 10032 +11760 10032 +11888 10032 +12032 10032 +12144 10032 +12880 10032 +13008 10032 +13168 10032 +13312 10032 +13472 10032 +13584 10032 +13680 3608 +13680 4268 +13680 6028 +13680 6776 +13680 8008 +13680 9504 +17760 6908 +18048 6908 +18128 7348 +12640 3388 +12784 2640 +12784 3168 +10976 8008 +11088 8008 +11264 8008 +11664 8008 +11728 8008 +11792 8008 +11888 8008 +12912 8008 +13008 8008 +13184 8008 +13328 8008 +13456 8008 +13568 8008 +8400 2068 +8400 2508 +8400 3608 +9328 1452 +9520 1452 +9632 1452 +9840 1452 +10160 1452 +10256 1452 +10336 1452 +10544 1452 +10608 1452 +10672 1452 +10864 1452 +10992 1452 +11088 1452 +11168 1452 +12304 572 +14864 3608 +14864 4048 +14864 6138 +14864 7568 +14864 8228 +14864 9064 +14864 9504 +14864 10252 +14864 10890 +7792 2068 +7792 2508 +7792 3608 +7792 4048 +7792 4488 +7792 6446 +15376 3608 +15376 4180 +15376 6138 +15376 7348 +6864 2068 +6864 3608 +6864 4774 +6928 5368 +10544 5368 +10672 5368 +10704 9284 +12464 11000 +12592 11000 +12736 11000 +12880 11000 +13008 11000 +13168 11000 +13312 11000 +13456 11000 +13584 11000 +14144 11000 +14224 11000 +14336 11000 +14416 11000 +14992 11000 +15440 11000 +15632 11000 +15760 11000 +15824 11000 +16160 11000 +16464 11000 +15952 572 +15952 1452 +16048 2992 +16208 2992 +16464 2992 +16704 2992 +17072 2992 +17136 2992 +17296 2992 +15664 572 +15664 3608 +15664 4180 +15664 7348 +15664 7788 +15664 9064 +15664 9504 +15664 10252 +16432 1452 +8144 9548 +8144 11440 +9616 572 +12112 572 +12112 3938 +12112 5258 +8304 9548 +8304 11440 +12912 8844 +13008 8844 +13184 8844 +13328 8844 +13456 8844 +13552 3608 +13552 4378 +13552 5368 +13552 6028 +13552 6776 +11920 6996 +11920 9284 +11952 572 +11952 3938 +11952 5258 +10320 572 +10448 11440 +11824 572 +11824 3938 +11824 5258 +12656 5368 +5008 10692 +5008 11132 +13168 1980 +13168 2640 +13168 3608 +13168 4378 +13168 5478 +13232 6028 +13376 6028 +13488 6028 +14032 6028 +14144 6028 +14224 6028 +14320 6028 +14464 6028 +14976 6028 +16704 6028 +3280 10912 +3280 11440 +6736 308 +6736 2068 +6736 3608 +6736 4774 +6736 5698 +6736 6336 +8784 11440 +10288 11440 +10512 11440 +11792 6996 +8720 4158 +6800 5808 +6800 6336 +6912 6556 +7856 6556 +8896 6556 +8944 2288 +8944 3608 +7568 9504 +7856 9504 +8784 9504 +14144 8228 +14224 8228 +14336 8228 +14416 8228 +14480 8228 +15440 8228 +15504 8228 +15536 3608 +15536 4180 +15536 7348 +15568 572 +15760 572 +15840 572 +16048 572 +16208 572 +16704 572 +17104 572 +17296 572 +18000 572 +18080 572 +11728 572 +11728 3938 +11728 5258 +11728 6996 +11760 9284 +12272 3938 +12272 5258 +10512 9284 +7856 4048 +7920 4048 +8784 2288 +8784 3608 +8784 4268 +7920 2068 +7920 2508 +7920 3608 +7920 4488 +8880 4268 +10544 572 +10544 6996 +10608 4488 +9008 2288 +9312 2288 +11440 572 +11440 5258 +11440 6996 +11536 6996 +15824 7348 +15824 7788 +15824 9064 +15824 9504 +15824 10252 +6608 2068 +6608 3608 +6608 4664 +6896 5808 +112 11198 +10672 4488 +10832 4488 +10864 572 +10864 5038 +11088 6996 +9520 572 +9520 2068 +12240 6996 +3280 8712 +3280 9152 +3632 10472 +3632 10912 +3632 11440 +11568 9284 +14128 10472 +14160 1342 +14160 3608 +14160 4048 +14160 6776 +14160 7678 +14160 9504 +4080 10472 +4336 10472 +4576 10472 +4976 10032 +528 7370 +16016 1452 +16016 7348 +16016 9064 +16016 9504 +16160 9922 +16464 9922 +16640 9922 +16720 9922 +17088 9922 +1744 10912 +2112 10912 +2368 10912 +2544 10912 +2944 10912 +3056 8712 +3056 9152 +3088 10912 +4080 10912 +4336 10912 +4432 10912 +13456 9504 +14224 7788 +14336 7788 +14416 7788 +14448 1342 +14448 3608 +14448 4048 +1280 8404 +1744 8404 +1904 8404 +2160 8404 +2224 8404 +2368 8404 +2544 8404 +2704 7546 +14032 1342 +14032 3608 +14032 6776 +14976 7568 +14320 4048 +14768 4048 +13392 1980 +13392 3608 +13392 4378 +13392 5368 +16688 1452 +13360 6776 +16208 1452 +16208 7348 +1504 6336 +2064 6336 +2160 6336 +2224 6336 +2384 6336 +2544 6336 +4560 7370 +4304 7260 +4384 7260 +4464 7260 +4816 7260 +4880 7260 +14352 1342 +14352 3608 +14352 9504 +14352 10252 +5744 8844 +4336 11440 +6160 3608 +6160 4664 +6160 11132 +6512 3608 +6512 4664 +6928 2068 +6928 3608 +6928 4664 +11280 6996 +12592 6996 +13488 3608 +14768 3608 +14960 3608 +15760 3608 +15840 3608 +15920 7348 +12368 572 +12368 1232 +12368 3938 +12368 5258 +11664 6996 +17776 2684 +12464 3938 +13488 4268 +13232 6666 +10192 572 +944 7370 +10848 9284 +17088 9284 +17344 9284 +4592 4840 +4592 6028 +11024 572 +11024 5038 +2384 7436 +2384 9152 +2384 11440 +2928 8712 +2928 9152 +2928 11440 +2544 7546 +2544 9152 +2544 11440 +9648 7480 +2048 7172 +2160 7172 +2224 7172 +3440 7172 +1744 9042 +1744 11440 +2096 9152 +2096 11440 +3056 11440 +10960 6996 +2992 8712 +2992 9152 +10896 6996 +4080 11440 +16144 9064 +16144 9504 +14224 6776 +14224 9504 +14224 10252 +17104 8624 +17136 7348 +15440 9064 +15440 9504 +15440 10252 +15760 7788 +15856 1452 +4208 4840 +18320 7348 +15760 4180 +9712 7480 +17072 1452 +17072 7348 +16464 9504 +7856 2068 +7856 2508 +7856 3608 +7856 4488 +16720 7348 +15504 9064 +4368 4840 +6000 11132 +6064 11132 +4688 5808 +4816 5808 +4880 5808 +9008 3608 +15760 9064 +17424 9064 +18512 8294 +4880 4664 +4880 5368 +4880 6776 +4688 4488 +4752 4488 +4816 4488 +18608 8866 +14416 9504 +14416 10252 +15760 7348 +18224 7348 +13424 6776 +18704 8866 +11088 4928 +11168 4928 +12464 5368 +15760 1452 +15760 9504 +15760 10252 +432 7480 +11168 6996 +13488 6776 +13584 9504 +13488 5368 +11184 572 +4464 4840 +4528 4840 +4816 5368 +4816 6776 +11088 572 +10672 572 +10256 572 +9840 572 +18192 10670 +18379 8624 +18416 3619 +18416 7766 +1200 3575 +1200 9658 +17904 231 +17904 1628 +17904 4796 +17904 7766 +17904 9438 +17940 9570 +18224 10670 +8272 1188 +8272 7029 +8416 7260 +8496 8866 +15888 8503 +15888 9878 +15888 10626 +15888 11429 +15984 8184 +16128 8184 +16299 8184 +16336 2222 +16336 3850 +16336 5368 +16336 6798 +16336 7887 +1040 3575 +1040 9658 +4432 220 +4496 308 +4784 308 +4848 308 +5040 308 +5296 308 +5584 308 +5648 308 +5808 220 +5808 2024 +5808 4048 +5936 8382 +5936 10802 +16848 1012 +16848 2222 +16848 3850 +16848 5368 +16848 6688 +16848 7876 +16848 10560 +16848 11528 +8240 1188 +8240 7018 +8260 7700 +8400 8756 +1520 10032 +1552 8932 +1584 3113 +1584 7018 +1584 8789 +5136 11528 +5200 11440 +5360 11440 +5552 11528 +5616 11440 +5808 11440 +5968 11528 +2672 3113 +2736 6556 +2880 6556 +3024 6556 +3200 6556 +3312 6556 +3408 6556 +3808 6556 +3888 6556 +3952 6556 +4096 6556 +4176 6556 +4256 6556 +4432 6556 +4496 6556 +4640 6556 +4720 7590 +4720 8866 +4720 11495 +17008 1012 +17008 2222 +17008 4356 +17008 6688 +17008 7843 +17028 8096 +17104 8096 +17168 8096 +17408 8096 +17499 8096 +17520 9603 +17520 10670 +880 3575 +880 9922 +4144 2365 +4144 5434 +4144 6908 +4272 8360 +4336 8360 +4512 8360 +4624 8360 +4688 8360 +4784 8360 +4944 8360 +5136 8360 +5488 7304 +5456 8481 +5456 10692 +5520 2178 +5520 4048 +5520 6402 +16560 10890 +16576 8184 +16592 1012 +16592 2222 +16592 3850 +16592 5478 +16592 6798 +16592 7887 +7728 8756 +7748 7040 +7824 7040 +7888 7040 +8016 1188 +8016 4818 +8016 6919 +16272 10461 +16272 11429 +16432 8844 +16592 8844 +16688 8844 +16763 8844 +16784 1012 +16784 2222 +16784 3850 +16784 5478 +16784 6688 +16784 7876 +464 9691 +484 8184 +560 8184 +747 8184 +784 3575 +7664 6908 +7664 8756 +7728 1188 +7728 4818 +5232 2178 +5232 4048 +5232 6402 +5232 7315 +5499 7612 +5520 8382 +5520 10692 +3856 2959 +3856 6908 +3876 7920 +3952 7920 +4096 7920 +4784 748 +4848 748 +5040 748 +5296 748 +5584 748 +5648 748 +5872 748 +6096 264 +6096 2024 +6096 4048 +6096 5225 +6116 5368 +6192 5368 +6256 5368 +6416 5368 +6571 5368 +6096 594 +6608 8646 +6608 9438 +6608 11495 +17200 5335 +17200 6688 +17200 7722 +17200 10560 +17200 11528 +17392 5192 +17504 5192 +17616 231 +17616 1782 +17616 4213 +7248 10802 +7376 638 +7376 1518 +7376 4048 +7376 4928 +7376 8756 +1808 3113 +1824 6864 +1840 8052 +1840 10032 +12272 11165 +12384 9064 +12528 9064 +12656 9064 +12827 9064 +12848 1606 +12848 2310 +12848 4708 +12848 6072 +12848 7392 +12848 8536 +1648 8778 +1648 10032 +1664 8184 +1680 3113 +1680 7018 +1680 8063 +4784 528 +4848 528 +5040 528 +5296 528 +5584 528 +5648 528 +5872 528 +5936 330 +5936 2024 +5936 4048 +5936 5324 +6096 6556 +6192 6556 +6256 8382 +6256 11495 +16976 6688 +16976 7876 +16976 10560 +16976 11528 +17040 5720 +17104 5720 +17168 5720 +17392 5720 +17504 5720 +17680 231 +17680 1782 +17680 4246 +11600 231 +11600 902 +11600 4488 +11600 6072 +11600 7392 +11616 8228 +11632 11275 +17264 10549 +17264 11528 +17284 10142 +17472 10142 +17552 10142 +17920 10142 +18368 10142 +18512 10142 +18656 10142 +18784 10142 +18928 10142 +19024 10142 +6224 429 +6224 2024 +6224 4048 +6224 8382 +6224 10813 +6352 10912 +6464 10912 +6672 10912 +6843 10912 +1936 3113 +1936 6754 +1936 8063 +1952 8184 +1968 8778 +1968 10032 +816 3575 +816 9922 +3984 2959 +3984 6908 +4128 8932 +4272 8932 +4336 8932 +4496 9031 +4496 11495 +15440 583 +15440 2530 +15440 5489 +15460 5808 +15600 5808 +15712 5808 +15792 5808 +15888 5808 +15984 5808 +16128 5808 +16288 5808 +16400 6798 +16400 7876 +16400 10461 +16400 11429 +5360 2178 +5360 4048 +5360 7194 +5552 10252 +5632 10252 +5808 10252 +5968 10252 +6032 10252 +6112 10252 +6192 10252 +6304 8536 +6288 11495 +6320 429 +6320 2024 +6320 4048 +1168 9658 +1232 3575 +1232 7843 +6352 429 +6352 2024 +6352 4048 +6352 8657 +6368 8844 +6384 11495 +16688 11407 +16784 11198 +16912 11198 +17040 11198 +17136 11198 +17296 11198 +17472 11198 +17552 11198 +17920 11198 +18368 11198 +18512 11198 +18656 11198 +18768 11198 +18928 11198 +15280 2530 +15280 5478 +15280 6798 +15280 7788 +15280 8646 +15280 9878 +15280 10626 +15280 11429 +3472 10032 +3488 7480 +3504 3113 +3504 7139 +208 9581 +308 7964 +480 7964 +560 7964 +736 7964 +848 7964 +912 7964 +976 7964 +1083 7964 +1104 3575 +1104 7843 +1392 2904 +1392 5852 +1408 6028 +1424 8778 +1424 10032 +10224 3608 +10288 3608 +10384 3608 +10512 3608 +10576 3608 +10640 3608 +10704 3608 +10800 3608 +10928 3608 +11056 3608 +11120 3608 +11216 3608 +11344 3608 +11488 3608 +11664 902 +688 3575 +688 9922 +5872 968 +6128 968 +6192 968 +6256 968 +6416 968 +6544 968 +6672 968 +6784 968 +6896 968 +7008 968 +7184 968 +7312 968 +7504 968 +7600 759 +7600 1397 +7600 4939 +7664 5148 +7760 5148 +7824 5148 +7888 5148 +7952 5148 +8048 5148 +8176 5148 +8336 5148 +8432 5148 +8496 5148 +8752 5148 +8848 5148 +8992 5148 +9440 5148 +9552 5148 +9680 5148 +9824 5148 +10011 5148 +10032 231 +10032 1012 +10032 1760 +5488 2178 +5488 4048 +5488 6402 +5648 7084 +5936 7084 +6096 7084 +6192 7084 +6416 7084 +6544 7084 +6672 7084 +6768 7161 +6768 8646 +6768 9438 +9936 231 +9936 1012 +9936 1760 +5200 2178 +5200 4048 +5200 6402 +5200 7458 +5200 10593 +7408 638 +7408 1518 +7408 4048 +7408 4928 +7408 8756 +7536 10692 +7600 10692 +7696 10692 +7824 10692 +7888 10692 +7984 10692 +8096 10692 +8176 10692 +8272 10692 +8368 10692 +8432 10692 +8720 10692 +8848 10692 +9104 10692 +9728 10692 +10032 10692 +10256 10692 +10320 10692 +10480 10692 +10656 10692 +10768 10692 +10928 10692 +11024 10692 +11216 10692 +11328 10692 +11440 10692 +11520 10692 +11600 10692 +11707 10692 +11728 11330 +11728 10868 +4880 11495 +4944 2178 +4944 4048 +4944 6402 +6896 220 +7008 308 +7184 308 +7312 308 +7504 308 +7664 308 +7760 308 +7824 308 +7888 308 +7952 308 +8048 308 +8208 308 +8336 308 +8432 308 +8496 308 +8560 308 +8624 308 +8752 308 +8848 308 +8976 308 +9040 308 +9168 308 +9232 220 +9232 759 +9232 1760 +9232 2948 +9232 7029 +3440 10032 +3504 7920 +3632 7920 +3696 7920 +3760 3113 +3760 6908 +8240 8899 +8272 8756 +8304 1188 +8304 6908 +8304 8613 +9296 6897 +9296 9878 +9456 6776 +9552 6776 +9680 6776 +9776 231 +9776 1012 +9776 1760 +6992 8646 +6992 10802 +7024 7260 +7056 638 +7056 1518 +7056 2574 +7056 4048 +7056 7139 +14640 2530 +14640 5368 +14640 6798 +14640 8646 +14640 9878 +14640 11539 +14736 1012 +14800 1012 +14912 1012 +15120 1012 +15328 1012 +15408 1012 +15472 1012 +15600 1012 +15728 1012 +15792 1012 +15888 1012 +15984 1012 +16128 1012 +16272 1012 +16400 1012 +16528 913 +14704 2530 +14720 4928 +14736 5357 +14736 6798 +14736 8646 +14736 9878 +14736 11429 +14816 4928 +14928 4928 +15136 4928 +15328 4928 +15408 4928 +15472 4928 +15600 4928 +15712 4928 +15792 4928 +15888 4928 +15984 4928 +16128 4928 +16288 4928 +16400 4928 +16544 4928 +16656 4928 +16752 4928 +16816 1012 +16816 2222 +16816 3850 +13808 5137 +13808 7282 +13808 8866 +13808 9878 +13808 11539 +13908 4708 +14080 4708 +14224 4708 +14400 4708 +14512 4708 +14736 4708 +14816 4708 +14928 4708 +15136 4708 +15328 4708 +15408 4708 +15472 4708 +15600 4708 +15712 4708 +15792 4708 +15888 4708 +15984 4708 +16128 4708 +16288 4708 +16400 4708 +16544 4708 +16656 4708 +16752 4708 +16912 4708 +16976 1012 +16976 2222 +16976 3971 +3664 3113 +3664 7018 +3664 9119 +3684 9284 +3760 10142 +3600 3113 +3600 7128 +3600 9042 +3712 9812 +3888 9812 +4128 9812 +4272 9812 +4400 9812 +4528 9812 +4624 9812 +4688 9812 +4795 9812 +4955 9152 +4816 11495 +4976 2178 +4976 4048 +4976 6402 +8976 6897 +8976 9878 +8996 6556 +9296 6556 +9456 6556 +9552 6556 +9680 6556 +9808 6556 +10016 6556 +10128 6556 +10224 6556 +10384 6556 +10512 6556 +10656 6556 +10800 6556 +10864 6556 +10928 6556 +11040 6556 +11120 6556 +11216 6556 +11328 6556 +11504 6556 +11568 6556 +11632 6556 +11696 6556 +11760 6556 +11824 6556 +11920 6556 +12032 6556 +12176 6556 +12384 6556 +12512 6556 +12688 6556 +12800 6556 +12912 6556 +13072 484 +13072 1606 +13072 2310 +13072 3124 +13072 3938 +13072 4708 +13072 6193 +13108 572 +13200 572 +13344 572 +13488 572 +13632 572 +13856 572 +14096 572 +14224 572 +14400 572 +14640 572 +14736 572 +14800 572 +14912 572 +15040 572 +15200 572 +15328 572 +15408 484 +10016 6776 +10128 6776 +10224 6776 +10384 6776 +10480 231 +10480 1012 +10480 1760 +7120 638 +7120 1518 +7120 4048 +7120 8536 +7120 10802 +3728 3113 +3728 6908 +3899 9592 +4016 10142 +5776 10802 +5796 9064 +5968 9064 +6032 9064 +6112 9064 +6192 9064 +6352 9064 +6432 9064 +6512 9064 +6672 9064 +6864 9064 +6928 9064 +7024 9064 +7211 9064 +7248 638 +7248 1518 +7248 4048 +7248 7128 +7248 8767 +3920 2959 +3920 6908 +3920 9163 +3972 9372 +4128 9372 +4272 9372 +4528 9372 +4624 9372 +4688 9372 +4784 9372 +4960 9372 +5136 9372 +5552 9372 +5632 9372 +5808 9372 +5968 9372 +6032 9372 +6112 9372 +6192 9372 +6352 9372 +6432 9372 +6512 9471 +6512 11495 +16368 2222 +16368 3850 +16368 5368 +16368 6798 +16368 7876 +16368 10461 +16368 11429 +3536 3113 +3536 7128 +3536 10032 +8464 8745 +8720 8448 +8848 8448 +9104 8448 +9728 8448 +10000 8448 +10256 8448 +10352 8448 +10464 8448 +10656 8448 +10736 8448 +10800 8448 +10912 8448 +11040 8448 +11200 8448 +11344 8448 +11504 8448 +11600 8448 +11712 8448 +11792 8448 +11984 8448 +12192 8448 +12272 8448 +12384 8448 +12528 8448 +12656 8448 +12720 1606 +12720 2574 +12720 4708 +12720 6072 +12720 7392 +12816 792 +12944 792 +13120 792 +13200 792 +13344 792 +13488 792 +13632 792 +13856 792 +14096 792 +14224 792 +14400 792 +14640 792 +14736 792 +14800 792 +14912 792 +15051 792 +2800 3113 +2800 6864 +2852 7700 +2960 7700 +3024 7700 +3200 7700 +3312 7700 +3424 7700 +3504 7700 +3632 7700 +3696 7700 +3808 7700 +3888 7700 +3952 7700 +4096 7700 +4176 7700 +4240 7799 +8048 8756 +8080 7700 +8112 1188 +8112 4818 +8112 7018 +1328 3223 +1328 6919 +1456 8778 +1456 10032 +9680 2288 +9808 2288 +9872 2288 +10000 2288 +10096 2288 +10224 2288 +10288 2288 +10384 2288 +10512 2288 +10576 2288 +10640 2288 +10704 2288 +10800 2288 +10928 2288 +11056 2288 +11120 2288 +11216 2288 +11344 2288 +11408 2288 +11488 2288 +11696 2288 +11760 2288 +11904 2288 +12048 2288 +12176 2288 +12336 2288 +12432 2288 +12496 913 +12496 1606 +12516 1012 +12688 1012 +12816 1012 +12944 1012 +13120 1012 +13200 1012 +13344 1012 +13488 1012 +13632 1012 +13867 1012 +5232 10472 +5488 7920 +5552 7920 +5632 7920 +5712 7920 +5808 7920 +5968 7920 +6096 7920 +6192 7920 +6416 7920 +6544 7920 +6672 7920 +6864 7920 +6928 7920 +7040 7920 +7184 7920 +7536 7920 +7600 7920 +7696 7920 +7760 7920 +7824 7920 +7888 7920 +8096 7920 +8176 7920 +8256 7920 +8448 7920 +8720 7920 +8848 7920 +9115 7920 +9136 1188 +9136 2948 +9136 5962 +9136 7018 +9444 6116 +9552 6116 +9680 6116 +9808 6116 +10016 6116 +10144 6116 +10224 6116 +10384 6116 +10512 6116 +10576 6116 +10656 6116 +10800 6116 +10864 6116 +10928 6116 +11056 6116 +11120 6116 +11216 6116 +11312 231 +11312 902 +11312 4488 +11312 5973 +9008 9878 +9104 1188 +9104 2948 +9104 5962 +9104 7029 +5648 10681 +5808 10472 +5968 10472 +6032 10472 +6112 10472 +6192 10472 +6352 10472 +6464 10472 +6672 10472 +6848 10472 +7024 10472 +7200 10472 +7376 10472 +7536 10472 +7600 10472 +7696 10472 +7824 10472 +7888 10472 +7984 10472 +8096 10472 +8176 10472 +8272 10472 +8368 10472 +8432 10472 +8720 10472 +8848 10472 +9104 10472 +9728 10472 +10032 10472 +10256 10472 +10320 10472 +10480 10472 +10656 10472 +10747 10472 +10768 231 +10768 902 +10768 1760 +10768 7392 +10768 10373 +10016 9064 +10064 231 +10064 1012 +10064 1760 +5584 3223 +5584 4048 +5584 6402 +5584 8382 +5584 10692 +5664 3080 +5872 3080 +6128 3080 +6192 3080 +6256 3080 +6416 3080 +6560 3080 +6672 3080 +6784 3080 +6896 3080 +7008 3080 +7088 3080 +7184 3080 +7312 3080 +7504 3080 +7664 3080 +7760 3080 +7824 3080 +7888 3080 +7952 3080 +8048 3080 +8208 3080 +8336 3080 +8432 3080 +8496 3080 +8624 3080 +8752 3080 +8848 3080 +8976 3080 +9051 3080 +9072 1188 +9072 2915 +8624 5962 +8624 8866 +8688 1188 +8592 8866 +8656 1188 +8656 5962 +7952 8756 +8048 6116 +8176 6116 +8432 6116 +8507 6116 +8528 1188 +8528 5973 +8464 1188 +8656 8866 +7056 10802 +7195 8844 +7216 638 +7216 1518 +7216 4048 +7216 7128 +7216 8657 +17456 1782 +17456 4092 +17456 6578 +17456 7722 +17456 8745 +17476 8844 +17552 8844 +17712 9603 +17712 10670 +9428 2948 +9680 2948 +9808 2948 +9872 2948 +10000 2948 +10096 2948 +10224 2948 +10288 2948 +10384 2948 +10512 2948 +10576 2948 +10640 2948 +10704 2948 +10800 2948 +10928 2948 +11056 2948 +11120 2948 +11216 2948 +11344 2948 +11488 2948 +11696 2948 +11760 2948 +11904 2948 +12048 2948 +12176 2948 +12336 2948 +12432 2948 +12523 2948 +12560 1606 +12560 2354 +17552 1782 +17552 4092 +17552 6578 +17552 7887 +17712 8184 +17856 8184 +17968 8184 +18192 8184 +18256 9427 +18256 10670 +9728 10032 +10032 10032 +10256 10032 +10320 10032 +10416 10032 +10480 10032 +10656 10032 +10736 10032 +10800 10032 +10928 10032 +11040 10032 +11216 10032 +11312 10032 +11440 10032 +11520 10032 +11600 10032 +11712 10032 +11792 10032 +11984 10032 +12080 10032 +12208 10032 +12384 10032 +12528 10032 +12656 10032 +12816 10032 +12944 10032 +13088 10032 +13232 10032 +13408 10032 +13536 10032 +13643 10032 +13680 2530 +13680 5148 +13680 7282 +13680 8866 +13680 9889 +17712 231 +17712 1782 +17712 4246 +17712 6325 +17840 6908 +17968 6908 +18128 7007 +18128 7766 +18128 10670 +9072 3487 +9072 5962 +9072 6908 +9072 9878 +9440 3388 +9520 3388 +9680 3388 +9840 3388 +10000 3388 +10096 3388 +10224 3388 +10288 3388 +10384 3388 +10512 3388 +10576 3388 +10640 3388 +10704 3388 +10800 3388 +10928 3388 +11056 3388 +11120 3388 +11216 3388 +11344 3388 +11488 3388 +11696 3388 +11760 3388 +11904 3388 +12048 3388 +12176 3388 +12336 3388 +12432 3388 +12544 3388 +12688 3388 +12763 3388 +12784 1606 +12784 2310 +9232 8107 +9232 9878 +9648 8008 +9744 8008 +9904 8008 +10016 8008 +10192 8008 +10256 8008 +10384 8008 +10496 8008 +10656 8008 +10816 8008 +10928 8008 +11040 8008 +11120 8008 +11216 8008 +11328 8008 +11504 8008 +11568 8008 +11632 8008 +11696 8008 +11760 8008 +11824 8008 +11968 8008 +12192 8008 +12272 8008 +12384 8008 +12528 8008 +12656 8008 +12800 8008 +12880 8008 +12944 8008 +13088 8008 +13264 8008 +13392 8008 +13520 8008 +13632 8008 +13712 2530 +13712 5148 +13712 7282 +8400 1188 +8400 6919 +8420 7040 +8507 7040 +8528 7139 +8528 8866 +9168 1639 +9168 2948 +9168 5962 +9168 7018 +9168 8074 +9168 9878 +9264 1452 +9424 1452 +9584 1452 +9680 1452 +9808 1452 +9872 1452 +10000 1452 +10096 1452 +10224 1452 +10288 1452 +10384 1452 +10512 1452 +10576 1452 +10640 1452 +10704 1452 +10800 1452 +10928 1452 +11056 1452 +11120 1452 +11216 1452 +11344 1452 +11488 1452 +11696 1452 +11760 1452 +11904 1452 +12048 1452 +12176 1452 +12304 902 +9360 2827 +9412 2728 +9680 2728 +9808 2728 +9872 2728 +10000 2728 +10096 2728 +10224 2728 +10288 2728 +10384 2728 +10512 2728 +10576 2728 +10640 2728 +10704 2728 +10800 2728 +10928 2728 +11056 2728 +11120 2728 +11216 2728 +11344 2728 +11488 2728 +11696 2728 +11760 2728 +11904 2728 +12048 2728 +12176 2728 +12336 2728 +12432 2728 +12512 2728 +12592 1606 +12592 2475 +14864 2530 +14864 4378 +14864 5478 +14864 6798 +14864 8646 +14864 9878 +14864 11429 +7760 8745 +7776 8448 +7792 1188 +7792 4818 +15312 7887 +15312 8646 +15312 9878 +15312 10626 +15312 11429 +15344 7788 +15376 2530 +15376 5478 +15376 6798 +15376 7689 +6864 429 +6864 1518 +6864 2574 +6864 4048 +7008 5368 +7088 5368 +7184 5368 +7328 5368 +7584 5368 +7664 5368 +7760 5368 +7824 5368 +7888 5368 +7952 5368 +8048 5368 +8176 5368 +8336 5368 +8432 5368 +8496 5368 +8752 5368 +8848 5368 +8992 5368 +9440 5368 +9552 5368 +9680 5368 +9824 5368 +10016 5368 +10160 5368 +10224 5368 +10288 5368 +10384 5368 +10512 5368 +10608 5368 +10704 7392 +10704 11495 +12400 11484 +12528 11000 +12656 11000 +12816 11000 +12944 11000 +13088 11000 +13232 11000 +13392 11000 +13536 11000 +13696 11000 +13968 11000 +14192 11000 +14272 11000 +14384 11000 +14448 11000 +12400 11176 +14576 2530 +14576 5368 +14576 6798 +14576 8646 +14576 9878 +14704 11000 +14784 11000 +14960 11000 +15120 11000 +15392 11000 +15520 11000 +15712 11000 +15792 11000 +15856 11000 +16048 11000 +16224 11000 +16432 11000 +16496 11484 +16496 11176 +7088 8536 +7088 10802 +7152 638 +7152 1518 +7152 4048 +7152 7139 +15952 2343 +15972 2992 +16128 2992 +16272 2992 +16400 2992 +16544 2992 +16656 2992 +16752 2992 +16912 2992 +17040 2992 +17104 2992 +17184 2992 +17392 2992 +17504 2992 +17744 4125 +17744 6204 +17744 7766 +17744 8734 +17744 9603 +17744 10670 +15664 2530 +15664 5368 +15664 6798 +15664 8426 +15664 9878 +15664 10626 +15664 11429 +17584 231 +17584 1782 +17584 4092 +17584 6578 +17584 7766 +17584 9603 +17584 10670 +16432 2222 +16432 3850 +16432 5478 +16432 6798 +16432 7887 +16528 10890 +8144 1188 +8144 4818 +8144 7018 +8144 8756 +9616 231 +9616 1012 +9616 1760 +9616 7139 +12112 902 +12112 4488 +12112 5962 +12112 7392 +8368 1188 +8368 6908 +8368 8767 +12784 11429 +12804 8844 +12880 8844 +12944 8844 +13088 8844 +13264 8844 +13392 8844 +13531 8844 +13552 2530 +13552 3938 +13552 4928 +13552 7282 +13552 8657 +18864 10846 +18864 11528 +18916 9086 +19024 9086 +11920 7392 +11920 11165 +11936 6776 +11952 902 +11952 4488 +11952 6072 +10320 231 +10320 1012 +10320 1760 +10320 7392 +10427 9504 +11824 902 +11824 4488 +11824 6083 +11840 6336 +11856 7392 +11856 11165 +12656 1606 +12656 2574 +12656 4708 +12656 6072 +12672 6776 +12688 7392 +12688 11429 +5008 11495 +5072 2178 +5072 4048 +5072 6402 +5072 7194 +13168 1606 +13168 2310 +13168 3124 +13168 3938 +13168 4928 +13168 5929 +13296 6028 +13456 6028 +13520 6028 +13632 6028 +13760 6028 +13920 6028 +14080 6028 +14192 6028 +14256 6028 +14400 6028 +14512 6028 +14704 6028 +14816 6028 +14928 6028 +15136 6028 +15328 6028 +15440 6028 +15600 6028 +15712 6028 +15792 6028 +15888 6028 +15984 6028 +16128 6028 +16288 6028 +16544 6028 +16656 6028 +16752 6028 +16816 6028 +16912 6028 +17040 6028 +17104 6028 +17168 6028 +17392 6028 +17504 6028 +17680 6457 +17680 7766 +17680 9603 +17680 10670 +3312 10692 +3344 3113 +3344 6864 +3344 10153 +14544 2530 +14544 5368 +14544 6798 +14544 8646 +14544 9878 +14544 11539 +6736 638 +6736 1518 +6736 2574 +6736 4048 +6736 8646 +6736 9438 +6832 11440 +7024 11440 +7200 11440 +7440 11440 +7536 11440 +7600 11440 +7696 11440 +7824 11440 +7888 11440 +8096 11440 +8176 11440 +8272 11440 +8368 11440 +8432 11440 +8720 11440 +8848 11440 +9104 11440 +9728 11440 +10032 11440 +10256 11440 +10320 11440 +10480 11440 +10544 11528 +11792 902 +11792 4488 +11792 6072 +11792 7392 +11808 8228 +11824 11165 +8720 1188 +8720 5962 +8848 7700 +9104 7700 +9232 7700 +6064 319 +6064 2024 +6064 4048 +6064 5335 +6100 5588 +6192 5588 +6256 5588 +6416 5588 +6560 5588 +6672 5588 +6779 5588 +6800 7128 +6800 8646 +6800 9438 +6864 6556 +6992 6556 +7088 6556 +7184 6556 +7328 6556 +7616 6556 +7744 6556 +7824 6556 +7888 6556 +8048 6556 +8176 6556 +8432 6556 +8512 6556 +8832 6556 +8944 1188 +8944 5962 +8944 6897 +8944 9878 +5968 319 +5968 2024 +5968 4048 +5968 5324 +6096 7700 +6192 7700 +6416 7700 +6544 7700 +6672 7700 +6864 7700 +6928 7700 +7040 7700 +7152 8536 +7152 10802 +7204 9504 +7536 9504 +7600 9504 +7696 9504 +7824 9504 +7904 9504 +8096 9504 +8176 9504 +8272 9504 +8368 9504 +8432 9504 +8720 9504 +8864 9504 +9104 9504 +9728 9504 +9968 231 +9968 1012 +9968 1760 +11952 11165 +11972 8228 +12192 8228 +12272 8228 +12384 8228 +12528 8228 +12656 8228 +12800 8228 +12880 8228 +12944 8228 +13088 8228 +13264 8228 +13392 8228 +13520 8228 +13632 8228 +13744 8228 +13968 8228 +14192 8228 +14272 8228 +14384 8228 +14448 8228 +14512 8228 +14704 8228 +14784 8228 +15120 8228 +15392 8228 +15472 8228 +15536 484 +15536 671 +15536 2530 +15536 5368 +15536 6798 +15600 572 +15728 572 +15792 572 +15888 572 +15984 572 +16128 572 +16272 572 +16400 572 +16560 572 +16656 572 +16752 572 +16912 572 +17040 572 +17184 572 +17392 572 +17504 572 +17824 572 +17968 572 +18032 572 +18128 352 +7568 8756 +7600 6116 +7632 1188 +7632 4818 +11728 902 +11728 4488 +11728 6072 +11728 7392 +11744 8228 +11760 11165 +19024 11528 +12272 902 +12272 4488 +12272 5962 +12384 6776 +12496 7392 +12496 11429 +10656 8228 +10736 231 +10736 902 +10736 1760 +10736 7392 +7504 8756 +7568 638 +7568 1518 +7568 3949 +7568 4147 +7568 4939 +7664 4048 +7760 4048 +7824 4048 +7888 4048 +7952 4048 +8048 4048 +8208 4048 +8336 4048 +8432 4048 +8496 4048 +8688 4048 +8763 4048 +8784 1188 +8784 3949 +8784 8866 +7888 9064 +7920 1188 +7920 4818 +7920 8767 +7940 4268 +8048 4268 +8208 4268 +8336 4268 +8432 4268 +8496 4268 +8688 4268 +8752 4268 +8848 4268 +8912 4268 +8992 4268 +9440 4268 +9552 4268 +9680 4268 +9824 4268 +9936 4268 +10000 4268 +10224 4268 +10288 4268 +10384 4268 +10523 4268 +10544 231 +10544 1012 +10544 1760 +10544 7392 +10656 11132 +10768 11132 +10928 11132 +10992 11550 +10992 11308 +8208 7018 +8208 8756 +8336 4708 +8432 4708 +8496 4708 +8752 4708 +8848 4708 +8992 4708 +9440 4708 +9552 4708 +9680 4708 +9824 4708 +9936 4708 +10000 4708 +10224 4708 +10288 4708 +10384 4708 +10512 4708 +10587 4708 +10608 231 +10608 902 +10608 1760 +11984 902 +11984 4488 +11984 6072 +12000 6776 +12016 7392 +12016 11165 +8560 5962 +8560 7018 +8560 8866 +8624 2288 +8752 2288 +8848 2288 +8976 2288 +9040 2288 +9264 2288 +9360 671 +9360 1760 +11376 11385 +11440 231 +11440 902 +11440 4488 +11440 6072 +11440 7392 +10256 8228 +10352 231 +10352 1012 +10352 1760 +10352 7392 +11472 7392 +11472 11275 +11492 6336 +11568 231 +11568 902 +11568 4488 +11568 6083 +11184 11385 +11204 9064 +11344 9064 +11515 9064 +11536 231 +11536 902 +11536 4488 +11536 5962 +11536 7392 +656 3575 +656 9922 +15824 5368 +15824 6798 +15824 8426 +15824 9878 +15824 10626 +15824 11429 +15888 4488 +15984 4488 +16128 4488 +16283 4488 +16304 2222 +16304 3861 +6608 429 +6608 1518 +6608 2574 +6608 4048 +6660 5060 +6784 5060 +6896 7128 +6896 8646 +6896 10802 +12048 7392 +12048 11165 +12187 6776 +12208 902 +12208 4488 +12208 5962 +155 11198 +8912 5962 +8912 7018 +8912 9878 +8992 4488 +9440 4488 +9552 4488 +9680 4488 +9824 4488 +9936 4488 +10000 4488 +10224 4488 +10288 4488 +10384 4488 +10512 4488 +10576 4488 +10640 4488 +10704 4488 +10800 4488 +10864 231 +10864 902 +10864 1760 +10864 4389 +10864 4587 +10928 5896 +11067 5896 +11088 7392 +11088 11385 +9264 6908 +9264 9878 +9440 3168 +9520 231 +9520 1012 +9520 1760 +12240 902 +12240 4488 +12240 5962 +12240 7392 +12240 11165 +7312 8756 +7312 10802 +7536 638 +7536 1518 +7536 4048 +7536 4818 +3280 3113 +3280 6864 +3300 9372 +3504 9372 +3568 9372 +3632 10142 +11376 231 +11376 902 +11376 4488 +11376 6072 +11376 7392 +11504 8228 +11568 11275 +11280 11385 +11316 10472 +11440 10472 +11520 10472 +11600 10472 +11712 10472 +11792 10472 +11984 10472 +12080 10472 +12208 10472 +12384 10472 +12528 10472 +12656 10472 +12816 10472 +12944 10472 +13088 10472 +13232 10472 +13392 10472 +13536 10472 +13696 10472 +13968 10472 +14160 2530 +14160 5258 +14160 7172 +14160 8866 +14160 9878 +3152 3113 +3152 6864 +3188 7920 +3312 7920 +3408 10153 +3408 10571 +3504 10472 +3584 10472 +3712 10472 +3888 10472 +4048 10472 +4128 10472 +4272 10472 +4400 10472 +4528 10472 +4624 10472 +4688 10472 +4784 10472 +4955 10472 +4976 10373 +4992 9812 +4976 11495 +5008 2178 +5008 4048 +5008 6402 +528 3575 +528 9812 +16016 2222 +16016 3740 +16016 5368 +16016 6798 +16016 7766 +16016 8624 +16016 9834 +16068 9922 +16208 9922 +16432 9922 +16496 9922 +16592 9922 +16688 9922 +16784 9922 +16912 9922 +17040 9922 +17136 9922 +17280 9922 +17360 10670 +17360 11528 +5872 8382 +5872 10802 +5888 5060 +5904 209 +5904 2024 +5904 4048 +976 11055 +1104 10912 +1232 10912 +1584 10912 +1712 10912 +1776 10912 +1904 10912 +2064 10912 +2240 10912 +2464 10912 +2736 10912 +3019 10912 +3056 3113 +3056 6864 +3056 10153 +3168 10912 +3344 10912 +3504 10912 +3584 10912 +3712 10912 +3888 10912 +4048 10912 +4128 10912 +4272 10912 +4400 10912 +4464 10912 +4528 10912 +4624 10912 +4688 11495 +13456 8536 +13456 9174 +13456 11429 +13520 7788 +13632 7788 +13760 7788 +13968 7788 +14192 7788 +14272 7788 +14384 7788 +14448 2530 +14448 5368 +14448 6798 +14512 7788 +14704 7788 +14816 7788 +14928 7887 +14928 8646 +14928 9878 +14928 11429 +16048 2222 +16048 3740 +16048 5368 +16048 6798 +16048 7766 +16128 8404 +16304 8404 +16432 8404 +16592 8404 +16688 8404 +16752 8404 +16816 8404 +16912 8404 +17008 10560 +17008 11528 +560 9801 +752 8404 +912 8404 +976 8404 +1104 8404 +1232 8404 +1328 8404 +1536 8404 +1616 8404 +1696 8404 +1776 8404 +1872 8404 +1936 8404 +2112 8404 +2192 8404 +2288 8404 +2464 8404 +2635 8404 +2704 3113 +2704 6864 +2804 8140 +2960 8140 +3024 8140 +3168 8140 +3312 8140 +3504 8140 +3632 8140 +3696 8140 +3824 8140 +3952 8140 +4096 8140 +4272 8140 +4336 8140 +2704 8250 +4432 11495 +14032 2530 +14032 5258 +14032 7293 +14068 7568 +14192 7568 +14272 7568 +14384 7568 +14512 7568 +14704 7568 +14816 7568 +14928 7568 +15131 7568 +15248 7777 +15248 8646 +15248 9878 +15248 10626 +15248 11429 +13584 2530 +13584 3949 +13620 4048 +13872 4048 +14096 4048 +14224 4048 +14400 4048 +14512 4048 +14736 4048 +14800 4048 +14896 4257 +14896 5478 +14896 6798 +14896 8646 +14896 9878 +14896 11429 +14608 2530 +14608 5368 +14608 6798 +14608 8646 +14608 9878 +14608 11539 +13392 1606 +13392 2794 +13392 3938 +13392 4928 +13456 6248 +13520 6248 +13632 6248 +13760 6248 +13920 6248 +14080 6248 +14192 6248 +14256 6248 +14400 6248 +14512 6248 +14704 6248 +14816 6248 +14928 6248 +15136 6248 +15328 6248 +15440 6248 +15600 6248 +15712 6248 +15792 6248 +15888 6248 +15984 6248 +16128 6248 +16288 6248 +16544 6248 +16656 6677 +16656 7876 +16656 10890 +16672 6248 +16688 1012 +16688 2222 +16688 3850 +16688 5478 +12752 1606 +12752 2431 +12816 2640 +12944 2640 +13120 2640 +13339 2640 +13360 3003 +13360 3938 +13360 4928 +13360 6402 +13360 7392 +13360 8536 +13360 9174 +13360 11429 +16208 2222 +16208 3740 +16208 5368 +16208 6798 +16208 7766 +16283 8624 +16304 10461 +16304 11429 +1392 8778 +1392 10032 +1456 6336 +1552 6336 +1648 6336 +1760 6336 +1872 6336 +2000 6336 +2112 6336 +2192 6336 +2288 6336 +2480 6336 +2608 6336 +2736 6336 +2880 6336 +3024 6336 +3200 6336 +3312 6336 +3408 3058 +3408 6160 +3808 6336 +3888 6336 +3952 6336 +4096 6336 +4176 6336 +4256 6336 +4432 6336 +4496 6336 +4560 7810 +4560 8866 +4560 11495 +3696 3113 +3696 7029 +3808 7260 +3888 7260 +3952 7260 +4096 7260 +4176 7260 +4256 7260 +4336 7260 +4432 7260 +4496 7260 +4640 7260 +4768 7260 +4848 7260 +4912 7260 +5040 11495 +4912 11495 +5104 2178 +5104 4048 +5104 6402 +5104 7315 +14352 2530 +14352 5368 +14352 6908 +14352 8866 +14352 9878 +14352 11539 +5328 6391 +5328 7194 +5328 10582 +5392 2178 +5392 4048 +5744 10802 +5760 8624 +5776 2024 +5776 4048 +5776 8393 +1488 3113 +1488 6908 +1488 8778 +1488 10032 +4016 2959 +4016 6908 +4128 9152 +4272 9152 +7984 1188 +7984 4818 +7984 8756 +6160 429 +6160 2024 +6160 4048 +6160 8382 +6160 10802 +6160 11495 +5264 2178 +5264 4048 +5264 6402 +5264 7194 +5552 9812 +5632 9812 +5808 9812 +5968 9812 +6032 9812 +6112 9812 +6192 9812 +6352 9812 +6448 9812 +6672 9812 +6848 9812 +6928 9812 +7024 9812 +7216 9812 +7536 9812 +7600 9812 +7696 9812 +7824 9812 +7904 9812 +8096 9812 +8176 9812 +8272 9812 +8368 9812 +8432 9812 +8720 9812 +8859 9812 +8880 9911 +9200 7018 +9200 8074 +9200 9878 +9296 671 +9296 1760 +9296 2838 +6512 429 +6512 2024 +6512 4048 +6512 8657 +6528 8844 +6544 9438 +6544 11495 +9904 231 +9904 1012 +9904 1760 +6928 638 +6928 1518 +6928 2574 +6928 4048 +6928 7139 +6944 7260 +6960 8646 +6960 10802 +10896 10362 +10896 11495 +10916 9504 +11040 9504 +11216 9504 +11280 231 +11280 902 +11280 4488 +11280 7392 +7408 10912 +7440 638 +7440 1518 +7440 4048 +7440 4928 +7440 8756 +12592 4708 +12592 6072 +12592 7392 +12592 11429 +12608 3608 +12624 1606 +12624 2574 +12688 3608 +12784 3608 +12928 3608 +13120 3608 +13328 3608 +13456 3608 +13520 3608 +13632 3608 +13872 3608 +14096 3608 +14224 3608 +14400 3608 +14512 3608 +14736 3608 +14800 3608 +14912 3608 +15120 3608 +15328 3608 +15408 3608 +15472 3608 +15600 3608 +15712 3608 +15792 3608 +15899 3608 +15920 3927 +15920 5368 +15920 6798 +15920 7766 +15920 8624 +15920 9878 +15920 10626 +15920 11429 +12336 7392 +12336 11165 +12352 6116 +12368 902 +12368 1606 +12368 4488 +12368 5973 +17616 6578 +17616 7766 +17616 9603 +17616 10670 +17835 5500 +17872 231 +17872 1628 +17872 4213 +11632 902 +11632 4488 +11632 6083 +11648 6336 +11664 7392 +11664 11275 +14480 2530 +14480 5368 +14480 6798 +14480 8866 +14480 9878 +14480 11539 +17648 231 +17648 1782 +17648 4246 +17648 6578 +17648 7766 +17648 9603 +17648 10670 +624 3575 +624 9922 +12400 902 +12400 1606 +12400 4488 +12400 5973 +12416 6116 +12432 7392 +12432 11429 +12080 902 +12080 4488 +12080 5962 +12080 7392 +12096 9504 +12112 11165 +17776 231 +17776 1628 +17776 4092 +17776 6204 +17776 7766 +17776 8734 +17776 9603 +17776 10670 +12464 902 +12464 1606 +12516 4268 +12688 4268 +12800 4268 +12912 4268 +13120 4268 +13328 4268 +13456 4268 +13520 4268 +13616 4268 +13872 4268 +14091 4268 +14128 5258 +14128 7172 +14128 8866 +14128 9878 +14128 11539 +17744 231 +17744 1749 +17824 2684 +17979 2684 +18000 4675 +18000 7766 +18000 10670 +16624 1012 +16624 2222 +16624 3850 +16624 5478 +16624 6798 +16624 7876 +16624 10890 +13232 1606 +13232 2310 +13232 3124 +13232 3938 +13232 4928 +13232 7282 +13232 8536 +13232 9185 +13248 9284 +13264 11429 +10192 231 +10192 1012 +10192 1760 +18416 10670 +18500 9438 +18656 9438 +18784 9438 +18928 9438 +19024 9438 +912 3410 +912 6864 +928 7040 +944 9922 +14320 2530 +14320 5368 +14320 6908 +14320 8866 +14320 9878 +14320 11539 +7696 1188 +7696 4818 +7696 6908 +7760 7700 +7824 7700 +7888 7700 +8016 8756 +18832 10725 +18832 11528 +18928 10494 +19024 10494 +14768 2530 +14768 5478 +14768 6798 +14800 8008 +14832 8646 +14832 9878 +14832 11429 +6640 220 +6676 308 +6795 308 +6832 220 +6832 517 +6832 1518 +6832 2574 +6832 4048 +6832 5434 +6832 7128 +6832 8646 +6852 9284 +6928 9284 +7024 9284 +7216 9284 +7536 9284 +7600 9284 +7696 9284 +7824 9284 +7904 9284 +8096 9284 +8176 9284 +8272 9284 +8368 9284 +8432 9284 +8720 9284 +8864 9284 +9104 9284 +9728 9284 +10032 9284 +10256 9284 +10448 9284 +10656 9284 +10736 9284 +10800 9284 +10912 9284 +11040 9284 +11216 9284 +11344 9284 +11520 9284 +11600 9284 +11712 9284 +11792 9284 +11984 9284 +12128 9284 +12208 9284 +12384 9284 +12528 9284 +12656 9284 +12843 9284 +12880 11429 +7344 8756 +7344 10802 +7600 7260 +7760 7260 +7824 7260 +7888 7260 +8043 7260 +8080 1188 +8080 4818 +8080 7029 +10128 231 +10128 1012 +10128 1760 +10148 5896 +10224 5896 +10384 5896 +10512 5896 +10587 5896 +10608 7392 +10608 11495 +16496 2222 +16496 3850 +16496 5478 +16496 6798 +16496 7766 +16592 9284 +16688 9284 +16784 9284 +16912 9284 +17040 9284 +17136 9284 +17280 9284 +17392 9592 +17392 10670 +17392 11528 +4592 2684 +4592 5434 +4592 7810 +4592 8866 +4592 11495 +10576 7392 +10576 11495 +10656 6336 +10800 6336 +10864 6336 +10928 6336 +11024 231 +11024 902 +11024 1760 +11024 4488 +2384 3113 +2384 6644 +2384 10032 +2928 10032 +2944 6952 +2960 3113 +2960 6875 +5168 2178 +5168 4048 +5168 6402 +5168 7458 +5168 10582 +2544 3113 +2544 6754 +2544 10032 +9648 231 +9648 1012 +9648 1760 +9648 7128 +9664 7788 +1808 8052 +1808 10032 +1872 7172 +1984 7172 +2112 7172 +2192 7172 +2288 7172 +2464 7172 +2624 7172 +2736 7172 +2864 7172 +2960 7172 +3024 7172 +3200 7172 +3312 7172 +3408 7172 +3472 3113 +3472 6985 +9488 231 +9488 1012 +9488 1760 +9488 7128 +2000 8041 +2000 8778 +2000 10032 +2112 7920 +2192 7920 +2288 7920 +2464 7920 +2624 7920 +2816 7920 +2960 7920 +3024 7920 +3120 3113 +3120 6864 +8752 8866 +8816 1188 +8816 3938 +8816 5973 +1008 3575 +1008 9658 +1296 7821 +1296 9658 +1316 7700 +1536 7700 +1648 7700 +1760 7700 +1872 7700 +1984 7700 +2112 7700 +2192 7700 +2288 7700 +2464 7700 +2624 7700 +2747 7700 +2768 3113 +2768 6864 +1360 3223 +1360 8778 +1360 10032 +2032 8778 +2032 10032 +2112 6952 +2192 6952 +2288 6952 +2416 3113 +2416 6765 +560 3410 +560 6864 +576 7040 +592 9922 +1712 3113 +1712 7018 +1712 8063 +1728 8184 +1744 10032 +5104 10582 +5104 11495 +5120 7920 +5136 2178 +5136 4048 +5136 6402 +5136 7469 +2064 3113 +2064 6644 +2064 8789 +2080 8932 +2096 10032 +3072 11220 +3088 3113 +3088 6864 +3088 10032 +3248 3113 +3248 6864 +3248 10032 +10960 231 +10960 902 +10960 1760 +10960 4488 +10960 7392 +10960 10362 +10960 11495 +2976 10692 +2992 3113 +2992 6864 +2992 10043 +10832 10362 +10832 11495 +10896 231 +10896 902 +10896 1760 +10896 4488 +10896 7392 +10832 231 +10832 902 +10832 1760 +10848 6776 +10864 7392 +10864 10362 +10864 11495 +17968 10670 +18368 9790 +18512 9790 +18656 9790 +18784 9790 +18928 9790 +19024 9790 +3376 3113 +3376 6864 +3504 9592 +3568 9592 +3664 10142 +2224 3113 +2224 6644 +2276 8712 +2464 8712 +2736 8712 +2960 8712 +3024 8712 +3168 8712 +3312 8712 +3504 8712 +3632 8712 +3696 8712 +3824 8712 +3952 8712 +8848 9064 +8880 1188 +8880 3938 +8880 5962 +8880 7018 +16080 2222 +16080 3740 +16080 5368 +16080 6798 +16080 7766 +16080 8745 +16112 8844 +16144 10626 +16144 11429 +13296 1606 +13296 2310 +13296 3124 +13296 3938 +13296 4928 +13456 5808 +13520 5808 +13632 5808 +13760 5808 +13920 5808 +14080 5808 +14203 5808 +14224 7172 +14224 8866 +14224 9878 +14224 11539 +14160 11539 +14180 10780 +14272 10780 +14384 10780 +14448 10780 +14704 10780 +14784 10780 +14960 2530 +14960 4158 +14960 5478 +14960 6798 +14960 7898 +14960 8646 +14960 9878 +14960 10637 +17104 10560 +17104 11528 +17120 8404 +17136 1782 +17136 4356 +17136 6688 +17136 7722 +15440 8646 +15440 9878 +15440 10626 +15440 11429 +15460 7788 +15600 7788 +15712 7788 +15792 7788 +15856 2530 +15856 4048 +15856 5368 +15856 6798 +15856 7689 +15344 8646 +15344 9878 +15344 10626 +15344 11429 +15380 8008 +15472 8008 +15568 2530 +15568 5368 +15568 6798 +4208 2365 +4208 5434 +4208 6908 +18320 3619 +18320 7876 +18320 9427 +18320 10670 +12144 902 +12144 4488 +12144 5962 +12144 7392 +12160 9064 +12176 11165 +14992 4323 +14992 5478 +14992 6798 +14992 7898 +14992 8646 +14992 9878 +14992 10626 +14992 11429 +15124 4180 +15328 4180 +15408 4180 +15472 4180 +15600 4180 +15712 4180 +15803 4180 +15824 2530 +15824 4015 +16336 10461 +16336 11429 +16432 8624 +16592 8624 +16688 8624 +16752 8624 +16816 8624 +16912 8624 +17040 8624 +17136 8624 +17243 8624 +17264 1782 +17264 4092 +17264 6688 +17264 7722 +17264 8481 +9712 231 +9712 1012 +9712 1760 +9712 7128 +17072 1012 +17072 2222 +17072 4356 +17072 6688 +17072 7722 +17072 10560 +17072 11528 +13552 11418 +13696 11220 +13968 11220 +14192 11220 +14272 11220 +14384 11220 +14448 11220 +14576 11220 +14672 2530 +14672 5368 +14672 6798 +14672 8646 +14672 9878 +14688 11220 +14704 11418 +16464 2222 +16464 3850 +16464 5478 +16464 6798 +16464 7766 +16464 10461 +16464 11429 +144 11528 +320 11440 +496 11440 +752 11440 +912 11440 +1104 11440 +1232 11440 +1584 11440 +1712 11440 +1776 11440 +1904 11440 +2064 11440 +2251 11440 +2352 3113 +2352 6644 +2352 10032 +2352 11297 +2464 11440 +2736 11440 +3008 11440 +3152 11440 +3344 11440 +3504 11440 +3584 11440 +3712 11440 +3888 11440 +4048 11440 +4128 11440 +4272 11440 +4368 11528 +13168 7282 +13168 8536 +13168 9174 +13168 11429 +13264 1606 +13264 2310 +13264 3124 +13264 3938 +13264 4928 +13264 6413 +7792 8899 +7824 8756 +7856 1188 +7856 4818 +7856 8613 +16720 1012 +16720 2222 +16720 3850 +16720 5478 +16720 6688 +16720 7876 +16720 10560 +16720 11528 +19056 11528 +12976 3938 +12976 4708 +12976 6072 +12976 7282 +12976 8536 +12976 9174 +12976 11429 +13040 473 +13040 1606 +13040 2310 +15920 2497 +15936 3300 +15952 3773 +15952 5368 +15952 6798 +15952 7766 +15952 8624 +15952 9878 +15952 10626 +15952 11429 +5296 6402 +5296 7194 +5296 10582 +5312 5588 +5328 2178 +5328 4048 +11856 902 +11856 4488 +11856 5929 +11872 6028 +11888 6171 +11888 7392 +11888 11165 +15504 583 +15504 2530 +15504 5368 +15504 6798 +15504 8646 +15552 9284 +15600 9878 +15600 10626 +15600 11429 +5840 209 +5840 2024 +5840 4048 +5840 8382 +5840 10802 +4368 2365 +4368 5434 +4368 7810 +4388 11132 +4464 11132 +4528 11132 +4624 11132 +4784 11132 +4944 11132 +5136 11132 +5200 11132 +5360 11132 +5552 11132 +5616 11132 +5808 11132 +5968 11132 +6032 11132 +6112 11132 +6208 11132 +6352 11132 +6464 11132 +6672 11132 +6832 11132 +7024 11132 +7200 11132 +7440 11132 +7536 11132 +7600 11132 +7696 11132 +7824 11132 +7888 11132 +6288 429 +6288 2024 +6288 4048 +6416 8228 +6544 8228 +6672 8228 +6864 8228 +6928 8228 +7040 8228 +7184 8228 +7536 8228 +7600 8228 +7696 8228 +7760 8228 +7824 8228 +7888 8228 +8096 8228 +8176 8228 +8256 8228 +8448 8228 +8720 8228 +8848 8228 +9115 8228 +9136 9878 +4624 2684 +4624 5445 +4644 5808 +4752 5808 +4848 5808 +4912 5808 +5040 5808 +5328 5808 +5664 5808 +6096 5808 +6192 5808 +6256 5808 +6416 5808 +6560 5808 +6672 5808 +6768 5808 +6864 5808 +6992 5808 +7088 5808 +7184 5808 +7328 5808 +7584 5808 +7664 5808 +7760 5808 +7824 5808 +7888 5808 +7952 5808 +8048 5808 +8176 5808 +8336 6908 +8336 8646 +9008 1188 +9440 3828 +9552 3828 +9680 3828 +9824 3828 +9936 3828 +10000 3828 +10224 3828 +10288 3828 +10384 3828 +10512 3828 +10576 3828 +10640 3828 +10704 3828 +10800 3828 +10928 3828 +11056 3828 +11120 3828 +11216 3828 +11344 3828 +11488 3828 +11680 3828 +11760 3828 +11904 3828 +12048 3828 +12176 3828 +12336 3828 +12432 3828 +12528 3828 +12624 3828 +12688 3828 +12752 4708 +12752 6072 +12752 7392 +12752 8646 +12752 11429 +14512 9163 +14512 9878 +14512 11539 +14704 9064 +14784 9064 +15120 9064 +15392 9064 +15472 9064 +15568 9064 +15712 9064 +15792 9064 +15856 9064 +15984 9064 +16080 9064 +16208 9064 +16432 9064 +16592 9064 +16688 9064 +16784 9064 +16912 9064 +17040 9064 +17136 9064 +17280 9064 +17392 9064 +17472 9064 +17552 9064 +17952 9064 +18224 9064 +18427 9064 +18512 4037 +18512 8855 +6480 429 +6480 2024 +6480 4048 +6480 8646 +6672 10252 +6848 10252 +7024 10252 +7200 10252 +7376 10252 +7536 10252 +7600 10252 +7696 10252 +7824 10252 +7888 10252 +7984 10252 +8096 10252 +8176 10252 +8272 10252 +8368 10252 +8432 10252 +8720 10252 +8848 10252 +9104 10252 +9728 10252 +10032 10252 +10256 10252 +10320 10252 +7472 638 +7472 1518 +7472 4048 +7472 4928 +7472 8756 +7536 10912 +7600 10912 +7696 10912 +7824 10912 +7888 10912 +7984 10912 +8096 10912 +8176 10912 +8272 10912 +8368 10912 +8432 10912 +8720 10912 +8848 10912 +9104 10912 +9728 10912 +10032 10912 +10256 10912 +10320 10912 +10480 10912 +10656 10912 +10768 10912 +10928 10912 +11024 10912 +11216 10912 +11328 10912 +11440 11440 +11440 11088 +4848 7755 +4848 11495 +4864 7612 +4880 2618 +4880 6402 +8912 1188 +8912 3949 +8992 4048 +9440 4048 +9552 4048 +9680 4048 +9824 4048 +9936 4048 +10000 4048 +10224 4048 +10288 4048 +10384 4048 +10512 4048 +10576 4048 +10640 4048 +10704 4048 +10800 4048 +10928 4048 +11056 4048 +11120 4048 +11216 4048 +11344 4048 +11488 4048 +11680 4048 +11760 4048 +11904 4048 +12048 4048 +12176 4048 +12336 4048 +12432 4048 +12528 4048 +12624 4708 +12624 6072 +12624 7392 +12624 11429 +12688 4048 +12800 4048 +12880 1606 +12880 2310 +12880 3949 +4656 2629 +4720 4488 +4784 4488 +4848 4488 +4912 4488 +5040 4488 +5296 4488 +5664 4488 +5872 4488 +6128 4488 +6192 4488 +6256 4488 +6416 4488 +6560 4488 +6672 4488 +6784 4488 +6896 4488 +7008 4488 +7088 4488 +7184 4488 +7312 4488 +7504 4488 +7664 4488 +7760 4488 +7824 4488 +7888 4488 +7952 4488 +8048 4488 +8208 4488 +8336 4488 +8432 4488 +8496 4488 +8688 5962 +8688 8866 +12016 902 +12016 4488 +12016 6083 +12036 6336 +12176 6336 +12384 6336 +12523 6336 +12560 7392 +12560 11429 +17456 11528 +17476 11440 +17552 11440 +17920 11440 +18368 11440 +18523 11440 +18608 4037 +18608 8525 +18608 10670 +18608 11528 +14416 8866 +14416 9878 +14416 11539 +14512 7348 +14704 7348 +14816 7348 +14928 7348 +15136 7348 +15328 7348 +15440 7348 +15600 7348 +15712 7348 +15792 7348 +15888 7348 +15984 7348 +16128 7348 +16288 7348 +16544 7348 +16688 7348 +16752 7348 +16816 7348 +16912 7348 +17040 7348 +17104 7348 +17168 7348 +17408 7348 +17504 7348 +17712 7348 +17856 7348 +17968 7348 +18192 7348 +18256 7348 +18384 7348 +18448 3564 +18448 7172 +8592 1188 +8592 5962 +8592 6875 +8816 7095 +8836 8756 +9104 8756 +9728 8756 +10000 8756 +10256 8756 +10352 8756 +10464 8756 +10656 8756 +10736 8756 +10800 8756 +10912 8756 +11040 8756 +11200 8756 +11344 8756 +11504 8756 +11600 8756 +11712 8756 +11792 8756 +11984 8756 +12192 8756 +12272 8756 +12384 8756 +12528 8756 +12656 8756 +12720 11429 +4912 2299 +5040 3608 +5296 3608 +5664 3608 +5872 3608 +6128 3608 +6192 3608 +6256 3608 +6416 3608 +6560 3608 +6672 3608 +6784 3608 +6896 3608 +7008 3608 +7088 3608 +7184 3608 +7312 3608 +7504 3608 +7664 3608 +7760 3608 +7824 3608 +7888 3608 +7952 3608 +8048 3608 +8208 3608 +8336 3608 +8432 3608 +8496 3608 +8624 3608 +8752 3608 +8848 3608 +8976 3608 +9040 5962 +9040 6908 +9040 9878 +9328 671 +9328 1760 +9328 2838 +9728 9724 +10032 9724 +10256 9724 +10320 9724 +10416 9724 +10480 9724 +10656 9724 +10736 9724 +10800 9724 +10928 9724 +11040 9724 +11216 9724 +11312 9724 +11440 9724 +11520 9724 +11600 9724 +11712 9724 +11792 9724 +11984 9724 +12080 9724 +12208 9724 +12384 9724 +12528 9724 +12656 9724 +12827 9724 +12848 11429 +12944 9724 +13088 9724 +13232 9724 +13403 9724 +13424 1606 +13424 2794 +13424 3938 +13424 4928 +13424 7392 +13424 8536 +13424 9174 +16880 1012 +16880 2222 +16880 3850 +16880 5368 +16880 6688 +16880 7876 +16880 10560 +16880 11528 +18576 4037 +18576 8646 +18656 8866 +18859 8866 +18992 10846 +18992 11528 +8176 1188 +8176 4829 +8336 4928 +8432 4928 +8496 4928 +8752 4928 +8848 4928 +8992 4928 +9440 4928 +9552 4928 +9680 4928 +9824 4928 +9936 4928 +10000 4928 +10224 4928 +10288 4928 +10384 4928 +10512 4928 +10608 4928 +10704 4928 +10800 4928 +10928 4928 +11056 4928 +11120 4928 +11216 4928 +11344 4928 +11488 4928 +11680 4928 +11760 4928 +11904 4928 +12048 4928 +12176 4928 +12336 4928 +12443 4928 +12464 5962 +12464 7392 +12464 11429 +6000 10802 +6000 11495 +6016 8624 +6032 319 +6032 2024 +6032 4048 +6032 5324 +7088 638 +7088 1518 +7088 2409 +7184 2508 +7312 2508 +7504 2508 +7664 2508 +7760 2508 +7824 2508 +7888 2508 +7952 2508 +8048 2508 +8208 2508 +8336 2508 +8432 2508 +8496 2508 +8624 2508 +8752 2508 +8848 2508 +8976 2508 +9040 2508 +9264 2508 +9408 2508 +9680 2508 +9808 2508 +9872 2508 +10000 2508 +10096 2508 +10224 2508 +10288 2508 +10384 2508 +10512 2508 +10576 2508 +10640 2508 +10704 2508 +10800 2508 +10928 2508 +11056 2508 +11120 2508 +11216 2508 +11344 2508 +11408 4488 +11408 6072 +11408 7392 +11408 11385 +15760 2530 +15760 5368 +15760 6798 +15760 8426 +15760 9878 +15760 10626 +15760 11429 +112 9218 +112 11528 +260 7480 +480 7480 +560 7480 +736 7480 +848 7480 +912 7480 +976 7480 +1072 7480 +1152 7480 +1312 7480 +1536 7480 +1648 7480 +1760 7480 +1872 7480 +1984 7480 +2112 7480 +2192 7480 +2288 7480 +2464 7480 +2624 7480 +2736 7480 +2864 7480 +2960 7480 +3024 7480 +3200 7480 +3312 7480 +3419 7480 +3440 3113 +3440 6864 +5616 1914 +5616 4048 +5652 6336 +6096 6336 +6192 6336 +6256 6336 +6416 6336 +6544 6336 +6672 6336 +6768 6336 +6864 6336 +6992 6336 +7088 6336 +7184 6336 +7328 6336 +7616 6336 +7744 6336 +7824 6336 +7888 6336 +8048 6336 +8176 6336 +8432 6336 +8512 6336 +8832 6336 +8992 6336 +9296 6336 +9456 6336 +9552 6336 +9680 6336 +9808 6336 +10016 6336 +10139 6336 +16944 1012 +16944 2222 +16944 3850 +16944 5368 +16944 6688 +16944 7876 +16944 10560 +16944 11528 +9744 231 +9744 1012 +9744 1760 +9764 6996 +10016 6996 +10128 6996 +10224 6996 +10384 6996 +10496 6996 +10656 6996 +10816 6996 +10928 6996 +11040 6996 +11120 6996 +11216 6996 +11328 6996 +11504 6996 +11568 6996 +11632 6996 +11696 6996 +11760 6996 +11824 6996 +11968 6996 +12192 6996 +12272 6996 +12384 6996 +12528 6996 +12656 6996 +12800 6996 +12891 6996 +12912 7271 +12912 8536 +12912 9174 +12912 11429 +12933 6776 +13088 6776 +13280 6776 +13392 6776 +13456 6776 +13520 6776 +13632 6776 +13760 6776 +13920 6776 +14080 6776 +14192 6776 +14267 6776 +12912 6908 +14288 2530 +14288 5368 +14288 6633 +13904 11528 +13920 11440 +13936 11528 +13952 11440 +13968 11528 +6576 429 +6576 1639 +6672 2068 +6784 2068 +6896 2068 +7008 2068 +7184 2068 +7312 2068 +7504 2068 +7664 2068 +7760 2068 +7824 2068 +7888 2068 +7952 2068 +8048 2068 +8208 2068 +8336 2068 +8432 2068 +8496 2068 +8560 2068 +8624 2068 +8752 2068 +8848 2068 +8976 2068 +9040 2068 +9264 2068 +9424 2068 +9584 2068 +9680 2068 +9808 2068 +9872 2068 +10000 2068 +10096 2068 +10224 2068 +10288 2068 +10384 2068 +10512 2068 +10576 2068 +10640 2068 +10704 2068 +10800 2068 +10928 2068 +11056 2068 +11120 2068 +11227 2068 +11248 4488 +11248 7392 +11248 11385 +5552 2178 +5552 4048 +5552 6402 +5552 7403 +5648 7480 +5936 7480 +6096 7480 +6192 7480 +6416 7480 +6544 7480 +6672 7480 +6864 7480 +6928 7480 +7040 7480 +7168 7480 +7312 7480 +7600 7480 +7760 7480 +7824 7480 +7888 7480 +8048 7480 +8176 7480 +8272 7480 +8416 7480 +8656 7480 +8848 7480 +9104 7480 +9232 7480 +9616 7480 +9680 7480 +9760 7480 +10016 7480 +10128 7480 +10224 7623 +10160 231 +10160 1012 +10160 1760 +10224 5148 +10288 5148 +10384 5148 +10512 5148 +10608 5148 +10704 5148 +10800 5148 +10928 5148 +11056 5148 +11120 5148 +11216 5148 +11344 5148 +11488 5148 +11680 5148 +11760 5148 +11904 5148 +12048 5148 +12176 5148 +12336 5148 +12432 5148 +12528 5148 +12688 5148 +12800 5148 +12912 5148 +13115 5148 +13136 6182 +13136 7282 +13136 8536 +13136 9174 +13136 11429 +13328 4488 +13456 4488 +13520 4488 +13616 4488 +13872 4488 +14080 4488 +14224 4488 +14400 4488 +14512 4488 +14736 4488 +14811 4488 +13136 4840 +14832 2530 +14832 4389 +6000 319 +6000 2024 +6000 4048 +6000 5324 +6000 8239 +6064 8459 +6064 10802 +6064 11495 +17168 10560 +17168 11528 +17232 1782 +17232 4092 +17232 6688 +17232 7722 +4688 2508 +4688 5324 +4688 7711 +4752 8866 +4752 11495 +17232 10560 +17232 11528 +17264 8844 +17296 1782 +17296 4092 +17296 6688 +17296 7722 +17296 8591 +10416 231 +10416 1012 +10416 1760 +10416 7392 +3632 3113 +3632 7139 +3696 7480 +3808 7480 +3888 7480 +3952 7480 +4096 7480 +4176 7480 +4256 7480 +4336 7480 +4432 7480 +4496 7480 +4635 7480 +4656 7689 +4656 8866 +4656 11495 +10576 231 +10576 1023 +10640 1232 +10704 1232 +10800 1232 +10928 1232 +11056 1232 +11120 1232 +11216 1232 +11344 1232 +11488 1232 +11696 1232 +11760 1232 +11904 1232 +12048 1232 +12176 1232 +12336 1232 +12432 1232 +12528 1232 +12688 1232 +12816 1232 +12944 1232 +13120 1232 +13200 1485 +13200 2310 +13200 3124 +13200 3938 +13200 4928 +13200 7282 +13200 8536 +13200 9174 +13200 11429 +13344 1232 +13488 1232 +13632 1232 +13872 1232 +14096 1232 +14224 1232 +14400 1232 +14512 1232 +14736 1232 +14800 1232 +14912 1232 +15120 1232 +15328 1232 +15408 1232 +15472 1232 +15600 1232 +12144 11165 +12208 9504 +12384 9504 +12528 9504 +12656 9504 +12832 9504 +12944 9504 +13088 9504 +13232 9504 +13392 9504 +13536 9504 +13632 9504 +13744 9504 +13968 9504 +14192 9504 +14272 9504 +14384 9504 +14448 9504 +14704 9504 +14784 9504 +15120 9504 +15392 9504 +15520 9504 +15712 9504 +15792 9504 +15856 9504 +15984 9504 +16080 9504 +16208 9504 +16432 9504 +16496 9504 +16592 9504 +16688 9504 +16784 9504 +16912 9504 +17040 9504 +17136 9504 +17280 9504 +17360 1782 +17360 4092 +17360 6688 +17360 7722 +17360 8580 +10992 231 +10992 902 +10992 1760 +10992 4488 +10992 7392 +11028 10252 +11216 10252 +11312 10252 +11440 10252 +11520 10252 +11600 10252 +11712 10252 +11792 10252 +11984 10252 +12080 10252 +12208 10252 +12384 10252 +12528 10252 +12656 10252 +12816 10252 +12944 10252 +13088 10252 +13232 10252 +13403 10252 +13424 11429 +13536 10252 +13696 10252 +13968 10252 +14192 10252 +14272 10252 +14384 10252 +14448 10252 +14704 10252 +14784 10252 +15120 10252 +15392 10252 +15520 10252 +15712 10252 +15792 10252 +15856 10252 +16048 10252 +16219 10252 +16240 2222 +16240 3740 +16240 5368 +16240 6798 +16240 7766 +10448 231 +10448 1012 +10448 1760 +10448 7392 +5712 8459 +5712 10802 +5728 8316 +5744 2024 +5744 4048 +5744 8239 +17424 1782 +17424 4092 +17424 6699 +17504 7128 +17712 7128 +17808 7766 +17808 8734 +17808 9603 +17808 10670 +9520 7128 +9536 3608 +9552 231 +9552 1012 +9552 1760 +17328 1782 +17328 4092 +17328 6688 +17328 7722 +17328 8580 +17328 10670 +17328 11528 +19088 11528 +11408 231 +11408 902 +11488 1980 +11696 1980 +11760 1980 +11904 1980 +12048 1980 +12176 1980 +12336 1980 +12432 1980 +12528 1980 +12688 1980 +12816 1980 +12944 1980 +13120 1980 +13344 1980 +13467 1980 +13488 2673 +13488 3938 +13488 4928 +13488 7282 +13488 8536 +13488 9174 +13488 11429 +13509 1452 +13632 1452 +13872 1452 +14096 1452 +14224 1452 +14400 1452 +14512 1452 +14736 1452 +14800 1452 +14912 1452 +15120 1452 +15328 1452 +15408 1452 +15472 1452 +15600 1452 +15712 1452 +15792 1452 +15888 1452 +15984 1452 +16128 1452 +16272 1452 +16400 1452 +16544 1452 +16656 1452 +16752 1452 +16912 1452 +17040 1452 +13488 1738 +17104 1133 +11120 11385 +11184 231 +11184 902 +11184 1760 +11184 4488 +11184 7392 +5680 8382 +5680 10802 +5696 7700 +5712 2024 +5712 4048 +4304 2365 +4304 5434 +4304 6908 +4304 7810 +2128 10032 +2144 8932 +2160 3113 +2160 6644 +2160 8789 +5424 7183 +5424 10692 +5440 6996 +5456 2178 +5456 4048 +5456 6402 +11152 231 +11152 902 +11152 1760 +11152 4488 +11152 7392 +11152 11385 +15632 2530 +15632 5368 +15632 6798 +15632 8426 +15632 9878 +15632 10626 +15632 11429 +16176 2222 +16176 3740 +16176 5368 +16176 6798 +16176 7766 +16176 8734 +16176 10626 +16176 11429 +5392 7194 +5392 10692 +5408 6556 +5424 2178 +5424 4048 +5424 6413 +4464 2574 +4464 5434 +4464 7920 +4528 10692 +4624 10692 +4688 10692 +4784 10692 +4944 10692 +5072 10791 +5072 11495 +18352 3619 +18352 7887 +18372 8184 +18464 8184 +18667 8184 +18704 8404 +18704 10670 +18704 11528 +4528 2574 +4528 5434 +4528 7931 +4624 8140 +4688 8140 +4784 8140 +4944 8140 +5136 8140 +5488 8371 +5488 10692 +1680 10032 +1700 8932 +1776 8932 +1883 8932 +1904 3113 +1904 6754 +1904 8052 +1904 8789 +19120 11528 +19122 8030 +18256 3454 +18256 6952 +18272 7128 +18288 7876 +18288 9427 +18288 10670 +4752 2618 +4752 5225 +4772 5368 +4848 5368 +4912 5368 +5040 5368 +5296 5368 +5664 5368 +5904 5467 +5904 8382 +5904 10802 +1264 6787 +1264 7832 +1264 9658 +1284 6556 +1456 6556 +1552 6556 +1648 6556 +1760 6556 +1840 3113 +17872 9603 +17872 10670 +17952 8844 +18224 3619 +18224 7766 +4816 2618 +4816 6402 +4816 7700 +4816 8723 +4944 8844 +5136 8844 +5552 8844 +5632 8844 +5792 8844 +5968 8844 +6032 8844 +6112 8844 +6192 8844 +6320 11495 +848 9922 +912 8184 +976 8184 +1104 8184 +1232 8184 +1328 8184 +1536 8184 +1616 3113 +1616 7018 +1616 8063 +17840 8723 +17840 9603 +17840 10670 +17860 8624 +17936 231 +17936 1628 +17936 4796 +17936 7766 +18000 231 +18000 1595 +18016 2376 +18032 4521 +18032 7766 +18032 10670 +17424 8613 +17424 9603 +17424 10670 +17424 11528 +17488 8404 +17552 8404 +17712 8404 +17856 8404 +17968 8404 +18192 8404 +18368 8404 +18464 8404 +18544 4037 +432 9702 +468 7260 +560 7260 +736 7260 +848 7260 +912 7260 +976 7260 +1072 7260 +1152 7260 +1312 7260 +1520 3113 +1520 7029 +11248 231 +11248 902 +11344 1760 +11488 1760 +11696 1760 +11760 1760 +11904 1760 +12048 1760 +12176 1760 +12304 4488 +12304 5962 +12304 7392 +12304 11165 +18160 3619 +18160 7766 +18160 10670 +18096 231 +18096 3740 +18096 7766 +18096 10670 +11088 231 +11088 902 +11088 1760 +11088 4488 +11108 5368 +11216 5368 +11344 5368 +11488 5368 +11680 5368 +11760 5368 +11904 5368 +12048 5368 +12176 5368 +12336 5368 +12432 5368 +12528 5368 +12688 5368 +12800 5368 +12912 5368 +13104 5368 +13328 5368 +13456 5368 +13520 5368 +13584 5467 +13584 7282 +13584 8866 +13584 11539 +10672 231 +10672 902 +10672 1760 +10800 5588 +10928 5588 +11088 5588 +11216 5588 +11344 5588 +11488 5588 +11680 5588 +11760 5588 +11904 5588 +12048 5588 +12176 5588 +12336 5588 +12432 5588 +12528 5588 +12688 5588 +12800 5588 +12912 5588 +13104 5588 +13328 6402 +13328 7392 +13328 8536 +13328 9174 +13328 11429 +3792 2904 +3792 5852 +3813 6028 +3888 6028 +3952 6028 +4096 6028 +4176 6028 +4256 6028 +4432 6028 +4496 6028 +4560 6028 +4640 6028 +4752 6028 +4848 6028 +4912 6028 +5040 6028 +5328 6028 +5664 6028 +6096 6028 +6192 6028 +6256 6028 +6416 6028 +6555 6028 +6576 8646 +6576 9438 +6576 11495 +4048 2959 +4048 6908 +4128 10032 +4272 10032 +4400 10032 +4528 10032 +4624 10032 +4688 10032 +4784 10032 +4944 10032 +5008 10032 +5136 10032 +5264 10032 +5552 10032 +5632 10032 +5808 10032 +5968 10032 +6032 10032 +6112 10032 +6192 10032 +6352 10032 +6448 10032 +6672 10032 +6848 10032 +6928 10802 +4400 2365 +4400 5434 +4400 7810 +4528 9592 +4624 9592 +4688 9592 +4784 9592 +4960 9592 +5136 9592 +5552 9592 +5632 9592 +5808 9592 +5968 9592 +6032 9592 +6112 9592 +6192 9592 +6352 9592 +6416 11495 +10256 231 +10256 1012 +10256 1760 +10256 7513 +10384 7788 +10496 7788 +10656 7788 +10816 7788 +10928 7788 +11040 7788 +11120 7788 +11216 7788 +11328 7788 +11504 7788 +11568 7788 +11632 7788 +11696 7788 +11760 7788 +11824 7788 +11968 7788 +12192 7788 +12272 7788 +12384 7788 +12528 7788 +12656 7788 +12800 7788 +12880 7788 +12944 7788 +13088 7788 +13275 7788 +13296 8536 +13296 9174 +13296 11429 +9840 231 +9840 1012 +9840 1760 +9860 3168 +10000 3168 +10096 3168 +10224 3168 +10288 3168 +10384 3168 +10512 3168 +10576 3168 +10640 3168 +10704 3168 +10800 3168 +10928 3168 +11056 3168 +11120 3168 +11216 3168 +11344 3168 +11488 3168 +11696 3168 +11760 3168 +11904 3168 +12048 3168 +12176 3168 +12336 3168 +12432 3168 +12544 3168 +12688 3168 +12752 3168 +12816 3168 +12928 3168 +13040 3267 +13040 3938 +13040 4708 +13040 6072 +13040 7282 +13040 8536 +13040 9174 +13040 11429 +4080 2310 +4080 4664 +4101 4840 +4176 4840 +4256 4840 +4432 4840 +4496 4840 +4560 4840 +4656 4840 +4720 4840 +4784 4840 +4848 4840 +4912 4840 +5040 4840 +5296 4840 +5664 4840 +5872 4840 +6128 4840 +6192 4840 +6256 4840 +6416 4840 +6560 4840 +6672 4840 +6784 4840 +6896 4840 +7008 4840 +7088 4840 +7184 4840 +7280 4983 +7280 7128 +7280 8756 +7280 10802 +4336 2365 +4336 5434 +4432 6776 +4496 6776 +4640 6776 +4768 6776 +4848 6776 +4912 6776 +5040 6776 +5424 6776 +5648 6776 +5936 6776 +6096 6776 +6192 6776 +6416 6776 +6544 6776 +6672 6776 +6768 6776 +6864 6776 +6992 6776 +7088 6776 +7184 6776 +7328 6776 +7611 6776 +7632 6897 +7632 8756 +18064 231 +18064 3740 +18064 7766 +18064 10670 +6960 638 +6960 1518 +6960 2574 +6960 4048 +6996 5588 +7088 5588 +7184 5588 +7328 5588 +7584 5588 +7664 5588 +7760 5588 +7824 5588 +7888 5588 +7952 5588 +8048 5588 +8176 5588 +8336 5588 +8432 5588 +8496 5588 +8752 5588 +8848 5588 +8992 5588 +9440 5588 +9552 5588 +9680 5588 +9824 5588 +10016 5588 +10160 5588 +10224 5588 +10288 7392 +9200 880 +9200 1760 +9200 2948 +9440 5808 +9552 5808 +9680 5808 +9819 5808 +1328 9911 +1584 9152 +1712 9152 +1776 9152 +1904 9152 +2064 9152 +2240 9152 +2464 9152 +2736 9152 +2960 9152 +3024 9152 +3168 9152 +3312 9152 +3504 9152 +3568 3113 +3568 7128 +3568 9053 +9424 352 +9444 572 +9584 572 +9680 572 +9808 572 +9872 572 +10000 572 +10096 572 +10224 572 +10288 572 +10384 572 +10512 572 +10640 572 +10704 572 +10800 572 +10928 572 +11056 572 +11120 572 +11216 572 +11344 572 +11488 572 +11696 572 +11760 572 +11904 572 +12048 572 +12176 572 +12336 572 +12432 572 +12528 572 +12688 572 +12816 572 +12955 572 diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/usa13509.tsp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/usa13509.tsp new file mode 100644 index 000000000..7fc018324 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/benchs/usa13509.tsp @@ -0,0 +1,13510 @@ +13509 +245553 817828 +247133 810906 +247206 810189 +249239 806281 +250111 805153 +254475 804794 +254683 804778 +254950 804294 +255622 803825 +255803 803469 +255972 803808 +256047 803539 +256147 803108 +256311 803692 +256789 803175 +256933 801631 +257072 802936 +257072 803258 +257211 802686 +257264 803556 +257544 803275 +257631 802964 +257739 801939 +257903 801303 +258100 803025 +258219 802897 +258403 803267 +258458 801542 +258550 801933 +258572 802783 +258628 801931 +258647 803247 +258703 802992 +258781 801258 +258822 801808 +258872 801314 +258897 801869 +258914 801272 +259014 974972 +259019 802506 +259306 803286 +259328 801628 +259403 802458 +259481 801508 +259503 801231 +259619 801769 +259647 801225 +259647 802417 +259722 817292 +259808 801486 +259869 802325 +259875 801750 +260028 802242 +260108 801497 +260519 801442 +260569 802719 +260644 802322 +260714 974761 +260731 972083 +260883 817264 +260919 979569 +261000 982628 +261006 972900 +261033 971644 +261219 801436 +261272 802333 +261322 976308 +261400 802136 +261417 817950 +261494 979133 +261586 978236 +261592 979906 +261600 801392 +261661 802086 +261700 980517 +261833 981228 +261903 976958 +261917 800967 +261944 981833 +262022 800942 +262031 982297 +262156 983250 +262189 817919 +262256 977578 +262350 975817 +262375 801250 +262442 802067 +262467 984811 +262483 977336 +262564 978247 +262614 818094 +262825 801072 +262869 983131 +262931 979928 +262936 800792 +262936 979603 +262983 979283 +263014 981631 +263181 801000 +263306 818269 +263394 817789 +263583 800833 +263728 979714 +263794 988200 +263992 800658 +264047 990156 +264119 977894 +264183 814175 +264422 980136 +264486 820225 +264517 819483 +264611 800731 +264669 818017 +265250 800667 +265267 800486 +265625 819497 +265661 800536 +265864 800522 +265886 800389 +266156 800572 +266233 801256 +266250 816250 +266403 818725 +266450 800761 +266636 807164 +266669 818803 +266744 818153 +266842 806678 +266908 801203 +267053 800367 +267089 817461 +267150 800536 +267372 809511 +267539 809339 +267600 800739 +267614 814386 +267750 800583 +267778 800358 +268000 800667 +268172 800822 +268197 806656 +268328 810933 +268417 810964 +268794 800536 +268833 822903 +269069 992711 +269097 820542 +269139 823272 +269294 820456 +269339 800944 +269467 820261 +269581 820672 +269614 819842 +269758 820908 +270269 804858 +270500 822500 +270528 824244 +270567 823786 +270592 801367 +270728 824078 +270994 824544 +271189 824444 +271300 824533 +271439 802008 +271675 802664 +271958 824906 +271972 802531 +272156 818586 +272172 802700 +272192 802394 +272217 824981 +272267 981439 +272436 808300 +272517 808142 +272542 802300 +272836 824808 +272928 813631 +273064 986781 +273294 824578 +273361 825308 +273603 981233 +274097 825694 +274122 826592 +274242 825803 +274250 825906 +274464 803258 +274472 825464 +274667 827042 +274689 826864 +274692 825417 +274931 817961 +274953 814411 +274972 827092 +274986 825750 +275061 995072 +275119 826322 +275156 978558 +275211 825725 +275214 825278 +275308 827336 +275356 825614 +275428 804025 +275469 818117 +275858 977989 +275956 815064 +275986 984078 +276381 818242 +276383 803975 +276742 977483 +276750 804094 +277122 822992 +277164 803844 +277206 824333 +277456 815308 +277481 804364 +277481 827036 +277519 818019 +277519 980694 +277547 827378 +277636 982386 +277675 806017 +277689 827692 +277814 979083 +277900 976686 +277950 819806 +277978 827975 +278003 973961 +278083 828114 +278139 827783 +278158 828208 +278258 828292 +278336 970608 +278356 804933 +278425 826997 +278625 828486 +278750 828514 +278769 973236 +278775 972114 +278803 805006 +278825 986175 +278950 819736 +278961 818433 +279011 815861 +279092 827875 +279092 971497 +279142 827056 +279211 828172 +279219 972897 +279228 828433 +279356 828064 +279375 822861 +279456 818006 +279472 824586 +279503 975819 +279525 817272 +279564 979367 +279650 818781 +279656 828003 +279675 819736 +279781 817567 +279786 816142 +279786 973983 +279906 826933 +279936 816903 +279939 822197 +279944 817383 +280033 805658 +280083 819078 +280183 821131 +280194 827719 +280203 970542 +280219 817331 +280222 816194 +280314 820150 +280339 826653 +280342 805889 +280350 823894 +280364 975089 +280408 993542 +280442 816281 +280611 970408 +280650 817889 +280681 805606 +280714 806536 +280719 806803 +280778 827639 +280786 806028 +280850 806667 +280892 805658 +280917 817236 +280942 978278 +281139 816181 +281144 819739 +281206 820233 +281356 806719 +281458 827569 +281486 805886 +281508 824617 +281611 816019 +281758 805903 +281822 818242 +281875 827397 +282164 827225 +282333 821814 +282381 973197 +282439 827194 +282586 814567 +282714 827197 +282917 814078 +283050 972750 +283197 806078 +283322 981172 +283358 822747 +283506 807256 +283644 821961 +283858 807422 +284006 977481 +284056 806050 +284150 967133 +284319 807603 +284367 992347 +284569 813917 +284581 813594 +284600 981822 +284656 821722 +284717 813681 +284858 813725 +284953 815350 +285025 813308 +285072 821706 +285217 998603 +285381 813794 +285381 814606 +285408 813008 +285492 817731 +285544 811067 +285547 816333 +285550 823881 +285578 818514 +285650 815864 +285689 815442 +285731 995683 +285742 817464 +285781 818869 +285908 813944 +285997 813394 +286097 820553 +286119 808078 +286144 813808 +286147 966258 +286192 814428 +286417 811236 +286475 968922 +286489 813514 +286497 819928 +286608 813658 +286614 814192 +286617 815097 +286647 821131 +286650 808450 +286672 991703 +286681 973881 +286697 812083 +286772 998278 +286775 813281 +286794 965600 +286803 815097 +286986 813083 +287078 962172 +287089 1.00499e+06 +287094 817331 +287308 816014 +287394 811153 +287500 822969 +287556 820950 +287586 813181 +287811 826153 +287994 820703 +288003 812733 +288022 816447 +288039 817258 +288106 818781 +288189 978483 +288356 823306 +288403 817689 +288525 816856 +288611 819067 +288617 987061 +288650 820392 +288831 977128 +288847 979006 +288919 990947 +289003 812639 +289006 823747 +289022 825928 +289172 819231 +289178 985461 +289292 816658 +289408 998494 +289442 952886 +289486 812989 +289539 953594 +289600 960650 +289669 984783 +289783 966458 +289806 812336 +289808 975025 +289825 959692 +289825 980172 +289886 809025 +290028 953317 +290175 958892 +290244 953986 +290256 809272 +290256 809722 +290297 827161 +290300 826689 +290336 954342 +290386 956983 +290403 965133 +290403 985678 +290442 955689 +290489 824611 +290550 820625 +290558 954097 +290694 980817 +290936 972889 +290961 809372 +291192 813517 +291333 981558 +291383 830353 +291397 989050 +291436 956450 +291656 810047 +291692 954317 +291758 809831 +291869 821403 +291894 988622 +291964 962694 +292094 997858 +292106 810231 +292261 986575 +292281 953447 +292367 979597 +292392 814658 +292433 810378 +292672 977642 +292856 810561 +292875 971517 +292947 952786 +293103 1.00418e+06 +293106 988097 +293114 961025 +293172 994661 +293472 991411 +293481 950158 +293489 810667 +293556 988783 +293561 981153 +293625 1.00896e+06 +293664 821975 +293789 902600 +293836 949025 +293872 824469 +293992 958375 +294236 952439 +294239 984933 +294289 971703 +294300 815108 +294383 905953 +294419 902992 +294436 969408 +294475 826425 +294506 959944 +294569 946394 +294606 950511 +294625 953578 +294631 983853 +294658 812581 +294747 811272 +294747 984506 +294786 984872 +294803 896939 +294822 954153 +294831 949219 +294847 984656 +294878 985514 +294950 986183 +295000 815917 +295014 974522 +295044 822800 +295067 949922 +295072 950947 +295153 983800 +295178 983158 +295231 985161 +295292 952008 +295297 825192 +295308 960708 +295375 907200 +295425 903381 +295425 950203 +295472 950319 +295478 982908 +295519 982694 +295533 906022 +295569 958083 +295606 1.04372e+06 +295614 982267 +295633 952858 +295639 950253 +295686 979644 +295711 981400 +295722 903817 +295747 971425 +295819 957606 +295822 984906 +295847 985522 +295894 963333 +295917 820875 +295919 980331 +295956 907194 +296003 984869 +296131 828178 +296158 955575 +296183 955375 +296194 956347 +296200 950097 +296236 818906 +296311 960650 +296342 831253 +296458 905392 +296461 826067 +296483 816378 +296514 823250 +296581 815986 +296622 948900 +296628 952353 +296656 950192 +296661 911019 +296667 901083 +296692 1.00012e+06 +296792 959769 +296803 976472 +296817 969028 +296875 971083 +296894 912708 +296897 958994 +296908 952089 +296931 913019 +296944 912189 +296992 912067 +297028 967803 +297028 981242 +297050 951236 +297056 954586 +297058 954367 +297064 965394 +297178 815083 +297178 954336 +297231 901236 +297256 849833 +297264 990733 +297272 905989 +297353 949772 +297364 848786 +297486 966008 +297597 955169 +297631 953631 +297672 952336 +297672 955297 +297703 954953 +297728 946825 +297758 951144 +297772 955169 +297781 951717 +297806 961569 +297856 958242 +297858 820317 +297858 959508 +297894 821675 +297897 943831 +297928 961006 +297944 987317 +297956 824944 +297956 908228 +297958 915014 +297975 933250 +298186 950558 +298200 943839 +298236 904750 +298267 825969 +298372 909561 +298378 915442 +298475 948906 +298531 846644 +298547 899906 +298678 951281 +298797 950628 +298831 979411 +298847 976697 +298875 955628 +298956 898978 +298986 939286 +298992 901003 +299022 955022 +299033 900772 +299053 968764 +299058 901422 +299061 903561 +299100 900325 +299108 916633 +299117 950619 +299144 900539 +299175 939242 +299183 902108 +299319 903664 +299322 953800 +299361 906786 +299403 902031 +299403 910247 +299425 899633 +299428 903517 +299439 821100 +299478 854181 +299481 919886 +299481 939169 +299500 962569 +299542 900053 +299544 900750 +299581 920358 +299589 829283 +299650 912031 +299675 989047 +299742 939922 +299764 904089 +299778 903878 +299794 818106 +299839 901528 +299889 978769 +299911 939583 +299917 816783 +299939 902417 +299978 922847 +299989 904122 +300033 918186 +300108 907194 +300156 1.00205e+06 +300206 938456 +300225 823397 +300258 925083 +300272 945914 +300356 944242 +300403 906989 +300439 820719 +300464 948850 +300472 906897 +300472 991400 +300478 943356 +300528 831750 +300536 905517 +300558 906192 +300564 917369 +300564 959267 +300664 904800 +300772 992400 +300806 926714 +300819 937581 +300850 978400 +300858 941017 +300928 937364 +300931 959875 +300972 960781 +300978 984211 +300994 919900 +301008 909928 +301025 940517 +301089 948581 +301103 973150 +301125 852006 +301131 946428 +301172 835819 +301217 924981 +301308 856033 +301314 940153 +301400 944108 +301422 1.02394e+06 +301469 919611 +301522 947389 +301528 855700 +301586 856603 +301658 817067 +301667 963975 +301686 933758 +301697 911469 +301708 856253 +301758 843753 +301764 858056 +301806 924642 +301817 932736 +301825 969361 +301842 908592 +301894 826394 +301897 925825 +301906 935811 +301922 826147 +302008 856269 +302139 923744 +302142 918319 +302172 910961 +302222 926569 +302239 920197 +302256 978033 +302264 932172 +302328 951608 +302347 922683 +302356 920944 +302356 921853 +302358 928225 +302364 933772 +302367 930136 +302383 909200 +302419 932506 +302453 856483 +302458 877008 +302500 1.0325e+06 +302531 941897 +302669 977428 +302733 918992 +302750 897811 +302750 988717 +302767 977908 +302767 984117 +302772 912236 +302819 821222 +302867 893761 +302889 912342 +302892 856406 +302944 813933 +302950 907950 +302975 937433 +302978 978017 +303025 819756 +303025 931906 +303078 1.04019e+06 +303086 892869 +303117 813967 +303117 954558 +303131 917903 +303133 899431 +303139 842475 +303156 892475 +303169 920489 +303294 827592 +303311 924956 +303319 816558 +303342 813989 +303406 975567 +303458 965281 +303489 941778 +303494 973700 +303503 891528 +303536 912653 +303547 940725 +303569 871639 +303581 900656 +303583 1.03661e+06 +303586 905861 +303656 885561 +303672 890928 +303678 979914 +303714 943122 +303758 843008 +303758 897483 +303839 872750 +303856 886117 +303878 960875 +303933 864958 +303942 912536 +303958 888853 +303975 919314 +304028 922150 +304031 882483 +304042 901569 +304056 866189 +304064 876836 +304097 866631 +304108 817081 +304108 914336 +304111 888278 +304111 920683 +304114 885344 +304189 970114 +304208 873075 +304211 872169 +304247 954797 +304250 872519 +304261 888908 +304264 872797 +304303 888422 +304319 849758 +304381 842808 +304386 904414 +304392 976197 +304403 885436 +304408 866136 +304428 872225 +304433 850453 +304439 856886 +304503 934331 +304506 911544 +304519 912100 +304556 866383 +304614 873150 +304686 872361 +304692 834131 +304692 836303 +304703 919783 +304739 879192 +304753 901008 +304761 883422 +304783 900375 +304811 926956 +304850 925958 +304853 928506 +304867 909561 +304875 876997 +304892 997717 +304911 915194 +304942 924175 +304978 949964 +304981 861361 +305019 907478 +305042 904611 +305042 905822 +305050 978200 +305081 976786 +305100 872125 +305181 829483 +305183 921847 +305186 872728 +305228 879033 +305253 896794 +305333 920814 +305367 917528 +305375 954831 +305425 975464 +305450 838703 +305453 877517 +305475 881753 +305536 877119 +305589 915558 +305600 919539 +305619 818308 +305667 1.00643e+06 +305692 847433 +305706 974092 +305772 904831 +305781 982725 +305786 978528 +305814 872914 +305869 845833 +305881 911681 +305900 881708 +305903 972967 +305922 951292 +305958 916164 +305986 870311 +305992 871611 +306033 879036 +306039 830981 +306136 972053 +306161 920569 +306169 846600 +306181 877531 +306200 927625 +306228 857122 +306236 844147 +306278 963342 +306317 816067 +306322 870397 +306325 976769 +306336 924192 +306353 905008 +306483 911564 +306581 984403 +306603 938925 +306694 814628 +306878 922714 +306908 819175 +306928 917439 +306936 853922 +306942 880431 +307014 914361 +307050 848431 +307075 849244 +307100 1.012e+06 +307108 949328 +307122 850203 +307172 911414 +307175 974425 +307214 861156 +307233 955506 +307239 873142 +307383 915942 +307386 880789 +307436 980553 +307472 832208 +307489 844839 +307542 935403 +307581 982281 +307592 986747 +307619 865706 +307636 880747 +307647 905117 +307731 858142 +307742 852269 +307750 944153 +307817 855386 +307836 924253 +307847 835600 +307908 898486 +307917 837900 +307917 856797 +307947 974253 +307969 853767 +307997 816900 +308158 926603 +308206 880706 +308231 883614 +308303 820100 +308306 906717 +308325 832786 +308372 912175 +308400 895342 +308411 977933 +308461 932889 +308469 901531 +308483 937572 +308531 880561 +308531 969767 +308558 820211 +308600 1.00601e+06 +308656 910156 +308700 851619 +308772 842014 +308781 974014 +308783 965928 +308828 843239 +308828 877731 +308917 880397 +308939 1.02879e+06 +309036 845756 +309078 944219 +309139 1.01898e+06 +309175 997861 +309197 932822 +309200 911156 +309200 939964 +309250 885900 +309381 905089 +309450 953753 +309469 975383 +309497 959114 +309528 871514 +309531 921825 +309567 855167 +309575 851622 +309597 837381 +309636 817228 +309656 864597 +309736 840531 +309764 925850 +309778 966736 +309814 863075 +309833 918000 +309839 920533 +309842 1.03744e+06 +309911 833728 +309967 948269 +310000 872608 +310011 894522 +310050 863281 +310067 904722 +310103 863497 +310111 838664 +310147 922872 +310236 874939 +310258 964850 +310294 961144 +310328 858639 +310344 919756 +310364 827472 +310397 1.0483e+06 +310403 848792 +310408 830753 +310486 853050 +310547 951256 +310558 974642 +310578 920489 +310594 921211 +310636 981814 +310681 836239 +310722 840892 +310728 969783 +310744 831994 +310786 976053 +310894 910683 +310906 882281 +310931 870628 +310944 924003 +310981 973425 +311022 856969 +311044 912994 +311050 870722 +311081 855944 +311086 888272 +311128 860461 +311147 932714 +311158 901419 +311169 977275 +311239 979028 +311267 954453 +311275 841519 +311278 920661 +311358 1.02224e+06 +311369 834236 +311392 855192 +311431 894097 +311431 904586 +311433 932608 +311497 814917 +311556 885578 +311583 944261 +311650 966767 +311692 889200 +311711 847333 +311797 837892 +311808 821350 +311828 852364 +311869 947808 +311914 1.0146e+06 +311956 987178 +311972 910217 +312022 890347 +312033 970364 +312042 819814 +312067 973025 +312072 832503 +312133 823542 +312158 861711 +312161 998453 +312169 983931 +312228 904603 +312231 853906 +312311 842106 +312356 857228 +312436 904531 +312478 939742 +312517 898375 +312617 1.00817e+06 +312689 836872 +312714 834650 +312775 945764 +312794 863256 +312822 892756 +312825 862556 +312836 904683 +312925 851117 +312975 828525 +312989 853444 +312989 870225 +313058 822422 +313061 968978 +313081 973611 +313100 857131 +313111 924450 +313114 855531 +313128 843358 +313181 954564 +313189 854939 +313194 839172 +313222 924342 +313269 892903 +313381 947289 +313392 1.02851e+06 +313403 1.10934e+06 +313406 830461 +313406 938467 +313408 835936 +313444 1.09545e+06 +313464 892600 +313511 853422 +313528 865392 +313569 1.09561e+06 +313614 961439 +313644 893061 +313700 814342 +313775 849342 +313794 841611 +313850 832231 +313856 859294 +313864 972153 +313903 926692 +313903 976842 +313972 1.0235e+06 +314128 833292 +314144 860678 +314153 924117 +314172 895422 +314217 853378 +314228 1.03493e+06 +314333 874014 +314350 977436 +314394 835194 +314397 847250 +314436 934572 +314439 974089 +314481 1.09928e+06 +314497 985706 +314503 835086 +314589 856406 +314611 1.03393e+06 +314622 971956 +314628 908500 +314636 1.00437e+06 +314650 882544 +314675 971144 +314717 836469 +314722 908967 +314747 969231 +314856 845139 +314861 820172 +314917 954783 +315022 1.06158e+06 +315044 910689 +315086 828500 +315089 878944 +315128 837878 +315172 826350 +315189 927067 +315214 971536 +315242 965336 +315278 873247 +315297 941058 +315306 838356 +315342 974428 +315392 824625 +315394 1.10756e+06 +315422 867150 +315422 968333 +315492 971464 +315536 901072 +315544 1.10303e+06 +315581 847383 +315603 914031 +315653 914258 +315686 934839 +315700 1.03001e+06 +315717 852506 +315783 841558 +315789 904406 +315811 925328 +315828 1.0292e+06 +315847 958489 +315850 1.06272e+06 +315922 1.06224e+06 +315939 971086 +315942 832506 +315942 1.02892e+06 +315972 1.00182e+06 +315983 898669 +316000 857189 +316033 946553 +316039 891956 +316072 818856 +316089 850472 +316250 828869 +316250 955792 +316264 918181 +316269 962836 +316278 1.10333e+06 +316292 971025 +316300 915544 +316314 936439 +316339 883133 +316369 867419 +316453 895553 +316503 950725 +316528 932019 +316592 974719 +316672 928906 +316747 886461 +316753 930444 +316797 964819 +316831 921336 +316925 1.06207e+06 +316939 891306 +317011 903975 +317036 981236 +317058 836533 +317078 817425 +317086 856106 +317086 877772 +317114 910606 +317128 1.10067e+06 +317147 832528 +317164 862639 +317169 991322 +317200 858161 +317225 915431 +317244 961650 +317319 841708 +317333 872047 +317381 999469 +317419 989453 +317511 1.03159e+06 +317539 966497 +317561 846153 +317586 1.06486e+06 +317606 930861 +317711 847894 +317719 918214 +317733 844467 +317739 816328 +317781 823486 +317822 975764 +317833 855558 +317839 816078 +317864 890322 +317878 964622 +317883 877272 +317958 951500 +318022 970914 +318086 859700 +318144 948403 +318192 923297 +318197 935142 +318214 930294 +318242 944908 +318272 994261 +318294 866178 +318308 843644 +318361 1.00984e+06 +318456 1.02367e+06 +318464 916561 +318467 815961 +318575 1.03092e+06 +318600 886994 +318603 903958 +318636 922958 +318736 897336 +318781 854497 +318867 889839 +318872 1.00291e+06 +318911 851456 +318922 1.00484e+06 +318933 931181 +318939 967144 +318972 986033 +319003 842519 +319028 922431 +319036 943950 +319119 1.11881e+06 +319133 877358 +319231 976564 +319253 926394 +319292 826797 +319364 819286 +319381 813036 +319436 942439 +319508 834564 +319564 999619 +319608 909839 +319617 898700 +319633 837825 +319636 952703 +319656 940536 +319678 1.10294e+06 +319753 939978 +319789 892872 +319808 916556 +319828 980333 +319844 865786 +319872 903569 +319894 832003 +319908 872906 +319919 833069 +319972 1.02078e+06 +320000 808458 +320039 1.06605e+06 +320108 971297 +320147 933419 +320167 929092 +320172 830628 +320217 937142 +320264 921389 +320333 810500 +320333 895222 +320339 843928 +320356 825083 +320375 937000 +320400 887281 +320492 916581 +320497 921092 +320525 955061 +320678 829008 +320722 842328 +320725 912408 +320736 829147 +320800 968064 +320833 811000 +320850 983417 +320853 932200 +320867 821181 +320878 846675 +320883 954717 +320894 882219 +320914 837956 +320919 967156 +320953 964686 +320958 989633 +320961 902942 +321094 906233 +321100 835011 +321142 811542 +321153 812472 +321244 969450 +321261 991650 +321292 1.01788e+06 +321322 812992 +321331 962275 +321358 816222 +321397 953200 +321439 960908 +321442 857150 +321444 951203 +321469 827781 +321489 811633 +321531 947992 +321533 901311 +321558 819339 +321572 943372 +321594 971497 +321614 819042 +321631 917206 +321686 882825 +321694 960122 +321811 821092 +321839 865803 +321839 968844 +321872 825658 +321975 831778 +321994 1.10968e+06 +322019 839086 +322042 823219 +322047 958553 +322094 997964 +322136 986703 +322161 807528 +322175 824136 +322206 982019 +322217 1.10926e+06 +322253 950575 +322267 952253 +322333 973742 +322344 977550 +322369 808606 +322381 843092 +322386 949403 +322411 927158 +322417 854164 +322428 944553 +322503 1.01478e+06 +322528 1.09831e+06 +322592 904225 +322614 837367 +322664 876253 +322686 1.07758e+06 +322700 1.068e+06 +322731 899858 +322744 949783 +322767 927233 +322783 957494 +322817 938239 +322836 834722 +322861 1.04095e+06 +322869 810808 +322936 840611 +322958 812356 +322964 1.01306e+06 +322986 901847 +323050 840275 +323053 847728 +323061 877981 +323061 924503 +323069 960064 +323078 954797 +323089 917747 +323094 901389 +323122 1.06778e+06 +323128 897983 +323131 970114 +323158 945164 +323175 890256 +323186 1.02545e+06 +323189 845172 +323203 962128 +323211 891633 +323283 932797 +323292 966250 +323300 906056 +323344 961511 +323361 813917 +323414 903217 +323431 893286 +323475 973864 +323492 904600 +323503 1.08708e+06 +323511 953008 +323525 908778 +323536 896544 +323642 887036 +323644 894742 +323664 961006 +323667 863000 +323694 841881 +323717 1.1286e+06 +323769 825925 +323789 806928 +323794 816633 +323808 1.06479e+06 +323864 968481 +323867 833547 +323881 989789 +323881 1.00864e+06 +323939 993939 +323967 973236 +323969 820603 +323969 908564 +324014 988172 +324058 994933 +324064 972114 +324067 887772 +324072 870211 +324083 911867 +324111 1.00712e+06 +324172 886478 +324206 1.04228e+06 +324239 856917 +324283 901322 +324311 966675 +324314 806700 +324322 830614 +324333 971022 +324339 866547 +324356 807242 +324367 1.11225e+06 +324372 1.03159e+06 +324389 891083 +324419 822153 +324419 977939 +324425 962297 +324453 949483 +324458 1.00538e+06 +324486 817833 +324486 997328 +324489 975264 +324494 875142 +324561 839403 +324575 914931 +324575 998711 +324581 837317 +324608 849878 +324614 973878 +324617 901153 +324639 864597 +324697 986786 +324706 1.00012e+06 +324708 850008 +324708 1.00406e+06 +324772 917547 +324786 940594 +324797 863619 +324806 809806 +324822 969942 +324861 882964 +324956 849919 +325006 947403 +325042 945739 +325092 921192 +325117 863767 +325156 954092 +325158 921917 +325158 937319 +325175 878364 +325175 968042 +325183 921475 +325231 926378 +325247 956369 +325250 937500 +325264 968861 +325275 927139 +325294 949028 +325300 925142 +325306 825894 +325325 935039 +325339 966653 +325344 927883 +325356 934108 +325358 858933 +325381 819325 +325403 829039 +325419 973206 +325431 903092 +325436 862119 +325439 930528 +325447 943672 +325481 828719 +325489 929200 +325497 858700 +325519 984978 +325536 838875 +325564 958631 +325569 842383 +325597 840964 +325606 856725 +325631 971414 +325789 973622 +325808 938925 +325828 821553 +325836 951086 +325839 1.17112e+06 +325842 881872 +325883 952039 +325883 965083 +325889 963086 +325889 966850 +325897 968567 +325908 926478 +325919 967558 +325936 948553 +325964 1.14709e+06 +325972 823339 +325997 1.1063e+06 +326039 914778 +326056 832456 +326097 854808 +326108 1.1077e+06 +326119 998139 +326125 900367 +326153 932867 +326208 836000 +326278 964556 +326308 972889 +326322 873192 +326353 860344 +326394 965381 +326400 1.17083e+06 +326408 903647 +326453 853783 +326467 972256 +326492 967128 +326517 969081 +326536 837597 +326550 799406 +326592 836189 +326631 954881 +326653 1.07152e+06 +326728 1.14146e+06 +326731 974603 +326733 957092 +326775 845394 +326781 1.17098e+06 +326789 1.15498e+06 +326833 847383 +326858 1.17182e+06 +326875 833467 +326875 939608 +326900 808508 +326947 937417 +326958 976019 +326961 920858 +326981 958850 +326989 926567 +326992 1.08131e+06 +327025 1.03136e+06 +327028 971550 +327044 875958 +327092 960081 +327142 971561 +327153 1.17156e+06 +327169 1.16875e+06 +327189 1.02644e+06 +327214 1.09105e+06 +327217 840133 +327225 1.1064e+06 +327233 992969 +327253 973206 +327253 1.14624e+06 +327286 949422 +327286 966225 +327292 827200 +327308 1.15529e+06 +327342 802419 +327358 962750 +327361 968867 +327375 1.01951e+06 +327425 1.17031e+06 +327439 939714 +327447 974133 +327458 969975 +327481 964717 +327503 816369 +327547 812422 +327556 989019 +327558 1.11554e+06 +327564 998958 +327572 943450 +327572 974106 +327578 848750 +327592 977969 +327594 974581 +327617 1.0813e+06 +327631 802503 +327675 886508 +327678 1.17022e+06 +327700 1.0828e+06 +327714 891167 +327733 924056 +327750 917925 +327764 799311 +327786 919142 +327794 1.0815e+06 +327833 968000 +327853 800353 +327872 845619 +327883 868717 +327889 851450 +327917 930556 +327919 1.15562e+06 +327928 956342 +327931 1.1569e+06 +327939 798628 +327947 1.16962e+06 +327958 954508 +327961 851839 +327964 965606 +327994 972689 +328000 947206 +328003 856536 +328039 819494 +328042 911700 +328047 974447 +328058 974028 +328083 981125 +328111 831728 +328111 1.15379e+06 +328139 969486 +328158 972278 +328189 822350 +328192 934175 +328203 851722 +328219 926578 +328233 971703 +328267 830794 +328281 884764 +328311 857636 +328339 1.09707e+06 +328342 972286 +328344 852297 +328364 964747 +328383 1.16973e+06 +328386 866294 +328403 851833 +328406 836325 +328406 878875 +328422 1.04403e+06 +328439 971428 +328467 852100 +328475 1.15569e+06 +328492 1.09759e+06 +328503 810794 +328517 800367 +328519 1.00465e+06 +328544 799750 +328550 904056 +328564 973386 +328572 1.16921e+06 +328578 972544 +328597 846200 +328600 973636 +328667 824042 +328678 843306 +328686 851906 +328708 811097 +328714 939872 +328744 957653 +328764 877425 +328778 851833 +328794 1.11757e+06 +328808 971547 +328819 833325 +328833 816583 +328836 899714 +328847 1.00126e+06 +328881 843267 +328928 934483 +328936 960292 +328950 975456 +328961 1.09827e+06 +328997 854011 +328997 945561 +329014 922419 +329028 965636 +329050 806669 +329050 936967 +329064 908781 +329103 961353 +329156 867158 +329183 800222 +329192 916769 +329253 811875 +329264 968958 +329311 964594 +329328 843494 +329342 970778 +329344 972514 +329358 828117 +329372 871647 +329411 971339 +329439 859539 +329439 1.03348e+06 +329442 1.02564e+06 +329444 871386 +329453 998025 +329478 1.12716e+06 +329481 967294 +329536 968900 +329544 970147 +329572 952900 +329572 1.05742e+06 +329589 812367 +329594 1.17264e+06 +329597 867467 +329617 968289 +329619 931400 +329628 1.17035e+06 +329636 1.01832e+06 +329644 1.02829e+06 +329689 934506 +329700 899122 +329719 1.10776e+06 +329739 908244 +329750 817578 +329750 963322 +329761 965950 +329778 1.05941e+06 +329778 1.11517e+06 +329783 885700 +329786 1.15529e+06 +329808 800328 +329814 828103 +329836 845828 +329856 801100 +329875 1.1077e+06 +329911 1.1727e+06 +329922 890661 +329950 975425 +329953 949656 +329975 876300 +329983 946306 +330014 824114 +330039 972256 +330047 1.10785e+06 +330067 801556 +330078 813086 +330122 943653 +330136 927250 +330144 970967 +330150 966128 +330161 927242 +330183 801758 +330197 966986 +330203 1.17202e+06 +330308 850611 +330314 1.11387e+06 +330317 947217 +330342 839383 +330369 1.17291e+06 +330372 1.15621e+06 +330392 850314 +330394 921825 +330483 1.1663e+06 +330508 1.09296e+06 +330544 841558 +330569 1.1091e+06 +330572 915733 +330575 895875 +330606 954719 +330656 860533 +330656 962275 +330678 1.09359e+06 +330681 1.17302e+06 +330739 1.06018e+06 +330750 898544 +330767 1.11739e+06 +330786 868817 +330786 1.09365e+06 +330786 1.16601e+06 +330800 832322 +330847 972958 +330897 820158 +330917 970464 +330956 803156 +330981 936547 +331003 934608 +331006 868642 +331028 867536 +331031 966703 +331053 885608 +331075 923347 +331094 912619 +331131 900531 +331136 941642 +331150 1.04326e+06 +331181 871250 +331192 970253 +331192 1.17086e+06 +331211 971831 +331214 855664 +331236 890550 +331256 1.15513e+06 +331281 919611 +331283 1.07252e+06 +331294 881514 +331333 1.00227e+06 +331372 958392 +331386 1.10124e+06 +331408 919939 +331433 1.17165e+06 +331481 959511 +331486 941500 +331506 968233 +331511 853722 +331575 997333 +331575 1.05774e+06 +331581 1.1735e+06 +331611 983853 +331633 963597 +331650 970292 +331656 919414 +331667 1.01793e+06 +331689 908539 +331731 849150 +331731 862517 +331781 866072 +331786 991772 +331800 964978 +331806 947439 +331811 1.02274e+06 +331828 902228 +331842 904892 +331844 998933 +331886 952211 +331908 1.01378e+06 +331939 987383 +331958 800133 +331958 1.17379e+06 +331972 1.04372e+06 +331975 966150 +332000 1.17242e+06 +332031 946800 +332075 823919 +332075 926661 +332097 875692 +332100 847444 +332100 977544 +332144 804481 +332183 981583 +332183 1.17033e+06 +332281 917975 +332289 875772 +332333 825956 +332342 864836 +332342 975858 +332344 885822 +332347 848358 +332361 968008 +332378 915114 +332400 1.15518e+06 +332436 842289 +332442 868164 +332447 813589 +332467 842642 +332469 958997 +332481 1.00573e+06 +332511 808158 +332558 1.16374e+06 +332569 1.03317e+06 +332611 938853 +332614 972378 +332619 905922 +332653 842817 +332667 892908 +332669 932392 +332697 908797 +332736 858361 +332756 829764 +332775 850981 +332781 863550 +332858 965725 +332939 1.11096e+06 +332942 961944 +332944 839661 +332958 977986 +332961 868436 +332969 810350 +332975 914936 +333022 845539 +333042 969858 +333047 836833 +333061 1.11841e+06 +333089 854847 +333100 891728 +333106 857544 +333139 820969 +333158 926628 +333200 879028 +333208 902322 +333225 804139 +333225 811425 +333244 967842 +333267 833886 +333286 912817 +333289 925383 +333289 1.05604e+06 +333317 1.05672e+06 +333319 897411 +333328 943425 +333369 1.02206e+06 +333428 1.18327e+06 +333439 864381 +333453 1.10452e+06 +333458 841092 +333478 932097 +333486 806831 +333489 965483 +333506 847767 +333514 932956 +333528 1.11788e+06 +333536 905925 +333578 812708 +333583 935775 +333583 976944 +333625 951044 +333631 971736 +333647 927247 +333653 934950 +333703 1.12583e+06 +333706 960686 +333706 987525 +333708 1.11962e+06 +333733 956881 +333764 1.1725e+06 +333767 792947 +333783 880153 +333794 962472 +333806 847997 +333869 842831 +333942 1.04522e+06 +333942 1.10786e+06 +333944 803475 +333964 969603 +333967 845958 +333992 1.10868e+06 +334017 869544 +334025 814203 +334053 908975 +334069 826622 +334100 910617 +334111 930694 +334111 1.10842e+06 +334131 823853 +334144 823128 +334147 1.11909e+06 +334150 1.11549e+06 +334153 886439 +334181 998186 +334208 821622 +334214 816858 +334214 965769 +334222 1.11822e+06 +334247 959461 +334250 940475 +334256 869267 +334267 941061 +334269 1.17611e+06 +334306 963383 +334336 841489 +334342 869472 +334353 1.12297e+06 +334353 1.12358e+06 +334356 1.12349e+06 +334358 861058 +334372 1.01643e+06 +334417 940375 +334433 895717 +334472 841469 +334483 1.12073e+06 +334486 844550 +334486 867878 +334492 996225 +334500 905056 +334500 1.12259e+06 +334503 821983 +334503 888183 +334508 906550 +334511 795611 +334511 869967 +334517 811256 +334539 910072 +334561 1.02489e+06 +334597 944153 +334614 869089 +334636 1.17678e+06 +334661 942883 +334667 820167 +334667 969181 +334669 1.17697e+06 +334672 995242 +334706 825047 +334706 952136 +334750 804867 +334764 1.00855e+06 +334819 897281 +334917 808558 +334933 1.12357e+06 +334936 1.17148e+06 +334939 849139 +334950 903197 +334956 884272 +334967 812794 +334967 818922 +335006 1.17742e+06 +335017 819653 +335017 1.17662e+06 +335044 818692 +335058 1.02009e+06 +335086 946161 +335086 966119 +335092 1.11898e+06 +335128 963922 +335172 820758 +335178 818442 +335181 899206 +335200 964836 +335206 868025 +335214 798789 +335214 843539 +335225 1.17707e+06 +335253 914358 +335261 953156 +335308 805722 +335308 819450 +335311 1.11942e+06 +335317 811233 +335358 869972 +335378 852533 +335378 924697 +335381 867072 +335386 1.12185e+06 +335400 891242 +335406 892669 +335422 1.17782e+06 +335442 842339 +335453 1.05572e+06 +335461 957256 +335481 865444 +335508 790417 +335508 818042 +335519 947808 +335539 828961 +335553 890847 +335575 807147 +335589 978483 +335603 817197 +335606 1.17157e+06 +335614 969108 +335633 880814 +335636 818081 +335656 813036 +335669 845811 +335700 868964 +335717 1.16076e+06 +335725 844133 +335750 838939 +335756 831825 +335772 961781 +335772 962731 +335778 1.01855e+06 +335806 1.12237e+06 +335808 799892 +335831 843394 +335833 867728 +335833 959097 +335844 928342 +335861 862861 +335869 845425 +335869 879844 +335872 1.02378e+06 +335908 864908 +335939 1.12302e+06 +335942 992600 +335956 834681 +335956 986253 +335967 838603 +335975 1.12271e+06 +335992 797444 +335992 963664 +336000 1.17671e+06 +336008 869561 +336017 907736 +336047 867939 +336058 789733 +336064 843353 +336075 886503 +336078 927400 +336081 803514 +336086 912067 +336103 964106 +336103 1.14596e+06 +336106 950525 +336106 1.14573e+06 +336125 920644 +336125 1.17712e+06 +336131 859611 +336131 1.12324e+06 +336142 858350 +336156 811022 +336189 838675 +336189 1.17928e+06 +336197 866089 +336206 869714 +336214 858442 +336219 843692 +336258 836125 +336258 1.17693e+06 +336261 859189 +336289 913994 +336289 917908 +336289 919314 +336306 1.12332e+06 +336331 897111 +336356 966086 +336358 972225 +336386 1.17343e+06 +336411 1.17918e+06 +336417 1.05877e+06 +336417 1.1729e+06 +336447 843258 +336456 859125 +336489 855875 +336517 973761 +336522 813614 +336533 844494 +336561 837183 +336561 969067 +336597 858317 +336597 876000 +336600 844103 +336600 868128 +336600 1.01238e+06 +336603 1.17998e+06 +336608 955553 +336614 952664 +336614 953856 +336647 791028 +336664 1.01682e+06 +336669 935914 +336675 798308 +336675 840178 +336694 1.17822e+06 +336706 1.01535e+06 +336742 941311 +336742 1.01387e+06 +336772 863967 +336794 844394 +336803 1.16173e+06 +336833 789986 +336844 878308 +336861 864750 +336889 788869 +336889 1.01998e+06 +336939 817672 +336950 802111 +336986 858397 +337039 907264 +337067 840317 +337072 842719 +337092 1.17196e+06 +337092 1.17953e+06 +337122 841053 +337133 873886 +337206 1.16215e+06 +337211 851456 +337214 1.16388e+06 +337244 926156 +337258 905514 +337286 870903 +337306 872844 +337319 849192 +337367 827394 +337369 850325 +337372 1.01836e+06 +337381 810981 +337397 1.16412e+06 +337414 1.18104e+06 +337431 1.17108e+06 +337444 852881 +337444 861558 +337456 1.17867e+06 +337458 1.17174e+06 +337458 1.17825e+06 +337475 1.16971e+06 +337481 868086 +337489 843881 +337519 858114 +337536 794478 +337547 842675 +337556 965364 +337569 881089 +337569 1.18353e+06 +337592 966692 +337592 1.18006e+06 +337597 871833 +337669 1.18188e+06 +337689 898083 +337714 842672 +337733 868139 +337739 1.17941e+06 +337747 842964 +337750 864717 +337786 907214 +337789 924917 +337797 1.16464e+06 +337803 843361 +337825 1.17228e+06 +337833 860025 +337839 1.16958e+06 +337856 1.18084e+06 +337867 977256 +337878 1.17852e+06 +337878 1.18357e+06 +337894 819297 +337897 842642 +337903 843061 +337914 908569 +337922 824792 +337922 1.18314e+06 +337936 842061 +337939 846606 +337947 837133 +338006 1.18389e+06 +338014 1.17145e+06 +338025 851886 +338025 933808 +338025 1.17992e+06 +338031 1.18072e+06 +338081 841703 +338094 842397 +338094 905264 +338111 1.02163e+06 +338125 846344 +338136 857614 +338136 924128 +338142 868094 +338144 1.17812e+06 +338161 986947 +338169 811011 +338169 1.18036e+06 +338172 981950 +338178 794494 +338181 867428 +338186 845825 +338200 1.16389e+06 +338247 870861 +338250 885436 +338303 1.16544e+06 +338311 872775 +338314 1.18072e+06 +338314 1.18281e+06 +338319 818011 +338322 1.01842e+06 +338333 1.1195e+06 +338353 1.17914e+06 +338358 790481 +338358 1.1834e+06 +338369 1.09964e+06 +338389 839008 +338389 907261 +338453 816619 +338464 1.18046e+06 +338492 1.18388e+06 +338531 965022 +338533 910278 +338536 1.18133e+06 +338544 842172 +338553 893114 +338556 892844 +338572 840200 +338575 1.15486e+06 +338594 846839 +338622 1.18399e+06 +338628 834089 +338650 843367 +338658 1.18082e+06 +338675 827414 +338675 1.17997e+06 +338694 1.01597e+06 +338703 1.17924e+06 +338708 797556 +338722 1.17869e+06 +338753 1.17566e+06 +338756 847622 +338756 891772 +338767 806931 +338781 907272 +338781 1.1752e+06 +338817 1.18116e+06 +338839 845144 +338847 1.1841e+06 +338869 914917 +338883 1.18308e+06 +338886 1.17812e+06 +338894 1.18159e+06 +338900 841431 +338906 800186 +338917 875261 +338919 842989 +338956 948261 +338958 1.18219e+06 +338967 979361 +338981 842833 +338983 889992 +339017 881344 +339022 1.18081e+06 +339056 914989 +339078 815475 +339103 811047 +339108 811358 +339133 822936 +339136 984931 +339164 815136 +339164 845447 +339164 1.18352e+06 +339167 928481 +339167 1.17899e+06 +339172 1.02324e+06 +339172 1.18011e+06 +339175 797442 +339192 1.18416e+06 +339203 803417 +339203 1.17278e+06 +339208 931539 +339214 780206 +339236 848408 +339242 843786 +339244 860225 +339256 1.16876e+06 +339289 878172 +339294 1.16976e+06 +339303 1.18211e+06 +339319 1.17945e+06 +339344 964283 +339353 799328 +339369 971164 +339381 1.18352e+06 +339383 943569 +339397 862017 +339400 1.17243e+06 +339400 1.18132e+06 +339411 842136 +339428 918433 +339442 909450 +339456 938469 +339461 843347 +339472 903442 +339472 1.18084e+06 +339481 864728 +339492 835347 +339508 907678 +339514 986683 +339533 1.17395e+06 +339547 860419 +339561 839881 +339583 921900 +339606 1.18184e+06 +339608 833781 +339608 1.1795e+06 +339608 1.18041e+06 +339611 1.16501e+06 +339617 1.18352e+06 +339650 835967 +339653 1.18151e+06 +339656 810742 +339656 879147 +339669 832783 +339672 941683 +339681 1.18224e+06 +339686 1.12729e+06 +339725 1.16976e+06 +339731 783861 +339761 1.17904e+06 +339767 896756 +339775 1.18186e+06 +339792 1.18032e+06 +339814 812364 +339817 1.18224e+06 +339831 1.18096e+06 +339839 997244 +339842 884881 +339844 1.01337e+06 +339850 915608 +339867 1.18184e+06 +339875 802083 +339875 822981 +339886 838981 +339897 834258 +339911 963739 +339919 893489 +339925 837203 +339925 1.17516e+06 +339933 810742 +339958 795703 +339961 1.17405e+06 +339967 779075 +339981 858664 +339986 967194 +339997 791997 +340006 810350 +340014 817722 +340017 887553 +340022 950936 +340025 850417 +340028 841447 +340067 900567 +340094 1.18104e+06 +340106 955094 +340117 1.17484e+06 +340119 1.00822e+06 +340122 1.00302e+06 +340122 1.17688e+06 +340131 982319 +340136 838278 +340142 860067 +340144 867469 +340147 904317 +340172 961425 +340186 952661 +340192 809900 +340194 1.1849e+06 +340200 979572 +340200 1.17949e+06 +340203 1.17864e+06 +340211 1.18396e+06 +340217 860886 +340231 843617 +340233 846156 +340239 1.18171e+06 +340253 877583 +340261 863261 +340272 958689 +340292 947389 +340292 989186 +340336 1.17042e+06 +340339 1.17313e+06 +340350 778939 +340378 943411 +340444 907447 +340453 1.17943e+06 +340456 850561 +340469 875497 +340469 1.1658e+06 +340483 1.1726e+06 +340514 840714 +340519 1.18046e+06 +340522 1.18243e+06 +340536 809614 +340536 852550 +340553 1.17751e+06 +340561 788906 +340583 1.06891e+06 +340600 800717 +340600 950031 +340606 867675 +340622 936897 +340625 1.18089e+06 +340625 1.18122e+06 +340633 1.1765e+06 +340636 831256 +340639 809583 +340642 1.01843e+06 +340658 846769 +340678 1.02524e+06 +340681 981903 +340686 1.17938e+06 +340686 1.18027e+06 +340700 883911 +340703 1.17395e+06 +340722 860333 +340736 1.09856e+06 +340736 1.18399e+06 +340739 1.17313e+06 +340750 925553 +340753 842942 +340806 1.18072e+06 +340808 844114 +340814 865911 +340853 1.1796e+06 +340858 811833 +340889 886222 +340900 1.17889e+06 +340900 1.18361e+06 +340903 967714 +340922 825958 +340922 1.17434e+06 +340953 1.18126e+06 +340961 1.18105e+06 +340967 1.17719e+06 +340975 1.17648e+06 +340978 985703 +341008 1.17767e+06 +341014 845194 +341031 1.17845e+06 +341067 1.17806e+06 +341069 1.17934e+06 +341072 1.18057e+06 +341111 828672 +341111 1.09291e+06 +341161 887117 +341161 1.18149e+06 +341167 1.07243e+06 +341172 913764 +341192 940164 +341192 1.16445e+06 +341206 840044 +341208 930536 +341214 1.17302e+06 +341214 1.18106e+06 +341244 1.01441e+06 +341258 1.09937e+06 +341267 962631 +341283 1.17208e+06 +341333 1.09285e+06 +341336 1.17907e+06 +341344 778819 +341347 799400 +341347 1.16312e+06 +341356 1.16053e+06 +341361 1.17864e+06 +341394 1.17976e+06 +341397 1.18034e+06 +341422 879886 +341464 874022 +341469 1.1797e+06 +341478 1.18144e+06 +341478 1.19194e+06 +341481 1.17998e+06 +341486 788769 +341500 1.14288e+06 +341514 896314 +341519 856789 +341542 1.17343e+06 +341544 992647 +341544 1.09973e+06 +341603 1.18651e+06 +341617 1.18052e+06 +341650 848000 +341669 979972 +341686 800628 +341706 1.18837e+06 +341733 901375 +341739 845014 +341742 971433 +341747 868436 +341750 820242 +341753 972625 +341781 794008 +341781 823792 +341783 975922 +341792 778478 +341833 1.02134e+06 +341850 839253 +341858 968803 +341861 1.03334e+06 +341867 851747 +341872 969842 +341897 1.1813e+06 +341942 887197 +341953 797628 +341953 821619 +341975 1.19176e+06 +342000 905708 +342006 861664 +342017 902833 +342022 871814 +342039 834572 +342047 830308 +342056 792547 +342072 841403 +342083 777967 +342092 778439 +342092 815333 +342103 778869 +342117 1.0169e+06 +342133 886644 +342164 1.19037e+06 +342178 905419 +342181 802486 +342200 856078 +342256 779450 +342264 876214 +342264 1.02723e+06 +342272 806894 +342275 838844 +342283 920031 +342283 986842 +342308 1.11324e+06 +342311 956200 +342322 1.19172e+06 +342331 974875 +342331 1.0241e+06 +342336 791489 +342361 966783 +342367 844908 +342369 849442 +342408 990753 +342419 853358 +342419 1.17285e+06 +342464 806072 +342478 889986 +342483 1.17188e+06 +342528 835617 +342542 1.10029e+06 +342564 902719 +342564 995164 +342569 851647 +342575 887033 +342639 858606 +342647 934608 +342675 862089 +342719 982356 +342722 778189 +342739 884092 +342739 920908 +342744 816189 +342772 878286 +342819 1.18438e+06 +342828 847453 +342847 831444 +342856 1.18881e+06 +342869 831103 +342883 779214 +342928 913378 +342978 838242 +342978 997400 +342997 798764 +343047 819831 +343064 826639 +343069 924011 +343083 908519 +343114 899442 +343133 790375 +343144 971425 +343181 864958 +343189 785003 +343192 918472 +343206 784022 +343219 788272 +343242 884911 +343267 935506 +343333 823881 +343336 834992 +343367 850714 +343369 794314 +343381 843767 +343386 787033 +343456 791658 +343461 831100 +343508 877064 +343514 860008 +343528 829322 +343531 890231 +343542 1.19058e+06 +343556 779003 +343581 862947 +343597 983075 +343608 1.17632e+06 +343617 810856 +343622 928128 +343661 1.01057e+06 +343664 1.01748e+06 +343683 869086 +343686 849342 +343689 979636 +343694 906389 +343714 1.19306e+06 +343739 800736 +343764 886817 +343806 810867 +343819 843711 +343847 1.1853e+06 +343850 1.02115e+06 +343858 961281 +343875 836664 +343886 1.03051e+06 +343919 990181 +343925 1.00897e+06 +343936 800697 +343983 822469 +343989 1.19518e+06 +343992 1.18917e+06 +344000 1.19299e+06 +344047 1.03205e+06 +344147 818114 +344153 1.18793e+06 +344164 793714 +344219 917061 +344233 1.19703e+06 +344244 930950 +344264 1.00204e+06 +344264 1.173e+06 +344303 1.03632e+06 +344319 902208 +344358 831069 +344361 847000 +344397 881408 +344433 869353 +344436 1.18609e+06 +344442 857197 +344450 921831 +344464 823917 +344467 859042 +344481 1.19242e+06 +344550 936800 +344600 976736 +344650 1.10091e+06 +344667 960531 +344672 835739 +344678 844292 +344689 802561 +344706 826708 +344717 1.04245e+06 +344719 996478 +344725 818808 +344742 1.01304e+06 +344750 782025 +344806 853478 +344811 872933 +344811 983828 +344839 1.14322e+06 +344847 854764 +344872 786564 +344917 835375 +344942 858478 +344942 890078 +344967 791144 +344989 820144 +345003 915525 +345008 1.17185e+06 +345014 926364 +345022 979575 +345025 849511 +345025 901986 +345028 816117 +345028 991406 +345033 826503 +345036 930550 +345044 971192 +345078 877286 +345078 969681 +345094 886353 +345106 899397 +345114 835272 +345125 798511 +345133 1.10078e+06 +345136 1.02882e+06 +345186 835008 +345203 1.06241e+06 +345228 824944 +345231 869703 +345250 868947 +345286 862533 +345325 839850 +345358 1.01758e+06 +345361 1.1729e+06 +345364 792917 +345381 962183 +345386 787878 +345400 1.12468e+06 +345439 853106 +345442 919689 +345486 994219 +345506 906417 +345508 1.02311e+06 +345517 805839 +345519 779264 +345556 909128 +345567 936339 +345622 858125 +345636 1.11854e+06 +345644 925867 +345650 835453 +345689 856150 +345719 931731 +345750 809022 +345772 833325 +345794 795467 +345794 1.18116e+06 +345811 1.13204e+06 +345828 1.17408e+06 +345861 942394 +345894 953525 +345931 806756 +345958 911997 +345958 1.20137e+06 +345969 837633 +346017 1.05208e+06 +346047 964239 +346058 869833 +346081 821136 +346086 983900 +346100 1.12315e+06 +346125 835250 +346136 1.20192e+06 +346144 1.20079e+06 +346172 796850 +346175 899686 +346181 790089 +346183 824781 +346200 923953 +346228 973961 +346275 968406 +346278 862744 +346292 786056 +346294 986283 +346350 857672 +346378 978172 +346381 993336 +346392 1.20457e+06 +346403 784842 +346417 1.02724e+06 +346433 971642 +346447 824703 +346453 1.18217e+06 +346461 893053 +346481 979578 +346500 803892 +346517 827839 +346525 965258 +346564 819653 +346581 885667 +346589 989514 +346628 1.06776e+06 +346647 830967 +346686 795456 +346708 890264 +346719 929986 +346722 860342 +346778 769511 +346781 829317 +346800 791953 +346811 874061 +346833 828375 +346844 903828 +346856 829533 +346875 771194 +346883 999117 +346889 821958 +346931 913136 +346950 765597 +346972 989492 +346975 798836 +346981 1.18136e+06 +346989 767406 +347008 875289 +347017 863758 +347022 824647 +347047 812144 +347047 852819 +347142 856808 +347181 766642 +347203 807711 +347206 958989 +347228 767264 +347242 827814 +347247 1.00534e+06 +347297 889506 +347303 865861 +347311 877025 +347339 824439 +347350 793492 +347356 779956 +347358 800883 +347369 822544 +347394 820372 +347400 972219 +347436 1.01854e+06 +347447 876675 +347464 922894 +347503 981714 +347514 950478 +347539 774306 +347569 879728 +347575 1.12453e+06 +347583 1.06055e+06 +347589 796108 +347600 827539 +347647 830642 +347650 876986 +347658 847700 +347694 922669 +347697 849703 +347711 794439 +347711 1.12057e+06 +347731 803919 +347736 907575 +347739 794631 +347744 966781 +347781 923489 +347786 823103 +347794 993350 +347803 982919 +347808 915808 +347825 979567 +347831 917464 +347839 918997 +347861 783944 +347864 768594 +347878 826925 +347967 969592 +347997 876772 +348000 824244 +348028 869717 +348061 1.06733e+06 +348117 881900 +348150 791833 +348150 922242 +348150 1.02397e+06 +348172 974056 +348228 1.18944e+06 +348231 982439 +348239 899936 +348247 824194 +348253 1.06838e+06 +348256 872947 +348258 774597 +348267 972589 +348289 958436 +348297 826017 +348347 976022 +348406 850428 +348406 883147 +348422 826447 +348450 955572 +348481 1.14613e+06 +348514 865722 +348525 823942 +348544 955819 +348561 1.00213e+06 +348611 966653 +348614 824317 +348628 875375 +348639 800014 +348639 843242 +348642 1.18162e+06 +348661 921100 +348686 858394 +348697 1.1176e+06 +348711 852908 +348719 855092 +348719 995039 +348722 896906 +348761 839583 +348767 1.17103e+06 +348778 824242 +348781 834011 +348789 769017 +348789 964122 +348794 819664 +348833 827075 +348847 796944 +348853 824561 +348878 793664 +348878 911944 +348892 946006 +348906 809567 +348936 983656 +348964 982003 +348983 940906 +348989 817619 +349022 1.10158e+06 +349025 790119 +349047 772317 +349050 1.16819e+06 +349069 1.0668e+06 +349106 818531 +349128 911100 +349147 977783 +349158 851092 +349181 797628 +349181 833856 +349181 973142 +349186 953089 +349203 822964 +349225 817428 +349236 777742 +349239 819331 +349244 807436 +349278 957156 +349283 820992 +349319 981400 +349322 865719 +349331 837772 +349331 838472 +349333 957694 +349364 818794 +349378 821453 +349378 1.00888e+06 +349386 822272 +349386 1.04682e+06 +349392 797742 +349431 797872 +349447 818378 +349475 857144 +349481 821275 +349492 904714 +349494 819322 +349508 821061 +349508 950800 +349511 946369 +349528 785089 +349531 1.20435e+06 +349569 924272 +349581 819908 +349581 852233 +349594 967525 +349611 819675 +349617 898294 +349622 779625 +349622 993803 +349672 947244 +349675 799847 +349675 824436 +349681 800769 +349692 873711 +349703 789456 +349717 1.20571e+06 +349722 909025 +349744 920164 +349769 914950 +349775 853578 +349808 792244 +349831 852861 +349842 804494 +349842 819267 +349853 805497 +349861 843714 +349883 803672 +349894 969233 +349894 992492 +349900 1.06049e+06 +349919 818350 +349919 868467 +349919 868469 +349936 802647 +349942 812422 +349942 853494 +349958 792264 +349978 783236 +349992 780914 +349994 1.17649e+06 +350025 809800 +350047 928025 +350072 809453 +350075 802011 +350081 907897 +350081 912511 +350122 857044 +350131 907225 +350133 786942 +350136 973608 +350142 852519 +350147 973353 +350153 785033 +350158 819750 +350167 818042 +350169 1.17835e+06 +350228 943811 +350242 810281 +350242 1.10697e+06 +350294 990928 +350308 766933 +350319 787950 +350322 932231 +350414 821044 +350419 896644 +350428 1.20475e+06 +350450 896217 +350456 853097 +350469 820903 +350478 856719 +350511 862697 +350522 868886 +350525 788786 +350525 831969 +350525 979361 +350525 1.18173e+06 +350531 850503 +350536 946233 +350539 933933 +350550 777467 +350553 871575 +350561 884353 +350589 1.194e+06 +350594 942525 +350644 888908 +350706 918794 +350711 797617 +350717 816500 +350725 982433 +350742 856261 +350767 806694 +350778 874397 +350800 816331 +350803 963989 +350822 942631 +350831 808925 +350833 980875 +350839 922078 +350844 1.06651e+06 +350872 973347 +350875 840347 +350886 770353 +350886 924419 +350906 806864 +350931 934483 +350950 789558 +350964 787842 +350975 987461 +350978 984353 +350989 1.20611e+06 +351036 986033 +351044 801094 +351056 830967 +351083 770444 +351097 794725 +351111 812267 +351117 1.01363e+06 +351128 918222 +351136 851381 +351161 781364 +351167 807239 +351186 1.2059e+06 +351211 815161 +351217 1.2062e+06 +351225 853439 +351228 953708 +351258 1.17985e+06 +351303 967756 +351314 794297 +351322 1.18448e+06 +351347 1.19455e+06 +351347 1.19472e+06 +351378 976578 +351392 973944 +351400 939214 +351411 848722 +351425 1.19456e+06 +351428 767706 +351428 1.2064e+06 +351436 828214 +351447 768025 +351461 966697 +351464 901844 +351483 818611 +351494 900489 +351497 949706 +351508 927439 +351508 938067 +351519 865706 +351522 1.07842e+06 +351536 781056 +351544 1.19455e+06 +351578 991750 +351586 964931 +351594 848767 +351600 926406 +351608 848578 +351619 1.06642e+06 +351644 860106 +351647 853014 +351672 946722 +351678 789731 +351697 1.0789e+06 +351700 885922 +351717 1.03724e+06 +351739 793925 +351742 846536 +351742 877378 +351744 814500 +351750 821894 +351794 806475 +351858 861122 +351864 947856 +351872 773211 +351883 982603 +351894 854858 +351894 1.14052e+06 +351903 944108 +351958 851847 +351981 1.11651e+06 +351997 870308 +352006 1.06701e+06 +352014 855192 +352017 838242 +352031 859211 +352036 1.01106e+06 +352044 898739 +352086 851269 +352092 1.18828e+06 +352097 860794 +352144 901964 +352153 998661 +352192 812058 +352219 1.01831e+06 +352225 974392 +352231 931578 +352244 907867 +352244 966703 +352247 882492 +352250 903250 +352256 803292 +352269 808433 +352303 810428 +352311 944778 +352317 916675 +352325 1.00599e+06 +352333 827344 +352336 886064 +352339 923875 +352353 815147 +352358 883906 +352361 823494 +352361 851986 +352369 974061 +352375 962414 +352378 1.06606e+06 +352381 1.18914e+06 +352386 810753 +352386 1.06667e+06 +352392 944258 +352400 858397 +352411 946197 +352422 873347 +352428 1.02428e+06 +352436 893500 +352450 813414 +352464 929364 +352472 975994 +352481 930489 +352494 1.1219e+06 +352506 917361 +352531 821972 +352536 951228 +352542 827003 +352556 793725 +352556 949214 +352561 792825 +352561 889878 +352561 912000 +352569 783525 +352578 969364 +352592 810756 +352597 804256 +352597 1.18913e+06 +352603 857361 +352606 971194 +352619 811875 +352625 775819 +352633 905711 +352678 811031 +352700 916397 +352706 861281 +352722 810483 +352747 812103 +352750 904667 +352767 991347 +352783 931336 +352800 824222 +352822 913653 +352828 1.20659e+06 +352831 863742 +352847 812842 +352861 811306 +352872 955822 +352889 811450 +352908 978119 +352911 996397 +352919 937297 +352922 815358 +352928 936344 +352950 797456 +352964 847481 +352969 940361 +352981 810161 +352983 824833 +353000 1.06551e+06 +353053 767889 +353061 786092 +353067 777883 +353083 771544 +353089 983417 +353097 915678 +353106 818589 +353111 824442 +353128 979442 +353164 811764 +353186 824611 +353194 877622 +353228 838075 +353233 845250 +353236 806561 +353236 873036 +353256 943014 +353258 896161 +353264 891494 +353267 786764 +353272 969250 +353289 817589 +353289 932528 +353339 818653 +353356 961361 +353361 941731 +353375 857042 +353394 974864 +353414 898972 +353425 779089 +353458 794172 +353464 824722 +353489 991700 +353500 802003 +353511 855678 +353544 944339 +353561 952653 +353575 780061 +353583 798947 +353589 810972 +353597 797800 +353600 819294 +353614 868397 +353619 862094 +353628 842942 +353653 1.0341e+06 +353658 1.20849e+06 +353692 819569 +353694 824931 +353714 853906 +353725 774378 +353733 1.19018e+06 +353736 832261 +353781 987817 +353786 813792 +353797 902578 +353819 785489 +353833 1.19109e+06 +353842 922156 +353842 977242 +353847 779931 +353858 943983 +353869 879953 +353878 805958 +353917 979411 +353992 788161 +354006 1.19469e+06 +354014 931142 +354019 797844 +354019 907531 +354019 974811 +354025 812025 +354025 1.08223e+06 +354058 801169 +354061 945986 +354078 786722 +354106 808431 +354117 902783 +354119 994039 +354131 787358 +354133 780711 +354175 816431 +354197 1.1902e+06 +354211 945144 +354219 992792 +354231 914558 +354244 844875 +354267 918367 +354286 794933 +354289 815017 +354294 857231 +354303 942314 +354308 834475 +354325 936153 +354325 963047 +354339 795872 +354339 1.06446e+06 +354342 806208 +354353 1.01172e+06 +354358 970911 +354364 1.00805e+06 +354367 943481 +354372 936728 +354392 886414 +354397 959817 +354406 933878 +354411 897781 +354419 974406 +354428 845931 +354428 1.20891e+06 +354447 784272 +354453 1.00271e+06 +354469 850844 +354492 867889 +354492 898150 +354494 973964 +354581 959411 +354603 947872 +354622 894019 +354639 815219 +354658 781608 +354667 856542 +354675 975161 +354686 830042 +354700 955228 +354714 934664 +354714 983553 +354725 774158 +354736 812547 +354778 942217 +354797 791806 +354817 860886 +354833 864603 +354867 808603 +354867 966847 +354869 938275 +354872 806219 +354886 829889 +354894 971633 +354894 1.2067e+06 +354900 903586 +354911 973228 +354914 920311 +354922 941375 +354939 850125 +354942 953053 +354969 779822 +354975 972686 +354983 949694 +354992 808489 +355006 940514 +355033 969025 +355042 974458 +355067 977622 +355069 787394 +355078 901469 +355083 783397 +355125 771008 +355133 845453 +355147 847903 +355147 1.06365e+06 +355150 882453 +355156 989669 +355186 976319 +355197 843636 +355225 976186 +355228 973769 +355261 987072 +355272 863336 +355281 1.08742e+06 +355289 774014 +355297 806683 +355322 979547 +355325 770328 +355328 828375 +355328 904206 +355333 829108 +355336 825286 +355361 1.00959e+06 +355364 782847 +355400 766233 +355453 779750 +355456 806111 +355464 770525 +355478 875519 +355494 985778 +355497 826503 +355508 975486 +355511 804067 +355608 975511 +355642 896464 +355642 907167 +355642 1.2108e+06 +355658 972867 +355692 805819 +355742 1.05674e+06 +355753 1.01184e+06 +355756 812119 +355778 989642 +355842 788003 +355842 881194 +355847 808103 +355869 804631 +355881 1.18491e+06 +355900 842419 +355914 924603 +355942 1.1934e+06 +355961 781244 +355978 824000 +356008 825542 +356014 844611 +356028 859197 +356056 851889 +356067 778236 +356075 958600 +356081 968208 +356092 1.18483e+06 +356111 773731 +356111 903297 +356122 804469 +356139 996711 +356139 1.06725e+06 +356144 888139 +356150 870353 +356172 878394 +356178 823214 +356203 908983 +356225 1.1767e+06 +356233 959603 +356289 821808 +356311 983169 +356328 993814 +356333 801161 +356333 825822 +356350 779333 +356356 941672 +356361 833778 +356383 912650 +356397 1.01603e+06 +356419 977461 +356442 823031 +356453 780100 +356486 956558 +356497 881267 +356497 910739 +356506 784567 +356508 883933 +356508 1.17661e+06 +356528 974778 +356578 820256 +356611 841722 +356617 971953 +356650 988828 +356678 1.01397e+06 +356697 812217 +356708 804744 +356728 895733 +356736 905072 +356744 900997 +356781 1.08151e+06 +356781 1.19228e+06 +356806 1.09052e+06 +356817 804325 +356839 820094 +356842 819919 +356869 1.05937e+06 +356914 1.00638e+06 +356919 848608 +356922 804350 +356942 970631 +356969 825608 +357006 808883 +357017 914414 +357017 968806 +357044 820361 +357047 967650 +357050 899694 +357064 812189 +357069 1.18455e+06 +357072 810758 +357078 798139 +357111 786144 +357111 890875 +357139 814222 +357142 835103 +357144 811464 +357200 791775 +357233 794625 +357258 979761 +357272 814708 +357289 814000 +357289 817794 +357292 1.18549e+06 +357306 911983 +357319 1.05151e+06 +357325 788506 +357328 843339 +357331 806772 +357333 796528 +357406 815633 +357422 905622 +357425 960700 +357436 796925 +357442 987472 +357444 1.09076e+06 +357453 816850 +357453 895297 +357472 854667 +357478 953694 +357486 966578 +357519 776703 +357547 1.18424e+06 +357561 899281 +357564 839706 +357578 816044 +357581 903222 +357603 841358 +357636 1.05932e+06 +357689 1.19246e+06 +357697 916408 +357719 786389 +357719 877839 +357739 814314 +357758 889900 +357808 783700 +357825 808875 +357847 891172 +357875 784808 +357883 776381 +357883 835544 +357894 839739 +357900 782042 +357914 787814 +357950 839319 +357964 814308 +357967 1.19107e+06 +357972 826842 +357972 842561 +357975 952503 +357981 976783 +358028 887747 +358028 965058 +358064 778636 +358083 970125 +358103 805561 +358111 768969 +358144 946283 +358147 892256 +358161 904342 +358178 798033 +358197 889158 +358203 956739 +358217 911283 +358239 772556 +358239 802536 +358242 783150 +358264 825494 +358269 1.01442e+06 +358275 839408 +358275 860717 +358303 925578 +358306 963908 +358383 894061 +358422 907042 +358425 756389 +358447 984128 +358456 863903 +358483 814961 +358506 953181 +358544 770558 +358589 1.08761e+06 +358614 979314 +358656 846850 +358656 1.01973e+06 +358667 767489 +358669 778294 +358681 835619 +358683 921175 +358708 955222 +358728 917539 +358756 893961 +358764 960608 +358778 766156 +358789 974250 +358800 901669 +358808 845086 +358825 800822 +358842 1.19271e+06 +358894 775325 +358906 903442 +358922 828292 +358922 904525 +358939 805617 +358967 775361 +359000 905819 +359028 802572 +359081 756761 +359089 926311 +359092 848781 +359100 790756 +359128 1.00382e+06 +359139 815392 +359153 820647 +359153 949697 +359175 762525 +359197 887589 +359217 811767 +359242 941883 +359250 868689 +359258 854642 +359272 899189 +359325 951411 +359339 845525 +359358 902578 +359381 777908 +359417 915483 +359419 958831 +359444 772100 +359447 960650 +359489 850269 +359494 944233 +359517 956506 +359525 975944 +359553 960086 +359556 800056 +359572 756244 +359594 953692 +359597 899719 +359606 839208 +359606 858142 +359608 782539 +359619 797625 +359625 1.19043e+06 +359669 831878 +359686 1.19291e+06 +359731 886781 +359739 970333 +359744 779658 +359758 943175 +359786 1.14832e+06 +359797 785100 +359806 889414 +359814 979108 +359819 841139 +359850 967667 +359883 966008 +359911 1.0608e+06 +359925 945678 +359939 788989 +359942 799356 +359942 941750 +359983 769464 +359986 961139 +360006 884281 +360014 940081 +360025 1.0593e+06 +360042 1.20128e+06 +360081 931864 +360083 1.19961e+06 +360103 842697 +360111 778578 +360114 886228 +360153 834150 +360156 865819 +360167 1.01824e+06 +360211 879669 +360214 803822 +360222 1.06958e+06 +360228 959681 +360317 840281 +360344 893856 +360358 894797 +360364 788236 +360381 882444 +360381 882736 +360397 1.14981e+06 +360417 901139 +360419 942469 +360444 843444 +360469 902928 +360489 777494 +360503 909750 +360508 902386 +360525 957906 +360533 873125 +360536 985881 +360583 905000 +360589 880978 +360594 919083 +360594 1.02513e+06 +360594 1.19311e+06 +360606 766094 +360625 941572 +360653 1.19016e+06 +360667 889939 +360689 794008 +360719 841333 +360725 797922 +360753 791000 +360764 888100 +360769 873878 +360775 860333 +360839 877947 +360839 898292 +360844 965833 +360861 937411 +360872 819275 +360914 793644 +360944 1.15041e+06 +360956 794381 +360958 792672 +360958 844425 +360967 811825 +360969 804194 +360981 1.19559e+06 +360989 783014 +360997 802444 +361006 870511 +361017 784583 +361019 871150 +361028 795069 +361033 841319 +361039 835528 +361047 845972 +361053 777131 +361056 795425 +361072 796589 +361075 832869 +361075 872208 +361078 876331 +361083 910972 +361092 978983 +361128 892617 +361131 794767 +361142 966989 +361156 970581 +361161 983167 +361169 867664 +361194 921358 +361197 800739 +361219 794292 +361222 786864 +361222 834925 +361275 889858 +361294 774206 +361306 824247 +361319 787569 +361325 885186 +361342 901597 +361344 806597 +361350 816778 +361350 1.11239e+06 +361397 961086 +361397 1.20359e+06 +361450 824169 +361456 1.1906e+06 +361458 811608 +361475 852683 +361481 989239 +361497 992978 +361511 955092 +361533 888006 +361536 856436 +361539 959925 +361542 837042 +361544 1.09552e+06 +361572 819783 +361583 811478 +361628 855017 +361631 818717 +361631 828311 +361661 948544 +361714 811942 +361725 859297 +361750 1.15136e+06 +361772 873397 +361778 942333 +361808 776669 +361858 953428 +361867 941286 +361869 903831 +361881 945403 +361889 957456 +361894 829586 +361900 764664 +361931 896556 +361956 840681 +361958 854486 +361961 820706 +361983 811531 +361983 1.01192e+06 +361989 1.15117e+06 +362000 865186 +362000 951675 +362022 802811 +362022 890122 +362025 911744 +362028 1.20102e+06 +362031 891908 +362031 1.19087e+06 +362061 942342 +362078 1.19346e+06 +362086 799050 +362128 1.21125e+06 +362136 886125 +362139 832950 +362164 805128 +362167 816747 +362178 841547 +362189 764642 +362211 919292 +362239 916083 +362261 926847 +362272 808336 +362294 771144 +362297 931075 +362325 807083 +362333 888244 +362336 897494 +362339 897694 +362361 900556 +362369 799797 +362381 963164 +362392 808447 +362403 802936 +362419 859519 +362419 959756 +362442 808486 +362506 837975 +362522 859517 +362553 941306 +362569 830861 +362586 831953 +362589 891917 +362614 909711 +362631 902925 +362633 894878 +362642 946928 +362650 1.01406e+06 +362675 944844 +362689 984794 +362694 958544 +362711 925353 +362739 772847 +362742 870642 +362758 998808 +362789 925969 +362803 978978 +362806 803594 +362808 835150 +362831 924939 +362842 821728 +362867 769850 +362894 972878 +362914 887081 +362928 951531 +362942 824736 +362953 801419 +362961 1.19141e+06 +362972 959911 +362972 970078 +362978 1.19206e+06 +362989 842233 +363008 1.19782e+06 +363019 762236 +363019 883267 +363047 866200 +363064 821933 +363075 975861 +363081 784069 +363100 964639 +363106 785911 +363119 877733 +363125 956158 +363133 823536 +363156 997572 +363158 914825 +363158 1.19708e+06 +363183 876947 +363200 906019 +363208 1.21243e+06 +363231 867133 +363275 1.19645e+06 +363294 783994 +363300 841839 +363303 1.19291e+06 +363314 772131 +363319 941183 +363353 934358 +363358 944606 +363361 1.02072e+06 +363378 968036 +363386 891639 +363417 783903 +363433 888503 +363486 822108 +363511 1.19419e+06 +363528 1.09617e+06 +363547 796647 +363556 856589 +363586 1.05609e+06 +363611 1.04595e+06 +363628 907536 +363644 958386 +363647 935678 +363683 960011 +363722 822258 +363728 942086 +363783 894719 +363808 848844 +363828 841200 +363828 901906 +363833 853231 +363839 925814 +363853 799597 +363864 804697 +363872 1.19217e+06 +363875 980894 +363883 864467 +363908 861672 +363911 950464 +363922 824117 +363936 789831 +363950 867794 +363956 769322 +363956 807228 +363956 978781 +363983 781556 +363992 900236 +364000 1.00802e+06 +364011 937378 +364036 814931 +364039 793364 +364053 984403 +364072 830056 +364072 1.05572e+06 +364078 905797 +364122 799672 +364142 963950 +364158 776033 +364169 1.09228e+06 +364181 826239 +364197 824767 +364203 814736 +364211 947967 +364219 944533 +364242 890569 +364247 1.21325e+06 +364253 896994 +364269 775958 +364333 1.19686e+06 +364336 993900 +364339 1.00141e+06 +364344 779122 +364356 978686 +364367 952711 +364369 772292 +364369 975853 +364392 992044 +364394 824558 +364422 770989 +364425 835997 +364442 883344 +364456 781986 +364508 775592 +364511 776797 +364517 899669 +364517 1.03184e+06 +364519 899192 +364533 1.00537e+06 +364542 835694 +364614 776544 +364639 950475 +364644 929200 +364664 799072 +364703 866514 +364708 828519 +364742 822611 +364744 818050 +364761 1.19442e+06 +364778 825933 +364797 1.21731e+06 +364850 825033 +364878 878383 +364883 797669 +364900 774417 +364933 900750 +364956 915406 +364981 845128 +364992 806075 +365003 776453 +365003 806267 +365008 888753 +365042 888742 +365050 1.01782e+06 +365053 811211 +365067 1.21443e+06 +365092 868850 +365108 1.04915e+06 +365139 1.19553e+06 +365147 946111 +365189 896125 +365211 860264 +365222 827136 +365225 939394 +365233 1.19286e+06 +365244 915381 +365289 974436 +365297 832175 +365297 873594 +365303 959233 +365331 823269 +365333 858500 +365356 954322 +365428 1.19832e+06 +365433 1.14446e+06 +365433 1.19386e+06 +365450 1.19286e+06 +365456 944850 +365461 963269 +365461 982697 +365483 824558 +365483 825619 +365486 866961 +365500 855053 +365556 824681 +365569 899664 +365619 862481 +365619 961614 +365681 896006 +365708 1.19611e+06 +365711 891861 +365736 967039 +365736 995719 +365744 851289 +365753 906039 +365769 825678 +365789 984619 +365817 865164 +365822 870656 +365822 988794 +365831 772003 +365844 824894 +365858 793953 +365864 895278 +365878 841269 +365886 793664 +365914 825736 +365922 896153 +365933 1.21834e+06 +365936 947689 +365944 943839 +365950 821889 +365953 1.01636e+06 +365958 902472 +365964 821886 +365964 1.19449e+06 +366003 1.21894e+06 +366031 924281 +366061 1.18062e+06 +366067 1.20188e+06 +366103 883147 +366111 1.21851e+06 +366117 1.19526e+06 +366136 898164 +366208 908233 +366211 932153 +366222 811511 +366244 1.19313e+06 +366283 799511 +366306 1.19678e+06 +366336 817839 +366378 825811 +366386 951539 +366408 802658 +366422 887389 +366436 932183 +366483 871664 +366503 1.1979e+06 +366506 944433 +366508 844386 +366592 1.19593e+06 +366611 809242 +366672 889933 +366675 868519 +366678 963369 +366689 899686 +366692 978008 +366722 939408 +366769 938686 +366775 769228 +366778 1.21654e+06 +366783 973097 +366828 1.01481e+06 +366844 1.21801e+06 +366850 931197 +366858 775428 +366889 831111 +366906 975561 +366908 851347 +366914 798728 +366936 949628 +366942 913992 +366986 789017 +366989 844775 +367000 781000 +367000 799389 +367006 956378 +367022 856917 +367039 1.05594e+06 +367069 970853 +367081 1.19555e+06 +367097 819775 +367097 998931 +367106 1.19758e+06 +367111 1.07984e+06 +367133 788289 +367150 799156 +367161 770683 +367161 809789 +367222 865772 +367233 844706 +367236 1.20059e+06 +367264 781292 +367278 1.10254e+06 +367281 765839 +367281 918522 +367281 1.08218e+06 +367286 809992 +367294 1.02513e+06 +367342 1.08359e+06 +367417 886367 +367417 943989 +367433 841597 +367472 959806 +367478 1.19771e+06 +367511 948472 +367533 861906 +367536 1.20381e+06 +367544 983564 +367569 903928 +367575 778472 +367583 830272 +367592 799906 +367592 895867 +367619 836950 +367625 807350 +367628 940558 +367647 882953 +367658 789286 +367658 1.21757e+06 +367758 873556 +367786 956392 +367797 893856 +367819 966608 +367856 1.08686e+06 +367892 815822 +367903 853706 +367911 817714 +367958 899578 +367958 959353 +367983 816825 +367992 784586 +368044 972825 +368050 986661 +368069 977333 +368083 767444 +368097 1.02255e+06 +368100 871542 +368125 898614 +368142 774686 +368161 1.00519e+06 +368172 939206 +368222 1.07992e+06 +368253 1.19702e+06 +368256 793983 +368347 815150 +368353 762986 +368356 996300 +368406 763106 +368414 946108 +368431 833219 +368453 868872 +368456 1.21537e+06 +368467 762856 +368472 896853 +368486 832192 +368519 833542 +368525 1.21401e+06 +368528 759783 +368572 883503 +368589 1.20455e+06 +368600 1.01213e+06 +368642 867103 +368650 878353 +368656 874886 +368658 831906 +368664 838889 +368672 814236 +368689 943678 +368706 890097 +368736 950956 +368744 948772 +368767 895878 +368817 827472 +368822 970531 +368833 979217 +368858 899292 +368900 822797 +368914 895383 +368936 812761 +368942 817769 +368975 959258 +369008 820803 +369031 1.06579e+06 +369033 1.04439e+06 +369042 1.21748e+06 +369053 935714 +369067 827819 +369069 1.00539e+06 +369086 1.11473e+06 +369094 894525 +369103 1.21756e+06 +369172 948794 +369192 942550 +369208 893506 +369289 939275 +369333 826292 +369333 948728 +369336 1.06998e+06 +369353 1.21772e+06 +369367 1.21864e+06 +369439 824642 +369444 940042 +369456 1.12526e+06 +369483 810850 +369486 840969 +369497 901583 +369519 926603 +369536 793592 +369542 1.01065e+06 +369544 947878 +369606 840933 +369608 1.21963e+06 +369614 1.2006e+06 +369619 781253 +369639 937956 +369647 829486 +369647 890892 +369661 829225 +369683 1.21899e+06 +369708 937178 +369742 1.2203e+06 +369753 1.21952e+06 +369758 825758 +369772 1.21898e+06 +369781 829886 +369783 822978 +369786 764283 +369800 856122 +369847 850631 +369861 1.20626e+06 +369869 948306 +369881 1.21956e+06 +369889 846000 +369903 864436 +369911 914925 +369922 919697 +369928 786014 +369944 956200 +369947 782275 +369953 917036 +369953 943158 +369956 910144 +369958 859119 +369975 798922 +370011 930814 +370031 936372 +370053 891764 +370058 1.21567e+06 +370081 1.0189e+06 +370097 913233 +370114 959350 +370161 819744 +370172 984850 +370175 885314 +370208 932058 +370236 898197 +370297 763456 +370303 934728 +370322 976067 +370333 883500 +370358 770956 +370369 944967 +370372 950897 +370372 956161 +370403 784836 +370406 944725 +370431 1.00921e+06 +370433 932942 +370436 896103 +370475 1.12526e+06 +370478 807800 +370478 874850 +370500 789444 +370511 1.22014e+06 +370514 1.22072e+06 +370517 890467 +370525 862078 +370561 850886 +370564 786386 +370583 1.20849e+06 +370589 881325 +370597 953592 +370619 970381 +370625 817519 +370667 766767 +370675 935519 +370692 941164 +370758 946394 +370767 889736 +370767 944592 +370803 779975 +370833 886000 +370836 944133 +370842 945131 +370850 896553 +370850 1.21609e+06 +370853 891625 +370869 818553 +370892 1.22085e+06 +370919 846042 +370925 792967 +370931 817939 +370939 860464 +370944 880803 +371028 853064 +371036 938183 +371042 965000 +371042 1.13583e+06 +371044 899106 +371056 806856 +371067 925806 +371092 878819 +371117 792858 +371142 891978 +371147 815197 +371150 1.07632e+06 +371156 933700 +371169 930556 +371183 828269 +371200 934800 +371222 763461 +371231 1.20259e+06 +371236 826014 +371236 886303 +371239 921011 +371261 1.22121e+06 +371267 961867 +371289 840833 +371297 804092 +371306 922633 +371306 1.13508e+06 +371306 1.21653e+06 +371331 1.13653e+06 +371367 859569 +371389 884033 +371425 945106 +371464 927686 +371464 944628 +371492 944428 +371500 824561 +371506 913575 +371511 887319 +371533 980308 +371536 837619 +371544 906956 +371575 929406 +371658 872475 +371672 876925 +371675 951097 +371686 1.13679e+06 +371692 948439 +371694 1.045e+06 +371731 781236 +371733 826311 +371742 1.05937e+06 +371753 1.01349e+06 +371753 1.13289e+06 +371764 943100 +371767 945653 +371769 846358 +371792 916567 +371794 859069 +371800 896550 +371836 873836 +371875 782017 +371883 944700 +371886 997653 +371903 952969 +371908 874528 +371967 897361 +372008 1.05423e+06 +372011 871789 +372011 1.13269e+06 +372014 994836 +372064 888447 +372075 826719 +372081 880567 +372147 938397 +372153 932981 +372167 895244 +372175 870489 +372197 895089 +372242 957081 +372256 866836 +372256 1.07598e+06 +372267 1.21974e+06 +372275 800131 +372278 774022 +372303 774778 +372322 820992 +372350 892700 +372364 1.21991e+06 +372367 874753 +372369 871592 +372397 969953 +372400 774303 +372414 982264 +372417 909686 +372422 784600 +372494 831933 +372508 925103 +372525 812714 +372539 764972 +372578 1.20998e+06 +372583 1.05904e+06 +372608 854989 +372639 1.22022e+06 +372653 973714 +372658 977653 +372678 760178 +372683 931169 +372689 993264 +372694 1.07009e+06 +372697 812225 +372703 955522 +372706 767078 +372708 799417 +372722 858911 +372742 875119 +372742 971686 +372750 1.0596e+06 +372753 1.07879e+06 +372769 891833 +372775 948247 +372778 820992 +372808 798972 +372811 985800 +372856 1.0034e+06 +372867 980256 +372872 1.21949e+06 +372894 759717 +372908 1.20318e+06 +372936 889753 +372939 871233 +372992 862286 +373003 899811 +373011 816911 +373019 783922 +373022 1.20482e+06 +373039 823511 +373050 934283 +373058 895181 +373058 899703 +373100 947717 +373125 812600 +373128 967539 +373139 1.2102e+06 +373153 935850 +373194 806392 +373206 792578 +373231 1.22031e+06 +373250 813119 +373261 919558 +373264 807353 +373281 874989 +373281 1.19648e+06 +373314 808114 +373325 827211 +373328 880811 +373339 869961 +373342 795233 +373353 1.21894e+06 +373358 814367 +373358 829806 +373361 943011 +373386 929069 +373403 952608 +373411 799433 +373433 853419 +373442 867547 +373450 1.08289e+06 +373458 948086 +373475 1.21268e+06 +373489 1.08585e+06 +373539 812528 +373567 774419 +373569 788256 +373603 963036 +373611 891658 +373636 815503 +373636 1.18394e+06 +373661 811028 +373661 1.21826e+06 +373672 884864 +373689 1.22035e+06 +373783 798072 +373797 1.22136e+06 +373819 869225 +373822 808228 +373822 896661 +373839 931511 +373842 1.22234e+06 +373856 939531 +373856 1.00195e+06 +373861 1.02278e+06 +373869 1.20722e+06 +373875 971139 +373894 1.20612e+06 +373903 976419 +373931 940936 +373939 972808 +373972 807994 +374019 868758 +374028 1.04653e+06 +374042 844139 +374083 1.02614e+06 +374108 947047 +374111 935494 +374136 791425 +374153 888978 +374153 938408 +374158 872656 +374183 956800 +374200 812433 +374208 814403 +374217 774378 +374222 810164 +374236 883461 +374242 864883 +374256 815069 +374283 1.21906e+06 +374300 1.22253e+06 +374303 839981 +374308 791233 +374322 1.20778e+06 +374328 815847 +374372 1.01972e+06 +374419 1.22142e+06 +374433 1.00015e+06 +374450 828053 +374450 871439 +374511 869092 +374517 892681 +374539 1.22181e+06 +374556 912094 +374556 946889 +374603 892469 +374614 1.22197e+06 +374636 1.22428e+06 +374644 818139 +374644 845067 +374650 858933 +374689 1.2214e+06 +374694 1.05869e+06 +374703 962633 +374717 1.21129e+06 +374739 1.08504e+06 +374744 972436 +374747 758586 +374767 878200 +374783 816536 +374792 825189 +374800 862939 +374817 1.00843e+06 +374850 1.19965e+06 +374861 1.22233e+06 +374931 871319 +374931 954700 +374947 1.20846e+06 +374950 942764 +374953 862214 +374994 918569 +375019 928208 +375028 975042 +375028 1.22468e+06 +375050 1.05007e+06 +375111 948378 +375178 876903 +375203 1.22275e+06 +375239 956611 +375264 1.20796e+06 +375272 796800 +375275 1.22512e+06 +375297 1.22039e+06 +375311 846619 +375314 767967 +375314 892533 +375317 758233 +375339 958264 +375389 872583 +375422 1.22515e+06 +375428 784575 +375439 947000 +375456 972686 +375458 773281 +375467 879839 +375472 996339 +375536 774606 +375544 889722 +375547 763372 +375569 946217 +375581 945197 +375583 971347 +375586 1.2227e+06 +375597 902939 +375631 1.22324e+06 +375658 973539 +375686 842964 +375697 852528 +375717 837069 +375728 827528 +375739 857400 +375742 1.22378e+06 +375792 1.06148e+06 +375808 774072 +375814 1.01355e+06 +375831 813806 +375831 815372 +375842 1.22365e+06 +375850 790517 +375867 847939 +375881 906289 +375900 775567 +375914 805439 +375950 1.20957e+06 +375958 816361 +375958 1.00443e+06 +375969 1.20865e+06 +375972 906272 +375986 1.22386e+06 +376028 992922 +376036 774917 +376069 875286 +376075 774772 +376133 779050 +376142 818667 +376144 934103 +376150 1.14511e+06 +376194 845781 +376194 888367 +376194 991061 +376211 906403 +376219 821633 +376242 1.0478e+06 +376242 1.09478e+06 +376264 894978 +376300 977822 +376306 1.2241e+06 +376339 794506 +376353 854008 +376361 867175 +376375 765747 +376414 1.20759e+06 +376439 930922 +376439 984308 +376439 987372 +376453 836489 +376456 847722 +376456 915358 +376458 981133 +376486 1.18971e+06 +376547 1.22407e+06 +376578 855911 +376583 976833 +376597 975750 +376614 764194 +376625 1.21874e+06 +376656 827717 +376658 775067 +376719 822842 +376739 808894 +376742 822775 +376775 1.13061e+06 +376789 812106 +376789 1.06353e+06 +376792 954569 +376806 926636 +376808 1.22399e+06 +376811 1.22123e+06 +376819 1.21767e+06 +376831 868714 +376833 879167 +376844 839531 +376853 852222 +376867 979764 +376881 972633 +376903 967819 +376908 757164 +376919 816242 +376922 973372 +376939 858592 +376942 1.22085e+06 +376947 1.22113e+06 +376989 937958 +377006 839739 +377022 1.21935e+06 +377033 822811 +377075 812508 +377103 763800 +377106 821842 +377117 757494 +377131 881867 +377139 971361 +377153 911350 +377194 756658 +377203 1.22526e+06 +377242 898611 +377250 1.22155e+06 +377258 806422 +377272 892167 +377306 818381 +377306 889331 +377339 883433 +377342 793542 +377347 812997 +377361 1.20934e+06 +377383 885406 +377397 818778 +377397 1.21424e+06 +377406 812308 +377417 1.21123e+06 +377431 811231 +377433 877039 +377478 842947 +377497 804631 +377519 890678 +377525 830689 +377528 1.00017e+06 +377531 1.06108e+06 +377533 847667 +377583 812128 +377589 774803 +377600 890772 +377622 848433 +377644 893350 +377661 1.08905e+06 +377667 1.20846e+06 +377692 906247 +377703 1.11601e+06 +377708 812086 +377733 1.13024e+06 +377739 890264 +377742 871133 +377750 1.22418e+06 +377753 879306 +377781 811883 +377792 964669 +377792 975361 +377800 864606 +377800 980194 +377800 1.21977e+06 +377806 804572 +377808 904217 +377814 891192 +377819 756539 +377831 812661 +377839 794431 +377889 971083 +377906 976292 +377931 819878 +377933 799942 +377944 935778 +377964 802978 +377975 797914 +377975 969994 +377975 1.20996e+06 +377975 1.21215e+06 +377992 882611 +378000 973181 +378017 804458 +378031 890275 +378044 1.2227e+06 +378067 1.00348e+06 +378092 854669 +378100 859814 +378106 954367 +378119 1.07664e+06 +378133 820247 +378136 884381 +378144 828072 +378158 811525 +378161 798247 +378172 968619 +378175 892278 +378206 889275 +378217 1.21999e+06 +378228 1.12435e+06 +378228 1.21276e+06 +378239 962889 +378242 820597 +378244 1.22231e+06 +378261 759919 +378286 922006 +378314 1.22284e+06 +378331 891428 +378333 866328 +378344 857319 +378347 973731 +378361 811350 +378361 875900 +378364 812019 +378367 905328 +378392 943544 +378397 947081 +378403 859492 +378406 886092 +378422 1.12827e+06 +378436 824094 +378456 838583 +378486 819936 +378492 1.06926e+06 +378500 997564 +378503 904986 +378503 1.22031e+06 +378511 905206 +378567 924050 +378589 808544 +378592 839186 +378592 1.22484e+06 +378619 846617 +378667 819867 +378672 905931 +378686 976647 +378714 1.09342e+06 +378717 1.22272e+06 +378728 905278 +378736 1.22456e+06 +378769 891144 +378772 1.22179e+06 +378803 862839 +378806 845731 +378811 957331 +378831 870494 +378858 1.22117e+06 +378869 1.22297e+06 +378883 894947 +378967 981783 +378978 889314 +378989 977825 +378994 890519 +379000 867550 +379061 1.22544e+06 +379064 1.22064e+06 +379086 881292 +379094 1.22685e+06 +379100 892358 +379103 853167 +379106 1.22279e+06 +379114 867444 +379136 898219 +379142 919025 +379161 951700 +379167 974222 +379169 952989 +379175 887622 +379214 832597 +379231 905553 +379231 994094 +379236 953458 +379244 953997 +379253 768594 +379256 1.22526e+06 +379331 753792 +379358 1.22347e+06 +379361 992522 +379364 907878 +379369 859917 +379369 869022 +379375 1.07812e+06 +379389 970194 +379403 918808 +379406 1.01254e+06 +379444 874053 +379481 1.2206e+06 +379489 922636 +379508 836258 +379514 867678 +379514 917711 +379533 1.20422e+06 +379578 1.2129e+06 +379586 767583 +379622 986003 +379622 1.22344e+06 +379631 806897 +379647 971472 +379681 913547 +379686 807672 +379717 1.00872e+06 +379725 890533 +379736 820175 +379736 838419 +379736 1.21694e+06 +379736 1.2253e+06 +379747 758342 +379747 815292 +379747 875558 +379747 1.22561e+06 +379772 1.22294e+06 +379781 1.2203e+06 +379797 1.01133e+06 +379806 1.01752e+06 +379811 883292 +379831 890161 +379833 758542 +379839 895894 +379842 1.20381e+06 +379850 1.03543e+06 +379861 1.00989e+06 +379872 1.22588e+06 +379883 857158 +379900 841797 +379917 920936 +379942 838878 +379953 867978 +379967 889200 +379969 1.03531e+06 +379975 1.21711e+06 +379978 1.20269e+06 +379989 861694 +379994 859436 +380014 975083 +380044 1.22298e+06 +380050 1.21805e+06 +380072 896583 +380081 927444 +380128 1.22644e+06 +380144 1.03628e+06 +380147 870364 +380150 1.21639e+06 +380153 890425 +380164 896186 +380172 1.22288e+06 +380228 1.07671e+06 +380239 976694 +380250 780044 +380269 1.21936e+06 +380281 979400 +380281 1.21884e+06 +380292 784769 +380300 790339 +380317 853425 +380331 1.22266e+06 +380372 848967 +380397 1.20232e+06 +380467 937042 +380467 973447 +380492 872742 +380494 773469 +380494 1.22158e+06 +380500 855458 +380522 1.02122e+06 +380525 847300 +380528 811042 +380564 839433 +380608 979294 +380628 914033 +380633 785028 +380639 1.0231e+06 +380667 1.03222e+06 +380669 818194 +380672 1.17229e+06 +380683 788897 +380694 787008 +380722 973453 +380756 755683 +380786 793833 +380803 893819 +380808 818342 +380831 900958 +380839 956342 +380844 998931 +380864 831264 +380872 1.0262e+06 +380875 1.06094e+06 +380903 899383 +380903 922925 +380908 881586 +380917 890503 +380933 885356 +380989 813242 +380992 875789 +380994 883375 +381042 1.22256e+06 +381050 857589 +381075 1.22569e+06 +381089 788578 +381111 858703 +381142 826033 +381161 825958 +381169 784419 +381200 869142 +381231 897017 +381236 857197 +381292 1.04023e+06 +381297 879350 +381303 1.21271e+06 +381344 977697 +381356 961356 +381361 810997 +381372 781881 +381375 1.20459e+06 +381378 892300 +381383 974311 +381400 937267 +381411 856878 +381428 948133 +381450 841114 +381472 980833 +381494 790719 +381503 926178 +381506 812875 +381522 1.21242e+06 +381542 1.213e+06 +381547 912439 +381558 1.2169e+06 +381597 855878 +381597 874483 +381600 856597 +381617 880653 +381619 834289 +381619 1.21611e+06 +381636 1.21149e+06 +381683 811950 +381689 869900 +381694 971064 +381700 877831 +381769 753931 +381778 947111 +381783 857097 +381803 813286 +381806 990983 +381811 813072 +381864 896056 +381867 919469 +381869 813656 +381875 877103 +381906 940292 +381942 855644 +381944 957425 +381950 856519 +381961 872967 +381961 1.20679e+06 +381969 856633 +381981 886844 +382000 858228 +382008 848733 +382019 790086 +382028 756928 +382031 975189 +382039 857253 +382050 875742 +382081 911603 +382097 842531 +382100 813842 +382100 982067 +382117 899942 +382119 852236 +382119 861219 +382119 896825 +382125 857403 +382142 856139 +382142 1.12923e+06 +382153 814247 +382181 814431 +382181 1.03756e+06 +382183 1.08568e+06 +382206 903958 +382211 903789 +382214 824425 +382225 853553 +382233 800947 +382239 868622 +382247 805333 +382289 856775 +382319 815378 +382319 977731 +382322 905628 +382325 1.22636e+06 +382369 859858 +382383 1.22039e+06 +382403 855242 +382431 933817 +382444 969278 +382453 781111 +382453 815672 +382456 870361 +382494 1.22039e+06 +382500 897500 +382511 875811 +382522 855922 +382542 857594 +382544 769639 +382544 1.04609e+06 +382547 856314 +382547 1.21299e+06 +382567 856017 +382575 879936 +382586 943303 +382614 856292 +382667 764542 +382667 855331 +382672 788261 +382678 856717 +382683 903800 +382694 1.08547e+06 +382717 846864 +382719 876878 +382722 855836 +382731 856231 +382739 856344 +382750 856150 +382769 1.1264e+06 +382786 821031 +382794 856500 +382806 952417 +382811 808528 +382825 855744 +382833 855911 +382833 903950 +382856 821958 +382856 858242 +382858 917203 +382911 766361 +382919 1.22457e+06 +382944 903158 +382972 856033 +382972 1.22284e+06 +382978 1.22491e+06 +382989 869550 +383000 831742 +383003 765078 +383017 916328 +383019 841475 +383028 855961 +383050 899942 +383056 856964 +383083 959556 +383106 854875 +383119 840275 +383139 1.22481e+06 +383150 919225 +383167 866958 +383172 889031 +383175 815211 +383219 756206 +383225 752181 +383239 774686 +383239 1.21821e+06 +383264 898769 +383269 1.22706e+06 +383294 891908 +383306 806533 +383308 887258 +383322 874453 +383325 829486 +383336 856536 +383344 864642 +383358 901497 +383364 750853 +383386 873450 +383397 1.227e+06 +383422 862761 +383436 893806 +383450 856156 +383450 982014 +383453 885878 +383456 915014 +383483 925814 +383483 970169 +383489 1.20773e+06 +383497 816328 +383500 947611 +383517 859417 +383519 972042 +383528 1.20932e+06 +383550 983492 +383553 875675 +383556 985806 +383567 1.21987e+06 +383606 755997 +383606 817375 +383642 1.22523e+06 +383644 987644 +383683 816997 +383700 851806 +383708 976639 +383722 965425 +383756 863447 +383775 880561 +383819 789769 +383819 975372 +383822 872128 +383861 974278 +383903 842942 +383903 1.05118e+06 +383908 933344 +383911 753489 +383914 869311 +383931 1.20801e+06 +383939 956028 +383953 754133 +383964 825589 +383969 1.1301e+06 +383975 943514 +383981 857550 +383981 980117 +383989 825783 +383997 913306 +384000 1.05217e+06 +384017 1.2236e+06 +384028 942536 +384039 961814 +384047 826006 +384069 875856 +384075 853789 +384078 786239 +384078 861100 +384086 899919 +384089 1.21371e+06 +384094 805581 +384094 822947 +384108 877614 +384147 789389 +384147 818442 +384167 958528 +384178 825864 +384192 824453 +384200 756881 +384200 820556 +384222 837339 +384275 899136 +384278 824572 +384292 1.05219e+06 +384314 928408 +384325 820203 +384328 903775 +384333 851697 +384342 895503 +384344 821325 +384364 1.22869e+06 +384369 823772 +384392 891628 +384406 1.22713e+06 +384408 929917 +384417 892742 +384428 814806 +384436 902011 +384456 910056 +384494 788692 +384528 999061 +384531 856703 +384558 755778 +384564 755775 +384597 940006 +384600 932025 +384603 752211 +384603 810853 +384614 900917 +384656 1.23008e+06 +384697 1.01752e+06 +384722 818144 +384731 779969 +384783 826381 +384783 1.07876e+06 +384794 946083 +384797 1.01358e+06 +384806 1.02781e+06 +384808 767783 +384817 943542 +384819 907414 +384819 1.00467e+06 +384819 1.20844e+06 +384825 1.00907e+06 +384850 786253 +384858 918503 +384886 813483 +384889 921742 +384897 766825 +384903 816475 +384903 897931 +384903 904869 +384919 872786 +384925 826903 +384961 1.21408e+06 +384972 949503 +385019 1.22995e+06 +385025 906278 +385033 826472 +385069 962617 +385086 906025 +385089 891406 +385094 818400 +385131 904358 +385158 884375 +385161 902103 +385172 752353 +385172 826978 +385181 987778 +385200 899839 +385208 880047 +385222 772939 +385225 827172 +385247 1.18624e+06 +385250 891333 +385250 985333 +385250 1.2197e+06 +385267 877097 +385314 993083 +385322 935219 +385325 767842 +385333 902869 +385339 899889 +385347 1.05998e+06 +385364 848419 +385364 859286 +385367 826831 +385369 903797 +385375 819325 +385386 903350 +385389 904072 +385400 827286 +385403 765847 +385411 902800 +385417 857678 +385419 902328 +385425 757197 +385433 896122 +385450 1.21739e+06 +385458 1.06925e+06 +385467 773369 +385489 866200 +385492 904925 +385503 827781 +385506 903331 +385531 903094 +385536 895383 +385542 903450 +385556 978333 +385561 864683 +385564 755717 +385569 903817 +385581 910119 +385594 835761 +385611 941911 +385614 898972 +385631 760792 +385672 866283 +385675 773283 +385708 901900 +385722 948789 +385731 828303 +385733 1.09549e+06 +385736 976742 +385753 771558 +385753 785028 +385758 1.22449e+06 +385767 921733 +385789 1.22579e+06 +385806 1.21529e+06 +385817 1.21493e+06 +385831 936944 +385833 901250 +385833 904067 +385869 984108 +385892 1.21302e+06 +385897 901200 +385903 769406 +385903 903367 +385908 822831 +385914 752917 +385922 899111 +385925 853178 +385925 903572 +385925 905869 +385950 905461 +385969 905092 +385992 833189 +386000 771625 +386008 904328 +386039 898072 +386050 1.07982e+06 +386056 894358 +386056 896819 +386067 896075 +386067 1.21266e+06 +386072 903833 +386075 903783 +386083 912189 +386086 771408 +386103 893725 +386106 895269 +386106 1.22868e+06 +386122 904633 +386125 903244 +386131 787992 +386153 873544 +386156 891142 +386156 952675 +386158 838086 +386172 890522 +386172 1.21327e+06 +386175 819819 +386175 903492 +386183 905892 +386194 946806 +386242 758547 +386244 769394 +386269 770733 +386269 889456 +386275 925664 +386283 910575 +386286 903194 +386300 1.1212e+06 +386339 958256 +386350 900928 +386356 756103 +386356 904150 +386367 900256 +386369 773114 +386381 845606 +386389 787742 +386403 921222 +386411 756114 +386411 837444 +386425 903236 +386450 828489 +386478 786717 +386497 900931 +386497 903806 +386514 862611 +386533 943486 +386556 837611 +386556 927797 +386581 772500 +386592 871728 +386608 904225 +386611 964917 +386617 864264 +386636 873094 +386644 807100 +386653 784597 +386653 903758 +386658 1.20925e+06 +386664 867911 +386675 770286 +386689 884856 +386703 899844 +386711 969422 +386722 901697 +386728 902992 +386731 807750 +386753 917694 +386764 1.21335e+06 +386767 843303 +386769 869142 +386772 875286 +386772 1.23134e+06 +386781 1.21175e+06 +386786 1.21225e+06 +386800 930928 +386808 851794 +386819 845900 +386822 1.047e+06 +386825 840658 +386825 901569 +386828 1.12148e+06 +386833 902839 +386833 903078 +386858 903239 +386858 1.21371e+06 +386861 765350 +386864 761719 +386886 883542 +386900 753858 +386900 903425 +386906 902872 +386911 1.21448e+06 +386922 1.22016e+06 +386931 902822 +386942 757739 +386947 902783 +386947 1.20814e+06 +386953 903139 +386967 768481 +386975 882236 +387000 902922 +387008 903497 +387011 903622 +387014 901486 +387019 903169 +387025 903433 +387042 772281 +387042 902817 +387042 914372 +387044 932281 +387058 877600 +387072 765314 +387072 1.2128e+06 +387078 770864 +387083 902928 +387106 902981 +387111 981569 +387131 904297 +387133 777956 +387142 854736 +387142 939911 +387144 903672 +387169 878614 +387175 902656 +387183 902922 +387183 950814 +387192 902603 +387192 944583 +387203 920911 +387208 750764 +387208 829583 +387208 902747 +387236 853694 +387236 899558 +387239 770100 +387253 902967 +387264 903586 +387275 903108 +387292 876817 +387292 898831 +387297 1.20798e+06 +387303 828556 +387306 982278 +387308 880853 +387314 799703 +387317 829978 +387317 900803 +387328 763939 +387358 853800 +387358 903639 +387383 771853 +387394 896711 +387400 903264 +387403 902264 +387422 1.08068e+06 +387425 756047 +387431 948253 +387442 903061 +387456 838450 +387458 786425 +387467 1.05178e+06 +387469 902400 +387475 770833 +387478 850672 +387483 899831 +387494 902856 +387508 774756 +387517 769789 +387522 829369 +387544 903311 +387547 828689 +387553 890953 +387553 950022 +387583 830292 +387583 858081 +387594 874156 +387614 1.20586e+06 +387628 937358 +387647 903136 +387647 950078 +387650 768986 +387650 935564 +387714 903708 +387717 840058 +387722 885025 +387725 772214 +387725 1.12083e+06 +387733 888467 +387742 760767 +387742 873078 +387744 751397 +387744 922569 +387750 951861 +387764 765556 +387775 753103 +387800 895981 +387806 955569 +387817 957383 +387819 771467 +387828 846053 +387833 849017 +387839 774700 +387861 829792 +387864 843697 +387864 897775 +387875 942692 +387878 902158 +387892 903225 +387908 1.21235e+06 +387931 774481 +387933 772719 +387933 902672 +387944 835453 +387956 967356 +387997 1.07719e+06 +388006 858417 +388019 813511 +388019 944525 +388033 769900 +388039 769069 +388042 772050 +388047 770472 +388061 871522 +388069 755917 +388072 753972 +388094 769983 +388097 822025 +388106 906997 +388108 949269 +388114 899531 +388114 908528 +388114 911414 +388119 945317 +388133 827269 +388139 769458 +388158 767500 +388183 771436 +388186 817108 +388186 956889 +388189 769989 +388208 785661 +388214 1.02353e+06 +388214 1.21192e+06 +388250 861700 +388250 984750 +388275 910200 +388278 895400 +388283 1.0797e+06 +388294 900628 +388300 768917 +388303 771967 +388328 769597 +388333 769519 +388336 821383 +388339 1.04821e+06 +388342 887722 +388389 774278 +388389 840964 +388403 976111 +388417 765125 +388422 1.06131e+06 +388428 869914 +388444 821372 +388450 768753 +388461 773067 +388467 919478 +388483 900761 +388517 943436 +388528 991472 +388533 913058 +388536 772597 +388561 806550 +388575 768897 +388589 961089 +388597 1.04917e+06 +388611 864872 +388611 900975 +388683 1.07591e+06 +388689 1.17921e+06 +388697 1.06987e+06 +388703 769214 +388711 874414 +388719 771556 +388747 929114 +388783 870858 +388789 860419 +388792 993264 +388794 823806 +388794 829969 +388803 901111 +388808 773011 +388814 948189 +388844 758275 +388850 769161 +388858 945328 +388875 765122 +388878 900847 +388883 897314 +388889 898453 +388906 901842 +388917 1.21292e+06 +388922 894131 +388933 772219 +388942 774314 +388950 770367 +388950 772119 +388953 988594 +388961 769069 +388964 871867 +388967 1.21076e+06 +388975 768306 +388978 1.01752e+06 +388983 900067 +389008 769158 +389008 865253 +389011 772656 +389017 1.07926e+06 +389028 971167 +389061 958158 +389092 900406 +389103 914481 +389106 1.22609e+06 +389125 754283 +389128 772011 +389144 900858 +389172 972136 +389178 839833 +389181 781947 +389186 772314 +389194 973708 +389206 886614 +389208 768719 +389222 1.11933e+06 +389231 942439 +389233 810961 +389236 755781 +389236 768803 +389250 892689 +389258 798469 +389281 769161 +389292 768619 +389314 898389 +389331 769461 +389339 768969 +389342 771778 +389342 808378 +389350 749064 +389350 1.05016e+06 +389378 764603 +389381 769486 +389381 995603 +389386 749422 +389392 769342 +389400 764953 +389414 769653 +389419 835725 +389431 768925 +389431 769569 +389431 845442 +389433 950983 +389453 769519 +389458 846806 +389458 1.1997e+06 +389467 769314 +389478 758847 +389481 817611 +389486 842800 +389489 834058 +389494 848539 +389517 923339 +389519 765783 +389536 947333 +389558 769458 +389561 903597 +389578 1.11859e+06 +389581 762106 +389592 858903 +389592 989683 +389606 890936 +389636 769911 +389636 934147 +389658 770964 +389667 946167 +389683 874056 +389686 773414 +389686 777358 +389689 1.12323e+06 +389694 773864 +389697 768803 +389700 904314 +389703 769422 +389711 770767 +389711 819144 +389717 952350 +389722 970222 +389736 758053 +389736 927431 +389747 748339 +389775 915047 +389778 770078 +389781 1.22838e+06 +389783 764925 +389786 799497 +389792 949683 +389794 765308 +389794 909806 +389806 749083 +389806 769372 +389806 771006 +389819 749583 +389822 946706 +389833 935683 +389858 1.19162e+06 +389864 819736 +389886 769817 +389886 783589 +389892 870822 +389906 770264 +389908 881625 +389917 748153 +389925 791242 +389939 769108 +389939 802322 +389939 1.05056e+06 +389953 1.10161e+06 +389958 889528 +389972 907383 +389975 819742 +389975 844964 +389981 772886 +389989 846267 +389989 895736 +389992 939533 +390006 747997 +390011 1.21021e+06 +390017 766878 +390017 820489 +390019 879089 +390031 769722 +390036 774008 +390036 876128 +390039 819892 +390044 768758 +390053 877392 +390061 856236 +390061 1.11861e+06 +390067 767794 +390078 838086 +390086 944633 +390089 754661 +390100 1.21422e+06 +390122 897911 +390125 846047 +390131 1.047e+06 +390144 748819 +390150 941983 +390167 846008 +390167 962889 +390169 942814 +390172 927372 +390175 1.22057e+06 +390178 850589 +390178 946167 +390181 918969 +390203 1.20817e+06 +390217 820292 +390217 844400 +390222 946317 +390236 946933 +390242 1.22674e+06 +390250 799358 +390250 998792 +390253 844175 +390253 885697 +390256 770767 +390264 769744 +390272 845850 +390275 820339 +390275 839197 +390278 946556 +390283 842178 +390286 749389 +390286 968311 +390294 895242 +390297 843664 +390303 770728 +390306 975939 +390319 765031 +390331 844519 +390344 843903 +390347 769078 +390347 871658 +390356 845692 +390356 1.04297e+06 +390375 946319 +390381 770933 +390383 804675 +390397 769933 +390397 901406 +390406 946167 +390417 760667 +390428 899517 +390431 1.08552e+06 +390431 1.22915e+06 +390444 953944 +390453 821306 +390483 956778 +390508 747583 +390514 845817 +390517 845342 +390536 765694 +390542 840531 +390561 985361 +390569 849014 +390575 769361 +390594 845475 +390597 948833 +390611 948194 +390619 883797 +390619 887481 +390622 789697 +390633 813953 +390639 1.0855e+06 +390644 1.09181e+06 +390681 830144 +390694 872600 +390694 1.00232e+06 +390703 765456 +390708 898561 +390714 845322 +390719 844728 +390719 852519 +390719 915700 +390722 897272 +390725 937169 +390750 844472 +390756 770022 +390758 953931 +390761 769581 +390769 841769 +390775 846031 +390794 770733 +390825 748242 +390833 782183 +390836 845086 +390839 767006 +390839 771531 +390892 893906 +390908 848500 +390911 944153 +390914 844958 +390917 1.04872e+06 +390919 768181 +390919 1.08448e+06 +390925 845475 +390928 846128 +390928 898039 +390936 1.11132e+06 +390953 874058 +390956 1.21551e+06 +390964 796811 +390992 768486 +390997 945783 +391008 1.20952e+06 +391011 747181 +391042 958583 +391064 844789 +391069 764853 +391072 765714 +391081 769981 +391094 876564 +391097 944444 +391097 950875 +391103 1.0835e+06 +391111 769328 +391111 967058 +391128 844728 +391133 755422 +391133 850881 +391136 826114 +391142 946272 +391156 775639 +391175 900442 +391178 772528 +391181 755592 +391200 885433 +391200 903283 +391211 846064 +391211 851314 +391219 977064 +391222 1.04917e+06 +391231 931967 +391233 825331 +391244 843617 +391247 852892 +391250 869794 +391253 1.11818e+06 +391278 1.2155e+06 +391297 898194 +391300 945619 +391308 894919 +391308 1.23165e+06 +391317 755253 +391319 755328 +391325 941983 +391331 884719 +391333 1.00863e+06 +391342 939825 +391350 858133 +391361 959514 +391361 1.03469e+06 +391367 777150 +391367 847092 +391369 766986 +391394 765481 +391397 771756 +391406 1.21616e+06 +391417 949383 +391433 772017 +391444 891086 +391450 843744 +391453 771444 +391458 774172 +391458 926836 +391458 1.2159e+06 +391489 794983 +391489 1.21666e+06 +391492 767756 +391503 1.23207e+06 +391517 779825 +391522 800406 +391525 847481 +391531 770672 +391531 846372 +391533 746933 +391542 945467 +391547 1.22148e+06 +391553 1.11818e+06 +391567 906178 +391569 846133 +391581 755247 +391589 1.08728e+06 +391592 843072 +391597 825269 +391597 1.21748e+06 +391611 803522 +391611 894936 +391617 847492 +391619 844569 +391625 766250 +391631 871992 +391639 1.19766e+06 +391642 894636 +391653 865264 +391667 765083 +391667 907808 +391697 918828 +391744 901431 +391753 842944 +391758 855731 +391772 767433 +391783 873936 +391792 987889 +391831 766406 +391831 945925 +391836 965714 +391847 938797 +391856 781636 +391864 873017 +391872 844464 +391872 844881 +391889 955694 +391908 843636 +391908 990283 +391911 1.06817e+06 +391928 844006 +391950 946819 +391958 952081 +391964 755492 +392008 804044 +392014 859214 +392019 963047 +392022 836117 +392025 944922 +392039 945544 +392047 760517 +392047 844281 +392053 843947 +392058 894044 +392089 760669 +392094 810519 +392094 935175 +392103 921378 +392106 843672 +392122 1.11019e+06 +392128 941225 +392133 970053 +392144 1.22008e+06 +392150 844556 +392153 953125 +392172 766375 +392181 930689 +392183 845508 +392192 1.2106e+06 +392214 944511 +392217 817975 +392231 845869 +392272 928464 +392272 1.11053e+06 +392275 822025 +392281 843542 +392283 766167 +392300 1.21076e+06 +392311 844658 +392319 843783 +392336 845458 +392339 866250 +392342 922806 +392347 992978 +392353 816314 +392369 850947 +392378 946958 +392378 1.20026e+06 +392403 768397 +392417 748156 +392419 764483 +392425 916453 +392458 750356 +392464 824786 +392464 845836 +392475 1.14888e+06 +392478 881633 +392478 957061 +392483 888622 +392486 873819 +392486 949000 +392506 765208 +392508 803125 +392508 1.06292e+06 +392519 844703 +392544 767003 +392561 844181 +392564 893481 +392567 802925 +392581 758375 +392617 1.21015e+06 +392619 848200 +392631 886297 +392633 803200 +392636 816294 +392639 1.03692e+06 +392667 815617 +392672 767986 +392681 844133 +392681 845231 +392683 1.11636e+06 +392692 803125 +392708 938342 +392719 767322 +392725 776369 +392725 915744 +392728 793647 +392736 882436 +392739 815731 +392739 977717 +392775 745750 +392786 939767 +392797 898817 +392806 803447 +392850 809686 +392864 802564 +392867 867625 +392869 844853 +392883 772042 +392886 803061 +392889 778600 +392903 766125 +392906 756347 +392931 839889 +392931 1.03067e+06 +392950 778608 +392958 859508 +392964 807772 +392964 1.19775e+06 +392989 968306 +392992 879925 +392997 756050 +392997 842633 +393000 852222 +393011 892850 +393022 904069 +393025 936772 +393039 857714 +393047 925125 +393061 1.02269e+06 +393078 1.23798e+06 +393092 764753 +393092 772975 +393108 914883 +393111 949222 +393122 846506 +393142 745253 +393142 776281 +393175 745950 +393183 843689 +393194 884528 +393194 895719 +393200 765158 +393222 952667 +393233 777531 +393236 836911 +393267 1.10964e+06 +393269 815486 +393278 745039 +393281 1.20182e+06 +393292 821014 +393331 829825 +393342 764397 +393356 878819 +393372 854836 +393383 764800 +393392 942258 +393397 852044 +393403 744778 +393406 767225 +393408 800192 +393419 787569 +393419 911950 +393433 954600 +393436 902125 +393450 835531 +393483 796711 +393483 974458 +393489 1.10851e+06 +393508 866669 +393508 1.0171e+06 +393519 833828 +393522 1.12576e+06 +393544 841272 +393567 978408 +393575 1.00441e+06 +393578 780403 +393583 934956 +393597 1.11586e+06 +393600 843100 +393603 1.04596e+06 +393633 765208 +393639 1.21692e+06 +393642 744233 +393647 998417 +393672 767956 +393678 943619 +393689 821325 +393689 1.07032e+06 +393703 947822 +393706 909050 +393708 842133 +393714 862611 +393722 1.04856e+06 +393736 769681 +393739 803486 +393742 767228 +393761 771550 +393772 765400 +393794 812586 +393817 752203 +393869 945808 +393878 889606 +393889 890800 +393914 876936 +393917 797486 +393931 793733 +393939 964133 +393942 765239 +393950 865625 +393956 803003 +393958 1.01052e+06 +393978 821294 +393983 793819 +394014 766022 +394022 1.07211e+06 +394036 769506 +394039 758678 +394050 1.14778e+06 +394064 887900 +394097 1.23354e+06 +394100 743650 +394111 949014 +394119 747428 +394125 764639 +394125 1.21712e+06 +394142 774108 +394153 814550 +394167 953333 +394175 766214 +394183 924381 +394186 775039 +394194 767806 +394200 894556 +394228 765850 +394231 850128 +394233 931303 +394239 928014 +394272 752344 +394278 864283 +394283 744961 +394300 778044 +394311 916750 +394344 929381 +394347 845369 +394356 1.21537e+06 +394369 904031 +394381 992647 +394383 942039 +394389 986944 +394406 925450 +394408 789742 +394408 885947 +394433 896517 +394453 838286 +394456 795467 +394458 1.23804e+06 +394464 897808 +394486 764181 +394489 910514 +394494 757167 +394522 747281 +394561 779642 +394561 981058 +394564 879961 +394575 777492 +394586 822319 +394619 821819 +394625 802183 +394650 874500 +394653 957361 +394667 874139 +394694 762047 +394694 768297 +394717 796836 +394728 765233 +394733 827394 +394736 814792 +394736 922097 +394736 1.18776e+06 +394739 829108 +394783 745756 +394800 845519 +394808 844578 +394808 920011 +394811 766442 +394817 1.06038e+06 +394825 1.11495e+06 +394831 883728 +394839 903714 +394847 820792 +394850 801428 +394853 790450 +394861 750261 +394861 773522 +394886 836369 +394889 961697 +394919 872672 +394922 809039 +394950 798153 +394961 881761 +394967 1.21551e+06 +395008 851864 +395008 897678 +395022 985464 +395031 787689 +395031 820847 +395036 801669 +395050 946331 +395069 847453 +395081 915286 +395106 797986 +395114 821636 +395125 984333 +395128 802492 +395136 749250 +395139 1.21555e+06 +395144 764114 +395147 867939 +395161 843764 +395203 890489 +395206 744861 +395208 861678 +395214 857769 +395219 947697 +395222 954006 +395225 887536 +395236 871250 +395244 1.22192e+06 +395250 1.1159e+06 +395258 871125 +395286 746483 +395297 801169 +395297 840867 +395297 1.19813e+06 +395306 790178 +395308 758078 +395308 803436 +395331 773150 +395331 880222 +395347 1.07782e+06 +395350 1.19752e+06 +395358 763486 +395367 871058 +395381 897631 +395392 863692 +395400 824072 +395419 771083 +395425 1.10735e+06 +395464 750253 +395469 1.11455e+06 +395478 816397 +395483 817931 +395483 943297 +395486 1.07656e+06 +395489 892944 +395492 760919 +395500 860797 +395506 1.07324e+06 +395514 1.10387e+06 +395522 797981 +395522 842333 +395522 940406 +395528 879394 +395539 832569 +395581 801819 +395581 860953 +395589 843042 +395592 742436 +395600 760717 +395608 753628 +395631 951214 +395642 809961 +395656 896572 +395656 944478 +395658 789806 +395672 972783 +395675 848161 +395689 771772 +395708 976622 +395717 754675 +395728 1.07536e+06 +395731 742319 +395744 1.06097e+06 +395753 769961 +395778 755892 +395778 822378 +395853 914008 +395856 902519 +395864 1.0643e+06 +395869 937958 +395886 894144 +395900 789500 +395911 973986 +395917 895803 +395917 897464 +395917 899528 +395928 788336 +395950 751706 +395956 748819 +395994 886078 +395994 1.1081e+06 +396000 759417 +396006 778208 +396006 829461 +396011 1.05032e+06 +396019 748431 +396025 820883 +396028 809369 +396031 743406 +396036 933422 +396044 764781 +396047 761156 +396047 768503 +396047 822117 +396047 828292 +396050 833956 +396067 758336 +396078 908050 +396089 777047 +396092 854464 +396108 945992 +396111 876961 +396117 799047 +396128 863742 +396133 1.05016e+06 +396144 787753 +396172 1.0495e+06 +396203 900439 +396206 777592 +396228 872833 +396236 774111 +396247 890189 +396264 1.11439e+06 +396283 1.05049e+06 +396289 902189 +396294 799561 +396297 904561 +396300 1.11634e+06 +396314 1.06522e+06 +396325 787847 +396333 1.05317e+06 +396344 799700 +396356 840708 +396356 849311 +396364 748028 +396375 1.06061e+06 +396400 891928 +396403 852622 +396403 1.06374e+06 +396414 787747 +396417 777203 +396417 1.04959e+06 +396428 741808 +396428 842867 +396442 775861 +396444 808578 +396444 868647 +396456 887381 +396458 799875 +396469 1.05025e+06 +396469 1.06951e+06 +396478 845272 +396478 1.04987e+06 +396486 818533 +396492 818622 +396494 827444 +396511 776911 +396514 753286 +396525 788972 +396528 787628 +396528 837869 +396533 755169 +396536 835639 +396536 917344 +396539 880261 +396547 775731 +396553 1.06828e+06 +396572 893894 +396578 771747 +396581 789286 +396581 837350 +396583 799867 +396600 750925 +396606 955261 +396611 768853 +396617 995700 +396619 741656 +396619 755667 +396636 794056 +396669 757272 +396697 742322 +396700 861314 +396714 981533 +396717 842528 +396733 856986 +396756 898467 +396761 897044 +396764 1.2024e+06 +396794 844292 +396803 874175 +396819 966594 +396831 776964 +396836 757500 +396842 1.10854e+06 +396847 839297 +396847 883064 +396861 749956 +396867 755847 +396883 1.23482e+06 +396892 865225 +396894 841689 +396911 967472 +396928 777450 +396928 787931 +396939 920428 +396942 910389 +396953 742592 +396956 788800 +396978 760631 +396989 781800 +397011 891231 +397017 824269 +397028 751122 +397044 773272 +397047 1.05081e+06 +397056 964167 +397061 842194 +397061 1.05697e+06 +397069 912067 +397083 913583 +397086 902281 +397089 907244 +397103 1.11836e+06 +397111 754706 +397119 888044 +397119 929481 +397128 889969 +397136 756097 +397136 825994 +397147 884722 +397156 756411 +397156 829531 +397156 886325 +397161 838778 +397183 829869 +397194 832653 +397211 822989 +397219 858892 +397253 899106 +397269 763269 +397278 764522 +397286 1.21836e+06 +397294 754683 +397294 1.04831e+06 +397322 748814 +397328 751319 +397339 902289 +397367 775353 +397378 767017 +397383 855719 +397383 1.04323e+06 +397389 798989 +397392 752244 +397392 755983 +397392 1.04984e+06 +397419 922583 +397422 924725 +397425 1.05013e+06 +397428 1.22012e+06 +397436 775542 +397436 939981 +397442 838086 +397444 770883 +397444 845322 +397453 843850 +397458 755469 +397469 925639 +397475 753108 +397475 1.22195e+06 +397478 815167 +397500 755000 +397508 944964 +397508 1.01532e+06 +397519 905350 +397528 790811 +397531 742233 +397531 1.05064e+06 +397536 765917 +397556 948722 +397556 1.05221e+06 +397558 775781 +397561 993236 +397572 896536 +397575 741067 +397589 841917 +397589 1.04427e+06 +397592 949494 +397606 865264 +397611 799817 +397611 868119 +397622 938042 +397625 811156 +397625 872292 +397656 808714 +397658 903989 +397661 755097 +397661 892617 +397661 1.05077e+06 +397669 990314 +397675 896806 +397683 861581 +397686 766800 +397689 820922 +397714 888742 +397761 859572 +397769 896792 +397792 987847 +397811 769636 +397817 928900 +397819 860503 +397831 950897 +397842 749925 +397844 930733 +397850 857694 +397853 759792 +397872 982097 +397894 769983 +397903 777281 +397911 749294 +397914 741956 +397928 873708 +397931 767306 +397931 1.23247e+06 +397942 915231 +397944 751492 +397953 935522 +397956 855264 +397969 885917 +397972 843114 +397975 842536 +397986 879858 +397989 827011 +397992 882831 +397994 884622 +398006 754600 +398017 896436 +398022 750644 +398022 862672 +398028 828064 +398028 1.05087e+06 +398031 798081 +398036 876736 +398058 920414 +398064 838869 +398067 1.01042e+06 +398069 822972 +398072 770117 +398072 820714 +398078 874950 +398089 755492 +398092 754869 +398094 893972 +398097 825222 +398097 863225 +398106 1.20468e+06 +398114 749833 +398119 771375 +398122 852089 +398125 851717 +398128 793569 +398136 790250 +398161 1.11855e+06 +398169 751556 +398169 912422 +398181 970506 +398183 1.00528e+06 +398192 754189 +398200 750067 +398208 840194 +398219 758278 +398222 1.04933e+06 +398231 787183 +398242 749981 +398244 976322 +398247 797547 +398253 836344 +398267 750158 +398269 805667 +398275 754147 +398278 779036 +398289 848903 +398303 752408 +398308 772314 +398311 905594 +398314 757578 +398339 998911 +398342 960639 +398367 844114 +398367 1.04959e+06 +398367 1.05037e+06 +398381 749653 +398381 751531 +398383 854389 +398386 860253 +398394 750739 +398403 825461 +398403 889547 +398411 966469 +398428 828047 +398433 863978 +398439 750231 +398439 841247 +398442 775586 +398442 895394 +398453 826008 +398461 845397 +398467 757119 +398467 799000 +398481 861725 +398483 810369 +398489 868022 +398494 753561 +398514 1.04998e+06 +398522 750683 +398525 894086 +398525 955356 +398528 894633 +398536 831831 +398536 892419 +398539 890839 +398539 891661 +398556 767078 +398556 767689 +398569 847933 +398583 748033 +398597 866425 +398600 753447 +398600 808156 +398611 819069 +398631 790583 +398636 770561 +398639 864669 +398647 750556 +398653 776128 +398658 751792 +398664 750286 +398675 750950 +398681 1.04971e+06 +398692 753828 +398728 899211 +398744 768661 +398769 870444 +398772 750650 +398772 797022 +398775 843022 +398781 751211 +398781 839369 +398783 750931 +398783 799250 +398789 829508 +398811 753242 +398814 830931 +398831 767108 +398842 827536 +398842 874086 +398850 906558 +398856 1.04987e+06 +398864 769850 +398878 900078 +398892 840267 +398892 943617 +398900 754758 +398900 861572 +398906 841989 +398906 887281 +398908 750733 +398908 752842 +398911 749222 +398914 750381 +398917 751167 +398917 753000 +398919 855769 +398922 747025 +398922 997067 +398925 797472 +398936 896047 +398939 968792 +398956 876519 +398964 801794 +398964 824203 +398967 799747 +398969 761639 +398975 830869 +398978 843064 +398992 820064 +398994 766406 +399000 752894 +399000 825342 +399008 750850 +399017 753289 +399019 753503 +399019 846750 +399022 958006 +399033 844856 +399044 844017 +399064 752719 +399089 766372 +399097 753239 +399097 878211 +399111 851617 +399117 752775 +399122 752542 +399136 868011 +399144 939619 +399147 882733 +399161 765847 +399167 753881 +399175 797175 +399181 750717 +399183 752594 +399203 807433 +399206 789581 +399206 1.05086e+06 +399214 752883 +399219 885719 +399231 772989 +399242 838089 +399258 751200 +399267 740775 +399267 741342 +399278 1.22178e+06 +399283 752742 +399286 749442 +399289 853703 +399292 752967 +399303 772483 +399322 858481 +399325 779992 +399325 889511 +399328 890619 +399336 824725 +399356 914097 +399358 741714 +399361 840256 +399375 776614 +399381 752722 +399386 888656 +399389 741933 +399389 752558 +399403 820133 +399417 948300 +399419 741503 +399419 742047 +399425 745444 +399442 740733 +399444 899372 +399453 799958 +399456 752617 +399472 750669 +399478 810575 +399481 743611 +399486 741375 +399486 874597 +399492 759739 +399508 862619 +399511 902122 +399522 751642 +399525 767517 +399531 1.119e+06 +399536 741983 +399542 895486 +399542 1.12119e+06 +399547 759972 +399547 828122 +399556 849175 +399556 860139 +399569 858053 +399583 841722 +399586 759197 +399594 825958 +399606 756058 +399608 897239 +399611 829989 +399614 1.0551e+06 +399617 824914 +399625 746792 +399625 767281 +399625 843281 +399633 752506 +399667 758000 +399667 828856 +399675 872775 +399678 847092 +399681 753417 +399686 891622 +399689 829378 +399697 815367 +399700 812994 +399703 740692 +399708 807508 +399719 746833 +399719 765203 +399742 758203 +399747 938008 +399756 1.11784e+06 +399778 796147 +399778 1.05131e+06 +399781 767333 +399783 861181 +399786 820036 +399814 740667 +399819 888228 +399825 772497 +399831 758242 +399831 761844 +399836 768228 +399853 1.0482e+06 +399861 882589 +399867 830617 +399869 951447 +399872 907633 +399881 807317 +399881 811767 +399928 747881 +399936 817342 +399936 1.05089e+06 +399947 844081 +399956 826744 +399958 866200 +399964 1.11842e+06 +399967 749931 +399967 795861 +399969 767069 +399975 857467 +399978 763544 +400017 768506 +400025 799983 +400064 757036 +400069 881581 +400083 752608 +400083 790783 +400089 771158 +400103 799011 +400108 892822 +400114 750153 +400114 783736 +400144 743117 +400150 1.0527e+06 +400158 741453 +400161 810728 +400175 904242 +400178 795897 +400181 807344 +400186 785042 +400192 828794 +400208 980697 +400214 1.22099e+06 +400217 767283 +400228 824447 +400242 798908 +400247 801003 +400250 880733 +400272 808153 +400278 748694 +400278 885733 +400289 756211 +400292 810392 +400297 746189 +400314 909606 +400322 859125 +400331 796617 +400333 831583 +400336 765047 +400347 879581 +400361 746183 +400361 755142 +400364 889569 +400375 1.07912e+06 +400378 763058 +400392 764311 +400392 910692 +400394 842033 +400411 868744 +400419 754767 +400422 876386 +400428 914975 +400444 1.11731e+06 +400456 860086 +400456 878306 +400467 941356 +400469 796547 +400481 901550 +400483 864692 +400492 1.01532e+06 +400497 849397 +400503 1.05049e+06 +400506 749539 +400506 775206 +400514 874333 +400514 945239 +400525 806286 +400531 1.11673e+06 +400547 882517 +400553 840261 +400569 765525 +400581 824014 +400589 1.06388e+06 +400608 956017 +400614 876381 +400631 767042 +400639 807211 +400650 877019 +400653 749194 +400653 800239 +400675 745311 +400681 749011 +400681 825197 +400683 858483 +400692 807839 +400697 753167 +400706 807611 +400711 748653 +400717 740547 +400736 1.04642e+06 +400756 798983 +400758 1.02223e+06 +400764 829439 +400789 936164 +400792 753019 +400794 798658 +400811 750900 +400819 830253 +400831 897381 +400833 798483 +400847 1.04812e+06 +400847 1.04939e+06 +400861 918131 +400861 1.05939e+06 +400869 797508 +400875 805706 +400875 870597 +400878 1.0881e+06 +400883 912836 +400886 829167 +400889 985192 +400911 740483 +400911 795878 +400931 830181 +400942 759117 +400953 876475 +400958 751256 +400958 807247 +400961 989522 +400975 993617 +400978 742181 +400992 1.04937e+06 +401003 795872 +401003 798408 +401003 895908 +401006 748522 +401011 800675 +401017 760856 +401028 846331 +401036 798694 +401053 856803 +401072 808414 +401075 832675 +401078 740569 +401083 837525 +401083 961542 +401083 1.04519e+06 +401092 910175 +401097 765036 +401100 867719 +401106 882072 +401108 767161 +401108 770353 +401119 800175 +401125 855969 +401125 1.04936e+06 +401131 872625 +401139 878731 +401139 879561 +401150 1.11654e+06 +401161 877783 +401164 882433 +401167 800086 +401172 821194 +401172 843539 +401178 804106 +401183 771903 +401189 788183 +401203 1.23822e+06 +401211 887453 +401211 905631 +401214 753403 +401214 820108 +401222 886453 +401222 966622 +401222 1.02725e+06 +401236 876533 +401239 860133 +401244 798800 +401244 876300 +401250 798667 +401250 916250 +401261 740497 +401261 829292 +401292 798683 +401292 994550 +401300 765708 +401303 755153 +401303 1.11578e+06 +401311 952314 +401314 750678 +401319 740350 +401322 844308 +401350 862206 +401364 747292 +401372 971803 +401375 998292 +401378 798983 +401392 748150 +401394 966589 +401408 977225 +401411 806883 +401417 873947 +401447 842425 +401461 747122 +401469 789122 +401483 798881 +401483 893647 +401489 1.02962e+06 +401494 810664 +401497 754022 +401497 771286 +401500 742139 +401503 740314 +401511 762514 +401511 799078 +401519 749169 +401528 766031 +401533 740286 +401536 826853 +401536 889644 +401539 797414 +401544 752219 +401544 807106 +401567 758331 +401567 762025 +401572 760508 +401572 763072 +401597 790667 +401606 1.03214e+06 +401614 790292 +401633 763953 +401633 1.10402e+06 +401639 959447 +401653 1.1161e+06 +401664 975856 +401667 807000 +401669 749181 +401672 1.05101e+06 +401675 921725 +401697 805939 +401708 740278 +401719 849814 +401733 798578 +401736 802378 +401736 854942 +401742 751072 +401744 749231 +401756 1.01012e+06 +401758 860217 +401767 755481 +401778 745839 +401783 740222 +401783 751289 +401786 834356 +401786 1.22235e+06 +401794 1.18472e+06 +401797 761792 +401808 754294 +401825 806914 +401831 798244 +401842 755383 +401856 754519 +401872 767303 +401878 851275 +401881 869039 +401889 852042 +401906 747028 +401917 852689 +401922 740164 +401933 853864 +401933 863606 +401944 1.10061e+06 +401947 925831 +401950 779833 +401950 866672 +401953 884042 +401964 762014 +401964 807753 +401989 754767 +401994 848053 +402000 740283 +402014 771892 +402017 980675 +402019 848092 +402019 1.00625e+06 +402022 740125 +402022 896981 +402022 931250 +402031 799264 +402053 742142 +402056 805569 +402067 751000 +402078 750731 +402078 799472 +402089 789839 +402097 797672 +402106 812664 +402108 752786 +402108 767914 +402114 761236 +402114 885061 +402144 846369 +402150 750111 +402150 1.04822e+06 +402153 782447 +402153 860264 +402169 747433 +402178 945381 +402186 808731 +402192 796097 +402200 744736 +402203 740125 +402203 889619 +402225 844844 +402228 857789 +402231 835575 +402233 769539 +402247 1.05271e+06 +402264 806517 +402269 789367 +402275 903594 +402297 1.00838e+06 +402300 909500 +402306 1.04072e+06 +402314 756344 +402319 927083 +402322 768850 +402331 761375 +402333 740161 +402333 910625 +402339 1.11658e+06 +402344 1.00417e+06 +402353 768417 +402361 740011 +402389 891231 +402394 756514 +402397 769203 +402397 788353 +402403 795769 +402411 760567 +402411 768944 +402414 752842 +402417 881842 +402419 743017 +402428 778933 +402431 740011 +402431 792378 +402433 886425 +402436 788492 +402450 755956 +402453 756500 +402456 748464 +402464 802117 +402469 867250 +402472 796775 +402483 996331 +402497 788492 +402503 1.03799e+06 +402525 756778 +402561 754642 +402589 768322 +402589 1.03623e+06 +402594 892333 +402600 742742 +402625 801875 +402628 769142 +402628 856758 +402639 744917 +402644 758044 +402647 806264 +402653 767086 +402681 967467 +402686 929531 +402692 798900 +402694 745236 +402694 857281 +402700 873867 +402708 798994 +402708 807817 +402719 806097 +402719 818597 +402722 816061 +402728 809969 +402736 764064 +402736 768847 +402750 769158 +402750 1.06958e+06 +402753 768483 +402753 817511 +402761 748494 +402769 858419 +402783 795450 +402794 753875 +402794 865108 +402808 742517 +402819 1.00165e+06 +402819 1.04777e+06 +402822 860411 +402842 841556 +402858 759847 +402858 766506 +402872 788897 +402883 752094 +402883 872939 +402892 850289 +402903 740181 +402908 788692 +402911 795472 +402917 793894 +402917 909189 +402922 798819 +402942 872489 +402942 904278 +402961 740514 +402967 784500 +402969 1.11694e+06 +402972 743586 +402986 830681 +402986 894850 +402989 751814 +402989 788925 +402992 839689 +402994 1.09988e+06 +403000 900608 +403008 852419 +403014 795392 +403031 969886 +403042 739928 +403042 741008 +403042 999000 +403044 826964 +403050 878006 +403056 896028 +403058 880211 +403064 1.21231e+06 +403078 759658 +403083 881558 +403083 1.05081e+06 +403089 765936 +403106 759397 +403106 789389 +403111 783244 +403117 753256 +403119 839158 +403133 889736 +403139 855006 +403144 891697 +403147 883500 +403156 798314 +403161 745142 +403172 746203 +403181 740156 +403200 756106 +403211 793797 +403217 806100 +403219 753283 +403231 793128 +403244 797014 +403247 798925 +403247 805778 +403253 809014 +403272 760114 +403275 805961 +403278 906069 +403281 758911 +403281 796156 +403283 747911 +403289 796414 +403294 759656 +403294 765156 +403294 1.04855e+06 +403300 760808 +403303 739819 +403325 984483 +403336 756378 +403336 759478 +403353 820069 +403356 759272 +403358 783911 +403358 798700 +403367 740475 +403367 754694 +403369 1.04912e+06 +403372 764758 +403375 759800 +403375 797136 +403386 856444 +403386 953931 +403392 767258 +403403 853508 +403408 764117 +403433 1.1172e+06 +403444 866653 +403453 756333 +403456 763903 +403461 742883 +403461 948722 +403469 925689 +403478 798644 +403486 746594 +403486 788839 +403489 851500 +403489 1.04701e+06 +403494 762136 +403506 798864 +403514 843739 +403514 903244 +403517 761347 +403519 887642 +403525 744406 +403539 753053 +403553 800497 +403561 801103 +403583 814344 +403592 914344 +403606 740386 +403611 837597 +403614 739744 +403617 761844 +403642 749517 +403642 1.11738e+06 +403647 800225 +403650 804142 +403658 749433 +403667 961958 +403672 769314 +403672 787917 +403678 810056 +403697 806342 +403706 799750 +403708 802350 +403717 752019 +403719 739994 +403719 752931 +403722 979711 +403725 895472 +403733 756294 +403742 867689 +403753 807039 +403756 823972 +403764 1.04692e+06 +403767 744250 +403769 1.11795e+06 +403772 1.05521e+06 +403781 939367 +403789 745469 +403792 876686 +403794 860886 +403803 790756 +403814 798600 +403817 824925 +403819 803931 +403831 798067 +403844 778825 +403856 797592 +403858 1.2228e+06 +403875 1.04561e+06 +403881 759183 +403886 786725 +403886 854994 +403908 754925 +403908 798103 +403917 743989 +403917 1.1185e+06 +403922 799003 +403922 800911 +403928 958386 +403931 813467 +403931 843761 +403931 901547 +403933 813339 +403933 824858 +403936 779414 +403936 797864 +403936 969225 +403939 799122 +403944 841728 +403947 814072 +403956 798389 +403958 800333 +403958 810850 +403964 913389 +403969 791519 +403969 888706 +403972 913847 +403978 1.05074e+06 +403981 770233 +403983 798900 +403986 794222 +403989 798411 +403997 746347 +404008 935803 +404019 835453 +404022 755875 +404031 797783 +404036 739919 +404058 798253 +404058 799122 +404064 755022 +404075 896428 +404078 740347 +404078 749786 +404086 759219 +404086 798392 +404086 800836 +404089 829556 +404092 925675 +404106 753786 +404125 798794 +404128 847764 +404131 795706 +404142 790203 +404142 799881 +404142 822411 +404147 742300 +404147 743658 +404153 856506 +404156 741914 +404164 1.20652e+06 +404167 868750 +404169 865947 +404172 798653 +404175 862714 +404183 1.01371e+06 +404189 805897 +404197 798503 +404203 917194 +404208 745611 +404208 894144 +404233 784342 +404233 1.04709e+06 +404236 798831 +404256 800942 +404258 786203 +404258 869081 +404258 897792 +404264 832969 +404264 907925 +404267 885261 +404272 783892 +404272 861256 +404311 792611 +404317 981056 +404331 742000 +404333 807719 +404336 893131 +404339 830739 +404344 800825 +404344 849778 +404347 892178 +404350 800664 +404369 843797 +404378 813733 +404383 798433 +404400 816992 +404403 953775 +404403 993694 +404406 799961 +404417 741303 +404417 753419 +404417 798822 +404456 950658 +404461 800678 +404464 741786 +404464 743864 +404469 759667 +404483 1.22297e+06 +404503 831886 +404511 853700 +404514 743083 +404533 1.11777e+06 +404539 758183 +404556 1.09528e+06 +404567 742469 +404578 921711 +404592 743614 +404592 906717 +404592 963772 +404597 785919 +404597 795233 +404603 880953 +404608 799511 +404614 836700 +404642 806011 +404650 878964 +404656 800658 +404672 876683 +404678 841806 +404681 769322 +404700 753208 +404711 838928 +404742 957333 +404756 854944 +404769 930031 +404772 1.09586e+06 +404775 1.04901e+06 +404778 742911 +404781 785411 +404781 859667 +404783 991264 +404792 792000 +404797 846283 +404797 856278 +404800 799786 +404803 863947 +404814 789189 +404814 969603 +404819 757581 +404822 785519 +404842 889936 +404847 780106 +404850 787250 +404850 1.06831e+06 +404861 744522 +404864 794517 +404864 861336 +404872 856131 +404875 944108 +404897 814458 +404897 1.11938e+06 +404906 870964 +404914 799050 +404919 1.07257e+06 +404933 798608 +404936 843147 +404944 896517 +404950 819847 +404967 806069 +404986 989475 +404992 743994 +405006 828936 +405008 759703 +405008 800678 +405031 786306 +405033 757017 +405042 799492 +405064 798433 +405067 742658 +405067 837481 +405083 858256 +405083 868417 +405100 800947 +405108 756033 +405114 753908 +405122 748597 +405122 1.11474e+06 +405142 889906 +405153 1.07546e+06 +405158 755556 +405169 1.01643e+06 +405183 801669 +405186 783950 +405194 808842 +405197 872478 +405206 814742 +405208 925278 +405211 873783 +405217 980550 +405219 1.11938e+06 +405222 800344 +405247 1.11863e+06 +405261 750619 +405267 996333 +405269 975956 +405275 894925 +405289 794617 +405294 891772 +405303 1.04711e+06 +405308 1.12298e+06 +405317 801692 +405322 914147 +405344 835206 +405364 801847 +405369 893575 +405394 754972 +405394 769611 +405408 745881 +405417 797994 +405431 743636 +405433 787881 +405433 791625 +405489 768122 +405489 784294 +405489 845703 +405492 828275 +405500 913847 +405508 948192 +405511 801931 +405528 905061 +405531 797575 +405533 745319 +405539 852775 +405544 819181 +405544 1.23182e+06 +405556 759822 +405561 908658 +405575 828625 +405581 900350 +405589 791514 +405622 1.11929e+06 +405631 802086 +405639 888989 +405644 871069 +405647 878931 +405667 767008 +405669 886164 +405675 882478 +405675 896406 +405678 841936 +405683 745389 +405686 750950 +405694 746333 +405694 774031 +405697 773972 +405697 797650 +405717 807267 +405719 857692 +405725 744931 +405725 898133 +405728 810858 +405733 766917 +405736 802358 +405742 746103 +405747 769894 +405764 1.24263e+06 +405772 742286 +405789 861903 +405792 744119 +405794 753411 +405800 797669 +405814 795667 +405825 1.04731e+06 +405833 909692 +405844 1.02302e+06 +405853 1.05084e+06 +405861 795317 +405861 983881 +405867 1.22391e+06 +405875 866750 +405883 736583 +405883 824250 +405886 831286 +405889 737294 +405892 744722 +405892 765528 +405892 802253 +405900 985058 +405903 998606 +405917 1.11883e+06 +405942 751947 +405947 815269 +405961 795558 +405969 880381 +405981 795614 +405983 760936 +405983 1.24156e+06 +406000 1.12464e+06 +406006 839753 +406011 813614 +406014 753956 +406014 797600 +406028 787089 +406028 795650 +406028 806492 +406028 868672 +406033 783250 +406042 736558 +406044 956575 +406050 777258 +406056 978589 +406058 889872 +406081 742781 +406081 797414 +406086 865400 +406097 1.11938e+06 +406111 1.11899e+06 +406114 798372 +406117 767189 +406128 894592 +406131 805631 +406150 896222 +406156 737300 +406167 873208 +406172 855047 +406175 896003 +406183 806044 +406186 805775 +406189 980969 +406197 1.11809e+06 +406200 825108 +406200 966289 +406211 904619 +406211 986572 +406214 791528 +406219 742450 +406225 808381 +406228 737247 +406228 939339 +406239 737089 +406256 1.03207e+06 +406264 753461 +406267 761931 +406283 763875 +406283 876961 +406297 892747 +406297 913150 +406300 744278 +406300 893325 +406300 1.00515e+06 +406306 761714 +406308 929244 +406319 737131 +406336 744078 +406350 802283 +406353 822333 +406356 1.04755e+06 +406358 782961 +406361 736819 +406361 911672 +406364 829692 +406367 791444 +406367 802403 +406369 975850 +406378 744514 +406386 736406 +406386 775689 +406386 1.11938e+06 +406403 917428 +406408 743111 +406408 743839 +406408 748817 +406411 1.02626e+06 +406414 887833 +406417 748364 +406419 736700 +406422 798511 +406425 742858 +406428 787731 +406428 915644 +406431 736961 +406431 775808 +406431 1.1128e+06 +406442 974500 +406444 804164 +406458 805981 +406461 1.11497e+06 +406469 836097 +406472 895911 +406472 971131 +406500 814522 +406503 896519 +406511 812992 +406531 815811 +406536 972858 +406539 750869 +406542 841508 +406547 736722 +406547 754750 +406547 761011 +406553 743903 +406572 961861 +406575 735836 +406578 849519 +406583 743000 +406586 736417 +406589 743478 +406594 743233 +406597 754772 +406597 802394 +406600 1.11996e+06 +406608 862419 +406625 787803 +406628 735519 +406631 868694 +406639 742111 +406639 775961 +406642 737089 +406642 742636 +406642 904347 +406644 742647 +406658 734886 +406661 806233 +406661 895800 +406669 751578 +406669 947211 +406669 1.11887e+06 +406672 813550 +406678 1.11938e+06 +406686 735275 +406686 741147 +406689 1.11824e+06 +406700 754958 +406706 782389 +406722 743578 +406733 805767 +406733 845189 +406733 921619 +406739 857214 +406764 742911 +406767 818706 +406767 958589 +406786 735894 +406786 752372 +406789 734175 +406789 736744 +406789 910728 +406792 804950 +406800 965061 +406800 1.22351e+06 +406803 734556 +406806 734747 +406806 1.2237e+06 +406814 734003 +406814 820219 +406825 931208 +406828 854272 +406833 744431 +406836 735106 +406842 746361 +406844 803292 +406844 896800 +406850 737022 +406856 761958 +406858 926772 +406861 754972 +406867 733739 +406867 841378 +406872 802717 +406875 802542 +406911 735636 +406914 735339 +406917 811814 +406917 897950 +406925 896278 +406928 837856 +406933 735081 +406936 751906 +406936 895889 +406953 803050 +406956 733261 +406958 800119 +406964 761692 +406967 749411 +406975 734256 +406983 744019 +406994 990811 +407000 802683 +407000 1.1181e+06 +407003 735933 +407008 734625 +407008 737133 +407011 742306 +407022 802867 +407036 894072 +407039 1.05008e+06 +407044 963872 +407047 736506 +407061 733067 +407061 838439 +407064 839214 +407064 933650 +407069 749564 +407069 815983 +407072 736764 +407086 732817 +407089 843536 +407092 1.12101e+06 +407106 902661 +407139 775908 +407139 1.16103e+06 +407142 733819 +407142 737006 +407142 740064 +407147 942350 +407150 880061 +407164 733222 +407167 914500 +407172 734842 +407181 733547 +407186 745697 +407189 1.11888e+06 +407192 736889 +407194 748361 +407194 761161 +407194 993717 +407206 734406 +407208 740178 +407214 892728 +407219 954806 +407236 737053 +407242 737156 +407244 815222 +407250 732458 +407256 753944 +407258 735147 +407264 788069 +407267 736347 +407278 730981 +407281 740781 +407294 760858 +407297 732108 +407297 811056 +407303 803103 +407303 919622 +407311 948994 +407311 1.22941e+06 +407317 1.06283e+06 +407319 731861 +407322 906644 +407336 778858 +407336 827900 +407350 736883 +407356 741728 +407358 730825 +407361 732631 +407372 1.14037e+06 +407383 730511 +407386 851717 +407386 995372 +407392 890164 +407394 743044 +407394 803294 +407397 937475 +407403 753100 +407408 736631 +407408 743842 +407408 752575 +407414 743600 +407417 887197 +407419 950381 +407431 731931 +407433 888814 +407439 740328 +407442 734825 +407453 867647 +407464 741567 +407469 909039 +407472 731703 +407472 885147 +407472 895739 +407478 785347 +407483 741622 +407483 756122 +407483 956472 +407483 988444 +407486 847911 +407492 736411 +407494 868717 +407503 786711 +407517 763364 +407517 818394 +407517 924147 +407519 803194 +407519 884111 +407525 736108 +407536 860689 +407536 882919 +407539 733608 +407539 752625 +407539 798103 +407542 755992 +407544 863567 +407553 736672 +407564 736453 +407567 881911 +407569 729397 +407569 933186 +407581 870417 +407583 736353 +407583 825156 +407589 735700 +407594 825903 +407597 744175 +407608 871508 +407608 1.1189e+06 +407617 733297 +407625 734536 +407631 769397 +407633 872936 +407656 730156 +407656 953719 +407664 894678 +407667 728525 +407667 879922 +407669 729967 +407672 742053 +407683 735256 +407683 741458 +407692 731156 +407692 800631 +407692 875639 +407694 740208 +407694 838228 +407700 1.24142e+06 +407703 874453 +407706 737181 +407706 742331 +407714 846156 +407719 983692 +407733 736436 +407739 742739 +407742 729433 +407744 785536 +407744 970503 +407756 777928 +407758 746011 +407761 877364 +407764 734678 +407775 929436 +407778 899664 +407786 900147 +407794 740242 +407797 978119 +407800 803386 +407808 736769 +407808 997411 +407811 732467 +407811 737250 +407811 766733 +407839 762306 +407842 746972 +407858 747806 +407861 737142 +407867 737269 +407869 730094 +407869 737372 +407872 812828 +407875 827367 +407878 740147 +407878 743886 +407883 741336 +407886 736000 +407886 736478 +407886 842039 +407889 765592 +407892 836433 +407894 740569 +407906 732022 +407906 893606 +407914 762839 +407919 740042 +407933 734156 +407933 764728 +407933 778603 +407936 736275 +407936 741506 +407942 736608 +407942 737489 +407944 801369 +407953 814736 +407958 743153 +407961 891972 +407972 759697 +407978 737000 +407978 858206 +407981 783975 +407986 736803 +407986 742394 +407989 768625 +407989 813786 +407989 816956 +407994 762128 +407994 780544 +407997 736514 +407997 756622 +407997 764281 +408000 966667 +408003 727903 +408006 737289 +408014 756106 +408017 835106 +408019 728414 +408022 1.24162e+06 +408025 737047 +408031 726150 +408031 749900 +408042 740125 +408042 763408 +408042 764653 +408042 821958 +408044 904017 +408050 819353 +408053 742042 +408067 737039 +408067 741858 +408072 736817 +408075 911128 +408083 829756 +408103 795297 +408106 778186 +408119 741247 +408122 730789 +408125 761419 +408153 730456 +408161 736978 +408164 736375 +408164 795222 +408167 964300 +408175 730006 +408178 800144 +408192 831306 +408197 737356 +408203 762011 +408203 879778 +408206 742942 +408206 985997 +408214 739881 +408217 744814 +408222 741603 +408231 726100 +408236 733992 +408236 759806 +408239 735481 +408244 726667 +408244 742850 +408250 783514 +408250 911564 +408256 732031 +408256 736986 +408258 742094 +408261 735025 +408264 741072 +408269 739761 +408272 832814 +408275 762072 +408292 853356 +408297 742406 +408297 750781 +408311 730300 +408317 758828 +408317 768361 +408325 1.15762e+06 +408336 757142 +408336 953081 +408339 740975 +408339 805406 +408342 740092 +408342 803225 +408347 736958 +408350 731317 +408356 803997 +408375 796322 +408381 857303 +408386 735656 +408389 898864 +408397 742769 +408403 740911 +408406 725819 +408408 743022 +408411 740456 +408417 962933 +408419 1.01725e+06 +408428 732933 +408431 737153 +408436 817642 +408447 737022 +408450 806147 +408453 733356 +408456 740883 +408475 776864 +408481 739981 +408481 752919 +408483 799622 +408486 768200 +408486 1.11906e+06 +408489 736453 +408500 782708 +408508 739706 +408517 737192 +408519 731544 +408528 731156 +408528 740425 +408531 741142 +408533 734119 +408539 748294 +408542 1.06965e+06 +408556 1.11892e+06 +408558 732011 +408561 731878 +408567 734700 +408567 741289 +408569 740219 +408581 740811 +408583 731000 +408583 741642 +408589 934972 +408597 999869 +408611 798956 +408614 739886 +408617 896786 +408622 736342 +408625 767947 +408625 856017 +408639 802592 +408644 758114 +408644 765528 +408644 864997 +408644 913144 +408656 735325 +408656 752069 +408658 907483 +408661 860775 +408664 730361 +408664 873636 +408667 1.24082e+06 +408672 980039 +408678 868789 +408681 734261 +408681 777469 +408681 975917 +408686 730019 +408686 752553 +408686 823183 +408689 725181 +408689 733656 +408689 742086 +408694 845842 +408700 961403 +408708 735114 +408711 747344 +408711 984678 +408714 734572 +408717 1.11891e+06 +408728 787244 +408758 745428 +408758 757328 +408758 814025 +408761 735769 +408761 740303 +408767 733250 +408772 807556 +408778 798467 +408778 882692 +408781 888611 +408789 769872 +408794 751842 +408803 879550 +408806 752150 +408806 851664 +408814 741136 +408814 826619 +408817 945617 +408822 740836 +408825 1.2166e+06 +408831 854975 +408831 895025 +408831 1.23983e+06 +408839 745625 +408842 723900 +408842 729378 +408853 739528 +408858 740439 +408858 782211 +408861 732578 +408869 735556 +408881 803383 +408883 738286 +408883 806942 +408894 1.1188e+06 +408897 741953 +408897 782286 +408897 815978 +408908 724642 +408908 774769 +408908 928150 +408917 767978 +408928 739731 +408931 745822 +408939 1.11901e+06 +408947 744333 +408953 736014 +408953 738075 +408953 838889 +408975 740164 +408983 956711 +408989 740931 +408989 747069 +408994 973992 +408997 734153 +409003 807642 +409008 733436 +409011 745147 +409022 817342 +409025 740622 +409025 744075 +409028 747094 +409033 731583 +409033 734603 +409039 741189 +409044 890344 +409050 742103 +409064 842967 +409069 970986 +409072 740756 +409083 902847 +409097 738083 +409100 759917 +409106 735625 +409114 737828 +409114 906472 +409117 859244 +409117 871553 +409125 733014 +409133 759669 +409133 777786 +409153 811061 +409167 741722 +409167 847028 +409169 726625 +409175 770481 +409175 965281 +409178 1.11399e+06 +409181 1.11871e+06 +409186 922228 +409192 892911 +409194 840569 +409222 894861 +409225 900144 +409228 810192 +409231 750969 +409231 809939 +409250 983417 +409253 730478 +409253 739633 +409253 742769 +409256 731414 +409258 746353 +409269 913994 +409275 739978 +409278 733603 +409278 737522 +409281 759150 +409286 740403 +409294 1.0016e+06 +409297 897575 +409297 949758 +409311 738992 +409319 909469 +409322 843389 +409328 724147 +409328 746597 +409328 803636 +409350 740194 +409353 879344 +409356 741867 +409367 871508 +409378 723014 +409381 738325 +409403 741322 +409406 739972 +409414 739597 +409417 777853 +409436 789711 +409444 740758 +409461 874533 +409464 730697 +409467 1.24099e+06 +409469 730300 +409478 903100 +409478 903711 +409481 797431 +409481 839611 +409486 737331 +409492 741542 +409494 725819 +409508 730844 +409519 764600 +409525 833825 +409550 741864 +409558 739317 +409561 729683 +409567 744983 +409572 729081 +409572 739639 +409583 759750 +409586 740372 +409586 759964 +409589 768994 +409597 729967 +409597 730683 +409597 731300 +409608 739906 +409622 828544 +409625 853733 +409628 741333 +409628 964408 +409633 711833 +409633 766131 +409636 813314 +409636 915578 +409644 768847 +409689 737131 +409700 816967 +409714 821100 +409731 739619 +409731 1.17735e+06 +409736 721442 +409747 848683 +409756 785253 +409761 740267 +409778 803453 +409781 817822 +409792 741169 +409806 736842 +409806 1.11887e+06 +409817 951039 +409819 931983 +409828 841994 +409836 739803 +409853 868794 +409858 747425 +409858 796133 +409867 751950 +409869 818939 +409883 1.02264e+06 +409892 741411 +409900 752167 +409900 887292 +409900 947406 +409911 725347 +409911 740331 +409919 760569 +409939 743039 +409942 921672 +409953 740125 +409956 723417 +409964 741017 +409978 722931 +409978 961619 +409981 739622 +409994 751817 +410006 857686 +410011 986072 +410017 736661 +410017 743675 +410017 793317 +410025 784636 +410028 738792 +410028 955850 +410031 879081 +410036 743419 +410036 885253 +410042 923736 +410050 737850 +410053 742911 +410061 764103 +410064 739494 +410081 911639 +410086 919625 +410094 741733 +410097 952253 +410100 818625 +410106 738442 +410106 739917 +410106 741183 +410114 958819 +410128 723133 +410128 816053 +410139 933064 +410144 738731 +410144 763814 +410161 721597 +410167 742061 +410167 758975 +410167 1.11498e+06 +410172 954019 +410186 864133 +410186 957989 +410189 737986 +410192 840472 +410208 814361 +410219 739478 +410233 740669 +410242 806150 +410242 806631 +410247 894111 +410250 807611 +410253 902797 +410256 817300 +410261 989122 +410264 819333 +410267 928056 +410275 941978 +410286 894383 +410289 840792 +410300 825158 +410308 779497 +410317 741025 +410322 1.11901e+06 +410333 820122 +410339 737633 +410339 937653 +410353 805367 +410353 1.11938e+06 +410358 719550 +410375 740411 +410381 742944 +410383 860281 +410389 738656 +410392 963681 +410414 741294 +410414 795033 +410417 939492 +410419 739186 +410442 836500 +410458 762825 +410464 813981 +410467 740233 +410469 957422 +410478 724636 +410492 880978 +410503 788225 +410514 866031 +410519 762211 +410519 830150 +410525 806081 +410525 890503 +410531 827264 +410533 735392 +410544 762336 +410547 797269 +410550 738206 +410572 741414 +410572 966444 +410581 747531 +410583 740989 +410586 943611 +410589 740222 +410603 1.1197e+06 +410606 757744 +410614 1.02074e+06 +410617 897731 +410619 762228 +410633 905558 +410639 800567 +410647 724267 +410647 828878 +410647 862158 +410681 723392 +410706 850144 +410722 858917 +410722 902253 +410758 775889 +410767 818964 +410775 847272 +410781 764147 +410783 805994 +410786 734697 +410797 878114 +410806 868919 +410811 1.11919e+06 +410814 815192 +410817 745928 +410819 961342 +410831 739206 +410844 768642 +410847 856281 +410856 738589 +410886 740139 +410892 906381 +410894 1.12064e+06 +410906 739183 +410928 1.0247e+06 +410936 898647 +410944 884250 +410958 796828 +410961 912575 +410964 739733 +410969 788889 +410972 1.04814e+06 +410983 839847 +410994 909425 +410997 806497 +411000 813467 +411003 821233 +411003 842664 +411014 814419 +411017 807647 +411019 767714 +411033 723597 +411039 826119 +411069 739206 +411072 737964 +411072 774847 +411075 837928 +411078 787714 +411083 835169 +411108 1.12025e+06 +411111 740689 +411114 893564 +411117 1.14964e+06 +411133 742458 +411142 975986 +411144 831781 +411147 741500 +411147 901644 +411158 980014 +411161 791869 +411169 809836 +411175 734083 +411181 739558 +411183 1.12083e+06 +411192 787603 +411200 878611 +411203 765303 +411208 888353 +411219 753650 +411219 830158 +411222 803331 +411231 914411 +411233 737794 +411239 741697 +411239 1.00765e+06 +411242 1.01356e+06 +411247 774300 +411253 848533 +411264 737144 +411264 774719 +411281 1.01719e+06 +411306 851289 +411325 1.11929e+06 +411333 1.04817e+06 +411339 814847 +411358 929039 +411364 740828 +411364 1.1203e+06 +411367 800094 +411367 958906 +411369 774472 +411381 845806 +411383 818639 +411408 962394 +411414 733583 +411417 878750 +411419 878611 +411428 890600 +411428 1.02978e+06 +411444 814400 +411450 788047 +411456 738242 +411458 774217 +411464 747528 +411472 916606 +411475 739897 +411506 739458 +411531 761506 +411533 745767 +411536 813581 +411539 807017 +411544 741933 +411544 960419 +411550 759786 +411564 805694 +411569 834169 +411569 1.01126e+06 +411572 854883 +411575 812422 +411578 800889 +411586 1.01002e+06 +411589 814544 +411594 814406 +411606 926311 +411611 790833 +411617 1.12026e+06 +411628 738619 +411656 808578 +411667 876628 +411669 732053 +411669 740436 +411675 900425 +411689 822181 +411703 909967 +411725 835564 +411725 923086 +411728 882767 +411728 1.11976e+06 +411733 860347 +411742 804536 +411747 918194 +411750 760750 +411769 1.12003e+06 +411772 744692 +411772 797081 +411772 896575 +411789 903158 +411797 975472 +411814 847406 +411814 911853 +411817 743825 +411819 1.04069e+06 +411822 937286 +411828 807656 +411828 836783 +411847 773142 +411856 883097 +411856 919928 +411883 809783 +411917 903800 +411919 1.11971e+06 +411922 974250 +411967 908803 +411969 759286 +411975 739650 +411992 798731 +411997 907492 +412003 857056 +412022 793278 +412031 905869 +412042 737275 +412044 928825 +412053 760053 +412053 960422 +412056 767858 +412069 830553 +412075 838992 +412083 738917 +412094 739858 +412094 1.06789e+06 +412097 746081 +412103 758969 +412108 849669 +412111 805381 +412114 966200 +412122 804969 +412125 924353 +412147 793856 +412150 867758 +412158 890667 +412189 864231 +412197 1.22274e+06 +412219 932411 +412222 730569 +412222 758633 +412225 742947 +412225 770372 +412231 1.11973e+06 +412269 802400 +412269 882647 +412272 858219 +412278 964875 +412283 851725 +412292 840342 +412306 853194 +412319 769994 +412325 956128 +412331 804936 +412339 805697 +412344 795375 +412350 810494 +412350 951372 +412358 1.03662e+06 +412367 954178 +412369 888314 +412375 808186 +412381 818419 +412381 858531 +412392 813461 +412397 816383 +412400 814408 +412400 836433 +412403 759450 +412411 767242 +412411 770014 +412411 815528 +412414 884194 +412425 826158 +412428 732011 +412450 759311 +412450 963969 +412456 899247 +412458 758817 +412464 832358 +412489 841331 +412492 787997 +412503 794597 +412506 878314 +412528 971297 +412539 836044 +412542 769208 +412542 893422 +412542 947681 +412544 823997 +412556 734353 +412558 1.22138e+06 +412561 830517 +412564 743603 +412586 959375 +412592 804722 +412597 906078 +412608 1.11769e+06 +412611 892275 +412611 961317 +412619 739386 +412619 958608 +412647 815133 +412650 882122 +412683 1.10962e+06 +412694 759167 +412706 729475 +412708 737781 +412725 820547 +412736 828417 +412753 758506 +412756 989664 +412761 728689 +412769 926794 +412781 758975 +412783 730261 +412786 725281 +412789 758786 +412794 725989 +412794 728156 +412797 767133 +412800 759125 +412800 913606 +412814 734986 +412814 1.11988e+06 +412833 701000 +412839 812242 +412842 810967 +412844 843558 +412853 723994 +412853 724481 +412861 804278 +412864 962342 +412872 845536 +412878 882856 +412878 993814 +412886 882517 +412889 726822 +412889 758058 +412889 915522 +412897 945614 +412900 739208 +412906 959178 +412917 723767 +412917 758750 +412917 934422 +412919 999222 +412922 895061 +412931 847619 +412939 822175 +412939 902919 +412942 882711 +412953 890594 +412956 861164 +412958 897903 +412964 926442 +412975 826056 +412981 1.12085e+06 +412992 916928 +413036 901928 +413042 829753 +413053 944611 +413072 1.11959e+06 +413078 881467 +413081 729286 +413083 741450 +413089 820058 +413097 742294 +413100 721458 +413100 1.22309e+06 +413111 886097 +413114 1.05591e+06 +413117 758378 +413125 811439 +413125 814403 +413128 963458 +413136 817247 +413139 816853 +413144 818358 +413164 730936 +413167 870258 +413175 868914 +413186 872003 +413189 905058 +413197 758464 +413197 816269 +413206 730894 +413206 758194 +413208 931092 +413217 802589 +413231 777486 +413242 834386 +413250 757458 +413253 721936 +413253 824933 +413256 856978 +413258 757897 +413261 896789 +413264 777511 +413269 757736 +413275 757933 +413275 891289 +413275 891997 +413275 1.10292e+06 +413278 719911 +413278 831322 +413297 906703 +413303 807256 +413306 741872 +413308 887081 +413308 940136 +413317 741214 +413317 743572 +413319 858500 +413322 877853 +413333 922044 +413336 888781 +413358 719064 +413361 759636 +413367 755189 +413392 801053 +413397 757367 +413406 876214 +413436 863097 +413439 757389 +413447 837972 +413450 720253 +413450 815286 +413456 888425 +413458 813953 +413461 730794 +413469 741267 +413486 800825 +413494 851356 +413500 720789 +413503 831219 +413506 719825 +413533 723911 +413533 757386 +413542 719669 +413547 903814 +413556 721000 +413558 822539 +413572 884211 +413578 891761 +413581 935572 +413583 897372 +413614 818131 +413625 742717 +413633 979689 +413639 919536 +413647 961575 +413650 958578 +413653 895839 +413656 815614 +413658 852389 +413661 818544 +413669 799294 +413669 850589 +413681 894647 +413683 821078 +413692 739667 +413711 734144 +413714 839419 +413722 737339 +413747 836514 +413750 746931 +413750 819083 +413772 718342 +413775 718278 +413825 892189 +413833 760250 +413844 833206 +413856 724361 +413858 932692 +413889 705139 +413897 814414 +413900 817597 +413906 809736 +413908 728600 +413914 739564 +413922 841253 +413931 815367 +413947 734544 +413947 757069 +413953 816764 +413969 966111 +413972 736175 +413972 899044 +413978 822225 +413983 818047 +413989 717475 +414000 747236 +414000 828086 +414014 923544 +414019 743247 +414019 996389 +414031 724514 +414036 950136 +414039 881117 +414047 817231 +414050 1.02344e+06 +414061 736331 +414081 929161 +414089 756628 +414092 741956 +414092 1.12035e+06 +414097 797119 +414108 834611 +414119 838644 +414139 733039 +414153 815661 +414156 819236 +414169 815275 +414169 816061 +414169 873653 +414181 864858 +414189 832214 +414197 756328 +414200 877417 +414203 787289 +414208 900150 +414211 820964 +414214 798814 +414219 823647 +414225 879858 +414225 1.00193e+06 +414228 1.22385e+06 +414233 717861 +414244 739469 +414253 816883 +414269 892133 +414278 741664 +414278 857525 +414286 904608 +414294 882286 +414297 720825 +414297 813908 +414297 848714 +414297 973681 +414306 868983 +414314 813656 +414322 714569 +414333 964978 +414344 721103 +414347 815258 +414350 815364 +414353 816575 +414392 740456 +414392 907175 +414397 817356 +414414 818644 +414414 852650 +414428 860014 +414433 840089 +414442 744003 +414444 876314 +414453 947644 +414458 744233 +414464 861481 +414472 970592 +414478 814278 +414481 901542 +414486 847481 +414486 977303 +414489 827081 +414489 956153 +414500 816636 +414506 834875 +414514 756122 +414517 820356 +414525 963508 +414528 821825 +414531 905719 +414542 705625 +414542 706042 +414542 740581 +414550 1.06806e+06 +414553 819181 +414553 882617 +414558 960261 +414564 907233 +414569 728236 +414569 1.22894e+06 +414594 934047 +414614 736714 +414619 810739 +414619 967794 +414622 814808 +414642 918381 +414644 815089 +414647 837061 +414658 855875 +414667 864831 +414683 756033 +414686 755625 +414689 796911 +414700 876364 +414700 926511 +414706 811453 +414714 756081 +414731 870611 +414731 903575 +414733 745389 +414739 815372 +414747 845525 +414756 818394 +414756 936786 +414758 751825 +414761 832958 +414767 740242 +414767 953378 +414775 952217 +414783 814639 +414803 715231 +414806 866917 +414808 755950 +414808 876378 +414814 743606 +414817 726817 +414819 817983 +414828 873328 +414831 917058 +414839 742181 +414839 903531 +414844 877033 +414847 819222 +414858 730511 +414872 1.20541e+06 +414875 821017 +414881 914258 +414883 875675 +414886 757089 +414892 814019 +414900 713133 +414914 876744 +414919 941239 +414928 757000 +414942 875217 +414947 755372 +414947 903906 +414953 794561 +414958 878486 +414961 853767 +414969 713678 +414969 725575 +414978 815375 +414989 729011 +414994 816956 +415003 858281 +415006 874614 +415006 946433 +415008 837183 +415008 904442 +415008 934908 +415028 724506 +415033 740108 +415033 943183 +415036 844142 +415039 877131 +415047 739700 +415053 820283 +415061 876356 +415061 881144 +415064 875917 +415067 905150 +415075 717167 +415089 907658 +415094 905786 +415103 1.12015e+06 +415119 829378 +415119 879656 +415122 782353 +415122 904150 +415133 876742 +415139 920761 +415161 954500 +415175 814036 +415183 942261 +415189 838039 +415192 814581 +415200 800486 +415200 814889 +415200 815564 +415200 882017 +415214 843072 +415217 739269 +415222 813381 +415222 931017 +415231 815186 +415236 905775 +415242 720764 +415242 764011 +415244 862733 +415244 905156 +415250 880817 +415256 741533 +415258 853667 +415261 878892 +415264 706736 +415264 875386 +415272 850656 +415275 742372 +415283 874236 +415286 1.09466e+06 +415300 886797 +415306 739781 +415308 755458 +415317 940094 +415319 939539 +415322 872550 +415331 815792 +415342 757364 +415342 864272 +415347 740153 +415350 740706 +415350 808683 +415356 738994 +415356 878475 +415369 885833 +415381 728075 +415386 759469 +415392 855397 +415397 740986 +415414 869006 +415425 816264 +415425 876022 +415428 876847 +415439 738686 +415444 732094 +415444 961247 +415472 891175 +415475 865822 +415486 985308 +415486 987306 +415492 841417 +415511 1.12109e+06 +415514 706153 +415519 814786 +415528 815103 +415542 915347 +415547 880986 +415558 904092 +415564 847689 +415564 958875 +415569 836272 +415572 876656 +415575 894608 +415581 730519 +415583 872744 +415600 740036 +415619 736031 +415622 726511 +415644 875125 +415647 875389 +415661 834247 +415681 876081 +415681 877203 +415689 1.11837e+06 +415700 912636 +415717 876944 +415728 726411 +415733 877844 +415736 755022 +415736 840053 +415736 876464 +415750 872389 +415756 723325 +415758 725031 +415758 871761 +415767 744875 +415767 752592 +415769 734089 +415772 937111 +415783 705592 +415783 928447 +415803 754086 +415817 903433 +415833 875000 +415839 738092 +415839 935197 +415847 907719 +415853 878431 +415858 925272 +415861 844350 +415869 712839 +415875 1.09202e+06 +415878 834933 +415886 838911 +415889 910167 +415894 880578 +415894 889219 +415894 941958 +415908 948753 +415917 950597 +415931 815269 +415933 730858 +415933 873464 +415964 739114 +415978 937081 +415983 814186 +415994 932350 +415997 909106 +416006 936089 +416008 876069 +416028 877439 +416031 937239 +416033 803056 +416033 989258 +416056 739719 +416056 741844 +416061 738733 +416064 903353 +416067 719814 +416067 805725 +416078 1.22839e+06 +416097 835644 +416100 876467 +416106 867225 +416106 965478 +416111 876347 +416117 938850 +416125 887994 +416136 901728 +416142 760469 +416142 811492 +416144 940172 +416147 1.12126e+06 +416156 870742 +416156 875294 +416186 813842 +416217 837117 +416228 738711 +416239 813072 +416253 877175 +416258 712139 +416258 871903 +416261 757808 +416267 937119 +416269 796739 +416269 882039 +416283 703875 +416289 813617 +416303 878539 +416303 897861 +416311 780917 +416314 724603 +416317 876608 +416331 754708 +416331 814689 +416336 886811 +416342 1.11851e+06 +416347 849994 +416353 727692 +416361 709347 +416378 859217 +416386 1.11933e+06 +416386 1.12079e+06 +416389 875567 +416389 876072 +416392 874547 +416397 732089 +416397 814067 +416406 993708 +416411 884472 +416414 801517 +416417 854167 +416431 957886 +416436 834869 +416439 877036 +416442 934644 +416458 886217 +416475 880894 +416500 702417 +416514 754669 +416525 797272 +416528 702833 +416531 953253 +416539 814506 +416556 738753 +416556 746897 +416561 804242 +416564 768536 +416564 900792 +416572 876800 +416581 905844 +416583 701292 +416583 708167 +416603 808608 +416611 727800 +416611 877525 +416611 915300 +416611 920089 +416619 861586 +416628 788114 +416628 876606 +416628 885369 +416639 835553 +416642 836433 +416644 701733 +416650 860758 +416653 1.03099e+06 +416658 814433 +416658 1.11181e+06 +416661 813397 +416667 701853 +416667 966656 +416672 878303 +416681 762622 +416681 877964 +416686 933575 +416689 877386 +416714 899361 +416714 913464 +416717 729497 +416731 936975 +416731 1.07979e+06 +416733 843269 +416736 880017 +416747 903403 +416750 712711 +416750 733522 +416764 719156 +416764 915803 +416772 945031 +416778 932450 +416781 730114 +416794 721708 +416794 770642 +416797 874944 +416800 845531 +416803 903189 +416811 699917 +416817 1.11822e+06 +416819 699603 +416819 859767 +416819 869603 +416828 883514 +416833 862500 +416842 877003 +416844 939608 +416861 700764 +416883 937908 +416889 889811 +416889 983631 +416897 877972 +416908 980033 +416917 943628 +416917 974842 +416919 713792 +416925 869775 +416947 740517 +416967 878169 +416972 862450 +416975 905825 +416978 727242 +416983 868592 +416986 880683 +416994 840703 +416997 930478 +417000 703000 +417000 707633 +417003 739214 +417003 865094 +417006 934619 +417014 711556 +417014 877792 +417019 702500 +417039 790358 +417050 813606 +417053 972378 +417061 715236 +417064 1.11816e+06 +417075 868950 +417092 746289 +417103 865342 +417106 722086 +417106 745747 +417117 839097 +417119 1.12165e+06 +417122 726086 +417128 718814 +417142 726531 +417142 893286 +417161 862525 +417169 743961 +417175 899258 +417181 929072 +417181 949322 +417183 738531 +417189 801478 +417189 837131 +417194 842181 +417206 877017 +417208 739606 +417208 877542 +417211 968825 +417214 858175 +417217 1.11821e+06 +417233 917903 +417244 732367 +417244 812458 +417250 970025 +417256 786386 +417256 878250 +417267 971219 +417278 844189 +417283 1.22527e+06 +417297 936056 +417306 883458 +417308 849328 +417317 922978 +417331 776422 +417336 924453 +417344 877314 +417356 1.11834e+06 +417356 1.22633e+06 +417383 957025 +417406 713092 +417408 878603 +417411 705994 +417411 735769 +417411 1.12161e+06 +417417 706583 +417431 927222 +417439 743719 +417444 878378 +417453 706186 +417456 868508 +417472 731892 +417475 740872 +417486 773008 +417489 879183 +417492 915978 +417500 878042 +417500 977750 +417550 1.03324e+06 +417561 1.24201e+06 +417578 803681 +417589 704944 +417600 700833 +417603 811411 +417606 883200 +417611 938242 +417619 727425 +417619 1.08966e+06 +417625 707222 +417628 878000 +417636 726856 +417653 721986 +417658 836281 +417675 764431 +417681 888769 +417689 878578 +417689 886408 +417694 711292 +417694 1.11804e+06 +417697 911278 +417700 705289 +417703 879022 +417711 730603 +417711 810500 +417714 937128 +417717 887736 +417747 742986 +417747 780208 +417750 1.07112e+06 +417756 954172 +417758 725219 +417783 962208 +417794 1.10538e+06 +417797 714378 +417797 896889 +417800 790933 +417808 749342 +417817 991328 +417822 726125 +417828 878781 +417850 736944 +417858 881472 +417881 902561 +417886 896961 +417894 902192 +417897 699903 +417897 707608 +417911 1.07238e+06 +417925 1.10537e+06 +417939 867439 +417956 860808 +417958 879756 +417967 718978 +417975 879547 +417981 856433 +417981 864992 +417981 920706 +417986 866106 +417989 1.11818e+06 +417992 854192 +418006 731217 +418006 803692 +418008 879369 +418011 747469 +418011 880747 +418019 810492 +418025 718864 +418036 800567 +418061 883272 +418069 834425 +418072 770778 +418072 914939 +418083 722500 +418086 877933 +418089 880111 +418094 1.03503e+06 +418097 728311 +418097 879006 +418097 899650 +418108 782800 +418111 784450 +418128 729206 +418133 878181 +418136 713706 +418178 881733 +418214 877828 +418233 905381 +418239 714133 +418239 878517 +418242 906478 +418244 728942 +418258 1.0366e+06 +418261 931514 +418272 863611 +418281 866925 +418283 974547 +418289 740689 +418297 862542 +418317 908381 +418325 838625 +418328 879289 +418347 878617 +418350 878228 +418358 964667 +418383 1.11832e+06 +418386 941069 +418389 894794 +418394 847481 +418411 856686 +418417 893003 +418417 967083 +418428 878231 +418439 791453 +418444 901886 +418456 877539 +418456 916928 +418458 709500 +418472 853186 +418475 1.03661e+06 +418492 735572 +418500 876500 +418500 879644 +418500 883125 +418506 877936 +418506 878819 +418519 945581 +418525 726442 +418544 956003 +418550 843539 +418569 939217 +418575 909281 +418594 809542 +418617 881608 +418628 1.1199e+06 +418639 711250 +418639 878533 +418650 699917 +418650 807900 +418661 881069 +418661 892211 +418667 1.03667e+06 +418672 901594 +418700 1.06561e+06 +418708 786617 +418708 946772 +418711 715525 +418722 851947 +418725 757275 +418728 807731 +418731 728586 +418742 791525 +418742 801319 +418758 728017 +418767 938231 +418775 880669 +418778 879028 +418778 936783 +418786 713831 +418789 927892 +418792 878431 +418800 880078 +418814 878831 +418822 729775 +418847 882039 +418850 877844 +418875 883053 +418889 837789 +418889 879033 +418889 910564 +418897 879889 +418897 952319 +418906 713928 +418908 806764 +418919 933994 +418922 884722 +418931 911506 +418956 1.06204e+06 +418969 922781 +418975 840372 +418978 878139 +418983 935289 +418994 798456 +418994 879403 +419000 710903 +419003 748286 +419006 878567 +419011 837150 +419028 919214 +419039 777622 +419044 912544 +419050 803439 +419053 739767 +419056 878836 +419058 806906 +419067 713911 +419075 885992 +419086 727606 +419086 771333 +419092 950647 +419094 920842 +419103 880717 +419117 860100 +419125 881347 +419150 719094 +419164 833978 +419172 878956 +419172 1.04039e+06 +419183 834306 +419192 775392 +419194 917808 +419200 846306 +419200 886886 +419203 796406 +419203 1.12049e+06 +419211 730606 +419211 878092 +419211 913853 +419219 914167 +419228 1.11813e+06 +419233 855283 +419236 710528 +419239 890686 +419244 740617 +419258 878358 +419267 739131 +419269 739978 +419289 954936 +419292 726278 +419294 887503 +419297 888608 +419300 968114 +419308 889644 +419311 833269 +419317 879889 +419353 878656 +419375 964769 +419386 761361 +419389 719600 +419403 850006 +419403 1.03808e+06 +419414 931031 +419439 856325 +419442 848839 +419444 712861 +419464 863389 +419475 805544 +419503 972236 +419508 882422 +419511 890644 +419536 735111 +419539 727892 +419539 752808 +419539 860647 +419542 723028 +419550 879400 +419556 717028 +419558 786442 +419558 878708 +419561 1.21476e+06 +419572 765183 +419572 836597 +419575 864856 +419575 880808 +419578 783856 +419583 706678 +419583 853250 +419589 900992 +419611 757436 +419633 878272 +419633 879789 +419633 897744 +419633 1.03926e+06 +419636 781911 +419639 908175 +419656 716750 +419667 711875 +419667 925767 +419672 878075 +419675 1.21917e+06 +419708 845258 +419717 757436 +419750 880072 +419758 1.11856e+06 +419761 725922 +419767 714592 +419789 765158 +419797 736564 +419817 726511 +419825 793389 +419833 980833 +419836 909561 +419842 846619 +419842 861086 +419847 880797 +419850 862997 +419853 724467 +419856 718992 +419856 739886 +419861 773111 +419861 895792 +419864 843472 +419867 838311 +419872 725453 +419872 969139 +419889 886867 +419903 709756 +419942 882922 +419944 707250 +419950 881856 +419956 919675 +419956 925767 +419969 918619 +419972 741053 +419975 765375 +419981 911414 +419983 921972 +419994 881450 +419994 975981 +420003 803183 +420022 906069 +420028 715153 +420036 798111 +420039 839450 +420039 879703 +420044 877300 +420061 841900 +420064 854500 +420069 927753 +420075 962494 +420083 916439 +420086 920908 +420111 878406 +420128 965725 +420128 1.21408e+06 +420133 898906 +420144 865194 +420147 893322 +420153 943772 +420161 767272 +420167 740767 +420167 931633 +420178 933150 +420178 953550 +420181 740153 +420189 878028 +420225 945450 +420228 934522 +420231 706833 +420236 719503 +420253 1.21599e+06 +420256 881783 +420258 858156 +420267 960969 +420272 733297 +420317 942406 +420333 712194 +420333 877333 +420333 878833 +420333 880833 +420342 915975 +420347 936197 +420358 916819 +420372 882811 +420386 783411 +420392 940275 +420406 877825 +420411 876900 +420417 706728 +420428 880797 +420428 1.01042e+06 +420431 733456 +420436 739478 +420439 847575 +420456 802700 +420472 978336 +420494 929078 +420500 718806 +420500 725833 +420503 894311 +420503 904139 +420528 1.24283e+06 +420533 1.24266e+06 +420544 791583 +420544 1.04952e+06 +420569 947286 +420583 701792 +420583 739097 +420592 833908 +420592 910072 +420594 914425 +420597 938800 +420600 754281 +420639 832611 +420650 864950 +420650 1.04181e+06 +420658 948667 +420661 917953 +420664 879372 +420667 851361 +420683 955914 +420689 906656 +420694 761550 +420700 843306 +420708 832467 +420711 901739 +420711 916667 +420719 839717 +420722 717139 +420722 877228 +420750 708806 +420750 720339 +420750 794833 +420758 756408 +420775 739533 +420775 784300 +420781 768456 +420825 1.10954e+06 +420833 710189 +420833 713972 +420842 880131 +420853 836825 +420858 877175 +420864 779225 +420867 714750 +420869 864558 +420886 852347 +420897 768081 +420900 784944 +420914 881217 +420917 707061 +420925 888511 +420931 707931 +420933 849858 +420936 926756 +420942 883025 +420944 901567 +420944 918692 +420950 831897 +420950 899781 +420953 879375 +420964 1.11876e+06 +420969 792356 +420972 886928 +420978 885303 +420983 760497 +420986 759183 +420997 877808 +421014 725903 +421022 898333 +421028 772339 +421033 762625 +421042 723194 +421042 793333 +421058 842483 +421069 726208 +421069 936494 +421072 891792 +421081 859744 +421081 877358 +421083 720792 +421083 912850 +421094 792833 +421103 880342 +421111 716667 +421125 929883 +421128 760214 +421142 856378 +421142 967069 +421156 759592 +421161 721139 +421167 864542 +421181 880961 +421186 791986 +421200 855328 +421211 882578 +421217 770375 +421236 711792 +421236 724319 +421250 727500 +421256 894036 +421261 895792 +421269 892556 +421275 878289 +421275 961492 +421286 980294 +421292 800853 +421297 768211 +421306 715417 +421311 864072 +421333 758967 +421350 877581 +421372 769372 +421389 832417 +421392 879289 +421394 831783 +421397 715167 +421403 800153 +421417 712500 +421428 770550 +421458 707403 +421458 848089 +421461 771119 +421483 964881 +421486 726083 +421486 746486 +421503 840378 +421514 879597 +421519 944742 +421539 881361 +421547 897397 +421550 710092 +421564 777958 +421578 787153 +421583 723292 +421592 795956 +421606 842461 +421608 880814 +421611 932969 +421619 770944 +421619 789756 +421625 710417 +421625 834031 +421631 1.23647e+06 +421653 954367 +421656 882942 +421658 957928 +421664 935017 +421667 837817 +421669 768208 +421672 858469 +421675 878969 +421681 884281 +421686 920233 +421694 751297 +421706 880478 +421711 878444 +421717 923061 +421728 789481 +421778 846431 +421783 879978 +421811 723611 +421817 878003 +421817 883303 +421817 949767 +421861 863083 +421867 862606 +421872 935956 +421875 713069 +421878 927150 +421889 1.20345e+06 +421908 917850 +421917 1.1225e+06 +421933 843911 +421933 878664 +421936 924653 +421944 712000 +421944 719064 +421947 1.22708e+06 +421956 741342 +421958 707264 +421958 733625 +421969 880933 +421986 765528 +421992 975264 +421997 878092 +422008 882144 +422011 855800 +422039 915239 +422042 726167 +422047 834853 +422050 845528 +422064 781378 +422067 861667 +422069 1.21736e+06 +422075 880556 +422078 881406 +422094 857844 +422097 764936 +422119 882381 +422122 862719 +422125 721917 +422125 723458 +422125 881525 +422136 742192 +422139 721028 +422139 831939 +422156 798344 +422169 880494 +422172 738650 +422175 782756 +422178 858911 +422189 707861 +422192 860514 +422194 879794 +422208 709403 +422208 863694 +422222 710000 +422222 833967 +422231 780347 +422236 761836 +422242 918742 +422247 928744 +422250 1.21781e+06 +422272 1.114e+06 +422278 720472 +422281 755269 +422286 715231 +422306 970175 +422328 763428 +422328 962278 +422331 843272 +422339 738828 +422347 889489 +422353 721417 +422358 964722 +422383 853350 +422383 911869 +422408 832697 +422411 836131 +422411 883161 +422417 708903 +422417 711667 +422425 882019 +422431 847531 +422433 1.13881e+06 +422439 719928 +422444 831458 +422456 930644 +422458 712833 +422458 844014 +422458 1.22788e+06 +422464 882428 +422483 736536 +422486 886083 +422500 710667 +422506 831786 +422508 842131 +422525 788058 +422528 710028 +422528 737914 +422539 795047 +422542 733667 +422542 777908 +422564 725167 +422564 902794 +422575 832111 +422578 983461 +422583 845997 +422586 904228 +422589 881392 +422597 722403 +422603 738100 +422614 940683 +422625 718028 +422631 880039 +422639 792589 +422639 888442 +422653 898258 +422661 892411 +422667 720833 +422669 797108 +422675 947336 +422689 715244 +422692 968647 +422694 716167 +422697 1.04741e+06 +422703 776061 +422703 945483 +422711 890939 +422711 950928 +422714 939269 +422722 849633 +422733 831344 +422750 786731 +422756 1.22817e+06 +422761 881919 +422769 724014 +422781 749164 +422786 967264 +422789 878342 +422792 714167 +422806 942906 +422808 915303 +422814 833864 +422825 831753 +422831 879531 +422833 712333 +422833 837458 +422861 737392 +422867 917806 +422875 733208 +422886 772186 +422886 854181 +422900 882247 +422917 855872 +422933 754797 +422942 833100 +422944 791000 +422964 712931 +422967 896211 +422986 910147 +422989 739989 +423019 709083 +423031 855503 +423042 732486 +423056 933000 +423067 780161 +423083 852192 +423122 952503 +423125 722083 +423125 861131 +423136 1.22966e+06 +423139 893592 +423147 753919 +423147 884486 +423150 921919 +423153 934342 +423156 955983 +423178 902214 +423181 840206 +423189 851425 +423189 882581 +423194 716417 +423200 890581 +423208 713647 +423211 851797 +423217 964892 +423217 1.03072e+06 +423222 777386 +423222 795783 +423222 831764 +423222 1.11297e+06 +423236 925992 +423242 834003 +423250 726417 +423253 753128 +423256 833311 +423256 878411 +423267 1.22874e+06 +423278 776614 +423281 855697 +423286 881989 +423289 759681 +423292 757703 +423292 788683 +423314 830458 +423364 853522 +423367 767889 +423369 712097 +423369 773181 +423369 784583 +423369 832733 +423383 838886 +423403 725056 +423428 879981 +423428 890519 +423439 912483 +423442 793097 +423444 880417 +423447 882739 +423450 954714 +423458 715528 +423461 776617 +423472 768456 +423483 878842 +423497 900067 +423497 977917 +423508 738033 +423533 880933 +423564 732853 +423569 880767 +423583 710603 +423600 940519 +423600 975964 +423608 858794 +423608 930994 +423617 927683 +423636 878447 +423642 735953 +423642 790558 +423683 833528 +423683 882925 +423694 719486 +423703 879019 +423708 711833 +423708 725986 +423717 880900 +423736 725208 +423750 709833 +423758 829375 +423758 896331 +423764 712361 +423783 846986 +423786 973567 +423794 898222 +423800 881042 +423806 768736 +423811 881397 +423828 859569 +423861 829119 +423875 711000 +423883 958664 +423886 794414 +423886 895261 +423917 710333 +423917 715667 +423928 830497 +423933 883403 +423944 776969 +423944 917608 +423953 736983 +423953 946336 +423958 711792 +423967 881836 +423972 751739 +423986 880525 +423997 887403 +424031 862736 +424039 963583 +424067 924553 +424072 746147 +424075 1.24421e+06 +424078 772239 +424081 881317 +424083 710125 +424083 710542 +424086 882064 +424092 828919 +424094 774217 +424103 725314 +424106 880261 +424133 736736 +424133 890092 +424153 711569 +424156 964181 +424161 922147 +424167 716833 +424167 904289 +424169 880739 +424183 711067 +424222 886136 +424222 949894 +424228 721056 +424233 781575 +424247 941500 +424250 710667 +424264 709194 +424286 879239 +424286 1.12124e+06 +424292 764953 +424294 970894 +424297 913308 +424311 834833 +424331 829242 +424333 714500 +424361 1.23171e+06 +424364 893319 +424367 828769 +424375 1.22858e+06 +424392 1.23327e+06 +424394 837439 +424400 793319 +424400 856489 +424406 764969 +424408 736614 +424414 849242 +424417 760325 +424428 910061 +424433 850181 +424436 829069 +424444 716875 +424450 909319 +424461 878328 +424472 712250 +424500 732458 +424511 841806 +424514 844325 +424522 711375 +424528 750642 +424567 839464 +424578 986472 +424583 710667 +424583 713958 +424592 929383 +424594 764869 +424606 831347 +424606 836517 +424606 856964 +424614 777772 +424614 951517 +424625 831042 +424631 789361 +424642 926281 +424644 833764 +424647 710106 +424661 781153 +424667 709500 +424667 979058 +424669 922564 +424683 738167 +424683 791772 +424683 829556 +424683 896439 +424686 918892 +424689 922194 +424692 922808 +424694 938158 +424706 939933 +424708 709181 +424711 831422 +424717 884322 +424728 1.22802e+06 +424733 832219 +424733 917342 +424739 964133 +424750 957853 +424756 920636 +424772 726083 +424772 880956 +424775 830278 +424789 878236 +424792 711528 +424794 793342 +424800 711000 +424806 831669 +424806 834756 +424817 912722 +424842 914553 +424844 911228 +424850 830278 +424858 831053 +424889 960722 +424892 784811 +424892 955447 +424894 831447 +424908 762975 +424922 906428 +424928 923428 +424931 890367 +424947 1.07827e+06 +424964 832228 +424964 899894 +424969 828889 +424972 829372 +424975 941678 +424983 883297 +424994 975417 +425000 708583 +425000 952928 +425000 964000 +425006 906644 +425022 775075 +425025 887289 +425031 831836 +425047 711961 +425061 972033 +425064 710733 +425083 890317 +425092 846558 +425144 907514 +425158 736106 +425158 832733 +425183 737517 +425194 708972 +425203 933758 +425222 833061 +425225 932511 +425233 769769 +425247 835364 +425250 717603 +425256 710958 +425272 964828 +425278 709292 +425278 924453 +425292 712286 +425292 858553 +425294 837803 +425297 1.14305e+06 +425300 784731 +425311 755239 +425311 882481 +425311 885994 +425314 989778 +425328 904344 +425333 831464 +425339 784233 +425339 1.14364e+06 +425347 881436 +425358 1.13792e+06 +425364 997003 +425378 834811 +425381 883508 +425383 1.10114e+06 +425389 710486 +425392 829494 +425422 766664 +425436 716500 +425442 791669 +425458 714750 +425464 711742 +425467 832114 +425486 752456 +425489 748214 +425500 998622 +425511 946836 +425536 882944 +425536 1.10109e+06 +425542 930531 +425567 834739 +425578 888650 +425583 708806 +425586 1.13763e+06 +425608 776964 +425611 715903 +425631 1.1446e+06 +425636 848358 +425669 926219 +425678 775900 +425697 903806 +425700 921603 +425703 1.14607e+06 +425733 902308 +425750 709306 +425750 719986 +425761 1.1173e+06 +425775 881050 +425775 927867 +425778 1.21865e+06 +425781 885408 +425794 779428 +425803 830303 +425814 948458 +425819 724931 +425822 762094 +425833 718028 +425836 832456 +425842 886325 +425842 928842 +425847 878211 +425858 995375 +425875 726000 +425878 763672 +425883 959672 +425903 723103 +425906 749456 +425936 835994 +425939 861017 +425944 717250 +425953 789414 +425958 722272 +425961 760936 +425969 980333 +425972 828781 +425986 916419 +425989 976453 +425992 991422 +425992 1.14759e+06 +426011 761808 +426011 896383 +426017 887075 +426025 965589 +426028 850931 +426042 725569 +426042 727397 +426056 904297 +426056 950025 +426072 839294 +426081 833439 +426081 1.13782e+06 +426083 720764 +426103 719394 +426111 715750 +426114 833286 +426122 884822 +426144 941458 +426153 770925 +426153 774028 +426158 706625 +426169 767253 +426183 825311 +426183 893761 +426192 1.13676e+06 +426208 919000 +426214 951731 +426219 738331 +426225 972642 +426236 857603 +426242 731181 +426242 753319 +426242 790672 +426261 830336 +426272 905919 +426275 892531 +426278 962914 +426289 780547 +426289 850242 +426292 847389 +426319 707833 +426331 886436 +426333 713167 +426339 735542 +426342 745644 +426369 761792 +426375 709500 +426383 790281 +426389 832911 +426392 920469 +426406 845153 +426411 952094 +426425 737433 +426433 736092 +426444 914011 +426456 846489 +426461 924628 +426506 1.12192e+06 +426525 737567 +426539 739292 +426544 1.11604e+06 +426550 862019 +426567 935008 +426583 711375 +426606 780858 +426606 840731 +426608 770542 +426611 709972 +426642 939042 +426653 715736 +426658 715889 +426658 743100 +426667 717056 +426669 841742 +426708 892089 +426714 923372 +426728 885444 +426733 919133 +426736 952903 +426739 856447 +426764 768233 +426778 744858 +426781 754989 +426781 882761 +426792 708417 +426806 831339 +426811 827369 +426822 768689 +426828 890186 +426831 901175 +426831 1.03412e+06 +426833 966833 +426836 915339 +426839 1.02689e+06 +426856 787769 +426861 720444 +426881 880514 +426889 842831 +426894 907119 +426903 735650 +426911 738692 +426919 737250 +426950 738075 +426958 724533 +426981 878944 +427006 740342 +427006 749247 +427008 731092 +427011 898669 +427022 834028 +427022 922253 +427047 737553 +427069 711636 +427078 894369 +427103 925828 +427119 732042 +427125 764219 +427128 954364 +427131 854619 +427144 909906 +427156 780058 +427167 708792 +427178 738339 +427183 1.02464e+06 +427194 824922 +427197 962483 +427200 942000 +427203 1.11885e+06 +427208 942150 +427222 844275 +427242 1.14518e+06 +427250 1.10931e+06 +427256 778744 +427258 924753 +427261 877828 +427283 736922 +427289 974953 +427294 944475 +427300 737017 +427317 937328 +427325 845556 +427342 904783 +427356 946689 +427358 834189 +427361 903342 +427364 1.23422e+06 +427369 844839 +427400 781331 +427414 882242 +427419 932022 +427442 736919 +427456 895947 +427458 1.24496e+06 +427469 737594 +427469 844011 +427494 955514 +427519 929753 +427528 927950 +427533 847464 +427539 767028 +427583 758847 +427597 1.05382e+06 +427600 772267 +427622 848964 +427622 849925 +427625 1.04452e+06 +427631 882142 +427647 714403 +427653 714681 +427672 718128 +427675 787442 +427678 786136 +427703 832642 +427733 723836 +427739 918822 +427742 737006 +427756 889439 +427758 1.14703e+06 +427761 710778 +427794 969289 +427797 738461 +427803 892992 +427819 949483 +427844 832397 +427844 877661 +427847 851383 +427847 926675 +427853 884050 +427858 910994 +427861 724869 +427861 1.12854e+06 +427875 861089 +427892 855167 +427914 838464 +427919 836278 +427925 736817 +427942 961653 +427956 747536 +427958 746175 +427958 778172 +427964 1.12253e+06 +427972 788236 +427978 837050 +427981 761097 +428028 830131 +428047 1.02203e+06 +428081 922581 +428092 827558 +428103 898619 +428122 1.14898e+06 +428125 708778 +428125 860186 +428128 945267 +428139 720236 +428142 739400 +428144 837825 +428144 896350 +428147 959731 +428208 824861 +428214 776689 +428228 839444 +428239 721817 +428247 832647 +428256 788236 +428258 958072 +428264 739647 +428264 780900 +428264 842194 +428269 755450 +428289 965592 +428294 1.03e+06 +428297 786364 +428331 1.0873e+06 +428336 887322 +428353 716494 +428353 890675 +428386 841783 +428397 766936 +428406 1.06365e+06 +428408 856636 +428417 708611 +428419 918019 +428433 717356 +428442 828844 +428461 936139 +428467 948517 +428475 907106 +428475 920914 +428508 725583 +428522 834431 +428533 749858 +428536 893703 +428539 914053 +428542 978969 +428558 726036 +428583 709306 +428597 895381 +428600 1.06268e+06 +428614 1.05872e+06 +428642 782806 +428667 883333 +428667 1.06312e+06 +428667 1.0986e+06 +428686 773358 +428686 912358 +428689 769781 +428692 849031 +428694 856447 +428706 719522 +428708 858650 +428711 973969 +428714 1.12445e+06 +428728 1.00551e+06 +428739 987011 +428744 740469 +428778 885861 +428781 731972 +428786 840639 +428792 752514 +428794 884742 +428806 713278 +428814 882067 +428836 1.24072e+06 +428853 751936 +428853 909233 +428858 878631 +428864 788786 +428903 843514 +428906 785781 +428933 787942 +428933 932150 +428933 951508 +428944 739283 +428950 774350 +428958 928022 +428964 827689 +428986 756406 +429000 735858 +429000 784922 +429000 904308 +429006 786706 +429011 733519 +429022 774200 +429028 736878 +429033 735631 +429039 786925 +429042 722083 +429047 768631 +429047 776117 +429056 745722 +429058 881389 +429061 1.08583e+06 +429072 857919 +429086 765406 +429097 857631 +429106 767969 +429106 878606 +429108 745744 +429114 988489 +429119 777458 +429119 839847 +429125 824869 +429133 857053 +429169 835064 +429169 892178 +429189 767267 +429206 830450 +429208 1.12465e+06 +429261 893844 +429275 836300 +429275 1.2328e+06 +429289 888369 +429294 847986 +429294 852131 +429300 758531 +429303 732431 +429314 746231 +429317 765664 +429336 722786 +429336 853419 +429344 884053 +429347 746139 +429361 1.14405e+06 +429375 708394 +429375 880486 +429378 937931 +429386 737903 +429386 741886 +429386 919500 +429389 1.14712e+06 +429392 754614 +429392 840294 +429406 879958 +429411 856100 +429414 832892 +429442 1.12838e+06 +429461 831239 +429469 764294 +429478 743708 +429511 1.23363e+06 +429522 775906 +429528 925361 +429544 743769 +429550 1.153e+06 +429553 742856 +429558 772211 +429569 944408 +429572 838306 +429575 770578 +429575 916306 +429583 742333 +429597 878614 +429600 784058 +429603 901300 +429614 880125 +429617 771403 +429628 918081 +429639 787381 +429644 825231 +429647 786778 +429653 921994 +429658 788703 +429697 772306 +429708 824250 +429717 904331 +429731 778531 +429742 954972 +429744 741514 +429747 963181 +429764 881083 +429783 779844 +429792 956878 +429814 709483 +429819 841178 +429819 849469 +429825 774092 +429828 763408 +429836 906553 +429853 931917 +429856 839283 +429872 850711 +429875 960103 +429908 895331 +429933 978625 +429956 714553 +429958 849425 +429958 964850 +429978 841767 +429981 781878 +430008 738494 +430014 857681 +430017 847397 +430019 759772 +430022 899903 +430036 890164 +430036 916522 +430044 883767 +430050 980594 +430056 888072 +430058 843717 +430067 743681 +430069 936028 +430072 960581 +430078 842847 +430086 897383 +430106 786378 +430114 750044 +430117 882314 +430125 829281 +430125 836875 +430125 879725 +430125 892897 +430142 884725 +430150 750358 +430156 898953 +430167 880069 +430183 911825 +430203 788806 +430203 1.23292e+06 +430208 784956 +430214 966306 +430247 830778 +430250 1.08379e+06 +430256 749864 +430256 1.02556e+06 +430258 777456 +430281 733817 +430297 760047 +430333 710747 +430344 764483 +430344 766242 +430347 835181 +430361 711839 +430386 788644 +430386 856700 +430389 750708 +430389 879064 +430392 763044 +430431 880789 +430433 748600 +430444 911781 +430450 758669 +430467 770956 +430467 903797 +430472 762389 +430475 762208 +430481 761478 +430483 753789 +430486 765631 +430494 880075 +430514 833189 +430517 911411 +430517 913892 +430519 890756 +430522 929483 +430528 743442 +430581 762078 +430586 741969 +430592 923175 +430606 881064 +430608 884036 +430619 944267 +430622 893339 +430631 838511 +430631 862283 +430639 772336 +430639 859347 +430642 769906 +430650 1.24138e+06 +430653 760789 +430653 764733 +430656 952836 +430658 782700 +430664 926722 +430692 772992 +430700 942328 +430706 921500 +430717 707631 +430719 959042 +430731 894011 +430733 752881 +430736 755986 +430747 731544 +430753 757072 +430761 760011 +430761 887742 +430761 891994 +430769 861969 +430772 781872 +430775 894456 +430794 755397 +430794 757511 +430797 961753 +430797 982928 +430806 882611 +430806 967733 +430814 889117 +430825 756339 +430831 737850 +430831 971603 +430842 768697 +430844 862203 +430847 915681 +430853 779425 +430853 908831 +430858 706975 +430869 956269 +430881 707367 +430883 939900 +430886 843869 +430892 878875 +430906 734992 +430906 775153 +430922 753800 +430925 756517 +430944 790569 +430967 714656 +430972 895042 +430978 761456 +430978 852289 +430978 884022 +430978 938017 +430986 774422 +431000 735822 +431008 747733 +431008 752331 +431025 936017 +431044 742653 +431044 884592 +431047 846919 +431050 883419 +431053 752917 +431058 880694 +431064 762181 +431081 707781 +431086 774878 +431117 883922 +431117 884992 +431128 752714 +431128 946828 +431133 879000 +431144 896556 +431153 761461 +431167 839700 +431183 893794 +431186 836950 +431192 1.24407e+06 +431194 969611 +431200 855600 +431219 752919 +431225 1.23411e+06 +431264 934775 +431292 948989 +431306 714536 +431319 861547 +431331 1.1569e+06 +431333 724444 +431339 709269 +431339 882219 +431344 907053 +431347 761303 +431372 897467 +431378 725103 +431381 755711 +431414 951442 +431428 930042 +431433 771894 +431461 881661 +431464 917644 +431467 883067 +431497 977172 +431500 786969 +431536 932008 +431547 776158 +431564 985411 +431567 834106 +431572 753331 +431575 879017 +431586 763331 +431600 953272 +431606 1.23367e+06 +431608 857100 +431633 879644 +431636 730728 +431661 835244 +431683 890667 +431689 862639 +431703 970811 +431706 786906 +431722 733281 +431725 790361 +431725 1.01732e+06 +431742 879242 +431753 900678 +431767 838928 +431767 897947 +431769 730575 +431769 848464 +431772 1.24186e+06 +431775 837342 +431775 852528 +431789 881172 +431797 718228 +431800 954767 +431806 879006 +431811 958558 +431817 956553 +431819 903244 +431825 992917 +431836 892136 +431836 918639 +431839 889883 +431847 841150 +431850 904431 +431864 778042 +431867 844744 +431886 961333 +431906 1.12344e+06 +431911 960056 +431919 894556 +431947 887289 +431972 766547 +431975 942194 +431978 708742 +431992 785764 +432011 862389 +432053 962947 +432081 715381 +432097 776933 +432122 774303 +432122 829897 +432122 850736 +432136 779394 +432167 1.23341e+06 +432200 783872 +432200 857511 +432206 768153 +432219 717144 +432233 855514 +432239 771864 +432256 750617 +432256 979656 +432264 780269 +432294 831967 +432311 763011 +432322 994300 +432342 862483 +432344 708100 +432358 1.0811e+06 +432361 708208 +432364 879844 +432369 940411 +432375 879786 +432378 770617 +432378 947511 +432381 761411 +432386 724250 +432386 789100 +432397 975775 +432403 758842 +432417 752572 +432444 738328 +432464 781939 +432467 924358 +432472 767239 +432472 790503 +432478 760006 +432489 705997 +432506 895014 +432508 837942 +432547 861097 +432561 862675 +432586 828175 +432617 708658 +432625 936369 +432658 708650 +432669 735850 +432681 825308 +432694 914756 +432708 897219 +432717 769894 +432756 826211 +432789 900436 +432794 962325 +432814 835297 +432842 928108 +432867 761464 +432867 787106 +432869 897239 +432872 932019 +432881 777936 +432917 846075 +432925 850814 +432928 942178 +432947 945114 +432967 879875 +432983 724828 +432992 736356 +433000 736844 +433006 735864 +433008 965925 +433011 1.03825e+06 +433033 917856 +433036 707339 +433044 709761 +433050 888447 +433058 713247 +433058 1.00658e+06 +433072 964317 +433094 736444 +433097 788264 +433103 885181 +433139 895264 +433175 908447 +433178 883789 +433186 983464 +433197 879533 +433211 765792 +433228 764175 +433239 881667 +433247 951497 +433267 783892 +433269 751872 +433269 830803 +433300 785550 +433317 837381 +433336 882861 +433344 757483 +433347 903867 +433361 858108 +433369 833525 +433378 787150 +433381 890153 +433439 960019 +433525 974369 +433542 968917 +433561 1.24204e+06 +433617 704772 +433622 912164 +433636 1.24192e+06 +433639 925539 +433653 721739 +433681 1.24216e+06 +433714 937733 +433719 835833 +433767 723472 +433767 998586 +433789 846597 +433814 921139 +433814 1.12122e+06 +433817 879406 +433839 705453 +433844 890450 +433858 939464 +433864 951481 +433869 988442 +433872 878756 +433897 710656 +433903 894028 +433903 1.23311e+06 +433953 907742 +433956 854678 +433958 727011 +433961 944781 +433975 971361 +433981 764778 +433989 979833 +433992 957517 +433997 885325 +434017 948325 +434056 887050 +434061 761261 +434067 1.24223e+06 +434078 732600 +434081 844750 +434081 850386 +434097 843289 +434100 863486 +434114 1.06279e+06 +434131 1.06249e+06 +434139 719856 +434142 734881 +434147 842306 +434161 955344 +434167 863569 +434194 839508 +434194 935331 +434197 858000 +434203 828297 +434222 951019 +434222 1.23297e+06 +434231 972603 +434253 881833 +434253 984069 +434261 737128 +434269 826714 +434272 961756 +434308 825425 +434314 966969 +434317 880464 +434317 1.03474e+06 +434361 927822 +434392 707747 +434442 716478 +434442 932208 +434464 968356 +434478 892397 +434506 836964 +434514 886311 +434536 964339 +434553 765108 +434556 953206 +434578 888372 +434586 839303 +434594 762292 +434597 898683 +434636 1.1426e+06 +434667 707942 +434667 1.12033e+06 +434675 859419 +434697 1.11966e+06 +434706 879506 +434711 897442 +434717 729778 +434744 897703 +434764 839206 +434800 1.10762e+06 +434836 753369 +434908 854439 +434911 833969 +434919 1.16419e+06 +434925 704539 +434942 885447 +434958 893083 +434967 737767 +434967 912894 +434997 878503 +435008 704433 +435050 940878 +435053 929439 +435061 906681 +435072 863475 +435097 925036 +435169 732367 +435172 703781 +435172 884511 +435181 960181 +435197 1.14314e+06 +435206 917694 +435208 882289 +435236 835433 +435244 846947 +435250 841228 +435264 1.11932e+06 +435267 827353 +435278 714708 +435281 963583 +435325 900025 +435336 946314 +435336 1.0963e+06 +435364 937119 +435378 893000 +435392 890067 +435392 894625 +435408 1.16562e+06 +435422 891072 +435456 1.16812e+06 +435500 967000 +435503 857719 +435517 975072 +435522 879617 +435553 920100 +435556 734042 +435569 908886 +435592 863456 +435611 916358 +435642 1.1908e+06 +435653 927192 +435656 889064 +435669 761281 +435681 835142 +435681 1.00745e+06 +435689 860394 +435697 878233 +435725 932811 +435758 1.24174e+06 +435781 703222 +435825 964675 +435831 753456 +435839 712078 +435864 1.19053e+06 +435911 717372 +435914 884436 +435931 730456 +435944 838889 +435947 732661 +435964 1.11963e+06 +435978 882789 +435978 972903 +435986 1.23282e+06 +436008 831747 +436011 897936 +436033 840697 +436086 863639 +436106 729731 +436122 1.16391e+06 +436153 838419 +436156 842472 +436178 1.16933e+06 +436192 879519 +436200 955961 +436208 949883 +436222 1.16237e+06 +436228 877944 +436231 969422 +436242 725189 +436253 753675 +436275 897708 +436319 1.11773e+06 +436333 887294 +436347 914967 +436350 959325 +436367 1.13299e+06 +436375 941019 +436406 721444 +436414 702414 +436422 722522 +436433 760689 +436442 760864 +436461 1.08211e+06 +436481 933681 +436489 723197 +436522 903439 +436522 944608 +436522 947267 +436528 902233 +436536 834661 +436536 977825 +436542 962125 +436569 908542 +436575 715008 +436583 880069 +436589 1.23318e+06 +436614 702558 +436619 912183 +436631 1.16686e+06 +436647 968106 +436667 929744 +436669 946192 +436703 920831 +436703 935758 +436714 1.16815e+06 +436725 1.11914e+06 +436728 723092 +436728 843806 +436767 1.16911e+06 +436769 703717 +436775 951714 +436794 704447 +436808 1.14363e+06 +436861 885464 +436869 923889 +436936 883608 +436953 716311 +436958 1.1201e+06 +436972 1.14351e+06 +436981 854836 +436983 863639 +436986 954683 +437022 722900 +437022 910131 +437025 1.24096e+06 +437058 925719 +437067 730286 +437069 1.16619e+06 +437072 889900 +437094 980294 +437097 929694 +437100 749747 +437100 829317 +437156 984847 +437175 965025 +437208 919767 +437208 1.11989e+06 +437233 1.11111e+06 +437242 973886 +437292 878106 +437322 834511 +437347 702083 +437353 887811 +437403 928692 +437408 902722 +437419 907792 +437461 937286 +437467 989581 +437467 1.22461e+06 +437486 879769 +437508 877144 +437567 845858 +437569 716886 +437594 913464 +437614 967400 +437622 947069 +437633 915683 +437639 933289 +437667 1.03598e+06 +437678 941656 +437731 884469 +437817 864331 +437853 1.16942e+06 +437861 969272 +437867 754922 +437914 893197 +437950 953200 +437964 702594 +437972 900772 +437978 1.23058e+06 +437981 730881 +438006 701872 +438014 912394 +438019 830008 +438067 917914 +438078 886747 +438083 917528 +438108 993303 +438114 884833 +438194 831808 +438194 847686 +438261 967058 +438261 1.11789e+06 +438264 882461 +438278 944369 +438300 832700 +438306 906214 +438333 726344 +438333 880178 +438339 878200 +438339 1.01509e+06 +438342 704389 +438350 848669 +438419 938317 +438422 888358 +438442 889600 +438447 826514 +438456 921889 +438486 734239 +438500 963983 +438508 891217 +438522 696286 +438536 839650 +438547 1.04204e+06 +438556 924883 +438569 701036 +438600 760058 +438664 951167 +438667 930508 +438706 956000 +438725 961283 +438728 933011 +438731 1.11748e+06 +438736 1.16498e+06 +438750 855100 +438769 1.16994e+06 +438792 901653 +438822 844847 +438836 894933 +438844 912350 +438867 1.11677e+06 +438881 941564 +438883 1.00712e+06 +438906 928475 +438931 909903 +438933 756739 +438939 934936 +438958 753928 +438992 910811 +439006 852581 +439011 858517 +439097 1.00058e+06 +439106 698211 +439125 880356 +439144 699658 +439147 1.13612e+06 +439147 1.16197e+06 +439150 877472 +439181 1.23023e+06 +439186 1.22782e+06 +439225 902714 +439250 726664 +439275 699764 +439289 939558 +439325 1.03575e+06 +439389 949294 +439394 829969 +439411 832714 +439442 908128 +439461 761194 +439500 880842 +439547 862800 +439553 864525 +439583 947944 +439633 912561 +439681 889433 +439700 1.16818e+06 +439706 898167 +439742 756156 +439747 759111 +439781 756097 +439786 905039 +439792 711208 +439808 844864 +439822 1.17237e+06 +439825 968142 +439828 1.24099e+06 +439831 839589 +439844 918692 +439878 957556 +439883 922283 +439925 721294 +439925 1.02241e+06 +439961 700611 +440006 963172 +440011 759667 +440047 940656 +440056 914419 +440061 971136 +440078 760447 +440078 1.16916e+06 +440108 975264 +440125 757947 +440153 731678 +440164 709811 +440169 1.07955e+06 +440192 847994 +440217 924697 +440247 885425 +440261 900739 +440267 1.16962e+06 +440275 917697 +440281 928544 +440289 881628 +440300 927506 +440328 926453 +440394 887442 +440394 1.01665e+06 +440419 890983 +440422 954358 +440444 929975 +440461 829942 +440464 1.23021e+06 +440483 734603 +440486 836958 +440489 1.2335e+06 +440494 965950 +440500 916392 +440508 944181 +440522 1.23086e+06 +440536 711289 +440536 982753 +440547 707133 +440583 1.21314e+06 +440625 916956 +440661 878842 +440669 761306 +440692 927556 +440717 882989 +440717 1.11448e+06 +440747 892878 +440758 885250 +440778 935072 +440783 1.16933e+06 +440789 691822 +440792 985692 +440806 1.03231e+06 +440817 913489 +440839 932258 +440872 697994 +440881 758075 +440886 876575 +440953 693761 +440978 702317 +440978 918167 +440997 1.04628e+06 +441003 702153 +441025 851469 +441036 691094 +441036 1.2313e+06 +441058 942186 +441103 949044 +441108 887125 +441117 703922 +441125 1.03068e+06 +441161 937078 +441197 701081 +441278 763333 +441303 922514 +441306 909981 +441319 917186 +441333 730794 +441372 1.23065e+06 +441403 881639 +441447 878214 +441511 726569 +441511 1.03308e+06 +441522 720378 +441536 879567 +441536 928994 +441539 875692 +441544 757092 +441572 1.08871e+06 +441597 750319 +441636 939992 +441650 921714 +441650 938811 +441661 925347 +441672 732544 +441733 940336 +441742 932461 +441769 725061 +441772 880642 +441839 734361 +441858 884625 +441936 852133 +441969 725025 +441992 756072 +441994 877214 +442014 926461 +442022 884464 +442044 938153 +442097 690653 +442097 951283 +442133 719114 +442139 705453 +442139 894922 +442153 757975 +442189 935678 +442194 1.23204e+06 +442231 954692 +442236 705139 +442272 934444 +442275 918350 +442300 697758 +442303 697672 +442311 952639 +442333 956189 +442333 958719 +442361 964808 +442389 949756 +442392 876411 +442394 760861 +442444 697719 +442444 862961 +442444 863242 +442511 1.16968e+06 +442519 854011 +442528 915014 +442597 888647 +442600 725758 +442611 962872 +442619 884153 +442633 1.0495e+06 +442658 883142 +442694 835147 +442722 883389 +442722 929853 +442728 1.21173e+06 +442731 925447 +442742 1.23169e+06 +442761 941872 +442764 842386 +442781 724269 +442781 882719 +442783 961344 +442794 739803 +442794 834903 +442797 683256 +442800 883183 +442842 966853 +442858 697914 +442911 1.05502e+06 +442911 1.21548e+06 +442925 939647 +442942 926689 +442944 912350 +442947 908514 +442950 932686 +442972 947239 +443044 927903 +443050 699775 +443061 717706 +443106 697800 +443114 967981 +443125 899042 +443125 944603 +443147 847647 +443200 919147 +443214 889336 +443236 969261 +443244 752514 +443256 938375 +443258 881628 +443294 741317 +443347 886381 +443353 852150 +443358 759181 +443367 754633 +443378 727567 +443478 878272 +443483 1.06698e+06 +443508 898653 +443514 1.17266e+06 +443522 1.03765e+06 +443536 1.00373e+06 +443569 914203 +443581 890858 +443633 982139 +443636 862050 +443636 973769 +443644 971328 +443675 913164 +443683 1.00351e+06 +443731 716106 +443767 1.03729e+06 +443800 1.08038e+06 +443836 898172 +443839 920328 +443842 1.23109e+06 +443875 682044 +443875 975500 +443878 711736 +443894 937300 +443897 1.18949e+06 +443928 887397 +443936 1.22984e+06 +443978 1.22735e+06 +444006 926236 +444019 952556 +444053 729933 +444064 1.04375e+06 +444078 740875 +444097 1.03509e+06 +444108 833322 +444108 853989 +444161 1.18952e+06 +444169 949253 +444178 1.19112e+06 +444203 833308 +444214 841167 +444239 897803 +444258 690069 +444269 1.24068e+06 +444389 935811 +444392 901244 +444411 921478 +444447 885789 +444467 943950 +444469 957881 +444489 880603 +444494 922667 +444508 892847 +444511 908411 +444564 895439 +444583 689247 +444583 875031 +444583 931614 +444611 1.03638e+06 +444633 962469 +444633 1.18709e+06 +444644 889197 +444653 726850 +444669 731714 +444686 711856 +444753 701886 +444758 732125 +444775 884506 +444803 934283 +444814 702000 +444822 899639 +444889 715697 +444892 1.08056e+06 +444906 731114 +444908 1.03859e+06 +444914 731861 +444936 895586 +444983 845919 +445047 723686 +445047 1.14231e+06 +445050 734806 +445069 929053 +445072 964239 +445081 891306 +445150 883303 +445164 1.16041e+06 +445183 989881 +445192 880197 +445194 895458 +445214 994411 +445236 895744 +445258 1.21212e+06 +445264 1.09056e+06 +445283 939075 +445292 947206 +445328 675989 +445336 720036 +445339 704564 +445339 945261 +445367 1.22906e+06 +445386 877039 +445394 951167 +445403 697225 +445403 1.23366e+06 +445431 943661 +445433 684200 +445433 935758 +445469 696217 +445497 913925 +445514 949842 +445519 696322 +445531 942203 +445536 705514 +445600 905961 +445608 705458 +445617 725989 +445625 925336 +445647 1.23261e+06 +445678 916708 +445722 912272 +445736 687961 +445747 969019 +445758 914700 +445856 924503 +445883 695992 +445908 897672 +445928 702286 +445956 751694 +445986 715117 +446003 909628 +446083 940803 +446089 874325 +446089 956739 +446181 754075 +446194 862264 +446206 887622 +446217 1.23937e+06 +446228 937683 +446264 919656 +446269 900075 +446278 893086 +446292 921922 +446336 862344 +446336 1.21128e+06 +446356 726808 +446367 1.23105e+06 +446369 1.24052e+06 +446378 688456 +446378 695036 +446397 731108 +446403 931433 +446497 932425 +446531 1.23101e+06 +446564 832947 +446614 847147 +446622 1.11103e+06 +446689 901717 +446697 749817 +446706 701517 +446714 1.03852e+06 +446722 882425 +446803 911197 +446811 1.2306e+06 +446931 735625 +446942 754867 +446994 734533 +447050 1.22848e+06 +447081 1.00059e+06 +447089 962761 +447131 697911 +447133 934225 +447147 1.0342e+06 +447150 674619 +447197 1.23009e+06 +447214 737242 +447219 1.23919e+06 +447228 970297 +447300 1.16437e+06 +447319 932175 +447319 943500 +447322 924872 +447342 851758 +447369 904958 +447372 946167 +447394 931256 +447403 884447 +447408 890631 +447433 928522 +447439 947153 +447444 688375 +447458 966806 +447481 721767 +447489 928019 +447514 749947 +447539 1.08757e+06 +447542 1.22477e+06 +447578 902967 +447631 856206 +447636 912769 +447636 936256 +447650 697197 +447675 948953 +447678 932775 +447681 939272 +447692 941514 +447717 937811 +447747 1.22614e+06 +447764 949894 +447783 1.17828e+06 +447811 921458 +447822 886089 +447825 693839 +447828 939133 +447869 953514 +447892 952114 +447894 936019 +447906 958083 +447919 950969 +447931 897031 +447964 1.08506e+06 +447967 687619 +447972 1.06956e+06 +447975 698803 +447981 935267 +448008 749914 +448008 1.22793e+06 +448011 687783 +448011 900792 +448047 914431 +448086 1.24062e+06 +448100 955453 +448114 914983 +448117 722036 +448125 920714 +448147 718808 +448272 891694 +448278 929436 +448297 1.22793e+06 +448303 745139 +448342 873769 +448353 692744 +448375 1.08389e+06 +448386 687058 +448408 932981 +448411 1.2287e+06 +448433 1.22952e+06 +448481 930425 +448486 742953 +448486 1.23233e+06 +448508 937867 +448514 1.23186e+06 +448531 887881 +448547 934706 +448586 936614 +448614 926236 +448622 935306 +448644 752044 +448664 930003 +448664 1.23435e+06 +448731 916908 +448739 881428 +448753 1.07262e+06 +448756 919192 +448758 985183 +448778 977328 +448831 686725 +448833 694481 +448833 932828 +448836 931381 +448839 940414 +448872 878644 +448872 896200 +448878 943694 +448897 933497 +448900 883072 +448944 714964 +448956 854164 +448994 971147 +449008 935889 +449022 850608 +449028 927833 +449033 935661 +449033 941953 +449061 669906 +449069 728069 +449086 935928 +449089 1.07163e+06 +449097 896044 +449100 903156 +449111 1.16098e+06 +449133 935031 +449150 935531 +449181 731247 +449194 1.23316e+06 +449250 934625 +449264 913008 +449272 899633 +449281 748922 +449297 935222 +449328 960542 +449339 951872 +449342 686458 +449353 936319 +449361 946964 +449364 722056 +449367 936658 +449369 913928 +449397 935764 +449425 957233 +449431 1.23034e+06 +449461 686444 +449481 911506 +449508 929764 +449511 880467 +449519 910347 +449531 922911 +449531 929950 +449550 953661 +449564 905975 +449564 927656 +449583 1.24017e+06 +449592 896300 +449600 909369 +449611 907997 +449633 735878 +449636 938469 +449639 940472 +449667 923742 +449694 935139 +449714 936042 +449714 1.16283e+06 +449747 927567 +449767 856506 +449789 924356 +449800 932636 +449803 852111 +449808 888308 +449839 925558 +449861 1.22982e+06 +449864 734469 +449867 935714 +449903 1.23025e+06 +449917 931661 +449931 927567 +449939 733653 +449944 724003 +449958 928792 +449969 726717 +449975 917269 +449983 1.20215e+06 +449986 932056 +449992 883719 +450031 903356 +450050 720994 +450053 1.22782e+06 +450061 931564 +450072 936556 +450097 933489 +450097 961956 +450106 934553 +450117 999553 +450158 952383 +450214 927808 +450231 1.02036e+06 +450239 692903 +450269 930875 +450275 846747 +450314 927928 +450322 933383 +450328 933600 +450331 900739 +450350 991236 +450381 933864 +450408 932628 +450419 937889 +450436 920408 +450475 1.01601e+06 +450503 931564 +450533 932472 +450542 929564 +450544 877492 +450564 928058 +450575 930736 +450586 698828 +450586 921722 +450608 940731 +450617 834328 +450650 880342 +450650 939108 +450656 932017 +450681 1.22799e+06 +450697 929514 +450700 852644 +450725 934556 +450758 941897 +450761 933325 +450789 1.23485e+06 +450792 931469 +450817 943067 +450847 930097 +450861 932631 +450883 937342 +450900 929722 +450942 933561 +450953 935472 +450994 1.23394e+06 +451000 876306 +451003 914886 +451028 930789 +451050 932083 +451078 876142 +451078 932378 +451083 1.22896e+06 +451158 1.23206e+06 +451194 934022 +451200 932875 +451219 950431 +451231 925364 +451244 926733 +451272 945278 +451314 856167 +451386 903400 +451389 947778 +451403 891522 +451428 846603 +451439 1.22854e+06 +451475 1.22576e+06 +451486 931514 +451506 946828 +451558 936661 +451569 674053 +451581 851242 +451600 929931 +451603 930886 +451608 932347 +451672 911492 +451689 693850 +451719 938744 +451758 1.13895e+06 +451806 896833 +451825 1.22807e+06 +451833 692275 +451858 1.09246e+06 +451872 871208 +451889 672792 +451889 933972 +451931 953203 +451969 960194 +451978 933869 +452086 1.17864e+06 +452103 1.23198e+06 +452164 1.12637e+06 +452167 850139 +452192 966353 +452208 1.23075e+06 +452292 940017 +452311 1.22755e+06 +452325 880075 +452331 949397 +452333 932911 +452344 1.20184e+06 +452378 936542 +452386 686642 +452436 997767 +452439 935147 +452444 1.23114e+06 +452519 922711 +452536 689864 +452628 941242 +452631 1.22691e+06 +452661 932342 +452783 1.2301e+06 +452789 929850 +452897 1.22332e+06 +452917 964625 +452944 1.23175e+06 +452958 1.08913e+06 +453000 1.22772e+06 +453003 1.22972e+06 +453011 949439 +453039 935669 +453047 964444 +453056 937939 +453069 923619 +453142 916508 +453144 1.07362e+06 +453150 955997 +453153 944083 +453175 902083 +453181 852583 +453194 932022 +453206 927047 +453247 1.18087e+06 +453261 945458 +453319 973047 +453322 975197 +453325 937458 +453364 929969 +453417 1.23186e+06 +453489 1.11729e+06 +453533 1.19557e+06 +453544 1.17229e+06 +453561 926333 +453567 1.22839e+06 +453575 842239 +453575 1.22606e+06 +453622 685056 +453658 1.22611e+06 +453708 879522 +453733 849553 +453736 928897 +453806 947117 +453808 1.22594e+06 +453842 1.22763e+06 +453894 928478 +453933 938767 +453944 921422 +453975 1.2226e+06 +453981 929872 +454014 918489 +454019 926522 +454022 1.22752e+06 +454086 917439 +454086 968575 +454153 876075 +454169 920328 +454208 1.22669e+06 +454214 838183 +454222 1.16314e+06 +454264 1.17278e+06 +454314 1.2277e+06 +454317 849919 +454439 1.05407e+06 +454442 847867 +454444 990289 +454464 1.22638e+06 +454467 1.22758e+06 +454469 1.22529e+06 +454475 980983 +454514 925539 +454522 924544 +454531 996536 +454533 1.21129e+06 +454542 945181 +454556 1.12196e+06 +454558 944286 +454564 1.23843e+06 +454569 912731 +454594 695911 +454603 964333 +454631 911039 +454647 984861 +454686 1.22608e+06 +454711 897297 +454719 943406 +454833 1.18829e+06 +454836 1.22754e+06 +454853 929617 +454853 1.0897e+06 +454872 1.22802e+06 +454903 932475 +454944 1.22866e+06 +454975 957964 +454983 1.2243e+06 +454989 1.22763e+06 +455011 951242 +455042 1.22536e+06 +455050 1.22797e+06 +455061 917381 +455064 1.00032e+06 +455114 929800 +455200 1.23059e+06 +455200 1.23109e+06 +455228 1.23888e+06 +455231 1.22989e+06 +455236 1.22675e+06 +455261 925083 +455322 920192 +455344 1.22418e+06 +455372 1.00428e+06 +455394 1.22386e+06 +455461 902864 +455528 847839 +455572 942239 +455597 1.22559e+06 +455650 1.17916e+06 +455692 964342 +455700 935814 +455703 1.17527e+06 +455717 961731 +455719 889028 +455728 932242 +455761 924825 +455828 1.22352e+06 +455861 959136 +455864 929744 +455872 1.22398e+06 +455919 941658 +455953 968331 +455972 1.22992e+06 +456092 944514 +456136 1.23942e+06 +456144 955308 +456217 942067 +456275 685750 +456300 945697 +456367 894119 +456367 1.09251e+06 +456389 1.2266e+06 +456469 844744 +456503 953894 +456572 687103 +456592 924669 +456625 1.1056e+06 +456628 946897 +456647 939094 +456647 970494 +456667 1.2256e+06 +456692 1.08771e+06 +456700 1.21889e+06 +456717 1.22662e+06 +456722 1.18788e+06 +456747 948072 +456797 1.11038e+06 +456856 929653 +456967 904003 +457056 1.2152e+06 +457150 1.21463e+06 +457169 1.202e+06 +457228 931706 +457228 989406 +457278 1.21485e+06 +457311 944697 +457325 1.07611e+06 +457375 949522 +457394 919253 +457425 1.19194e+06 +457453 870644 +457544 1.22876e+06 +457558 936542 +457575 929622 +457694 996192 +457714 879947 +457761 1.11176e+06 +457764 926825 +457806 1.19216e+06 +457811 1.22532e+06 +457833 1.085e+06 +457839 847278 +457858 923808 +457869 879036 +457917 977506 +457950 880719 +458044 964989 +458086 961431 +458119 1.18489e+06 +458139 1.18424e+06 +458144 1.0081e+06 +458153 1.22741e+06 +458203 880658 +458208 1.20821e+06 +458225 918892 +458261 929683 +458294 957917 +458300 942933 +458347 1.00069e+06 +458350 1.09955e+06 +458400 1.19699e+06 +458406 1.19288e+06 +458406 1.22841e+06 +458528 870217 +458567 1.11332e+06 +458589 1.23192e+06 +458661 1.22405e+06 +458669 951519 +458708 1.12097e+06 +458769 932936 +458775 923672 +458842 1.06623e+06 +458853 953772 +458889 1.04552e+06 +458903 1.22806e+06 +458919 1.2396e+06 +458958 1.1949e+06 +459047 1.22743e+06 +459172 892442 +459175 1.19341e+06 +459267 1.16121e+06 +459344 904414 +459408 1.02159e+06 +459578 862461 +459747 948653 +459764 943622 +459817 941044 +459933 1.23921e+06 +459942 959764 +459964 684467 +460014 1.02636e+06 +460028 985267 +460042 956825 +460086 1.22843e+06 +460114 929442 +460131 914844 +460228 1.14177e+06 +460244 1.2391e+06 +460314 993786 +460342 1.12535e+06 +460494 1.18387e+06 +460522 1.18402e+06 +460642 886314 +460647 1.18342e+06 +460697 969014 +460706 936675 +460756 971514 +460811 886269 +460858 948656 +460892 1.22935e+06 +460911 945033 +460922 1.00629e+06 +460928 886422 +460981 883339 +460994 918247 +461014 1.23206e+06 +461078 976361 +461261 678408 +461303 949483 +461311 928672 +461336 1.00161e+06 +461381 934706 +461383 1.22937e+06 +461386 980900 +461450 1.15977e+06 +461469 1.22907e+06 +461531 953286 +461644 1.2294e+06 +461650 950389 +461653 1.23922e+06 +461831 1.03394e+06 +461875 1.22904e+06 +461881 1.2383e+06 +462003 1.2395e+06 +462033 1.23382e+06 +462069 1.19768e+06 +462114 1.19136e+06 +462150 1.19996e+06 +462258 976622 +462272 1.16028e+06 +462286 1.19099e+06 +462350 1.1624e+06 +462367 1.1212e+06 +462414 1.16466e+06 +462469 1.14159e+06 +462511 1.19901e+06 +462592 974558 +462633 1.19487e+06 +462636 965878 +462653 966056 +462664 1.06677e+06 +462667 950625 +462667 971319 +462667 1.00232e+06 +462706 1.18152e+06 +462753 1.22906e+06 +462806 957133 +462811 874408 +462831 960772 +462858 1.19283e+06 +463011 989542 +463044 1.1936e+06 +463192 1.1152e+06 +463217 954450 +463256 906608 +463322 1.13293e+06 +463394 1.17047e+06 +463422 1.20186e+06 +463433 942864 +463525 1.24053e+06 +463533 918222 +463550 855094 +463556 947919 +463572 982942 +463581 942006 +463592 987153 +463669 1.04284e+06 +463725 1.02327e+06 +463761 1.15937e+06 +463775 1.20308e+06 +463958 1.12729e+06 +463983 950144 +464022 1.20261e+06 +464039 1.01846e+06 +464050 1.16804e+06 +464081 943556 +464083 1.0584e+06 +464111 866478 +464164 1.17044e+06 +464167 1.17017e+06 +464281 902458 +464356 1.09834e+06 +464400 1.22846e+06 +464417 976808 +464425 951358 +464453 1.08541e+06 +464478 1.20419e+06 +464497 901864 +464542 927617 +464547 901708 +464736 938986 +464750 1.17602e+06 +464753 899397 +464775 939775 +464794 1.16254e+06 +464814 900528 +464822 939575 +464856 943603 +464886 876675 +464911 1.15798e+06 +464914 1.22937e+06 +464947 873542 +464992 876117 +465083 997708 +465100 1.14092e+06 +465150 916997 +465181 953758 +465206 942883 +465331 937100 +465392 1.02868e+06 +465436 873953 +465483 1.10901e+06 +465508 1.16924e+06 +465539 1.20382e+06 +465567 874372 +465575 1.20474e+06 +465586 1.22274e+06 +465622 921472 +465706 1.23296e+06 +465708 960828 +465747 1.22907e+06 +465789 1.16705e+06 +465839 917989 +465897 1.11915e+06 +465925 908836 +465928 1.12035e+06 +465944 955722 +466022 1.20505e+06 +466031 943092 +466064 1.20439e+06 +466181 1.20552e+06 +466231 976011 +466300 950886 +466486 970167 +466522 964194 +466542 1.20529e+06 +466622 1.22963e+06 +466636 1.1886e+06 +466639 924247 +466733 908947 +466811 680164 +466867 1.23732e+06 +467022 1.20754e+06 +467067 924281 +467164 1.22953e+06 +467181 944039 +467208 921039 +467217 924592 +467281 957006 +467311 939578 +467311 1.20698e+06 +467314 1.17179e+06 +467325 1.16999e+06 +467353 1.22988e+06 +467369 1.16769e+06 +467472 922253 +467539 895839 +467539 950978 +467567 884528 +467589 1.1408e+06 +467722 678344 +467786 884889 +467833 921064 +467900 681581 +467911 1.17249e+06 +467931 1.05312e+06 +467992 1.22869e+06 +467994 1.16555e+06 +468083 1.00783e+06 +468108 908181 +468150 1.01829e+06 +468172 958450 +468261 1.19174e+06 +468267 1.00889e+06 +468406 1.23231e+06 +468450 1.01411e+06 +468547 999156 +468569 1.22852e+06 +468606 680125 +468633 1.14048e+06 +468675 1.22265e+06 +468708 1.13944e+06 +468711 893139 +468722 1.13993e+06 +468739 967672 +468750 969000 +468753 965786 +468767 967031 +468772 967894 +468792 1.02789e+06 +468803 1.17363e+06 +468808 963164 +468839 1.02315e+06 +468853 1.03199e+06 +468864 960942 +468883 1.22687e+06 +468903 1.24103e+06 +468939 992994 +469006 972108 +469006 1.02045e+06 +469011 1.19629e+06 +469086 678264 +469103 1.17075e+06 +469106 987081 +469181 1.04004e+06 +469217 1.16897e+06 +469222 950583 +469233 980028 +469292 929194 +469422 1.22605e+06 +469556 1.23772e+06 +469631 1.24164e+06 +469678 1.19039e+06 +469722 1.18614e+06 +469736 1.23691e+06 +469811 1.23888e+06 +469814 1.23601e+06 +469833 1.20416e+06 +469850 1.04188e+06 +469933 935983 +469967 1.20547e+06 +470036 1.23408e+06 +470075 1.22908e+06 +470081 1.1714e+06 +470228 916706 +470344 1.22822e+06 +470381 1.22899e+06 +470533 1.23264e+06 +470625 1.09428e+06 +470700 886431 +470789 962586 +470969 1.2263e+06 +470981 1.22203e+06 +471014 945869 +471042 1.22433e+06 +471053 1.04712e+06 +471164 1.01299e+06 +471219 885689 +471269 885808 +471275 1.18379e+06 +471303 1.19277e+06 +471536 1.10218e+06 +471556 1.22433e+06 +471572 679358 +471586 1.00783e+06 +471633 1.22026e+06 +471700 1.22601e+06 +471733 884292 +471772 1.22185e+06 +471911 1.22289e+06 +471917 1.14891e+06 +471942 884072 +471956 1.20938e+06 +472033 1.22239e+06 +472044 1.2199e+06 +472156 1.23096e+06 +472233 1.17071e+06 +472236 1.20992e+06 +472283 934889 +472344 1.19851e+06 +472358 1.22549e+06 +472361 1.17369e+06 +472372 935300 +472375 884431 +472394 1.22356e+06 +472397 1.22515e+06 +472467 884539 +472483 1.22312e+06 +472531 1.22443e+06 +472586 685900 +472603 962586 +472633 1.01778e+06 +472647 1.22249e+06 +472711 1.117e+06 +472792 1.22251e+06 +472864 1.01922e+06 +472889 934275 +472892 1.01029e+06 +472944 912572 +472944 1.01622e+06 +472956 934186 +472994 1.22507e+06 +472997 965150 +473075 1.22227e+06 +473089 1.22002e+06 +473153 959683 +473178 1.19552e+06 +473206 932983 +473211 1.01381e+06 +473294 1.22579e+06 +473331 937925 +473333 1.1869e+06 +473353 1.16888e+06 +473458 1.05592e+06 +473517 968283 +473719 1.02754e+06 +473794 946039 +473803 931681 +473811 1.22234e+06 +473853 1.17171e+06 +473861 1.10925e+06 +473894 1.19489e+06 +473997 930722 +474019 1.22323e+06 +474039 970617 +474158 1.20292e+06 +474236 1.20309e+06 +474364 1.22339e+06 +474444 981236 +474497 991258 +474564 1.01137e+06 +474603 1.14882e+06 +474625 925397 +474703 1.15801e+06 +474706 1.22346e+06 +474736 948800 +474742 1.15927e+06 +474742 1.2226e+06 +474811 1.18253e+06 +474831 1.22216e+06 +474844 1.22293e+06 +474858 1.00443e+06 +474875 1.17575e+06 +474889 924647 +474892 928836 +474936 927778 +474958 1.21786e+06 +474981 973242 +474983 973700 +475000 1.113e+06 +475061 1.15998e+06 +475142 978356 +475197 921383 +475200 1.0089e+06 +475217 953981 +475225 1.20469e+06 +475233 925364 +475236 1.22623e+06 +475289 1.14101e+06 +475289 1.21824e+06 +475300 922369 +475303 1.22031e+06 +475325 926233 +475331 923400 +475361 962800 +475383 1.16118e+06 +475406 1.22635e+06 +475411 1.22175e+06 +475428 1.16181e+06 +475536 1.22663e+06 +475606 1.11545e+06 +475669 1.22157e+06 +475675 1.22631e+06 +475708 1.22221e+06 +475731 1.17681e+06 +475764 957511 +475831 1.22707e+06 +475850 1.22598e+06 +475964 1.2066e+06 +475972 1.15343e+06 +476000 1.22692e+06 +476064 1.22331e+06 +476092 1.14668e+06 +476092 1.22654e+06 +476106 1.22199e+06 +476114 1.19291e+06 +476147 1.11979e+06 +476211 1.22226e+06 +476225 1.22067e+06 +476247 1.2252e+06 +476319 1.22217e+06 +476369 958861 +476397 974531 +476447 1.17592e+06 +476464 1.22216e+06 +476472 1.2007e+06 +476481 1.21913e+06 +476483 1.17091e+06 +476492 996289 +476522 1.01415e+06 +476542 1.18149e+06 +476569 1.17195e+06 +476569 1.17282e+06 +476575 1.17239e+06 +476589 1.17425e+06 +476675 960097 +476742 1.2212e+06 +476778 1.16779e+06 +476800 991375 +476814 1.17282e+06 +476817 1.22208e+06 +476919 954308 +476936 1.14162e+06 +477033 1.22206e+06 +477086 919444 +477167 1.04156e+06 +477181 1.16951e+06 +477297 1.16769e+06 +477314 1.22551e+06 +477331 945483 +477342 975664 +477361 1.22645e+06 +477425 1.21984e+06 +477506 903342 +477569 1.2228e+06 +477575 1.22243e+06 +477589 1.18704e+06 +477600 1.22204e+06 +477614 1.22345e+06 +477639 981769 +477661 1.16786e+06 +477697 999350 +477736 971094 +477742 966078 +477847 1.22273e+06 +477883 1.22308e+06 +477964 1.22382e+06 +478022 1.03283e+06 +478056 922744 +478108 1.22376e+06 +478125 1.16896e+06 +478139 1.12679e+06 +478200 1.10672e+06 +478211 1.22314e+06 +478222 1.22281e+06 +478392 958542 +478411 1.20015e+06 +478525 926894 +478556 1.2197e+06 +478564 1.04044e+06 +478569 1.21696e+06 +478628 1.21815e+06 +478822 962739 +479033 918669 +479067 976264 +479131 1.22097e+06 +479189 973647 +479253 970325 +479300 970242 +479325 1.19037e+06 +479417 1.19002e+06 +479447 1.22303e+06 +479506 1.24384e+06 +479533 1.02134e+06 +479625 995297 +479656 1.18975e+06 +479664 1.16868e+06 +479772 1.02496e+06 +479792 1.22201e+06 +480083 1.1967e+06 +480403 1.22405e+06 +480428 983358 +480511 1.19902e+06 +480519 1.22176e+06 +480561 1.00929e+06 +480633 1.14072e+06 +480797 1.23101e+06 +480842 1.21968e+06 +480906 1.0564e+06 +480961 1.19779e+06 +480981 1.09048e+06 +481128 988647 +481131 1.05198e+06 +481172 1.22759e+06 +481183 1.23429e+06 +481192 961808 +481333 1.03633e+06 +481444 1.04516e+06 +481703 1.11945e+06 +481786 1.10111e+06 +481808 1.17036e+06 +481958 1.14312e+06 +481967 967725 +481969 1.06636e+06 +481989 1.22124e+06 +482200 1.22685e+06 +482258 1.14275e+06 +482325 1.01296e+06 +482364 1.01133e+06 +482414 1.22369e+06 +482556 1.216e+06 +482753 1.01428e+06 +482764 1.17714e+06 +482767 1.16552e+06 +482889 994372 +482917 973711 +482933 1.22642e+06 +483078 1.12249e+06 +483172 1.0239e+06 +483328 968206 +483444 1.03165e+06 +483458 1.00405e+06 +483597 1.07874e+06 +483614 1.19582e+06 +483636 1.20121e+06 +483689 999958 +483725 1.14181e+06 +483883 1.15555e+06 +483925 1.22494e+06 +483972 1.02938e+06 +483986 977408 +483989 935556 +484111 1.14337e+06 +484111 1.19526e+06 +484122 974103 +484214 1.22333e+06 +484500 968722 +484633 1.15889e+06 +484758 1.22324e+06 +484867 992094 +485039 1.22236e+06 +485053 1.11856e+06 +485106 1.10967e+06 +485128 1.22611e+06 +485333 1.08783e+06 +485344 1.23016e+06 +485394 1.21745e+06 +485467 1.17904e+06 +485500 1.09683e+06 +485569 1.13012e+06 +485711 971775 +485775 965203 +485867 933989 +485900 1.09231e+06 +486011 934108 +486108 1.18055e+06 +486331 1.12325e+06 +486483 1.18737e+06 +486608 998411 +486747 1.02082e+06 +486914 1.16315e+06 +487006 961814 +487053 1.19438e+06 +487125 945997 +487411 1.17416e+06 +487458 1.22401e+06 +487597 1.22487e+06 +487600 983678 +487633 1.01513e+06 +487744 969461 +487747 1.04562e+06 +487925 1.0542e+06 +487939 976219 +488031 1.02246e+06 +488131 1.00061e+06 +488272 1.00445e+06 +488392 997444 +488461 957625 +488467 1.2259e+06 +488578 996175 +488800 1.15052e+06 +489053 953142 +489094 1.0102e+06 +489142 1.03294e+06 +489203 1.22341e+06 +489233 979178 +489392 1.19434e+06 +489467 1.22451e+06 +489664 972433 +489939 1.22746e+06 +490000 1.22264e+06 diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/CMakeLists.txt b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/CMakeLists.txt new file mode 100644 index 000000000..6b69f6ec2 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/CMakeLists.txt @@ -0,0 +1,38 @@ + + +###################################################################################### +### 1) Include the sources +###################################################################################### + +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${MO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) +###################################################################################### + + +###################################################################################### +### 2) Define your target(s): just the tsp here +###################################################################################### + +SET(TSP_LIB_OUTPUT_PATH ../lib) +SET(LIBRARY_OUTPUT_PATH ${TSP_LIB_OUTPUT_PATH}) + +SET (TSP_SOURCES graph.cpp + route_init.cpp + route_eval.cpp + part_route_eval.cpp + edge_xover.cpp + order_xover.cpp + route_valid.cpp + partial_mapped_xover.cpp + city_swap.cpp + two_opt.cpp + two_opt_init.cpp + two_opt_next.cpp + two_opt_incr_eval.cpp + two_opt_tabu_list.cpp + two_opt_rand.cpp) + +ADD_LIBRARY(tsp STATIC ${TSP_SOURCES}) + +###################################################################################### diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/city_swap.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/city_swap.cpp new file mode 100644 index 000000000..567f53fb6 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/city_swap.cpp @@ -0,0 +1,24 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "city_swap.cpp" + +// (c) OPAC Team, LIFL, 2002-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "city_swap.h" + +bool CitySwap :: operator () (Route & __route) { + + std :: swap (__route [rng.random (__route.size ())], + __route [rng.random (__route.size ())]) ; + + __route.invalidate () ; + + return true ; +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/city_swap.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/city_swap.h new file mode 100644 index 000000000..784324e1f --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/city_swap.h @@ -0,0 +1,29 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "city_swap.h" + +// (c) OPAC Team, LIFL, 2002-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef city_swap_h +#define city_swap_h + +#include + +#include "route.h" + +/** Its swaps two vertices + randomly choosen */ +class CitySwap : public eoMonOp { + +public : + + bool operator () (Route & __route) ; + +} ; + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/edge_xover.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/edge_xover.cpp new file mode 100644 index 000000000..c8984e204 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/edge_xover.cpp @@ -0,0 +1,142 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "edge_xover.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include + +#include "edge_xover.h" +#include "route_valid.h" + +#define MAXINT 1000000 + +void +EdgeXover :: build_map (const Route & __par1, const Route & __par2) +{ + + unsigned int len = __par1.size () ; + + /* Initialization */ + _map.clear () ; + _map.resize (len) ; + + for (unsigned int i = 0 ; i < len ; i ++) + { + _map [__par1 [i]].insert (__par1 [(i + 1) % len]) ; + _map [__par2 [i]].insert (__par2 [(i + 1) % len]) ; + _map [__par1 [i]].insert (__par1 [(i - 1 + len) % len]) ; + _map [__par2 [i]].insert (__par2 [(i - 1 + len) % len]) ; + } + + visited.clear () ; + visited.resize (len, false) ; +} + +void +EdgeXover :: remove_entry (unsigned int __vertex, std :: vector > & __map) +{ + + std :: set & neigh = __map [__vertex] ; + + for (std :: set :: iterator it = neigh.begin () ; it != neigh.end () ; it ++) + { + __map [* it].erase (__vertex) ; + } + +} + +void +EdgeXover :: add_vertex (unsigned int __vertex, Route & __child) +{ + visited [__vertex] = true ; + __child.push_back (__vertex) ; + remove_entry (__vertex, _map) ; /* Removing entries */ +} + +void +EdgeXover :: cross (const Route & __par1, const Route & __par2, Route & __child) { + + build_map (__par1, __par2) ; + + unsigned int len = __par1.size () ; + + /* Go ! */ + __child.clear () ; + + unsigned int cur_vertex = rng.random (len) ; + + add_vertex (cur_vertex, __child) ; + + for (unsigned int i = 1 ; i < len ; i ++) { + + unsigned int len_min_entry = MAXINT ; + + std :: set & neigh = _map [cur_vertex] ; + + for (std :: set :: iterator it = neigh.begin () ; it != neigh.end () ; it ++) + { + unsigned int l = _map [* it].size () ; + if (len_min_entry > l) + { + len_min_entry = l ; + } + } + + std :: vector cand ; /* Candidates */ + + for (std :: set :: iterator it = neigh.begin () ; it != neigh.end () ; it ++) + { + unsigned int l = _map [* it].size () ; + if (len_min_entry == l) + { + cand.push_back (* it) ; + } + } + + if (! cand.size ()) + { + + /* Oh no ! Implicit mutation */ + for (unsigned int j = 0 ; j < len ; j ++) + { + if (! visited [j]) + { + cand.push_back (j) ; + } + } + } + + cur_vertex = cand [rng.random (cand.size ())] ; + + add_vertex (cur_vertex, __child) ; + } +} + +bool +EdgeXover :: operator () (Route & __route1, Route & __route2) +{ + + // Init. copy + Route par [2] ; + par [0] = __route1 ; + par [1] = __route2 ; + + cross (par [0], par [1], __route1) ; + cross (par [1], par [0], __route2) ; + + assert (valid (__route1)) ; + assert (valid (__route2)) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/edge_xover.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/edge_xover.h new file mode 100644 index 000000000..3c22e2f8f --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/edge_xover.h @@ -0,0 +1,47 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "edge_xover.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef edge_xover_h +#define edge_xover_h + +#include +#include + +#include + +#include "route.h" + +/** Edge Crossover */ +class EdgeXover : public eoQuadOp +{ + +public : + + bool operator () (Route & __route1, Route & __route2) ; + +private : + + void cross (const Route & __par1, const Route & __par2, Route & __child) ; /* Binary */ + + void remove_entry (unsigned int __vertex, std :: vector > & __map) ; + /* Updating the map of entries */ + + void build_map (const Route & __par1, const Route & __par2) ; + + void add_vertex (unsigned int __vertex, Route & __child) ; + + std :: vector > _map ; /* The handled map */ + + std :: vector visited ; /* Vertices that are already visited */ + +} ; + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/graph.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/graph.cpp new file mode 100644 index 000000000..0a0e07fcd --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/graph.cpp @@ -0,0 +1,90 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "graph.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include +#include + +#include "graph.h" + +namespace Graph { + + static std :: vector > vectCoord ; // Coordinates + + static std :: vector > dist ; // Distances Mat. + + unsigned size () + { + return dist.size () ; + } + + void computeDistances () + { + + // Dim. + unsigned int numCities = vectCoord.size () ; + dist.resize (numCities) ; + for (unsigned int i = 0 ; i < dist.size () ; i ++) + { + dist [i].resize (numCities) ; + } + + // Computations. + for (unsigned int i = 0 ; i < dist.size () ; i ++) + { + for (unsigned int j = i + 1 ; j < dist.size () ; j ++) + { + double distX = (double)(vectCoord [i].first - vectCoord [j].first) ; + double distY = (double)(vectCoord [i].second - vectCoord [j].second) ; + dist [i] [j] = dist [j] [i] = (unsigned) (sqrt ((float) (distX * distX + distY * distY)) + 0.5) ; + } + } + } + + void load (const char * __fileName) + { + + std :: ifstream f (__fileName) ; + + std :: cout << ">> Loading [" << __fileName << "]" << std :: endl ; + + if (f) + { + unsigned int num_vert ; + + f >> num_vert ; + vectCoord.resize (num_vert) ; + + for (unsigned int i = 0 ; i < num_vert ; i ++) + { + f >> vectCoord [i].first >> vectCoord [i].second ; + } + + f.close () ; + + computeDistances () ; + } + else + { + + std :: cout << __fileName << " doesn't exist !!!" << std :: endl ; + // Bye !!! + exit (1) ; + } + } + + float distance (unsigned int __from, unsigned int __to) + { + return (float)(dist [__from] [__to]) ; + } +} + + diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/graph.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/graph.h new file mode 100644 index 000000000..19baf8ac4 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/graph.h @@ -0,0 +1,30 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "graph.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef graph_h +#define graph_h + +#include +#include + +namespace Graph +{ + void load (const char * __file_name) ; + /* Loading cities + (expressed by their coordinates) + from the given file name */ + + float distance (unsigned int __from, unsigned int __to) ; + + unsigned int size () ; // How many cities ? +} + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/mix.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/mix.h new file mode 100644 index 000000000..390168d54 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/mix.h @@ -0,0 +1,25 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "mix.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef mix_h +#define mix_h + +#include + +template void mix (std :: vector & __vect) +{ + for (unsigned int i = 0 ; i < __vect.size () ; i ++) + { + std :: swap (__vect [i], __vect [rng.random (__vect.size ())]) ; + } +} + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/order_xover.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/order_xover.cpp new file mode 100644 index 000000000..54de70705 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/order_xover.cpp @@ -0,0 +1,94 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "order_xover.cpp" + +// (c) OPAC Team, LIFL, 2002-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include +#include + +#include + +#include "order_xover.h" +#include "route_valid.h" + +void OrderXover :: cross (const Route & __par1, const Route & __par2, Route & __child) +{ + + unsigned int cut = rng.random (__par1.size ()) ; + + /* To store vertices that have + already been crossed */ + std::vector v; + v.resize(__par1.size()); + + for (unsigned int i = 0 ; i < __par1.size () ; i ++) + { + v [i] = false ; + } + + /* Copy of the left partial + route of the first parent */ + for (unsigned int i = 0 ; i < cut ; i ++) + { + __child [i] = __par1 [i] ; + v [__par1 [i]] = true ; + } + + /* Searching the vertex of the second path, that ended + the previous first one */ + unsigned int from = 0 ; + for (unsigned int i = 0 ; i < __par2.size () ; i ++) + { + if (__par2 [i] == __child [cut - 1]) + { + from = i ; + break ; + } + } + + /* Selecting a direction + Left or Right */ + char direct = rng.flip () ? 1 : -1 ; + + /* Copy of the left vertices from + the second parent path */ + unsigned int l = cut ; + + for (unsigned int i = 0 ; i < __par2.size () ; i ++) + { + unsigned int bidule /* :-) */ = (direct * i + from + __par2.size ()) % __par2.size () ; + if (! v [__par2 [bidule]]) + { + __child [l ++] = __par2 [bidule] ; + v [__par2 [bidule]] = true ; + } + } + + v.clear(); +} + +bool OrderXover :: operator () (Route & __route1, Route & __route2) +{ + + // Init. copy + Route par [2] ; + par [0] = __route1 ; + par [1] = __route2 ; + + cross (par [0], par [1], __route1) ; + cross (par [1], par [0], __route2) ; + + assert (valid (__route1)) ; + assert (valid (__route2)) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/order_xover.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/order_xover.h new file mode 100644 index 000000000..587c35652 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/order_xover.h @@ -0,0 +1,32 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "order_xover.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef order_xover_h +#define order_xover_h + +#include + +#include "route.h" + +/** Order Crossover */ +class OrderXover : public eoQuadOp +{ + +public : + + bool operator () (Route & __route1, Route & __route2) ; + +private : + + void cross (const Route & __par1, const Route & __par2, Route & __child) ; +} ; + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_route_eval.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_route_eval.cpp new file mode 100644 index 000000000..53e41a5d4 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_route_eval.cpp @@ -0,0 +1,27 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "part_route_eval.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "part_route_eval.h" +#include "graph.h" + +PartRouteEval :: PartRouteEval (float __from, float __to) : from (__from), to (__to) {} + +void PartRouteEval :: operator () (Route & __route) +{ + float len = 0 ; + + for (unsigned int i = (unsigned int) (__route.size () * from) ; i < (unsigned int ) (__route.size () * to) ; i ++) + { + len -= Graph :: distance (__route [i], __route [(i + 1) % Graph :: size ()]) ; + } + + __route.fitness (len) ; +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_route_eval.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_route_eval.h new file mode 100644 index 000000000..2fbd3b35c --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_route_eval.h @@ -0,0 +1,37 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "part_route_eval.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef part_route_eval_h +#define part_route_eval_h + +#include + +#include "route.h" + +/** Route Evaluator */ +class PartRouteEval : public eoEvalFunc +{ + +public : + + /** Constructor */ + PartRouteEval (float __from, float __to) ; + + void operator () (Route & __route) ; + +private : + + float from, to ; + +} ; + + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_two_opt_init.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_two_opt_init.cpp new file mode 100644 index 000000000..9f674916c --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_two_opt_init.cpp @@ -0,0 +1,20 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "part_two_opt_init.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "part_two_opt_init.h" + +void PartTwoOptInit :: operator () (TwoOpt & __move, const Route & __route) +{ + __move.first = rng.random (__route.size () - 6) ; + __move.second = __move.first + 2 ; +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_two_opt_init.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_two_opt_init.h new file mode 100644 index 000000000..406a4c64f --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_two_opt_init.h @@ -0,0 +1,29 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "part_two_opt_init.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef part_two_opt_init_h +#define part_two_opt_init_h + +#include + +#include "two_opt.h" + +/** It sets the first couple of edges */ +class PartTwoOptInit : public moMoveInit +{ + +public : + + void operator () (TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_two_opt_next.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_two_opt_next.cpp new file mode 100644 index 000000000..3fab484ec --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_two_opt_next.cpp @@ -0,0 +1,32 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "part_two_opt_next.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "part_two_opt_next.h" +#include "graph.h" + +bool TwoOptNext :: operator () (TwoOpt & __move, const Route & __route) +{ + if (__move.first == Graph :: size () - 4 && __move.second == __move.first + 2) + { + return false ; + } + else + { + __move.second ++ ; + if (__move.second == Graph :: size () - 1) + { + __move.first ++ ; + __move.second = __move.first + 2 ; + } + + return true ; + } +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_two_opt_next.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_two_opt_next.h new file mode 100644 index 000000000..e9ef5bb4e --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/part_two_opt_next.h @@ -0,0 +1,28 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "part_two_opt_next.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef part_two_opt_next_h +#define part_two_opt_next_h + +#include +#include "two_opt.h" + +/** It updates a couple of edges */ +class PartTwoOptNext : public moNextMove +{ + +public : + + bool operator () (TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/partial_mapped_xover.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/partial_mapped_xover.cpp new file mode 100644 index 000000000..2c57e70a3 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/partial_mapped_xover.cpp @@ -0,0 +1,93 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "partial_mapped_xover.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include + +#include + +#include "partial_mapped_xover.h" +#include "route_valid.h" +#include "mix.h" + +void PartialMappedXover :: repair (Route & __route, unsigned __cut1, unsigned __cut2) +{ + + std::vector v; // Number of times a cities are visited ... + + v.resize(__route.size ()); + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + v [i] = 0 ; + } + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + v [__route [i]] ++ ; + } + + std :: vector vert ; + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + if (! v [i]) + { + vert.push_back (i) ; + } + } + + mix (vert) ; + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + if (i < __cut1 || i >= __cut2) + { + if (v [__route [i]] > 1) + { + __route [i] = vert.back () ; + vert.pop_back () ; + } + } + } + + v.clear(); +} + +bool PartialMappedXover :: operator () (Route & __route1, Route & __route2) +{ + unsigned int cut1 = rng.random (__route1.size ()), cut2 = rng.random (__route2.size ()) ; + + if (cut2 < cut1) + { + std :: swap (cut1, cut2) ; + } + + // Between the cuts + for (unsigned int i = cut1 ; i < cut2 ; i ++) + { + std :: swap (__route1 [i], __route2 [i]) ; + } + + // Outside the cuts + repair (__route1, cut1, cut2) ; + repair (__route2, cut1, cut2) ; + + // Debug + assert (valid (__route1)) ; + assert (valid (__route2)) ; + + __route1.invalidate () ; + __route2.invalidate () ; + + return true ; +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/partial_mapped_xover.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/partial_mapped_xover.h new file mode 100644 index 000000000..a128fb9de --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/partial_mapped_xover.h @@ -0,0 +1,31 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "partial_mapped_xover.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef partial_mapped_xover_h +#define partial_mapped_xover_h + +#include + +#include "route.h" + +/** Partial Mapped Crossover */ +class PartialMappedXover : public eoQuadOp { + +public : + + bool operator () (Route & __route1, Route & __route2) ; + +private : + + void repair (Route & __route, unsigned __cut1, unsigned __cut2) ; +} ; + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route.h new file mode 100644 index 000000000..2489b63bc --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route.h @@ -0,0 +1,19 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef route_h +#define route_h + +#include + +typedef eoVector Route ; // [Fitness (- length), Gene (city)] + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_eval.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_eval.cpp new file mode 100644 index 000000000..0d0d6e413 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_eval.cpp @@ -0,0 +1,26 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route_eval.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "route_eval.h" +#include "graph.h" + +void RouteEval :: operator () (Route & __route) +{ + + float len = 0 ; + + for (unsigned int i = 0 ; i < Graph :: size () ; i ++) + { + len -= Graph :: distance (__route [i], __route [(i + 1) % Graph :: size ()]) ; + } + + __route.fitness (len) ; +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_eval.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_eval.h new file mode 100644 index 000000000..69b9c7737 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_eval.h @@ -0,0 +1,30 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route_eval.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef route_eval_h +#define route_eval_h + +#include + +#include "route.h" + +/** Route Evaluator */ +class RouteEval : public eoEvalFunc +{ + +public : + + void operator () (Route & __route) ; + +} ; + + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_init.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_init.cpp new file mode 100644 index 000000000..f22ca1bf2 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_init.cpp @@ -0,0 +1,38 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route_init.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include + +#include "route_init.h" +#include "graph.h" + +void RouteInit :: operator () (Route & __route) +{ + + // Init. + __route.clear () ; + for (unsigned int i = 0 ; i < Graph :: size () ; i ++) + { + __route.push_back (i) ; + } + + // Swap. cities + + for (unsigned int i = 0 ; i < Graph :: size () ; i ++) + { + //unsigned int j = rng.random (Graph :: size ()) ; + + unsigned int j = (unsigned int) (Graph :: size () * (rand () / (RAND_MAX + 1.0))) ; + unsigned int city = __route [i] ; + __route [i] = __route [j] ; + __route [j] = city ; + } +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_init.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_init.h new file mode 100644 index 000000000..654c1a926 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_init.h @@ -0,0 +1,28 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route_init.h" + +// (c) OPAC Team, LIFL, 2002-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef route_init_h +#define route_init_h + +#include + +#include "route.h" + +class RouteInit : public eoInit +{ + +public : + + void operator () (Route & __route) ; + +} ; + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_valid.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_valid.cpp new file mode 100644 index 000000000..be4c7fc0c --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_valid.cpp @@ -0,0 +1,43 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route_valid.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "route_valid.h" + +#include + +bool valid (Route & __route) +{ + + std::vector t; + t.resize(__route.size()); + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + t [i] = 0 ; + } + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + t [__route [i]] ++ ; + } + + for (unsigned int i = 0 ; i < __route.size () ; i ++) + { + if (t [i] != 1) + { + t.clear(); + return false ; + } + } + + t.clear(); + return true ; // OK. +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_valid.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_valid.h new file mode 100644 index 000000000..90763d7fc --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/route_valid.h @@ -0,0 +1,19 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "route_valid.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef route_valid_h +#define route_valid_h + +#include "route.h" + +bool valid (Route & __route) ; + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt.cpp new file mode 100644 index 000000000..9aa779d50 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt.cpp @@ -0,0 +1,47 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt.h" + +TwoOpt TwoOpt :: operator ! () const +{ + TwoOpt move = * this ; + std :: swap (move.first, move.second) ; + + return move ; +} + +void TwoOpt :: operator () (Route & __route) +{ + + std :: vector seq_cities ; + + for (unsigned int i = second ; i > first ; i --) + { + seq_cities.push_back (__route [i]) ; + } + + unsigned int j = 0 ; + for (unsigned int i = first + 1 ; i < second + 1 ; i ++) + { + __route [i] = seq_cities [j ++] ; + } +} + +void TwoOpt :: readFrom (std :: istream & __is) +{ + __is >> first >> second ; +} + +void TwoOpt :: printOn (std :: ostream & __os) const +{ + __os << first << ' ' << second ; +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt.h new file mode 100644 index 000000000..279a813c9 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt.h @@ -0,0 +1,36 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef two_opt_h +#define two_opt_h + +#include + +#include +#include + +#include "route.h" + +class TwoOpt : public moMove , public std :: pair , public eoPersistent +{ + +public : + + TwoOpt operator ! () const ; + + void operator () (Route & __route) ; + + void readFrom (std :: istream & __is) ; + + void printOn (std :: ostream & __os) const ; +} ; + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_incr_eval.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_incr_eval.cpp new file mode 100644 index 000000000..1b371104b --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_incr_eval.cpp @@ -0,0 +1,28 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "TwoOptIncrEval.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt_incr_eval.h" +#include "graph.h" + +float TwoOptIncrEval :: operator () (const TwoOpt & __move, const Route & __route) +{ + // From + unsigned int v1 = __route [__move.first], v1_next = __route [__move.first + 1] ; + + // To + unsigned int v2 = __route [__move.second], v2_next = __route [__move.second + 1] ; + + return __route.fitness () + - Graph :: distance (v1, v2) + - Graph :: distance (v1_next, v2_next) + + Graph :: distance (v1, v1_next) + + Graph :: distance (v2, v2_next) ; +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_incr_eval.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_incr_eval.h new file mode 100644 index 000000000..233cb264d --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_incr_eval.h @@ -0,0 +1,27 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "TwoOptIncrEval.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef two_optincr_eval_h +#define two_optincr_eval_h + +#include +#include "two_opt.h" + +class TwoOptIncrEval : public moMoveIncrEval +{ + +public : + + float operator () (const TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_init.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_init.cpp new file mode 100644 index 000000000..bc464f6ad --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_init.cpp @@ -0,0 +1,18 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_init.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt_init.h" + +void TwoOptInit :: operator () (TwoOpt & __move, const Route & __route) +{ + __move.first = 0 ; + __move.second = 2 ; +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_init.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_init.h new file mode 100644 index 000000000..b8460f69e --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_init.h @@ -0,0 +1,29 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_init.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef two_opt_init_h +#define two_opt_init_h + +#include + +#include "two_opt.h" + +/** It sets the first couple of edges */ +class TwoOptInit : public moMoveInit +{ + +public : + + void operator () (TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_next.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_next.cpp new file mode 100644 index 000000000..d0b297f51 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_next.cpp @@ -0,0 +1,32 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_next.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt_next.h" +#include "graph.h" + +bool TwoOptNext :: operator () (TwoOpt & __move, const Route & __route) +{ + if (__move.first == Graph :: size () - 4 && __move.second == __move.first + 2) + { + return false ; + } + else + { + __move.second ++ ; + if (__move.second == Graph :: size () - 1) + { + __move.first ++ ; + __move.second = __move.first + 2 ; + } + + return true ; + } +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_next.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_next.h new file mode 100644 index 000000000..ac60bc3e6 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_next.h @@ -0,0 +1,28 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_next.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef two_opt_next_h +#define two_opt_next_h + +#include +#include "two_opt.h" + +/** It updates a couple of edges */ +class TwoOptNext : public moNextMove +{ + +public : + + bool operator () (TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_rand.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_rand.cpp new file mode 100644 index 000000000..7db7f6cb7 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_rand.cpp @@ -0,0 +1,20 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_rand.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt_rand.h" +#include "graph.h" +#include + +void TwoOptRand :: operator () (TwoOpt & __move) +{ + __move.first = rng.random (Graph :: size () - 3) ; + __move.second = __move.first + 2 + rng.random (Graph :: size () - __move.first - 3) ; +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_rand.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_rand.h new file mode 100644 index 000000000..600cf8b77 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_rand.h @@ -0,0 +1,28 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_rand.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef two_opt_rand_h +#define two_opt_rand_h + +#include + +#include "two_opt.h" + +class TwoOptRand : public moRandMove +{ + +public : + + void operator () (TwoOpt & __move) ; + +} ; + +#endif diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_tabu_list.cpp b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_tabu_list.cpp new file mode 100644 index 000000000..f5492cde3 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_tabu_list.cpp @@ -0,0 +1,58 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_tabu_list.cpp" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#include "two_opt_tabu_list.h" +#include "graph.h" + +#define TABU_LENGTH 10 + +void TwoOptTabuList :: init () +{ + // Size (eventually) + tabu_span.resize (Graph :: size ()) ; + for (unsigned int i = 0 ; i < tabu_span.size () ; i ++) + { + tabu_span [i].resize (Graph :: size ()) ; + } + + // Clear + for (unsigned int i = 0 ; i < tabu_span.size () ; i ++) + { + for (unsigned int j = 0 ; j < tabu_span [i].size () ; j ++) + { + tabu_span [i] [j] = 0 ; + } + } +} + +bool TwoOptTabuList :: operator () (const TwoOpt & __move, const Route & __sol) +{ + return tabu_span [__move.first] [__move.second] > 0 ; +} + +void TwoOptTabuList :: add (const TwoOpt & __move, const Route & __sol) +{ + tabu_span [__move.first] [__move.second] = tabu_span [__move.second] [__move.first] = TABU_LENGTH ; +} + +void TwoOptTabuList :: update () +{ + for (unsigned int i = 0 ; i < tabu_span.size () ; i ++) + { + for (unsigned int j = 0 ; j < tabu_span [i].size () ; j ++) + { + if (tabu_span [i] [j] > 0) + { + tabu_span [i] [j] -- ; + } + } + } +} diff --git a/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_tabu_list.h b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_tabu_list.h new file mode 100644 index 000000000..29c6c8439 --- /dev/null +++ b/utilities/trunk/practices/paradiseo_practices_0208/tsp/src/two_opt_tabu_list.h @@ -0,0 +1,38 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "two_opt_tabu_list.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef two_opt_tabu_list_h +#define two_opt_tabu_list_h + +#include +#include "two_opt.h" +#include "route.h" + +/** The table of tabu movements, i.e. forbidden edges */ +class TwoOptTabuList : public moTabuList +{ +public : + + bool operator () (const TwoOpt & __move, const Route & __sol) ; + + void add (const TwoOpt & __move, const Route & __sol) ; + + void update () ; + + void init () ; + +private : + + std :: vector > tabu_span ; + +} ; + +#endif