diff --git a/trunk/paradiseo-mo/tutorial/AUTHORS b/trunk/paradiseo-mo/tutorial/AUTHORS new file mode 100644 index 000000000..6bb4943d4 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/AUTHORS @@ -0,0 +1 @@ +Documentation : boisson@lifl.fr diff --git a/trunk/paradiseo-mo/tutorial/ChangeLog b/trunk/paradiseo-mo/tutorial/ChangeLog new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-mo/tutorial/Makefile.am b/trunk/paradiseo-mo/tutorial/Makefile.am new file mode 100644 index 000000000..f691c2558 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/Makefile.am @@ -0,0 +1,28 @@ +SUBDIRS = docs src tutorial + +CXX=g++ + +AM_CXXFLAGS =\ + -Wall\ + -Werror\ + -Wno-deprecated\ + -ansi\ + -pedantic + +clean_all: clean_aux clean_doc + -@make clean + -@(rm -rf acconfig.h acinclude.m4 aclocal.m4 autom4te.cache copying install news readme stamp* texput.log authors todo;\ + rm -f configure config.* CO* dep* INST* install-sh miss* mkins* Makefile Makefile.in;\ + cd docs; rm -rf Makefile Makefile.in; cd ../src ; rm -rf Makefile Makefile.in; cd ../tutorial; rm -rf Makefile Makefile.in;\ + cd examples; rm -f Makefile Makefile.in; cd tsp ; rm -f Makefile Makefile.in; cd src ; rm -rf .deps/ Makefile Makefile.in;\ + cd ../../../Lesson1 ; rm -rf .deps/ Makefile Makefile.in; cd ../Lesson2 ; rm -rf .deps/ Makefile Makefile.in ; cd ../Lesson3 ;\ + rm -rf .deps/ Makefile Makefile.in) + +clean_aux: + -@find . \( -name "*~" -o -name "*.old" -o -name "#*" -o -name "*.bak" \) -print -exec rm -rf \{\} \; + +doc: + -@(cd docs; make doc) + +clean_doc: + -@(cd docs; make clean-local) diff --git a/trunk/paradiseo-mo/tutorial/NEWS b/trunk/paradiseo-mo/tutorial/NEWS new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/paradiseo-mo/tutorial/README b/trunk/paradiseo-mo/tutorial/README new file mode 100644 index 000000000..a05fca1ce --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/README @@ -0,0 +1,73 @@ + PARADISEO-MO README FILE +======================================================================= + +======================================================================= + +Welcome to PARADISEO-MO (Moving Objects), one of the extension of Evolving Objects library. + +================================================================== + BUILDING MO +================================================================== +The basic installation procedure goes the following: + +Go to your build-directory and run + $(SRCDIR)/configure + make + make doc + +where $(SRCDIR) is the top-level source directory of EO, i.e. where +the sources where unpacked. + +In case of problems, you can read the INSTALL file - but remember this +is a standard installation file from GNU and that it contains nothing +specific about MO. + +To clean everything, in the simply run + make clean_all + +=================================================================== + DIRECTORY STRUCTURE +=================================================================== +After unpacking the archive file, you should end up with the following +structure: + +.../ The MAIN PARADISEO-MO directory, created when unpacking. + | + +-- src SOURCE directory Contains most MO .h files. + | + | + +-- doc DOCUMENTATION directory (generated by Doxygen). + | | + | +- html HTML files - start at index.html. + | | + | +- latex latex files - use to generate Postcript doc. + | | + | +- man Unix man format documentation. + | + | + +-- tutorial TUTORIAL with lessons + | + +-examples APPLICATIONS - one directory per separate application. + | | + | +- tsp traveling salesman problem example. + | | + | +-src sources files for the lesson examples using the tsp. + | | + | +-benchs TSP Instance files. + | + +-Lesson1 How make a Hill Climbing on the TSP example. + | | + | +-benchs TSP Instance files. + | + +-Lesson2 How make a Tabu Search on the TSP example. + | | + | +-benchs TSP Instance files. + | + +-Lesson3 How make a Simulated Annealing on the TSP example. + | + +-benchs TSP Instance files. +=================================================================== + NOTES +=================================================================== + +Mailing list : paradiseo-help@lists.gforge.inria.fr diff --git a/trunk/paradiseo-mo/tutorial/autogen.sh b/trunk/paradiseo-mo/tutorial/autogen.sh new file mode 100755 index 000000000..0a4e95695 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/autogen.sh @@ -0,0 +1,154 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. + +srcdir=`dirname $0` +PKG_NAME="the package." + +DIE=0 + +(autoconf --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`autoconf' installed to." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + DIE=1 +} + +(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { + (libtool --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`libtool' installed." + echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && { + grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ + (gettext --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`gettext' installed." + echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +grep "^AM_GNOME_GETTEXT" $srcdir/configure.in >/dev/null && { + grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ + (gettext --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`gettext' installed." + echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +(automake --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`automake' installed." + echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + NO_AUTOMAKE=yes +} + +(doxygen --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**WARNING**: You need to have \`doxygen' to generate the documentation." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" +} + +# if no automake, don't bother testing for aclocal +test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: Missing \`aclocal'. The version of \`automake'" + echo "installed doesn't appear recent enough." + echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 +} + +if test "$DIE" -eq 1; then + exit 1 +fi + +if test -z "$*"; then + echo "**Warning**: I am going to run \`configure' with no arguments." + echo "If you wish to pass any to it, please specify them on the" + echo \`$0\'" command line." + echo +fi + +case $CC in +xlc ) + am_opt=--include-deps;; +esac + +for coin in `find $srcdir -name configure.in -print` +do + dr=`dirname $coin` + if test -f $dr/NO-AUTO-GEN; then + echo skipping $dr -- flagged as no auto-gen + else + echo processing $dr + macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` + ( cd $dr + aclocalinclude="$ACLOCAL_FLAGS" + for k in $macrodirs; do + if test -d $k; then + aclocalinclude="$aclocalinclude -I $k" + ##else + ## echo "**Warning**: No such directory \`$k'. Ignored." + fi + done + if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then + if grep "sed.*POTFILES" configure.in >/dev/null; then + : do nothing -- we still have an old unmodified configure.in + else + echo "Creating $dr/aclocal.m4 ..." + test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 + echo "Running gettextize... Ignore non-fatal messages." + echo "no" | gettextize --force --copy + echo "Making $dr/aclocal.m4 writable ..." + test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 + fi + fi + if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then + echo "Creating $dr/aclocal.m4 ..." + test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 + echo "Running gettextize... Ignore non-fatal messages." + echo "no" | gettextize --force --copy + echo "Making $dr/aclocal.m4 writable ..." + test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 + fi + if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then + echo "Running libtoolize..." + libtoolize --force --copy + fi + echo "Running aclocal $aclocalinclude ..." + aclocal $aclocalinclude + if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then + echo "Running autoheader..." + autoheader + fi + echo "Running automake --gnu $am_opt ..." + automake --add-missing --gnu $am_opt + echo "Running autoconf ..." + autoconf + ) + fi +done + +#conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c + +if test x$NOCONFIGURE = x; then + echo Running $srcdir/configure $conf_flags "$@" ... + $srcdir/configure $conf_flags "$@" \ + && echo Now type \`make\' to compile $PKG_NAME +else + echo Skipping configure process. +fi diff --git a/trunk/paradiseo-mo/tutorial/cleaner b/trunk/paradiseo-mo/tutorial/cleaner new file mode 100755 index 000000000..1e5c8c5ba --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/cleaner @@ -0,0 +1,7 @@ +(rm -rf acconfig.h acinclude.m4 aclocal.m4 autom4te.cache copying install news readme stamp* texput.log authors todo;\ +rm -f configure config.* CO* dep* INST* install-sh miss* mkins* Makefile Makefile.in;\ +cd docs; rm -rf Makefile Makefile.in; cd ../src ; rm -rf Makefile Makefile.in; cd ../tutorial; rm -rf Makefile Makefile.in;\ +cd examples; rm -f Makefile Makefile.in; cd tsp ; rm -f Makefile Makefile.in; cd src ; rm -rf .deps/ Makefile Makefile.in;\ +cd ../../../Lesson1 ; rm -rf .deps/ Makefile Makefile.in; cd ../Lesson2 ; rm -rf .deps/ Makefile Makefile.in ; cd ../Lesson3 ;\ +rm -rf .deps/ Makefile Makefile.in) +find . \( -name "*~" -o -name "*.old" -o -name "#*" -o -name "*.bak" -o -name "*.o" \) -print -exec rm -rf \{\} \; diff --git a/trunk/paradiseo-mo/tutorial/configure.in b/trunk/paradiseo-mo/tutorial/configure.in new file mode 100644 index 000000000..eacdfe81f --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/configure.in @@ -0,0 +1,52 @@ +AC_INIT(configure.in) +AM_INIT_AUTOMAKE(paradiseo-mo, 0.1) + +AC_ISC_POSIX +AC_PROG_CXX +AM_PROG_CC_STDC +AC_HEADER_STDC +#AC_CXX_HAVE_SSTREAM +AC_PROG_RANLIB + +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MAKE_SET + +AC_C_CONST +AC_C_INLINE +AC_TYPE_SIZE_T + +AC_SUBST(EO_DIR) + +dnl EO +AC_ARG_WITH(EOdir, + --with-EOdir : Giving the path of the EO tree., + dnl Well done :-) + EO_DIR="$withval" + if test ! -d $EO_DIR + then + echo "" + echo "# --with-EOdir Invalid directory $withval" + exit 1 + fi, + dnl Bouhhhh !!!! + echo "" + echo "# You forgot to give the path of the EO tree !" + echo "# Please write something like ... './configure --with-EOdir=\$HOME/eo'" + exit 1 + ) + +AC_OUTPUT([ +Makefile +src/Makefile +docs/Makefile +tutorial/Makefile +tutorial/examples/Makefile +tutorial/examples/tsp/Makefile +tutorial/examples/tsp/src/Makefile +tutorial/Lesson1/Makefile +tutorial/Lesson2/Makefile +tutorial/Lesson3/Makefile +]) + +echo "Type 'make doc' for building documentation" diff --git a/trunk/paradiseo-mo/tutorial/docs/Doxyfile b/trunk/paradiseo-mo/tutorial/docs/Doxyfile new file mode 100644 index 000000000..049bdf56a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/Doxyfile @@ -0,0 +1,236 @@ +# Doxyfile 1.5.1 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = PARADISEO-MO +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ../src/ +FILE_PATTERNS = *.cpp \ + *.h +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +IGNORE_PREFIX = mo +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = YES +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = mo.doxytag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = YES diff --git a/trunk/paradiseo-mo/tutorial/docs/Makefile.am b/trunk/paradiseo-mo/tutorial/docs/Makefile.am new file mode 100644 index 000000000..bad00ad7c --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/Makefile.am @@ -0,0 +1,5 @@ +doc: + -@doxygen Doxyfile + +clean-local: + rm -rf html latex man diff --git a/trunk/paradiseo-mo/tutorial/docs/html/annotated.html b/trunk/paradiseo-mo/tutorial/docs/html/annotated.html new file mode 100644 index 000000000..7a3fe4944 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/annotated.html @@ -0,0 +1,65 @@ + + +PARADISEO-MO: Class List + + + + +
+
+
+
+

PARADISEO-MO Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EmptySelectionSpecial class that describes the case of no selection
moAlgo< EOT >Description of an algorithm of the mo library
moAspirCrit< M >Description of the conditions in which a tabu move could be accepted
moBestImprSelect< M >One of the possible moMoveSelect
moCoolSchedThis class gives the description of a cooling schedule
moEasyCoolSchedOne of the possible moCoolSched
moFirstImprSelect< M >One possible moMoveSelect
moGenSolContinue< EOT >One possible stop criterion for a solution-based heuristic
moHC< M >Hill Climbing (HC)
moHCMoveLoopExpl< M >Iterative explorer used by a moHC
moImprBestFitAspirCrit< M >One of the possible moAspirCrit
moItRandNextMove< M >One of the possible moNextMove
moLSCheckPoint< M >Class which allows a checkpointing system
moMove< EOT >Definition of a move
moMoveExpl< M >Description of a move (moMove) explorer
moMoveIncrEval< M >(generally) Efficient evaluation function based a move and a solution
moMoveInit< M >Move (moMove) initializer
moMoveLoopExpl< M >Class which describes an iterative explorer
moMoveSelect< M >Class that describes a move selector (moMove)
moNextMove< M >Class which allows to generate a new move (moMove)
moNoAspirCrit< M >One of the possible aspiration criterion (moAspirCrit)
moRandImprSelect< M >One of the possible moMove selector (moMoveSelect)
moRandMove< M >Random move generator
moSA< M >Simulated Annealing (SA)
moSolContinue< EOT >Class that describes a stop criterion for a solution-based heuristic
moTabuList< M >Class describing a tabu list that a moTS uses
moTS< M >Tabu Search (TS)
moTSMoveLoopExpl< M >Explorer for a Tabu Search algorithm
+
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/class_empty_selection.html b/trunk/paradiseo-mo/tutorial/docs/html/class_empty_selection.html new file mode 100644 index 000000000..639e2f5d1 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/class_empty_selection.html @@ -0,0 +1,52 @@ + + +PARADISEO-MO: EmptySelection Class Reference + + + + +
+
+
+
+

EmptySelection Class Reference

Special class that describes the case of no selection. +More... +

+#include <moMoveSelect.h> +

+ + +
+


Detailed Description

+Special class that describes the case of no selection. +

+This class is used as an exception that can be thrown if a solution selector has completly failed. +

+ +

+Definition at line 21 of file moMoveSelect.h.


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classes.html b/trunk/paradiseo-mo/tutorial/docs/html/classes.html new file mode 100644 index 000000000..178d00b3c --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classes.html @@ -0,0 +1,52 @@ + + +PARADISEO-MO: Alphabetical List + + + + +
+
+
+
+

PARADISEO-MO Class Index

A | B | C | E | F | G | H | I | L | M | N | R | S | T

+ +
  A  
+
  H  
+
moMoveSelect   
moAlgo   moHC   
  N  
+
moAspirCrit   moHCMoveLoopExpl   moNextMove   
  B  
+
  I  
+
moNoAspirCrit   
moBestImprSelect   moImprBestFitAspirCrit   
  R  
+
  C  
+
moItRandNextMove   moRandImprSelect   
moCoolSched   
  L  
+
moRandMove   
  E  
+
moLSCheckPoint   
  S  
+
moEasyCoolSched   
  M  
+
moSA   
EmptySelection   moMove   moSolContinue   
  F  
+
moMoveExpl   
  T  
+
moFirstImprSelect   moMoveIncrEval   moTabuList   
  G  
+
moMoveInit   moTS   
moGenSolContinue   moMoveLoopExpl   moTSMoveLoopExpl   

A | B | C | E | F | G | H | I | L | M | N | R | S | T

+


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_algo.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_algo.html new file mode 100644 index 000000000..cdfcc6354 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_algo.html @@ -0,0 +1,55 @@ + + +PARADISEO-MO: moAlgo< EOT > Class Template Reference + + + + +
+
+
+
+

moAlgo< EOT > Class Template Reference

Description of an algorithm of the mo library. +More... +

+#include <moAlgo.h> +

+ + +
+


Detailed Description

+

template<class EOT>
+ class moAlgo< EOT >

+ +Description of an algorithm of the mo library. +

+moHC, moTS and moSA are 3 examples of algorithm of the mo library. +

+ +

+Definition at line 21 of file moAlgo.h.


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_aspir_crit-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_aspir_crit-members.html new file mode 100644 index 000000000..4e176532f --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_aspir_crit-members.html @@ -0,0 +1,37 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moAspirCrit< M > Member List

This is the complete list of members for moAspirCrit< M >, including all inherited members.

+ +
init()=0moAspirCrit< M > [pure virtual]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_aspir_crit.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_aspir_crit.html new file mode 100644 index 000000000..f10e382f8 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_aspir_crit.html @@ -0,0 +1,91 @@ + + +PARADISEO-MO: moAspirCrit< M > Class Template Reference + + + + +
+
+
+
+

moAspirCrit< M > Class Template Reference

Description of the conditions in which a tabu move could be accepted. +More... +

+#include <moAspirCrit.h> +

+

Inheritance diagram for moAspirCrit< M >: +

+ +moImprBestFitAspirCrit< M > +moNoAspirCrit< M > + +List of all members. + + + + + +

Public Member Functions

virtual void init ()=0
 Procedure which initialises all that needs a aspiration criterion.
+

Detailed Description

+

template<class M>
+ class moAspirCrit< M >

+ +Description of the conditions in which a tabu move could be accepted. +

+It is only a description... An object that herits from this class is needed to be used in a moTS. See moNoAspriCrit for example. +

+ +

+Definition at line 22 of file moAspirCrit.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + +
virtual void moAspirCrit< M >::init (  )  [pure virtual]
+
+
+ +

+Procedure which initialises all that needs a aspiration criterion. +

+It can be possible that this procedure do nothing... +

+Implemented in moImprBestFitAspirCrit< M >, and moNoAspirCrit< M >. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_aspir_crit.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_aspir_crit.png new file mode 100644 index 000000000..b959606a7 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_aspir_crit.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_best_impr_select-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_best_impr_select-members.html new file mode 100644 index 000000000..205260314 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_best_impr_select-members.html @@ -0,0 +1,43 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moBestImprSelect< M > Member List

This is the complete list of members for moBestImprSelect< M >, including all inherited members.

+ + + + + + + +
best_fitmoBestImprSelect< M > [private]
best_movemoBestImprSelect< M > [private]
first_timemoBestImprSelect< M > [private]
Fitness typedefmoBestImprSelect< M >
init(const Fitness &__fit)moBestImprSelect< M > [inline, virtual]
operator()(M &__move, Fitness &__fit)moBestImprSelect< M > [inline]
update(const M &__move, const Fitness &__fit)moBestImprSelect< M > [inline, virtual]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_best_impr_select.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_best_impr_select.html new file mode 100644 index 000000000..73911ad4e --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_best_impr_select.html @@ -0,0 +1,185 @@ + + +PARADISEO-MO: moBestImprSelect< M > Class Template Reference + + + + +
+
+
+
+

moBestImprSelect< M > Class Template Reference

One of the possible moMoveSelect. +More... +

+#include <moBestImprSelect.h> +

+

Inheritance diagram for moBestImprSelect< M >: +

+ +moMoveSelect< M > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

+void init (const Fitness &__fit)
 Procedure which initialise the exploration.
bool update (const M &__move, const Fitness &__fit)
 Function that indicates if the current move has not improved the fitness.
void operator() (M &__move, Fitness &__fit) throw (EmptySelection)
 Procedure which saved the best move and fitness.

Private Attributes

+bool first_time
 Allowing to know if at least one move has been generated.
+M best_move
 The best move.
+Fitness best_fit
 The best fitness.
+

Detailed Description

+

template<class M>
+ class moBestImprSelect< M >

+ +One of the possible moMoveSelect. +

+All neighbors are considered, and the movement which enables the best improvement is selected. +

+ +

+Definition at line 22 of file moBestImprSelect.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moBestImprSelect< M >::update (const M &  __move,
const Fitness __fit 
) [inline, virtual]
+
+
+ +

+Function that indicates if the current move has not improved the fitness. +

+If the given fitness enables an improvment, the move (moMove) and the fitness linked to this move are saved.

+

Parameters:
+ + + +
__move a move.
__fit a fitness linked to the move.
+
+
Returns:
TRUE if the move does not improve the fitness.
+ +

+Implements moMoveSelect< M >. +

+Definition at line 47 of file moBestImprSelect.h. +

+References moBestImprSelect< M >::best_fit, moBestImprSelect< M >::best_move, and moBestImprSelect< M >::first_time. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moBestImprSelect< M >::operator() (M &  __move,
Fitness __fit 
) throw (EmptySelection) [inline]
+
+
+ +

+Procedure which saved the best move and fitness. +

+

Parameters:
+ + + +
__move the current move (result of the procedure).
__fit the current fitness (result of the procedure).
+
+
Exceptions:
+ + +
EmptySelection if no move has improved the fitness.
+
+ +

+Definition at line 68 of file moBestImprSelect.h. +

+References moBestImprSelect< M >::best_fit, moBestImprSelect< M >::best_move, and moBestImprSelect< M >::first_time. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_best_impr_select.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_best_impr_select.png new file mode 100644 index 000000000..5b868e9d7 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_best_impr_select.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_cool_sched.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_cool_sched.html new file mode 100644 index 000000000..df5e14365 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_cool_sched.html @@ -0,0 +1,57 @@ + + +PARADISEO-MO: moCoolSched Class Reference + + + + +
+
+
+
+

moCoolSched Class Reference

This class gives the description of a cooling schedule. +More... +

+#include <moCoolSched.h> +

+

Inheritance diagram for moCoolSched: +

+ +moEasyCoolSched + + + +
+

Detailed Description

+This class gives the description of a cooling schedule. +

+It is only a description... An object that herits from this class is needed to be used in a moSA. See moEasyCoolSched for example. +

+ +

+Definition at line 22 of file moCoolSched.h.


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_cool_sched.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_cool_sched.png new file mode 100644 index 000000000..f41e6114c Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_cool_sched.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_easy_cool_sched-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_easy_cool_sched-members.html new file mode 100644 index 000000000..eda80b70c --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_easy_cool_sched-members.html @@ -0,0 +1,40 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moEasyCoolSched Member List

This is the complete list of members for moEasyCoolSched, including all inherited members.

+ + + + +
moEasyCoolSched(double __threshold, double __ratio)moEasyCoolSched [inline]
operator()(double &__temp)moEasyCoolSched [inline]
ratiomoEasyCoolSched [private]
thresholdmoEasyCoolSched [private]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_easy_cool_sched.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_easy_cool_sched.html new file mode 100644 index 000000000..4e38843d4 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_easy_cool_sched.html @@ -0,0 +1,147 @@ + + +PARADISEO-MO: moEasyCoolSched Class Reference + + + + +
+
+
+
+

moEasyCoolSched Class Reference

One of the possible moCoolSched. +More... +

+#include <moEasyCoolSched.h> +

+

Inheritance diagram for moEasyCoolSched: +

+ +moCoolSched + +List of all members. + + + + + + + + + + + + + + + +

Public Member Functions

 moEasyCoolSched (double __threshold, double __ratio)
 Simple constructor.
bool operator() (double &__temp)
 Function which proceeds to the cooling.

Private Attributes

+double threshold
 The temperature threhold.
+double ratio
 The decreasing factor of the temperature.
+

Detailed Description

+One of the possible moCoolSched. +

+The simpliest, the temperature decrease according to a ratio until it greater than a threshold. +

+ +

+Definition at line 22 of file moEasyCoolSched.h.


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
moEasyCoolSched::moEasyCoolSched (double  __threshold,
double  __ratio 
) [inline]
+
+
+ +

+Simple constructor. +

+

Parameters:
+ + + +
__threshold the threshold.
__ratio the ratio used to descrease the temperature.
+
+ +

+Definition at line 31 of file moEasyCoolSched.h. +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
bool moEasyCoolSched::operator() (double &  __temp  )  [inline]
+
+
+ +

+Function which proceeds to the cooling. +

+Decrease the temperature and indicates if it is greater than the threshold.

+

Parameters:
+ + +
__temp the current temperature.
+
+
Returns:
if the new temperature (current temperature * ratio) is greater than the threshold.
+ +

+Definition at line 44 of file moEasyCoolSched.h. +

+References ratio, and threshold. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_easy_cool_sched.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_easy_cool_sched.png new file mode 100644 index 000000000..b88ae27f6 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_easy_cool_sched.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_first_impr_select-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_first_impr_select-members.html new file mode 100644 index 000000000..9ce7a8ce5 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_first_impr_select-members.html @@ -0,0 +1,45 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moFirstImprSelect< M > Member List

This is the complete list of members for moFirstImprSelect< M >, including all inherited members.

+ + + + + + + + + +
best_fitmoFirstImprSelect< M > [private]
best_movemoFirstImprSelect< M > [private]
Fitness typedefmoFirstImprSelect< M >
init(const Fitness &__fit)moFirstImprSelect< M > [inline, virtual]
init_fitmoFirstImprSelect< M > [private]
operator()(M &__move, Fitness &__fit)moFirstImprSelect< M > [inline]
update(const M &__move, const typename M::EOType::Fitness &__fit)moFirstImprSelect< M > [inline]
moMoveSelect::update(const M &__move, const Fitness &__fit)=0moMoveSelect< M > [pure virtual]
validmoFirstImprSelect< M > [private]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_first_impr_select.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_first_impr_select.html new file mode 100644 index 000000000..288256efe --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_first_impr_select.html @@ -0,0 +1,216 @@ + + +PARADISEO-MO: moFirstImprSelect< M > Class Template Reference + + + + +
+
+
+
+

moFirstImprSelect< M > Class Template Reference

One possible moMoveSelect. +More... +

+#include <moFirstImprSelect.h> +

+

Inheritance diagram for moFirstImprSelect< M >: +

+ +moMoveSelect< M > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

virtual void init (const Fitness &__fit)
 Procedure which initialise the exploration.
bool update (const M &__move, const typename M::EOType::Fitness &__fit)
 Function that indicates if the current move has not improved the fitness.
void operator() (M &__move, Fitness &__fit) throw (EmptySelection)
 Procedure which saved the best move and fitness.

Private Attributes

+bool valid
 Allow to know if at least one move has improved the solution.
+M best_move
 Best stored movement.
+Fitness init_fit
 Initial fitness.
+Fitness best_fit
 Best stored fitness.
+

Detailed Description

+

template<class M>
+ class moFirstImprSelect< M >

+ +One possible moMoveSelect. +

+The neighborhood is explored until a move enables an improvment of the current solution. +

+ +

+Definition at line 23 of file moFirstImprSelect.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
virtual void moFirstImprSelect< M >::init (const Fitness __fit  )  [inline, virtual]
+
+
+ +

+Procedure which initialise the exploration. +

+It save the current fitness as the initial value for the fitness. +

+Implements moMoveSelect< M >. +

+Definition at line 35 of file moFirstImprSelect.h. +

+References moFirstImprSelect< M >::init_fit, and moFirstImprSelect< M >::valid. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moFirstImprSelect< M >::update (const M &  __move,
const typename M::EOType::Fitness &  __fit 
) [inline]
+
+
+ +

+Function that indicates if the current move has not improved the fitness. +

+If the given fitness enables an improvment, the move (moMove) should be applied to the current solution.

+

Parameters:
+ + + +
__move a move.
__fit a fitness linked to the move.
+
+
Returns:
TRUE if the move does not improve the fitness.
+ +

+Definition at line 52 of file moFirstImprSelect.h. +

+References moFirstImprSelect< M >::best_fit, moFirstImprSelect< M >::best_move, moFirstImprSelect< M >::init_fit, and moFirstImprSelect< M >::valid. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moFirstImprSelect< M >::operator() (M &  __move,
Fitness __fit 
) throw (EmptySelection) [inline]
+
+
+ +

+Procedure which saved the best move and fitness. +

+

Parameters:
+ + + +
__move the current move (result of the procedure).
__fit the current fitness (result of the procedure).
+
+
Exceptions:
+ + +
EmptySelection if no move has improved the fitness.
+
+ +

+Definition at line 76 of file moFirstImprSelect.h. +

+References moFirstImprSelect< M >::best_fit, moFirstImprSelect< M >::best_move, and moFirstImprSelect< M >::valid. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_first_impr_select.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_first_impr_select.png new file mode 100644 index 000000000..c7295b050 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_first_impr_select.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_gen_sol_continue-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_gen_sol_continue-members.html new file mode 100644 index 000000000..1d116e9d8 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_gen_sol_continue-members.html @@ -0,0 +1,41 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moGenSolContinue< EOT > Member List

This is the complete list of members for moGenSolContinue< EOT >, including all inherited members.

+ + + + + +
init()moGenSolContinue< EOT > [inline, virtual]
maxNumGenmoGenSolContinue< EOT > [private]
moGenSolContinue(unsigned __maxNumGen)moGenSolContinue< EOT > [inline]
numGenmoGenSolContinue< EOT > [private]
operator()(const EOT &__sol)moGenSolContinue< EOT > [inline]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_gen_sol_continue.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_gen_sol_continue.html new file mode 100644 index 000000000..9b0f5ecb7 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_gen_sol_continue.html @@ -0,0 +1,176 @@ + + +PARADISEO-MO: moGenSolContinue< EOT > Class Template Reference + + + + +
+
+
+
+

moGenSolContinue< EOT > Class Template Reference

One possible stop criterion for a solution-based heuristic. +More... +

+#include <moGenSolContinue.h> +

+

Inheritance diagram for moGenSolContinue< EOT >: +

+ +moSolContinue< EOT > + +List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moGenSolContinue (unsigned __maxNumGen)
 Simple constructor.
bool operator() (const EOT &__sol)
 Function that activates the stop criterion.
void init ()
 Procedure which allows to initialise the generation counter.

Private Attributes

+unsigned maxNumGen
 Iteration maximum number.
+unsigned numGen
 Iteration current number.
+

Detailed Description

+

template<class EOT>
+ class moGenSolContinue< EOT >

+ +One possible stop criterion for a solution-based heuristic. +

+The stop criterion corresponds to a maximum number of iteration. +

+ +

+Definition at line 21 of file moGenSolContinue.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
moGenSolContinue< EOT >::moGenSolContinue (unsigned  __maxNumGen  )  [inline]
+
+
+ +

+Simple constructor. +

+

Parameters:
+ + +
__maxNumGen the maximum number of generation.
+
+ +

+Definition at line 30 of file moGenSolContinue.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + + +
bool moGenSolContinue< EOT >::operator() (const EOT &  __sol  )  [inline]
+
+
+ +

+Function that activates the stop criterion. +

+Increments the counter and returns TRUE if the current number of iteration is lower than the given maximum number of iterations.

+

Parameters:
+ + +
__sol the current solution.
+
+
Returns:
TRUE or FALSE according to the current generation number.
+ +

+Definition at line 44 of file moGenSolContinue.h. +

+References moGenSolContinue< EOT >::maxNumGen, and moGenSolContinue< EOT >::numGen. +

+

+ +

+
+
+template<class EOT>
+ + + + + + + + +
void moGenSolContinue< EOT >::init (  )  [inline, virtual]
+
+
+ +

+Procedure which allows to initialise the generation counter. +

+It can also be used to reset the iteration counter. +

+Implements moSolContinue< EOT >. +

+Definition at line 54 of file moGenSolContinue.h. +

+References moGenSolContinue< EOT >::numGen. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_gen_sol_continue.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_gen_sol_continue.png new file mode 100644 index 000000000..84c8334c7 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_gen_sol_continue.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c-members.html new file mode 100644 index 000000000..c892afdcd --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c-members.html @@ -0,0 +1,43 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moHC< M > Member List

This is the complete list of members for moHC< M >, including all inherited members.

+ + + + + + + +
EOT typedefmoHC< M > [private]
Fitness typedefmoHC< M > [private]
full_evalmoHC< M > [private]
moHC(moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moMoveSelect< M > &__move_select, eoEvalFunc< EOT > &__full_eval)moHC< M > [inline]
moHC(moMoveExpl< M > &__move_expl, eoEvalFunc< EOT > &__full_eval)moHC< M > [inline]
move_explmoHC< M > [private]
operator()(EOT &__sol)moHC< M > [inline]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c.html new file mode 100644 index 000000000..807defc87 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c.html @@ -0,0 +1,230 @@ + + +PARADISEO-MO: moHC< M > Class Template Reference + + + + +
+
+
+
+

moHC< M > Class Template Reference

Hill Climbing (HC). +More... +

+#include <moHC.h> +

+

Inheritance diagram for moHC< M >: +

+ +moAlgo< M::EOType > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moHC (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moMoveSelect< M > &__move_select, eoEvalFunc< EOT > &__full_eval)
 Full constructor.
 moHC (moMoveExpl< M > &__move_expl, eoEvalFunc< EOT > &__full_eval)
 Light constructor.
bool operator() (EOT &__sol)
 Function which launches the HC.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef EOT::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moMoveExpl< M > & move_expl
 Complete exploration of the neighborhood.
+eoEvalFunc< EOT > & full_eval
 A full evaluation function.
+

Detailed Description

+

template<class M>
+ class moHC< M >

+ +Hill Climbing (HC). +

+Class which describes the algorithm for a hill climbing. +

+ +

+Definition at line 26 of file moHC.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moHC< M >::moHC (moMoveInit< M > &  __move_init,
moNextMove< M > &  __next_move,
moMoveIncrEval< M > &  __incr_eval,
moMoveSelect< M > &  __move_select,
eoEvalFunc< EOT > &  __full_eval 
) [inline]
+
+
+ +

+Full constructor. +

+All the boxes are given in order the HC to use a moHCMoveLoopExpl.

+

Parameters:
+ + + + + + +
__move_init a move initialiser.
__next_move a neighborhood explorer.
__incr_eval a (generally) efficient evaluation function.
__move_select a move selector.
__full_eval a full evaluation function.
+
+ +

+Definition at line 53 of file moHC.h. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
moHC< M >::moHC (moMoveExpl< M > &  __move_expl,
eoEvalFunc< EOT > &  __full_eval 
) [inline]
+
+
+ +

+Light constructor. +

+This constructor allow to use another moMoveExpl (generally not a moHCMoveLoopExpl).

+

Parameters:
+ + + +
__move_expl a complete explorer.
__full_eval a full evaluation function.
+
+ +

+Definition at line 67 of file moHC.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
bool moHC< M >::operator() (EOT __sol  )  [inline]
+
+
+ +

+Function which launches the HC. +

+The HC has to improve a current solution. As the moSA and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm.

+

Parameters:
+ + +
__sol a current solution to improve.
+
+
Returns:
TRUE.
+ +

+Definition at line 82 of file moHC.h. +

+References moHC< M >::full_eval, and moHC< M >::move_expl. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c.png new file mode 100644 index 000000000..1d7aa7716 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c_move_loop_expl-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c_move_loop_expl-members.html new file mode 100644 index 000000000..a3ef12e92 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c_move_loop_expl-members.html @@ -0,0 +1,44 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moHCMoveLoopExpl< M > Member List

This is the complete list of members for moHCMoveLoopExpl< M >, including all inherited members.

+ + + + + + + + +
EOT typedefmoHCMoveLoopExpl< M > [private]
Fitness typedefmoHCMoveLoopExpl< M > [private]
incr_evalmoHCMoveLoopExpl< M > [private]
moHCMoveLoopExpl(moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moMoveSelect< M > &__move_select)moHCMoveLoopExpl< M > [inline]
move_initmoHCMoveLoopExpl< M > [private]
move_selectmoHCMoveLoopExpl< M > [private]
next_movemoHCMoveLoopExpl< M > [private]
operator()(const EOT &__old_sol, EOT &__new_sol)moHCMoveLoopExpl< M > [inline]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c_move_loop_expl.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c_move_loop_expl.html new file mode 100644 index 000000000..300eda5db --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c_move_loop_expl.html @@ -0,0 +1,194 @@ + + +PARADISEO-MO: moHCMoveLoopExpl< M > Class Template Reference + + + + +
+
+
+
+

moHCMoveLoopExpl< M > Class Template Reference

Iterative explorer used by a moHC. +More... +

+#include <moHCMoveLoopExpl.h> +

+

Inheritance diagram for moHCMoveLoopExpl< M >: +

+ +moMoveLoopExpl< M > +moMoveExpl< M > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moHCMoveLoopExpl (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moMoveSelect< M > &__move_select)
 Constructor.
void operator() (const EOT &__old_sol, EOT &__new_sol)
 Procedure which launches the explorer.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moMoveInit< M > & move_init
 Move initialiser.
+moNextMove< M > & next_move
 Neighborhood explorer.
+moMoveIncrEval< M > & incr_eval
 (generally) Efficient evaluation.
+moMoveSelect< M > & move_select
 Move selector.
+

Detailed Description

+

template<class M>
+ class moHCMoveLoopExpl< M >

+ +Iterative explorer used by a moHC. +

+ +

+Definition at line 23 of file moHCMoveLoopExpl.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moHCMoveLoopExpl< M >::moHCMoveLoopExpl (moMoveInit< M > &  __move_init,
moNextMove< M > &  __next_move,
moMoveIncrEval< M > &  __incr_eval,
moMoveSelect< M > &  __move_select 
) [inline]
+
+
+ +

+Constructor. +

+All the boxes have to be specified.

+

Parameters:
+ + + + + +
__move_init the move initialiser.
__next_move the neighborhood explorer.
__incr_eval (generally) efficient evaluation function.
__move_select the move selector.
+
+ +

+Definition at line 43 of file moHCMoveLoopExpl.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moHCMoveLoopExpl< M >::operator() (const EOT __old_sol,
EOT __new_sol 
) [inline]
+
+
+ +

+Procedure which launches the explorer. +

+The exploration starts from an old solution and provides a new solution.

+

Parameters:
+ + + +
__old_sol the current solution.
__new_sol the new_sol (result of the procedure).
+
+ +

+Definition at line 59 of file moHCMoveLoopExpl.h. +

+References moHCMoveLoopExpl< M >::incr_eval, moHCMoveLoopExpl< M >::move_init, moHCMoveLoopExpl< M >::move_select, and moHCMoveLoopExpl< M >::next_move. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c_move_loop_expl.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c_move_loop_expl.png new file mode 100644 index 000000000..8c51e26c5 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_h_c_move_loop_expl.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_impr_best_fit_aspir_crit-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_impr_best_fit_aspir_crit-members.html new file mode 100644 index 000000000..d8eaec69a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_impr_best_fit_aspir_crit-members.html @@ -0,0 +1,42 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moImprBestFitAspirCrit< M > Member List

This is the complete list of members for moImprBestFitAspirCrit< M >, including all inherited members.

+ + + + + + +
best_fitmoImprBestFitAspirCrit< M > [private]
first_timemoImprBestFitAspirCrit< M > [private]
Fitness typedefmoImprBestFitAspirCrit< M >
init()moImprBestFitAspirCrit< M > [inline, virtual]
moImprBestFitAspirCrit()moImprBestFitAspirCrit< M > [inline]
operator()(const M &__move, const Fitness &__fit)moImprBestFitAspirCrit< M > [inline]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_impr_best_fit_aspir_crit.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_impr_best_fit_aspir_crit.html new file mode 100644 index 000000000..36c1a8068 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_impr_best_fit_aspir_crit.html @@ -0,0 +1,132 @@ + + +PARADISEO-MO: moImprBestFitAspirCrit< M > Class Template Reference + + + + +
+
+
+
+

moImprBestFitAspirCrit< M > Class Template Reference

One of the possible moAspirCrit. +More... +

+#include <moImprBestFitAspirCrit.h> +

+

Inheritance diagram for moImprBestFitAspirCrit< M >: +

+ +moAspirCrit< M > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

moImprBestFitAspirCrit ()
 Contructor.
+void init ()
 Initialisation procedure.
bool operator() (const M &__move, const Fitness &__fit)
 Function that indicates if the fit is better that the already saved fit.

Private Attributes

+Fitness best_fit
 Best fitness found until now.
+bool first_time
 Indicates that a fitness has been already saved or not.
+

Detailed Description

+

template<class M>
+ class moImprBestFitAspirCrit< M >

+ +One of the possible moAspirCrit. +

+This criterion is satisfied when a given fitness is the best ever considered. +

+ +

+Definition at line 22 of file moImprBestFitAspirCrit.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moImprBestFitAspirCrit< M >::operator() (const M &  __move,
const Fitness __fit 
) [inline]
+
+
+ +

+Function that indicates if the fit is better that the already saved fit. +

+The first time, the function only saved the current move and fitness.

+

Parameters:
+ + + +
__move a move.
__fit a fitnes linked to the move.
+
+
Returns:
TRUE the first time and if __fit > best_fit, else FALSE.
+ +

+Definition at line 52 of file moImprBestFitAspirCrit.h. +

+References moImprBestFitAspirCrit< M >::best_fit, and moImprBestFitAspirCrit< M >::first_time. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_impr_best_fit_aspir_crit.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_impr_best_fit_aspir_crit.png new file mode 100644 index 000000000..cfb21ada8 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_impr_best_fit_aspir_crit.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_it_rand_next_move-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_it_rand_next_move-members.html new file mode 100644 index 000000000..d54d6f6c8 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_it_rand_next_move-members.html @@ -0,0 +1,42 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moItRandNextMove< M > Member List

This is the complete list of members for moItRandNextMove< M >, including all inherited members.

+ + + + + + +
EOT typedefmoItRandNextMove< M > [private]
max_itermoItRandNextMove< M > [private]
moItRandNextMove(moRandMove< M > &__rand_move, unsigned __max_iter)moItRandNextMove< M > [inline]
num_itermoItRandNextMove< M > [private]
operator()(M &__move, const EOT &__sol)moItRandNextMove< M > [inline]
rand_movemoItRandNextMove< M > [private]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_it_rand_next_move.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_it_rand_next_move.html new file mode 100644 index 000000000..578bd248f --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_it_rand_next_move.html @@ -0,0 +1,174 @@ + + +PARADISEO-MO: moItRandNextMove< M > Class Template Reference + + + + +
+
+
+
+

moItRandNextMove< M > Class Template Reference

One of the possible moNextMove. +More... +

+#include <moItRandNextMove.h> +

+

Inheritance diagram for moItRandNextMove< M >: +

+ +moNextMove< M > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moItRandNextMove (moRandMove< M > &__rand_move, unsigned __max_iter)
 The constructor.
bool operator() (M &__move, const EOT &__sol)
 Generation of a new move.

Private Types

+typedef M::EOType EOT
 Alias for the type.

Private Attributes

+moRandMove< M > & rand_move
 A move generator (generally randomly).
+unsigned max_iter
 Iteration maximum number.
+unsigned num_iter
 Iteration current number.
+

Detailed Description

+

template<class M>
+ class moItRandNextMove< M >

+ +One of the possible moNextMove. +

+This class is a move (moMove) generator with a bound for the maximum number of iterations. +

+ +

+Definition at line 22 of file moItRandNextMove.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
moItRandNextMove< M >::moItRandNextMove (moRandMove< M > &  __rand_move,
unsigned  __max_iter 
) [inline]
+
+
+ +

+The constructor. +

+Parameters only for initialising the attributes.

+

Parameters:
+ + + +
__rand_move the random move generator.
__max_iter the iteration maximum number.
+
+ +

+Definition at line 37 of file moItRandNextMove.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moItRandNextMove< M >::operator() (M &  __move,
const EOT __sol 
) [inline]
+
+
+ +

+Generation of a new move. +

+If the maximum number is not already reached, the current move is forgotten and remplaced by another one.

+

Parameters:
+ + + +
__move the current move.
__sol the current solution.
+
+
Returns:
FALSE if the maximum number of iteration is reached, else TRUE.
+ +

+Definition at line 52 of file moItRandNextMove.h. +

+References moItRandNextMove< M >::max_iter, moItRandNextMove< M >::num_iter, and moItRandNextMove< M >::rand_move. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_it_rand_next_move.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_it_rand_next_move.png new file mode 100644 index 000000000..574beda2c Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_it_rand_next_move.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_l_s_check_point-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_l_s_check_point-members.html new file mode 100644 index 000000000..f4e0bbda7 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_l_s_check_point-members.html @@ -0,0 +1,39 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moLSCheckPoint< M > Member List

This is the complete list of members for moLSCheckPoint< M >, including all inherited members.

+ + + +
add(eoBF< const M &, const typename M::EOType &, void > &__f)moLSCheckPoint< M > [inline]
funcmoLSCheckPoint< M > [private]
operator()(const M &__move, const typename M::EOType &__sol)moLSCheckPoint< M > [inline]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_l_s_check_point.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_l_s_check_point.html new file mode 100644 index 000000000..f4b2f3147 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_l_s_check_point.html @@ -0,0 +1,147 @@ + + +PARADISEO-MO: moLSCheckPoint< M > Class Template Reference + + + + +
+
+
+
+

moLSCheckPoint< M > Class Template Reference

Class which allows a checkpointing system. +More... +

+#include <moLSCheckPoint.h> +

+List of all members. + + + + + + + + + + + + +

Public Member Functions

void operator() (const M &__move, const typename M::EOType &__sol)
 Function which launches the checkpointing.
void add (eoBF< const M &, const typename M::EOType &, void > &__f)
 Procedure which add a new function to the function vector.

Private Attributes

+std::vector< eoBF< const M &,
+ const typename M::EOType &,
+ void > * > 
func
 vector of function
+


Detailed Description

+

template<class M>
+ class moLSCheckPoint< M >

+ +Class which allows a checkpointing system. +

+Thanks to this class, at each iteration, additionnal function can be used (and not only one). +

+ +

+Definition at line 21 of file moLSCheckPoint.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moLSCheckPoint< M >::operator() (const M &  __move,
const typename M::EOType &  __sol 
) [inline]
+
+
+ +

+Function which launches the checkpointing. +

+Each saved function is used on the current move and the current solution.

+

Parameters:
+ + + +
__move a move.
__sol a solution.
+
+ +

+Definition at line 34 of file moLSCheckPoint.h. +

+References moLSCheckPoint< M >::func. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + +
void moLSCheckPoint< M >::add (eoBF< const M &, const typename M::EOType &, void > &  __f  )  [inline]
+
+
+ +

+Procedure which add a new function to the function vector. +

+The new function is added at the end of the vector.

Parameters:
+ + +
__f a new function to add.
+
+ +

+Definition at line 49 of file moLSCheckPoint.h. +

+References moLSCheckPoint< M >::func. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_move-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move-members.html new file mode 100644 index 000000000..c75f8953a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move-members.html @@ -0,0 +1,37 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moMove< EOT > Member List

This is the complete list of members for moMove< EOT >, including all inherited members.

+ +
EOType typedefmoMove< EOT >


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_move.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move.html new file mode 100644 index 000000000..b27a76070 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move.html @@ -0,0 +1,60 @@ + + +PARADISEO-MO: moMove< EOT > Class Template Reference + + + + +
+
+
+
+

moMove< EOT > Class Template Reference

Definition of a move. +More... +

+#include <moMove.h> +

+List of all members. + + + + + +

Public Types

+typedef EOT EOType
 Alias for the type.
+


Detailed Description

+

template<class EOT>
+ class moMove< EOT >

+ +Definition of a move. +

+A move transforms a solution to another close solution. It describes how a solution can be modified to another one. +

+ +

+Definition at line 23 of file moMove.h.


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_expl.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_expl.html new file mode 100644 index 000000000..2c165f99b --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_expl.html @@ -0,0 +1,62 @@ + + +PARADISEO-MO: moMoveExpl< M > Class Template Reference + + + + +
+
+
+
+

moMoveExpl< M > Class Template Reference

Description of a move (moMove) explorer. +More... +

+#include <moMoveExpl.h> +

+

Inheritance diagram for moMoveExpl< M >: +

+ +moMoveLoopExpl< M > +moHCMoveLoopExpl< M > +moTSMoveLoopExpl< M > + + + +
+

Detailed Description

+

template<class M>
+ class moMoveExpl< M >

+ +Description of a move (moMove) explorer. +

+Only a description...See moMoveLoopExpl. +

+ +

+Definition at line 21 of file moMoveExpl.h.


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_expl.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_expl.png new file mode 100644 index 000000000..1b27438a7 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_expl.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_incr_eval.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_incr_eval.html new file mode 100644 index 000000000..570e9b7b8 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_incr_eval.html @@ -0,0 +1,55 @@ + + +PARADISEO-MO: moMoveIncrEval< M > Class Template Reference + + + + +
+
+
+
+

moMoveIncrEval< M > Class Template Reference

(generally) Efficient evaluation function based a move and a solution. +More... +

+#include <moMoveIncrEval.h> +

+ + +
+


Detailed Description

+

template<class M>
+ class moMoveIncrEval< M >

+ +(generally) Efficient evaluation function based a move and a solution. +

+From a move and a solution, it computes a new fitness that could be associated to the solution if this one is updated. +

+ +

+Definition at line 24 of file moMoveIncrEval.h.


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_init.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_init.html new file mode 100644 index 000000000..01718ead9 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_init.html @@ -0,0 +1,55 @@ + + +PARADISEO-MO: moMoveInit< M > Class Template Reference + + + + +
+
+
+
+

moMoveInit< M > Class Template Reference

Move (moMove) initializer. +More... +

+#include <moMoveInit.h> +

+ + +
+


Detailed Description

+

template<class M>
+ class moMoveInit< M >

+ +Move (moMove) initializer. +

+Class which allows to initiase a move. Only a description... An object that herits from this class needs to be designed to be used. +

+ +

+Definition at line 22 of file moMoveInit.h.


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_loop_expl.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_loop_expl.html new file mode 100644 index 000000000..b16126b31 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_loop_expl.html @@ -0,0 +1,62 @@ + + +PARADISEO-MO: moMoveLoopExpl< M > Class Template Reference + + + + +
+
+
+
+

moMoveLoopExpl< M > Class Template Reference

Class which describes an iterative explorer. +More... +

+#include <moMoveLoopExpl.h> +

+

Inheritance diagram for moMoveLoopExpl< M >: +

+ +moMoveExpl< M > +moHCMoveLoopExpl< M > +moTSMoveLoopExpl< M > + + + +
+

Detailed Description

+

template<class M>
+ class moMoveLoopExpl< M >

+ +Class which describes an iterative explorer. +

+Only a description... moHCMoveLoopExpl and moTSMoveLoopExpl are exemples of class that are a moMoveLoopExpl. +

+ +

+Definition at line 21 of file moMoveLoopExpl.h.


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_loop_expl.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_loop_expl.png new file mode 100644 index 000000000..3fc99c0f6 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_loop_expl.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_select-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_select-members.html new file mode 100644 index 000000000..9ca8036b3 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_select-members.html @@ -0,0 +1,39 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moMoveSelect< M > Member List

This is the complete list of members for moMoveSelect< M >, including all inherited members.

+ + + +
Fitness typedefmoMoveSelect< M >
init(const Fitness &__fit)=0moMoveSelect< M > [pure virtual]
update(const M &__move, const Fitness &__fit)=0moMoveSelect< M > [pure virtual]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_select.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_select.html new file mode 100644 index 000000000..9f4177431 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_select.html @@ -0,0 +1,149 @@ + + +PARADISEO-MO: moMoveSelect< M > Class Template Reference + + + + +
+
+
+
+

moMoveSelect< M > Class Template Reference

Class that describes a move selector (moMove). +More... +

+#include <moMoveSelect.h> +

+

Inheritance diagram for moMoveSelect< M >: +

+ +moBestImprSelect< M > +moFirstImprSelect< M > +moRandImprSelect< M > + +List of all members. + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

virtual void init (const Fitness &__fit)=0
 Procedure which initialises all that the move selector needs including the initial fitness.
virtual bool update (const M &__move, const Fitness &__fit)=0
 Function which updates the best solutions.
+

Detailed Description

+

template<class M>
+ class moMoveSelect< M >

+ +Class that describes a move selector (moMove). +

+It iteratively considers some moves (moMove) and their associated fitnesses. The best move is so regularly updated. At any time, it could be accessed. +

+ +

+Definition at line 32 of file moMoveSelect.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
virtual void moMoveSelect< M >::init (const Fitness __fit  )  [pure virtual]
+
+
+ +

+Procedure which initialises all that the move selector needs including the initial fitness. +

+In order to know the fitness of the solution, for which the neighborhood will be soon explored

+

Parameters:
+ + +
__fit the current fitness.
+
+ +

+Implemented in moBestImprSelect< M >, moFirstImprSelect< M >, and moRandImprSelect< M >. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
virtual bool moMoveSelect< M >::update (const M &  __move,
const Fitness __fit 
) [pure virtual]
+
+
+ +

+Function which updates the best solutions. +

+

Parameters:
+ + + +
__move a new move.
__fit a fitness linked to the new move.
+
+
Returns:
a boolean that expresses the need to resume the exploration.
+ +

+Implemented in moBestImprSelect< M >, and moRandImprSelect< M >. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_select.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_select.png new file mode 100644 index 000000000..0781eef97 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_move_select.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_next_move.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_next_move.html new file mode 100644 index 000000000..13bc051bf --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_next_move.html @@ -0,0 +1,60 @@ + + +PARADISEO-MO: moNextMove< M > Class Template Reference + + + + +
+
+
+
+

moNextMove< M > Class Template Reference

Class which allows to generate a new move (moMove). +More... +

+#include <moNextMove.h> +

+

Inheritance diagram for moNextMove< M >: +

+ +moItRandNextMove< M > + + + +
+

Detailed Description

+

template<class M>
+ class moNextMove< M >

+ +Class which allows to generate a new move (moMove). +

+Useful for the explorer (for moTS or moHC). Does nothing... An object that herits from this class needs to be designed for being used. +

+ +

+Definition at line 22 of file moNextMove.h.


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_next_move.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_next_move.png new file mode 100644 index 000000000..ee1f90bbc Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_next_move.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_no_aspir_crit-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_no_aspir_crit-members.html new file mode 100644 index 000000000..85295b9e2 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_no_aspir_crit-members.html @@ -0,0 +1,38 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moNoAspirCrit< M > Member List

This is the complete list of members for moNoAspirCrit< M >, including all inherited members.

+ + +
init()moNoAspirCrit< M > [inline, private, virtual]
operator()(const M &__move, const typename M::EOType::Fitness &__sol)moNoAspirCrit< M > [inline, private]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_no_aspir_crit.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_no_aspir_crit.html new file mode 100644 index 000000000..c4a8320cc --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_no_aspir_crit.html @@ -0,0 +1,138 @@ + + +PARADISEO-MO: moNoAspirCrit< M > Class Template Reference + + + + +
+
+
+
+

moNoAspirCrit< M > Class Template Reference

One of the possible aspiration criterion (moAspirCrit). +More... +

+#include <moNoAspirCrit.h> +

+

Inheritance diagram for moNoAspirCrit< M >: +

+ +moAspirCrit< M > + +List of all members. + + + + + + + + +

Private Member Functions

bool operator() (const M &__move, const typename M::EOType::Fitness &__sol)
 Function which describes the aspiration criterion behaviour.
void init ()
 Procedure which initialises all that needs a moNoAspirCrit.
+

Detailed Description

+

template<class M>
+ class moNoAspirCrit< M >

+ +One of the possible aspiration criterion (moAspirCrit). +

+The simplest : never satisfied. +

+ +

+Definition at line 21 of file moNoAspirCrit.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moNoAspirCrit< M >::operator() (const M &  __move,
const typename M::EOType::Fitness &  __sol 
) [inline, private]
+
+
+ +

+Function which describes the aspiration criterion behaviour. +

+Does nothing.

+

Parameters:
+ + + +
__move a move.
__sol a fitness.
+
+
Returns:
FALSE.
+ +

+Definition at line 32 of file moNoAspirCrit.h. +

+

+ +

+
+
+template<class M>
+ + + + + + + + +
void moNoAspirCrit< M >::init (  )  [inline, private, virtual]
+
+
+ +

+Procedure which initialises all that needs a moNoAspirCrit. +

+Nothing... +

+Implements moAspirCrit< M >. +

+Definition at line 43 of file moNoAspirCrit.h. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_no_aspir_crit.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_no_aspir_crit.png new file mode 100644 index 000000000..f8412d8ed Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_no_aspir_crit.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_rand_impr_select-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_rand_impr_select-members.html new file mode 100644 index 000000000..f1721eed3 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_rand_impr_select-members.html @@ -0,0 +1,43 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moRandImprSelect< M > Member List

This is the complete list of members for moRandImprSelect< M >, including all inherited members.

+ + + + + + + +
Fitness typedefmoRandImprSelect< M >
init(const Fitness &__fit)moRandImprSelect< M > [inline, virtual]
init_fitmoRandImprSelect< M > [private]
operator()(M &__move, Fitness &__fit)moRandImprSelect< M > [inline]
update(const M &__move, const Fitness &__fit)moRandImprSelect< M > [inline, virtual]
vect_better_fitmoRandImprSelect< M > [private]
vect_better_movesmoRandImprSelect< M > [private]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_rand_impr_select.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_rand_impr_select.html new file mode 100644 index 000000000..cb8b36828 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_rand_impr_select.html @@ -0,0 +1,221 @@ + + +PARADISEO-MO: moRandImprSelect< M > Class Template Reference + + + + +
+
+
+
+

moRandImprSelect< M > Class Template Reference

One of the possible moMove selector (moMoveSelect). +More... +

+#include <moRandImprSelect.h> +

+

Inheritance diagram for moRandImprSelect< M >: +

+ +moMoveSelect< M > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Public Member Functions

void init (const Fitness &__fit)
 Procedure which all that needs a moRandImprSelect.
bool update (const M &__move, const Fitness &__fit)
 Function that updates the fitness and move vectors.
void operator() (M &__move, Fitness &__fit) throw (EmptySelection)
 The move selection.

Private Attributes

+Fitness init_fit
 Fitness of the current solution.
+std::vector< Fitnessvect_better_fit
 Candidate fitnesse vector.
+std::vector< M > vect_better_moves
 Candidate move vector.
+

Detailed Description

+

template<class M>
+ class moRandImprSelect< M >

+ +One of the possible moMove selector (moMoveSelect). +

+All the neighbors are considered. One of them that enables an improvment of the objective function is choosen. +

+ +

+Definition at line 25 of file moRandImprSelect.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
void moRandImprSelect< M >::init (const Fitness __fit  )  [inline, virtual]
+
+
+ +

+Procedure which all that needs a moRandImprSelect. +

+Give a value to the initialise fitness. Clean the move and fitness vectors.

+

Parameters:
+ + +
__fit the current best fitness
+
+ +

+Implements moMoveSelect< M >. +

+Definition at line 40 of file moRandImprSelect.h. +

+References moRandImprSelect< M >::init_fit, moRandImprSelect< M >::vect_better_fit, and moRandImprSelect< M >::vect_better_moves. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
bool moRandImprSelect< M >::update (const M &  __move,
const Fitness __fit 
) [inline, virtual]
+
+
+ +

+Function that updates the fitness and move vectors. +

+if a move give a better fitness than the initial fitness, it is saved and the fitness too.

+

Parameters:
+ + + +
__move a new move.
__fit a new fitness associated to the new move.
+
+
Returns:
TRUE.
+ +

+Implements moMoveSelect< M >. +

+Definition at line 56 of file moRandImprSelect.h. +

+References moRandImprSelect< M >::init_fit, moRandImprSelect< M >::vect_better_fit, and moRandImprSelect< M >::vect_better_moves. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moRandImprSelect< M >::operator() (M &  __move,
Fitness __fit 
) throw (EmptySelection) [inline]
+
+
+ +

+The move selection. +

+One the saved move is randomly chosen.

+

Parameters:
+ + + +
__move the reference of the move that can be initialised by the function.
__fit the reference of the fitness that can be initialised by the function.
+
+
Exceptions:
+ + +
EmptySelection If no move which improves the current fitness are found.
+
+ +

+Definition at line 77 of file moRandImprSelect.h. +

+References moRandImprSelect< M >::vect_better_fit, and moRandImprSelect< M >::vect_better_moves. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_rand_impr_select.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_rand_impr_select.png new file mode 100644 index 000000000..6931c3dfd Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_rand_impr_select.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_rand_move.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_rand_move.html new file mode 100644 index 000000000..d006d8d44 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_rand_move.html @@ -0,0 +1,55 @@ + + +PARADISEO-MO: moRandMove< M > Class Template Reference + + + + +
+
+
+
+

moRandMove< M > Class Template Reference

Random move generator. +More... +

+#include <moRandMove.h> +

+ + +
+


Detailed Description

+

template<class M>
+ class moRandMove< M >

+ +Random move generator. +

+Only a description... An object that herits from this class needs to be designed in order to use a moSA. +

+ +

+Definition at line 21 of file moRandMove.h.


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_s_a-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_s_a-members.html new file mode 100644 index 000000000..20fa23bec --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_s_a-members.html @@ -0,0 +1,46 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moSA< M > Member List

This is the complete list of members for moSA< M >, including all inherited members.

+ + + + + + + + + + +
contmoSA< M > [private]
cool_schedmoSA< M > [private]
EOT typedefmoSA< M > [private]
Fitness typedefmoSA< M > [private]
full_evalmoSA< M > [private]
incr_evalmoSA< M > [private]
init_tempmoSA< M > [private]
moSA(moRandMove< M > &__move_rand, moMoveIncrEval< M > &__incr_eval, moSolContinue< EOT > &__cont, double __init_temp, moCoolSched &__cool_sched, eoEvalFunc< EOT > &__full_eval)moSA< M > [inline]
move_randmoSA< M > [private]
operator()(EOT &__sol)moSA< M > [inline]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_s_a.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_s_a.html new file mode 100644 index 000000000..783a27f00 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_s_a.html @@ -0,0 +1,208 @@ + + +PARADISEO-MO: moSA< M > Class Template Reference + + + + +
+
+
+
+

moSA< M > Class Template Reference

Simulated Annealing (SA). +More... +

+#include <moSA.h> +

+

Inheritance diagram for moSA< M >: +

+ +moAlgo< M::EOType > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moSA (moRandMove< M > &__move_rand, moMoveIncrEval< M > &__incr_eval, moSolContinue< EOT > &__cont, double __init_temp, moCoolSched &__cool_sched, eoEvalFunc< EOT > &__full_eval)
 SA constructor.
bool operator() (EOT &__sol)
 function that launches the SA algorithm.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef EOT::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moRandMove< M > & move_rand
 A move generator (generally randomly).
+moMoveIncrEval< M > & incr_eval
 A (generally) efficient evaluation function.
+moSolContinue< EOT > & cont
 Stopping criterion before temperature update.
+double init_temp
 Initial temperature.
+moCoolSchedcool_sched
 The cooling schedule.
+eoEvalFunc< EOT > & full_eval
 A full evaluation function.
+

Detailed Description

+

template<class M>
+ class moSA< M >

+ +Simulated Annealing (SA). +

+Class that describes a Simulated Annealing algorithm. +

+ +

+Definition at line 32 of file moSA.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moSA< M >::moSA (moRandMove< M > &  __move_rand,
moMoveIncrEval< M > &  __incr_eval,
moSolContinue< EOT > &  __cont,
double  __init_temp,
moCoolSched __cool_sched,
eoEvalFunc< EOT > &  __full_eval 
) [inline]
+
+
+ +

+SA constructor. +

+All the boxes used by a SA need to be given.

+

Parameters:
+ + + + + + + +
__move_rand a move generator (generally randomly).
__incr_eval a (generaly) efficient evaluation function
__cont a stopping criterion.
__init_temp the initial temperature.
__cool_sched a cooling schedule, describes how the temperature is modified.
__full_eval a full evaluation function.
+
+ +

+Definition at line 60 of file moSA.h. +

+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
bool moSA< M >::operator() (EOT __sol  )  [inline]
+
+
+ +

+function that launches the SA algorithm. +

+As a moTS or a moHC, the SA can be used for HYBRIDATION in an evolutionary algorithm.

+

Parameters:
+ + +
__sol a solution to improve.
+
+
Returns:
TRUE.
+ +

+Definition at line 82 of file moSA.h. +

+References moSA< M >::cont, moSA< M >::cool_sched, moSA< M >::full_eval, moSA< M >::incr_eval, moSA< M >::init_temp, and moSA< M >::move_rand. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_s_a.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_s_a.png new file mode 100644 index 000000000..59c20157a Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_s_a.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_sol_continue-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_sol_continue-members.html new file mode 100644 index 000000000..4f5721cf8 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_sol_continue-members.html @@ -0,0 +1,37 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moSolContinue< EOT > Member List

This is the complete list of members for moSolContinue< EOT >, including all inherited members.

+ +
init()=0moSolContinue< EOT > [pure virtual]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_sol_continue.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_sol_continue.html new file mode 100644 index 000000000..2e762b92a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_sol_continue.html @@ -0,0 +1,90 @@ + + +PARADISEO-MO: moSolContinue< EOT > Class Template Reference + + + + +
+
+
+
+

moSolContinue< EOT > Class Template Reference

Class that describes a stop criterion for a solution-based heuristic. +More... +

+#include <moSolContinue.h> +

+

Inheritance diagram for moSolContinue< EOT >: +

+ +moGenSolContinue< EOT > + +List of all members. + + + + + +

Public Member Functions

virtual void init ()=0
 Procedure which initialises all that the stop criterion needs.
+

Detailed Description

+

template<class EOT>
+ class moSolContinue< EOT >

+ +Class that describes a stop criterion for a solution-based heuristic. +

+It allows to add an initialisation procedure to an object that is a unary function (eoUF). +

+ +

+Definition at line 22 of file moSolContinue.h.


Member Function Documentation

+ +
+
+
+template<class EOT>
+ + + + + + + + +
virtual void moSolContinue< EOT >::init (  )  [pure virtual]
+
+
+ +

+Procedure which initialises all that the stop criterion needs. +

+Generally, it allocates some data structures or initialises some counters. +

+Implemented in moGenSolContinue< EOT >. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_sol_continue.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_sol_continue.png new file mode 100644 index 000000000..ff1f2edde Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_sol_continue.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s-members.html new file mode 100644 index 000000000..ddd261cff --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s-members.html @@ -0,0 +1,46 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moTS< M > Member List

This is the complete list of members for moTS< M >, including all inherited members.

+ + + + + + + + + + +
contmoTS< M > [private]
EOT typedefmoTS< M > [private]
first_timemoTS< M > [private, static]
Fitness typedefmoTS< M > [private]
full_evalmoTS< M > [private]
moTS(moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moTabuList< M > &__tabu_list, moAspirCrit< M > &__aspir_crit, moSolContinue< EOT > &__cont, eoEvalFunc< EOT > &__full_eval)moTS< M > [inline]
moTS(moMoveExpl< M > &__move_expl, moSolContinue< EOT > &__cont, eoEvalFunc< EOT > &__full_eval)moTS< M > [inline]
move_explmoTS< M > [private]
mutexmoTS< M > [private, static]
operator()(EOT &__sol)moTS< M > [inline]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s.html new file mode 100644 index 000000000..63b3c3eac --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s.html @@ -0,0 +1,268 @@ + + +PARADISEO-MO: moTS< M > Class Template Reference + + + + +
+
+
+
+

moTS< M > Class Template Reference

Tabu Search (TS). +More... +

+#include <moTS.h> +

+

Inheritance diagram for moTS< M >: +

+ +moAlgo< M::EOType > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moTS (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moTabuList< M > &__tabu_list, moAspirCrit< M > &__aspir_crit, moSolContinue< EOT > &__cont, eoEvalFunc< EOT > &__full_eval)
 Constructor of a moTS specifying all the boxes.
 moTS (moMoveExpl< M > &__move_expl, moSolContinue< EOT > &__cont, eoEvalFunc< EOT > &__full_eval)
 Constructor with less parameters.
bool operator() (EOT &__sol)
 Function which launchs the Tabu Search.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef EOT::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moMoveExpl< M > & move_expl
 Neighborhood explorer.
+moSolContinue< EOT > & cont
 Stop criterion.
+eoEvalFunc< EOT > & full_eval
 Full evaluation function.

Static Private Attributes

+static bool first_time
 Boolean allowing to initialise the ptread_mutex_t in the constructor.
+static pthread_mutex_t mutex
 The lock.
+

Detailed Description

+

template<class M>
+ class moTS< M >

+ +Tabu Search (TS). +

+Generic algorithm that describes a tabu search. +

+ +

+Definition at line 30 of file moTS.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moTS< M >::moTS (moMoveInit< M > &  __move_init,
moNextMove< M > &  __next_move,
moMoveIncrEval< M > &  __incr_eval,
moTabuList< M > &  __tabu_list,
moAspirCrit< M > &  __aspir_crit,
moSolContinue< EOT > &  __cont,
eoEvalFunc< EOT > &  __full_eval 
) [inline]
+
+
+ +

+Constructor of a moTS specifying all the boxes. +

+In this constructor, a moTSMoveLoopExpl is instanciated.

+

Parameters:
+ + + + + + + + +
__move_init move initialisation
__next_move neighborhood explorer
__incr_eval efficient evaluation
__tabu_list tabu list
__aspir_crit aspiration criterion
__cont stop criterion
__full_eval full evaluation function
+
+ +

+Definition at line 59 of file moTS.h. +

+References moTS< M >::first_time, and moTS< M >::mutex. +

+

+ +

+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + +
moTS< M >::moTS (moMoveExpl< M > &  __move_expl,
moSolContinue< EOT > &  __cont,
eoEvalFunc< EOT > &  __full_eval 
) [inline]
+
+
+ +

+Constructor with less parameters. +

+The explorer is given in the parameters.

+

Parameters:
+ + + + +
__move_expl the explorer (generally different that a moTSMoveLoopExpl)
__cont stop criterion
__full_eval full evaluation function
+
+ +

+Definition at line 81 of file moTS.h. +

+References moTS< M >::first_time, and moTS< M >::mutex. +

+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + +
bool moTS< M >::operator() (EOT __sol  )  [inline]
+
+
+ +

+Function which launchs the Tabu Search. +

+Algorithm of the tabu search. As a moSA or a moHC, it can be used for HYBRIDATION in an evolutionary algorithm. For security a lock (pthread_mutex_t) is closed during the algorithm.

+

Parameters:
+ + +
__sol a solution to improve.
+
+
Returns:
TRUE.
+ +

+Definition at line 104 of file moTS.h. +

+References moTS< M >::cont, moTS< M >::full_eval, moTS< M >::move_expl, and moTS< M >::mutex. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s.png new file mode 100644 index 000000000..5d6c7b304 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s_move_loop_expl-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s_move_loop_expl-members.html new file mode 100644 index 000000000..215fef0eb --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s_move_loop_expl-members.html @@ -0,0 +1,46 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moTSMoveLoopExpl< M > Member List

This is the complete list of members for moTSMoveLoopExpl< M >, including all inherited members.

+ + + + + + + + + + +
aspir_critmoTSMoveLoopExpl< M > [private]
EOT typedefmoTSMoveLoopExpl< M > [private]
Fitness typedefmoTSMoveLoopExpl< M > [private]
incr_evalmoTSMoveLoopExpl< M > [private]
moTSMoveLoopExpl(moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moTabuList< M > &__tabu_list, moAspirCrit< M > &__aspir_crit)moTSMoveLoopExpl< M > [inline]
move_initmoTSMoveLoopExpl< M > [private]
move_selectmoTSMoveLoopExpl< M > [private]
next_movemoTSMoveLoopExpl< M > [private]
operator()(const EOT &__old_sol, EOT &__new_sol)moTSMoveLoopExpl< M > [inline]
tabu_listmoTSMoveLoopExpl< M > [private]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s_move_loop_expl.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s_move_loop_expl.html new file mode 100644 index 000000000..c209b3057 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s_move_loop_expl.html @@ -0,0 +1,212 @@ + + +PARADISEO-MO: moTSMoveLoopExpl< M > Class Template Reference + + + + +
+
+
+
+

moTSMoveLoopExpl< M > Class Template Reference

Explorer for a Tabu Search algorithm. +More... +

+#include <moTSMoveLoopExpl.h> +

+

Inheritance diagram for moTSMoveLoopExpl< M >: +

+ +moMoveLoopExpl< M > +moMoveExpl< M > + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 moTSMoveLoopExpl (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moTabuList< M > &__tabu_list, moAspirCrit< M > &__aspir_crit)
 Constructor.
void operator() (const EOT &__old_sol, EOT &__new_sol)
 Procedure which lauches the exploration.

Private Types

+typedef M::EOType EOT
 Alias for the type.
+typedef M::EOType::Fitness Fitness
 Alias for the fitness.

Private Attributes

+moMoveInit< M > & move_init
 Move initialisation.
+moNextMove< M > & next_move
 Neighborhood explorer.
+moMoveIncrEval< M > & incr_eval
 Efficient evaluation.
+moBestImprSelect< M > move_select
 Move selector.
+moTabuList< M > & tabu_list
 Tabu list.
+moAspirCrit< M > & aspir_crit
 Aspiration criterion.
+

Detailed Description

+

template<class M>
+ class moTSMoveLoopExpl< M >

+ +Explorer for a Tabu Search algorithm. +

+It is used by a moTS. +

+ +

+Definition at line 30 of file moTSMoveLoopExpl.h.


Constructor & Destructor Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
moTSMoveLoopExpl< M >::moTSMoveLoopExpl (moMoveInit< M > &  __move_init,
moNextMove< M > &  __next_move,
moMoveIncrEval< M > &  __incr_eval,
moTabuList< M > &  __tabu_list,
moAspirCrit< M > &  __aspir_crit 
) [inline]
+
+
+ +

+Constructor. +

+

Parameters:
+ + + + + + +
__move_init move initialisation
__next_move neighborhood explorer
__incr_eval efficient evaluation
__tabu_list tabu list
__aspir_crit aspiration criterion
+
+ +

+Definition at line 49 of file moTSMoveLoopExpl.h. +

+References moTSMoveLoopExpl< M >::aspir_crit, and moTSMoveLoopExpl< M >::tabu_list. +

+

+


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
void moTSMoveLoopExpl< M >::operator() (const EOT __old_sol,
EOT __new_sol 
) [inline]
+
+
+ +

+Procedure which lauches the exploration. +

+The exploration continues while the chosen move is not in the tabu list or the aspiration criterion is true. If these 2 conditions are not true, the exploration stops if the move selector update function returns false.

+

Parameters:
+ + + +
__old_sol the initial solution
__new_sol the new solution
+
+ +

+Definition at line 69 of file moTSMoveLoopExpl.h. +

+References moTSMoveLoopExpl< M >::aspir_crit, moTSMoveLoopExpl< M >::incr_eval, moTSMoveLoopExpl< M >::move_init, moTSMoveLoopExpl< M >::move_select, moTSMoveLoopExpl< M >::next_move, and moTSMoveLoopExpl< M >::tabu_list. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s_move_loop_expl.png b/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s_move_loop_expl.png new file mode 100644 index 000000000..c9608b2de Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/classmo_t_s_move_loop_expl.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_tabu_list-members.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_tabu_list-members.html new file mode 100644 index 000000000..a5a45179f --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_tabu_list-members.html @@ -0,0 +1,40 @@ + + +PARADISEO-MO: Member List + + + + +
+
+
+
+

moTabuList< M > Member List

This is the complete list of members for moTabuList< M >, including all inherited members.

+ + + + +
add(const M &__move, const EOT &__sol)=0moTabuList< M > [pure virtual]
EOT typedefmoTabuList< M >
init()=0moTabuList< M > [pure virtual]
update()=0moTabuList< M > [pure virtual]


Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/classmo_tabu_list.html b/trunk/paradiseo-mo/tutorial/docs/html/classmo_tabu_list.html new file mode 100644 index 000000000..184224785 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/classmo_tabu_list.html @@ -0,0 +1,157 @@ + + +PARADISEO-MO: moTabuList< M > Class Template Reference + + + + +
+
+
+
+

moTabuList< M > Class Template Reference

Class describing a tabu list that a moTS uses. +More... +

+#include <moTabuList.h> +

+List of all members. + + + + + + + + + + + + + + + +

Public Types

+typedef M::EOType EOT
 Alias for the type.

Public Member Functions

virtual void add (const M &__move, const EOT &__sol)=0
 Procedure to add a move in the tabu list.
virtual void update ()=0
 Procedure that updates the tabu list content.
virtual void init ()=0
 Procedure which initialises the tabu list.
+


Detailed Description

+

template<class M>
+ class moTabuList< M >

+ +Class describing a tabu list that a moTS uses. +

+It is only a description, does nothing... A new object that herits from this class has to be defined in order to be used in a moTS. +

+ +

+Definition at line 22 of file moTabuList.h.


Member Function Documentation

+ +
+
+
+template<class M>
+ + + + + + + + + + + + + + + + + + +
virtual void moTabuList< M >::add (const M &  __move,
const EOT __sol 
) [pure virtual]
+
+
+ +

+Procedure to add a move in the tabu list. +

+The two parameters have not to be modified so they are constant parameters

+

Parameters:
+ + + +
__move a new tabu move
__sol the solution associated to this move
+
+ +
+

+ +

+
+
+template<class M>
+ + + + + + + + +
virtual void moTabuList< M >::update (  )  [pure virtual]
+
+
+ +

+Procedure that updates the tabu list content. +

+Generally, a counter associated to each saved move is decreased by one. +

+

+ +

+
+
+template<class M>
+ + + + + + + + +
virtual void moTabuList< M >::init (  )  [pure virtual]
+
+
+ +

+Procedure which initialises the tabu list. +

+Can be useful if the data structure needs to be allocated before being used. +

+

+


The documentation for this class was generated from the following file: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/doxygen.css b/trunk/paradiseo-mo/tutorial/docs/html/doxygen.css new file mode 100644 index 000000000..c7db1a8a0 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/doxygen.css @@ -0,0 +1,358 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; + white-space: nowrap; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } diff --git a/trunk/paradiseo-mo/tutorial/docs/html/doxygen.png b/trunk/paradiseo-mo/tutorial/docs/html/doxygen.png new file mode 100644 index 000000000..f0a274bba Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/doxygen.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/files.html b/trunk/paradiseo-mo/tutorial/docs/html/files.html new file mode 100644 index 000000000..ff474b22f --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/files.html @@ -0,0 +1,59 @@ + + +PARADISEO-MO: File Index + + + + +
+
+

PARADISEO-MO File List

Here is a list of all documented files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
index.h [code]
mo.h [code]
moAlgo.h [code]
moAspirCrit.h [code]
moBestImprSelect.h [code]
moCoolSched.h [code]
moEasyCoolSched.h [code]
moFirstImprSelect.h [code]
moGenSolContinue.h [code]
moHC.h [code]
moHCMoveLoopExpl.h [code]
moImprBestFitAspirCrit.h [code]
moItRandNextMove.h [code]
moLSCheckPoint.h [code]
moMove.h [code]
moMoveExpl.h [code]
moMoveIncrEval.h [code]
moMoveInit.h [code]
moMoveLoopExpl.h [code]
moMoveSelect.h [code]
moNextMove.h [code]
moNoAspirCrit.h [code]
moRandImprSelect.h [code]
moRandMove.h [code]
moSA.h [code]
moSolContinue.h [code]
moTabuList.h [code]
moTS.h [code]
moTSMoveLoopExpl.h [code]
+
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/ftv2blank.png b/trunk/paradiseo-mo/tutorial/docs/html/ftv2blank.png new file mode 100644 index 000000000..493c3c0b6 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/ftv2blank.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/ftv2doc.png b/trunk/paradiseo-mo/tutorial/docs/html/ftv2doc.png new file mode 100644 index 000000000..f72999f92 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/ftv2doc.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/ftv2folderclosed.png b/trunk/paradiseo-mo/tutorial/docs/html/ftv2folderclosed.png new file mode 100644 index 000000000..d6d063440 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/ftv2folderclosed.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/ftv2folderopen.png b/trunk/paradiseo-mo/tutorial/docs/html/ftv2folderopen.png new file mode 100644 index 000000000..bbe2c913c Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/ftv2folderopen.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/ftv2lastnode.png b/trunk/paradiseo-mo/tutorial/docs/html/ftv2lastnode.png new file mode 100644 index 000000000..e7b9ba90c Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/ftv2lastnode.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/ftv2link.png b/trunk/paradiseo-mo/tutorial/docs/html/ftv2link.png new file mode 100644 index 000000000..14f3fed00 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/ftv2link.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/ftv2mlastnode.png b/trunk/paradiseo-mo/tutorial/docs/html/ftv2mlastnode.png new file mode 100644 index 000000000..09ceb6adb Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/ftv2mlastnode.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/ftv2mnode.png b/trunk/paradiseo-mo/tutorial/docs/html/ftv2mnode.png new file mode 100644 index 000000000..3254c0511 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/ftv2mnode.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/ftv2node.png b/trunk/paradiseo-mo/tutorial/docs/html/ftv2node.png new file mode 100644 index 000000000..c9f06a57f Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/ftv2node.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/ftv2plastnode.png b/trunk/paradiseo-mo/tutorial/docs/html/ftv2plastnode.png new file mode 100644 index 000000000..0b07e0091 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/ftv2plastnode.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/ftv2pnode.png b/trunk/paradiseo-mo/tutorial/docs/html/ftv2pnode.png new file mode 100644 index 000000000..2001b797b Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/ftv2pnode.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/ftv2vertline.png b/trunk/paradiseo-mo/tutorial/docs/html/ftv2vertline.png new file mode 100644 index 000000000..b330f3a33 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/ftv2vertline.png differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/functions.html b/trunk/paradiseo-mo/tutorial/docs/html/functions.html new file mode 100644 index 000000000..7b44ada86 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/functions.html @@ -0,0 +1,235 @@ + + +PARADISEO-MO: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- a -

+

- b -

+

- c -

+

- e -

+

- f -

+

- i -

+

- m -

+

- n -

+

- o -

+

- r -

+

- t -

+

- u -

+

- v -

+
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/functions_func.html b/trunk/paradiseo-mo/tutorial/docs/html/functions_func.html new file mode 100644 index 000000000..3b9e9eb90 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/functions_func.html @@ -0,0 +1,119 @@ + + +PARADISEO-MO: Class Members - Functions + + + + +
+
+
+
+
+ +
+
+ +
+ +

+  +

+

- a -

+

- i -

+

- m -

+

- o -

+

- u -

+
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/functions_type.html b/trunk/paradiseo-mo/tutorial/docs/html/functions_type.html new file mode 100644 index 000000000..2435447b0 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/functions_type.html @@ -0,0 +1,68 @@ + + +PARADISEO-MO: Class Members - Typedefs + + + + +
+
+
+
+
+ +
+  +

+

+
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/functions_vars.html b/trunk/paradiseo-mo/tutorial/docs/html/functions_vars.html new file mode 100644 index 000000000..3258b5b4a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/functions_vars.html @@ -0,0 +1,152 @@ + + +PARADISEO-MO: Class Members - Variables + + + + +
+
+
+
+
+ +
+
+ +
+ +

+  +

+

- a -

+

- b -

+

- c -

+

- f -

+

- i -

+

- m -

+

- n -

+

- r -

+

- t -

+

- v -

+
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/hierarchy.html b/trunk/paradiseo-mo/tutorial/docs/html/hierarchy.html new file mode 100644 index 000000000..b34400e54 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/hierarchy.html @@ -0,0 +1,82 @@ + + +PARADISEO-MO: Hierarchical Index + + + + +
+
+
+
+

PARADISEO-MO Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/index.html b/trunk/paradiseo-mo/tutorial/docs/html/index.html new file mode 100644 index 000000000..bd26c60e9 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/index.html @@ -0,0 +1,8 @@ + + +PARADISEO-MO + + + + + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/index_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/index_8h-source.html new file mode 100644 index 000000000..4ac849937 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/index_8h-source.html @@ -0,0 +1,34 @@ + + +PARADISEO-MO: index.h Source File + + + + +
+
+

index.h

00001 
+00022 // coding: iso-8859-1
+00023 // mode: C++
+00024 // c-file-style: "Stroustrup"
+00025 // fill-column: 80
+00026 // End:
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/installdox b/trunk/paradiseo-mo/tutorial/docs/html/installdox new file mode 100755 index 000000000..9b89fe025 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/installdox @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +%subst = ( ); +$quiet = 0; + +if (open(F,"search.cfg")) +{ + $_= ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_; + $_= ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_; +} + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ "tree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/trunk/paradiseo-mo/tutorial/docs/html/main.html b/trunk/paradiseo-mo/tutorial/docs/html/main.html new file mode 100644 index 000000000..0ca3db448 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/main.html @@ -0,0 +1,39 @@ + + +PARADISEO-MO: Welcome to PARADISEO-Moving Objects + + + + +
+
+

Welcome to PARADISEO-Moving Objects

+

+

0.1

+Introduction

+MO is an extension of the ANSI-C++ compliant evolutionary computation library EO.
+ It contains classes for almost any kind of one solution based heuristics.

+Tutorial

+

+Installation

+The installation procedure of the package is detailed in the README file in the top-directory of the source-tree.

+Overall Design

+
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_8h-source.html new file mode 100644 index 000000000..dab6f0f73 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_8h-source.html @@ -0,0 +1,71 @@ + + +PARADISEO-MO: mo.h Source File + + + + +
+
+

mo.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "mo.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __mo_h
+00013 #define __mo_h
+00014 
+00015 #include "moAspirCrit.h"
+00016 #include "moAlgo.h"
+00017 #include "moBestImprSelect.h"
+00018 #include "moCoolSched.h"
+00019 #include "moEasyCoolSched.h"
+00020 #include "moFirstImprSelect.h"
+00021 #include "moGenSolContinue.h"
+00022 #include "moHC.h"
+00023 #include "moHCMoveLoopExpl.h"
+00024 #include "moImprBestFitAspirCrit.h"
+00025 #include "moItRandNextMove.h"
+00026 #include "moLSCheckPoint.h"
+00027 #include "moMoveExpl.h"
+00028 #include "moMove.h"
+00029 #include "moMoveIncrEval.h"
+00030 #include "moMoveInit.h"
+00031 #include "moMoveLoopExpl.h"
+00032 #include "moMoveSelect.h"
+00033 #include "moNextMove.h"
+00034 #include "moNoAspirCrit.h"
+00035 #include "moRandImprSelect.h"
+00036 #include "moRandMove.h"
+00037 #include "moSA.h"
+00038 #include "moSolContinue.h"
+00039 #include "moTabuList.h"
+00040 #include "moTS.h"
+00041 #include "moTSMoveLoopExpl.h"
+00042 
+00043 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_algo_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_algo_8h-source.html new file mode 100644 index 000000000..5e2940983 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_algo_8h-source.html @@ -0,0 +1,51 @@ + + +PARADISEO-MO: moAlgo.h Source File + + + + +
+
+

moAlgo.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moAlgo.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moAlgo_h
+00013 #define __moAlgo_h
+00014 
+00015 #include <eoOp.h>
+00016 
+00018 
+00021 template < class EOT > class moAlgo:public eoMonOp < EOT >
+00022 {
+00023 
+00024 };
+00025 
+00026 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_aspir_crit_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_aspir_crit_8h-source.html new file mode 100644 index 000000000..07a935b02 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_aspir_crit_8h-source.html @@ -0,0 +1,58 @@ + + +PARADISEO-MO: moAspirCrit.h Source File + + + + +
+
+

moAspirCrit.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moAspirCrit.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moAspirCrit_h
+00013 #define __moAspirCrit_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00022 template < class M > class moAspirCrit:public eoBF < const M &, const typename
+00023   M::EOType::Fitness &,
+00024   bool >
+00025 {
+00026 
+00027 public:
+00029 
+00032   virtual void
+00033   init () = 0;
+00034 
+00035 };
+00036 
+00037 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_best_impr_select_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_best_impr_select_8h-source.html new file mode 100644 index 000000000..d28690ce6 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_best_impr_select_8h-source.html @@ -0,0 +1,99 @@ + + +PARADISEO-MO: moBestImprSelect.h Source File + + + + +
+
+

moBestImprSelect.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moBestImprSelect.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moBestImprSelect_h
+00013 #define __moBestImprSelect_h
+00014 
+00015 #include "moMoveSelect.h"
+00016 
+00018 
+00022 template < class M > class moBestImprSelect:public moMoveSelect < M >
+00023 {
+00024 
+00025 public:
+00026 
+00028   typedef typename M::EOType::Fitness Fitness;
+00029 
+00031   void init (const Fitness & __fit)
+00032   {
+00033 
+00034     first_time = true;
+00035   }
+00036 
+00037 
+00039 
+00047   bool update (const M & __move, const Fitness & __fit)
+00048   {
+00049 
+00050     if (first_time || __fit > best_fit)
+00051       {
+00052 
+00053         best_fit = __fit;
+00054         best_move = __move;
+00055 
+00056         first_time = false;
+00057       }
+00058 
+00059     return true;
+00060   }
+00061 
+00063 
+00068   void operator   () (M & __move, Fitness & __fit) throw (EmptySelection)
+00069   {
+00070 
+00071     if (!first_time)
+00072       {
+00073         __move = best_move;
+00074         __fit = best_fit;
+00075       }
+00076     else
+00077       throw EmptySelection ();
+00078   }
+00079 
+00080 private:
+00081 
+00083   bool first_time;
+00084 
+00086   M best_move;
+00087 
+00089   Fitness best_fit;
+00090 
+00091 };
+00092 
+00093 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_cool_sched_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_cool_sched_8h-source.html new file mode 100644 index 000000000..f88109ec9 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_cool_sched_8h-source.html @@ -0,0 +1,51 @@ + + +PARADISEO-MO: moCoolSched.h Source File + + + + +
+
+

moCoolSched.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moCoolSched.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moCoolSched_h
+00013 #define __moCoolSched_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00022 class moCoolSched:public eoUF < double &, bool >
+00023 {
+00024 
+00025 };
+00026 
+00027 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_easy_cool_sched_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_easy_cool_sched_8h-source.html new file mode 100644 index 000000000..b7bf3081a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_easy_cool_sched_8h-source.html @@ -0,0 +1,72 @@ + + +PARADISEO-MO: moEasyCoolSched.h Source File + + + + +
+
+

moEasyCoolSched.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moEasyCoolSched.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moEasyCoolSched_h
+00013 #define __moEasyCoolSched_h
+00014 
+00015 #include "moCoolSched.h"
+00016 
+00018 
+00022 class moEasyCoolSched:public moCoolSched
+00023 {
+00024 
+00025 public:
+00027 
+00031   moEasyCoolSched (double __threshold,
+00032                    double __ratio):threshold (__threshold), ratio (__ratio)
+00033   {
+00034 
+00035   }
+00036 
+00038 
+00044   bool operator   () (double &__temp)
+00045   {
+00046 
+00047     return (__temp *= ratio) > threshold;
+00048   }
+00049 
+00050 private:
+00051 
+00053   double threshold;
+00054 
+00056   double ratio;
+00057 
+00058 };
+00059 
+00060 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_first_impr_select_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_first_impr_select_8h-source.html new file mode 100644 index 000000000..5a4cefa69 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_first_impr_select_8h-source.html @@ -0,0 +1,106 @@ + + +PARADISEO-MO: moFirstImprSelect.h Source File + + + + +
+
+

moFirstImprSelect.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moFirstImprSelect.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moFirstImprSelect_h
+00013 #define __moFirstImprSelect_h
+00014 
+00015 #include "moMoveSelect.h"
+00016 
+00018 
+00023 template < class M > class moFirstImprSelect:public moMoveSelect < M >
+00024 {
+00025 
+00026 public:
+00027 
+00029   typedef typename M::EOType::Fitness Fitness;
+00030 
+00032 
+00035   virtual void init (const Fitness & __fit)
+00036   {
+00037 
+00038     valid = false;
+00039     init_fit = __fit;
+00040   }
+00041 
+00042 
+00044 
+00052   bool update (const M & __move, const typename M::EOType::Fitness & __fit)
+00053   {
+00054 
+00055     if (__fit > init_fit)
+00056       {
+00057 
+00058         best_fit = __fit;
+00059         best_move = __move;
+00060         valid = true;
+00061 
+00062         return false;
+00063       }
+00064     else
+00065       {
+00066         return true;
+00067       }
+00068   }
+00069 
+00071 
+00076   void operator   () (M & __move, Fitness & __fit) throw (EmptySelection)
+00077   {
+00078 
+00079     if (valid)
+00080       {
+00081         __move = best_move;
+00082         __fit = best_fit;
+00083       }
+00084     else
+00085       throw EmptySelection ();
+00086   }
+00087 
+00088 private:
+00089 
+00091   bool valid;
+00092 
+00094   M best_move;
+00095 
+00097   Fitness init_fit;
+00098 
+00100   Fitness best_fit;
+00101 
+00102 };
+00103 
+00104 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_gen_sol_continue_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_gen_sol_continue_8h-source.html new file mode 100644 index 000000000..f5fceb2ed --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_gen_sol_continue_8h-source.html @@ -0,0 +1,78 @@ + + +PARADISEO-MO: moGenSolContinue.h Source File + + + + +
+
+

moGenSolContinue.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "eoGenSolContinue.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moGenSolContinue_h
+00013 #define __moGenSolContinue_h
+00014 
+00015 #include "moSolContinue.h"
+00016 
+00018 
+00021 template < class EOT > class moGenSolContinue:public moSolContinue < EOT >
+00022 {
+00023 
+00024 public:
+00025 
+00027 
+00030   moGenSolContinue (unsigned __maxNumGen):maxNumGen (__maxNumGen), numGen (0)
+00031   {
+00032 
+00033   }
+00034 
+00036 
+00044   bool operator   () (const EOT & __sol)
+00045   {
+00046 
+00047     return (++numGen < maxNumGen);
+00048   }
+00049 
+00051 
+00054   void init ()
+00055   {
+00056 
+00057     numGen = 0;
+00058   }
+00059 
+00060 private:
+00061 
+00063   unsigned maxNumGen;
+00064 
+00066   unsigned numGen;
+00067 };
+00068 
+00069 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_h_c_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_h_c_8h-source.html new file mode 100644 index 000000000..08d186634 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_h_c_8h-source.html @@ -0,0 +1,132 @@ + + +PARADISEO-MO: moHC.h Source File + + + + +
+
+

moHC.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moHC.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moHC_h
+00013 #define __moHC_h
+00014 
+00015 #include <eoOp.h>
+00016 #include <eoEvalFunc.h>
+00017 
+00018 #include "moAlgo.h"
+00019 #include "moMoveExpl.h"
+00020 #include "moHCMoveLoopExpl.h"
+00021 
+00023 
+00026 template < class M > class moHC:public moAlgo < typename M::EOType >
+00027 {
+00028 
+00030   typedef
+00031     typename
+00032     M::EOType
+00033     EOT;
+00034 
+00036   typedef
+00037     typename
+00038     EOT::Fitness
+00039     Fitness;
+00040 
+00041 public:
+00042 
+00044 
+00053 moHC (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moMoveSelect < M > &__move_select, eoEvalFunc < EOT > &__full_eval):move_expl (*new moHCMoveLoopExpl < M >
+00054              (__move_init, __next_move, __incr_eval, __move_select)),
+00055     full_eval (__full_eval)
+00056   {
+00057 
+00058   }
+00059 
+00061 
+00067 moHC (moMoveExpl < M > &__move_expl, eoEvalFunc < EOT > &__full_eval):move_expl (__move_expl),
+00068     full_eval
+00069     (__full_eval)
+00070   {
+00071 
+00072   }
+00073 
+00075 
+00082   bool operator   ()(EOT & __sol)
+00083   {
+00084 
+00085     if (__sol.invalid ())
+00086       {
+00087         full_eval (__sol);
+00088       }
+00089 
+00090     EOT new_sol;
+00091 
+00092     do
+00093       {
+00094 
+00095         new_sol = __sol;
+00096 
+00097         try
+00098         {
+00099 
+00100           move_expl (__sol, new_sol);
+00101 
+00102         }
+00103         catch (EmptySelection & __ex)
+00104         {
+00105 
+00106           break;
+00107         }
+00108 
+00109         if (new_sol.fitness () > __sol.fitness ())
+00110           {
+00111             __sol = new_sol;
+00112           }
+00113         else
+00114           {
+00115             break;
+00116           }
+00117 
+00118       }
+00119     while (true);
+00120 
+00121     return true;
+00122   }
+00123 
+00124 private:
+00125 
+00127   moMoveExpl < M > &move_expl;
+00128 
+00130   eoEvalFunc < EOT > &full_eval;
+00131 };
+00132 
+00133 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_h_c_move_loop_expl_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_h_c_move_loop_expl_8h-source.html new file mode 100644 index 000000000..66828473a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_h_c_move_loop_expl_8h-source.html @@ -0,0 +1,115 @@ + + +PARADISEO-MO: moHCMoveLoopExpl.h Source File + + + + +
+
+

moHCMoveLoopExpl.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moHCMoveLoopExpl.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moHCMoveLoopExpl_h
+00013 #define __moHCMoveLoopExpl_h
+00014 
+00015 #include "moMoveLoopExpl.h"
+00016 
+00017 #include "moMoveInit.h"
+00018 #include "moNextMove.h"
+00019 #include "moMoveIncrEval.h"
+00020 #include "moMoveSelect.h"
+00021 
+00023 template < class M > class moHCMoveLoopExpl:public moMoveLoopExpl < M >
+00024 {
+00025 
+00027   typedef typename M::EOType EOT;
+00028 
+00030   typedef typename M::EOType::Fitness Fitness;
+00031 
+00032 public:
+00033 
+00035 
+00043 moHCMoveLoopExpl (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moMoveSelect < M > &__move_select):
+00044 
+00045   move_init (__move_init),
+00046     next_move (__next_move),
+00047     incr_eval (__incr_eval), move_select (__move_select)
+00048   {
+00049 
+00050   }
+00051 
+00053 
+00059   void operator   () (const EOT & __old_sol, EOT & __new_sol)
+00060   {
+00061 
+00062     M move;
+00063 
+00064     //
+00065     move_init (move, __old_sol);        /* Restarting the exploration of 
+00066                                            of the neighborhood ! */
+00067 
+00068     move_select.init (__old_sol.fitness ());
+00069 
+00070     while (move_select.update (move, incr_eval (move, __old_sol))
+00071            && next_move (move, __old_sol));
+00072 
+00073     try
+00074     {
+00075 
+00076       M best_move;
+00077 
+00078       Fitness best_move_fit;
+00079 
+00080       move_select (best_move, best_move_fit);
+00081       __new_sol.fitness (best_move_fit);
+00082       best_move (__new_sol);
+00083 
+00084     }
+00085     catch (EmptySelection & __ex)
+00086     {
+00087 
+00088       // ?
+00089     }
+00090   }
+00091 
+00092 private:
+00093 
+00095   moMoveInit < M > &move_init;
+00096 
+00098   moNextMove < M > &next_move;
+00099 
+00101   moMoveIncrEval < M > &incr_eval;
+00102 
+00104   moMoveSelect < M > &move_select;
+00105 
+00106 };
+00107 
+00108 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_impr_best_fit_aspir_crit_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_impr_best_fit_aspir_crit_8h-source.html new file mode 100644 index 000000000..10ce89c74 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_impr_best_fit_aspir_crit_8h-source.html @@ -0,0 +1,96 @@ + + +PARADISEO-MO: moImprBestFitAspirCrit.h Source File + + + + +
+
+

moImprBestFitAspirCrit.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moImprAspirCrit.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moImprBestFitAspirCrit_h
+00013 #define __moImprBestFitAspirCrit_h
+00014 
+00015 #include "moAspirCrit.h"
+00016 
+00018 
+00022 template < class M > class moImprBestFitAspirCrit:public moAspirCrit < M >
+00023 {
+00024 
+00025 public:
+00026 
+00028   typedef typename M::EOType::Fitness Fitness;
+00029 
+00031   moImprBestFitAspirCrit ()
+00032   {
+00033 
+00034     first_time = true;
+00035   }
+00036 
+00038   void init ()
+00039   {
+00040 
+00041     first_time = true;
+00042   }
+00043 
+00045 
+00052   bool operator   () (const M & __move, const Fitness & __fit)
+00053   {
+00054 
+00055     if (first_time)
+00056       {
+00057 
+00058         best_fit = __fit;
+00059         first_time = false;
+00060 
+00061         return true;
+00062       }
+00063     else if (__fit < best_fit)
+00064       return false;
+00065 
+00066     else
+00067       {
+00068 
+00069         best_fit = __fit;
+00070 
+00071         return true;
+00072       }
+00073   }
+00074 
+00075 private:
+00076 
+00078   Fitness best_fit;
+00079 
+00081   bool first_time;
+00082 };
+00083 
+00084 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_it_rand_next_move_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_it_rand_next_move_8h-source.html new file mode 100644 index 000000000..fc0b7554a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_it_rand_next_move_8h-source.html @@ -0,0 +1,92 @@ + + +PARADISEO-MO: moItRandNextMove.h Source File + + + + +
+
+

moItRandNextMove.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moNextMove.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moItRandNextMove_h
+00013 #define __moItRandNextMove_h
+00014 
+00015 #include "moNextMove.h"
+00016 #include "moRandMove.h"
+00017 
+00019 
+00022 template < class M > class moItRandNextMove:public moNextMove < M >
+00023 {
+00024 
+00026   typedef typename M::EOType EOT;
+00027 
+00028 public:
+00029 
+00031 
+00037   moItRandNextMove (moRandMove < M > &__rand_move,
+00038                     unsigned __max_iter):rand_move (__rand_move),
+00039     max_iter (__max_iter), num_iter (0)
+00040   {
+00041 
+00042   }
+00043 
+00045 
+00052   bool operator   () (M & __move, const EOT & __sol)
+00053   {
+00054 
+00055     if (num_iter++ > max_iter)
+00056       {
+00057 
+00058         num_iter = 0;
+00059         return false;
+00060       }
+00061     else
+00062       {
+00063 
+00064         /* The given solution is discarded here */
+00065         rand_move (__move);
+00066         num_iter++;
+00067         return true;
+00068       }
+00069   }
+00070 
+00071 private:
+00072 
+00074   moRandMove < M > &rand_move;
+00075 
+00077   unsigned max_iter;
+00078 
+00080   unsigned num_iter;
+00081 
+00082 };
+00083 
+00084 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_l_s_check_point_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_l_s_check_point_8h-source.html new file mode 100644 index 000000000..56caef581 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_l_s_check_point_8h-source.html @@ -0,0 +1,80 @@ + + +PARADISEO-MO: moLSCheckPoint.h Source File + + + + +
+
+

moLSCheckPoint.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moLSCheckPoint.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moSolUpdater_h
+00013 #define __moSolUpdater_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00021 template < class M > class moLSCheckPoint:public eoBF < const M &, const typename
+00022   M::EOType &, void >
+00023 {
+00024 
+00025 public:
+00027 
+00033   void
+00034   operator   () (const M & __move, const typename M::EOType & __sol)
+00035   {
+00036 
+00037     for (unsigned i = 0; i < func.size (); i++)
+00038       {
+00039         func[i]->operator   ()(__move, __sol);
+00040       }
+00041   }
+00042 
+00044 
+00048   void
+00049   add (eoBF < const M &, const typename M::EOType &, void >&__f)
+00050   {
+00051 
+00052     func.push_back (&__f);
+00053   }
+00054 
+00055 private:
+00056 
+00058   std::vector < eoBF < const
+00059     M &, const
+00060     typename
+00061   M::EOType &, void >*>
+00062     func;
+00063 
+00064 };
+00065 
+00066 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_move_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_move_8h-source.html new file mode 100644 index 000000000..64f65fc36 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_move_8h-source.html @@ -0,0 +1,54 @@ + + +PARADISEO-MO: moMove.h Source File + + + + +
+
+

moMove.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moMove.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moMove_h
+00013 #define __moMove_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00023 template < class EOT > class moMove:public eoUF < EOT &, void >
+00024 {
+00025 
+00026 public:
+00028   typedef EOT EOType;
+00029 
+00030 };
+00031 
+00032 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_move_expl_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_move_expl_8h-source.html new file mode 100644 index 000000000..e287fcf49 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_move_expl_8h-source.html @@ -0,0 +1,54 @@ + + +PARADISEO-MO: moMoveExpl.h Source File + + + + +
+
+

moMoveExpl.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "eoMoveExpl.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moMoveExpl_h
+00013 #define __moMoveExpl_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00021 template < class M > class moMoveExpl:public eoBF < const typename
+00022   M::EOType &,
+00023   typename
+00024 M::EOType &, void >
+00025 {
+00026 
+00027 };
+00028 
+00029 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_move_incr_eval_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_move_incr_eval_8h-source.html new file mode 100644 index 000000000..05f35f376 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_move_incr_eval_8h-source.html @@ -0,0 +1,54 @@ + + +PARADISEO-MO: moMoveIncrEval.h Source File + + + + +
+
+

moMoveIncrEval.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "eoMoveIncrEval.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moMoveIncrEval_h
+00013 #define __moMoveIncrEval_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00024 template < class M > class moMoveIncrEval:public eoBF < const M &, const typename
+00025   M::EOType &,
+00026   typename
+00027   M::EOType::Fitness >
+00028 {
+00029 
+00030 };
+00031 
+00032 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_move_init_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_move_init_8h-source.html new file mode 100644 index 000000000..2abbc5ca6 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_move_init_8h-source.html @@ -0,0 +1,52 @@ + + +PARADISEO-MO: moMoveInit.h Source File + + + + +
+
+

moMoveInit.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moMoveInit.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moMoveInit_h
+00013 #define __moMoveInit_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00022 template < class M > class moMoveInit:public eoBF < M &, const typename
+00023 M::EOType &, void >
+00024 {
+00025 
+00026 };
+00027 
+00028 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_move_loop_expl_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_move_loop_expl_8h-source.html new file mode 100644 index 000000000..ad871dec2 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_move_loop_expl_8h-source.html @@ -0,0 +1,51 @@ + + +PARADISEO-MO: moMoveLoopExpl.h Source File + + + + +
+
+

moMoveLoopExpl.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moMoveLoopExpl.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moMoveLoopExpl_h
+00013 #define __moMoveLoopExpl_h
+00014 
+00015 #include "moMoveExpl.h"
+00016 
+00018 
+00021 template < class M > class moMoveLoopExpl:public moMoveExpl < M >
+00022 {
+00023 
+00024 };
+00025 
+00026 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_move_select_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_move_select_8h-source.html new file mode 100644 index 000000000..701540f94 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_move_select_8h-source.html @@ -0,0 +1,72 @@ + + +PARADISEO-MO: moMoveSelect.h Source File + + + + +
+
+

moMoveSelect.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moMoveSelect.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moMoveSelect_h
+00013 #define __moMoveSelect_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00021 class EmptySelection
+00022 {
+00023 
+00024 };
+00025 
+00027 
+00032 template < class M > class moMoveSelect:public eoBF < M &, typename M::EOType::Fitness &,
+00033   void >
+00034 {
+00035 public:
+00037   typedef
+00038     typename
+00039     M::EOType::Fitness
+00040     Fitness;
+00041 
+00043 
+00050   virtual void
+00051   init (const Fitness & __fit) = 0;
+00052 
+00054 
+00059   virtual
+00060     bool
+00061   update (const M & __move, const Fitness & __fit) = 0;
+00062 
+00063 };
+00064 
+00065 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_next_move_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_next_move_8h-source.html new file mode 100644 index 000000000..0a44fcb8a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_next_move_8h-source.html @@ -0,0 +1,53 @@ + + +PARADISEO-MO: moNextMove.h Source File + + + + +
+
+

moNextMove.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moNextMove.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moNextMove_h
+00013 #define __moNextMove_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00022 template < class M > class moNextMove:public eoBF < M &, const typename
+00023   M::EOType &,
+00024   bool >
+00025 {
+00026 
+00027 };
+00028 
+00029 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_no_aspir_crit_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_no_aspir_crit_8h-source.html new file mode 100644 index 000000000..82bfa51e9 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_no_aspir_crit_8h-source.html @@ -0,0 +1,63 @@ + + +PARADISEO-MO: moNoAspirCrit.h Source File + + + + +
+
+

moNoAspirCrit.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "eoNoAspirCrit.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* TEXT LICENCE
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moNoAspirCrit_h
+00013 #define __moNoAspirCrit_h
+00014 
+00015 #include "moAspirCrit.h"
+00016 
+00018 
+00021 template < class M > class moNoAspirCrit:public moAspirCrit < M >
+00022 {
+00023 
+00025 
+00032   bool operator   () (const M & __move,
+00033                       const typename M::EOType::Fitness & __sol)
+00034   {
+00035 
+00036     return false;
+00037   }
+00038 
+00040 
+00043   void init ()
+00044   {
+00045   }
+00046 };
+00047 
+00048 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_rand_impr_select_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_rand_impr_select_8h-source.html new file mode 100644 index 000000000..069592844 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_rand_impr_select_8h-source.html @@ -0,0 +1,103 @@ + + +PARADISEO-MO: moRandImprSelect.h Source File + + + + +
+
+

moRandImprSelect.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moRandImprSelect.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moRandImprSelect_h
+00013 #define __moRandImprSelect_h
+00014 
+00015 #include <vector>
+00016 
+00017 #include <utils/eoRNG.h>
+00018 #include "moMoveSelect.h"
+00019 
+00021 
+00025 template < class M > class moRandImprSelect:public moMoveSelect < M >
+00026 {
+00027 
+00028 public:
+00029 
+00031   typedef typename M::EOType::Fitness Fitness;
+00032 
+00034 
+00040   void init (const Fitness & __fit)
+00041   {
+00042     init_fit = __fit;
+00043     vect_better_fit.clear ();
+00044     vect_better_moves.clear ();
+00045   }
+00046 
+00048 
+00056   bool update (const M & __move, const Fitness & __fit)
+00057   {
+00058 
+00059     if (__fit > init_fit)
+00060       {
+00061 
+00062         vect_better_fit.push_back (__fit);
+00063         vect_better_moves.push_back (__move);
+00064       }
+00065 
+00066     return true;
+00067   }
+00068 
+00070 
+00077   void operator   () (M & __move, Fitness & __fit) throw (EmptySelection)
+00078   {
+00079 
+00080     if (!vect_better_fit.empty ())
+00081       {
+00082 
+00083         unsigned n = rng.random (vect_better_fit.size ());
+00084 
+00085         __move = vect_better_moves[n];
+00086         __fit = vect_better_fit[n];
+00087       }
+00088     else
+00089       throw EmptySelection ();
+00090   }
+00091 
+00092 private:
+00093 
+00095   Fitness init_fit;
+00096 
+00098   std::vector < Fitness > vect_better_fit;
+00099 
+00101   std::vector < M > vect_better_moves;
+00102 };
+00103 
+00104 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_rand_move_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_rand_move_8h-source.html new file mode 100644 index 000000000..08dfeebc3 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_rand_move_8h-source.html @@ -0,0 +1,51 @@ + + +PARADISEO-MO: moRandMove.h Source File + + + + +
+
+

moRandMove.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moRandMove.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moRandMove_h
+00013 #define __moRandMove_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00021 template < class M > class moRandMove:public eoUF < M &, void >
+00022 {
+00023 
+00024 };
+00025 
+00026 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_s_a_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_s_a_8h-source.html new file mode 100644 index 000000000..ec344b5e6 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_s_a_8h-source.html @@ -0,0 +1,154 @@ + + +PARADISEO-MO: moSA.h Source File + + + + +
+
+

moSA.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moSA.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moSA_h
+00013 #define __moSA_h
+00014 
+00015 #include <unistd.h>
+00016 
+00017 #include <eoOp.h>
+00018 #include <eoEvalFunc.h>
+00019 
+00020 #include "moAlgo.h"
+00021 #include "moRandMove.h"
+00022 #include "moMoveIncrEval.h"
+00023 #include "moCoolSched.h"
+00024 #include "moSolContinue.h"
+00025 
+00026 #include <math.h>
+00027 
+00029 
+00032 template < class M > class moSA:public moAlgo < typename M::EOType >
+00033 {
+00034 
+00036   typedef
+00037     typename
+00038     M::EOType
+00039     EOT;
+00040 
+00042   typedef
+00043     typename
+00044     EOT::Fitness
+00045     Fitness;
+00046 
+00047 public:
+00048 
+00050 
+00060   moSA (moRandMove < M > &__move_rand,
+00061         moMoveIncrEval < M > &__incr_eval,
+00062         moSolContinue < EOT > &__cont,
+00063         double __init_temp,
+00064         moCoolSched & __cool_sched, eoEvalFunc < EOT > &__full_eval):
+00065   move_rand (__move_rand),
+00066   incr_eval (__incr_eval),
+00067   cont (__cont),
+00068   init_temp (__init_temp),
+00069   cool_sched (__cool_sched),
+00070   full_eval (__full_eval)
+00071   {
+00072 
+00073   }
+00074 
+00076 
+00082   bool operator   ()(EOT & __sol)
+00083   {
+00084 
+00085     if (__sol.invalid ())
+00086       {
+00087         full_eval (__sol);
+00088       }
+00089 
+00090     double
+00091       temp = init_temp;
+00092 
+00093     M move;
+00094 
+00095     EOT best_sol = __sol;
+00096 
+00097     do
+00098       {
+00099 
+00100         cont.init ();
+00101         do
+00102           {
+00103 
+00104             move_rand (move);
+00105 
+00106             Fitness delta_fit = incr_eval (move, __sol) - __sol.fitness ();
+00107 
+00108             if (delta_fit > 0 || rng.uniform () < exp (delta_fit / temp))
+00109               {
+00110 
+00111                 __sol.fitness (incr_eval (move, __sol));
+00112                 move (__sol);
+00113 
+00114                 /* Updating the best solution found
+00115                    until now ? */
+00116                 if (__sol.fitness () > best_sol.fitness ())
+00117                   best_sol = __sol;
+00118               }
+00119 
+00120           }
+00121         while (cont (__sol));
+00122 
+00123       }
+00124     while (cool_sched (temp));
+00125 
+00126     __sol = best_sol;
+00127 
+00128     return true;
+00129   }
+00130 
+00131 private:
+00132 
+00134   moRandMove < M > &move_rand;
+00135 
+00137   moMoveIncrEval < M > &incr_eval;
+00138 
+00140   moSolContinue < EOT > &cont;
+00141 
+00143   double
+00144     init_temp;
+00145 
+00147   moCoolSched & cool_sched;
+00148 
+00150   eoEvalFunc < EOT > &full_eval;        // Full evaluator.
+00151 };
+00152 
+00153 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_sol_continue_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_sol_continue_8h-source.html new file mode 100644 index 000000000..301a833af --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_sol_continue_8h-source.html @@ -0,0 +1,54 @@ + + +PARADISEO-MO: moSolContinue.h Source File + + + + +
+
+

moSolContinue.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moSolContinue.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moSolContinue_h
+00013 #define __moSolContinue_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00022 template < class EOT > class moSolContinue:public eoUF < const EOT &, bool >
+00023 {
+00024 
+00025 public:
+00027 
+00030   virtual void init () = 0;
+00031 };
+00032 
+00033 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_t_s_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_t_s_8h-source.html new file mode 100644 index 000000000..6e55de644 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_t_s_8h-source.html @@ -0,0 +1,174 @@ + + +PARADISEO-MO: moTS.h Source File + + + + +
+
+

moTS.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moTS.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008       
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moTS_h
+00013 #define __moTS_h
+00014 
+00015 #include <eoOp.h>
+00016 #include <eoEvalFunc.h>
+00017 
+00018 #include "moAlgo.h"
+00019 #include "moSolContinue.h"
+00020 
+00021 #include "moMoveExpl.h"
+00022 #include "moTSMoveLoopExpl.h"
+00023 
+00024 #include <pthread.h>
+00025 
+00027 
+00030 template < class M > class moTS:public moAlgo < typename M::EOType >
+00031 {
+00032 
+00034   typedef
+00035     typename
+00036     M::EOType
+00037     EOT;
+00038 
+00040   typedef
+00041     typename
+00042     EOT::Fitness
+00043     Fitness;
+00044 
+00045 public:
+00046 
+00048 
+00059 moTS (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moTabuList < M > &__tabu_list, moAspirCrit < M > &__aspir_crit, moSolContinue < EOT > &__cont, eoEvalFunc < EOT > &__full_eval):move_expl (*new moTSMoveLoopExpl < M >
+00060              (__move_init, __next_move, __incr_eval, __tabu_list,
+00061               __aspir_crit)), cont (__cont), full_eval (__full_eval)
+00062   {
+00063 
+00064     if (first_time)
+00065       {
+00066 
+00067         pthread_mutex_init (&mutex, 0);
+00068 
+00069         first_time = false;
+00070       }
+00071   }
+00072 
+00074 
+00081 moTS (moMoveExpl < M > &__move_expl, moSolContinue < EOT > &__cont, eoEvalFunc < EOT > &__full_eval):move_expl (__move_expl),
+00082     cont (__cont),
+00083     full_eval (__full_eval)
+00084   {
+00085 
+00086     if (first_time)
+00087       {
+00088 
+00089         pthread_mutex_init (&mutex, 0);
+00090 
+00091         first_time = false;
+00092       }
+00093   }
+00094 
+00096 
+00104   bool operator   ()(EOT & __sol)
+00105   {
+00106 
+00107     pthread_mutex_lock (&mutex);
+00108 
+00109     if (__sol.invalid ())
+00110       {
+00111         full_eval (__sol);
+00112       }
+00113 
+00114     M move;
+00115 
+00116     EOT best_sol = __sol, new_sol;
+00117 
+00118     cont.init ();
+00119 
+00120     do
+00121       {
+00122 
+00123         new_sol = __sol;
+00124 
+00125         try
+00126         {
+00127 
+00128           move_expl (__sol, new_sol);
+00129 
+00130         }
+00131         catch (EmptySelection & __ex)
+00132         {
+00133 
+00134           break;
+00135         }
+00136 
+00137         /* Updating the best solution
+00138            found until now ? */
+00139         if (new_sol.fitness () > __sol.fitness ())
+00140           {
+00141             best_sol = new_sol;
+00142           }
+00143 
+00144         __sol = new_sol;
+00145 
+00146       }
+00147     while (cont (__sol));
+00148 
+00149     __sol = best_sol;
+00150 
+00151     pthread_mutex_unlock (&mutex);
+00152 
+00153     return true;
+00154   }
+00155 
+00156 private:
+00157 
+00159   static
+00160     bool
+00161     first_time;
+00162 
+00164   static
+00165     pthread_mutex_t
+00166     mutex;
+00167 
+00169   moMoveExpl < M > &move_expl;
+00170 
+00172   moSolContinue < EOT > &cont;
+00173 
+00175   eoEvalFunc < EOT > &full_eval;
+00176 };
+00177 
+00179 template < class EOT > pthread_mutex_t moTS < EOT >::mutex;
+00180 
+00182 template < class EOT > bool moTS < EOT >::first_time = true;
+00183 
+00184 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_t_s_move_loop_expl_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_t_s_move_loop_expl_8h-source.html new file mode 100644 index 000000000..7d72d399c --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_t_s_move_loop_expl_8h-source.html @@ -0,0 +1,134 @@ + + +PARADISEO-MO: moTSMoveLoopExpl.h Source File + + + + +
+
+

moTSMoveLoopExpl.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moTSMoveLoopExpl.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moTSMoveLoopExpl_h
+00013 #define __moTSMoveLoopExpl_h
+00014 
+00015 #include "moMoveLoopExpl.h"
+00016 
+00017 #include "moMoveInit.h"
+00018 #include "moNextMove.h"
+00019 #include "moMoveIncrEval.h"
+00020 #include "moMoveSelect.h"
+00021 
+00022 #include "moTabuList.h"
+00023 #include "moAspirCrit.h"
+00024 #include "moBestImprSelect.h"
+00025 
+00027 
+00030 template < class M > class moTSMoveLoopExpl:public moMoveLoopExpl < M >
+00031 {
+00032 
+00034   typedef typename M::EOType EOT;
+00035 
+00037   typedef typename M::EOType::Fitness Fitness;
+00038 
+00039 public:
+00040 
+00042 
+00049 moTSMoveLoopExpl (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moTabuList < M > &__tabu_list, moAspirCrit < M > &__aspir_crit):
+00050   move_init (__move_init),
+00051     next_move (__next_move),
+00052     incr_eval (__incr_eval),
+00053     tabu_list (__tabu_list), aspir_crit (__aspir_crit)
+00054   {
+00055 
+00056     tabu_list.init ();
+00057     aspir_crit.init ();
+00058   }
+00059 
+00061 
+00069   void operator   () (const EOT & __old_sol, EOT & __new_sol)
+00070   {
+00071 
+00072     M move;
+00073 
+00074 
+00075     move_init (move, __old_sol);        /* Restarting the exploration of 
+00076                                            of the neighborhood ! */
+00077 
+00078     move_select.init (__old_sol.fitness ());
+00079 
+00080     do
+00081       {
+00082 
+00083         Fitness fit = incr_eval (move, __old_sol);
+00084 
+00085         if (!tabu_list (move, __old_sol) || aspir_crit (move, fit))
+00086           {
+00087             if (!move_select.update (move, fit))
+00088               break;
+00089           }
+00090 
+00091       }
+00092     while (next_move (move, __old_sol));
+00093 
+00094     M best_move;
+00095 
+00096     Fitness best_move_fit;
+00097 
+00098     move_select (best_move, best_move_fit);
+00099 
+00100     __new_sol.fitness (best_move_fit);
+00101     best_move (__new_sol);
+00102 
+00103     /* Removing moves that are
+00104        no more tabu */
+00105     tabu_list.update ();
+00106 
+00107     // Updating the tabu list
+00108     tabu_list.add (best_move, __new_sol);
+00109   }
+00110 
+00111 private:
+00112 
+00114   moMoveInit < M > &move_init;
+00115 
+00117   moNextMove < M > &next_move;
+00118 
+00120   moMoveIncrEval < M > &incr_eval;
+00121 
+00123   moBestImprSelect < M > move_select;
+00124 
+00126   moTabuList < M > &tabu_list;
+00127 
+00129   moAspirCrit < M > &aspir_crit;
+00130 };
+00131 
+00132 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/mo_tabu_list_8h-source.html b/trunk/paradiseo-mo/tutorial/docs/html/mo_tabu_list_8h-source.html new file mode 100644 index 000000000..9bcd057d1 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/mo_tabu_list_8h-source.html @@ -0,0 +1,71 @@ + + +PARADISEO-MO: moTabuList.h Source File + + + + +
+
+

moTabuList.h

00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
+00002 
+00003 // "moTabuList.h"
+00004 
+00005 // (c) OPAC Team, LIFL, 2003-2006
+00006 
+00007 /* LICENCE TEXT 
+00008    
+00009    Contact: paradiseo-help@lists.gforge.inria.fr
+00010 */
+00011 
+00012 #ifndef __moTabuList_h
+00013 #define __moTabuList_h
+00014 
+00015 #include <eoFunctor.h>
+00016 
+00018 
+00022 template < class M > class moTabuList:public eoBF < const M &, const typename
+00023   M::EOType &,
+00024   bool >
+00025 {
+00026 
+00027 public:
+00029   typedef
+00030     typename
+00031     M::EOType
+00032     EOT;
+00033 
+00034 
+00036 
+00042   virtual void
+00043   add (const M & __move, const EOT & __sol) = 0;
+00044 
+00046 
+00049   virtual void
+00050   update () = 0;
+00051 
+00053 
+00056   virtual void
+00057   init () = 0;
+00058 };
+00059 
+00060 #endif
+

Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/search.idx b/trunk/paradiseo-mo/tutorial/docs/html/search.idx new file mode 100644 index 000000000..50cab33e9 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/search.idx differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/search.php b/trunk/paradiseo-mo/tutorial/docs/html/search.php new file mode 100644 index 000000000..caf38e36e --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/search.php @@ -0,0 +1,381 @@ + + +Search + + + + +
+
    +
  • Main Page
  • +
  • Classes
  • +
  • Files
  • +
  • +
    + + + + +1 document matching your query."; + } + else // $num>1 + { + return "Found $num documents matching your query. Showing best matches first."; + } +} + +function report_matches() +{ + return "Matches: "; +} +function end_form($value) +{ + echo " \n \n
    \n
    \n
  • \n
\n
\n"; +} + +function readInt($file) +{ + $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); + $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); + return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; +} + +function readString($file) +{ + $result=""; + while (ord($c=fgetc($file))) $result.=$c; + return $result; +} + +function readHeader($file) +{ + $header =fgetc($file); $header.=fgetc($file); + $header.=fgetc($file); $header.=fgetc($file); + return $header; +} + +function computeIndex($word) +{ + // Fast string hashing + //$lword = strtolower($word); + //$l = strlen($lword); + //for ($i=0;$i<$l;$i++) + //{ + // $c = ord($lword{$i}); + // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; + //} + //return $v; + + // Simple hashing that allows for substring search + if (strlen($word)<2) return -1; + // high char of the index + $hi = ord($word{0}); + if ($hi==0) return -1; + // low char of the index + $lo = ord($word{1}); + if ($lo==0) return -1; + // return index + return $hi*256+$lo; +} + +function search($file,$word,&$statsList) +{ + $index = computeIndex($word); + if ($index!=-1) // found a valid index + { + fseek($file,$index*4+4); // 4 bytes per entry, skip header + $index = readInt($file); + if ($index) // found words matching the hash key + { + $start=sizeof($statsList); + $count=$start; + fseek($file,$index); + $w = readString($file); + while ($w) + { + $statIdx = readInt($file); + if ($word==substr($w,0,strlen($word))) + { // found word that matches (as substring) + $statsList[$count++]=array( + "word"=>$word, + "match"=>$w, + "index"=>$statIdx, + "full"=>strlen($w)==strlen($word), + "docs"=>array() + ); + } + $w = readString($file); + } + $totalHi=0; + $totalFreqHi=0; + $totalFreqLo=0; + for ($count=$start;$count $idx, + "freq" => $freq>>1, + "rank" => 0.0, + "hi" => $freq&1 + ); + if ($freq&1) // word occurs in high priority doc + { + $totalHi++; + $totalFreqHi+=$freq*$multiplier; + } + else // word occurs in low priority doc + { + $totalFreqLo+=$freq*$multiplier; + } + } + // read name and url info for the doc + for ($i=0;$i<$numDocs;$i++) + { + fseek($file,$docInfo[$i]["idx"]); + $docInfo[$i]["name"]=readString($file); + $docInfo[$i]["url"]=readString($file); + } + $statInfo["docs"]=$docInfo; + } + $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; + for ($count=$start;$count$key, + "name"=>$di["name"], + "rank"=>$rank + ); + } + $docs[$key]["words"][] = array( + "word"=>$wordInfo["word"], + "match"=>$wordInfo["match"], + "freq"=>$di["freq"] + ); + } + } + return $docs; +} + +function filter_results($docs,&$requiredWords,&$forbiddenWords) +{ + $filteredDocs=array(); + while (list ($key, $val) = each ($docs)) + { + $words = &$docs[$key]["words"]; + $copy=1; // copy entry by default + if (sizeof($requiredWords)>0) + { + foreach ($requiredWords as $reqWord) + { + $found=0; + foreach ($words as $wordInfo) + { + $found = $wordInfo["word"]==$reqWord; + if ($found) break; + } + if (!$found) + { + $copy=0; // document contains none of the required words + break; + } + } + } + if (sizeof($forbiddenWords)>0) + { + foreach ($words as $wordInfo) + { + if (in_array($wordInfo["word"],$forbiddenWords)) + { + $copy=0; // document contains a forbidden word + break; + } + } + } + if ($copy) $filteredDocs[$key]=$docs[$key]; + } + return $filteredDocs; +} + +function compare_rank($a,$b) +{ + if ($a["rank"] == $b["rank"]) + { + return 0; + } + return ($a["rank"]>$b["rank"]) ? -1 : 1; +} + +function sort_results($docs,&$sorted) +{ + $sorted = $docs; + usort($sorted,"compare_rank"); + return $sorted; +} + +function report_results(&$docs) +{ + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $numDocs = sizeof($docs); + if ($numDocs==0) + { + echo " \n"; + echo " \n"; + echo " \n"; + } + else + { + echo " \n"; + echo " \n"; + echo " \n"; + $num=1; + foreach ($docs as $doc) + { + echo " \n"; + echo " "; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + $num++; + } + } + echo "

".search_results()."

".matches_text(0)."
".matches_text($numDocs); + echo "\n"; + echo "
$num.".$doc["name"]."
".report_matches()." "; + foreach ($doc["words"] as $wordInfo) + { + $word = $wordInfo["word"]; + $matchRight = substr($wordInfo["match"],strlen($word)); + echo "$word$matchRight(".$wordInfo["freq"].") "; + } + echo "
\n"; +} + +function main() +{ + if(strcmp('4.1.0', phpversion()) > 0) + { + die("Error: PHP version 4.1.0 or above required!"); + } + if (!($file=fopen("search.idx","rb"))) + { + die("Error: Search index file could NOT be opened!"); + } + if (readHeader($file)!="DOXS") + { + die("Error: Header of index file is invalid!"); + } + $query=""; + if (array_key_exists("query", $_GET)) + { + $query=$_GET["query"]; + } + end_form($query); + echo " \n
\n"; + $results = array(); + $requiredWords = array(); + $forbiddenWords = array(); + $foundWords = array(); + $word=strtok($query," "); + while ($word) // for each word in the search query + { + if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } + if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } + if (!in_array($word,$foundWords)) + { + $foundWords[]=$word; + search($file,strtolower($word),$results); + } + $word=strtok(" "); + } + $docs = array(); + combine_results($results,$docs); + // filter out documents with forbidden word or that do not contain + // required words + $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); + // sort the results based on rank + $sorted = array(); + sort_results($filteredDocs,$sorted); + // report results to the user + report_results($sorted); + echo "
\n"; + fclose($file); +} + +main(); + + +?> +
Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by  + +doxygen 1.5.1
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/html/tab_b.gif b/trunk/paradiseo-mo/tutorial/docs/html/tab_b.gif new file mode 100644 index 000000000..0d623483f Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/tab_b.gif differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/tab_l.gif b/trunk/paradiseo-mo/tutorial/docs/html/tab_l.gif new file mode 100644 index 000000000..9b1e6337c Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/tab_l.gif differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/tab_r.gif b/trunk/paradiseo-mo/tutorial/docs/html/tab_r.gif new file mode 100644 index 000000000..ce9dd9f53 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/html/tab_r.gif differ diff --git a/trunk/paradiseo-mo/tutorial/docs/html/tabs.css b/trunk/paradiseo-mo/tutorial/docs/html/tabs.css new file mode 100644 index 000000000..a61552a67 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/trunk/paradiseo-mo/tutorial/docs/html/tree.html b/trunk/paradiseo-mo/tutorial/docs/html/tree.html new file mode 100644 index 000000000..8b6c88146 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/html/tree.html @@ -0,0 +1,182 @@ + + + + + + + TreeView + + + + +
+

PARADISEO-MO

+
+

o*Welcome to PARADISEO-Moving Objects

+

o+Class List

+ +

o+Class Hierarchy

+ +

o*Class Members

+

\+File List

+
+

 o*index.h

+

 o*mo.h

+

 o*moAlgo.h

+

 o*moAspirCrit.h

+

 o*moBestImprSelect.h

+

 o*moCoolSched.h

+

 o*moEasyCoolSched.h

+

 o*moFirstImprSelect.h

+

 o*moGenSolContinue.h

+

 o*moHC.h

+

 o*moHCMoveLoopExpl.h

+

 o*moImprBestFitAspirCrit.h

+

 o*moItRandNextMove.h

+

 o*moLSCheckPoint.h

+

 o*moMove.h

+

 o*moMoveExpl.h

+

 o*moMoveIncrEval.h

+

 o*moMoveInit.h

+

 o*moMoveLoopExpl.h

+

 o*moMoveSelect.h

+

 o*moNextMove.h

+

 o*moNoAspirCrit.h

+

 o*moRandImprSelect.h

+

 o*moRandMove.h

+

 o*moSA.h

+

 o*moSolContinue.h

+

 o*moTabuList.h

+

 o*moTS.h

+

 \*moTSMoveLoopExpl.h

+
+
+
+ + diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/FreeSans.ttf b/trunk/paradiseo-mo/tutorial/docs/latex/FreeSans.ttf new file mode 100644 index 000000000..b550b90ba Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/docs/latex/FreeSans.ttf differ diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/Makefile b/trunk/paradiseo-mo/tutorial/docs/latex/Makefile new file mode 100644 index 000000000..776fcf968 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/Makefile @@ -0,0 +1,39 @@ +all: clean refman.dvi + +ps: refman.ps + +pdf: refman.pdf + +ps_2on1: refman_2on1.ps + +pdf_2on1: refman_2on1.pdf + +refman.ps: refman.dvi + dvips -o refman.ps refman.dvi + +refman.pdf: refman.ps + ps2pdf refman.ps refman.pdf + +refman.dvi: refman.tex doxygen.sty + echo "Running latex..." + latex refman.tex + echo "Running makeindex..." + makeindex refman.idx + echo "Rerunning latex...." + latex refman.tex + latex_count=5 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + latex refman.tex ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + +refman_2on1.ps: refman.ps + psnup -2 refman.ps >refman_2on1.ps + +refman_2on1.pdf: refman_2on1.ps + ps2pdf refman_2on1.ps refman_2on1.pdf + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/annotated.tex b/trunk/paradiseo-mo/tutorial/docs/latex/annotated.tex new file mode 100644 index 000000000..741c4aab0 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/annotated.tex @@ -0,0 +1,31 @@ +\section{PARADISEO-MO Class List} +Here are the classes, structs, unions and interfaces with brief descriptions:\begin{CompactList} +\item\contentsline{section}{{\bf Empty\-Selection} (Special class that describes the case of no selection )}{\pageref{class_empty_selection}}{} +\item\contentsline{section}{{\bf mo\-Algo$<$ EOT $>$} (Description of an algorithm of the mo library )}{\pageref{classmo_algo}}{} +\item\contentsline{section}{{\bf mo\-Aspir\-Crit$<$ M $>$} (Description of the conditions in which a tabu move could be accepted )}{\pageref{classmo_aspir_crit}}{} +\item\contentsline{section}{{\bf mo\-Best\-Impr\-Select$<$ M $>$} (One of the possible \doxyref{mo\-Move\-Select}{p.}{classmo_move_select} )}{\pageref{classmo_best_impr_select}}{} +\item\contentsline{section}{{\bf mo\-Cool\-Sched} (This class gives the description of a cooling schedule )}{\pageref{classmo_cool_sched}}{} +\item\contentsline{section}{{\bf mo\-Easy\-Cool\-Sched} (One of the possible \doxyref{mo\-Cool\-Sched}{p.}{classmo_cool_sched} )}{\pageref{classmo_easy_cool_sched}}{} +\item\contentsline{section}{{\bf mo\-First\-Impr\-Select$<$ M $>$} (One possible \doxyref{mo\-Move\-Select}{p.}{classmo_move_select} )}{\pageref{classmo_first_impr_select}}{} +\item\contentsline{section}{{\bf mo\-Gen\-Sol\-Continue$<$ EOT $>$} (One possible stop criterion for a solution-based heuristic )}{\pageref{classmo_gen_sol_continue}}{} +\item\contentsline{section}{{\bf mo\-HC$<$ M $>$} (Hill Climbing (HC) )}{\pageref{classmo_h_c}}{} +\item\contentsline{section}{{\bf mo\-HCMove\-Loop\-Expl$<$ M $>$} (Iterative explorer used by a \doxyref{mo\-HC}{p.}{classmo_h_c} )}{\pageref{classmo_h_c_move_loop_expl}}{} +\item\contentsline{section}{{\bf mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$} (One of the possible \doxyref{mo\-Aspir\-Crit}{p.}{classmo_aspir_crit} )}{\pageref{classmo_impr_best_fit_aspir_crit}}{} +\item\contentsline{section}{{\bf mo\-It\-Rand\-Next\-Move$<$ M $>$} (One of the possible \doxyref{mo\-Next\-Move}{p.}{classmo_next_move} )}{\pageref{classmo_it_rand_next_move}}{} +\item\contentsline{section}{{\bf mo\-LSCheck\-Point$<$ M $>$} (Class which allows a checkpointing system )}{\pageref{classmo_l_s_check_point}}{} +\item\contentsline{section}{{\bf mo\-Move$<$ EOT $>$} (Definition of a move )}{\pageref{classmo_move}}{} +\item\contentsline{section}{{\bf mo\-Move\-Expl$<$ M $>$} (Description of a move (\doxyref{mo\-Move}{p.}{classmo_move}) explorer )}{\pageref{classmo_move_expl}}{} +\item\contentsline{section}{{\bf mo\-Move\-Incr\-Eval$<$ M $>$} ((generally) Efficient evaluation function based a move and a solution )}{\pageref{classmo_move_incr_eval}}{} +\item\contentsline{section}{{\bf mo\-Move\-Init$<$ M $>$} (Move (\doxyref{mo\-Move}{p.}{classmo_move}) initializer )}{\pageref{classmo_move_init}}{} +\item\contentsline{section}{{\bf mo\-Move\-Loop\-Expl$<$ M $>$} (Class which describes an iterative explorer )}{\pageref{classmo_move_loop_expl}}{} +\item\contentsline{section}{{\bf mo\-Move\-Select$<$ M $>$} (Class that describes a move selector (\doxyref{mo\-Move}{p.}{classmo_move}) )}{\pageref{classmo_move_select}}{} +\item\contentsline{section}{{\bf mo\-Next\-Move$<$ M $>$} (Class which allows to generate a new move (\doxyref{mo\-Move}{p.}{classmo_move}) )}{\pageref{classmo_next_move}}{} +\item\contentsline{section}{{\bf mo\-No\-Aspir\-Crit$<$ M $>$} (One of the possible aspiration criterion (\doxyref{mo\-Aspir\-Crit}{p.}{classmo_aspir_crit}) )}{\pageref{classmo_no_aspir_crit}}{} +\item\contentsline{section}{{\bf mo\-Rand\-Impr\-Select$<$ M $>$} (One of the possible \doxyref{mo\-Move}{p.}{classmo_move} selector (\doxyref{mo\-Move\-Select}{p.}{classmo_move_select}) )}{\pageref{classmo_rand_impr_select}}{} +\item\contentsline{section}{{\bf mo\-Rand\-Move$<$ M $>$} (Random move generator )}{\pageref{classmo_rand_move}}{} +\item\contentsline{section}{{\bf mo\-SA$<$ M $>$} (Simulated Annealing (SA) )}{\pageref{classmo_s_a}}{} +\item\contentsline{section}{{\bf mo\-Sol\-Continue$<$ EOT $>$} (Class that describes a stop criterion for a solution-based heuristic )}{\pageref{classmo_sol_continue}}{} +\item\contentsline{section}{{\bf mo\-Tabu\-List$<$ M $>$} (Class describing a tabu list that a \doxyref{mo\-TS}{p.}{classmo_t_s} uses )}{\pageref{classmo_tabu_list}}{} +\item\contentsline{section}{{\bf mo\-TS$<$ M $>$} (Tabu Search (TS) )}{\pageref{classmo_t_s}}{} +\item\contentsline{section}{{\bf mo\-TSMove\-Loop\-Expl$<$ M $>$} (Explorer for a Tabu Search algorithm )}{\pageref{classmo_t_s_move_loop_expl}}{} +\end{CompactList} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/class_empty_selection.tex b/trunk/paradiseo-mo/tutorial/docs/latex/class_empty_selection.tex new file mode 100644 index 000000000..4b44303b4 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/class_empty_selection.tex @@ -0,0 +1,21 @@ +\section{Empty\-Selection Class Reference} +\label{class_empty_selection}\index{EmptySelection@{EmptySelection}} +Special class that describes the case of no selection. + + +{\tt \#include $<$mo\-Move\-Select.h$>$} + + + +\subsection{Detailed Description} +Special class that describes the case of no selection. + +This class is used as an exception that can be thrown if a solution selector has completly failed. + + + +Definition at line 21 of file mo\-Move\-Select.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move\-Select.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_algo.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_algo.tex new file mode 100644 index 000000000..a2d7b3fe0 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_algo.tex @@ -0,0 +1,23 @@ +\section{mo\-Algo$<$ EOT $>$ Class Template Reference} +\label{classmo_algo}\index{moAlgo@{moAlgo}} +Description of an algorithm of the mo library. + + +{\tt \#include $<$mo\-Algo.h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class mo\-Algo$<$ EOT $>$} + +Description of an algorithm of the mo library. + +\doxyref{mo\-HC}{p.}{classmo_h_c}, \doxyref{mo\-TS}{p.}{classmo_t_s} and \doxyref{mo\-SA}{p.}{classmo_s_a} are 3 examples of algorithm of the mo library. + + + +Definition at line 21 of file mo\-Algo.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Algo.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_aspir_crit.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_aspir_crit.eps new file mode 100644 index 000000000..fbf0b26ef --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_aspir_crit.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 109.29 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.575 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moAspirCrit< M >) cw +(moImprBestFitAspirCrit< M >) cw +(moNoAspirCrit< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moAspirCrit< M >) 0.5 1 box + (moImprBestFitAspirCrit< M >) 0 0 box + (moNoAspirCrit< M >) 1 0 box + +% ----- relations ----- + +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_aspir_crit.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_aspir_crit.tex new file mode 100644 index 000000000..ffec16f05 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_aspir_crit.tex @@ -0,0 +1,46 @@ +\section{mo\-Aspir\-Crit$<$ M $>$ Class Template Reference} +\label{classmo_aspir_crit}\index{moAspirCrit@{moAspirCrit}} +Description of the conditions in which a tabu move could be accepted. + + +{\tt \#include $<$mo\-Aspir\-Crit.h$>$} + +Inheritance diagram for mo\-Aspir\-Crit$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_aspir_crit} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf init} ()=0 +\begin{CompactList}\small\item\em Procedure which initialises all that needs a aspiration criterion. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Aspir\-Crit$<$ M $>$} + +Description of the conditions in which a tabu move could be accepted. + +It is only a description... An object that herits from this class is needed to be used in a \doxyref{mo\-TS}{p.}{classmo_t_s}. See mo\-No\-Aspri\-Crit for example. + + + +Definition at line 22 of file mo\-Aspir\-Crit.h. + +\subsection{Member Function Documentation} +\index{moAspirCrit@{mo\-Aspir\-Crit}!init@{init}} +\index{init@{init}!moAspirCrit@{mo\-Aspir\-Crit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-Aspir\-Crit}$<$ M $>$::init ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_aspir_crit_a8ce84510a5ec7c9078381e542c6d140} + + +Procedure which initialises all that needs a aspiration criterion. + +It can be possible that this procedure do nothing... + +Implemented in {\bf mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$} \doxyref{}{p.}{classmo_impr_best_fit_aspir_crit_ffa451a14ff4ea86fb8bd9fdbc348630}, and {\bf mo\-No\-Aspir\-Crit$<$ M $>$} \doxyref{}{p.}{classmo_no_aspir_crit_f3a286fc4c2d36bd390ba9a3074f3037}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Aspir\-Crit.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_best_impr_select.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_best_impr_select.eps new file mode 100644 index 000000000..f9c367972 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_best_impr_select.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 259.74 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.925 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moBestImprSelect< M >) cw +(moMoveSelect< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moBestImprSelect< M >) 0 0 box + (moMoveSelect< M >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_best_impr_select.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_best_impr_select.tex new file mode 100644 index 000000000..a7b05435f --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_best_impr_select.tex @@ -0,0 +1,103 @@ +\section{mo\-Best\-Impr\-Select$<$ M $>$ Class Template Reference} +\label{classmo_best_impr_select}\index{moBestImprSelect@{moBestImprSelect}} +One of the possible \doxyref{mo\-Move\-Select}{p.}{classmo_move_select}. + + +{\tt \#include $<$mo\-Best\-Impr\-Select.h$>$} + +Inheritance diagram for mo\-Best\-Impr\-Select$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_best_impr_select} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_best_impr_select_c4ae17435221fb0a8e8acd285210cfcb} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void {\bf init} (const {\bf Fitness} \&\_\-\_\-fit)\label{classmo_best_impr_select_2d2abf9aa17dc77cbb4f41810ab7b956} + +\begin{CompactList}\small\item\em Procedure which initialise the exploration. \item\end{CompactList}\item +bool {\bf update} (const M \&\_\-\_\-move, const {\bf Fitness} \&\_\-\_\-fit) +\begin{CompactList}\small\item\em Function that indicates if the current move has not improved the fitness. \item\end{CompactList}\item +void {\bf operator()} (M \&\_\-\_\-move, {\bf Fitness} \&\_\-\_\-fit) throw (Empty\-Selection) +\begin{CompactList}\small\item\em Procedure which saved the best move and fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +bool {\bf first\_\-time}\label{classmo_best_impr_select_352b14d206b0772eb9f40efb7beb0f13} + +\begin{CompactList}\small\item\em Allowing to know if at least one move has been generated. \item\end{CompactList}\item +M {\bf best\_\-move}\label{classmo_best_impr_select_bd86f70519f954c07ff0d8a2a3a8ff6a} + +\begin{CompactList}\small\item\em The best move. \item\end{CompactList}\item +{\bf Fitness} {\bf best\_\-fit}\label{classmo_best_impr_select_dcac897424b5805f146bb1dbb429f2fe} + +\begin{CompactList}\small\item\em The best fitness. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Best\-Impr\-Select$<$ M $>$} + +One of the possible \doxyref{mo\-Move\-Select}{p.}{classmo_move_select}. + +All neighbors are considered, and the movement which enables the best improvement is selected. + + + +Definition at line 22 of file mo\-Best\-Impr\-Select.h. + +\subsection{Member Function Documentation} +\index{moBestImprSelect@{mo\-Best\-Impr\-Select}!update@{update}} +\index{update@{update}!moBestImprSelect@{mo\-Best\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-Best\-Impr\-Select}$<$ M $>$::update (const M \& {\em \_\-\_\-move}, const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_best_impr_select_d10e3e6f8a0277731e95ef506d064d6d} + + +Function that indicates if the current move has not improved the fitness. + +If the given fitness enables an improvment, the move (\doxyref{mo\-Move}{p.}{classmo_move}) and the fitness linked to this move are saved. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a move. \item[{\em \_\-\_\-fit}]a fitness linked to the move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE if the move does not improve the fitness. \end{Desc} + + +Implements {\bf mo\-Move\-Select$<$ M $>$} \doxyref{}{p.}{classmo_move_select_7c157b6e64fd417acf6e900059204eb1}. + +Definition at line 47 of file mo\-Best\-Impr\-Select.h. + +References mo\-Best\-Impr\-Select$<$ M $>$::best\_\-fit, mo\-Best\-Impr\-Select$<$ M $>$::best\_\-move, and mo\-Best\-Impr\-Select$<$ M $>$::first\_\-time.\index{moBestImprSelect@{mo\-Best\-Impr\-Select}!operator()@{operator()}} +\index{operator()@{operator()}!moBestImprSelect@{mo\-Best\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-Best\-Impr\-Select}$<$ M $>$::operator() (M \& {\em \_\-\_\-move}, {\bf Fitness} \& {\em \_\-\_\-fit}) throw ({\bf Empty\-Selection})\hspace{0.3cm}{\tt [inline]}}\label{classmo_best_impr_select_169773d4d127acd782cf379f758222da} + + +Procedure which saved the best move and fitness. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]the current move (result of the procedure). \item[{\em \_\-\_\-fit}]the current fitness (result of the procedure). \end{description} +\end{Desc} +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em \doxyref{Empty\-Selection}{p.}{class_empty_selection}}]if no move has improved the fitness. \end{description} +\end{Desc} + + +Definition at line 68 of file mo\-Best\-Impr\-Select.h. + +References mo\-Best\-Impr\-Select$<$ M $>$::best\_\-fit, mo\-Best\-Impr\-Select$<$ M $>$::best\_\-move, and mo\-Best\-Impr\-Select$<$ M $>$::first\_\-time. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Best\-Impr\-Select.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_cool_sched.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_cool_sched.eps new file mode 100644 index 000000000..dc8336154 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_cool_sched.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 317.46 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.575 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moCoolSched) cw +(moEasyCoolSched) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moCoolSched) 0 1 box + (moEasyCoolSched) 0 0 box + +% ----- relations ----- + +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_cool_sched.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_cool_sched.tex new file mode 100644 index 000000000..cfccf4669 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_cool_sched.tex @@ -0,0 +1,27 @@ +\section{mo\-Cool\-Sched Class Reference} +\label{classmo_cool_sched}\index{moCoolSched@{moCoolSched}} +This class gives the description of a cooling schedule. + + +{\tt \#include $<$mo\-Cool\-Sched.h$>$} + +Inheritance diagram for mo\-Cool\-Sched::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_cool_sched} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +This class gives the description of a cooling schedule. + +It is only a description... An object that herits from this class is needed to be used in a \doxyref{mo\-SA}{p.}{classmo_s_a}. See \doxyref{mo\-Easy\-Cool\-Sched}{p.}{classmo_easy_cool_sched} for example. + + + +Definition at line 22 of file mo\-Cool\-Sched.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Cool\-Sched.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_easy_cool_sched.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_easy_cool_sched.eps new file mode 100644 index 000000000..0cff15334 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_easy_cool_sched.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 317.46 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.575 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moEasyCoolSched) cw +(moCoolSched) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moEasyCoolSched) 0 0 box + (moCoolSched) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_easy_cool_sched.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_easy_cool_sched.tex new file mode 100644 index 000000000..ceb3b8927 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_easy_cool_sched.tex @@ -0,0 +1,83 @@ +\section{mo\-Easy\-Cool\-Sched Class Reference} +\label{classmo_easy_cool_sched}\index{moEasyCoolSched@{moEasyCoolSched}} +One of the possible \doxyref{mo\-Cool\-Sched}{p.}{classmo_cool_sched}. + + +{\tt \#include $<$mo\-Easy\-Cool\-Sched.h$>$} + +Inheritance diagram for mo\-Easy\-Cool\-Sched::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_easy_cool_sched} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-Easy\-Cool\-Sched} (double \_\-\_\-threshold, double \_\-\_\-ratio) +\begin{CompactList}\small\item\em Simple constructor. \item\end{CompactList}\item +bool {\bf operator()} (double \&\_\-\_\-temp) +\begin{CompactList}\small\item\em Function which proceeds to the cooling. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +double {\bf threshold}\label{classmo_easy_cool_sched_3dd53700390b7bb6428db80e01626c83} + +\begin{CompactList}\small\item\em The temperature threhold. \item\end{CompactList}\item +double {\bf ratio}\label{classmo_easy_cool_sched_1f84deff87defafd927e8c323b188f38} + +\begin{CompactList}\small\item\em The decreasing factor of the temperature. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +One of the possible \doxyref{mo\-Cool\-Sched}{p.}{classmo_cool_sched}. + +The simpliest, the temperature decrease according to a ratio until it greater than a threshold. + + + +Definition at line 22 of file mo\-Easy\-Cool\-Sched.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moEasyCoolSched@{mo\-Easy\-Cool\-Sched}!moEasyCoolSched@{moEasyCoolSched}} +\index{moEasyCoolSched@{moEasyCoolSched}!moEasyCoolSched@{mo\-Easy\-Cool\-Sched}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}mo\-Easy\-Cool\-Sched::mo\-Easy\-Cool\-Sched (double {\em \_\-\_\-threshold}, double {\em \_\-\_\-ratio})\hspace{0.3cm}{\tt [inline]}}\label{classmo_easy_cool_sched_c556b41343700293bb17e3b20d81e0f2} + + +Simple constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-threshold}]the threshold. \item[{\em \_\-\_\-ratio}]the ratio used to descrease the temperature. \end{description} +\end{Desc} + + +Definition at line 31 of file mo\-Easy\-Cool\-Sched.h. + +\subsection{Member Function Documentation} +\index{moEasyCoolSched@{mo\-Easy\-Cool\-Sched}!operator()@{operator()}} +\index{operator()@{operator()}!moEasyCoolSched@{mo\-Easy\-Cool\-Sched}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool mo\-Easy\-Cool\-Sched::operator() (double \& {\em \_\-\_\-temp})\hspace{0.3cm}{\tt [inline]}}\label{classmo_easy_cool_sched_ca08df878417ef1124e6933a9c2d7a0b} + + +Function which proceeds to the cooling. + +Decrease the temperature and indicates if it is greater than the threshold. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-temp}]the current temperature. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]if the new temperature (current temperature $\ast$ ratio) is greater than the threshold. \end{Desc} + + +Definition at line 44 of file mo\-Easy\-Cool\-Sched.h. + +References ratio, and threshold. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Easy\-Cool\-Sched.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_first_impr_select.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_first_impr_select.eps new file mode 100644 index 000000000..04ffcb96d --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_first_impr_select.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 258.065 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.9375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moFirstImprSelect< M >) cw +(moMoveSelect< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moFirstImprSelect< M >) 0 0 box + (moMoveSelect< M >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_first_impr_select.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_first_impr_select.tex new file mode 100644 index 000000000..c202586d4 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_first_impr_select.tex @@ -0,0 +1,116 @@ +\section{mo\-First\-Impr\-Select$<$ M $>$ Class Template Reference} +\label{classmo_first_impr_select}\index{moFirstImprSelect@{moFirstImprSelect}} +One possible \doxyref{mo\-Move\-Select}{p.}{classmo_move_select}. + + +{\tt \#include $<$mo\-First\-Impr\-Select.h$>$} + +Inheritance diagram for mo\-First\-Impr\-Select$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_first_impr_select} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_first_impr_select_64763ce3e6d2873266624382b407fa5a} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf init} (const {\bf Fitness} \&\_\-\_\-fit) +\begin{CompactList}\small\item\em Procedure which initialise the exploration. \item\end{CompactList}\item +bool {\bf update} (const M \&\_\-\_\-move, const typename M::EOType::Fitness \&\_\-\_\-fit) +\begin{CompactList}\small\item\em Function that indicates if the current move has not improved the fitness. \item\end{CompactList}\item +void {\bf operator()} (M \&\_\-\_\-move, {\bf Fitness} \&\_\-\_\-fit) throw (Empty\-Selection) +\begin{CompactList}\small\item\em Procedure which saved the best move and fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +bool {\bf valid}\label{classmo_first_impr_select_a99c0586ba07449234705c17a258d58c} + +\begin{CompactList}\small\item\em Allow to know if at least one move has improved the solution. \item\end{CompactList}\item +M {\bf best\_\-move}\label{classmo_first_impr_select_dfed419a608dd7c41f07fa1f1279cb8c} + +\begin{CompactList}\small\item\em Best stored movement. \item\end{CompactList}\item +{\bf Fitness} {\bf init\_\-fit}\label{classmo_first_impr_select_ce7ba63e8cc3a9164f4e546477e98ca8} + +\begin{CompactList}\small\item\em Initial fitness. \item\end{CompactList}\item +{\bf Fitness} {\bf best\_\-fit}\label{classmo_first_impr_select_e1190347b76ec6fe717be32354b4a9a9} + +\begin{CompactList}\small\item\em Best stored fitness. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-First\-Impr\-Select$<$ M $>$} + +One possible \doxyref{mo\-Move\-Select}{p.}{classmo_move_select}. + +The neighborhood is explored until a move enables an improvment of the current solution. + + + +Definition at line 23 of file mo\-First\-Impr\-Select.h. + +\subsection{Member Function Documentation} +\index{moFirstImprSelect@{mo\-First\-Impr\-Select}!init@{init}} +\index{init@{init}!moFirstImprSelect@{mo\-First\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-First\-Impr\-Select}$<$ M $>$::init (const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_first_impr_select_4c5ce18ede46247a439c68f6954a4055} + + +Procedure which initialise the exploration. + +It save the current fitness as the initial value for the fitness. + +Implements {\bf mo\-Move\-Select$<$ M $>$} \doxyref{}{p.}{classmo_move_select_bca4c43f13d26eca7163aeb272a4a52e}. + +Definition at line 35 of file mo\-First\-Impr\-Select.h. + +References mo\-First\-Impr\-Select$<$ M $>$::init\_\-fit, and mo\-First\-Impr\-Select$<$ M $>$::valid.\index{moFirstImprSelect@{mo\-First\-Impr\-Select}!update@{update}} +\index{update@{update}!moFirstImprSelect@{mo\-First\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-First\-Impr\-Select}$<$ M $>$::update (const M \& {\em \_\-\_\-move}, const typename M::EOType::Fitness \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [inline]}}\label{classmo_first_impr_select_7ba0882728daedc75c249647c070ccf0} + + +Function that indicates if the current move has not improved the fitness. + +If the given fitness enables an improvment, the move (\doxyref{mo\-Move}{p.}{classmo_move}) should be applied to the current solution. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a move. \item[{\em \_\-\_\-fit}]a fitness linked to the move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE if the move does not improve the fitness. \end{Desc} + + +Definition at line 52 of file mo\-First\-Impr\-Select.h. + +References mo\-First\-Impr\-Select$<$ M $>$::best\_\-fit, mo\-First\-Impr\-Select$<$ M $>$::best\_\-move, mo\-First\-Impr\-Select$<$ M $>$::init\_\-fit, and mo\-First\-Impr\-Select$<$ M $>$::valid.\index{moFirstImprSelect@{mo\-First\-Impr\-Select}!operator()@{operator()}} +\index{operator()@{operator()}!moFirstImprSelect@{mo\-First\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-First\-Impr\-Select}$<$ M $>$::operator() (M \& {\em \_\-\_\-move}, {\bf Fitness} \& {\em \_\-\_\-fit}) throw ({\bf Empty\-Selection})\hspace{0.3cm}{\tt [inline]}}\label{classmo_first_impr_select_3be12cf4cbaed00df7c4fa735b2c0a95} + + +Procedure which saved the best move and fitness. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]the current move (result of the procedure). \item[{\em \_\-\_\-fit}]the current fitness (result of the procedure). \end{description} +\end{Desc} +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em \doxyref{Empty\-Selection}{p.}{class_empty_selection}}]if no move has improved the fitness. \end{description} +\end{Desc} + + +Definition at line 76 of file mo\-First\-Impr\-Select.h. + +References mo\-First\-Impr\-Select$<$ M $>$::best\_\-fit, mo\-First\-Impr\-Select$<$ M $>$::best\_\-move, and mo\-First\-Impr\-Select$<$ M $>$::valid. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-First\-Impr\-Select.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_gen_sol_continue.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_gen_sol_continue.eps new file mode 100644 index 000000000..c9e65107d --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_gen_sol_continue.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 227.273 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.2 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moGenSolContinue< EOT >) cw +(moSolContinue< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moGenSolContinue< EOT >) 0 0 box + (moSolContinue< EOT >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_gen_sol_continue.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_gen_sol_continue.tex new file mode 100644 index 000000000..5f4ac8050 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_gen_sol_continue.tex @@ -0,0 +1,100 @@ +\section{mo\-Gen\-Sol\-Continue$<$ EOT $>$ Class Template Reference} +\label{classmo_gen_sol_continue}\index{moGenSolContinue@{moGenSolContinue}} +One possible stop criterion for a solution-based heuristic. + + +{\tt \#include $<$mo\-Gen\-Sol\-Continue.h$>$} + +Inheritance diagram for mo\-Gen\-Sol\-Continue$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_gen_sol_continue} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-Gen\-Sol\-Continue} (unsigned \_\-\_\-max\-Num\-Gen) +\begin{CompactList}\small\item\em Simple constructor. \item\end{CompactList}\item +bool {\bf operator()} (const EOT \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Function that activates the stop criterion. \item\end{CompactList}\item +void {\bf init} () +\begin{CompactList}\small\item\em Procedure which allows to initialise the generation counter. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +unsigned {\bf max\-Num\-Gen}\label{classmo_gen_sol_continue_6d7674fc51d17423e8ee28693a08b5af} + +\begin{CompactList}\small\item\em Iteration maximum number. \item\end{CompactList}\item +unsigned {\bf num\-Gen}\label{classmo_gen_sol_continue_a18ebfd270f96517b4edaa2cad3eb9e0} + +\begin{CompactList}\small\item\em Iteration current number. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class mo\-Gen\-Sol\-Continue$<$ EOT $>$} + +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iteration. + + + +Definition at line 21 of file mo\-Gen\-Sol\-Continue.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moGenSolContinue@{mo\-Gen\-Sol\-Continue}!moGenSolContinue@{moGenSolContinue}} +\index{moGenSolContinue@{moGenSolContinue}!moGenSolContinue@{mo\-Gen\-Sol\-Continue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ {\bf mo\-Gen\-Sol\-Continue}$<$ EOT $>$::{\bf mo\-Gen\-Sol\-Continue} (unsigned {\em \_\-\_\-max\-Num\-Gen})\hspace{0.3cm}{\tt [inline]}}\label{classmo_gen_sol_continue_6b6cab23a23bd8904ea52ef5141d8d0a} + + +Simple constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-max\-Num\-Gen}]the maximum number of generation. \end{description} +\end{Desc} + + +Definition at line 30 of file mo\-Gen\-Sol\-Continue.h. + +\subsection{Member Function Documentation} +\index{moGenSolContinue@{mo\-Gen\-Sol\-Continue}!operator()@{operator()}} +\index{operator()@{operator()}!moGenSolContinue@{mo\-Gen\-Sol\-Continue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ bool {\bf mo\-Gen\-Sol\-Continue}$<$ EOT $>$::operator() (const EOT \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline]}}\label{classmo_gen_sol_continue_457257cd73b474d6f7783d84d02c2e61} + + +Function that activates the stop criterion. + +Increments the counter and returns TRUE if the current number of iteration is lower than the given maximum number of iterations. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-sol}]the current solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE or FALSE according to the current generation number. \end{Desc} + + +Definition at line 44 of file mo\-Gen\-Sol\-Continue.h. + +References mo\-Gen\-Sol\-Continue$<$ EOT $>$::max\-Num\-Gen, and mo\-Gen\-Sol\-Continue$<$ EOT $>$::num\-Gen.\index{moGenSolContinue@{mo\-Gen\-Sol\-Continue}!init@{init}} +\index{init@{init}!moGenSolContinue@{mo\-Gen\-Sol\-Continue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ void {\bf mo\-Gen\-Sol\-Continue}$<$ EOT $>$::init ()\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_gen_sol_continue_6c5db8182157584b56507cc9075602d4} + + +Procedure which allows to initialise the generation counter. + +It can also be used to reset the iteration counter. + +Implements {\bf mo\-Sol\-Continue$<$ EOT $>$} \doxyref{}{p.}{classmo_sol_continue_064dc966a210f4ffb9515be3f03ca4c7}. + +Definition at line 54 of file mo\-Gen\-Sol\-Continue.h. + +References mo\-Gen\-Sol\-Continue$<$ EOT $>$::num\-Gen. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Gen\-Sol\-Continue.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_h_c.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_h_c.eps new file mode 100644 index 000000000..648f11f20 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_h_c.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 268.456 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.8625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moHC< M >) cw +(moAlgo< M::EOType >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moHC< M >) 0 0 box + (moAlgo< M::EOType >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_h_c.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_h_c.tex new file mode 100644 index 000000000..917388faa --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_h_c.tex @@ -0,0 +1,114 @@ +\section{mo\-HC$<$ M $>$ Class Template Reference} +\label{classmo_h_c}\index{moHC@{moHC}} +Hill Climbing (HC). + + +{\tt \#include $<$mo\-HC.h$>$} + +Inheritance diagram for mo\-HC$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_h_c} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-HC} ({\bf mo\-Move\-Init}$<$ M $>$ \&\_\-\_\-move\_\-init, {\bf mo\-Next\-Move}$<$ M $>$ \&\_\-\_\-next\_\-move, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \&\_\-\_\-incr\_\-eval, {\bf mo\-Move\-Select}$<$ M $>$ \&\_\-\_\-move\_\-select, eo\-Eval\-Func$<$ {\bf EOT} $>$ \&\_\-\_\-full\_\-eval) +\begin{CompactList}\small\item\em Full constructor. \item\end{CompactList}\item +{\bf mo\-HC} ({\bf mo\-Move\-Expl}$<$ M $>$ \&\_\-\_\-move\_\-expl, eo\-Eval\-Func$<$ {\bf EOT} $>$ \&\_\-\_\-full\_\-eval) +\begin{CompactList}\small\item\em Light constructor. \item\end{CompactList}\item +bool {\bf operator()} ({\bf EOT} \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Function which launches the HC. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_h_c_d219296ede03c679646bce2fe8ff96cb} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_h_c_56487c97a7cf0c423cc879d1bbd45027} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf mo\-Move\-Expl}$<$ M $>$ \& {\bf move\_\-expl}\label{classmo_h_c_f6bfb4553fb699f1e08f7d9c37d06103} + +\begin{CompactList}\small\item\em Complete exploration of the neighborhood. \item\end{CompactList}\item +eo\-Eval\-Func$<$ {\bf EOT} $>$ \& {\bf full\_\-eval}\label{classmo_h_c_4b0d5cc70fc3d83f59a48b2bdea65736} + +\begin{CompactList}\small\item\em A full evaluation function. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-HC$<$ M $>$} + +Hill Climbing (HC). + +Class which describes the algorithm for a hill climbing. + + + +Definition at line 26 of file mo\-HC.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moHC@{mo\-HC}!moHC@{moHC}} +\index{moHC@{moHC}!moHC@{mo\-HC}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-HC}$<$ M $>$::{\bf mo\-HC} ({\bf mo\-Move\-Init}$<$ M $>$ \& {\em \_\-\_\-move\_\-init}, {\bf mo\-Next\-Move}$<$ M $>$ \& {\em \_\-\_\-next\_\-move}, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\em \_\-\_\-incr\_\-eval}, {\bf mo\-Move\-Select}$<$ M $>$ \& {\em \_\-\_\-move\_\-select}, eo\-Eval\-Func$<$ {\bf EOT} $>$ \& {\em \_\-\_\-full\_\-eval})\hspace{0.3cm}{\tt [inline]}}\label{classmo_h_c_6cafe093f86a80c225827884cb9dc5b7} + + +Full constructor. + +All the boxes are given in order the HC to use a \doxyref{mo\-HCMove\-Loop\-Expl}{p.}{classmo_h_c_move_loop_expl}. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-init}]a move initialiser. \item[{\em \_\-\_\-next\_\-move}]a neighborhood explorer. \item[{\em \_\-\_\-incr\_\-eval}]a (generally) efficient evaluation function. \item[{\em \_\-\_\-move\_\-select}]a move selector. \item[{\em \_\-\_\-full\_\-eval}]a full evaluation function. \end{description} +\end{Desc} + + +Definition at line 53 of file mo\-HC.h.\index{moHC@{mo\-HC}!moHC@{moHC}} +\index{moHC@{moHC}!moHC@{mo\-HC}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-HC}$<$ M $>$::{\bf mo\-HC} ({\bf mo\-Move\-Expl}$<$ M $>$ \& {\em \_\-\_\-move\_\-expl}, eo\-Eval\-Func$<$ {\bf EOT} $>$ \& {\em \_\-\_\-full\_\-eval})\hspace{0.3cm}{\tt [inline]}}\label{classmo_h_c_45f27309792e584a27fa6dcb86ccda65} + + +Light constructor. + +This constructor allow to use another \doxyref{mo\-Move\-Expl}{p.}{classmo_move_expl} (generally not a \doxyref{mo\-HCMove\-Loop\-Expl}{p.}{classmo_h_c_move_loop_expl}). + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-expl}]a complete explorer. \item[{\em \_\-\_\-full\_\-eval}]a full evaluation function. \end{description} +\end{Desc} + + +Definition at line 67 of file mo\-HC.h. + +\subsection{Member Function Documentation} +\index{moHC@{mo\-HC}!operator()@{operator()}} +\index{operator()@{operator()}!moHC@{mo\-HC}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-HC}$<$ M $>$::operator() ({\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline]}}\label{classmo_h_c_ed4e273c420efa6386c5975a696a5010} + + +Function which launches the HC. + +The HC has to improve a current solution. As the \doxyref{mo\-SA}{p.}{classmo_s_a} and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-sol}]a current solution to improve. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE. \end{Desc} + + +Definition at line 82 of file mo\-HC.h. + +References mo\-HC$<$ M $>$::full\_\-eval, and mo\-HC$<$ M $>$::move\_\-expl. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-HC.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_h_c_move_loop_expl.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_h_c_move_loop_expl.eps new file mode 100644 index 000000000..1383bbf1b --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_h_c_move_loop_expl.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 346.821 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.44167 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moHCMoveLoopExpl< M >) cw +(moMoveLoopExpl< M >) cw +(moMoveExpl< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moHCMoveLoopExpl< M >) 0 0 box + (moMoveLoopExpl< M >) 0 1 box + (moMoveExpl< M >) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_h_c_move_loop_expl.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_h_c_move_loop_expl.tex new file mode 100644 index 000000000..fbcfeea7c --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_h_c_move_loop_expl.tex @@ -0,0 +1,98 @@ +\section{mo\-HCMove\-Loop\-Expl$<$ M $>$ Class Template Reference} +\label{classmo_h_c_move_loop_expl}\index{moHCMoveLoopExpl@{moHCMoveLoopExpl}} +Iterative explorer used by a \doxyref{mo\-HC}{p.}{classmo_h_c}. + + +{\tt \#include $<$mo\-HCMove\-Loop\-Expl.h$>$} + +Inheritance diagram for mo\-HCMove\-Loop\-Expl$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_h_c_move_loop_expl} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-HCMove\-Loop\-Expl} ({\bf mo\-Move\-Init}$<$ M $>$ \&\_\-\_\-move\_\-init, {\bf mo\-Next\-Move}$<$ M $>$ \&\_\-\_\-next\_\-move, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \&\_\-\_\-incr\_\-eval, {\bf mo\-Move\-Select}$<$ M $>$ \&\_\-\_\-move\_\-select) +\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item +void {\bf operator()} (const {\bf EOT} \&\_\-\_\-old\_\-sol, {\bf EOT} \&\_\-\_\-new\_\-sol) +\begin{CompactList}\small\item\em Procedure which launches the explorer. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_h_c_move_loop_expl_077befd4106c201eafd3ea22bcea2fe9} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_h_c_move_loop_expl_f24871224316d5549b9013a2d27ab465} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf mo\-Move\-Init}$<$ M $>$ \& {\bf move\_\-init}\label{classmo_h_c_move_loop_expl_6776fc51331c1b452d026b92448b4ffc} + +\begin{CompactList}\small\item\em Move initialiser. \item\end{CompactList}\item +{\bf mo\-Next\-Move}$<$ M $>$ \& {\bf next\_\-move}\label{classmo_h_c_move_loop_expl_f716c5271e0eba9275c585dc52768443} + +\begin{CompactList}\small\item\em Neighborhood explorer. \item\end{CompactList}\item +{\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\bf incr\_\-eval}\label{classmo_h_c_move_loop_expl_84a8fccba05ab30414281469bc8ee779} + +\begin{CompactList}\small\item\em (generally) Efficient evaluation. \item\end{CompactList}\item +{\bf mo\-Move\-Select}$<$ M $>$ \& {\bf move\_\-select}\label{classmo_h_c_move_loop_expl_13bcd1322b2b97fd665be2f60c532fbb} + +\begin{CompactList}\small\item\em Move selector. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-HCMove\-Loop\-Expl$<$ M $>$} + +Iterative explorer used by a \doxyref{mo\-HC}{p.}{classmo_h_c}. + + + +Definition at line 23 of file mo\-HCMove\-Loop\-Expl.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moHCMoveLoopExpl@{mo\-HCMove\-Loop\-Expl}!moHCMoveLoopExpl@{moHCMoveLoopExpl}} +\index{moHCMoveLoopExpl@{moHCMoveLoopExpl}!moHCMoveLoopExpl@{mo\-HCMove\-Loop\-Expl}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-HCMove\-Loop\-Expl}$<$ M $>$::{\bf mo\-HCMove\-Loop\-Expl} ({\bf mo\-Move\-Init}$<$ M $>$ \& {\em \_\-\_\-move\_\-init}, {\bf mo\-Next\-Move}$<$ M $>$ \& {\em \_\-\_\-next\_\-move}, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\em \_\-\_\-incr\_\-eval}, {\bf mo\-Move\-Select}$<$ M $>$ \& {\em \_\-\_\-move\_\-select})\hspace{0.3cm}{\tt [inline]}}\label{classmo_h_c_move_loop_expl_11410d648d79746253e9dc249c4ec7b5} + + +Constructor. + +All the boxes have to be specified. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-init}]the move initialiser. \item[{\em \_\-\_\-next\_\-move}]the neighborhood explorer. \item[{\em \_\-\_\-incr\_\-eval}](generally) efficient evaluation function. \item[{\em \_\-\_\-move\_\-select}]the move selector. \end{description} +\end{Desc} + + +Definition at line 43 of file mo\-HCMove\-Loop\-Expl.h. + +\subsection{Member Function Documentation} +\index{moHCMoveLoopExpl@{mo\-HCMove\-Loop\-Expl}!operator()@{operator()}} +\index{operator()@{operator()}!moHCMoveLoopExpl@{mo\-HCMove\-Loop\-Expl}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-HCMove\-Loop\-Expl}$<$ M $>$::operator() (const {\bf EOT} \& {\em \_\-\_\-old\_\-sol}, {\bf EOT} \& {\em \_\-\_\-new\_\-sol})\hspace{0.3cm}{\tt [inline]}}\label{classmo_h_c_move_loop_expl_f48d5379caac7f6a165e9fe8840e6ccb} + + +Procedure which launches the explorer. + +The exploration starts from an old solution and provides a new solution. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-old\_\-sol}]the current solution. \item[{\em \_\-\_\-new\_\-sol}]the new\_\-sol (result of the procedure). \end{description} +\end{Desc} + + +Definition at line 59 of file mo\-HCMove\-Loop\-Expl.h. + +References mo\-HCMove\-Loop\-Expl$<$ M $>$::incr\_\-eval, mo\-HCMove\-Loop\-Expl$<$ M $>$::move\_\-init, mo\-HCMove\-Loop\-Expl$<$ M $>$::move\_\-select, and mo\-HCMove\-Loop\-Expl$<$ M $>$::next\_\-move. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-HCMove\-Loop\-Expl.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_impr_best_fit_aspir_crit.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_impr_best_fit_aspir_crit.eps new file mode 100644 index 000000000..41cee35a0 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_impr_best_fit_aspir_crit.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 218.579 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.2875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moImprBestFitAspirCrit< M >) cw +(moAspirCrit< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moImprBestFitAspirCrit< M >) 0 0 box + (moAspirCrit< M >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_impr_best_fit_aspir_crit.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_impr_best_fit_aspir_crit.tex new file mode 100644 index 000000000..5303c7f37 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_impr_best_fit_aspir_crit.tex @@ -0,0 +1,78 @@ +\section{mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$ Class Template Reference} +\label{classmo_impr_best_fit_aspir_crit}\index{moImprBestFitAspirCrit@{moImprBestFitAspirCrit}} +One of the possible \doxyref{mo\-Aspir\-Crit}{p.}{classmo_aspir_crit}. + + +{\tt \#include $<$mo\-Impr\-Best\-Fit\-Aspir\-Crit.h$>$} + +Inheritance diagram for mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_impr_best_fit_aspir_crit} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_impr_best_fit_aspir_crit_0bc1a8c9af99781e662570c04750cca8} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-Impr\-Best\-Fit\-Aspir\-Crit} ()\label{classmo_impr_best_fit_aspir_crit_e2c697a5cf3a7696e38bb52b6694a340} + +\begin{CompactList}\small\item\em Contructor. \item\end{CompactList}\item +void {\bf init} ()\label{classmo_impr_best_fit_aspir_crit_ffa451a14ff4ea86fb8bd9fdbc348630} + +\begin{CompactList}\small\item\em Initialisation procedure. \item\end{CompactList}\item +bool {\bf operator()} (const M \&\_\-\_\-move, const {\bf Fitness} \&\_\-\_\-fit) +\begin{CompactList}\small\item\em Function that indicates if the fit is better that the already saved fit. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf Fitness} {\bf best\_\-fit}\label{classmo_impr_best_fit_aspir_crit_9e52383f0af8013b4aff0942325e1bf3} + +\begin{CompactList}\small\item\em Best fitness found until now. \item\end{CompactList}\item +bool {\bf first\_\-time}\label{classmo_impr_best_fit_aspir_crit_2d5226c7dd661b33011402dbbbe78265} + +\begin{CompactList}\small\item\em Indicates that a fitness has been already saved or not. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$} + +One of the possible \doxyref{mo\-Aspir\-Crit}{p.}{classmo_aspir_crit}. + +This criterion is satisfied when a given fitness is the best ever considered. + + + +Definition at line 22 of file mo\-Impr\-Best\-Fit\-Aspir\-Crit.h. + +\subsection{Member Function Documentation} +\index{moImprBestFitAspirCrit@{mo\-Impr\-Best\-Fit\-Aspir\-Crit}!operator()@{operator()}} +\index{operator()@{operator()}!moImprBestFitAspirCrit@{mo\-Impr\-Best\-Fit\-Aspir\-Crit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-Impr\-Best\-Fit\-Aspir\-Crit}$<$ M $>$::operator() (const M \& {\em \_\-\_\-move}, const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [inline]}}\label{classmo_impr_best_fit_aspir_crit_53f62fb56dcae3051a741f1fddb0204b} + + +Function that indicates if the fit is better that the already saved fit. + +The first time, the function only saved the current move and fitness. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a move. \item[{\em \_\-\_\-fit}]a fitnes linked to the move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE the first time and if \_\-\_\-fit $>$ best\_\-fit, else FALSE. \end{Desc} + + +Definition at line 52 of file mo\-Impr\-Best\-Fit\-Aspir\-Crit.h. + +References mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$::best\_\-fit, and mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$::first\_\-time. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Impr\-Best\-Fit\-Aspir\-Crit.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_it_rand_next_move.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_it_rand_next_move.eps new file mode 100644 index 000000000..bc4ea56dc --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_it_rand_next_move.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 245.399 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.0375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moItRandNextMove< M >) cw +(moNextMove< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moItRandNextMove< M >) 0 0 box + (moNextMove< M >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_it_rand_next_move.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_it_rand_next_move.tex new file mode 100644 index 000000000..ff90d301e --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_it_rand_next_move.tex @@ -0,0 +1,96 @@ +\section{mo\-It\-Rand\-Next\-Move$<$ M $>$ Class Template Reference} +\label{classmo_it_rand_next_move}\index{moItRandNextMove@{moItRandNextMove}} +One of the possible \doxyref{mo\-Next\-Move}{p.}{classmo_next_move}. + + +{\tt \#include $<$mo\-It\-Rand\-Next\-Move.h$>$} + +Inheritance diagram for mo\-It\-Rand\-Next\-Move$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_it_rand_next_move} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-It\-Rand\-Next\-Move} ({\bf mo\-Rand\-Move}$<$ M $>$ \&\_\-\_\-rand\_\-move, unsigned \_\-\_\-max\_\-iter) +\begin{CompactList}\small\item\em The constructor. \item\end{CompactList}\item +bool {\bf operator()} (M \&\_\-\_\-move, const {\bf EOT} \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Generation of a new move. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_it_rand_next_move_ee666007fc494bf4a5f0cd065e5671cf} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf mo\-Rand\-Move}$<$ M $>$ \& {\bf rand\_\-move}\label{classmo_it_rand_next_move_ef9410ec5e7dfa7f002e05967931c459} + +\begin{CompactList}\small\item\em A move generator (generally randomly). \item\end{CompactList}\item +unsigned {\bf max\_\-iter}\label{classmo_it_rand_next_move_3c476f7cc089b171493c52965f920542} + +\begin{CompactList}\small\item\em Iteration maximum number. \item\end{CompactList}\item +unsigned {\bf num\_\-iter}\label{classmo_it_rand_next_move_c3551d7910cf351d63f0f3427fc18504} + +\begin{CompactList}\small\item\em Iteration current number. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-It\-Rand\-Next\-Move$<$ M $>$} + +One of the possible \doxyref{mo\-Next\-Move}{p.}{classmo_next_move}. + +This class is a move (\doxyref{mo\-Move}{p.}{classmo_move}) generator with a bound for the maximum number of iterations. + + + +Definition at line 22 of file mo\-It\-Rand\-Next\-Move.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moItRandNextMove@{mo\-It\-Rand\-Next\-Move}!moItRandNextMove@{moItRandNextMove}} +\index{moItRandNextMove@{moItRandNextMove}!moItRandNextMove@{mo\-It\-Rand\-Next\-Move}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-It\-Rand\-Next\-Move}$<$ M $>$::{\bf mo\-It\-Rand\-Next\-Move} ({\bf mo\-Rand\-Move}$<$ M $>$ \& {\em \_\-\_\-rand\_\-move}, unsigned {\em \_\-\_\-max\_\-iter})\hspace{0.3cm}{\tt [inline]}}\label{classmo_it_rand_next_move_95ed13e1178f4e44cab7184b040b83d7} + + +The constructor. + +Parameters only for initialising the attributes. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-rand\_\-move}]the random move generator. \item[{\em \_\-\_\-max\_\-iter}]the iteration maximum number. \end{description} +\end{Desc} + + +Definition at line 37 of file mo\-It\-Rand\-Next\-Move.h. + +\subsection{Member Function Documentation} +\index{moItRandNextMove@{mo\-It\-Rand\-Next\-Move}!operator()@{operator()}} +\index{operator()@{operator()}!moItRandNextMove@{mo\-It\-Rand\-Next\-Move}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-It\-Rand\-Next\-Move}$<$ M $>$::operator() (M \& {\em \_\-\_\-move}, const {\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline]}}\label{classmo_it_rand_next_move_92a2fbbc02a20853b9a309e99018a102} + + +Generation of a new move. + +If the maximum number is not already reached, the current move is forgotten and remplaced by another one. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]the current move. \item[{\em \_\-\_\-sol}]the current solution. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]FALSE if the maximum number of iteration is reached, else TRUE. \end{Desc} + + +Definition at line 52 of file mo\-It\-Rand\-Next\-Move.h. + +References mo\-It\-Rand\-Next\-Move$<$ M $>$::max\_\-iter, mo\-It\-Rand\-Next\-Move$<$ M $>$::num\_\-iter, and mo\-It\-Rand\-Next\-Move$<$ M $>$::rand\_\-move. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-It\-Rand\-Next\-Move.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_l_s_check_point.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_l_s_check_point.tex new file mode 100644 index 000000000..44cc5d177 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_l_s_check_point.tex @@ -0,0 +1,73 @@ +\section{mo\-LSCheck\-Point$<$ M $>$ Class Template Reference} +\label{classmo_l_s_check_point}\index{moLSCheckPoint@{moLSCheckPoint}} +Class which allows a checkpointing system. + + +{\tt \#include $<$mo\-LSCheck\-Point.h$>$} + +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void {\bf operator()} (const M \&\_\-\_\-move, const typename M::EOType \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Function which launches the checkpointing. \item\end{CompactList}\item +void {\bf add} (eo\-BF$<$ const M \&, const typename M::EOType \&, void $>$ \&\_\-\_\-f) +\begin{CompactList}\small\item\em Procedure which add a new function to the function vector. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +std::vector$<$ eo\-BF$<$ const M \&, const typename M::EOType \&, void $>$ $\ast$ $>$ {\bf func}\label{classmo_l_s_check_point_ff2a31ee5689a804bd9a572c51a36ca4} + +\begin{CompactList}\small\item\em vector of function \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-LSCheck\-Point$<$ M $>$} + +Class which allows a checkpointing system. + +Thanks to this class, at each iteration, additionnal function can be used (and not only one). + + + +Definition at line 21 of file mo\-LSCheck\-Point.h. + +\subsection{Member Function Documentation} +\index{moLSCheckPoint@{mo\-LSCheck\-Point}!operator()@{operator()}} +\index{operator()@{operator()}!moLSCheckPoint@{mo\-LSCheck\-Point}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-LSCheck\-Point}$<$ M $>$::operator() (const M \& {\em \_\-\_\-move}, const typename M::EOType \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline]}}\label{classmo_l_s_check_point_2f9c1250279e3f49ec77a66c10029f1e} + + +Function which launches the checkpointing. + +Each saved function is used on the current move and the current solution. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a move. \item[{\em \_\-\_\-sol}]a solution. \end{description} +\end{Desc} + + +Definition at line 34 of file mo\-LSCheck\-Point.h. + +References mo\-LSCheck\-Point$<$ M $>$::func.\index{moLSCheckPoint@{mo\-LSCheck\-Point}!add@{add}} +\index{add@{add}!moLSCheckPoint@{mo\-LSCheck\-Point}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-LSCheck\-Point}$<$ M $>$::add (eo\-BF$<$ const M \&, const typename M::EOType \&, void $>$ \& {\em \_\-\_\-f})\hspace{0.3cm}{\tt [inline]}}\label{classmo_l_s_check_point_66be5fe2944bcdd752f1e58105e969a6} + + +Procedure which add a new function to the function vector. + +The new function is added at the end of the vector. \begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-f}]a new function to add. \end{description} +\end{Desc} + + +Definition at line 49 of file mo\-LSCheck\-Point.h. + +References mo\-LSCheck\-Point$<$ M $>$::func. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-LSCheck\-Point.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move.tex new file mode 100644 index 000000000..0460f6faf --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move.tex @@ -0,0 +1,29 @@ +\section{mo\-Move$<$ EOT $>$ Class Template Reference} +\label{classmo_move}\index{moMove@{moMove}} +Definition of a move. + + +{\tt \#include $<$mo\-Move.h$>$} + +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef EOT {\bf EOType}\label{classmo_move_7fb853a91ba1319530529e515380bbba} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class mo\-Move$<$ EOT $>$} + +Definition of a move. + +A move transforms a solution to another close solution. It describes how a solution can be modified to another one. + + + +Definition at line 23 of file mo\-Move.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_expl.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_expl.eps new file mode 100644 index 000000000..708dd0b50 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_expl.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 173.41 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.88333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moMoveExpl< M >) cw +(moMoveLoopExpl< M >) cw +(moHCMoveLoopExpl< M >) cw +(moTSMoveLoopExpl< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moMoveExpl< M >) 0.5 2 box + (moMoveLoopExpl< M >) 0.5 1 box + (moHCMoveLoopExpl< M >) 0 0 box + (moTSMoveLoopExpl< M >) 1 0 box + +% ----- relations ----- + +solid +1 0.5 1.25 out +solid +0 0.5 1.75 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_expl.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_expl.tex new file mode 100644 index 000000000..614132a6c --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_expl.tex @@ -0,0 +1,29 @@ +\section{mo\-Move\-Expl$<$ M $>$ Class Template Reference} +\label{classmo_move_expl}\index{moMoveExpl@{moMoveExpl}} +Description of a move (\doxyref{mo\-Move}{p.}{classmo_move}) explorer. + + +{\tt \#include $<$mo\-Move\-Expl.h$>$} + +Inheritance diagram for mo\-Move\-Expl$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_move_expl} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Move\-Expl$<$ M $>$} + +Description of a move (\doxyref{mo\-Move}{p.}{classmo_move}) explorer. + +Only a description...See \doxyref{mo\-Move\-Loop\-Expl}{p.}{classmo_move_loop_expl}. + + + +Definition at line 21 of file mo\-Move\-Expl.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move\-Expl.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_incr_eval.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_incr_eval.tex new file mode 100644 index 000000000..6b4bd7289 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_incr_eval.tex @@ -0,0 +1,23 @@ +\section{mo\-Move\-Incr\-Eval$<$ M $>$ Class Template Reference} +\label{classmo_move_incr_eval}\index{moMoveIncrEval@{moMoveIncrEval}} +(generally) Efficient evaluation function based a move and a solution. + + +{\tt \#include $<$mo\-Move\-Incr\-Eval.h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Move\-Incr\-Eval$<$ M $>$} + +(generally) Efficient evaluation function based a move and a solution. + +From a move and a solution, it computes a new fitness that could be associated to the solution if this one is updated. + + + +Definition at line 24 of file mo\-Move\-Incr\-Eval.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move\-Incr\-Eval.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_init.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_init.tex new file mode 100644 index 000000000..556b323ee --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_init.tex @@ -0,0 +1,23 @@ +\section{mo\-Move\-Init$<$ M $>$ Class Template Reference} +\label{classmo_move_init}\index{moMoveInit@{moMoveInit}} +Move (\doxyref{mo\-Move}{p.}{classmo_move}) initializer. + + +{\tt \#include $<$mo\-Move\-Init.h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Move\-Init$<$ M $>$} + +Move (\doxyref{mo\-Move}{p.}{classmo_move}) initializer. + +Class which allows to initiase a move. Only a description... An object that herits from this class needs to be designed to be used. + + + +Definition at line 22 of file mo\-Move\-Init.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move\-Init.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_loop_expl.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_loop_expl.eps new file mode 100644 index 000000000..76326be37 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_loop_expl.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 173.41 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.88333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moMoveLoopExpl< M >) cw +(moMoveExpl< M >) cw +(moHCMoveLoopExpl< M >) cw +(moTSMoveLoopExpl< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moMoveLoopExpl< M >) 0.5 1 box + (moMoveExpl< M >) 0.5 2 box + (moHCMoveLoopExpl< M >) 0 0 box + (moTSMoveLoopExpl< M >) 1 0 box + +% ----- relations ----- + +solid +0 0.5 1 out +solid +1 0.5 2 in +solid +1 0.5 0.25 out +solid +0 1 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_loop_expl.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_loop_expl.tex new file mode 100644 index 000000000..8bbfd3542 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_loop_expl.tex @@ -0,0 +1,29 @@ +\section{mo\-Move\-Loop\-Expl$<$ M $>$ Class Template Reference} +\label{classmo_move_loop_expl}\index{moMoveLoopExpl@{moMoveLoopExpl}} +Class which describes an iterative explorer. + + +{\tt \#include $<$mo\-Move\-Loop\-Expl.h$>$} + +Inheritance diagram for mo\-Move\-Loop\-Expl$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_move_loop_expl} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Move\-Loop\-Expl$<$ M $>$} + +Class which describes an iterative explorer. + +Only a description... \doxyref{mo\-HCMove\-Loop\-Expl}{p.}{classmo_h_c_move_loop_expl} and \doxyref{mo\-TSMove\-Loop\-Expl}{p.}{classmo_t_s_move_loop_expl} are exemples of class that are a \doxyref{mo\-Move\-Loop\-Expl}{p.}{classmo_move_loop_expl}. + + + +Definition at line 21 of file mo\-Move\-Loop\-Expl.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move\-Loop\-Expl.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_select.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_select.eps new file mode 100644 index 000000000..86a37c002 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_select.eps @@ -0,0 +1,207 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 83.8574 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 5.9625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 3 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moMoveSelect< M >) cw +(moBestImprSelect< M >) cw +(moFirstImprSelect< M >) cw +(moRandImprSelect< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moMoveSelect< M >) 1 1 box + (moBestImprSelect< M >) 0 0 box + (moFirstImprSelect< M >) 1 0 box + (moRandImprSelect< M >) 2 0 box + +% ----- relations ----- + +solid +1 1 0.25 out +solid +0 2 1 conn +solid +0 0 0.75 in +solid +0 1 0.75 in +solid +0 2 0.75 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_select.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_select.tex new file mode 100644 index 000000000..390b93989 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_move_select.tex @@ -0,0 +1,77 @@ +\section{mo\-Move\-Select$<$ M $>$ Class Template Reference} +\label{classmo_move_select}\index{moMoveSelect@{moMoveSelect}} +Class that describes a move selector (\doxyref{mo\-Move}{p.}{classmo_move}). + + +{\tt \#include $<$mo\-Move\-Select.h$>$} + +Inheritance diagram for mo\-Move\-Select$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_move_select} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_move_select_8148ccc0e6fbd209c3fe6829559895c8} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf init} (const {\bf Fitness} \&\_\-\_\-fit)=0 +\begin{CompactList}\small\item\em Procedure which initialises all that the move selector needs including the initial fitness. \item\end{CompactList}\item +virtual bool {\bf update} (const M \&\_\-\_\-move, const {\bf Fitness} \&\_\-\_\-fit)=0 +\begin{CompactList}\small\item\em Function which updates the best solutions. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Move\-Select$<$ M $>$} + +Class that describes a move selector (\doxyref{mo\-Move}{p.}{classmo_move}). + +It iteratively considers some moves (\doxyref{mo\-Move}{p.}{classmo_move}) and their associated fitnesses. The best move is so regularly updated. At any time, it could be accessed. + + + +Definition at line 32 of file mo\-Move\-Select.h. + +\subsection{Member Function Documentation} +\index{moMoveSelect@{mo\-Move\-Select}!init@{init}} +\index{init@{init}!moMoveSelect@{mo\-Move\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-Move\-Select}$<$ M $>$::init (const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_move_select_bca4c43f13d26eca7163aeb272a4a52e} + + +Procedure which initialises all that the move selector needs including the initial fitness. + +In order to know the fitness of the solution, for which the neighborhood will be soon explored + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-fit}]the current fitness. \end{description} +\end{Desc} + + +Implemented in {\bf mo\-Best\-Impr\-Select$<$ M $>$} \doxyref{}{p.}{classmo_best_impr_select_2d2abf9aa17dc77cbb4f41810ab7b956}, {\bf mo\-First\-Impr\-Select$<$ M $>$} \doxyref{}{p.}{classmo_first_impr_select_4c5ce18ede46247a439c68f6954a4055}, and {\bf mo\-Rand\-Impr\-Select$<$ M $>$} \doxyref{}{p.}{classmo_rand_impr_select_a19726a1509cff874801615d63a3b5d9}.\index{moMoveSelect@{mo\-Move\-Select}!update@{update}} +\index{update@{update}!moMoveSelect@{mo\-Move\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual bool {\bf mo\-Move\-Select}$<$ M $>$::update (const M \& {\em \_\-\_\-move}, const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_move_select_7c157b6e64fd417acf6e900059204eb1} + + +Function which updates the best solutions. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a new move. \item[{\em \_\-\_\-fit}]a fitness linked to the new move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]a boolean that expresses the need to resume the exploration. \end{Desc} + + +Implemented in {\bf mo\-Best\-Impr\-Select$<$ M $>$} \doxyref{}{p.}{classmo_best_impr_select_d10e3e6f8a0277731e95ef506d064d6d}, and {\bf mo\-Rand\-Impr\-Select$<$ M $>$} \doxyref{}{p.}{classmo_rand_impr_select_60ae5548560caee7e28d5ed2446186c9}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Move\-Select.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_next_move.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_next_move.eps new file mode 100644 index 000000000..d9586a593 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_next_move.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 245.399 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.0375 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moNextMove< M >) cw +(moItRandNextMove< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moNextMove< M >) 0 1 box + (moItRandNextMove< M >) 0 0 box + +% ----- relations ----- + +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_next_move.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_next_move.tex new file mode 100644 index 000000000..e51cd5566 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_next_move.tex @@ -0,0 +1,29 @@ +\section{mo\-Next\-Move$<$ M $>$ Class Template Reference} +\label{classmo_next_move}\index{moNextMove@{moNextMove}} +Class which allows to generate a new move (\doxyref{mo\-Move}{p.}{classmo_move}). + + +{\tt \#include $<$mo\-Next\-Move.h$>$} + +Inheritance diagram for mo\-Next\-Move$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_next_move} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Next\-Move$<$ M $>$} + +Class which allows to generate a new move (\doxyref{mo\-Move}{p.}{classmo_move}). + +Useful for the explorer (for \doxyref{mo\-TS}{p.}{classmo_t_s} or \doxyref{mo\-HC}{p.}{classmo_h_c}). Does nothing... An object that herits from this class needs to be designed for being used. + + + +Definition at line 22 of file mo\-Next\-Move.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Next\-Move.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_no_aspir_crit.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_no_aspir_crit.eps new file mode 100644 index 000000000..4a1de4c86 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_no_aspir_crit.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 291.971 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.7125 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moNoAspirCrit< M >) cw +(moAspirCrit< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moNoAspirCrit< M >) 0 0 box + (moAspirCrit< M >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_no_aspir_crit.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_no_aspir_crit.tex new file mode 100644 index 000000000..2c5a3b5e1 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_no_aspir_crit.tex @@ -0,0 +1,68 @@ +\section{mo\-No\-Aspir\-Crit$<$ M $>$ Class Template Reference} +\label{classmo_no_aspir_crit}\index{moNoAspirCrit@{moNoAspirCrit}} +One of the possible aspiration criterion (\doxyref{mo\-Aspir\-Crit}{p.}{classmo_aspir_crit}). + + +{\tt \#include $<$mo\-No\-Aspir\-Crit.h$>$} + +Inheritance diagram for mo\-No\-Aspir\-Crit$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_no_aspir_crit} +\end{center} +\end{figure} +\subsection*{Private Member Functions} +\begin{CompactItemize} +\item +bool {\bf operator()} (const M \&\_\-\_\-move, const typename M::EOType::Fitness \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Function which describes the aspiration criterion behaviour. \item\end{CompactList}\item +void {\bf init} () +\begin{CompactList}\small\item\em Procedure which initialises all that needs a \doxyref{mo\-No\-Aspir\-Crit}{p.}{classmo_no_aspir_crit}. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-No\-Aspir\-Crit$<$ M $>$} + +One of the possible aspiration criterion (\doxyref{mo\-Aspir\-Crit}{p.}{classmo_aspir_crit}). + +The simplest : never satisfied. + + + +Definition at line 21 of file mo\-No\-Aspir\-Crit.h. + +\subsection{Member Function Documentation} +\index{moNoAspirCrit@{mo\-No\-Aspir\-Crit}!operator()@{operator()}} +\index{operator()@{operator()}!moNoAspirCrit@{mo\-No\-Aspir\-Crit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-No\-Aspir\-Crit}$<$ M $>$::operator() (const M \& {\em \_\-\_\-move}, const typename M::EOType::Fitness \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline, private]}}\label{classmo_no_aspir_crit_8a7180a8d5c25bfb6727d0b59551b0f8} + + +Function which describes the aspiration criterion behaviour. + +Does nothing. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a move. \item[{\em \_\-\_\-sol}]a fitness. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]FALSE. \end{Desc} + + +Definition at line 32 of file mo\-No\-Aspir\-Crit.h.\index{moNoAspirCrit@{mo\-No\-Aspir\-Crit}!init@{init}} +\index{init@{init}!moNoAspirCrit@{mo\-No\-Aspir\-Crit}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-No\-Aspir\-Crit}$<$ M $>$::init ()\hspace{0.3cm}{\tt [inline, private, virtual]}}\label{classmo_no_aspir_crit_f3a286fc4c2d36bd390ba9a3074f3037} + + +Procedure which initialises all that needs a \doxyref{mo\-No\-Aspir\-Crit}{p.}{classmo_no_aspir_crit}. + +Nothing... + +Implements {\bf mo\-Aspir\-Crit$<$ M $>$} \doxyref{}{p.}{classmo_aspir_crit_a8ce84510a5ec7c9078381e542c6d140}. + +Definition at line 43 of file mo\-No\-Aspir\-Crit.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-No\-Aspir\-Crit.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_rand_impr_select.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_rand_impr_select.eps new file mode 100644 index 000000000..74d2fc0f6 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_rand_impr_select.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 251.572 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.9875 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moRandImprSelect< M >) cw +(moMoveSelect< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moRandImprSelect< M >) 0 0 box + (moMoveSelect< M >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_rand_impr_select.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_rand_impr_select.tex new file mode 100644 index 000000000..feaa35f47 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_rand_impr_select.tex @@ -0,0 +1,124 @@ +\section{mo\-Rand\-Impr\-Select$<$ M $>$ Class Template Reference} +\label{classmo_rand_impr_select}\index{moRandImprSelect@{moRandImprSelect}} +One of the possible \doxyref{mo\-Move}{p.}{classmo_move} selector (\doxyref{mo\-Move\-Select}{p.}{classmo_move_select}). + + +{\tt \#include $<$mo\-Rand\-Impr\-Select.h$>$} + +Inheritance diagram for mo\-Rand\-Impr\-Select$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_rand_impr_select} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_rand_impr_select_3bff2fdb963297430543c82ffb567a5c} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +void {\bf init} (const {\bf Fitness} \&\_\-\_\-fit) +\begin{CompactList}\small\item\em Procedure which all that needs a \doxyref{mo\-Rand\-Impr\-Select}{p.}{classmo_rand_impr_select}. \item\end{CompactList}\item +bool {\bf update} (const M \&\_\-\_\-move, const {\bf Fitness} \&\_\-\_\-fit) +\begin{CompactList}\small\item\em Function that updates the fitness and move vectors. \item\end{CompactList}\item +void {\bf operator()} (M \&\_\-\_\-move, {\bf Fitness} \&\_\-\_\-fit) throw (Empty\-Selection) +\begin{CompactList}\small\item\em The move selection. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf Fitness} {\bf init\_\-fit}\label{classmo_rand_impr_select_d153c277a0a2ea95ac484210d445b40e} + +\begin{CompactList}\small\item\em Fitness of the current solution. \item\end{CompactList}\item +std::vector$<$ {\bf Fitness} $>$ {\bf vect\_\-better\_\-fit}\label{classmo_rand_impr_select_05c7c3b858e8a25632f2f5c86b0c97a3} + +\begin{CompactList}\small\item\em Candidate fitnesse vector. \item\end{CompactList}\item +std::vector$<$ M $>$ {\bf vect\_\-better\_\-moves}\label{classmo_rand_impr_select_2ace12bd179144fa71d56324694201f5} + +\begin{CompactList}\small\item\em Candidate move vector. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Rand\-Impr\-Select$<$ M $>$} + +One of the possible \doxyref{mo\-Move}{p.}{classmo_move} selector (\doxyref{mo\-Move\-Select}{p.}{classmo_move_select}). + +All the neighbors are considered. One of them that enables an improvment of the objective function is choosen. + + + +Definition at line 25 of file mo\-Rand\-Impr\-Select.h. + +\subsection{Member Function Documentation} +\index{moRandImprSelect@{mo\-Rand\-Impr\-Select}!init@{init}} +\index{init@{init}!moRandImprSelect@{mo\-Rand\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-Rand\-Impr\-Select}$<$ M $>$::init (const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_rand_impr_select_a19726a1509cff874801615d63a3b5d9} + + +Procedure which all that needs a \doxyref{mo\-Rand\-Impr\-Select}{p.}{classmo_rand_impr_select}. + +Give a value to the initialise fitness. Clean the move and fitness vectors. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-fit}]the current best fitness \end{description} +\end{Desc} + + +Implements {\bf mo\-Move\-Select$<$ M $>$} \doxyref{}{p.}{classmo_move_select_bca4c43f13d26eca7163aeb272a4a52e}. + +Definition at line 40 of file mo\-Rand\-Impr\-Select.h. + +References mo\-Rand\-Impr\-Select$<$ M $>$::init\_\-fit, mo\-Rand\-Impr\-Select$<$ M $>$::vect\_\-better\_\-fit, and mo\-Rand\-Impr\-Select$<$ M $>$::vect\_\-better\_\-moves.\index{moRandImprSelect@{mo\-Rand\-Impr\-Select}!update@{update}} +\index{update@{update}!moRandImprSelect@{mo\-Rand\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-Rand\-Impr\-Select}$<$ M $>$::update (const M \& {\em \_\-\_\-move}, const {\bf Fitness} \& {\em \_\-\_\-fit})\hspace{0.3cm}{\tt [inline, virtual]}}\label{classmo_rand_impr_select_60ae5548560caee7e28d5ed2446186c9} + + +Function that updates the fitness and move vectors. + +if a move give a better fitness than the initial fitness, it is saved and the fitness too. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a new move. \item[{\em \_\-\_\-fit}]a new fitness associated to the new move. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE. \end{Desc} + + +Implements {\bf mo\-Move\-Select$<$ M $>$} \doxyref{}{p.}{classmo_move_select_7c157b6e64fd417acf6e900059204eb1}. + +Definition at line 56 of file mo\-Rand\-Impr\-Select.h. + +References mo\-Rand\-Impr\-Select$<$ M $>$::init\_\-fit, mo\-Rand\-Impr\-Select$<$ M $>$::vect\_\-better\_\-fit, and mo\-Rand\-Impr\-Select$<$ M $>$::vect\_\-better\_\-moves.\index{moRandImprSelect@{mo\-Rand\-Impr\-Select}!operator()@{operator()}} +\index{operator()@{operator()}!moRandImprSelect@{mo\-Rand\-Impr\-Select}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-Rand\-Impr\-Select}$<$ M $>$::operator() (M \& {\em \_\-\_\-move}, {\bf Fitness} \& {\em \_\-\_\-fit}) throw ({\bf Empty\-Selection})\hspace{0.3cm}{\tt [inline]}}\label{classmo_rand_impr_select_5ee57f77a450c0a9ce50bfccf3ad2a55} + + +The move selection. + +One the saved move is randomly chosen. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]the reference of the move that can be initialised by the function. \item[{\em \_\-\_\-fit}]the reference of the fitness that can be initialised by the function. \end{description} +\end{Desc} +\begin{Desc} +\item[Exceptions:] +\begin{description} +\item[{\em \doxyref{Empty\-Selection}{p.}{class_empty_selection}}]If no move which improves the current fitness are found. \end{description} +\end{Desc} + + +Definition at line 77 of file mo\-Rand\-Impr\-Select.h. + +References mo\-Rand\-Impr\-Select$<$ M $>$::vect\_\-better\_\-fit, and mo\-Rand\-Impr\-Select$<$ M $>$::vect\_\-better\_\-moves. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Rand\-Impr\-Select.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_rand_move.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_rand_move.tex new file mode 100644 index 000000000..ff3370a8d --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_rand_move.tex @@ -0,0 +1,23 @@ +\section{mo\-Rand\-Move$<$ M $>$ Class Template Reference} +\label{classmo_rand_move}\index{moRandMove@{moRandMove}} +Random move generator. + + +{\tt \#include $<$mo\-Rand\-Move.h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Rand\-Move$<$ M $>$} + +Random move generator. + +Only a description... An object that herits from this class needs to be designed in order to use a \doxyref{mo\-SA}{p.}{classmo_s_a}. + + + +Definition at line 21 of file mo\-Rand\-Move.h. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Rand\-Move.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_s_a.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_s_a.eps new file mode 100644 index 000000000..90945c761 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_s_a.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 268.456 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.8625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moSA< M >) cw +(moAlgo< M::EOType >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moSA< M >) 0 0 box + (moAlgo< M::EOType >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_s_a.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_s_a.tex new file mode 100644 index 000000000..0a99f4db8 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_s_a.tex @@ -0,0 +1,108 @@ +\section{mo\-SA$<$ M $>$ Class Template Reference} +\label{classmo_s_a}\index{moSA@{moSA}} +Simulated Annealing (SA). + + +{\tt \#include $<$mo\-SA.h$>$} + +Inheritance diagram for mo\-SA$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_s_a} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-SA} ({\bf mo\-Rand\-Move}$<$ M $>$ \&\_\-\_\-move\_\-rand, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \&\_\-\_\-incr\_\-eval, {\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \&\_\-\_\-cont, double \_\-\_\-init\_\-temp, {\bf mo\-Cool\-Sched} \&\_\-\_\-cool\_\-sched, eo\-Eval\-Func$<$ {\bf EOT} $>$ \&\_\-\_\-full\_\-eval) +\begin{CompactList}\small\item\em SA constructor. \item\end{CompactList}\item +bool {\bf operator()} ({\bf EOT} \&\_\-\_\-sol) +\begin{CompactList}\small\item\em function that launches the SA algorithm. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_s_a_d5d64a8797bdedc7b3af7893aded0bd5} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_s_a_97f1a40d5ab5a0b3f878d0347b34804b} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf mo\-Rand\-Move}$<$ M $>$ \& {\bf move\_\-rand}\label{classmo_s_a_71c49935b63a202d25888a5f86121fec} + +\begin{CompactList}\small\item\em A move generator (generally randomly). \item\end{CompactList}\item +{\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\bf incr\_\-eval}\label{classmo_s_a_4c3be32e9832e465b24e6d33559356bc} + +\begin{CompactList}\small\item\em A (generally) efficient evaluation function. \item\end{CompactList}\item +{\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \& {\bf cont}\label{classmo_s_a_54484c8a514866ea496e0058c2e09716} + +\begin{CompactList}\small\item\em Stopping criterion before temperature update. \item\end{CompactList}\item +double {\bf init\_\-temp}\label{classmo_s_a_f1af7636b52aa5f6b381f8187b667bd4} + +\begin{CompactList}\small\item\em Initial temperature. \item\end{CompactList}\item +{\bf mo\-Cool\-Sched} \& {\bf cool\_\-sched}\label{classmo_s_a_c7aaf7424aa1b9f889d2ba9c959e5a1d} + +\begin{CompactList}\small\item\em The cooling schedule. \item\end{CompactList}\item +eo\-Eval\-Func$<$ {\bf EOT} $>$ \& {\bf full\_\-eval}\label{classmo_s_a_bcd6a940046f23dd741444c0b85edf2c} + +\begin{CompactList}\small\item\em A full evaluation function. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-SA$<$ M $>$} + +Simulated Annealing (SA). + +Class that describes a Simulated Annealing algorithm. + + + +Definition at line 32 of file mo\-SA.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moSA@{mo\-SA}!moSA@{moSA}} +\index{moSA@{moSA}!moSA@{mo\-SA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-SA}$<$ M $>$::{\bf mo\-SA} ({\bf mo\-Rand\-Move}$<$ M $>$ \& {\em \_\-\_\-move\_\-rand}, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\em \_\-\_\-incr\_\-eval}, {\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \& {\em \_\-\_\-cont}, double {\em \_\-\_\-init\_\-temp}, {\bf mo\-Cool\-Sched} \& {\em \_\-\_\-cool\_\-sched}, eo\-Eval\-Func$<$ {\bf EOT} $>$ \& {\em \_\-\_\-full\_\-eval})\hspace{0.3cm}{\tt [inline]}}\label{classmo_s_a_ef9ffb0d95c599e0a06c78db5f2f4b12} + + +SA constructor. + +All the boxes used by a SA need to be given. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-rand}]a move generator (generally randomly). \item[{\em \_\-\_\-incr\_\-eval}]a (generaly) efficient evaluation function \item[{\em \_\-\_\-cont}]a stopping criterion. \item[{\em \_\-\_\-init\_\-temp}]the initial temperature. \item[{\em \_\-\_\-cool\_\-sched}]a cooling schedule, describes how the temperature is modified. \item[{\em \_\-\_\-full\_\-eval}]a full evaluation function. \end{description} +\end{Desc} + + +Definition at line 60 of file mo\-SA.h. + +\subsection{Member Function Documentation} +\index{moSA@{mo\-SA}!operator()@{operator()}} +\index{operator()@{operator()}!moSA@{mo\-SA}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-SA}$<$ M $>$::operator() ({\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline]}}\label{classmo_s_a_0e4c54b57bc13fcbd4763883b8f719e5} + + +function that launches the SA algorithm. + +As a \doxyref{mo\-TS}{p.}{classmo_t_s} or a \doxyref{mo\-HC}{p.}{classmo_h_c}, the SA can be used for HYBRIDATION in an evolutionary algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-sol}]a solution to improve. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE. \end{Desc} + + +Definition at line 82 of file mo\-SA.h. + +References mo\-SA$<$ M $>$::cont, mo\-SA$<$ M $>$::cool\_\-sched, mo\-SA$<$ M $>$::full\_\-eval, mo\-SA$<$ M $>$::incr\_\-eval, mo\-SA$<$ M $>$::init\_\-temp, and mo\-SA$<$ M $>$::move\_\-rand. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-SA.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_sol_continue.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_sol_continue.eps new file mode 100644 index 000000000..08a227b1a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_sol_continue.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 227.273 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.2 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moSolContinue< EOT >) cw +(moGenSolContinue< EOT >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moSolContinue< EOT >) 0 1 box + (moGenSolContinue< EOT >) 0 0 box + +% ----- relations ----- + +solid +1 0 0.25 out +solid +0 0 0.75 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_sol_continue.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_sol_continue.tex new file mode 100644 index 000000000..9039a615f --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_sol_continue.tex @@ -0,0 +1,46 @@ +\section{mo\-Sol\-Continue$<$ EOT $>$ Class Template Reference} +\label{classmo_sol_continue}\index{moSolContinue@{moSolContinue}} +Class that describes a stop criterion for a solution-based heuristic. + + +{\tt \#include $<$mo\-Sol\-Continue.h$>$} + +Inheritance diagram for mo\-Sol\-Continue$<$ EOT $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_sol_continue} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf init} ()=0 +\begin{CompactList}\small\item\em Procedure which initialises all that the stop criterion needs. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class EOT$>$ class mo\-Sol\-Continue$<$ EOT $>$} + +Class that describes a stop criterion for a solution-based heuristic. + +It allows to add an initialisation procedure to an object that is a unary function (eo\-UF). + + + +Definition at line 22 of file mo\-Sol\-Continue.h. + +\subsection{Member Function Documentation} +\index{moSolContinue@{mo\-Sol\-Continue}!init@{init}} +\index{init@{init}!moSolContinue@{mo\-Sol\-Continue}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class EOT$>$ virtual void {\bf mo\-Sol\-Continue}$<$ EOT $>$::init ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_sol_continue_064dc966a210f4ffb9515be3f03ca4c7} + + +Procedure which initialises all that the stop criterion needs. + +Generally, it allocates some data structures or initialises some counters. + +Implemented in {\bf mo\-Gen\-Sol\-Continue$<$ EOT $>$} \doxyref{}{p.}{classmo_gen_sol_continue_6c5db8182157584b56507cc9075602d4}. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Sol\-Continue.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_t_s.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_t_s.eps new file mode 100644 index 000000000..7f23b6aef --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_t_s.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 268.456 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.8625 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moTS< M >) cw +(moAlgo< M::EOType >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moTS< M >) 0 0 box + (moAlgo< M::EOType >) 0 1 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_t_s.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_t_s.tex new file mode 100644 index 000000000..8cf3ec796 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_t_s.tex @@ -0,0 +1,130 @@ +\section{mo\-TS$<$ M $>$ Class Template Reference} +\label{classmo_t_s}\index{moTS@{moTS}} +Tabu Search (TS). + + +{\tt \#include $<$mo\-TS.h$>$} + +Inheritance diagram for mo\-TS$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2cm]{classmo_t_s} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-TS} ({\bf mo\-Move\-Init}$<$ M $>$ \&\_\-\_\-move\_\-init, {\bf mo\-Next\-Move}$<$ M $>$ \&\_\-\_\-next\_\-move, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \&\_\-\_\-incr\_\-eval, {\bf mo\-Tabu\-List}$<$ M $>$ \&\_\-\_\-tabu\_\-list, {\bf mo\-Aspir\-Crit}$<$ M $>$ \&\_\-\_\-aspir\_\-crit, {\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \&\_\-\_\-cont, eo\-Eval\-Func$<$ {\bf EOT} $>$ \&\_\-\_\-full\_\-eval) +\begin{CompactList}\small\item\em Constructor of a \doxyref{mo\-TS}{p.}{classmo_t_s} specifying all the boxes. \item\end{CompactList}\item +{\bf mo\-TS} ({\bf mo\-Move\-Expl}$<$ M $>$ \&\_\-\_\-move\_\-expl, {\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \&\_\-\_\-cont, eo\-Eval\-Func$<$ {\bf EOT} $>$ \&\_\-\_\-full\_\-eval) +\begin{CompactList}\small\item\em Constructor with less parameters. \item\end{CompactList}\item +bool {\bf operator()} ({\bf EOT} \&\_\-\_\-sol) +\begin{CompactList}\small\item\em Function which launchs the Tabu Search. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_t_s_90d19d468c12ab5bd796948ce1ce79b1} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef EOT::Fitness {\bf Fitness}\label{classmo_t_s_aa0eefbb17111422e495d1255f876fca} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf mo\-Move\-Expl}$<$ M $>$ \& {\bf move\_\-expl}\label{classmo_t_s_06914ddc90ca96e9158c8dbe182a7865} + +\begin{CompactList}\small\item\em Neighborhood explorer. \item\end{CompactList}\item +{\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \& {\bf cont}\label{classmo_t_s_969371cd2202f3d29cbb426f57ac7d3a} + +\begin{CompactList}\small\item\em Stop criterion. \item\end{CompactList}\item +eo\-Eval\-Func$<$ {\bf EOT} $>$ \& {\bf full\_\-eval}\label{classmo_t_s_fb67eddae5d0bfca4ed881995523231e} + +\begin{CompactList}\small\item\em Full evaluation function. \item\end{CompactList}\end{CompactItemize} +\subsection*{Static Private Attributes} +\begin{CompactItemize} +\item +static bool {\bf first\_\-time}\label{classmo_t_s_564bc1969548ccbd9bb7e76f92898de0} + +\begin{CompactList}\small\item\em Boolean allowing to initialise the ptread\_\-mutex\_\-t in the constructor. \item\end{CompactList}\item +static pthread\_\-mutex\_\-t {\bf mutex}\label{classmo_t_s_688f9ba42eb33cae6431f4f4eb65b9e9} + +\begin{CompactList}\small\item\em The lock. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-TS$<$ M $>$} + +Tabu Search (TS). + +Generic algorithm that describes a tabu search. + + + +Definition at line 30 of file mo\-TS.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moTS@{mo\-TS}!moTS@{moTS}} +\index{moTS@{moTS}!moTS@{mo\-TS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-TS}$<$ M $>$::{\bf mo\-TS} ({\bf mo\-Move\-Init}$<$ M $>$ \& {\em \_\-\_\-move\_\-init}, {\bf mo\-Next\-Move}$<$ M $>$ \& {\em \_\-\_\-next\_\-move}, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\em \_\-\_\-incr\_\-eval}, {\bf mo\-Tabu\-List}$<$ M $>$ \& {\em \_\-\_\-tabu\_\-list}, {\bf mo\-Aspir\-Crit}$<$ M $>$ \& {\em \_\-\_\-aspir\_\-crit}, {\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \& {\em \_\-\_\-cont}, eo\-Eval\-Func$<$ {\bf EOT} $>$ \& {\em \_\-\_\-full\_\-eval})\hspace{0.3cm}{\tt [inline]}}\label{classmo_t_s_2be23f4524733ee6f37b71310d76407e} + + +Constructor of a \doxyref{mo\-TS}{p.}{classmo_t_s} specifying all the boxes. + +In this constructor, a \doxyref{mo\-TSMove\-Loop\-Expl}{p.}{classmo_t_s_move_loop_expl} is instanciated. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-init}]move initialisation \item[{\em \_\-\_\-next\_\-move}]neighborhood explorer \item[{\em \_\-\_\-incr\_\-eval}]efficient evaluation \item[{\em \_\-\_\-tabu\_\-list}]tabu list \item[{\em \_\-\_\-aspir\_\-crit}]aspiration criterion \item[{\em \_\-\_\-cont}]stop criterion \item[{\em \_\-\_\-full\_\-eval}]full evaluation function \end{description} +\end{Desc} + + +Definition at line 59 of file mo\-TS.h. + +References mo\-TS$<$ M $>$::first\_\-time, and mo\-TS$<$ M $>$::mutex.\index{moTS@{mo\-TS}!moTS@{moTS}} +\index{moTS@{moTS}!moTS@{mo\-TS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-TS}$<$ M $>$::{\bf mo\-TS} ({\bf mo\-Move\-Expl}$<$ M $>$ \& {\em \_\-\_\-move\_\-expl}, {\bf mo\-Sol\-Continue}$<$ {\bf EOT} $>$ \& {\em \_\-\_\-cont}, eo\-Eval\-Func$<$ {\bf EOT} $>$ \& {\em \_\-\_\-full\_\-eval})\hspace{0.3cm}{\tt [inline]}}\label{classmo_t_s_508e675c4232cf2ca06dded931c90bab} + + +Constructor with less parameters. + +The explorer is given in the parameters. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-expl}]the explorer (generally different that a \doxyref{mo\-TSMove\-Loop\-Expl}{p.}{classmo_t_s_move_loop_expl}) \item[{\em \_\-\_\-cont}]stop criterion \item[{\em \_\-\_\-full\_\-eval}]full evaluation function \end{description} +\end{Desc} + + +Definition at line 81 of file mo\-TS.h. + +References mo\-TS$<$ M $>$::first\_\-time, and mo\-TS$<$ M $>$::mutex. + +\subsection{Member Function Documentation} +\index{moTS@{mo\-TS}!operator()@{operator()}} +\index{operator()@{operator()}!moTS@{mo\-TS}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ bool {\bf mo\-TS}$<$ M $>$::operator() ({\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [inline]}}\label{classmo_t_s_94d25a76fe1bc9ef0bbd0358ff55aceb} + + +Function which launchs the Tabu Search. + +Algorithm of the tabu search. As a \doxyref{mo\-SA}{p.}{classmo_s_a} or a \doxyref{mo\-HC}{p.}{classmo_h_c}, it can be used for HYBRIDATION in an evolutionary algorithm. For security a lock (pthread\_\-mutex\_\-t) is closed during the algorithm. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-sol}]a solution to improve. \end{description} +\end{Desc} +\begin{Desc} +\item[Returns:]TRUE. \end{Desc} + + +Definition at line 104 of file mo\-TS.h. + +References mo\-TS$<$ M $>$::cont, mo\-TS$<$ M $>$::full\_\-eval, mo\-TS$<$ M $>$::move\_\-expl, and mo\-TS$<$ M $>$::mutex. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-TS.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_t_s_move_loop_expl.eps b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_t_s_move_loop_expl.eps new file mode 100644 index 000000000..d8324527a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_t_s_move_loop_expl.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 352.941 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.41667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(moTSMoveLoopExpl< M >) cw +(moMoveLoopExpl< M >) cw +(moMoveExpl< M >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (moTSMoveLoopExpl< M >) 0 0 box + (moMoveLoopExpl< M >) 0 1 box + (moMoveExpl< M >) 0 2 box + +% ----- relations ----- + +solid +0 0 0 out +solid +1 0 1 in +solid +0 0 1 out +solid +1 0 2 in diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_t_s_move_loop_expl.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_t_s_move_loop_expl.tex new file mode 100644 index 000000000..5f7327560 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_t_s_move_loop_expl.tex @@ -0,0 +1,106 @@ +\section{mo\-TSMove\-Loop\-Expl$<$ M $>$ Class Template Reference} +\label{classmo_t_s_move_loop_expl}\index{moTSMoveLoopExpl@{moTSMoveLoopExpl}} +Explorer for a Tabu Search algorithm. + + +{\tt \#include $<$mo\-TSMove\-Loop\-Expl.h$>$} + +Inheritance diagram for mo\-TSMove\-Loop\-Expl$<$ M $>$::\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3cm]{classmo_t_s_move_loop_expl} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +{\bf mo\-TSMove\-Loop\-Expl} ({\bf mo\-Move\-Init}$<$ M $>$ \&\_\-\_\-move\_\-init, {\bf mo\-Next\-Move}$<$ M $>$ \&\_\-\_\-next\_\-move, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \&\_\-\_\-incr\_\-eval, {\bf mo\-Tabu\-List}$<$ M $>$ \&\_\-\_\-tabu\_\-list, {\bf mo\-Aspir\-Crit}$<$ M $>$ \&\_\-\_\-aspir\_\-crit) +\begin{CompactList}\small\item\em Constructor. \item\end{CompactList}\item +void {\bf operator()} (const {\bf EOT} \&\_\-\_\-old\_\-sol, {\bf EOT} \&\_\-\_\-new\_\-sol) +\begin{CompactList}\small\item\em Procedure which lauches the exploration. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_t_s_move_loop_expl_47f42225e2ed096374b818bdb848a527} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\item +typedef M::EOType::Fitness {\bf Fitness}\label{classmo_t_s_move_loop_expl_a1ba36c937b195ca2f7d1a24adaa7018} + +\begin{CompactList}\small\item\em Alias for the fitness. \item\end{CompactList}\end{CompactItemize} +\subsection*{Private Attributes} +\begin{CompactItemize} +\item +{\bf mo\-Move\-Init}$<$ M $>$ \& {\bf move\_\-init}\label{classmo_t_s_move_loop_expl_6b23f99648902fb72ed17a4a6fa4e400} + +\begin{CompactList}\small\item\em Move initialisation. \item\end{CompactList}\item +{\bf mo\-Next\-Move}$<$ M $>$ \& {\bf next\_\-move}\label{classmo_t_s_move_loop_expl_aeeff6666d26ff5c67acd9c153a5ae49} + +\begin{CompactList}\small\item\em Neighborhood explorer. \item\end{CompactList}\item +{\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\bf incr\_\-eval}\label{classmo_t_s_move_loop_expl_ee4443fc8e45d840697619678628c26c} + +\begin{CompactList}\small\item\em Efficient evaluation. \item\end{CompactList}\item +{\bf mo\-Best\-Impr\-Select}$<$ M $>$ {\bf move\_\-select}\label{classmo_t_s_move_loop_expl_35a3f3035fb8df875c281d9838904bf1} + +\begin{CompactList}\small\item\em Move selector. \item\end{CompactList}\item +{\bf mo\-Tabu\-List}$<$ M $>$ \& {\bf tabu\_\-list}\label{classmo_t_s_move_loop_expl_0e5988a940ba218e87c53b7e56d79790} + +\begin{CompactList}\small\item\em Tabu list. \item\end{CompactList}\item +{\bf mo\-Aspir\-Crit}$<$ M $>$ \& {\bf aspir\_\-crit}\label{classmo_t_s_move_loop_expl_6786cf5422d17cbf872b07ae74ca6b0f} + +\begin{CompactList}\small\item\em Aspiration criterion. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-TSMove\-Loop\-Expl$<$ M $>$} + +Explorer for a Tabu Search algorithm. + +It is used by a \doxyref{mo\-TS}{p.}{classmo_t_s}. + + + +Definition at line 30 of file mo\-TSMove\-Loop\-Expl.h. + +\subsection{Constructor \& Destructor Documentation} +\index{moTSMoveLoopExpl@{mo\-TSMove\-Loop\-Expl}!moTSMoveLoopExpl@{moTSMoveLoopExpl}} +\index{moTSMoveLoopExpl@{moTSMoveLoopExpl}!moTSMoveLoopExpl@{mo\-TSMove\-Loop\-Expl}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ {\bf mo\-TSMove\-Loop\-Expl}$<$ M $>$::{\bf mo\-TSMove\-Loop\-Expl} ({\bf mo\-Move\-Init}$<$ M $>$ \& {\em \_\-\_\-move\_\-init}, {\bf mo\-Next\-Move}$<$ M $>$ \& {\em \_\-\_\-next\_\-move}, {\bf mo\-Move\-Incr\-Eval}$<$ M $>$ \& {\em \_\-\_\-incr\_\-eval}, {\bf mo\-Tabu\-List}$<$ M $>$ \& {\em \_\-\_\-tabu\_\-list}, {\bf mo\-Aspir\-Crit}$<$ M $>$ \& {\em \_\-\_\-aspir\_\-crit})\hspace{0.3cm}{\tt [inline]}}\label{classmo_t_s_move_loop_expl_43306dae9df150a8d9dc0dec9cd6a381} + + +Constructor. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move\_\-init}]move initialisation \item[{\em \_\-\_\-next\_\-move}]neighborhood explorer \item[{\em \_\-\_\-incr\_\-eval}]efficient evaluation \item[{\em \_\-\_\-tabu\_\-list}]tabu list \item[{\em \_\-\_\-aspir\_\-crit}]aspiration criterion \end{description} +\end{Desc} + + +Definition at line 49 of file mo\-TSMove\-Loop\-Expl.h. + +References mo\-TSMove\-Loop\-Expl$<$ M $>$::aspir\_\-crit, and mo\-TSMove\-Loop\-Expl$<$ M $>$::tabu\_\-list. + +\subsection{Member Function Documentation} +\index{moTSMoveLoopExpl@{mo\-TSMove\-Loop\-Expl}!operator()@{operator()}} +\index{operator()@{operator()}!moTSMoveLoopExpl@{mo\-TSMove\-Loop\-Expl}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ void {\bf mo\-TSMove\-Loop\-Expl}$<$ M $>$::operator() (const {\bf EOT} \& {\em \_\-\_\-old\_\-sol}, {\bf EOT} \& {\em \_\-\_\-new\_\-sol})\hspace{0.3cm}{\tt [inline]}}\label{classmo_t_s_move_loop_expl_f601bbd0ccc41d6fbe3df9fcd87ad9e7} + + +Procedure which lauches the exploration. + +The exploration continues while the chosen move is not in the tabu list or the aspiration criterion is true. If these 2 conditions are not true, the exploration stops if the move selector update function returns false. + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-old\_\-sol}]the initial solution \item[{\em \_\-\_\-new\_\-sol}]the new solution \end{description} +\end{Desc} + + +Definition at line 69 of file mo\-TSMove\-Loop\-Expl.h. + +References mo\-TSMove\-Loop\-Expl$<$ M $>$::aspir\_\-crit, mo\-TSMove\-Loop\-Expl$<$ M $>$::incr\_\-eval, mo\-TSMove\-Loop\-Expl$<$ M $>$::move\_\-init, mo\-TSMove\-Loop\-Expl$<$ M $>$::move\_\-select, mo\-TSMove\-Loop\-Expl$<$ M $>$::next\_\-move, and mo\-TSMove\-Loop\-Expl$<$ M $>$::tabu\_\-list. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-TSMove\-Loop\-Expl.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/classmo_tabu_list.tex b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_tabu_list.tex new file mode 100644 index 000000000..5341527b7 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/classmo_tabu_list.tex @@ -0,0 +1,69 @@ +\section{mo\-Tabu\-List$<$ M $>$ Class Template Reference} +\label{classmo_tabu_list}\index{moTabuList@{moTabuList}} +Class describing a tabu list that a \doxyref{mo\-TS}{p.}{classmo_t_s} uses. + + +{\tt \#include $<$mo\-Tabu\-List.h$>$} + +\subsection*{Public Types} +\begin{CompactItemize} +\item +typedef M::EOType {\bf EOT}\label{classmo_tabu_list_e219715cc3fdd5626764bc50ce6357df} + +\begin{CompactList}\small\item\em Alias for the type. \item\end{CompactList}\end{CompactItemize} +\subsection*{Public Member Functions} +\begin{CompactItemize} +\item +virtual void {\bf add} (const M \&\_\-\_\-move, const {\bf EOT} \&\_\-\_\-sol)=0 +\begin{CompactList}\small\item\em Procedure to add a move in the tabu list. \item\end{CompactList}\item +virtual void {\bf update} ()=0 +\begin{CompactList}\small\item\em Procedure that updates the tabu list content. \item\end{CompactList}\item +virtual void {\bf init} ()=0 +\begin{CompactList}\small\item\em Procedure which initialises the tabu list. \item\end{CompactList}\end{CompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class M$>$ class mo\-Tabu\-List$<$ M $>$} + +Class describing a tabu list that a \doxyref{mo\-TS}{p.}{classmo_t_s} uses. + +It is only a description, does nothing... A new object that herits from this class has to be defined in order to be used in a \doxyref{mo\-TS}{p.}{classmo_t_s}. + + + +Definition at line 22 of file mo\-Tabu\-List.h. + +\subsection{Member Function Documentation} +\index{moTabuList@{mo\-Tabu\-List}!add@{add}} +\index{add@{add}!moTabuList@{mo\-Tabu\-List}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-Tabu\-List}$<$ M $>$::add (const M \& {\em \_\-\_\-move}, const {\bf EOT} \& {\em \_\-\_\-sol})\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_tabu_list_d279d72cb486d812da1ad3d24a69c286} + + +Procedure to add a move in the tabu list. + +The two parameters have not to be modified so they are constant parameters + +\begin{Desc} +\item[Parameters:] +\begin{description} +\item[{\em \_\-\_\-move}]a new tabu move \item[{\em \_\-\_\-sol}]the solution associated to this move \end{description} +\end{Desc} +\index{moTabuList@{mo\-Tabu\-List}!update@{update}} +\index{update@{update}!moTabuList@{mo\-Tabu\-List}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-Tabu\-List}$<$ M $>$::update ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_tabu_list_a2e5d1132f064093c8ed57046405f5ca} + + +Procedure that updates the tabu list content. + +Generally, a counter associated to each saved move is decreased by one. \index{moTabuList@{mo\-Tabu\-List}!init@{init}} +\index{init@{init}!moTabuList@{mo\-Tabu\-List}} +\subsubsection{\setlength{\rightskip}{0pt plus 5cm}template$<$class M$>$ virtual void {\bf mo\-Tabu\-List}$<$ M $>$::init ()\hspace{0.3cm}{\tt [pure virtual]}}\label{classmo_tabu_list_0a06c459d56e8e2b408a8f3c6aec4e57} + + +Procedure which initialises the tabu list. + +Can be useful if the data structure needs to be allocated before being used. + +The documentation for this class was generated from the following file:\begin{CompactItemize} +\item +mo\-Tabu\-List.h\end{CompactItemize} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/doxygen.sty b/trunk/paradiseo-mo/tutorial/docs/latex/doxygen.sty new file mode 100644 index 000000000..94f46e468 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/doxygen.sty @@ -0,0 +1,78 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} +\RequirePackage{calc} +\RequirePackage{array} +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\lhead[\fancyplain{}{\bfseries\thepage}] + {\fancyplain{}{\bfseries\rightmark}} +\rhead[\fancyplain{}{\bfseries\leftmark}] + {\fancyplain{}{\bfseries\thepage}} +\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by Doxygen }]{} +\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Mon Dec 18 15:12:36 2006 for PARADISEO-MO by Doxygen }} +\cfoot{} +\newenvironment{Code} +{\footnotesize} +{\normalsize} +\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})} +\newenvironment{DocInclude} +{\footnotesize} +{\normalsize} +\newenvironment{VerbInclude} +{\footnotesize} +{\normalsize} +\newenvironment{Image} +{\begin{figure}[H]} +{\end{figure}} +\newenvironment{ImageNoCaption}{}{} +\newenvironment{CompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{\hfill}}} +{\end{list}} +\newenvironment{CompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\sloppy +\usepackage[T1]{fontenc} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/hierarchy.tex b/trunk/paradiseo-mo/tutorial/docs/latex/hierarchy.tex new file mode 100644 index 000000000..e9cef1278 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/hierarchy.tex @@ -0,0 +1,48 @@ +\section{PARADISEO-MO Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically:\begin{CompactList} +\item \contentsline{section}{Empty\-Selection}{\pageref{class_empty_selection}}{} +\item \contentsline{section}{mo\-Algo$<$ EOT $>$}{\pageref{classmo_algo}}{} +\item \contentsline{section}{mo\-Algo$<$ M::EOType $>$}{\pageref{classmo_algo}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-HC$<$ M $>$}{\pageref{classmo_h_c}}{} +\item \contentsline{section}{mo\-SA$<$ M $>$}{\pageref{classmo_s_a}}{} +\item \contentsline{section}{mo\-TS$<$ M $>$}{\pageref{classmo_t_s}}{} +\end{CompactList} +\item \contentsline{section}{mo\-Aspir\-Crit$<$ M $>$}{\pageref{classmo_aspir_crit}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-Impr\-Best\-Fit\-Aspir\-Crit$<$ M $>$}{\pageref{classmo_impr_best_fit_aspir_crit}}{} +\item \contentsline{section}{mo\-No\-Aspir\-Crit$<$ M $>$}{\pageref{classmo_no_aspir_crit}}{} +\end{CompactList} +\item \contentsline{section}{mo\-Cool\-Sched}{\pageref{classmo_cool_sched}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-Easy\-Cool\-Sched}{\pageref{classmo_easy_cool_sched}}{} +\end{CompactList} +\item \contentsline{section}{mo\-LSCheck\-Point$<$ M $>$}{\pageref{classmo_l_s_check_point}}{} +\item \contentsline{section}{mo\-Move$<$ EOT $>$}{\pageref{classmo_move}}{} +\item \contentsline{section}{mo\-Move\-Expl$<$ M $>$}{\pageref{classmo_move_expl}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-Move\-Loop\-Expl$<$ M $>$}{\pageref{classmo_move_loop_expl}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-HCMove\-Loop\-Expl$<$ M $>$}{\pageref{classmo_h_c_move_loop_expl}}{} +\item \contentsline{section}{mo\-TSMove\-Loop\-Expl$<$ M $>$}{\pageref{classmo_t_s_move_loop_expl}}{} +\end{CompactList} +\end{CompactList} +\item \contentsline{section}{mo\-Move\-Incr\-Eval$<$ M $>$}{\pageref{classmo_move_incr_eval}}{} +\item \contentsline{section}{mo\-Move\-Init$<$ M $>$}{\pageref{classmo_move_init}}{} +\item \contentsline{section}{mo\-Move\-Select$<$ M $>$}{\pageref{classmo_move_select}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-Best\-Impr\-Select$<$ M $>$}{\pageref{classmo_best_impr_select}}{} +\item \contentsline{section}{mo\-First\-Impr\-Select$<$ M $>$}{\pageref{classmo_first_impr_select}}{} +\item \contentsline{section}{mo\-Rand\-Impr\-Select$<$ M $>$}{\pageref{classmo_rand_impr_select}}{} +\end{CompactList} +\item \contentsline{section}{mo\-Next\-Move$<$ M $>$}{\pageref{classmo_next_move}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-It\-Rand\-Next\-Move$<$ M $>$}{\pageref{classmo_it_rand_next_move}}{} +\end{CompactList} +\item \contentsline{section}{mo\-Rand\-Move$<$ M $>$}{\pageref{classmo_rand_move}}{} +\item \contentsline{section}{mo\-Sol\-Continue$<$ EOT $>$}{\pageref{classmo_sol_continue}}{} +\begin{CompactList} +\item \contentsline{section}{mo\-Gen\-Sol\-Continue$<$ EOT $>$}{\pageref{classmo_gen_sol_continue}}{} +\end{CompactList} +\item \contentsline{section}{mo\-Tabu\-List$<$ M $>$}{\pageref{classmo_tabu_list}}{} +\end{CompactList} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/main.tex b/trunk/paradiseo-mo/tutorial/docs/latex/main.tex new file mode 100644 index 000000000..3ce1b6114 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/main.tex @@ -0,0 +1,5 @@ +\section{Introduction}\label{main_intro} +MO is an extension of the ANSI-C++ compliant evolutionary computation library EO. \par + It contains classes for almost any kind of one solution based heuristics.\section{Tutorial}\label{main_tutorial} +\section{Installation}\label{main_install} +The installation procedure of the package is detailed in the {\tt README} file in the top-directory of the source-tree.\section{Overall Design}\label{main_design} diff --git a/trunk/paradiseo-mo/tutorial/docs/latex/refman.tex b/trunk/paradiseo-mo/tutorial/docs/latex/refman.tex new file mode 100644 index 000000000..bcb07df38 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/latex/refman.tex @@ -0,0 +1,66 @@ +\documentclass[a4paper]{book} +\usepackage{a4wide} +\usepackage{makeidx} +\usepackage{fancyhdr} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage{doxygen} +\makeindex +\setcounter{tocdepth}{1} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\begin{titlepage} +\vspace*{7cm} +\begin{center} +{\Large PARADISEO-MO Reference Manual\\[1ex]\large 0.1 }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.5.1}\\ +\vspace*{0.5cm} +{\small Mon Dec 18 15:12:36 2006}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\chapter{Welcome to PARADISEO-Moving Objects } +\label{index}\input{main} +\chapter{PARADISEO-MO Hierarchical Index} +\input{hierarchy} +\chapter{PARADISEO-MO Class Index} +\input{annotated} +\chapter{PARADISEO-MO Class Documentation} +\input{class_empty_selection} +\include{classmo_algo} +\include{classmo_aspir_crit} +\include{classmo_best_impr_select} +\include{classmo_cool_sched} +\include{classmo_easy_cool_sched} +\include{classmo_first_impr_select} +\include{classmo_gen_sol_continue} +\include{classmo_h_c} +\include{classmo_h_c_move_loop_expl} +\include{classmo_impr_best_fit_aspir_crit} +\include{classmo_it_rand_next_move} +\include{classmo_l_s_check_point} +\include{classmo_move} +\include{classmo_move_expl} +\include{classmo_move_incr_eval} +\include{classmo_move_init} +\include{classmo_move_loop_expl} +\include{classmo_move_select} +\include{classmo_next_move} +\include{classmo_no_aspir_crit} +\include{classmo_rand_impr_select} +\include{classmo_rand_move} +\include{classmo_s_a} +\include{classmo_sol_continue} +\include{classmo_tabu_list} +\include{classmo_t_s} +\include{classmo_t_s_move_loop_expl} +\printindex +\end{document} diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/EmptySelection.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/EmptySelection.3 new file mode 100644 index 000000000..726462db3 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/EmptySelection.3 @@ -0,0 +1,23 @@ +.TH "EmptySelection" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +EmptySelection \- Special class that describes the case of no selection. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SH "Detailed Description" +.PP +Special class that describes the case of no selection. + +This class is used as an exception that can be thrown if a solution selector has completly failed. +.PP +Definition at line 21 of file moMoveSelect.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moAlgo.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moAlgo.3 new file mode 100644 index 000000000..173c15672 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moAlgo.3 @@ -0,0 +1,25 @@ +.TH "moAlgo" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moAlgo \- Description of an algorithm of the mo library. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SH "Detailed Description" +.PP + +.SS "template class moAlgo< EOT >" +Description of an algorithm of the mo library. + +\fBmoHC\fP, \fBmoTS\fP and \fBmoSA\fP are 3 examples of algorithm of the mo library. +.PP +Definition at line 21 of file moAlgo.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moAspirCrit.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moAspirCrit.3 new file mode 100644 index 000000000..d81e22783 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moAspirCrit.3 @@ -0,0 +1,44 @@ +.TH "moAspirCrit" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moAspirCrit \- Description of the conditions in which a tabu move could be accepted. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherited by \fBmoImprBestFitAspirCrit< M >\fP, and \fBmoNoAspirCrit< M >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBinit\fP ()=0" +.br +.RI "\fIProcedure which initialises all that needs a aspiration criterion. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moAspirCrit< M >" +Description of the conditions in which a tabu move could be accepted. + +It is only a description... An object that herits from this class is needed to be used in a \fBmoTS\fP. See moNoAspriCrit for example. +.PP +Definition at line 22 of file moAspirCrit.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoAspirCrit\fP< M >::init ()\fC [pure virtual]\fP" +.PP +Procedure which initialises all that needs a aspiration criterion. +.PP +It can be possible that this procedure do nothing... +.PP +Implemented in \fBmoImprBestFitAspirCrit< M >\fP, and \fBmoNoAspirCrit< M >\fP. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moBestImprSelect.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moBestImprSelect.3 new file mode 100644 index 000000000..3dc5272f0 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moBestImprSelect.3 @@ -0,0 +1,115 @@ +.TH "moBestImprSelect" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moBestImprSelect \- One of the possible \fBmoMoveSelect\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveSelect< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBinit\fP (const \fBFitness\fP &__fit)" +.br +.RI "\fIProcedure which initialise the exploration. \fP" +.ti -1c +.RI "bool \fBupdate\fP (const M &__move, const \fBFitness\fP &__fit)" +.br +.RI "\fIFunction that indicates if the current move has not improved the fitness. \fP" +.ti -1c +.RI "void \fBoperator()\fP (M &__move, \fBFitness\fP &__fit) throw (EmptySelection)" +.br +.RI "\fIProcedure which saved the best move and fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "bool \fBfirst_time\fP" +.br +.RI "\fIAllowing to know if at least one move has been generated. \fP" +.ti -1c +.RI "M \fBbest_move\fP" +.br +.RI "\fIThe best move. \fP" +.ti -1c +.RI "\fBFitness\fP \fBbest_fit\fP" +.br +.RI "\fIThe best fitness. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moBestImprSelect< M >" +One of the possible \fBmoMoveSelect\fP. + +All neighbors are considered, and the movement which enables the best improvement is selected. +.PP +Definition at line 22 of file moBestImprSelect.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoBestImprSelect\fP< M >::update (const M & __move, const \fBFitness\fP & __fit)\fC [inline, virtual]\fP" +.PP +Function that indicates if the current move has not improved the fitness. +.PP +If the given fitness enables an improvment, the move (\fBmoMove\fP) and the fitness linked to this move are saved. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a move. +.br +\fI__fit\fP a fitness linked to the move. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE if the move does not improve the fitness. +.RE +.PP + +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 47 of file moBestImprSelect.h. +.PP +References moBestImprSelect< M >::best_fit, moBestImprSelect< M >::best_move, and moBestImprSelect< M >::first_time. +.SS "template void \fBmoBestImprSelect\fP< M >::operator() (M & __move, \fBFitness\fP & __fit) throw (\fBEmptySelection\fP)\fC [inline]\fP" +.PP +Procedure which saved the best move and fitness. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP the current move (result of the procedure). +.br +\fI__fit\fP the current fitness (result of the procedure). +.RE +.PP +\fBExceptions:\fP +.RS 4 +\fI\fBEmptySelection\fP\fP if no move has improved the fitness. +.RE +.PP + +.PP +Definition at line 68 of file moBestImprSelect.h. +.PP +References moBestImprSelect< M >::best_fit, moBestImprSelect< M >::best_move, and moBestImprSelect< M >::first_time. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moCoolSched.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moCoolSched.3 new file mode 100644 index 000000000..2964b2b5b --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moCoolSched.3 @@ -0,0 +1,25 @@ +.TH "moCoolSched" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moCoolSched \- This class gives the description of a cooling schedule. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherited by \fBmoEasyCoolSched\fP. +.PP +.SH "Detailed Description" +.PP +This class gives the description of a cooling schedule. + +It is only a description... An object that herits from this class is needed to be used in a \fBmoSA\fP. See \fBmoEasyCoolSched\fP for example. +.PP +Definition at line 22 of file moCoolSched.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moEasyCoolSched.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moEasyCoolSched.3 new file mode 100644 index 000000000..98feaefe6 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moEasyCoolSched.3 @@ -0,0 +1,88 @@ +.TH "moEasyCoolSched" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moEasyCoolSched \- One of the possible \fBmoCoolSched\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoCoolSched\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoEasyCoolSched\fP (double __threshold, double __ratio)" +.br +.RI "\fISimple constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (double &__temp)" +.br +.RI "\fIFunction which proceeds to the cooling. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "double \fBthreshold\fP" +.br +.RI "\fIThe temperature threhold. \fP" +.ti -1c +.RI "double \fBratio\fP" +.br +.RI "\fIThe decreasing factor of the temperature. \fP" +.in -1c +.SH "Detailed Description" +.PP +One of the possible \fBmoCoolSched\fP. + +The simpliest, the temperature decrease according to a ratio until it greater than a threshold. +.PP +Definition at line 22 of file moEasyCoolSched.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "moEasyCoolSched::moEasyCoolSched (double __threshold, double __ratio)\fC [inline]\fP" +.PP +Simple constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI__threshold\fP the threshold. +.br +\fI__ratio\fP the ratio used to descrease the temperature. +.RE +.PP + +.PP +Definition at line 31 of file moEasyCoolSched.h. +.SH "Member Function Documentation" +.PP +.SS "bool moEasyCoolSched::operator() (double & __temp)\fC [inline]\fP" +.PP +Function which proceeds to the cooling. +.PP +Decrease the temperature and indicates if it is greater than the threshold. +.PP +\fBParameters:\fP +.RS 4 +\fI__temp\fP the current temperature. +.RE +.PP +\fBReturns:\fP +.RS 4 +if the new temperature (current temperature * ratio) is greater than the threshold. +.RE +.PP + +.PP +Definition at line 44 of file moEasyCoolSched.h. +.PP +References ratio, and threshold. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moFirstImprSelect.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moFirstImprSelect.3 new file mode 100644 index 000000000..34ff0fa09 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moFirstImprSelect.3 @@ -0,0 +1,128 @@ +.TH "moFirstImprSelect" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moFirstImprSelect \- One possible \fBmoMoveSelect\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveSelect< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBinit\fP (const \fBFitness\fP &__fit)" +.br +.RI "\fIProcedure which initialise the exploration. \fP" +.ti -1c +.RI "bool \fBupdate\fP (const M &__move, const typename M::EOType::Fitness &__fit)" +.br +.RI "\fIFunction that indicates if the current move has not improved the fitness. \fP" +.ti -1c +.RI "void \fBoperator()\fP (M &__move, \fBFitness\fP &__fit) throw (EmptySelection)" +.br +.RI "\fIProcedure which saved the best move and fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "bool \fBvalid\fP" +.br +.RI "\fIAllow to know if at least one move has improved the solution. \fP" +.ti -1c +.RI "M \fBbest_move\fP" +.br +.RI "\fIBest stored movement. \fP" +.ti -1c +.RI "\fBFitness\fP \fBinit_fit\fP" +.br +.RI "\fIInitial fitness. \fP" +.ti -1c +.RI "\fBFitness\fP \fBbest_fit\fP" +.br +.RI "\fIBest stored fitness. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moFirstImprSelect< M >" +One possible \fBmoMoveSelect\fP. + +The neighborhood is explored until a move enables an improvment of the current solution. +.PP +Definition at line 23 of file moFirstImprSelect.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoFirstImprSelect\fP< M >::init (const \fBFitness\fP & __fit)\fC [inline, virtual]\fP" +.PP +Procedure which initialise the exploration. +.PP +It save the current fitness as the initial value for the fitness. +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 35 of file moFirstImprSelect.h. +.PP +References moFirstImprSelect< M >::init_fit, and moFirstImprSelect< M >::valid. +.SS "template bool \fBmoFirstImprSelect\fP< M >::update (const M & __move, const typename M::EOType::Fitness & __fit)\fC [inline]\fP" +.PP +Function that indicates if the current move has not improved the fitness. +.PP +If the given fitness enables an improvment, the move (\fBmoMove\fP) should be applied to the current solution. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a move. +.br +\fI__fit\fP a fitness linked to the move. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE if the move does not improve the fitness. +.RE +.PP + +.PP +Definition at line 52 of file moFirstImprSelect.h. +.PP +References moFirstImprSelect< M >::best_fit, moFirstImprSelect< M >::best_move, moFirstImprSelect< M >::init_fit, and moFirstImprSelect< M >::valid. +.SS "template void \fBmoFirstImprSelect\fP< M >::operator() (M & __move, \fBFitness\fP & __fit) throw (\fBEmptySelection\fP)\fC [inline]\fP" +.PP +Procedure which saved the best move and fitness. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP the current move (result of the procedure). +.br +\fI__fit\fP the current fitness (result of the procedure). +.RE +.PP +\fBExceptions:\fP +.RS 4 +\fI\fBEmptySelection\fP\fP if no move has improved the fitness. +.RE +.PP + +.PP +Definition at line 76 of file moFirstImprSelect.h. +.PP +References moFirstImprSelect< M >::best_fit, moFirstImprSelect< M >::best_move, and moFirstImprSelect< M >::valid. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moGenSolContinue.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moGenSolContinue.3 new file mode 100644 index 000000000..1fa2a536a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moGenSolContinue.3 @@ -0,0 +1,103 @@ +.TH "moGenSolContinue" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moGenSolContinue \- One possible stop criterion for a solution-based heuristic. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoSolContinue< EOT >< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoGenSolContinue\fP (unsigned __maxNumGen)" +.br +.RI "\fISimple constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const EOT &__sol)" +.br +.RI "\fIFunction that activates the stop criterion. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which allows to initialise the generation counter. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "unsigned \fBmaxNumGen\fP" +.br +.RI "\fIIteration maximum number. \fP" +.ti -1c +.RI "unsigned \fBnumGen\fP" +.br +.RI "\fIIteration current number. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moGenSolContinue< EOT >" +One possible stop criterion for a solution-based heuristic. + +The stop criterion corresponds to a maximum number of iteration. +.PP +Definition at line 21 of file moGenSolContinue.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoGenSolContinue\fP< EOT >::\fBmoGenSolContinue\fP (unsigned __maxNumGen)\fC [inline]\fP" +.PP +Simple constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI__maxNumGen\fP the maximum number of generation. +.RE +.PP + +.PP +Definition at line 30 of file moGenSolContinue.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoGenSolContinue\fP< EOT >::operator() (const EOT & __sol)\fC [inline]\fP" +.PP +Function that activates the stop criterion. +.PP +Increments the counter and returns TRUE if the current number of iteration is lower than the given maximum number of iterations. +.PP +\fBParameters:\fP +.RS 4 +\fI__sol\fP the current solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE or FALSE according to the current generation number. +.RE +.PP + +.PP +Definition at line 44 of file moGenSolContinue.h. +.PP +References moGenSolContinue< EOT >::maxNumGen, and moGenSolContinue< EOT >::numGen. +.SS "template void \fBmoGenSolContinue\fP< EOT >::init ()\fC [inline, virtual]\fP" +.PP +Procedure which allows to initialise the generation counter. +.PP +It can also be used to reset the iteration counter. +.PP +Implements \fBmoSolContinue< EOT >\fP. +.PP +Definition at line 54 of file moGenSolContinue.h. +.PP +References moGenSolContinue< EOT >::numGen. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moHC.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moHC.3 new file mode 100644 index 000000000..d8c42bfdb --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moHC.3 @@ -0,0 +1,130 @@ +.TH "moHC" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moHC \- Hill Climbing (HC). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAlgo< M::EOType >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoHC\fP (\fBmoMoveInit\fP< M > &__move_init, \fBmoNextMove\fP< M > &__next_move, \fBmoMoveIncrEval\fP< M > &__incr_eval, \fBmoMoveSelect\fP< M > &__move_select, eoEvalFunc< \fBEOT\fP > &__full_eval)" +.br +.RI "\fIFull constructor. \fP" +.ti -1c +.RI "\fBmoHC\fP (\fBmoMoveExpl\fP< M > &__move_expl, eoEvalFunc< \fBEOT\fP > &__full_eval)" +.br +.RI "\fILight constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBEOT\fP &__sol)" +.br +.RI "\fIFunction which launches the HC. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoMoveExpl\fP< M > & \fBmove_expl\fP" +.br +.RI "\fIComplete exploration of the neighborhood. \fP" +.ti -1c +.RI "eoEvalFunc< \fBEOT\fP > & \fBfull_eval\fP" +.br +.RI "\fIA full evaluation function. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moHC< M >" +Hill Climbing (HC). + +Class which describes the algorithm for a hill climbing. +.PP +Definition at line 26 of file moHC.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoHC\fP< M >::\fBmoHC\fP (\fBmoMoveInit\fP< M > & __move_init, \fBmoNextMove\fP< M > & __next_move, \fBmoMoveIncrEval\fP< M > & __incr_eval, \fBmoMoveSelect\fP< M > & __move_select, eoEvalFunc< \fBEOT\fP > & __full_eval)\fC [inline]\fP" +.PP +Full constructor. +.PP +All the boxes are given in order the HC to use a \fBmoHCMoveLoopExpl\fP. +.PP +\fBParameters:\fP +.RS 4 +\fI__move_init\fP a move initialiser. +.br +\fI__next_move\fP a neighborhood explorer. +.br +\fI__incr_eval\fP a (generally) efficient evaluation function. +.br +\fI__move_select\fP a move selector. +.br +\fI__full_eval\fP a full evaluation function. +.RE +.PP + +.PP +Definition at line 53 of file moHC.h. +.SS "template \fBmoHC\fP< M >::\fBmoHC\fP (\fBmoMoveExpl\fP< M > & __move_expl, eoEvalFunc< \fBEOT\fP > & __full_eval)\fC [inline]\fP" +.PP +Light constructor. +.PP +This constructor allow to use another \fBmoMoveExpl\fP (generally not a \fBmoHCMoveLoopExpl\fP). +.PP +\fBParameters:\fP +.RS 4 +\fI__move_expl\fP a complete explorer. +.br +\fI__full_eval\fP a full evaluation function. +.RE +.PP + +.PP +Definition at line 67 of file moHC.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoHC\fP< M >::operator() (\fBEOT\fP & __sol)\fC [inline]\fP" +.PP +Function which launches the HC. +.PP +The HC has to improve a current solution. As the \fBmoSA\fP and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fI__sol\fP a current solution to improve. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE. +.RE +.PP + +.PP +Definition at line 82 of file moHC.h. +.PP +References moHC< M >::full_eval, and moHC< M >::move_expl. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moHCMoveLoopExpl.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moHCMoveLoopExpl.3 new file mode 100644 index 000000000..ee0c18b89 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moHCMoveLoopExpl.3 @@ -0,0 +1,111 @@ +.TH "moHCMoveLoopExpl" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moHCMoveLoopExpl \- Iterative explorer used by a \fBmoHC\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveLoopExpl< M >< M >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoHCMoveLoopExpl\fP (\fBmoMoveInit\fP< M > &__move_init, \fBmoNextMove\fP< M > &__next_move, \fBmoMoveIncrEval\fP< M > &__incr_eval, \fBmoMoveSelect\fP< M > &__move_select)" +.br +.RI "\fIConstructor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (const \fBEOT\fP &__old_sol, \fBEOT\fP &__new_sol)" +.br +.RI "\fIProcedure which launches the explorer. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoMoveInit\fP< M > & \fBmove_init\fP" +.br +.RI "\fIMove initialiser. \fP" +.ti -1c +.RI "\fBmoNextMove\fP< M > & \fBnext_move\fP" +.br +.RI "\fINeighborhood explorer. \fP" +.ti -1c +.RI "\fBmoMoveIncrEval\fP< M > & \fBincr_eval\fP" +.br +.RI "\fI(generally) Efficient evaluation. \fP" +.ti -1c +.RI "\fBmoMoveSelect\fP< M > & \fBmove_select\fP" +.br +.RI "\fIMove selector. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moHCMoveLoopExpl< M >" +Iterative explorer used by a \fBmoHC\fP. +.PP +Definition at line 23 of file moHCMoveLoopExpl.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoHCMoveLoopExpl\fP< M >::\fBmoHCMoveLoopExpl\fP (\fBmoMoveInit\fP< M > & __move_init, \fBmoNextMove\fP< M > & __next_move, \fBmoMoveIncrEval\fP< M > & __incr_eval, \fBmoMoveSelect\fP< M > & __move_select)\fC [inline]\fP" +.PP +Constructor. +.PP +All the boxes have to be specified. +.PP +\fBParameters:\fP +.RS 4 +\fI__move_init\fP the move initialiser. +.br +\fI__next_move\fP the neighborhood explorer. +.br +\fI__incr_eval\fP (generally) efficient evaluation function. +.br +\fI__move_select\fP the move selector. +.RE +.PP + +.PP +Definition at line 43 of file moHCMoveLoopExpl.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoHCMoveLoopExpl\fP< M >::operator() (const \fBEOT\fP & __old_sol, \fBEOT\fP & __new_sol)\fC [inline]\fP" +.PP +Procedure which launches the explorer. +.PP +The exploration starts from an old solution and provides a new solution. +.PP +\fBParameters:\fP +.RS 4 +\fI__old_sol\fP the current solution. +.br +\fI__new_sol\fP the new_sol (result of the procedure). +.RE +.PP + +.PP +Definition at line 59 of file moHCMoveLoopExpl.h. +.PP +References moHCMoveLoopExpl< M >::incr_eval, moHCMoveLoopExpl< M >::move_init, moHCMoveLoopExpl< M >::move_select, and moHCMoveLoopExpl< M >::next_move. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moImprBestFitAspirCrit.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moImprBestFitAspirCrit.3 new file mode 100644 index 000000000..0f3d5069e --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moImprBestFitAspirCrit.3 @@ -0,0 +1,88 @@ +.TH "moImprBestFitAspirCrit" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moImprBestFitAspirCrit \- One of the possible \fBmoAspirCrit\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAspirCrit< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoImprBestFitAspirCrit\fP ()" +.br +.RI "\fIContructor. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIInitialisation procedure. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (const M &__move, const \fBFitness\fP &__fit)" +.br +.RI "\fIFunction that indicates if the fit is better that the already saved fit. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBFitness\fP \fBbest_fit\fP" +.br +.RI "\fIBest fitness found until now. \fP" +.ti -1c +.RI "bool \fBfirst_time\fP" +.br +.RI "\fIIndicates that a fitness has been already saved or not. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moImprBestFitAspirCrit< M >" +One of the possible \fBmoAspirCrit\fP. + +This criterion is satisfied when a given fitness is the best ever considered. +.PP +Definition at line 22 of file moImprBestFitAspirCrit.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoImprBestFitAspirCrit\fP< M >::operator() (const M & __move, const \fBFitness\fP & __fit)\fC [inline]\fP" +.PP +Function that indicates if the fit is better that the already saved fit. +.PP +The first time, the function only saved the current move and fitness. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a move. +.br +\fI__fit\fP a fitnes linked to the move. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE the first time and if __fit > best_fit, else FALSE. +.RE +.PP + +.PP +Definition at line 52 of file moImprBestFitAspirCrit.h. +.PP +References moImprBestFitAspirCrit< M >::best_fit, and moImprBestFitAspirCrit< M >::first_time. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moItRandNextMove.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moItRandNextMove.3 new file mode 100644 index 000000000..26beb995d --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moItRandNextMove.3 @@ -0,0 +1,106 @@ +.TH "moItRandNextMove" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moItRandNextMove \- One of the possible \fBmoNextMove\fP. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoNextMove< M >< M >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoItRandNextMove\fP (\fBmoRandMove\fP< M > &__rand_move, unsigned __max_iter)" +.br +.RI "\fIThe constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (M &__move, const \fBEOT\fP &__sol)" +.br +.RI "\fIGeneration of a new move. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoRandMove\fP< M > & \fBrand_move\fP" +.br +.RI "\fIA move generator (generally randomly). \fP" +.ti -1c +.RI "unsigned \fBmax_iter\fP" +.br +.RI "\fIIteration maximum number. \fP" +.ti -1c +.RI "unsigned \fBnum_iter\fP" +.br +.RI "\fIIteration current number. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moItRandNextMove< M >" +One of the possible \fBmoNextMove\fP. + +This class is a move (\fBmoMove\fP) generator with a bound for the maximum number of iterations. +.PP +Definition at line 22 of file moItRandNextMove.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoItRandNextMove\fP< M >::\fBmoItRandNextMove\fP (\fBmoRandMove\fP< M > & __rand_move, unsigned __max_iter)\fC [inline]\fP" +.PP +The constructor. +.PP +Parameters only for initialising the attributes. +.PP +\fBParameters:\fP +.RS 4 +\fI__rand_move\fP the random move generator. +.br +\fI__max_iter\fP the iteration maximum number. +.RE +.PP + +.PP +Definition at line 37 of file moItRandNextMove.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoItRandNextMove\fP< M >::operator() (M & __move, const \fBEOT\fP & __sol)\fC [inline]\fP" +.PP +Generation of a new move. +.PP +If the maximum number is not already reached, the current move is forgotten and remplaced by another one. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP the current move. +.br +\fI__sol\fP the current solution. +.RE +.PP +\fBReturns:\fP +.RS 4 +FALSE if the maximum number of iteration is reached, else TRUE. +.RE +.PP + +.PP +Definition at line 52 of file moItRandNextMove.h. +.PP +References moItRandNextMove< M >::max_iter, moItRandNextMove< M >::num_iter, and moItRandNextMove< M >::rand_move. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moLSCheckPoint.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moLSCheckPoint.3 new file mode 100644 index 000000000..c54e24fec --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moLSCheckPoint.3 @@ -0,0 +1,81 @@ +.TH "moLSCheckPoint" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moLSCheckPoint \- Class which allows a checkpointing system. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBoperator()\fP (const M &__move, const typename M::EOType &__sol)" +.br +.RI "\fIFunction which launches the checkpointing. \fP" +.ti -1c +.RI "void \fBadd\fP (eoBF< const M &, const typename M::EOType &, void > &__f)" +.br +.RI "\fIProcedure which add a new function to the function vector. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "std::vector< eoBF< const M &, const typename M::EOType &, void > * > \fBfunc\fP" +.br +.RI "\fIvector of function \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moLSCheckPoint< M >" +Class which allows a checkpointing system. + +Thanks to this class, at each iteration, additionnal function can be used (and not only one). +.PP +Definition at line 21 of file moLSCheckPoint.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoLSCheckPoint\fP< M >::operator() (const M & __move, const typename M::EOType & __sol)\fC [inline]\fP" +.PP +Function which launches the checkpointing. +.PP +Each saved function is used on the current move and the current solution. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a move. +.br +\fI__sol\fP a solution. +.RE +.PP + +.PP +Definition at line 34 of file moLSCheckPoint.h. +.PP +References moLSCheckPoint< M >::func. +.SS "template void \fBmoLSCheckPoint\fP< M >::add (eoBF< const M &, const typename M::EOType &, void > & __f)\fC [inline]\fP" +.PP +Procedure which add a new function to the function vector. +.PP +The new function is added at the end of the vector. +.PP +\fBParameters:\fP +.RS 4 +\fI__f\fP a new function to add. +.RE +.PP + +.PP +Definition at line 49 of file moLSCheckPoint.h. +.PP +References moLSCheckPoint< M >::func. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moMove.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moMove.3 new file mode 100644 index 000000000..022132e50 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moMove.3 @@ -0,0 +1,33 @@ +.TH "moMove" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMove \- Definition of a move. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef EOT \fBEOType\fP" +.br +.RI "\fIAlias for the type. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moMove< EOT >" +Definition of a move. + +A move transforms a solution to another close solution. It describes how a solution can be modified to another one. +.PP +Definition at line 23 of file moMove.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveExpl.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveExpl.3 new file mode 100644 index 000000000..ecde871cc --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveExpl.3 @@ -0,0 +1,27 @@ +.TH "moMoveExpl" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveExpl \- Description of a move (\fBmoMove\fP) explorer. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherited by \fBmoMoveLoopExpl< M >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moMoveExpl< M >" +Description of a move (\fBmoMove\fP) explorer. + +Only a description...See \fBmoMoveLoopExpl\fP. +.PP +Definition at line 21 of file moMoveExpl.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveIncrEval.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveIncrEval.3 new file mode 100644 index 000000000..f998787e0 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveIncrEval.3 @@ -0,0 +1,25 @@ +.TH "moMoveIncrEval" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveIncrEval \- (generally) Efficient evaluation function based a move and a solution. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SH "Detailed Description" +.PP + +.SS "template class moMoveIncrEval< M >" +(generally) Efficient evaluation function based a move and a solution. + +From a move and a solution, it computes a new fitness that could be associated to the solution if this one is updated. +.PP +Definition at line 24 of file moMoveIncrEval.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveInit.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveInit.3 new file mode 100644 index 000000000..6221051be --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveInit.3 @@ -0,0 +1,25 @@ +.TH "moMoveInit" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveInit \- Move (\fBmoMove\fP) initializer. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SH "Detailed Description" +.PP + +.SS "template class moMoveInit< M >" +Move (\fBmoMove\fP) initializer. + +Class which allows to initiase a move. Only a description... An object that herits from this class needs to be designed to be used. +.PP +Definition at line 22 of file moMoveInit.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveLoopExpl.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveLoopExpl.3 new file mode 100644 index 000000000..d6eb5fb19 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveLoopExpl.3 @@ -0,0 +1,29 @@ +.TH "moMoveLoopExpl" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveLoopExpl \- Class which describes an iterative explorer. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveExpl< M >< M >\fP. +.PP +Inherited by \fBmoHCMoveLoopExpl< M >\fP, and \fBmoTSMoveLoopExpl< M >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moMoveLoopExpl< M >" +Class which describes an iterative explorer. + +Only a description... \fBmoHCMoveLoopExpl\fP and \fBmoTSMoveLoopExpl\fP are exemples of class that are a \fBmoMoveLoopExpl\fP. +.PP +Definition at line 21 of file moMoveLoopExpl.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveSelect.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveSelect.3 new file mode 100644 index 000000000..67f1eefd4 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moMoveSelect.3 @@ -0,0 +1,82 @@ +.TH "moMoveSelect" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moMoveSelect \- Class that describes a move selector (\fBmoMove\fP). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherited by \fBmoBestImprSelect< M >\fP, \fBmoFirstImprSelect< M >\fP, and \fBmoRandImprSelect< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBinit\fP (const \fBFitness\fP &__fit)=0" +.br +.RI "\fIProcedure which initialises all that the move selector needs including the initial fitness. \fP" +.ti -1c +.RI "virtual bool \fBupdate\fP (const M &__move, const \fBFitness\fP &__fit)=0" +.br +.RI "\fIFunction which updates the best solutions. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moMoveSelect< M >" +Class that describes a move selector (\fBmoMove\fP). + +It iteratively considers some moves (\fBmoMove\fP) and their associated fitnesses. The best move is so regularly updated. At any time, it could be accessed. +.PP +Definition at line 32 of file moMoveSelect.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoMoveSelect\fP< M >::init (const \fBFitness\fP & __fit)\fC [pure virtual]\fP" +.PP +Procedure which initialises all that the move selector needs including the initial fitness. +.PP +In order to know the fitness of the solution, for which the neighborhood will be soon explored +.PP +\fBParameters:\fP +.RS 4 +\fI__fit\fP the current fitness. +.RE +.PP + +.PP +Implemented in \fBmoBestImprSelect< M >\fP, \fBmoFirstImprSelect< M >\fP, and \fBmoRandImprSelect< M >\fP. +.SS "template virtual bool \fBmoMoveSelect\fP< M >::update (const M & __move, const \fBFitness\fP & __fit)\fC [pure virtual]\fP" +.PP +Function which updates the best solutions. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a new move. +.br +\fI__fit\fP a fitness linked to the new move. +.RE +.PP +\fBReturns:\fP +.RS 4 +a boolean that expresses the need to resume the exploration. +.RE +.PP + +.PP +Implemented in \fBmoBestImprSelect< M >\fP, and \fBmoRandImprSelect< M >\fP. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moNextMove.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moNextMove.3 new file mode 100644 index 000000000..7af40fe0b --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moNextMove.3 @@ -0,0 +1,27 @@ +.TH "moNextMove" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moNextMove \- Class which allows to generate a new move (\fBmoMove\fP). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherited by \fBmoItRandNextMove< M >\fP. +.PP +.SH "Detailed Description" +.PP + +.SS "template class moNextMove< M >" +Class which allows to generate a new move (\fBmoMove\fP). + +Useful for the explorer (for \fBmoTS\fP or \fBmoHC\fP). Does nothing... An object that herits from this class needs to be designed for being used. +.PP +Definition at line 22 of file moNextMove.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moNoAspirCrit.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moNoAspirCrit.3 new file mode 100644 index 000000000..30b0dfd62 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moNoAspirCrit.3 @@ -0,0 +1,71 @@ +.TH "moNoAspirCrit" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moNoAspirCrit \- One of the possible aspiration criterion (\fBmoAspirCrit\fP). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAspirCrit< M >< M >\fP. +.PP +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "bool \fBoperator()\fP (const M &__move, const typename M::EOType::Fitness &__sol)" +.br +.RI "\fIFunction which describes the aspiration criterion behaviour. \fP" +.ti -1c +.RI "void \fBinit\fP ()" +.br +.RI "\fIProcedure which initialises all that needs a \fBmoNoAspirCrit\fP. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moNoAspirCrit< M >" +One of the possible aspiration criterion (\fBmoAspirCrit\fP). + +The simplest : never satisfied. +.PP +Definition at line 21 of file moNoAspirCrit.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoNoAspirCrit\fP< M >::operator() (const M & __move, const typename M::EOType::Fitness & __sol)\fC [inline, private]\fP" +.PP +Function which describes the aspiration criterion behaviour. +.PP +Does nothing. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a move. +.br +\fI__sol\fP a fitness. +.RE +.PP +\fBReturns:\fP +.RS 4 +FALSE. +.RE +.PP + +.PP +Definition at line 32 of file moNoAspirCrit.h. +.SS "template void \fBmoNoAspirCrit\fP< M >::init ()\fC [inline, private, virtual]\fP" +.PP +Procedure which initialises all that needs a \fBmoNoAspirCrit\fP. +.PP +Nothing... +.PP +Implements \fBmoAspirCrit< M >\fP. +.PP +Definition at line 43 of file moNoAspirCrit.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moRandImprSelect.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moRandImprSelect.3 new file mode 100644 index 000000000..c84d3590f --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moRandImprSelect.3 @@ -0,0 +1,135 @@ +.TH "moRandImprSelect" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moRandImprSelect \- One of the possible \fBmoMove\fP selector (\fBmoMoveSelect\fP). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveSelect< M >< M >\fP. +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBinit\fP (const \fBFitness\fP &__fit)" +.br +.RI "\fIProcedure which all that needs a \fBmoRandImprSelect\fP. \fP" +.ti -1c +.RI "bool \fBupdate\fP (const M &__move, const \fBFitness\fP &__fit)" +.br +.RI "\fIFunction that updates the fitness and move vectors. \fP" +.ti -1c +.RI "void \fBoperator()\fP (M &__move, \fBFitness\fP &__fit) throw (EmptySelection)" +.br +.RI "\fIThe move selection. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBFitness\fP \fBinit_fit\fP" +.br +.RI "\fIFitness of the current solution. \fP" +.ti -1c +.RI "std::vector< \fBFitness\fP > \fBvect_better_fit\fP" +.br +.RI "\fICandidate fitnesse vector. \fP" +.ti -1c +.RI "std::vector< M > \fBvect_better_moves\fP" +.br +.RI "\fICandidate move vector. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moRandImprSelect< M >" +One of the possible \fBmoMove\fP selector (\fBmoMoveSelect\fP). + +All the neighbors are considered. One of them that enables an improvment of the objective function is choosen. +.PP +Definition at line 25 of file moRandImprSelect.h. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoRandImprSelect\fP< M >::init (const \fBFitness\fP & __fit)\fC [inline, virtual]\fP" +.PP +Procedure which all that needs a \fBmoRandImprSelect\fP. +.PP +Give a value to the initialise fitness. Clean the move and fitness vectors. +.PP +\fBParameters:\fP +.RS 4 +\fI__fit\fP the current best fitness +.RE +.PP + +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 40 of file moRandImprSelect.h. +.PP +References moRandImprSelect< M >::init_fit, moRandImprSelect< M >::vect_better_fit, and moRandImprSelect< M >::vect_better_moves. +.SS "template bool \fBmoRandImprSelect\fP< M >::update (const M & __move, const \fBFitness\fP & __fit)\fC [inline, virtual]\fP" +.PP +Function that updates the fitness and move vectors. +.PP +if a move give a better fitness than the initial fitness, it is saved and the fitness too. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a new move. +.br +\fI__fit\fP a new fitness associated to the new move. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE. +.RE +.PP + +.PP +Implements \fBmoMoveSelect< M >\fP. +.PP +Definition at line 56 of file moRandImprSelect.h. +.PP +References moRandImprSelect< M >::init_fit, moRandImprSelect< M >::vect_better_fit, and moRandImprSelect< M >::vect_better_moves. +.SS "template void \fBmoRandImprSelect\fP< M >::operator() (M & __move, \fBFitness\fP & __fit) throw (\fBEmptySelection\fP)\fC [inline]\fP" +.PP +The move selection. +.PP +One the saved move is randomly chosen. +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP the reference of the move that can be initialised by the function. +.br +\fI__fit\fP the reference of the fitness that can be initialised by the function. +.RE +.PP +\fBExceptions:\fP +.RS 4 +\fI\fBEmptySelection\fP\fP If no move which improves the current fitness are found. +.RE +.PP + +.PP +Definition at line 77 of file moRandImprSelect.h. +.PP +References moRandImprSelect< M >::vect_better_fit, and moRandImprSelect< M >::vect_better_moves. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moRandMove.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moRandMove.3 new file mode 100644 index 000000000..c465c0d78 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moRandMove.3 @@ -0,0 +1,25 @@ +.TH "moRandMove" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moRandMove \- Random move generator. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SH "Detailed Description" +.PP + +.SS "template class moRandMove< M >" +Random move generator. + +Only a description... An object that herits from this class needs to be designed in order to use a \fBmoSA\fP. +.PP +Definition at line 21 of file moRandMove.h. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moSA.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moSA.3 new file mode 100644 index 000000000..65477d525 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moSA.3 @@ -0,0 +1,128 @@ +.TH "moSA" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moSA \- Simulated Annealing (SA). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAlgo< M::EOType >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoSA\fP (\fBmoRandMove\fP< M > &__move_rand, \fBmoMoveIncrEval\fP< M > &__incr_eval, \fBmoSolContinue\fP< \fBEOT\fP > &__cont, double __init_temp, \fBmoCoolSched\fP &__cool_sched, eoEvalFunc< \fBEOT\fP > &__full_eval)" +.br +.RI "\fISA constructor. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBEOT\fP &__sol)" +.br +.RI "\fIfunction that launches the SA algorithm. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoRandMove\fP< M > & \fBmove_rand\fP" +.br +.RI "\fIA move generator (generally randomly). \fP" +.ti -1c +.RI "\fBmoMoveIncrEval\fP< M > & \fBincr_eval\fP" +.br +.RI "\fIA (generally) efficient evaluation function. \fP" +.ti -1c +.RI "\fBmoSolContinue\fP< \fBEOT\fP > & \fBcont\fP" +.br +.RI "\fIStopping criterion before temperature update. \fP" +.ti -1c +.RI "double \fBinit_temp\fP" +.br +.RI "\fIInitial temperature. \fP" +.ti -1c +.RI "\fBmoCoolSched\fP & \fBcool_sched\fP" +.br +.RI "\fIThe cooling schedule. \fP" +.ti -1c +.RI "eoEvalFunc< \fBEOT\fP > & \fBfull_eval\fP" +.br +.RI "\fIA full evaluation function. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moSA< M >" +Simulated Annealing (SA). + +Class that describes a Simulated Annealing algorithm. +.PP +Definition at line 32 of file moSA.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoSA\fP< M >::\fBmoSA\fP (\fBmoRandMove\fP< M > & __move_rand, \fBmoMoveIncrEval\fP< M > & __incr_eval, \fBmoSolContinue\fP< \fBEOT\fP > & __cont, double __init_temp, \fBmoCoolSched\fP & __cool_sched, eoEvalFunc< \fBEOT\fP > & __full_eval)\fC [inline]\fP" +.PP +SA constructor. +.PP +All the boxes used by a SA need to be given. +.PP +\fBParameters:\fP +.RS 4 +\fI__move_rand\fP a move generator (generally randomly). +.br +\fI__incr_eval\fP a (generaly) efficient evaluation function +.br +\fI__cont\fP a stopping criterion. +.br +\fI__init_temp\fP the initial temperature. +.br +\fI__cool_sched\fP a cooling schedule, describes how the temperature is modified. +.br +\fI__full_eval\fP a full evaluation function. +.RE +.PP + +.PP +Definition at line 60 of file moSA.h. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoSA\fP< M >::operator() (\fBEOT\fP & __sol)\fC [inline]\fP" +.PP +function that launches the SA algorithm. +.PP +As a \fBmoTS\fP or a \fBmoHC\fP, the SA can be used for HYBRIDATION in an evolutionary algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fI__sol\fP a solution to improve. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE. +.RE +.PP + +.PP +Definition at line 82 of file moSA.h. +.PP +References moSA< M >::cont, moSA< M >::cool_sched, moSA< M >::full_eval, moSA< M >::incr_eval, moSA< M >::init_temp, and moSA< M >::move_rand. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moSolContinue.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moSolContinue.3 new file mode 100644 index 000000000..69931d0a5 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moSolContinue.3 @@ -0,0 +1,44 @@ +.TH "moSolContinue" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moSolContinue \- Class that describes a stop criterion for a solution-based heuristic. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherited by \fBmoGenSolContinue< EOT >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBinit\fP ()=0" +.br +.RI "\fIProcedure which initialises all that the stop criterion needs. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moSolContinue< EOT >" +Class that describes a stop criterion for a solution-based heuristic. + +It allows to add an initialisation procedure to an object that is a unary function (eoUF). +.PP +Definition at line 22 of file moSolContinue.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoSolContinue\fP< EOT >::init ()\fC [pure virtual]\fP" +.PP +Procedure which initialises all that the stop criterion needs. +.PP +Generally, it allocates some data structures or initialises some counters. +.PP +Implemented in \fBmoGenSolContinue< EOT >\fP. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moTS.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moTS.3 new file mode 100644 index 000000000..3c48d5950 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moTS.3 @@ -0,0 +1,156 @@ +.TH "moTS" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moTS \- Tabu Search (TS). + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoAlgo< M::EOType >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoTS\fP (\fBmoMoveInit\fP< M > &__move_init, \fBmoNextMove\fP< M > &__next_move, \fBmoMoveIncrEval\fP< M > &__incr_eval, \fBmoTabuList\fP< M > &__tabu_list, \fBmoAspirCrit\fP< M > &__aspir_crit, \fBmoSolContinue\fP< \fBEOT\fP > &__cont, eoEvalFunc< \fBEOT\fP > &__full_eval)" +.br +.RI "\fIConstructor of a \fBmoTS\fP specifying all the boxes. \fP" +.ti -1c +.RI "\fBmoTS\fP (\fBmoMoveExpl\fP< M > &__move_expl, \fBmoSolContinue\fP< \fBEOT\fP > &__cont, eoEvalFunc< \fBEOT\fP > &__full_eval)" +.br +.RI "\fIConstructor with less parameters. \fP" +.ti -1c +.RI "bool \fBoperator()\fP (\fBEOT\fP &__sol)" +.br +.RI "\fIFunction which launchs the Tabu Search. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef EOT::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoMoveExpl\fP< M > & \fBmove_expl\fP" +.br +.RI "\fINeighborhood explorer. \fP" +.ti -1c +.RI "\fBmoSolContinue\fP< \fBEOT\fP > & \fBcont\fP" +.br +.RI "\fIStop criterion. \fP" +.ti -1c +.RI "eoEvalFunc< \fBEOT\fP > & \fBfull_eval\fP" +.br +.RI "\fIFull evaluation function. \fP" +.in -1c +.SS "Static Private Attributes" + +.in +1c +.ti -1c +.RI "static bool \fBfirst_time\fP" +.br +.RI "\fIBoolean allowing to initialise the ptread_mutex_t in the constructor. \fP" +.ti -1c +.RI "static pthread_mutex_t \fBmutex\fP" +.br +.RI "\fIThe lock. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moTS< M >" +Tabu Search (TS). + +Generic algorithm that describes a tabu search. +.PP +Definition at line 30 of file moTS.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoTS\fP< M >::\fBmoTS\fP (\fBmoMoveInit\fP< M > & __move_init, \fBmoNextMove\fP< M > & __next_move, \fBmoMoveIncrEval\fP< M > & __incr_eval, \fBmoTabuList\fP< M > & __tabu_list, \fBmoAspirCrit\fP< M > & __aspir_crit, \fBmoSolContinue\fP< \fBEOT\fP > & __cont, eoEvalFunc< \fBEOT\fP > & __full_eval)\fC [inline]\fP" +.PP +Constructor of a \fBmoTS\fP specifying all the boxes. +.PP +In this constructor, a \fBmoTSMoveLoopExpl\fP is instanciated. +.PP +\fBParameters:\fP +.RS 4 +\fI__move_init\fP move initialisation +.br +\fI__next_move\fP neighborhood explorer +.br +\fI__incr_eval\fP efficient evaluation +.br +\fI__tabu_list\fP tabu list +.br +\fI__aspir_crit\fP aspiration criterion +.br +\fI__cont\fP stop criterion +.br +\fI__full_eval\fP full evaluation function +.RE +.PP + +.PP +Definition at line 59 of file moTS.h. +.PP +References moTS< M >::first_time, and moTS< M >::mutex. +.SS "template \fBmoTS\fP< M >::\fBmoTS\fP (\fBmoMoveExpl\fP< M > & __move_expl, \fBmoSolContinue\fP< \fBEOT\fP > & __cont, eoEvalFunc< \fBEOT\fP > & __full_eval)\fC [inline]\fP" +.PP +Constructor with less parameters. +.PP +The explorer is given in the parameters. +.PP +\fBParameters:\fP +.RS 4 +\fI__move_expl\fP the explorer (generally different that a \fBmoTSMoveLoopExpl\fP) +.br +\fI__cont\fP stop criterion +.br +\fI__full_eval\fP full evaluation function +.RE +.PP + +.PP +Definition at line 81 of file moTS.h. +.PP +References moTS< M >::first_time, and moTS< M >::mutex. +.SH "Member Function Documentation" +.PP +.SS "template bool \fBmoTS\fP< M >::operator() (\fBEOT\fP & __sol)\fC [inline]\fP" +.PP +Function which launchs the Tabu Search. +.PP +Algorithm of the tabu search. As a \fBmoSA\fP or a \fBmoHC\fP, it can be used for HYBRIDATION in an evolutionary algorithm. For security a lock (pthread_mutex_t) is closed during the algorithm. +.PP +\fBParameters:\fP +.RS 4 +\fI__sol\fP a solution to improve. +.RE +.PP +\fBReturns:\fP +.RS 4 +TRUE. +.RE +.PP + +.PP +Definition at line 104 of file moTS.h. +.PP +References moTS< M >::cont, moTS< M >::full_eval, moTS< M >::move_expl, and moTS< M >::mutex. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moTSMoveLoopExpl.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moTSMoveLoopExpl.3 new file mode 100644 index 000000000..b1678df56 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moTSMoveLoopExpl.3 @@ -0,0 +1,123 @@ +.TH "moTSMoveLoopExpl" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moTSMoveLoopExpl \- Explorer for a Tabu Search algorithm. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +Inherits \fBmoMoveLoopExpl< M >< M >\fP. +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBmoTSMoveLoopExpl\fP (\fBmoMoveInit\fP< M > &__move_init, \fBmoNextMove\fP< M > &__next_move, \fBmoMoveIncrEval\fP< M > &__incr_eval, \fBmoTabuList\fP< M > &__tabu_list, \fBmoAspirCrit\fP< M > &__aspir_crit)" +.br +.RI "\fIConstructor. \fP" +.ti -1c +.RI "void \fBoperator()\fP (const \fBEOT\fP &__old_sol, \fBEOT\fP &__new_sol)" +.br +.RI "\fIProcedure which lauches the exploration. \fP" +.in -1c +.SS "Private Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.ti -1c +.RI "typedef M::EOType::Fitness \fBFitness\fP" +.br +.RI "\fIAlias for the fitness. \fP" +.in -1c +.SS "Private Attributes" + +.in +1c +.ti -1c +.RI "\fBmoMoveInit\fP< M > & \fBmove_init\fP" +.br +.RI "\fIMove initialisation. \fP" +.ti -1c +.RI "\fBmoNextMove\fP< M > & \fBnext_move\fP" +.br +.RI "\fINeighborhood explorer. \fP" +.ti -1c +.RI "\fBmoMoveIncrEval\fP< M > & \fBincr_eval\fP" +.br +.RI "\fIEfficient evaluation. \fP" +.ti -1c +.RI "\fBmoBestImprSelect\fP< M > \fBmove_select\fP" +.br +.RI "\fIMove selector. \fP" +.ti -1c +.RI "\fBmoTabuList\fP< M > & \fBtabu_list\fP" +.br +.RI "\fITabu list. \fP" +.ti -1c +.RI "\fBmoAspirCrit\fP< M > & \fBaspir_crit\fP" +.br +.RI "\fIAspiration criterion. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moTSMoveLoopExpl< M >" +Explorer for a Tabu Search algorithm. + +It is used by a \fBmoTS\fP. +.PP +Definition at line 30 of file moTSMoveLoopExpl.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "template \fBmoTSMoveLoopExpl\fP< M >::\fBmoTSMoveLoopExpl\fP (\fBmoMoveInit\fP< M > & __move_init, \fBmoNextMove\fP< M > & __next_move, \fBmoMoveIncrEval\fP< M > & __incr_eval, \fBmoTabuList\fP< M > & __tabu_list, \fBmoAspirCrit\fP< M > & __aspir_crit)\fC [inline]\fP" +.PP +Constructor. +.PP +\fBParameters:\fP +.RS 4 +\fI__move_init\fP move initialisation +.br +\fI__next_move\fP neighborhood explorer +.br +\fI__incr_eval\fP efficient evaluation +.br +\fI__tabu_list\fP tabu list +.br +\fI__aspir_crit\fP aspiration criterion +.RE +.PP + +.PP +Definition at line 49 of file moTSMoveLoopExpl.h. +.PP +References moTSMoveLoopExpl< M >::aspir_crit, and moTSMoveLoopExpl< M >::tabu_list. +.SH "Member Function Documentation" +.PP +.SS "template void \fBmoTSMoveLoopExpl\fP< M >::operator() (const \fBEOT\fP & __old_sol, \fBEOT\fP & __new_sol)\fC [inline]\fP" +.PP +Procedure which lauches the exploration. +.PP +The exploration continues while the chosen move is not in the tabu list or the aspiration criterion is true. If these 2 conditions are not true, the exploration stops if the move selector update function returns false. +.PP +\fBParameters:\fP +.RS 4 +\fI__old_sol\fP the initial solution +.br +\fI__new_sol\fP the new solution +.RE +.PP + +.PP +Definition at line 69 of file moTSMoveLoopExpl.h. +.PP +References moTSMoveLoopExpl< M >::aspir_crit, moTSMoveLoopExpl< M >::incr_eval, moTSMoveLoopExpl< M >::move_init, moTSMoveLoopExpl< M >::move_select, moTSMoveLoopExpl< M >::next_move, and moTSMoveLoopExpl< M >::tabu_list. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/man/man3/moTabuList.3 b/trunk/paradiseo-mo/tutorial/docs/man/man3/moTabuList.3 new file mode 100644 index 000000000..0c5ed0876 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/man/man3/moTabuList.3 @@ -0,0 +1,75 @@ +.TH "moTabuList" 3 "18 Dec 2006" "Version 0.1" "PARADISEO-MO" \" -*- nroff -*- +.ad l +.nh +.SH NAME +moTabuList \- Class describing a tabu list that a \fBmoTS\fP uses. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "typedef M::EOType \fBEOT\fP" +.br +.RI "\fIAlias for the type. \fP" +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBadd\fP (const M &__move, const \fBEOT\fP &__sol)=0" +.br +.RI "\fIProcedure to add a move in the tabu list. \fP" +.ti -1c +.RI "virtual void \fBupdate\fP ()=0" +.br +.RI "\fIProcedure that updates the tabu list content. \fP" +.ti -1c +.RI "virtual void \fBinit\fP ()=0" +.br +.RI "\fIProcedure which initialises the tabu list. \fP" +.in -1c +.SH "Detailed Description" +.PP + +.SS "template class moTabuList< M >" +Class describing a tabu list that a \fBmoTS\fP uses. + +It is only a description, does nothing... A new object that herits from this class has to be defined in order to be used in a \fBmoTS\fP. +.PP +Definition at line 22 of file moTabuList.h. +.SH "Member Function Documentation" +.PP +.SS "template virtual void \fBmoTabuList\fP< M >::add (const M & __move, const \fBEOT\fP & __sol)\fC [pure virtual]\fP" +.PP +Procedure to add a move in the tabu list. +.PP +The two parameters have not to be modified so they are constant parameters +.PP +\fBParameters:\fP +.RS 4 +\fI__move\fP a new tabu move +.br +\fI__sol\fP the solution associated to this move +.RE +.PP + +.SS "template virtual void \fBmoTabuList\fP< M >::update ()\fC [pure virtual]\fP" +.PP +Procedure that updates the tabu list content. +.PP +Generally, a counter associated to each saved move is decreased by one. +.SS "template virtual void \fBmoTabuList\fP< M >::init ()\fC [pure virtual]\fP" +.PP +Procedure which initialises the tabu list. +.PP +Can be useful if the data structure needs to be allocated before being used. + +.SH "Author" +.PP +Generated automatically by Doxygen for PARADISEO-MO from the source code. diff --git a/trunk/paradiseo-mo/tutorial/docs/mo.doxytag b/trunk/paradiseo-mo/tutorial/docs/mo.doxytag new file mode 100644 index 000000000..f7c6666c2 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/docs/mo.doxytag @@ -0,0 +1,884 @@ + + + + main + Welcome to PARADISEO-Moving Objects + main + intro + tutorial + install + design + + + EmptySelection + class_empty_selection.html + + + moAlgo + classmo_algo.html + EOT + + + moAspirCrit + classmo_aspir_crit.html + M + + virtual void + init + classmo_aspir_crit.html + a8ce84510a5ec7c9078381e542c6d140 + ()=0 + + + + moBestImprSelect + classmo_best_impr_select.html + M + moMoveSelect + + M::EOType::Fitness + Fitness + classmo_best_impr_select.html + c4ae17435221fb0a8e8acd285210cfcb + + + + void + init + classmo_best_impr_select.html + 2d2abf9aa17dc77cbb4f41810ab7b956 + (const Fitness &__fit) + + + bool + update + classmo_best_impr_select.html + d10e3e6f8a0277731e95ef506d064d6d + (const M &__move, const Fitness &__fit) + + + void + operator() + classmo_best_impr_select.html + 169773d4d127acd782cf379f758222da + (M &__move, Fitness &__fit) + + + bool + first_time + classmo_best_impr_select.html + 352b14d206b0772eb9f40efb7beb0f13 + + + + M + best_move + classmo_best_impr_select.html + bd86f70519f954c07ff0d8a2a3a8ff6a + + + + Fitness + best_fit + classmo_best_impr_select.html + dcac897424b5805f146bb1dbb429f2fe + + + + + moCoolSched + classmo_cool_sched.html + + + moEasyCoolSched + classmo_easy_cool_sched.html + moCoolSched + + + moEasyCoolSched + classmo_easy_cool_sched.html + c556b41343700293bb17e3b20d81e0f2 + (double __threshold, double __ratio) + + + bool + operator() + classmo_easy_cool_sched.html + ca08df878417ef1124e6933a9c2d7a0b + (double &__temp) + + + double + threshold + classmo_easy_cool_sched.html + 3dd53700390b7bb6428db80e01626c83 + + + + double + ratio + classmo_easy_cool_sched.html + 1f84deff87defafd927e8c323b188f38 + + + + + moFirstImprSelect + classmo_first_impr_select.html + M + moMoveSelect + + M::EOType::Fitness + Fitness + classmo_first_impr_select.html + 64763ce3e6d2873266624382b407fa5a + + + + virtual void + init + classmo_first_impr_select.html + 4c5ce18ede46247a439c68f6954a4055 + (const Fitness &__fit) + + + bool + update + classmo_first_impr_select.html + 7ba0882728daedc75c249647c070ccf0 + (const M &__move, const typename M::EOType::Fitness &__fit) + + + void + operator() + classmo_first_impr_select.html + 3be12cf4cbaed00df7c4fa735b2c0a95 + (M &__move, Fitness &__fit) + + + bool + valid + classmo_first_impr_select.html + a99c0586ba07449234705c17a258d58c + + + + M + best_move + classmo_first_impr_select.html + dfed419a608dd7c41f07fa1f1279cb8c + + + + Fitness + init_fit + classmo_first_impr_select.html + ce7ba63e8cc3a9164f4e546477e98ca8 + + + + Fitness + best_fit + classmo_first_impr_select.html + e1190347b76ec6fe717be32354b4a9a9 + + + + + moGenSolContinue + classmo_gen_sol_continue.html + EOT + moSolContinue + + + moGenSolContinue + classmo_gen_sol_continue.html + 6b6cab23a23bd8904ea52ef5141d8d0a + (unsigned __maxNumGen) + + + bool + operator() + classmo_gen_sol_continue.html + 457257cd73b474d6f7783d84d02c2e61 + (const EOT &__sol) + + + void + init + classmo_gen_sol_continue.html + 6c5db8182157584b56507cc9075602d4 + () + + + unsigned + maxNumGen + classmo_gen_sol_continue.html + 6d7674fc51d17423e8ee28693a08b5af + + + + unsigned + numGen + classmo_gen_sol_continue.html + a18ebfd270f96517b4edaa2cad3eb9e0 + + + + + moHC + classmo_h_c.html + M + moAlgo< M::EOType > + + + moHC + classmo_h_c.html + 6cafe093f86a80c225827884cb9dc5b7 + (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moMoveSelect< M > &__move_select, eoEvalFunc< EOT > &__full_eval) + + + + moHC + classmo_h_c.html + 45f27309792e584a27fa6dcb86ccda65 + (moMoveExpl< M > &__move_expl, eoEvalFunc< EOT > &__full_eval) + + + bool + operator() + classmo_h_c.html + ed4e273c420efa6386c5975a696a5010 + (EOT &__sol) + + + M::EOType + EOT + classmo_h_c.html + d219296ede03c679646bce2fe8ff96cb + + + + EOT::Fitness + Fitness + classmo_h_c.html + 56487c97a7cf0c423cc879d1bbd45027 + + + + moMoveExpl< M > & + move_expl + classmo_h_c.html + f6bfb4553fb699f1e08f7d9c37d06103 + + + + eoEvalFunc< EOT > & + full_eval + classmo_h_c.html + 4b0d5cc70fc3d83f59a48b2bdea65736 + + + + + moHCMoveLoopExpl + classmo_h_c_move_loop_expl.html + M + moMoveLoopExpl + + + moHCMoveLoopExpl + classmo_h_c_move_loop_expl.html + 11410d648d79746253e9dc249c4ec7b5 + (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moMoveSelect< M > &__move_select) + + + void + operator() + classmo_h_c_move_loop_expl.html + f48d5379caac7f6a165e9fe8840e6ccb + (const EOT &__old_sol, EOT &__new_sol) + + + M::EOType + EOT + classmo_h_c_move_loop_expl.html + 077befd4106c201eafd3ea22bcea2fe9 + + + + M::EOType::Fitness + Fitness + classmo_h_c_move_loop_expl.html + f24871224316d5549b9013a2d27ab465 + + + + moMoveInit< M > & + move_init + classmo_h_c_move_loop_expl.html + 6776fc51331c1b452d026b92448b4ffc + + + + moNextMove< M > & + next_move + classmo_h_c_move_loop_expl.html + f716c5271e0eba9275c585dc52768443 + + + + moMoveIncrEval< M > & + incr_eval + classmo_h_c_move_loop_expl.html + 84a8fccba05ab30414281469bc8ee779 + + + + moMoveSelect< M > & + move_select + classmo_h_c_move_loop_expl.html + 13bcd1322b2b97fd665be2f60c532fbb + + + + + moImprBestFitAspirCrit + classmo_impr_best_fit_aspir_crit.html + M + moAspirCrit + + M::EOType::Fitness + Fitness + classmo_impr_best_fit_aspir_crit.html + 0bc1a8c9af99781e662570c04750cca8 + + + + + moImprBestFitAspirCrit + classmo_impr_best_fit_aspir_crit.html + e2c697a5cf3a7696e38bb52b6694a340 + () + + + void + init + classmo_impr_best_fit_aspir_crit.html + ffa451a14ff4ea86fb8bd9fdbc348630 + () + + + bool + operator() + classmo_impr_best_fit_aspir_crit.html + 53f62fb56dcae3051a741f1fddb0204b + (const M &__move, const Fitness &__fit) + + + Fitness + best_fit + classmo_impr_best_fit_aspir_crit.html + 9e52383f0af8013b4aff0942325e1bf3 + + + + bool + first_time + classmo_impr_best_fit_aspir_crit.html + 2d5226c7dd661b33011402dbbbe78265 + + + + + moItRandNextMove + classmo_it_rand_next_move.html + M + moNextMove + + + moItRandNextMove + classmo_it_rand_next_move.html + 95ed13e1178f4e44cab7184b040b83d7 + (moRandMove< M > &__rand_move, unsigned __max_iter) + + + bool + operator() + classmo_it_rand_next_move.html + 92a2fbbc02a20853b9a309e99018a102 + (M &__move, const EOT &__sol) + + + M::EOType + EOT + classmo_it_rand_next_move.html + ee666007fc494bf4a5f0cd065e5671cf + + + + moRandMove< M > & + rand_move + classmo_it_rand_next_move.html + ef9410ec5e7dfa7f002e05967931c459 + + + + unsigned + max_iter + classmo_it_rand_next_move.html + 3c476f7cc089b171493c52965f920542 + + + + unsigned + num_iter + classmo_it_rand_next_move.html + c3551d7910cf351d63f0f3427fc18504 + + + + + moLSCheckPoint + classmo_l_s_check_point.html + M + + void + operator() + classmo_l_s_check_point.html + 2f9c1250279e3f49ec77a66c10029f1e + (const M &__move, const typename M::EOType &__sol) + + + void + add + classmo_l_s_check_point.html + 66be5fe2944bcdd752f1e58105e969a6 + (eoBF< const M &, const typename M::EOType &, void > &__f) + + + std::vector< eoBF< const M &, const typename M::EOType &, void > * > + func + classmo_l_s_check_point.html + ff2a31ee5689a804bd9a572c51a36ca4 + + + + + moMove + classmo_move.html + EOT + + EOT + EOType + classmo_move.html + 7fb853a91ba1319530529e515380bbba + + + + + moMoveExpl + classmo_move_expl.html + M + + + moMoveIncrEval + classmo_move_incr_eval.html + M + + + moMoveInit + classmo_move_init.html + M + + + moMoveLoopExpl + classmo_move_loop_expl.html + M + moMoveExpl + + + moMoveSelect + classmo_move_select.html + M + + M::EOType::Fitness + Fitness + classmo_move_select.html + 8148ccc0e6fbd209c3fe6829559895c8 + + + + virtual void + init + classmo_move_select.html + bca4c43f13d26eca7163aeb272a4a52e + (const Fitness &__fit)=0 + + + virtual bool + update + classmo_move_select.html + 7c157b6e64fd417acf6e900059204eb1 + (const M &__move, const Fitness &__fit)=0 + + + + moNextMove + classmo_next_move.html + M + + + moNoAspirCrit + classmo_no_aspir_crit.html + M + moAspirCrit + + bool + operator() + classmo_no_aspir_crit.html + 8a7180a8d5c25bfb6727d0b59551b0f8 + (const M &__move, const typename M::EOType::Fitness &__sol) + + + void + init + classmo_no_aspir_crit.html + f3a286fc4c2d36bd390ba9a3074f3037 + () + + + + moRandImprSelect + classmo_rand_impr_select.html + M + moMoveSelect + + M::EOType::Fitness + Fitness + classmo_rand_impr_select.html + 3bff2fdb963297430543c82ffb567a5c + + + + void + init + classmo_rand_impr_select.html + a19726a1509cff874801615d63a3b5d9 + (const Fitness &__fit) + + + bool + update + classmo_rand_impr_select.html + 60ae5548560caee7e28d5ed2446186c9 + (const M &__move, const Fitness &__fit) + + + void + operator() + classmo_rand_impr_select.html + 5ee57f77a450c0a9ce50bfccf3ad2a55 + (M &__move, Fitness &__fit) + + + Fitness + init_fit + classmo_rand_impr_select.html + d153c277a0a2ea95ac484210d445b40e + + + + std::vector< Fitness > + vect_better_fit + classmo_rand_impr_select.html + 05c7c3b858e8a25632f2f5c86b0c97a3 + + + + std::vector< M > + vect_better_moves + classmo_rand_impr_select.html + 2ace12bd179144fa71d56324694201f5 + + + + + moRandMove + classmo_rand_move.html + M + + + moSA + classmo_s_a.html + M + moAlgo< M::EOType > + + + moSA + classmo_s_a.html + ef9ffb0d95c599e0a06c78db5f2f4b12 + (moRandMove< M > &__move_rand, moMoveIncrEval< M > &__incr_eval, moSolContinue< EOT > &__cont, double __init_temp, moCoolSched &__cool_sched, eoEvalFunc< EOT > &__full_eval) + + + bool + operator() + classmo_s_a.html + 0e4c54b57bc13fcbd4763883b8f719e5 + (EOT &__sol) + + + M::EOType + EOT + classmo_s_a.html + d5d64a8797bdedc7b3af7893aded0bd5 + + + + EOT::Fitness + Fitness + classmo_s_a.html + 97f1a40d5ab5a0b3f878d0347b34804b + + + + moRandMove< M > & + move_rand + classmo_s_a.html + 71c49935b63a202d25888a5f86121fec + + + + moMoveIncrEval< M > & + incr_eval + classmo_s_a.html + 4c3be32e9832e465b24e6d33559356bc + + + + moSolContinue< EOT > & + cont + classmo_s_a.html + 54484c8a514866ea496e0058c2e09716 + + + + double + init_temp + classmo_s_a.html + f1af7636b52aa5f6b381f8187b667bd4 + + + + moCoolSched & + cool_sched + classmo_s_a.html + c7aaf7424aa1b9f889d2ba9c959e5a1d + + + + eoEvalFunc< EOT > & + full_eval + classmo_s_a.html + bcd6a940046f23dd741444c0b85edf2c + + + + + moSolContinue + classmo_sol_continue.html + EOT + + virtual void + init + classmo_sol_continue.html + 064dc966a210f4ffb9515be3f03ca4c7 + ()=0 + + + + moTabuList + classmo_tabu_list.html + M + + M::EOType + EOT + classmo_tabu_list.html + e219715cc3fdd5626764bc50ce6357df + + + + virtual void + add + classmo_tabu_list.html + d279d72cb486d812da1ad3d24a69c286 + (const M &__move, const EOT &__sol)=0 + + + virtual void + update + classmo_tabu_list.html + a2e5d1132f064093c8ed57046405f5ca + ()=0 + + + virtual void + init + classmo_tabu_list.html + 0a06c459d56e8e2b408a8f3c6aec4e57 + ()=0 + + + + moTS + classmo_t_s.html + M + moAlgo< M::EOType > + + + moTS + classmo_t_s.html + 2be23f4524733ee6f37b71310d76407e + (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moTabuList< M > &__tabu_list, moAspirCrit< M > &__aspir_crit, moSolContinue< EOT > &__cont, eoEvalFunc< EOT > &__full_eval) + + + + moTS + classmo_t_s.html + 508e675c4232cf2ca06dded931c90bab + (moMoveExpl< M > &__move_expl, moSolContinue< EOT > &__cont, eoEvalFunc< EOT > &__full_eval) + + + bool + operator() + classmo_t_s.html + 94d25a76fe1bc9ef0bbd0358ff55aceb + (EOT &__sol) + + + M::EOType + EOT + classmo_t_s.html + 90d19d468c12ab5bd796948ce1ce79b1 + + + + EOT::Fitness + Fitness + classmo_t_s.html + aa0eefbb17111422e495d1255f876fca + + + + moMoveExpl< M > & + move_expl + classmo_t_s.html + 06914ddc90ca96e9158c8dbe182a7865 + + + + moSolContinue< EOT > & + cont + classmo_t_s.html + 969371cd2202f3d29cbb426f57ac7d3a + + + + eoEvalFunc< EOT > & + full_eval + classmo_t_s.html + fb67eddae5d0bfca4ed881995523231e + + + + static bool + first_time + classmo_t_s.html + 564bc1969548ccbd9bb7e76f92898de0 + + + + static pthread_mutex_t + mutex + classmo_t_s.html + 688f9ba42eb33cae6431f4f4eb65b9e9 + + + + + moTSMoveLoopExpl + classmo_t_s_move_loop_expl.html + M + moMoveLoopExpl + + + moTSMoveLoopExpl + classmo_t_s_move_loop_expl.html + 43306dae9df150a8d9dc0dec9cd6a381 + (moMoveInit< M > &__move_init, moNextMove< M > &__next_move, moMoveIncrEval< M > &__incr_eval, moTabuList< M > &__tabu_list, moAspirCrit< M > &__aspir_crit) + + + void + operator() + classmo_t_s_move_loop_expl.html + f601bbd0ccc41d6fbe3df9fcd87ad9e7 + (const EOT &__old_sol, EOT &__new_sol) + + + M::EOType + EOT + classmo_t_s_move_loop_expl.html + 47f42225e2ed096374b818bdb848a527 + + + + M::EOType::Fitness + Fitness + classmo_t_s_move_loop_expl.html + a1ba36c937b195ca2f7d1a24adaa7018 + + + + moMoveInit< M > & + move_init + classmo_t_s_move_loop_expl.html + 6b23f99648902fb72ed17a4a6fa4e400 + + + + moNextMove< M > & + next_move + classmo_t_s_move_loop_expl.html + aeeff6666d26ff5c67acd9c153a5ae49 + + + + moMoveIncrEval< M > & + incr_eval + classmo_t_s_move_loop_expl.html + ee4443fc8e45d840697619678628c26c + + + + moBestImprSelect< M > + move_select + classmo_t_s_move_loop_expl.html + 35a3f3035fb8df875c281d9838904bf1 + + + + moTabuList< M > & + tabu_list + classmo_t_s_move_loop_expl.html + 0e5988a940ba218e87c53b7e56d79790 + + + + moAspirCrit< M > & + aspir_crit + classmo_t_s_move_loop_expl.html + 6786cf5422d17cbf872b07ae74ca6b0f + + + + diff --git a/trunk/paradiseo-mo/tutorial/src/Makefile.am b/trunk/paradiseo-mo/tutorial/src/Makefile.am new file mode 100644 index 000000000..ae1e51b3c --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/Makefile.am @@ -0,0 +1 @@ +# Nothing to compile ! diff --git a/trunk/paradiseo-mo/tutorial/src/index.h b/trunk/paradiseo-mo/tutorial/src/index.h new file mode 100644 index 000000000..10ac58f88 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/index.h @@ -0,0 +1,26 @@ +/** @mainpage Welcome to PARADISEO-Moving Objects + +@section intro Introduction + +MO is an extension of the ANSI-C++ compliant evolutionary computation library EO. +
+It contains classes for almost any kind of one solution based heuristics. + +@section tutorial Tutorial + + +@section install Installation + +The installation procedure of the package is detailed in the +README file in the top-directory of the source-tree. + +@section design Overall Design + +*/ + + +// coding: iso-8859-1 +// mode: C++ +// c-file-style: "Stroustrup" +// fill-column: 80 +// End: diff --git a/trunk/paradiseo-mo/tutorial/src/mo b/trunk/paradiseo-mo/tutorial/src/mo new file mode 100644 index 000000000..81c9fea9f --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/mo @@ -0,0 +1,6 @@ +#ifndef __mo +#define __mo + +#include "mo.h" + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/mo.h b/trunk/paradiseo-mo/tutorial/src/mo.h new file mode 100644 index 000000000..25e95cae5 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/mo.h @@ -0,0 +1,43 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "mo.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __mo_h +#define __mo_h + +#include "moAspirCrit.h" +#include "moAlgo.h" +#include "moBestImprSelect.h" +#include "moCoolSched.h" +#include "moEasyCoolSched.h" +#include "moFirstImprSelect.h" +#include "moGenSolContinue.h" +#include "moHC.h" +#include "moHCMoveLoopExpl.h" +#include "moImprBestFitAspirCrit.h" +#include "moItRandNextMove.h" +#include "moLSCheckPoint.h" +#include "moMoveExpl.h" +#include "moMove.h" +#include "moMoveIncrEval.h" +#include "moMoveInit.h" +#include "moMoveLoopExpl.h" +#include "moMoveSelect.h" +#include "moNextMove.h" +#include "moNoAspirCrit.h" +#include "moRandImprSelect.h" +#include "moRandMove.h" +#include "moSA.h" +#include "moSolContinue.h" +#include "moTabuList.h" +#include "moTS.h" +#include "moTSMoveLoopExpl.h" + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moAlgo.h b/trunk/paradiseo-mo/tutorial/src/moAlgo.h new file mode 100644 index 000000000..4e55c23e7 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moAlgo.h @@ -0,0 +1,26 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moAlgo.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moAlgo_h +#define __moAlgo_h + +#include + +//! Description of an algorithm of the mo library +/*! + moHC, moTS and moSA are 3 examples of algorithm of the mo library. + */ +template < class EOT > class moAlgo:public eoMonOp < EOT > +{ + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moAspirCrit.h b/trunk/paradiseo-mo/tutorial/src/moAspirCrit.h new file mode 100644 index 000000000..99c92727b --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moAspirCrit.h @@ -0,0 +1,37 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moAspirCrit.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moAspirCrit_h +#define __moAspirCrit_h + +#include + +//! Description of the conditions in which a tabu move could be accepted +/*! + It is only a description... An object that herits from this class is needed to be used in a moTS. + See moNoAspriCrit for example. + */ +template < class M > class moAspirCrit:public eoBF < const M &, const typename + M::EOType::Fitness &, + bool > +{ + +public: + //! Procedure which initialises all that needs a aspiration criterion. + /*! + It can be possible that this procedure do nothing... + */ + virtual void + init () = 0; + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moBestImprSelect.h b/trunk/paradiseo-mo/tutorial/src/moBestImprSelect.h new file mode 100644 index 000000000..30c846236 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moBestImprSelect.h @@ -0,0 +1,93 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moBestImprSelect.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moBestImprSelect_h +#define __moBestImprSelect_h + +#include "moMoveSelect.h" + +//! One of the possible moMoveSelect. +/*! + All neighbors are considered, and the movement + which enables the best improvement is selected. +*/ +template < class M > class moBestImprSelect:public moMoveSelect < M > +{ + +public: + + //! Alias for the fitness. + typedef typename M::EOType::Fitness Fitness; + + //! Procedure which initialise the exploration + void init (const Fitness & __fit) + { + + first_time = true; + } + + + //!Function that indicates if the current move has not improved the fitness. + /*! + If the given fitness enables an improvment, + the move (moMove) and the fitness linked to this move are saved. + + \param __move a move. + \param __fit a fitness linked to the move. + \return TRUE if the move does not improve the fitness. + */ + bool update (const M & __move, const Fitness & __fit) + { + + if (first_time || __fit > best_fit) + { + + best_fit = __fit; + best_move = __move; + + first_time = false; + } + + return true; + } + + //! Procedure which saved the best move and fitness. + /*! + \param __move the current move (result of the procedure). + \param __fit the current fitness (result of the procedure). + \throws EmptySelection if no move has improved the fitness. + */ + void operator () (M & __move, Fitness & __fit) throw (EmptySelection) + { + + if (!first_time) + { + __move = best_move; + __fit = best_fit; + } + else + throw EmptySelection (); + } + +private: + + //! Allowing to know if at least one move has been generated. + bool first_time; + + //! The best move. + M best_move; + + //! The best fitness. + Fitness best_fit; + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moCoolSched.h b/trunk/paradiseo-mo/tutorial/src/moCoolSched.h new file mode 100644 index 000000000..9ce2d40b3 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moCoolSched.h @@ -0,0 +1,27 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moCoolSched.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moCoolSched_h +#define __moCoolSched_h + +#include + +//! This class gives the description of a cooling schedule. +/*! + It is only a description... An object that herits from this class is needed to be used in a moSA. + See moEasyCoolSched for example. +*/ +class moCoolSched:public eoUF < double &, bool > +{ + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moEasyCoolSched.h b/trunk/paradiseo-mo/tutorial/src/moEasyCoolSched.h new file mode 100644 index 000000000..90baecc22 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moEasyCoolSched.h @@ -0,0 +1,60 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moEasyCoolSched.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moEasyCoolSched_h +#define __moEasyCoolSched_h + +#include "moCoolSched.h" + +//! One of the possible moCoolSched +/*! + The simpliest, the temperature decrease according to a ratio until + it greater than a threshold. + */ +class moEasyCoolSched:public moCoolSched +{ + +public: + //! Simple constructor + /*! + \param __threshold the threshold. + \param __ratio the ratio used to descrease the temperature. + */ + moEasyCoolSched (double __threshold, + double __ratio):threshold (__threshold), ratio (__ratio) + { + + } + + //! Function which proceeds to the cooling. + /*! + Decrease the temperature and indicates if it is greater than the threshold. + + \param __temp the current temperature. + \return if the new temperature (current temperature * ratio) is greater than the threshold. + */ + bool operator () (double &__temp) + { + + return (__temp *= ratio) > threshold; + } + +private: + + //! The temperature threhold. + double threshold; + + //! The decreasing factor of the temperature. + double ratio; + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moFirstImprSelect.h b/trunk/paradiseo-mo/tutorial/src/moFirstImprSelect.h new file mode 100644 index 000000000..6656d5a95 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moFirstImprSelect.h @@ -0,0 +1,104 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moFirstImprSelect.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moFirstImprSelect_h +#define __moFirstImprSelect_h + +#include "moMoveSelect.h" + +//! One possible moMoveSelect. +/*! + The neighborhood is explored until + a move enables an improvment of the + current solution. +*/ +template < class M > class moFirstImprSelect:public moMoveSelect < M > +{ + +public: + + //! Alias for the fitness. + typedef typename M::EOType::Fitness Fitness; + + //! Procedure which initialise the exploration. + /*! + It save the current fitness as the initial value for the fitness. + */ + virtual void init (const Fitness & __fit) + { + + valid = false; + init_fit = __fit; + } + + + //!Function that indicates if the current move has not improved the fitness. + /*! + If the given fitness enables an improvment, + the move (moMove) should be applied to the current solution. + + \param __move a move. + \param __fit a fitness linked to the move. + \return TRUE if the move does not improve the fitness. + */ + bool update (const M & __move, const typename M::EOType::Fitness & __fit) + { + + if (__fit > init_fit) + { + + best_fit = __fit; + best_move = __move; + valid = true; + + return false; + } + else + { + return true; + } + } + + //! Procedure which saved the best move and fitness. + /*! + \param __move the current move (result of the procedure). + \param __fit the current fitness (result of the procedure). + \throws EmptySelection if no move has improved the fitness. + */ + void operator () (M & __move, Fitness & __fit) throw (EmptySelection) + { + + if (valid) + { + __move = best_move; + __fit = best_fit; + } + else + throw EmptySelection (); + } + +private: + + //! Allow to know if at least one move has improved the solution. + bool valid; + + //! Best stored movement. + M best_move; + + //! Initial fitness. + Fitness init_fit; + + //! Best stored fitness. + Fitness best_fit; + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moGenSolContinue.h b/trunk/paradiseo-mo/tutorial/src/moGenSolContinue.h new file mode 100644 index 000000000..79921a627 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moGenSolContinue.h @@ -0,0 +1,69 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "eoGenSolContinue.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moGenSolContinue_h +#define __moGenSolContinue_h + +#include "moSolContinue.h" + +//! One possible stop criterion for a solution-based heuristic. +/*! + The stop criterion corresponds to a maximum number of iteration. + */ +template < class EOT > class moGenSolContinue:public moSolContinue < EOT > +{ + +public: + + //! Simple constructor. + /*! + \param __maxNumGen the maximum number of generation. + */ + moGenSolContinue (unsigned __maxNumGen):maxNumGen (__maxNumGen), numGen (0) + { + + } + + //! Function that activates the stop criterion. + /*! + Increments the counter and returns TRUE if the + current number of iteration is lower than the given + maximum number of iterations. + + \param __sol the current solution. + \return TRUE or FALSE according to the current generation number. + */ + bool operator () (const EOT & __sol) + { + + return (++numGen < maxNumGen); + } + + //! Procedure which allows to initialise the generation counter. + /*! + It can also be used to reset the iteration counter. + */ + void init () + { + + numGen = 0; + } + +private: + + //! Iteration maximum number. + unsigned maxNumGen; + + //! Iteration current number. + unsigned numGen; +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moHC.h b/trunk/paradiseo-mo/tutorial/src/moHC.h new file mode 100644 index 000000000..30d82ed00 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moHC.h @@ -0,0 +1,133 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moHC.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moHC_h +#define __moHC_h + +#include +#include + +#include "moAlgo.h" +#include "moMoveExpl.h" +#include "moHCMoveLoopExpl.h" + +//! Hill Climbing (HC) +/*! + Class which describes the algorithm for a hill climbing. + */ +template < class M > class moHC:public moAlgo < typename M::EOType > +{ + + //! Alias for the type. + typedef + typename + M::EOType + EOT; + + //! Alias for the fitness. + typedef + typename + EOT::Fitness + Fitness; + +public: + + //! Full constructor. + /*! + All the boxes are given in order the HC to use a moHCMoveLoopExpl. + + \param __move_init a move initialiser. + \param __next_move a neighborhood explorer. + \param __incr_eval a (generally) efficient evaluation function. + \param __move_select a move selector. + \param __full_eval a full evaluation function. + */ +moHC (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moMoveSelect < M > &__move_select, eoEvalFunc < EOT > &__full_eval):move_expl (*new moHCMoveLoopExpl < M > + (__move_init, __next_move, __incr_eval, __move_select)), + full_eval (__full_eval) + { + + } + + //! Light constructor. + /*! + This constructor allow to use another moMoveExpl (generally not a moHCMoveLoopExpl). + + \param __move_expl a complete explorer. + \param __full_eval a full evaluation function. + */ +moHC (moMoveExpl < M > &__move_expl, eoEvalFunc < EOT > &__full_eval):move_expl (__move_expl), + full_eval + (__full_eval) + { + + } + + //! Function which launches the HC + /*! + The HC has to improve a current solution. + As the moSA and the mo TS, it can be used for HYBRIDATION in an evolutionnary algorithm. + + \param __sol a current solution to improve. + \return TRUE. + */ + bool operator ()(EOT & __sol) + { + + if (__sol.invalid ()) + { + full_eval (__sol); + } + + EOT new_sol; + + do + { + + new_sol = __sol; + + try + { + + move_expl (__sol, new_sol); + + } + catch (EmptySelection & __ex) + { + + break; + } + + if (new_sol.fitness () > __sol.fitness ()) + { + __sol = new_sol; + } + else + { + break; + } + + } + while (true); + + return true; + } + +private: + + //! Complete exploration of the neighborhood. + moMoveExpl < M > &move_expl; + + //! A full evaluation function. + eoEvalFunc < EOT > &full_eval; +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moHCMoveLoopExpl.h b/trunk/paradiseo-mo/tutorial/src/moHCMoveLoopExpl.h new file mode 100644 index 000000000..f9ff78bea --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moHCMoveLoopExpl.h @@ -0,0 +1,108 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moHCMoveLoopExpl.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moHCMoveLoopExpl_h +#define __moHCMoveLoopExpl_h + +#include "moMoveLoopExpl.h" + +#include "moMoveInit.h" +#include "moNextMove.h" +#include "moMoveIncrEval.h" +#include "moMoveSelect.h" + +//! Iterative explorer used by a moHC. +template < class M > class moHCMoveLoopExpl:public moMoveLoopExpl < M > +{ + + //! Alias for the type. + typedef typename M::EOType EOT; + + //! Alias for the fitness. + typedef typename M::EOType::Fitness Fitness; + +public: + + //! Constructor. + /*! + All the boxes have to be specified. + + \param __move_init the move initialiser. + \param __next_move the neighborhood explorer. + \param __incr_eval (generally) efficient evaluation function. + \param __move_select the move selector. + */ +moHCMoveLoopExpl (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moMoveSelect < M > &__move_select): + + move_init (__move_init), + next_move (__next_move), + incr_eval (__incr_eval), move_select (__move_select) + { + + } + + //! Procedure which launches the explorer. + /*! + The exploration starts from an old solution and provides a new solution. + + \param __old_sol the current solution. + \param __new_sol the new_sol (result of the procedure). + */ + void operator () (const EOT & __old_sol, EOT & __new_sol) + { + + M move; + + // + move_init (move, __old_sol); /* Restarting the exploration of + of the neighborhood ! */ + + move_select.init (__old_sol.fitness ()); + + while (move_select.update (move, incr_eval (move, __old_sol)) + && next_move (move, __old_sol)); + + try + { + + M best_move; + + Fitness best_move_fit; + + move_select (best_move, best_move_fit); + __new_sol.fitness (best_move_fit); + best_move (__new_sol); + + } + catch (EmptySelection & __ex) + { + + // ? + } + } + +private: + + //! Move initialiser. + moMoveInit < M > &move_init; + + //! Neighborhood explorer. + moNextMove < M > &next_move; + + //! (generally) Efficient evaluation. + moMoveIncrEval < M > &incr_eval; + + //! Move selector. + moMoveSelect < M > &move_select; + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moImprBestFitAspirCrit.h b/trunk/paradiseo-mo/tutorial/src/moImprBestFitAspirCrit.h new file mode 100644 index 000000000..d0cf06486 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moImprBestFitAspirCrit.h @@ -0,0 +1,84 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moImprAspirCrit.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moImprBestFitAspirCrit_h +#define __moImprBestFitAspirCrit_h + +#include "moAspirCrit.h" + +//! One of the possible moAspirCrit +/*! + This criterion is satisfied when a given fitness + is the best ever considered. +*/ +template < class M > class moImprBestFitAspirCrit:public moAspirCrit < M > +{ + +public: + + //! Alias for the fitness + typedef typename M::EOType::Fitness Fitness; + + //! Contructor + moImprBestFitAspirCrit () + { + + first_time = true; + } + + //! Initialisation procedure + void init () + { + + first_time = true; + } + + //! Function that indicates if the fit is better that the already saved fit + /*! + The first time, the function only saved the current move and fitness. + + \param __move a move. + \param __fit a fitnes linked to the move. + \return TRUE the first time and if __fit > best_fit, else FALSE. + */ + bool operator () (const M & __move, const Fitness & __fit) + { + + if (first_time) + { + + best_fit = __fit; + first_time = false; + + return true; + } + else if (__fit < best_fit) + return false; + + else + { + + best_fit = __fit; + + return true; + } + } + +private: + + //! Best fitness found until now + Fitness best_fit; + + //! Indicates that a fitness has been already saved or not + bool first_time; +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moItRandNextMove.h b/trunk/paradiseo-mo/tutorial/src/moItRandNextMove.h new file mode 100644 index 000000000..5f24bed39 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moItRandNextMove.h @@ -0,0 +1,84 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moNextMove.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moItRandNextMove_h +#define __moItRandNextMove_h + +#include "moNextMove.h" +#include "moRandMove.h" + +//! One of the possible moNextMove. +/*! + This class is a move (moMove) generator with a bound for the maximum number of iterations. +*/ +template < class M > class moItRandNextMove:public moNextMove < M > +{ + + //! Alias for the type. + typedef typename M::EOType EOT; + +public: + + //! The constructor. + /*! + Parameters only for initialising the attributes. + + \param __rand_move the random move generator. + \param __max_iter the iteration maximum number. + */ + moItRandNextMove (moRandMove < M > &__rand_move, + unsigned __max_iter):rand_move (__rand_move), + max_iter (__max_iter), num_iter (0) + { + + } + + //! Generation of a new move + /*! + If the maximum number is not already reached, the current move is forgotten and remplaced by another one. + + \param __move the current move. + \param __sol the current solution. + \return FALSE if the maximum number of iteration is reached, else TRUE. + */ + bool operator () (M & __move, const EOT & __sol) + { + + if (num_iter++ > max_iter) + { + + num_iter = 0; + return false; + } + else + { + + /* The given solution is discarded here */ + rand_move (__move); + num_iter++; + return true; + } + } + +private: + + //! A move generator (generally randomly). + moRandMove < M > &rand_move; + + //! Iteration maximum number. + unsigned max_iter; + + //! Iteration current number. + unsigned num_iter; + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moLSCheckPoint.h b/trunk/paradiseo-mo/tutorial/src/moLSCheckPoint.h new file mode 100644 index 000000000..78a8e3e52 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moLSCheckPoint.h @@ -0,0 +1,66 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moLSCheckPoint.h" + +// (c) OPAC Team, LIFL, 2003 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moSolUpdater_h +#define __moSolUpdater_h + +#include + +//! Class which allows a checkpointing system. +/*! + Thanks to this class, at each iteration, additionnal function can be used (and not only one). +*/ +template < class M > class moLSCheckPoint:public eoBF < const M &, const typename + M::EOType &, void > +{ + +public: + //! Function which launches the checkpointing + /*! + Each saved function is used on the current move and the current solution. + + \param __move a move. + \param __sol a solution. + */ + void + operator () (const M & __move, const typename M::EOType & __sol) + { + + for (unsigned i = 0; i < func.size (); i++) + { + func[i]->operator ()(__move, __sol); + } + } + + //! Procedure which add a new function to the function vector + /*! + The new function is added at the end of the vector. + \param __f a new function to add. + */ + void + add (eoBF < const M &, const typename M::EOType &, void >&__f) + { + + func.push_back (&__f); + } + +private: + + //! vector of function + std::vector < eoBF < const + M &, const + typename + M::EOType &, void >*> + func; + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moMove.h b/trunk/paradiseo-mo/tutorial/src/moMove.h new file mode 100644 index 000000000..5c7f41818 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moMove.h @@ -0,0 +1,32 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moMove.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moMove_h +#define __moMove_h + +#include + +//! Definition of a move. + +/*! + A move transforms a solution to another close solution. + It describes how a solution can be modified to another one. +*/ +template < class EOT > class moMove:public eoUF < EOT &, void > +{ + +public: + //! Alias for the type + typedef EOT EOType; + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moMoveExpl.h b/trunk/paradiseo-mo/tutorial/src/moMoveExpl.h new file mode 100644 index 000000000..0905e3186 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moMoveExpl.h @@ -0,0 +1,29 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "eoMoveExpl.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moMoveExpl_h +#define __moMoveExpl_h + +#include + +//! Description of a move (moMove) explorer +/*! + Only a description...See moMoveLoopExpl. + */ +template < class M > class moMoveExpl:public eoBF < const typename + M::EOType &, + typename +M::EOType &, void > +{ + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moMoveIncrEval.h b/trunk/paradiseo-mo/tutorial/src/moMoveIncrEval.h new file mode 100644 index 000000000..7dd633141 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moMoveIncrEval.h @@ -0,0 +1,32 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "eoMoveIncrEval.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moMoveIncrEval_h +#define __moMoveIncrEval_h + +#include + +//! (generally) Efficient evaluation function based a move and a solution. + +/*! + From a move and a solution, it computes + a new fitness that could be associated to + the solution if this one is updated. +*/ +template < class M > class moMoveIncrEval:public eoBF < const M &, const typename + M::EOType &, + typename + M::EOType::Fitness > +{ + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moMoveInit.h b/trunk/paradiseo-mo/tutorial/src/moMoveInit.h new file mode 100644 index 000000000..dfba59661 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moMoveInit.h @@ -0,0 +1,28 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moMoveInit.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moMoveInit_h +#define __moMoveInit_h + +#include + +//! Move (moMove) initializer +/*! + Class which allows to initiase a move. + Only a description... An object that herits from this class needs to be designed to be used. + */ +template < class M > class moMoveInit:public eoBF < M &, const typename +M::EOType &, void > +{ + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moMoveLoopExpl.h b/trunk/paradiseo-mo/tutorial/src/moMoveLoopExpl.h new file mode 100644 index 000000000..5d35e8aac --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moMoveLoopExpl.h @@ -0,0 +1,26 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moMoveLoopExpl.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moMoveLoopExpl_h +#define __moMoveLoopExpl_h + +#include "moMoveExpl.h" + +//! Class which describes an iterative explorer +/*! + Only a description... moHCMoveLoopExpl and moTSMoveLoopExpl are exemples of class that are a moMoveLoopExpl. + */ +template < class M > class moMoveLoopExpl:public moMoveExpl < M > +{ + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moMoveSelect.h b/trunk/paradiseo-mo/tutorial/src/moMoveSelect.h new file mode 100644 index 000000000..7595ba61d --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moMoveSelect.h @@ -0,0 +1,65 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moMoveSelect.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moMoveSelect_h +#define __moMoveSelect_h + +#include + +//! Special class that describes the case of no selection. +/*! + This class is used as an exception that can be thrown if a solution selector has completly failed. + */ +class EmptySelection +{ + +}; + +//! Class that describes a move selector (moMove). +/*! + It iteratively considers some moves (moMove) and their + associated fitnesses. The best move is so regularly updated. + At any time, it could be accessed. +*/ +template < class M > class moMoveSelect:public eoBF < M &, typename M::EOType::Fitness &, + void > +{ +public: + //! Alias for the fitness + typedef + typename + M::EOType::Fitness + Fitness; + + //! Procedure which initialises all that the move selector needs including the initial fitness. + /*! + In order to know the fitness of the solution, + for which the neighborhood will + be soon explored + + \param __fit the current fitness. + */ + virtual void + init (const Fitness & __fit) = 0; + + //! Function which updates the best solutions. + /*! + \param __move a new move. + \param __fit a fitness linked to the new move. + \return a boolean that expresses the need to resume the exploration. + */ + virtual + bool + update (const M & __move, const Fitness & __fit) = 0; + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moNextMove.h b/trunk/paradiseo-mo/tutorial/src/moNextMove.h new file mode 100644 index 000000000..93748fe74 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moNextMove.h @@ -0,0 +1,29 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moNextMove.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moNextMove_h +#define __moNextMove_h + +#include + +//! Class which allows to generate a new move (moMove). +/*! + Useful for the explorer (for moTS or moHC). + Does nothing... An object that herits from this class needs to be designed for being used. + */ +template < class M > class moNextMove:public eoBF < M &, const typename + M::EOType &, + bool > +{ + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moNoAspirCrit.h b/trunk/paradiseo-mo/tutorial/src/moNoAspirCrit.h new file mode 100644 index 000000000..a5e499ccb --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moNoAspirCrit.h @@ -0,0 +1,48 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "eoNoAspirCrit.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* TEXT LICENCE + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moNoAspirCrit_h +#define __moNoAspirCrit_h + +#include "moAspirCrit.h" + +//! One of the possible aspiration criterion (moAspirCrit) +/*! + The simplest : never satisfied. + */ +template < class M > class moNoAspirCrit:public moAspirCrit < M > +{ + + //! Function which describes the aspiration criterion behaviour + /*! + Does nothing. + + \param __move a move. + \param __sol a fitness. + \return FALSE. + */ + bool operator () (const M & __move, + const typename M::EOType::Fitness & __sol) + { + + return false; + } + + //! Procedure which initialises all that needs a moNoAspirCrit + /*! + Nothing... + */ + void init () + { + } +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moRandImprSelect.h b/trunk/paradiseo-mo/tutorial/src/moRandImprSelect.h new file mode 100644 index 000000000..4d60e794a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moRandImprSelect.h @@ -0,0 +1,104 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moRandImprSelect.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moRandImprSelect_h +#define __moRandImprSelect_h + +#include + +#include +#include "moMoveSelect.h" + +//! One of the possible moMove selector (moMoveSelect) +/*! + All the neighbors are considered. + One of them that enables an improvment of the objective function is choosen. +*/ +template < class M > class moRandImprSelect:public moMoveSelect < M > +{ + +public: + + //! Alias for the fitness + typedef typename M::EOType::Fitness Fitness; + + //!Procedure which all that needs a moRandImprSelect + /*! + Give a value to the initialise fitness. + Clean the move and fitness vectors. + + \param __fit the current best fitness + */ + void init (const Fitness & __fit) + { + init_fit = __fit; + vect_better_fit.clear (); + vect_better_moves.clear (); + } + + //! Function that updates the fitness and move vectors + /*! + if a move give a better fitness than the initial fitness, + it is saved and the fitness too. + + \param __move a new move. + \param __fit a new fitness associated to the new move. + \return TRUE. + */ + bool update (const M & __move, const Fitness & __fit) + { + + if (__fit > init_fit) + { + + vect_better_fit.push_back (__fit); + vect_better_moves.push_back (__move); + } + + return true; + } + + //! The move selection + /*! + One the saved move is randomly chosen. + + \param __move the reference of the move that can be initialised by the function. + \param __fit the reference of the fitness that can be initialised by the function. + \throws EmptySelection If no move which improves the current fitness are found. + */ + void operator () (M & __move, Fitness & __fit) throw (EmptySelection) + { + + if (!vect_better_fit.empty ()) + { + + unsigned n = rng.random (vect_better_fit.size ()); + + __move = vect_better_moves[n]; + __fit = vect_better_fit[n]; + } + else + throw EmptySelection (); + } + +private: + + //! Fitness of the current solution. + Fitness init_fit; + + //! Candidate fitnesse vector. + std::vector < Fitness > vect_better_fit; + + //! Candidate move vector. + std::vector < M > vect_better_moves; +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moRandMove.h b/trunk/paradiseo-mo/tutorial/src/moRandMove.h new file mode 100644 index 000000000..b17de3868 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moRandMove.h @@ -0,0 +1,26 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moRandMove.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moRandMove_h +#define __moRandMove_h + +#include + +//! Random move generator +/*! + Only a description... An object that herits from this class needs to be designed in order to use a moSA. + */ +template < class M > class moRandMove:public eoUF < M &, void > +{ + +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moSA.h b/trunk/paradiseo-mo/tutorial/src/moSA.h new file mode 100644 index 000000000..c3e3de263 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moSA.h @@ -0,0 +1,153 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moSA.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moSA_h +#define __moSA_h + +#include + +#include +#include + +#include "moAlgo.h" +#include "moRandMove.h" +#include "moMoveIncrEval.h" +#include "moCoolSched.h" +#include "moSolContinue.h" + +#include + +//! Simulated Annealing (SA) +/*! + Class that describes a Simulated Annealing algorithm. +*/ +template < class M > class moSA:public moAlgo < typename M::EOType > +{ + + //! Alias for the type + typedef + typename + M::EOType + EOT; + + //! Alias for the fitness + typedef + typename + EOT::Fitness + Fitness; + +public: + + //! SA constructor + /*! + All the boxes used by a SA need to be given. + + \param __move_rand a move generator (generally randomly). + \param __incr_eval a (generaly) efficient evaluation function + \param __cont a stopping criterion. + \param __init_temp the initial temperature. + \param __cool_sched a cooling schedule, describes how the temperature is modified. + \param __full_eval a full evaluation function. + */ + moSA (moRandMove < M > &__move_rand, + moMoveIncrEval < M > &__incr_eval, + moSolContinue < EOT > &__cont, + double __init_temp, + moCoolSched & __cool_sched, eoEvalFunc < EOT > &__full_eval): + move_rand (__move_rand), + incr_eval (__incr_eval), + cont (__cont), + init_temp (__init_temp), + cool_sched (__cool_sched), + full_eval (__full_eval) + { + + } + + //! function that launches the SA algorithm. + /*! + As a moTS or a moHC, the SA can be used for HYBRIDATION in an evolutionary algorithm. + + \param __sol a solution to improve. + \return TRUE. + */ + bool operator ()(EOT & __sol) + { + + if (__sol.invalid ()) + { + full_eval (__sol); + } + + double + temp = init_temp; + + M move; + + EOT best_sol = __sol; + + do + { + + cont.init (); + do + { + + move_rand (move); + + Fitness delta_fit = incr_eval (move, __sol) - __sol.fitness (); + + if (delta_fit > 0 || rng.uniform () < exp (delta_fit / temp)) + { + + __sol.fitness (incr_eval (move, __sol)); + move (__sol); + + /* Updating the best solution found + until now ? */ + if (__sol.fitness () > best_sol.fitness ()) + best_sol = __sol; + } + + } + while (cont (__sol)); + + } + while (cool_sched (temp)); + + __sol = best_sol; + + return true; + } + +private: + + //! A move generator (generally randomly) + moRandMove < M > &move_rand; + + //! A (generally) efficient evaluation function. + moMoveIncrEval < M > &incr_eval; + + //! Stopping criterion before temperature update + moSolContinue < EOT > &cont; + + //! Initial temperature + double + init_temp; + + //! The cooling schedule + moCoolSched & cool_sched; + + //! A full evaluation function. + eoEvalFunc < EOT > &full_eval; // Full evaluator. +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moSolContinue.h b/trunk/paradiseo-mo/tutorial/src/moSolContinue.h new file mode 100644 index 000000000..44efdd969 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moSolContinue.h @@ -0,0 +1,33 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moSolContinue.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moSolContinue_h +#define __moSolContinue_h + +#include + +//! Class that describes a stop criterion for a solution-based heuristic + +/*! + It allows to add an initialisation procedure to an object that is a unary function (eoUF). +*/ +template < class EOT > class moSolContinue:public eoUF < const EOT &, bool > +{ + +public: + //! Procedure which initialises all that the stop criterion needs + /*! + Generally, it allocates some data structures or initialises some counters. + */ + virtual void init () = 0; +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moTS.h b/trunk/paradiseo-mo/tutorial/src/moTS.h new file mode 100644 index 000000000..aae975b31 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moTS.h @@ -0,0 +1,184 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moTS.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moTS_h +#define __moTS_h + +#include +#include + +#include "moAlgo.h" +#include "moSolContinue.h" + +#include "moMoveExpl.h" +#include "moTSMoveLoopExpl.h" + +#include + +//! Tabu Search (TS) +/*! + Generic algorithm that describes a tabu search. + */ +template < class M > class moTS:public moAlgo < typename M::EOType > +{ + + //!Alias for the type + typedef + typename + M::EOType + EOT; + + //!Alias for the fitness + typedef + typename + EOT::Fitness + Fitness; + +public: + + //!Constructor of a moTS specifying all the boxes + /*! + In this constructor, a moTSMoveLoopExpl is instanciated. + + \param __move_init move initialisation + \param __next_move neighborhood explorer + \param __incr_eval efficient evaluation + \param __tabu_list tabu list + \param __aspir_crit aspiration criterion + \param __cont stop criterion + \param __full_eval full evaluation function + */ +moTS (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moTabuList < M > &__tabu_list, moAspirCrit < M > &__aspir_crit, moSolContinue < EOT > &__cont, eoEvalFunc < EOT > &__full_eval):move_expl (*new moTSMoveLoopExpl < M > + (__move_init, __next_move, __incr_eval, __tabu_list, + __aspir_crit)), cont (__cont), full_eval (__full_eval) + { + + if (first_time) + { + + pthread_mutex_init (&mutex, 0); + + first_time = false; + } + } + + //! Constructor with less parameters + /*! + The explorer is given in the parameters. + + \param __move_expl the explorer (generally different that a moTSMoveLoopExpl) + \param __cont stop criterion + \param __full_eval full evaluation function + */ +moTS (moMoveExpl < M > &__move_expl, moSolContinue < EOT > &__cont, eoEvalFunc < EOT > &__full_eval):move_expl (__move_expl), + cont (__cont), + full_eval (__full_eval) + { + + if (first_time) + { + + pthread_mutex_init (&mutex, 0); + + first_time = false; + } + } + + //! Function which launchs the Tabu Search + /*! + Algorithm of the tabu search. + As a moSA or a moHC, it can be used for HYBRIDATION in an evolutionary algorithm. + For security a lock (pthread_mutex_t) is closed during the algorithm. + + \param __sol a solution to improve. + \return TRUE. + */ + bool operator ()(EOT & __sol) + { + + pthread_mutex_lock (&mutex); + + if (__sol.invalid ()) + { + full_eval (__sol); + } + + M move; + + EOT best_sol = __sol, new_sol; + + cont.init (); + + do + { + + new_sol = __sol; + + try + { + + move_expl (__sol, new_sol); + + } + catch (EmptySelection & __ex) + { + + break; + } + + /* Updating the best solution + found until now ? */ + if (new_sol.fitness () > __sol.fitness ()) + { + best_sol = new_sol; + } + + __sol = new_sol; + + } + while (cont (__sol)); + + __sol = best_sol; + + pthread_mutex_unlock (&mutex); + + return true; + } + +private: + + //! Boolean allowing to initialise the ptread_mutex_t in the constructor + static + bool + first_time; + + //! The lock + static + pthread_mutex_t + mutex; + + //! Neighborhood explorer + moMoveExpl < M > &move_expl; + + //! Stop criterion + moSolContinue < EOT > &cont; + + //! Full evaluation function + eoEvalFunc < EOT > &full_eval; +}; + +//! declaration of the mutex variable +template < class EOT > pthread_mutex_t moTS < EOT >::mutex; + +//! by default, first_time must have the value true +template < class EOT > bool moTS < EOT >::first_time = true; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moTSMoveLoopExpl.h b/trunk/paradiseo-mo/tutorial/src/moTSMoveLoopExpl.h new file mode 100644 index 000000000..53ed30a74 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moTSMoveLoopExpl.h @@ -0,0 +1,132 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moTSMoveLoopExpl.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moTSMoveLoopExpl_h +#define __moTSMoveLoopExpl_h + +#include "moMoveLoopExpl.h" + +#include "moMoveInit.h" +#include "moNextMove.h" +#include "moMoveIncrEval.h" +#include "moMoveSelect.h" + +#include "moTabuList.h" +#include "moAspirCrit.h" +#include "moBestImprSelect.h" + +//! Explorer for a Tabu Search algorithm +/*! + It is used by a moTS. + */ +template < class M > class moTSMoveLoopExpl:public moMoveLoopExpl < M > +{ + + //!Alias for the type + typedef typename M::EOType EOT; + + //!Alias for the fitness + typedef typename M::EOType::Fitness Fitness; + +public: + + //!Constructor + /*! + \param __move_init move initialisation + \param __next_move neighborhood explorer + \param __incr_eval efficient evaluation + \param __tabu_list tabu list + \param __aspir_crit aspiration criterion + */ +moTSMoveLoopExpl (moMoveInit < M > &__move_init, moNextMove < M > &__next_move, moMoveIncrEval < M > &__incr_eval, moTabuList < M > &__tabu_list, moAspirCrit < M > &__aspir_crit): + move_init (__move_init), + next_move (__next_move), + incr_eval (__incr_eval), + tabu_list (__tabu_list), aspir_crit (__aspir_crit) + { + + tabu_list.init (); + aspir_crit.init (); + } + + //!Procedure which lauches the exploration + /*! + The exploration continues while the chosen move is not in the tabu list + or the aspiration criterion is true. If these 2 conditions are not true, the + exploration stops if the move selector update function returns false. + + \param __old_sol the initial solution + \param __new_sol the new solution + */ + void operator () (const EOT & __old_sol, EOT & __new_sol) + { + + M move; + + + move_init (move, __old_sol); /* Restarting the exploration of + of the neighborhood ! */ + + move_select.init (__old_sol.fitness ()); + + do + { + + Fitness fit = incr_eval (move, __old_sol); + + if (!tabu_list (move, __old_sol) || aspir_crit (move, fit)) + { + if (!move_select.update (move, fit)) + break; + } + + } + while (next_move (move, __old_sol)); + + M best_move; + + Fitness best_move_fit; + + move_select (best_move, best_move_fit); + + __new_sol.fitness (best_move_fit); + best_move (__new_sol); + + /* Removing moves that are + no more tabu */ + tabu_list.update (); + + // Updating the tabu list + tabu_list.add (best_move, __new_sol); + } + +private: + + //!Move initialisation + moMoveInit < M > &move_init; + + //!Neighborhood explorer + moNextMove < M > &next_move; + + //!Efficient evaluation + moMoveIncrEval < M > &incr_eval; + + //!Move selector + moBestImprSelect < M > move_select; + + //!Tabu list + moTabuList < M > &tabu_list; + + //!Aspiration criterion + moAspirCrit < M > &aspir_crit; +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/src/moTabuList.h b/trunk/paradiseo-mo/tutorial/src/moTabuList.h new file mode 100644 index 000000000..d9d7445ae --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/src/moTabuList.h @@ -0,0 +1,60 @@ +// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*- + +// "moTabuList.h" + +// (c) OPAC Team, LIFL, 2003-2006 + +/* LICENCE TEXT + + Contact: paradiseo-help@lists.gforge.inria.fr +*/ + +#ifndef __moTabuList_h +#define __moTabuList_h + +#include + +//! Class describing a tabu list that a moTS uses +/*! + It is only a description, does nothing... A new object that herits from this class has to be defined in order + to be used in a moTS. + */ +template < class M > class moTabuList:public eoBF < const M &, const typename + M::EOType &, + bool > +{ + +public: + //! Alias for the type + typedef + typename + M::EOType + EOT; + + + //! Procedure to add a move in the tabu list + /*! + The two parameters have not to be modified so they are constant parameters + + \param __move a new tabu move + \param __sol the solution associated to this move + */ + virtual void + add (const M & __move, const EOT & __sol) = 0; + + //! Procedure that updates the tabu list content + /*! + Generally, a counter associated to each saved move is decreased by one. + */ + virtual void + update () = 0; + + //! Procedure which initialises the tabu list + /*! + Can be useful if the data structure needs to be allocated before being used. + */ + virtual void + init () = 0; +}; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/Makefile.am b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/Makefile.am new file mode 100644 index 000000000..84bcda58d --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/Makefile.am @@ -0,0 +1,20 @@ +INCLUDES = -I${EO_DIR}/src/ -I ../../src/ -I ../examples/tsp/src/ + +AM_CXXFLAGS =\ + -Wall\ + -Werror\ + -Wno-deprecated\ + -ansi\ + -pedantic + +bin_PROGRAMS = hill_climbing + +############################## +hill_climbing_SOURCES = hill_climbing.cpp + +hill_climbing_LDFLAGS = + +hill_climbing_LDADD = \ + ${EO_DIR}/src/libeo.a\ + ${EO_DIR}/src/utils/libeoutils.a\ + ../examples/tsp/src/libtsp.a diff --git a/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/benchs/ali535.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/benchs/ali535.tsp new file mode 100644 index 000000000..7fec4bf14 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/benchs/eil101.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/benchs/eil101.tsp new file mode 100644 index 000000000..f12903349 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/benchs/pr2392.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/benchs/pr2392.tsp new file mode 100644 index 000000000..010a2c7ec --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/benchs/readme b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/benchs/readme new file mode 100644 index 000000000..7203e5789 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/benchs/rl5915.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/benchs/rl5915.tsp new file mode 100644 index 000000000..9eda5f662 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/benchs/usa13509.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/benchs/usa13509.tsp new file mode 100644 index 000000000..7fc018324 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/hill_climbing b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/hill_climbing new file mode 100755 index 000000000..9f8c5081f Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/hill_climbing differ diff --git a/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/hill_climbing.cpp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/hill_climbing.cpp new file mode 100644 index 000000000..3cc29c540 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson1/hill_climbing.cpp @@ -0,0 +1,71 @@ +// -*- 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 +#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_climb (two_opt_init, two_opt_next, two_opt_incr_eval, two_opt_select, full_eval) ; + hill_climb (route) ; + + std :: cout << "[To] " << route << std :: endl ; + + return 0 ; +} + diff --git a/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/Makefile.am b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/Makefile.am new file mode 100644 index 000000000..1a169aa1d --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/Makefile.am @@ -0,0 +1,20 @@ +INCLUDES = -I${EO_DIR}/src/ -I ../../src/ -I ../examples/tsp/src/ + +AM_CXXFLAGS =\ + -Wall\ + -Werror\ + -Wno-deprecated\ + -ansi\ + -pedantic + +bin_PROGRAMS = tabu_search + +############################## +tabu_search_SOURCES = tabu_search.cpp + +tabu_search_LDFLAGS = + +tabu_search_LDADD = \ + ${EO_DIR}/src/libeo.a\ + ${EO_DIR}/src/utils/libeoutils.a\ + ../examples/tsp/src/libtsp.a diff --git a/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/benchs/ali535.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/benchs/ali535.tsp new file mode 100644 index 000000000..7fec4bf14 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/benchs/eil101.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/benchs/eil101.tsp new file mode 100644 index 000000000..f12903349 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/benchs/pr2392.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/benchs/pr2392.tsp new file mode 100644 index 000000000..010a2c7ec --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/benchs/readme b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/benchs/readme new file mode 100644 index 000000000..7203e5789 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/benchs/rl5915.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/benchs/rl5915.tsp new file mode 100644 index 000000000..9eda5f662 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/benchs/usa13509.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/benchs/usa13509.tsp new file mode 100644 index 000000000..7fc018324 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/tabu_search b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/tabu_search new file mode 100755 index 000000000..1102aac51 Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/tabu_search differ diff --git a/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/tabu_search.cpp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/tabu_search.cpp new file mode 100644 index 000000000..9c1cf2fc9 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson2/tabu_search.cpp @@ -0,0 +1,73 @@ +// -*- 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 +#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 + + moNoAspirCrit aspir_crit ; // Aspiration Criterion + + moGenSolContinue cont (50000) ; // 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/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/Makefile.am b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/Makefile.am new file mode 100644 index 000000000..967652ed5 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/Makefile.am @@ -0,0 +1,20 @@ +INCLUDES = -I${EO_DIR}/src/ -I ../../src/ -I ../examples/tsp/src/ + +AM_CXXFLAGS =\ + -Wall\ + -Werror\ + -Wno-deprecated\ + -ansi\ + -pedantic + +bin_PROGRAMS = simulated_annealing + +############################## +simulated_annealing_SOURCES = simulated_annealing.cpp + +simulated_annealing_LDFLAGS = + +simulated_annealing_LDADD = \ + ${EO_DIR}/src/libeo.a\ + ${EO_DIR}/src/utils/libeoutils.a\ + ../examples/tsp/src/libtsp.a diff --git a/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/benchs/ali535.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/benchs/ali535.tsp new file mode 100644 index 000000000..7fec4bf14 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/benchs/eil101.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/benchs/eil101.tsp new file mode 100644 index 000000000..f12903349 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/benchs/pr2392.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/benchs/pr2392.tsp new file mode 100644 index 000000000..010a2c7ec --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/benchs/readme b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/benchs/readme new file mode 100644 index 000000000..7203e5789 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/benchs/rl5915.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/benchs/rl5915.tsp new file mode 100644 index 000000000..9eda5f662 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/benchs/usa13509.tsp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/benchs/usa13509.tsp new file mode 100644 index 000000000..7fc018324 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/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/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/simulated_annealing b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/simulated_annealing new file mode 100755 index 000000000..8915fc20e Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/simulated_annealing differ diff --git a/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/simulated_annealing.cpp b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/simulated_annealing.cpp new file mode 100644 index 000000000..364a01fe8 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Lesson3/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 +#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 ; + + moEasyCoolSched cool_sched (0.1, 0.98) ; // Cooling Schedule + + moGenSolContinue cont (1000) ; /* Temperature Descreasing + will occur each 100 + iterations */ + + moSA simul_anneal (two_opt_rand, two_opt_incr_eval, cont, 1000, cool_sched, full_eval) ; + simul_anneal (route) ; + + std :: cout << "[To] " << route << std :: endl ; + + return 0 ; +} + diff --git a/trunk/paradiseo-mo/tutorial/tutorial/Makefile.am b/trunk/paradiseo-mo/tutorial/tutorial/Makefile.am new file mode 100644 index 000000000..d4b5c340c --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = examples Lesson1 Lesson2 Lesson3 diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/Makefile.am b/trunk/paradiseo-mo/tutorial/tutorial/examples/Makefile.am new file mode 100644 index 000000000..9f1b78722 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = tsp diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/Makefile.am b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/Makefile.am new file mode 100644 index 000000000..af437a64d --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/benchs/ali535.tsp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/benchs/ali535.tsp new file mode 100644 index 000000000..7fec4bf14 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/benchs/eil101.tsp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/benchs/eil101.tsp new file mode 100644 index 000000000..f12903349 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/benchs/pr2392.tsp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/benchs/pr2392.tsp new file mode 100644 index 000000000..010a2c7ec --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/benchs/readme b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/benchs/readme new file mode 100644 index 000000000..7203e5789 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/benchs/rl5915.tsp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/benchs/rl5915.tsp new file mode 100644 index 000000000..9eda5f662 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/benchs/usa13509.tsp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/benchs/usa13509.tsp new file mode 100644 index 000000000..7fc018324 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/Makefile.am b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/Makefile.am new file mode 100644 index 000000000..319cac57b --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/Makefile.am @@ -0,0 +1,31 @@ +INCLUDES = -I ${EO_DIR}/src/ -I ../../../../src/ + + +AM_CXXFLAGS =\ + -Wall\ + -Werror\ + -Wno-deprecated\ + -ansi\ + -pedantic + +lib_LIBRARIES = libtsp.a + +libtsp_a_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 + + + diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/city_swap.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/city_swap.cpp new file mode 100644 index 000000000..567f53fb6 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/city_swap.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/city_swap.h new file mode 100644 index 000000000..784324e1f --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/edge_xover.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/edge_xover.cpp new file mode 100644 index 000000000..5107ba098 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/edge_xover.cpp @@ -0,0 +1,126 @@ +// -*- 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 len = __par1.size () ; + + /* Initialization */ + _map.clear () ; + _map.resize (len) ; + + for (unsigned 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 __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 __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 len = __par1.size () ; + + /* Go ! */ + __child.clear () ; + + unsigned cur_vertex = rng.random (len) ; + + add_vertex (cur_vertex, __child) ; + + for (unsigned i = 1 ; i < len ; i ++) { + + unsigned len_min_entry = MAXINT ; + + std :: set & neigh = _map [cur_vertex] ; + + for (std :: set :: iterator it = neigh.begin () ; + it != neigh.end () ; + it ++) { + unsigned 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 l = _map [* it].size () ; + if (len_min_entry == l) + cand.push_back (* it) ; + } + + if (! cand.size ()) { + + /* Oh no ! Implicit mutation */ + for (unsigned 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/edge_xover.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/edge_xover.h new file mode 100644 index 000000000..0fd20544b --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/edge_xover.h @@ -0,0 +1,46 @@ +// -*- 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 __vertex, std :: vector > & __map) ; + /* Updating the map of entries */ + + void build_map (const Route & __par1, const Route & __par2) ; + + void add_vertex (unsigned __vertex, Route & __child) ; + + std :: vector > _map ; /* The handled map */ + + std :: vector visited ; /* Vertices that are already visited */ + +} ; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/graph.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/graph.cpp new file mode 100644 index 000000000..e73a8d670 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/graph.cpp @@ -0,0 +1,80 @@ +// -*- 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 numCities = vectCoord.size () ; + dist.resize (numCities) ; + for (unsigned i = 0 ; i < dist.size () ; i ++) + dist [i].resize (numCities) ; + + // Computations. + for (unsigned i = 0 ; i < dist.size () ; i ++) + for (unsigned j = i + 1 ; j < dist.size () ; j ++) { + double distX = vectCoord [i].first - vectCoord [j].first ; + double distY = 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 num_vert ; + + f >> num_vert ; + vectCoord.resize (num_vert) ; + + for (unsigned 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 __from, unsigned __to) { + + return dist [__from] [__to] ; + } +} + + diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/graph.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/graph.h new file mode 100644 index 000000000..b6a4adc21 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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 __from, unsigned __to) ; + + unsigned size () ; // How many cities ? +} + +#endif diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/libtsp.a b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/libtsp.a new file mode 100644 index 000000000..f4e446f7e Binary files /dev/null and b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/libtsp.a differ diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/mix.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/mix.h new file mode 100644 index 000000000..979f0b079 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/mix.h @@ -0,0 +1,23 @@ +// -*- 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 i = 0 ; i < __vect.size () ; i ++) + std :: swap (__vect [i], __vect [rng.random (__vect.size ())]) ; +} + +#endif diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/order_xover.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/order_xover.cpp new file mode 100644 index 000000000..c845e0b5c --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/order_xover.cpp @@ -0,0 +1,90 @@ +// -*- 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 cut = rng.random (__par1.size ()) ; + + /* To store vertices that have + already been crossed */ + vector v; + v.resize(__par1.size()); + + for (unsigned i = 0 ; i < __par1.size () ; i ++) + { + v [i] = false ; + } + + /* Copy of the left partial + route of the first parent */ + for (unsigned 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 from = 0 ; + for (unsigned 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 l = cut ; + + for (unsigned i = 0 ; i < __par2.size () ; i ++) + { + unsigned 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/order_xover.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/order_xover.h new file mode 100644 index 000000000..e41761b6d --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/order_xover.h @@ -0,0 +1,31 @@ +// -*- 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_route_eval.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_route_eval.cpp new file mode 100644 index 000000000..8f0ba935a --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_route_eval.cpp @@ -0,0 +1,33 @@ +// -*- 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 i = (unsigned) (__route.size () * from) ; + i < (unsigned) (__route.size () * to) ; + i ++) + len -= Graph :: distance (__route [i], __route [(i + 1) % Graph :: size ()]) ; + + __route.fitness (len) ; +} diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_route_eval.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_route_eval.h new file mode 100644 index 000000000..8ad5886d4 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_route_eval.h @@ -0,0 +1,36 @@ +// -*- 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_two_opt_init.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_two_opt_init.cpp new file mode 100644 index 000000000..05b12925c --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_two_opt_init.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_two_opt_init.h new file mode 100644 index 000000000..92d7ec0aa --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_two_opt_init.h @@ -0,0 +1,28 @@ +// -*- 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 eoMoveInit { + +public : + + void operator () (TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_two_opt_next.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_two_opt_next.cpp new file mode 100644 index 000000000..e7b1d7665 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_two_opt_next.cpp @@ -0,0 +1,30 @@ +// -*- 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_two_opt_next.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_two_opt_next.h new file mode 100644 index 000000000..67bd181d3 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/part_two_opt_next.h @@ -0,0 +1,27 @@ +// -*- 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 eoNextMove { + +public : + + bool operator () (TwoOpt & __move, const Route & __route) ; + +} ; + +#endif diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/partial_mapped_xover.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/partial_mapped_xover.cpp new file mode 100644 index 000000000..9414a5c9c --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/partial_mapped_xover.cpp @@ -0,0 +1,88 @@ +// -*- 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) { + + vector v; // Number of times a cities are visited ... + + v.resize(__route.size ()); + + for (unsigned i = 0 ; i < __route.size () ; i ++) + { + v [i] = 0 ; + } + + for (unsigned i = 0 ; i < __route.size () ; i ++) + { + v [__route [i]] ++ ; + } + + std :: vector vert ; + + for (unsigned i = 0 ; i < __route.size () ; i ++) + { + if (! v [i]) + { + vert.push_back (i) ; + } + } + + mix (vert) ; + + for (unsigned 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 cut1 = rng.random (__route1.size ()), cut2 = rng.random (__route2.size ()) ; + + if (cut2 < cut1) + std :: swap (cut1, cut2) ; + + // Between the cuts + for (unsigned 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/partial_mapped_xover.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/partial_mapped_xover.h new file mode 100644 index 000000000..a128fb9de --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route.h new file mode 100644 index 000000000..cde1f96ba --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_eval.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_eval.cpp new file mode 100644 index 000000000..09be9102c --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_eval.cpp @@ -0,0 +1,23 @@ +// -*- 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 i = 0 ; i < Graph :: size () ; i ++) + len -= Graph :: distance (__route [i], __route [(i + 1) % Graph :: size ()]) ; + + __route.fitness (len) ; +} diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_eval.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_eval.h new file mode 100644 index 000000000..60b38661e --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_eval.h @@ -0,0 +1,29 @@ +// -*- 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_init.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_init.cpp new file mode 100644 index 000000000..c37c1652e --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_init.cpp @@ -0,0 +1,34 @@ +// -*- 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 i = 0 ; i < Graph :: size () ; i ++) + __route.push_back (i) ; + + // Swap. cities + + for (unsigned i = 0 ; i < Graph :: size () ; i ++) { + //unsigned j = rng.random (Graph :: size ()) ; + + unsigned j = (unsigned) (Graph :: size () * (rand () / (RAND_MAX + 1.0))) ; + unsigned city = __route [i] ; + __route [i] = __route [j] ; + __route [j] = city ; + } +} diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_init.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_init.h new file mode 100644 index 000000000..ab6b7ecb1 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_init.h @@ -0,0 +1,27 @@ +// -*- 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_valid.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_valid.cpp new file mode 100644 index 000000000..057ebb722 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_valid.cpp @@ -0,0 +1,42 @@ +// -*- 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) { + + vector t; + t.resize(__route.size()); + + for (unsigned i = 0 ; i < __route.size () ; i ++) + { + t [i] = 0 ; + } + + for (unsigned i = 0 ; i < __route.size () ; i ++) + { + t [__route [i]] ++ ; + } + + for (unsigned i = 0 ; i < __route.size () ; i ++) + { + if (t [i] != 1) + { + t.clear(); + return false ; + } + } + + t.clear(); + return true ; // OK. +} diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_valid.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/route_valid.h new file mode 100644 index 000000000..90763d7fc --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt.cpp new file mode 100644 index 000000000..ad1bc0400 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt.cpp @@ -0,0 +1,42 @@ +// -*- 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 i = second ; i > first ; i --) + seq_cities.push_back (__route [i]) ; + + unsigned j = 0 ; + for (unsigned 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt.h new file mode 100644 index 000000000..395b13442 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt.h @@ -0,0 +1,35 @@ +// -*- 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_incr_eval.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_incr_eval.cpp new file mode 100644 index 000000000..41adba2ab --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_incr_eval.cpp @@ -0,0 +1,24 @@ +// -*- 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 v1 = __route [__move.first], v1_next = __route [__move.first + 1] ; + + // To + unsigned 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_incr_eval.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_incr_eval.h new file mode 100644 index 000000000..64581c9f6 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_incr_eval.h @@ -0,0 +1,26 @@ +// -*- 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_init.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_init.cpp new file mode 100644 index 000000000..63a53df84 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_init.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_init.h new file mode 100644 index 000000000..b0dc1d963 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_init.h @@ -0,0 +1,28 @@ +// -*- 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_next.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_next.cpp new file mode 100644 index 000000000..0fd1cdf1f --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_next.cpp @@ -0,0 +1,30 @@ +// -*- 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_next.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_next.h new file mode 100644 index 000000000..bacdcdfb0 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_next.h @@ -0,0 +1,27 @@ +// -*- 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_rand.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_rand.cpp new file mode 100644 index 000000000..5bf3e37b1 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_rand.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_rand.h new file mode 100644 index 000000000..ce26889a5 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_rand.h @@ -0,0 +1,27 @@ +// -*- 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/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_tabu_list.cpp b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_tabu_list.cpp new file mode 100644 index 000000000..c8bca955f --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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 i = 0 ; i < tabu_span.size () ; i ++) + { + tabu_span [i].resize (Graph :: size ()) ; + } + + // Clear + for (unsigned i = 0 ; i < tabu_span.size () ; i ++) + { + for (unsigned 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 i = 0 ; i < tabu_span.size () ; i ++) + { + for (unsigned j = 0 ; j < tabu_span [i].size () ; j ++) + { + if (tabu_span [i] [j] > 0) + { + tabu_span [i] [j] -- ; + } + } + } +} diff --git a/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_tabu_list.h b/trunk/paradiseo-mo/tutorial/tutorial/examples/tsp/src/two_opt_tabu_list.h new file mode 100644 index 000000000..d42de82d3 --- /dev/null +++ b/trunk/paradiseo-mo/tutorial/tutorial/examples/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